Portierung von Delphi (Unicode) zu Lazarus(AnsiString)

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut

Portierung von Delphi (Unicode) zu Lazarus(AnsiString)

Beitragvon Libby » 17. Okt 2019, 15:30 Portierung von Delphi (Unicode) zu Lazarus(AnsiString)

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
Libby
 
Beiträge: 2
Registriert: 16. Okt 2019, 10:30

Beitragvon Timm Thaler » 17. Okt 2019, 18:32 Re: Portierung von Delphi (Unicode) zu Lazarus(AnsiString)

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.
Timm Thaler
 
Beiträge: 1016
Registriert: 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
Nach oben

Beitragvon Christian » 17. Okt 2019, 18:56 Re: Portierung von Delphi (Unicode) zu Lazarus(AnsiString)

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/
Christian
Lazarusforum e. V.
 
Beiträge: 6092
Registriert: 21. Sep 2006, 06:51
Wohnort: Dessau
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z) | 
CPU-Target: AVR,ARM,x86(-64)
Nach oben

Beitragvon fliegermichl » 18. Okt 2019, 04:28 Re: Portierung von Delphi (Unicode) zu Lazarus(AnsiString)

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.
fliegermichl
Lazarusforum e. V.
 
Beiträge: 455
Registriert: 9. Jun 2011, 08:42
Wohnort: Echzell
OS, Lazarus, FPC: Winux (L 2.0.7 FPC 3.04) | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon Libby » 18. Okt 2019, 05:27 Re: Portierung von Delphi (Unicode) zu Lazarus(AnsiString)

@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!
Libby
 
Beiträge: 2
Registriert: 16. Okt 2019, 10:30

Beitragvon fliegermichl » 18. Okt 2019, 07:41 Re: Portierung von Delphi (Unicode) zu Lazarus(AnsiString)

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.
fliegermichl
Lazarusforum e. V.
 
Beiträge: 455
Registriert: 9. Jun 2011, 08:42
Wohnort: Echzell
OS, Lazarus, FPC: Winux (L 2.0.7 FPC 3.04) | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon Christian » 18. Okt 2019, 08:44 Re: Portierung von Delphi (Unicode) zu Lazarus(AnsiString)

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/
Christian
Lazarusforum e. V.
 
Beiträge: 6092
Registriert: 21. Sep 2006, 06:51
Wohnort: Dessau
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z) | 
CPU-Target: AVR,ARM,x86(-64)
Nach oben

Beitragvon fliegermichl » 18. Okt 2019, 09:10 Re: Portierung von Delphi (Unicode) zu Lazarus(AnsiString)

Ich hab keine Patches. Ich hab das mit der aktuellen Lazarusversion getestet und es funktioniert da bereits.
fliegermichl
Lazarusforum e. V.
 
Beiträge: 455
Registriert: 9. Jun 2011, 08:42
Wohnort: Echzell
OS, Lazarus, FPC: Winux (L 2.0.7 FPC 3.04) | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon mschnell » 18. Okt 2019, 09:40 Re: Portierung von Delphi (Unicode) zu Lazarus(AnsiString)

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
mschnell
 
Beiträge: 3390
Registriert: 11. Sep 2006, 09:24
Wohnort: Krefeld
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ) | 
CPU-Target: X32 / X64 / ARMv5
Nach oben

• Themenende •

Zurück zu Freepascal



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste

porpoises-institution
accuracy-worried