GPStatus als string
Ist wieder spät da klappt wieder gar nichts.
Wie kann ich den Status von GPStatus als Text ausgeben (string)
Delphi-Quellcode:
type
Status = ( Ok, GenericError, InvalidParameter ); TStatus = Status;
Delphi-Quellcode:
GpStatus = TStatus;
ohne die ganze type wieder zu parsen. gruss |
AW: GPStatus als string
Hallo,
das sollte über RTTI gehen http://docwiki.embarcadero.com/RADSt...r_Simple_Types Stichwort Enumeration Types |
AW: GPStatus als string
Zitat:
Die frage die da wäre unter D2010 anwendbar? gruss |
AW: GPStatus als string
Hallo,
ja, der Code läuft auch unter D2007, muss ich nachher mal raussuchen. |
AW: GPStatus als string
Zitat:
gruss |
AW: GPStatus als string
Oder ohne RTTI:
Delphi-Quellcode:
und dann einfach über:
Const
cStatus : Array[TStatus] of String = ( 'Ok', 'GenericError', 'InvalidParameter' );
Delphi-Quellcode:
darauf zugreifen.
cStatus[status]
Läuft unabhängig von der Delphi-Version und sauber internationalisiert werden :) |
AW: GPStatus als string
Zitat:
Aber dann ändere ich die GDIP_API Unit. Was bedeutet ich muss alle Funktionen die auf GPStatus zugreifen wieder ändern. Oder? gruss |
AW: GPStatus als string
Sollte in etwa so gehen:
Delphi-Quellcode:
GetEnumName(TypeInfo(TStatus), Integer(AStatus));
|
AW: GPStatus als string
Zitat:
Zitat:
gruss |
AW: GPStatus als string
TypInfo in den uses?
Delphi-Quellcode:
program RttiToString;
{$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils, System.Rtti, System.TypInfo; type Status = ( Ok, GenericError, InvalidParameter ); TStatus = Status; var AStatus : TStatus; begin try AStatus := GenericError; Writeln( GetEnumName(TypeInfo(TStatus), Integer(AStatus)) ); except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; Readln; end. |
AW: GPStatus als string
Hatte vergessen AStatus zu definieren.
Die Lösung ist aber trotzdem nicht korrekt (Oder ich irre mich auch) ;) AStatus ist ja nicht initialisiert. Wenn ich nun wie du AStatus definiere dann ist aber bei einem Auftretenden Fehler AStatus immer GenericError. Das möchte ich aber nicht sondern den realen wert ;) bsp. Win32Error gruss |
AW: GPStatus als string
Wie wäre es mit etwas Kontext?
|
AW: GPStatus als string
Zitat:
|
AW: GPStatus als string
Zitat:
Ich frage ja nicht umsonst. ;) Gebe ich den Realen wert ein der mit meiner Funktion übergeben wird
Delphi-Quellcode:
function TfrmMain.SaveToPNG(FullName: PWideChar; img: GPImage): GPStatus;
in dem Fall Result Dann bekomme ich vom Compiler die Meldung das Result möglicherweise nicht initialisiert ist. EDIT: Ok denke sollte dann Result:= GenericError; voran stellen. Dann geht's. :) :wall: :duck: Danke. grussa |
AW: GPStatus als string
Zitat:
Sowas kann man dann z.B. einfach internationalisieren
Delphi-Quellcode:
Hier mal mit der Gnugettext-Funktion.
_(cStatus[status]);
oder in dem Fall das es das Funktionsergebnis ist
Delphi-Quellcode:
Du kannst das ganze auch über ordinale Werte handhaben (ord(SaveToPng) bzw. IntToStr(SaveToPing)). Wär aber etwas umständlich imho.
ShowMessage(_(cStatus[SaveToPng(...)]));
|
AW: GPStatus als string
Zitat:
Habe aber im Moment den ein Zeiler von Union genommen klappt ganz gut. So muss ich nicht die API verändern. Trotzdem Danke. gruss |
AW: GPStatus als string
Zitat:
|
AW: GPStatus als string
Zitat:
Edit: Habe es übernommen feine Sache.. Danke Uwe. gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:21 Uhr. |
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