Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Unicode Ersatz für Format (https://www.delphipraxis.net/90206-unicode-ersatz-fuer-format.html)

xZise 13. Nov 2007 09:26

Re: Unicode Ersatz für Format
 
Zitat:

Zitat von himitsu
dann natürlich so :angel:

Du weißt wohl nicht wie das geht :)

Delphi-Quellcode:
Format(_('string %s'), [e.Message]);
Ich muss zuerst einen String mit Platzhaltern übersetzt werden (_())! Dann die Variablen einsetzen (Format) und dann in WideString umwandeln!
Der letzte Schritt ist das Problem.

:)

Dezipaitor 13. Nov 2007 14:30

Re: Unicode Ersatz für Format
 
Zitat:
Delphi-Quellcode:
MessageBoxW(hDPM, PWideChar(Format('Error while downloading and processing updateinformation.'
  + #13#10'Message: %S'#13#10'Errorclass: %S', [_(e.Message), _(e.ClassName_)])),
  '[Update Plugin] Downloading/Processingerror', MB_OK or MB_ICONERROR);

MessageBoxW(hDPM, PWideChar(Format('Error while downloading and processing updateinformation.'
  + #13#10'Message: %s'#13#10'Errorclass: %s', [WideString(_(e.Message)), WideString(_(e.ClassName_))])),
  '[Update Plugin] Downloading/Processingerror', MB_OK or MB_ICONERROR);
Wie wärs, wenn die Formatfunktion auch noch C-Formatierungssymbole erkennen würde? z.b. \r\n für Windows Zeilenumbruch, statt #13#10.
Der obige Code ist meiner Meinung nach nicht wirklich toll.

himitsu 14. Nov 2007 14:55

Re: Unicode Ersatz für Format
 
Zitat:

Zitat von xZise
Du weißt wohl nicht wie das geht :)
Delphi-Quellcode:
Format(_('string %s'), [e.Message]);

oh, hast ja Recht (wörter im Formatstring könnte man och mit übersetzen, :oops:
aber dann wäre beides FormatString und das einzufügende wohl nicht schlecht.

Delphi-Quellcode:
Format(_('string %s'), [_(e.Message)]);
// oder alles zusammen
_(Format('string %s', [e.Message]));
aber mal 'ne Frage, diese _(...) arbeitet doch nur mit Strings/AnsiStrings?
da würde es doch eigentlih alle UnicodeInformationen zerstören,
weshalb man gleich bei delphi's Format-Version (Ansi) bleiben könnte. :gruebel:

xZise 22. Dez 2007 21:47

Re: Unicode Ersatz für Format
 
Zitat:

Zitat von himitsu
Delphi-Quellcode:
Format(_('string %s'), [_(e.Message)]);
// oder alles zusammen
_(Format('string %s', [e.Message]));
aber mal 'ne Frage, diese _(...) arbeitet doch nur mit Strings/AnsiStrings?
da würde es doch eigentlih alle UnicodeInformationen zerstören,
weshalb man gleich bei delphi's Format-Version (Ansi) bleiben könnte. :gruebel:

So :)
Das scheint hier wohl noch ein paar Probleme zu geben!
1. _(<string>) übersetzt einen String (z.B. <string>="Hallo Welt"; Dann guckt er in der Datei nach "Hallo Welt" und würde die jetzt in "Hello World" übersetzten).
2. _() Arbeitet mit WideStrings! (Ein/Ausgabe)

Zu den Ersten:
Das kann er übersetzen:
"Zahl: %d" => "Number %d" => Format(...) Erfolg
Wenn ich aber das so wie dein zweiten Vorschlag machen würde:
"Zahl: %d" => Format(...) => "Zahl: 123456789" => Kein Erfolg
Deshalb muss ich irgendwie Format auf WideStrings anwenden.

MfG
xZise

xZise 30. Mär 2008 16:51

Re: Unicode Ersatz für Format
 
Also irgendwie will das nicht funktionieren!
Gibt es denn keine Möglichkeit dieses Format auch für WideStrings hinzubekommen?

Irgendwie scheinen die Übergabeparameter nicht ganz zu stimmen:
Delphi-Quellcode:
Format(_(<string>), [<string>]);
Er übersetzt das zwar, setzt aber anstelle des Strings irgendwelche komischen (japanisch/chinesisch?) Zeichen ein.
Auch das die Bytereihenfolge falsch ist, stimmt nicht, da ein swapen der Reihenfolge des Strings nichts bringt!

[edit=1]ICH HABE ES :)
Es funktioniert wenn ich statt "<string>" als Variable "WideString(<string>)" einsetze.[/edit]

MfG
xZise


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:09 Uhr.
Seite 3 von 3     123   

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