![]() |
enum-Typ und array
hallo zusammen,
ich steh mir gerade selbst auf den Füßen. Für einen Enum-Typen möchte ich auch gleich den Klartext zur Hand haben:
Delphi-Quellcode:
Geht das überhaupt?
type
tEVType = (EVUndef,EVAusz,EVPausch,EVProduct); const cEVType:array [min(tEVType)..max(tEVType)]=('EVundef','EVAusz','EVPausch','EVProduct'); var myev : tEVType; .... writeln(cEVTYPE[myEV]); ..... Gruß K-H |
AW: enum-Typ und array
jap:
Delphi-Quellcode:
const cEvType : array[TevType] of String = ('EVundef','EVAusz','EVPausch','EVProduct');
|
AW: enum-Typ und array
Danke!
Gruß K-H |
AW: enum-Typ und array
Zitat:
|
AW: enum-Typ und array
Weil man den String im Regelfall nur zur Ausgabe hin benötigt. Wenn man das ganze z.B. in einer DB speichern möchte, reicht ein Byte (oder Integer)-Feld.
Alles eine Frage der Effizients :) |
AW: enum-Typ und array
Zitat:
|
AW: enum-Typ und array
Richtig, das war aber auch nur ein Beispiel.
Es ging aber auch nicht darum den Enum zu elemenieren. |
AW: enum-Typ und array
Und warum nicht Delphi das in einen String umwandeln lassen?
![]() ![]() TRttiEnumerationType.GetName / TRttiEnumerationType.GetValue (RTTI, allerding ist das in XE private, aber klang so, als wenn sich das geändert hat ... ist eh eine saudumme Idee und ich hab sowas schon seit Jahren für mich selbst gebaut ... die ollen Nachmacher :stupid:) Solange keiner auf die doofe Idee kommt und den Enum manuell indiziert, gibt es auch die nötigen RTTI-Infos. Also nicht bei
Delphi-Quellcode:
.
type tEVType = (EVUndef=123,EVAusz,EVPausch,EVProduct);
|
AW: enum-Typ und array
Stimmt...is sogar einfacher :)
|
AW: enum-Typ und array
Gute Idee!
Da ich aber an z.B "EVAusZ" noch weitere Strings hängen habe, u.a. SQL-Abfragen, ist die erstgenannte Lösung genau das richtige. Gruß K-H |
AW: enum-Typ und array
Hallöle...:P
Zitat:
Wenn du die SQL extern lagern willst schau das das Tutorial an. :thumb: ![]() Vom mir aus könntest du auch den Ressorcenname des SQL im Enum/Array hinterlegen. Die eigentlichen Statements liegen extern in der Ressource. |
AW: enum-Typ und array
Wie kommst Du auf 300?
:shock: Gruß K-H |
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:
Name rein...Statement raus. :thumb:
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; |
AW: enum-Typ und array
Ach ja, dann gibt es auch noch
![]() ![]() was z.B. für die Umwandulng von TColor <-> Integer verwendet wird, also in ![]() ![]() oder als ![]() 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 |
AW: enum-Typ und array
Zitat:
und dazu noch den Aufzählungstyp umbenannt ist die Software nicht mehr kompatibel. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz