CreateDir nicht unicodefähig?
CreateDir nicht unicodefähig?
Hallo Jungs,
ich arbeite gerade mit der CreateDir() Methode und habe festgestellt, dass das nicht unicodefähig ist. Habt ihr eventuell ein Tipp wie ich ein Verzeichnis auch in anderen Sprachen erstelle?
Danke!
ich arbeite gerade mit der CreateDir() Methode und habe festgestellt, dass das nicht unicodefähig ist. Habt ihr eventuell ein Tipp wie ich ein Verzeichnis auch in anderen Sprachen erstelle?
Danke!
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2905
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: CreateDir nicht unicodefähig?
Da nimmst du CreateDirUtf8 (http://lazarus-ccr.sourceforge.net/docs ... rutf8.html) aus der Unit FileUtil.
0118999881999119725-3
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
marcov
- Beiträge: 1104
- Registriert: Di 5. Aug 2008, 09:37
- OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
- CPU-Target: 32/64,PPC(+64), ARM
- Wohnort: Eindhoven (Niederlande)
Re: CreateDir nicht unicodefähig?
Createdir ist Unicode tauglich mit FPC 3+
Re: CreateDir nicht unicodefähig?
Stimmt, und es funktioniert tatsächlich.marcov hat geschrieben:Createdir ist Unicode tauglich mit FPC 3+
Das neueste Lazarus (trunk) hat jetzt auch Optionen dafür.
Damit geht auch sowas unter Win (Wine getestet):
Code: Alles auswählen
CreateDir('Z:\home\theo\ääüЖ'); Code: Alles auswählen
var sl:TStringList;
begin
sl:=TStringList.Create;
sl.LoadFromFile('Z:\home\theo\ääü.txt'); Re: CreateDir nicht unicodefähig?
Lt. Usually the RTL uses the system codepage for strings (e.g. FileExists and TStringList.LoadFromFile). geht es schon. Bei mir funktioniert es, wenn ich {$codepage utf8} im Code, nicht in den Projekteinstellungen, setze:theo hat geschrieben:Das geht aber noch immer nicht:
Code: Alles auswählen
var sl:TStringList; begin sl:=TStringList.Create; sl.LoadFromFile('Z:\home\theo\ääü.txt');
Code: Alles auswählen
{$mode objfpc}{$H+}
{$codepage utf8} Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection; Re: CreateDir nicht unicodefähig?
Stimmt, du hast recht.
Damit fehlt aber noch die richtige Unterstützung in der IDE.
Wenn ich eine "UTF-8 Applikation" erstelle und dann noch
dem Compiler mitgebe, hätte ich eigentlich nicht damit gerechnet, dass noch mehr zu tun ist.
Komischerweise reicht es auch für CreateDir('Z:\home\theo\ääüЖ').
Warum reicht -FcUTF8 nicht für SL.LoadFromFile?
----------------------------------------------------------
P.S. Jetzt habe ich eine echte Lücke:
Zwei Tests im gleichen Code:
T1: sl.LoadFromFile('Z:\home\theo\ääüЖ.txt');
T2: inttostr(length('öäüЖ'));
Fall1: kein {$codepage utf8} und kein -FcUTF8: T1: Unable to open File, T2: Resultat: 8 (Alles wie erwartet kein Unicode).
Fall2: kein {$codepage utf8} aber -FcUTF8: T1 Unable to open File, T2: Resultat: 4 (also als UTF8 interpretiert).
Fall3: {$codepage utf8} und -FcUTF8: T1 OK, T2: Resultat 4 (Alles Unicode).
Fall4: {$codepage utf8} und kein -FcUTF8: T1 OK, T2: Resultat 4 (Alles Unicode).
Wo liegt der Unterschied zw. Fall2 und Fall3?
Damit fehlt aber noch die richtige Unterstützung in der IDE.
Wenn ich eine "UTF-8 Applikation" erstelle und dann noch
Code: Alles auswählen
-dEnableUTF8RTL
-FcUTF8Komischerweise reicht es auch für CreateDir('Z:\home\theo\ääüЖ').
Warum reicht -FcUTF8 nicht für SL.LoadFromFile?
----------------------------------------------------------
P.S. Jetzt habe ich eine echte Lücke:
Zwei Tests im gleichen Code:
T1: sl.LoadFromFile('Z:\home\theo\ääüЖ.txt');
T2: inttostr(length('öäüЖ'));
Fall1: kein {$codepage utf8} und kein -FcUTF8: T1: Unable to open File, T2: Resultat: 8 (Alles wie erwartet kein Unicode).
Fall2: kein {$codepage utf8} aber -FcUTF8: T1 Unable to open File, T2: Resultat: 4 (also als UTF8 interpretiert).
Fall3: {$codepage utf8} und -FcUTF8: T1 OK, T2: Resultat 4 (Alles Unicode).
Fall4: {$codepage utf8} und kein -FcUTF8: T1 OK, T2: Resultat 4 (Alles Unicode).
Wo liegt der Unterschied zw. Fall2 und Fall3?
Re: CreateDir nicht unicodefähig?
Tatsächlich, es läuft mit CreateDirUtf8(); !!!
Lazarus Buch bestätigt es auch.
Lazarus Buch bestätigt es auch.
Re: CreateDir nicht unicodefähig?
Ich habe zwar keine Ahnung warum, hatte aber das Verhalten auch bemerkt. Denkst du, man sollte einen Eintrag im Bugtracker machen oder liegt es einfach daran, dass gerade die Umstellung im Gange ist?!theo hat geschrieben:Wo liegt der Unterschied zw. Fall2 und Fall3?
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection; Re: CreateDir nicht unicodefähig?
Den Bugtracker würde ich deswegen nicht bemühen. Ist ja alles noch frisch.Michl hat geschrieben:Ich habe zwar keine Ahnung warum, hatte aber das Verhalten auch bemerkt. Denkst du, man sollte einen Eintrag im Bugtracker machen oder liegt es einfach daran, dass gerade die Umstellung im Gange ist?!theo hat geschrieben:Wo liegt der Unterschied zw. Fall2 und Fall3?
Erst mal schauen, ob es eine Erklärung dafür gibt. marcov, mattias oder FPK tauchen hier ja auch ab und zu auf.
Re: CreateDir nicht unicodefähig?
Die Diskussion wir hier geführt:
http://forum.lazarus.freepascal.org/ind ... cseen.html
http://forum.lazarus.freepascal.org/ind ... cseen.html
-
marcov
- Beiträge: 1104
- Registriert: Di 5. Aug 2008, 09:37
- OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
- CPU-Target: 32/64,PPC(+64), ARM
- Wohnort: Eindhoven (Niederlande)
Re: CreateDir nicht unicodefähig?
Das ist normal. TStringlist ist ja definiert mit ansistring und nicht mit ansistring(cp_utf8).theo hat geschrieben:
Das geht aber noch immer nicht:Code: Alles auswählen
var sl:TStringList; begin sl:=TStringList.Create; sl.LoadFromFile('Z:\home\theo\ääü.txt');
Re: CreateDir nicht unicodefähig?
Leider geht die Diskussion nicht weiter bzw. kommt zu einem bestimmten Ende. Aber mal der Interesse wegen, theo, was ist den eigentlich deine Meinung dazu? Du hast dich doch schon intensivst damit beschäftigt?! Ich kann beide Thesen nachvollziehen: Klarheit vs. Kompatibilität bzw. z.B. unter Win UTF8 vs. Unicode bzw. immer umwandeln (wenn man mit Laz. was mit Strings macht) vs. zu wissen, wann umgewandelt werden muss.theo hat geschrieben:Die Diskussion wir hier geführt:
http://forum.lazarus.freepascal.org/ind ... cseen.html
Ich verstehe beide Lager, kann für mich aber nicht wirklich sagen, welche Argumente schwerer wiegen. Für mich, als Entwickler, ist ein Model, was auf allen Platformen gleich genutzt wird (auch wenn ich z.Zt. nur unter Win entwickle), schöner - auch habe ich mich mit dem UTF8 eigentlich recht gut angefreundet - um aber nicht zu weit von Delphi zu gelangen, um potentielle Entwickler nicht zu verschrecken, und um den (verdeckten) Konvertierungsaufwand im Rahmen zu halten, ist eine Unicodenutzung unter Win evtl. doch vorzuziehen?
Generell kann ich mit Allem leben, wenn es dann nicht alle Nase lang geändert wird, denn vermutlich haben beide Vorgehensweisen ihre Macken bzw. Besonderheiten.
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection; Re: CreateDir nicht unicodefähig?
Mir ist das eigentlich mittlerweile egal.Michl hat geschrieben:Aber mal der Interesse wegen, theo, was ist den eigentlich deine Meinung dazu?
Bin dankbar, wenn jemand irgendwas funktionierendes entscheidet, damit man weiß wie es weiter geht.
Alle kann man wahrscheinlich nicht glücklich machen.
Re: CreateDir nicht unicodefähig?
Jetzt geht die gleiche Schlammschlacht, die schon seit Jahren auf allen Kanälen läuft wieder im englischen Forum los:
http://forum.lazarus.freepascal.org/ind ... msg168686/
Ich kann es nicht mehr hören/lesen. Manchmal wünschte ich mir, die würden das physisch regeln mit einer Prügelei und einem Schiedsrichter.
Dann hätte man wenigstens eine Entscheidung.
http://forum.lazarus.freepascal.org/ind ... msg168686/
Ich kann es nicht mehr hören/lesen. Manchmal wünschte ich mir, die würden das physisch regeln mit einer Prügelei und einem Schiedsrichter.
Dann hätte man wenigstens eine Entscheidung.
-
Komoluna
- Beiträge: 565
- Registriert: So 26. Aug 2012, 09:03
- OS, Lazarus, FPC: Windows(10), Linux(Arch)
- CPU-Target: 64Bit
Re: CreateDir nicht unicodefähig?
leider/zum Glück geht das im Internet nicht...
(zum Glück, weil wegen Meinungsfreiheit)
MFG
Komoluna
(zum Glück, weil wegen Meinungsfreiheit)
MFG
Komoluna
Programmer: A device to convert coffee into software.
Rekursion: siehe Rekursion.
Rekursion: siehe Rekursion.