Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.183 Beiträge
 
Delphi 12 Athens
 
#6

AW: QuickReport drucken von polnischen Zeichen

  Alt 10. Sep 2020, 16:10
Wenn Windows oder zumindestens die Delphi-IDE und der Compiler mit der "passenden" CodePage laufen, dann könntest du auch direkt abeiten,
Value := 'Kwota łączna PLN';
so wie es seit Delphi 2009 durchgängig funktioniert, wenn die PAS als Unicode (z.B. UTF-8) gespeichert wird.

Value := 'Kwota '#$F9#$E0'czna PLN';

#zzz
#$xx
#$00xx // mathematisch macht es keinen Unterschid, aber für den Compiler schon
Chr($xx)
Char($xx)
WideChar($xx)

Bei AnsiChars und UnicodeChars im Code mußt du auch aufpassen wie und ob der Compiler da CodePages beachtet und womöglich übersetzt.
z.B. #$0085 und #$85 in einem UnicodeString sind nicht das Selbe, denn einmal wird es als UnicodeChar betrachtet und 1:1 übernommen, während es anderseits also ANSI angesehn und convertiert würde.
Einiges wird im Editor übersetzt (hier egal, wenn du dort nur mit ASCII arbeitest und Chars nur Ordinal [INT oder HEX] deklarierst),
anderes wird bereits vom Compiler behandelt/convertiert, also auf deinem PC,
und zuletzt kann es auch erst zur Laufzeit behandelt/convertiert werden, also auf dem Zielrechner.

Das betrifft auch deinen aktuellen Quellcode, falls du doch irgendwann mal auf ein neues Delphi umsteigst,
denn das was jetzt noch ANSI mit entsprechender Codepage darstellt, könnte später etwas Anderes sein. (Chr/Char = AnsiChar bis D2007, aber später wird es WideChar)

https://www.embarcadero.com/images/d...-migration.pdf
http://docwiki.embarcadero.com/RADSt..._in_RAD_Studio


Seit 2009 wird auch zur Laufzeit in der AnsiString-Variable die CodePage gespeichert und für Convertierungen verwendet.
Davor wird ausschließlich der Typ der Variable und nicht der aktuelle Inhalt dafür genutzt.
Den Grundtyp kann man bei der Deklaration angeben und teilweise auch später nochmal ändern. Delphi-Referenz durchsuchenSetCodePage

Delphi-Quellcode:
type
  CZString = AnsiString(1250);

var
  S: CZString;

S := 'Kwota '#$F9#$E0'czna PLN';


Der Vorteil beim Unicode ist, dass man sich nicht mehr so extrem mit CodePages auseinandersetzen muß,
wo jede Variable/Komponente mit einer anderen CodePage arbeiten könnte.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (10. Sep 2020 um 16:15 Uhr)
  Mit Zitat antworten Zitat