Portierung von Delphi (Unicode) zu Lazarus(AnsiString)
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
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
-
- 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)
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.
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.
-
- 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)
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.
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/
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1639
- 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)
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.
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.
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!
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!
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1639
- 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)
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.
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.
-
- 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)
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.
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/
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1639
- 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)
Ich hab keine Patches. Ich hab das mit der aktuellen Lazarusversion getestet und es funktioniert da bereits.
-
- 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)
Falls die Codierung (BOM -> https://de.wikipedia.org/wiki/Byte_Order_Mark) in der Datei tatsächlich hinterlegt ist.Christian hat geschrieben:Das mit der Umstellung bei der Umwandlung halt ich für ne tolle idee.
Falls nicht, müsste die Konvertierungs-Funktion beim User nachfragen.
-Michael