Hallo,
nach einigen Anlaufschwierigkeiten meinte ich, bei den Fpc/Lcl Zeichensätzen durchzublicken:
- innerhalb der LCL ist der Zeichensatz UTF8
- die Pascal-Quelltexte werden in UTF8 abgespeichert
- "sys" bei "sysToUTF8" etc. ist bei Windows der Ansi-Zeichensatz (üblicherweise 1252)
D.h. übergibt man einen String, der aus der fpc kommt, an einen z.B. Label, muß man nach UTF8 konvertieren und umgekehrt.
Soweit OK. Wenn man eine Datei öffnen will mit assign, dann gilt der Ansi-Zeichensatz.
Ich habe nun festgestellt, daß jedoch sysutils.findfirst bei Windows nicht den Ansi, sondern den OEM (IBM) Zeichensatz verlangt (437 bzw. 850). Jetzt bin ich restlos verwirrt. Die einen Dateifunktionen verlangen ANSI, andere OEM. Wer kann mir das erklären? Bei Mac und Linux wird sicher nicht der OEM Zeichensatz verwendet. Wie mache ich dann "compile everywhere"? Oder ist das ein Fehler in der FPC-Library?
Zeichensatz-Verwirrung
-
- 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: Zeichensatz-Verwirrung
Das hat mit der FPC Library nichts zu tun. "compile everywhere" ist nicht der fpc sloagan sondern der Lazarus sloagan. In der Unit FileUtil gibt ein FindFirstUTF8 FindNextUTF8 u.s.w. bei dennen wird die Konvertierung korrekt durchgeführt und du brauchst dir keine Gedanken mehr drum zu machen. Um die Hintergründe noch etwas zu erklären. Die FC RTL versucht eine Mischung zwischen nah am System und portabel. Deswegen wird dort die FindFirst Routine nur zur Windows Routine gemappt und die WinAPI ist nicht sonderlich sauber und strukturiert
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Beiträge: 142
- Registriert: Sa 30. Jan 2010, 19:35
- OS, Lazarus, FPC: Linux64, Wiindows32, MacOS, Lazarus 1.8.2
- CPU-Target: xxBit
Re: Zeichensatz-Verwirrung
Danke für den Tipp mit fileutil.findfirstUtf8. Wie ist aber dann assign (file, filename) zu sehen? Ist das über alle Plattformen dann ANSI-Codepage ?
-
- 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: Zeichensatz-Verwirrung
AssignFile(UTF8ToSys(Editx.text))
Ich würd auch die alten Pascalroutinen nicht mehr verwenden TFileStream machts einem oft einfacher auf Dateien zuzugreifen.
Ist aber sort das Selbe TFileStream.Create(UTF8ToSys(Editx.Text),fmOpenRead);
Ich würd auch die alten Pascalroutinen nicht mehr verwenden TFileStream machts einem oft einfacher auf Dateien zuzugreifen.
Ist aber sort das Selbe TFileStream.Create(UTF8ToSys(Editx.Text),fmOpenRead);
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/