Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi QuickReport drucken von polnischen Zeichen (https://www.delphipraxis.net/205446-quickreport-drucken-von-polnischen-zeichen.html)

handson 10. Sep 2020 13:24

QuickReport drucken von polnischen Zeichen
 
Hallo!

Hat jemand Erfahrung mit QuickReport und polnischen Zeichen? Es ist ja ein anderer Zeichensatz. Wie kann ich ihm das beibringen, dass er die Zeichen richtig druckt. Beispiel, es gibt ja das durchgestrichene " ł ". Übergebe ich das so in der Property, macht er im Ausdruck ein normales " l " draus.
Kann er das nicht, ob muss man irgendwo noch was einstellen, andere Schriftart, o.ä.?

Vielen schon mal vorab!

Gruß,
Stephan

Bernhard Geyer 10. Sep 2020 13:57

AW: QuickReport drucken von polnischen Zeichen
 
Update auf D2009 und neuer und das Problem hat sich erledigt.

handson 10. Sep 2020 14:00

AW: QuickReport drucken von polnischen Zeichen
 
Tja, ich habe D2007 und ich kann nicht so einfach updaten. Gibt es nicht eine Lösung für ältere Versionen?

Delphi.Narium 10. Sep 2020 14:44

AW: QuickReport drucken von polnischen Zeichen
 
Zeichensatz Windows-1250

Geht sowas?
Delphi-Quellcode:
Quickreport.Font.Charset := EASTEUROPE_CHARSET;
Bei Google suchenDelphi EASTEUROPE_CHARSET

handson 10. Sep 2020 15:34

AW: QuickReport drucken von polnischen Zeichen
 
Das war ein gutes Hinweis! Jetzt funktioniert es!

Delphi-Quellcode:
:
:

  QRLabel15.Font.Charset := BALTIC_CHARSET;
:
:

procedure TDruckLieferscheinNeu.QRLabel15Print(sender: TObject;
  var Value: string);
begin
  If Lk = 'PL' Then Value := 'Kwota '+Chr($F9)+Chr($E0)+'czna PLN';  // Kwota łączna PLN
end;
Vielen Dank!

Gruß,
Stephan

himitsu 10. Sep 2020 16:10

AW: QuickReport drucken von polnischen Zeichen
 
Wenn Windows oder zumindestens die Delphi-IDE und der Compiler mit der "passenden" CodePage laufen, dann könntest du auch direkt abeiten,
Delphi-Quellcode:
Value := 'Kwota łączna PLN';

so wie es seit Delphi 2009 durchgängig funktioniert, wenn die PAS als Unicode (z.B. UTF-8) gespeichert wird.

Delphi-Quellcode:
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.

Bernhard Geyer 10. Sep 2020 19:10

AW: QuickReport drucken von polnischen Zeichen
 
Zitat:

Zitat von handson (Beitrag 1473387)
Tja, ich habe D2007 und ich kann nicht so einfach updaten.

Wieso den nicht?
(2 Mrd. Quellcodezeilen bei den angenommen wird das 1 Char = 1 Byte ist?
Oder einfach gar noch nicht versucht?

Zitat:

Zitat von handson (Beitrag 1473387)
Gibt es nicht eine Lösung für ältere Versionen?

Die hast du jetzt.
Gehe davon aus das diese Wissen wegen mangelnder Notwendigkeit immer weniger Vorhanden sein wird.
Und die Zeit die du in Workarounds (die mal funktionieren und mal nicht) investierst, könntest du schon ein Delphi mit Generics, 64-Bit Compiler, ... haben.


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