Portierung von Delphi (Unicode) zu Lazarus(AnsiString)

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Libby
Beiträge: 3
Registriert: Mi 16. Okt 2019, 11:30

Portierung von Delphi (Unicode) zu Lazarus(AnsiString)

Beitrag von Libby »

Liebe Forum-Helfer,

ich habe ein großes Delphi-Projekt auf Lazarus - Linux-64-Bit umgesetzt.
Mode steht auf Delphi -> String=AnsiString

Hat alles prima funktioniert, aber...

Ich verwende das String-Lateral '°C' für Grad Celsius, das wird mir im Quelltexteditor auch so dargestellt.
Wenn ich aber diesen String in einem String-Grid anzeige wird aus dem Grad-Zeichen ein ?

Beispiel
function GetTemperaturString: String;
begin
Result := '°C'; // Fall a
Result := AnsiToUtf8('°C') ; // Fall b
end;

Fall a: Debugger-Ausgabe: #176'C', angezeigt wird eine Raute mit ? und angehängtem C
Fall b: Debugger-Ausgabe: '?C', das wird auch angezeigt.

Wo kriege ich jetzt das Grad-Zeichen her?

Ich benutze gemeinsame Quellen für Delphi unter Windows (32-Bit) und Lazarus unter Linux (64-Bit und 32-Bit).

Liebe Grüße,
Libby

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: Portierung von Delphi (Unicode) zu Lazarus(AnsiString)

Beitrag von Timm Thaler »

Portieren? Gar nicht!

Alles in Utf8 durchziehen, das geht auch in Lazarus, das geht sogar hervorragend in Lazarus.

Sonst hast du das nächste Problem, wenn du zwischen Linux und Windows portieren willst.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Portierung von Delphi (Unicode) zu Lazarus(AnsiString)

Beitrag von Christian »

Im Source code rechts klicken -> Dateieinstellungen -> Zeichenkodierung
was steht da drin ? Sollte auf UTF-8 stehen dann sollt das auch vom fpc richtig interpretiert werden und auch im Stringgrid passen. Wird warscheinlich vom Delphi aus auf CP1252 stehn oder so.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1435
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Portierung von Delphi (Unicode) zu Lazarus(AnsiString)

Beitrag von fliegermichl »

Sollte sowas nicht automatisch bei der Portierung passieren?

Man hat doch unter Werkzeuge -> Delphi-Umwandlung die Möglichkeit, Delphi Projekte zu portieren. Das hat mit den blöden Umlauten bei mir auch noch nie richtig funktioniert.
Ich hab die "vermüllten" Zeichenketten im Sourceeditor gelöscht und neu eingegeben und trotzdem kam in der Anwendung wieder nur Müll raus.

Edit: Ich kannte die Funktion Dateieinstellungen -> Zeichenkodierung noch gar nicht. Wenn man die anwendet, dann klappt's auch mit dem Nachbarn. Aber wie gesagt, bei der Portierung sollte das mMn. automatisch passieren.

Libby
Beiträge: 3
Registriert: Mi 16. Okt 2019, 11:30

Re: Portierung von Delphi (Unicode) zu Lazarus(AnsiString)

Beitrag von Libby »

@Christian:
Der Tipp mit der Dateieinstellung -> Zeichenkodierung hat geholfen!
Kodierung war Iso-8859-1, umgestellt auf UTF8 -> °C wird in beiden Fällen angezeigt.

Vielen Dank für Eure Hilfe!

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1435
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Portierung von Delphi (Unicode) zu Lazarus(AnsiString)

Beitrag von fliegermichl »

Hmm,

ich muss mich korrigieren. Ich hab grad mal ein kleines Testprojekt mit Delphi 5 erstellt wo sowohl im Formular als auch im Source Texte mit Umlauten und anderen Sonderzeichen drinstehen und hab das mit einer halbwegs aktuellen Lazarusversion konvertiert. Hat alles einwandfrei konvertiert.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Portierung von Delphi (Unicode) zu Lazarus(AnsiString)

Beitrag von Christian »

Das mit der Umstellung bei der Umwandlung halt ich für ne tolle idee.
Ich bin auf deine Patches gespannt und freu mich das diese Funktion dann bald im Lazarus ist.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1435
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Portierung von Delphi (Unicode) zu Lazarus(AnsiString)

Beitrag von fliegermichl »

Ich hab keine Patches. Ich hab das mit der aktuellen Lazarusversion getestet und es funktioniert da bereits.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Portierung von Delphi (Unicode) zu Lazarus(AnsiString)

Beitrag von mschnell »

Christian hat geschrieben:Das mit der Umstellung bei der Umwandlung halt ich für ne tolle idee.

Falls die Codierung (BOM -> https://de.wikipedia.org/wiki/Byte_Order_Mark) in der Datei tatsächlich hinterlegt ist.
Falls nicht, müsste die Konvertierungs-Funktion beim User nachfragen.
-Michael

Antworten