Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi GPStatus als string (https://www.delphipraxis.net/192193-gpstatus-als-string.html)

EWeiss 28. Mär 2017 08:40

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

Union 28. Mär 2017 08:47

AW: GPStatus als string
 
Wie wäre es mit etwas Kontext?

Uwe Raabe 28. Mär 2017 08:51

AW: GPStatus als string
 
Zitat:

Zitat von EWeiss (Beitrag 1365721)
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

Dann übergib doch anstatt AStatus den realen Wert...

EWeiss 28. Mär 2017 08:57

AW: GPStatus als string
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1365723)
Zitat:

Zitat von EWeiss (Beitrag 1365721)
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

Dann übergib doch anstatt AStatus den realen Wert...

Wenn das alles so einfach wäre wie ihr sagt.
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

Ghostwalker 28. Mär 2017 10:47

AW: GPStatus als string
 
Zitat:

Zitat von EWeiss (Beitrag 1365707)
Zitat:

Zitat von Ghostwalker (Beitrag 1365706)
Oder ohne RTTI:

Delphi-Quellcode:
Const
  cStatus : Array[TStatus] of String = (
   'Ok',
   'GenericError',
   'InvalidParameter'
  );
und dann einfach über:

Delphi-Quellcode:
cStatus[status]
darauf zugreifen.

Läuft unabhängig von der Delphi-Version und sauber internationalisiert werden :)

könnte ich machen..
Aber dann ändere ich die GDIP_API Unit.
Was bedeutet ich muss alle Funktionen die auf GPStatus zugreifen wieder ändern. Oder?

gruss

Nein...TStatus wird ja nicht geändert. Du definierst dir einfach eine typisierte Konstante mit den benötigten Strings. Du benutzt einfach den Status (TStatus) als Index auf dein Konstanten-Array. Drops gelutscht.

Sowas kann man dann z.B. einfach internationalisieren

Delphi-Quellcode:
_(cStatus[status]);
Hier mal mit der Gnugettext-Funktion.

oder in dem Fall das es das Funktionsergebnis ist

Delphi-Quellcode:
ShowMessage(_(cStatus[SaveToPng(...)]));
Du kannst das ganze auch über ordinale Werte handhaben (ord(SaveToPng) bzw. IntToStr(SaveToPing)). Wär aber etwas umständlich imho.

EWeiss 28. Mär 2017 11:06

AW: GPStatus als string
 
Zitat:

Nein...TStatus wird ja nicht geändert.
Ach so ja dann sollte es kein Problem sein.

Habe aber im Moment den ein Zeiler von Union genommen klappt ganz gut.
So muss ich nicht die API verändern.

Trotzdem Danke.

gruss

Zacherl 28. Mär 2017 11:20

AW: GPStatus als string
 
Zitat:

Zitat von EWeiss (Beitrag 1365745)
Habe aber im Moment den ein Zeiler von Union genommen klappt ganz gut.

Die andere (schönere) Lösung kannst du aber auch problemlos verwenden ohne die Unit mit der GDI+ API zu modifizieren. Deklarier das String-Array doch einfach in deiner eigenen Unit.

EWeiss 28. Mär 2017 12:34

AW: GPStatus als string
 
Zitat:

Zitat von Zacherl (Beitrag 1365747)
Zitat:

Zitat von EWeiss (Beitrag 1365745)
Habe aber im Moment den ein Zeiler von Union genommen klappt ganz gut.

Die andere (schönere) Lösung kannst du aber auch problemlos verwenden ohne die Unit mit der GDI+ API zu modifizieren. Deklarier das String-Array doch einfach in deiner eigenen Unit.

JO das wäre auch eine Möglichkeit ;)
Edit:
Habe es übernommen feine Sache..

Danke Uwe.

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:32 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