Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi enum-Typ und array (https://www.delphipraxis.net/192679-enum-typ-und-array.html)

haentschman 10. Mai 2017 17:57

AW: enum-Typ und array
 
Hallöle...:P
Zitat:

SQL-Abfragen
...das will ich sehen. :shock: ...mit 300 Statements incl. kompletter Scripte. Imho ist ein Enum/Array denkbar ungeeignet zum "Speichern" von SQL.

Wenn du die SQL extern lagern willst schau das das Tutorial an. :thumb: http://www.delphipraxis.net/49505-sq...einbinden.html
Vom mir aus könntest du auch den Ressorcenname des SQL im Enum/Array hinterlegen. Die eigentlichen Statements liegen extern in der Ressource.

p80286 10. Mai 2017 18:18

AW: enum-Typ und array
 
Wie kommst Du auf 300?
:shock:

Gruß
K-H

haentschman 10. Mai 2017 18:36

AW: enum-Typ und array
 
:P Scherz...
Aber bei einem Statement wird es nicht bleiben. :wink: Je komplizierter die Statements werden, umso unübersichtlicher wird der QT. :? Ab wann entscheidest du dich dann für eine andere Lösung weil die Aktuelle nicht mehr reicht? Warum sich nicht gleich für eine Lösung entscheiden die sowohl mit einem Statement als auch mit 300 (:wink:) klar kommt? Der einmalige zusätzliche Aufwand ist in max. 2 Stunden erledigt und hat ca. 20 Zeilen. :wink:
Delphi-Quellcode:
function TDatabase.GetSQLByName(SQLName: string): string;
var
  SQLStream: TResourceStream;
  SQLStrings: TStringList;
begin
  Result := '';
  SQLStrings := TStringList.Create;
  try
    SQLStream := TResourceStream.Create(HInstance, SQLName, PWideChar(Ord(DatabaseTyp)));
    try
      try
        SQLStrings.LoadFromStream(SQLStream);
        Result := SQLStrings.Text;
      except
        Result := '';
      end;
    finally
      SQLStream.Free;
    end;
  finally
    SQLStrings.Free;
  end;
end;
Name rein...Statement raus. :thumb:

himitsu 11. Mai 2017 19:02

AW: enum-Typ und array
 
Ach ja, dann gibt es auch noch Delphi-Referenz durchsuchenIntToIdent und Delphi-Referenz durchsuchenIdentToInt,
was z.B. für die Umwandulng von TColor <-> Integer verwendet wird, also in Delphi-Referenz durchsuchenColorToString und Delphi-Referenz durchsuchenStringToColor,
oder als Delphi-Referenz durchsuchenIdentToCursor.

Falls sich schon mal jemand gefragt hat, wie die Farbnamen und Cursornamen in den OI und die DFM kommen.


Delphi-Quellcode:
if IdentToInt(VonString, AlsInteger, DasMapping) then
  AlsEnum := TDeinEnum(AlsInteger) // geht auch direkt, wenn der Enum 4 Byte groß ist, also genug Werte enthält (ab 16.777.215) oder siehe {$MINENUMSIZE 4}
else
  AlsEnum := ...; // oder eine Exception


if not IntToIdent(Ord(VonEnum), AlsString, DasMapping) then
  AlsString := 'nö'; // oder eine Exception

freimatz 12. Mai 2017 14:05

AW: enum-Typ und array
 
Zitat:

Zitat von himitsu (Beitrag 1370896)
Und warum nicht Delphi das in einen String umwandeln lassen?
Delphi-Referenz durchsuchenGetEnumName / Delphi-Referenz durchsuchenGetEnumValue (TypInfo)

Weil das extrem gefährlich ist. Wenn man den String z.B. in eine Configurationsdatei schreibt und wieder einliest
und dazu noch den Aufzählungstyp umbenannt ist die Software nicht mehr kompatibel.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz