File- Directoryscan Linux vs Windows

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Patito
Beiträge: 203
Registriert: Di 22. Sep 2009, 13:08
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: File- Directoryscan Linux vs Windows

Beitrag von Patito »

mse hat geschrieben:
Patito hat geschrieben:Konvertierst Du die Filenamen für MSE-IDE beim einlesen um? Und wenn ja: Wie genau?

Bei der Übernahme der Dateinamen in das MSEgui System wird auf Linux von utf-8 auf utf-16 gewandelt. Ungültige utf-8 Bytes werden in einem privaten Unicode-Bereich abgelegt und später beim Rückwandeln auf 8-Bit rekonstruiert. Die Funktion ist utf8tostring() von hier:
https://gitlab.com/mseide-msegui/mseide ... trings.pas
In Windows sind die Dateinamen ja bereits 16 Bit.


Das sollte ich mir mal genauer ansehen. Auf den ersten Blick bin ich mir da nicht sicher, ob Du den Private Use-Area bei $f800 doppelt belegst.
Was passiert, wenn im UTF-8 ein $F800 kommt? Müsste man das nicht noch zusätzlich escapen (z.B. den Buchstaben verdoppeln)?
Ansonsten ist die Umwandlung ja nicht wirklich bijektiv.

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: File- Directoryscan Linux vs Windows

Beitrag von mse »

Korrekt. Nur kommen in Linux Dateinamen kaum utf-8 Sequenzen der privaten Unicode Bereiche vor. Was vorkommt sind andere 8-Bit Codierungen aus DOS-Partitionen, Samba-Mounts und Partitionen aus der vor Linux-utf-8 Zeit. Wenn man es 100%-ig machen will, führt wohl kein Weg daran vorbei, die ursprüngliche Bytefolge mitzunehmen oder die ungültigen Bytes anderweitig zu codieren. In MSEgui ist der Datentyp von Dateinamen "filenamety" welcher im Moment ein Alias für UnicodeString ist. Es währe möglich, den Typ z.B. als record auszuführen. Ich glaube nicht, dass der Aufwand dafür und die damit einhergehende Unbequemlichkeit gerechtfertigt sind.
EDIT:
Wobei in beliebigen 8-Bit Codierungen natürlich Sequenzen vorkommen können, welche einen gültigen Codepoint des privaten Bereiches in utf-8 Codierung ergeben. Hmm.

Patito
Beiträge: 203
Registriert: Di 22. Sep 2009, 13:08
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: File- Directoryscan Linux vs Windows

Beitrag von Patito »

mse hat geschrieben:Wobei in beliebigen 8-Bit Codierungen natürlich Sequenzen vorkommen können, welche einen gültigen Codepoint des privaten Bereiches in utf-8 Codierung ergeben. Hmm.


Ich denke mal es wäre die Mühe schon wert die Codierung zu fixen. Wenn es unzweideutig ist, ist es einfach besser.
Ein Codierungs-Byte hineinzupacken könnte z.B. funktionieren.

$xx -> $F800 $00xx
$F8xx -> $F801 $00xx

Vielleicht gibt es noch etwas kompakteres. Man benötigt ja
eigentlich nur ein einziges zusätzliches Bit.

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: File- Directoryscan Linux vs Windows

Beitrag von mse »

Patito hat geschrieben:$xx -> $F800 $00xx
$F8xx -> $F801 $00xx

Das hätte auch den Reiz, dass ISO8859-1 Zeichen richtig dargestellt würden.

Patito
Beiträge: 203
Registriert: Di 22. Sep 2009, 13:08
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: File- Directoryscan Linux vs Windows

Beitrag von Patito »

mse hat geschrieben:Das hätte auch den Reiz, dass ISO8859-1 Zeichen richtig dargestellt würden.


$F800 ist ein spezielles privates Linux-Areal, man könnte sich noch überlegen, ob man ein
anderes privates Areal nimmt. Private Use Area ist aber auf jeden Fall gut.

So etwas wäre ja genau der richtige Anwendungsfall für so ein Private Use Area.
Jetzt noch passende Symbole für die $F800 in die Font, und man könnte die ganze Sache
sogar gut lesen und editieren.

Kann gut sein, dass man damit dann der erste Mensch auf dem Planeten wäre, der ein
bug-freies Edit für File-Namen besitzt....

Ralf
Beiträge: 65
Registriert: Mi 29. Jan 2014, 18:31
OS, Lazarus, FPC: Ubuntu 20.04 LTS (L 2.0.6 FPC 3.3.1)
CPU-Target: 64Bit

Re: File- Directoryscan Linux vs Windows

Beitrag von Ralf »

mse hat geschrieben:
Ralf hat geschrieben:Jetzt bin ich neugierig geworden, denn von fpGUI oder MSEide+MSEgui habe ich noch nichts gehört.

Für MSEide+MSEgui gibt es hier im Forum einen eigenen Bereich:
viewforum.php?f=53
Wahrscheinlich wäre es jetzt eine blöde Frage zu fragen, ob das "besser", schneller und/oder komfortabler als Lazarus / CodeTyphon ist?
Ich bin der Autor von MSEide+MSEgui, für meine Zwecke ist es besser, schneller und komfortabler.

Hallo mse,

sehr interessant. Das werde ich mir auf jeden Fall auch anschauen. Danke für die Infos und Hinweise.
Auch an alle andere; Merci für alle Anregungen.

Viele Grüße,
Ralf
Kubuntu 20.04 LTS

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: File- Directoryscan Linux vs Windows

Beitrag von mse »

Patito hat geschrieben:
mse hat geschrieben:Das hätte auch den Reiz, dass ISO8859-1 Zeichen richtig dargestellt würden.


$F800 ist ein spezielles privates Linux-Areal, man könnte sich noch überlegen, ob man ein
anderes privates Areal nimmt. Private Use Area ist aber auf jeden Fall gut.

So etwas wäre ja genau der richtige Anwendungsfall für so ein Private Use Area.
Jetzt noch passende Symbole für die $F800 in die Font, und man könnte die ganze Sache
sogar gut lesen und editieren.

Kann gut sein, dass man damit dann der erste Mensch auf dem Planeten wäre, der ein
bug-freies Edit für File-Namen besitzt....

Fortsetzung:
viewtopic.php?f=53&t=10578

Antworten