Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.111 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: dxGetText: Exceptions zu lokalisieren war ein Fehler, oder?

  Alt 15. Mär 2016, 17:03
Nein, das ist einfach nur ein selbst gebautes VCL-Fenster mit einem traurigen Smiley, dem Exception-Text und einem Button für eine Diagnose-Zip-Datei auf einen Stick zu speichern.

Warum, was würde das ändern?

Aber so wie es aussieht habe ich schon eine Lösung:

Ein Ressourcenstring ist erst einmal ein TResStringRec und kein String!

Ich habe der Exception-Oberklasse also einen neunen Konstruktor hinzugefügt:

Delphi-Quellcode:
   EDeviceException = class(Exception)
      public var
         resStr: PResStringRec;
      public
         constructor Create(const resStr: PResStringRec); {$If Defined(Test)}overload;{$Endif}
   end;

constructor EDeviceException.Create(const resStr: PResStringRec);
var
   translated: String;
begin
   self.resStr := resStr;

   translated := System.LoadResString(resStr);
   inherited Create(translated);
end
.

Heißt: Es geht weiter wie bislang. Aber das Exception-Objekt hat jetzt noch einen Verweis auf den originalen Ressourcen-String. Vorausgesetzt ich sage fortan nicht mehr
raise EDeviceException(someText) sondern
raise EDeviceException(@someText) Beim Loggen der Exception kann ich mich dann an diesem PResStringRec wieder zu einem englischen oder deutschen Text hangeln.

Jetzt darf ich nur den CreateFmt-Konstruktor nicht vergessen und dann sieht das schon sehr gut aus
  Mit Zitat antworten Zitat