Directory() liefert ? im Namen
Moderator: Moderatoren
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2517
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Directory() liefert ? im Namen
Hallo
die Funktion Directory() liefert zeitweise merkwürdige bezw. falsche Ergebnisse.
So werden z.B. ü als ? angezeigt. Damit lässt sich dann nicht mehr arbeiten. Insgesammt habe ich ca, 4500 solcher Fälle.
was läuft hier falsch?
Gruss Carlo
die Funktion Directory() liefert zeitweise merkwürdige bezw. falsche Ergebnisse.
So werden z.B. ü als ? angezeigt. Damit lässt sich dann nicht mehr arbeiten. Insgesammt habe ich ca, 4500 solcher Fälle.
was läuft hier falsch?
Gruss Carlo
- Dateianhänge
-
- a.jpg (39.19 KiB) 10734 mal betrachtet
Valar Morghulis
Gruss Carlo
Gruss Carlo
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2827
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 96 Mal
- Danksagung erhalten: 13 Mal
Re: Directory() liefert ? im Namen
Hallo, Carlo -
SET CHARSET ANSI?
SET CHARSET ANSI?
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Directory() liefert ? im Namen
Wende mal ConvToAnsiCP() oder ConvToOemCp() auf die Zeile mit den Dateinamen bzw. einen Wert daraus an. Eines von beiden (wahrscheinlich ConvToOemCp()) wird dazu führen, dass die Umlaute wieder erscheinen.
Herzlich,
Tom
Tom
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Directory() liefert ? im Namen
Es kann natürlich auch daran liegen, dass die Musik so schlecht ist.
Herzlich,
Tom
Tom
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Directory() liefert ? im Namen
Xppdbg im cmd fenster und ANSI exe können sich beißen. Was gibt msgbox aus. Directory liefert normal ANSI. Wenn die exe ANSI compiliert ist, dürfte keine Konvertierung nötig sein.
WelcHessen os und Dateisystem?
WelcHessen os und Dateisystem?
Gruß
Hubert
Hubert
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2517
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Directory() liefert ? im Namen
Hallo Tom
Gruss Carlo
Damit ändert sich nichts.Tom hat geschrieben:Wende mal ConvToAnsiCP() oder ConvToOemCp()
Dieser Interpret Ist auch gar nicht mein Stil ..... aber Computer sind Maschinen ohne Inteligenz die reagieren nicht darauf. Hoffe ich ....Tom hat geschrieben:Es kann natürlich auch daran liegen, dass die Musik so schlecht ist.
Gruss Carlo
Valar Morghulis
Gruss Carlo
Gruss Carlo
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2517
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Directory() liefert ? im Namen
Hallo Hubert
Im Windowsexplorer können die Dateien geklickt werden und spielen normal.
Gruss Carlo
Auch mit ?brandelh hat geschrieben: Was gibt msgbox aus
OS ist Windows 10 1703 verbunden über SMB3 mit einem FreeBSD 11 System mit Samba 4.6.2 und ZFS Dateisystem.brandelh hat geschrieben:WelcHessen os und Dateisystem?
Im Windowsexplorer können die Dateien geklickt werden und spielen normal.
Gruss Carlo
Valar Morghulis
Gruss Carlo
Gruss Carlo
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Directory() liefert ? im Namen
Und werden die Dateien im Explorer richtig angezeigt?
Auf jeden Fall sieht das nach Zeichensatz Fehler aus. Aber warum ?
Ein Fragezeichen im ANSI Namen bedeutet ein nicht ANSI Zeichen im Namen ...
Auf jeden Fall sieht das nach Zeichensatz Fehler aus. Aber warum ?
Ein Fragezeichen im ANSI Namen bedeutet ein nicht ANSI Zeichen im Namen ...
Gruß
Hubert
Hubert
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2517
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Directory() liefert ? im Namen
Hallo Hubert
ja das scheint es zu sein. FreeBSD und Windows verwenden UTF-8, xbase kann diese Zeichen nicht verwenden und ersetzt Sie durch die ?
Damit scheint jeder Zugriff aus Xbase auf die Dateien nicht mehr möglich.
Auch die Unicode API Funktion z.b. FindFirstFileW lassen sich unter XBase merkwürdigerweise nicht verwenden. Komisch.
Ich wollte mit den ...W API Funktionen die Files umbenennen geht aber nicht.
Gruss Carlo
ja das scheint es zu sein. FreeBSD und Windows verwenden UTF-8, xbase kann diese Zeichen nicht verwenden und ersetzt Sie durch die ?
Damit scheint jeder Zugriff aus Xbase auf die Dateien nicht mehr möglich.
Auch die Unicode API Funktion z.b. FindFirstFileW lassen sich unter XBase merkwürdigerweise nicht verwenden. Komisch.
Ich wollte mit den ...W API Funktionen die Files umbenennen geht aber nicht.
Gruss Carlo
Valar Morghulis
Gruss Carlo
Gruss Carlo
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2126
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 75 Mal
Re: Directory() liefert ? im Namen
Servus Carlo,
dann nimm halt cAnsitoutf8 bzw. cUtf8ToAnsi aus ot4xb.
dann nimm halt cAnsitoutf8 bzw. cUtf8ToAnsi aus ot4xb.
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2517
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Directory() liefert ? im Namen
Hallo Werner
allle Convertier Funktionen bringen nichts. Xbase hat ja den UTF-8 Charakter bereits durch "?" ersetzt. Da gibt es nichts mehr zu Konvertieren.
Ich habe aber einen neuen Ansatz gefunden der Erfolg verspricht. Es ist keine Lösung aber ein Workaround.
MIt der API FindFirstFile etc. kann auch der FilenameShort (MS.DOS Format) abgefragt werden.
Mit einer Funktione welche die Problematischen Charakter aus dem Long Namen entfernt kann dann die Datei einfach umbenannt werden.
Einfach so: frename( cFileNameShort, cFilenameLongModi ) und gut ist.
Gruss Carlo
allle Convertier Funktionen bringen nichts. Xbase hat ja den UTF-8 Charakter bereits durch "?" ersetzt. Da gibt es nichts mehr zu Konvertieren.
Ich habe aber einen neuen Ansatz gefunden der Erfolg verspricht. Es ist keine Lösung aber ein Workaround.
MIt der API FindFirstFile etc. kann auch der FilenameShort (MS.DOS Format) abgefragt werden.
Mit einer Funktione welche die Problematischen Charakter aus dem Long Namen entfernt kann dann die Datei einfach umbenannt werden.
Einfach so: frename( cFileNameShort, cFilenameLongModi ) und gut ist.
Gruss Carlo
Valar Morghulis
Gruss Carlo
Gruss Carlo
- Koverhage
- Der Entwickler von "Deep Thought"
- Beiträge: 2470
- Registriert: Fr, 23. Dez 2005 8:00
- Wohnort: Aalen
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Directory() liefert ? im Namen
Also das ? wird ja nur angezeigt, weil Xbase++ das Zeichen dahinter nicht kennt bzw. nicht anzeigen kann.
Ich habe die Probleme Anwendung OEM Windows ANSI.
Abhilfe: CharCode der Rückgabe z.B. cDir ersetzen. Hier ist es hilfreich sich die
for i := 1 to len(cDir)
? Asc(cDir)
next
anzeigen zu lassen.
Ist zwar einmalig ein wenig Aufwand, hier funktioniert es aber.
Ich habe die Probleme Anwendung OEM Windows ANSI.
Abhilfe: CharCode der Rückgabe z.B. cDir ersetzen. Hier ist es hilfreich sich die
for i := 1 to len(cDir)
? Asc(cDir)
next
anzeigen zu lassen.
Ist zwar einmalig ein wenig Aufwand, hier funktioniert es aber.
Gruß
Klaus
Klaus
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Directory() liefert ? im Namen
Directory() nutzt die Windows-API und darin die ANSI-Funktionen (Suffix A). Sie liefert keine UTF8-Codierung. Die Ursache liegt woanders. Eine Applikation, die ANSI verwendet und auf Directory() zugreift, bekommt Umlaute und andere Sonderzeichen in ANSI. Isso.
Herzlich,
Tom
Tom
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2126
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 75 Mal
Re: Directory() liefert ? im Namen
Aber das Filesystem ist Linux / ZFS und wird lt. Carlo über SMB an Windows durchgereicht.Tom hat geschrieben:Directory() nutzt die Windows-API und darin die ANSI-Funktionen (Suffix A). Sie liefert keine UTF8-Codierung. Die Ursache liegt woanders. Eine Applikation, die ANSI verwendet und auf Directory() zugreift, bekommt Umlaute und andere Sonderzeichen in ANSI. Isso.
Ein kleiner GUI-Test würde es zeigen: Keine Konvertierung in den Workbench-Einstellungen, set charset to ansi und ein XbpStatic sollten Licht ins Dunkel bringen.
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2517
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Directory() liefert ? im Namen
Hallo Tom
auch die API ....A Funktionen liefern bereits das "?" Zeichen anstelle von ü und einigen anderen Zeichen.
Die API der ...W Funktionen lassen sich nicht nutzen.
Der Umweg über den oben beschriebenen Workaround hilft.
Hallo Werner
Gruss Carlo
auch die API ....A Funktionen liefern bereits das "?" Zeichen anstelle von ü und einigen anderen Zeichen.
Die API der ...W Funktionen lassen sich nicht nutzen.
Der Umweg über den oben beschriebenen Workaround hilft.
Hallo Werner
NEIN NEIN NEIN, um himmelswillen nicht Linux sondern FreeBSD da liegen WELTEN dazwischen.Werner_Bayern hat geschrieben:Aber das Filesystem ist Linux / ZFS
Gruss Carlo
Valar Morghulis
Gruss Carlo
Gruss Carlo
- Koverhage
- Der Entwickler von "Deep Thought"
- Beiträge: 2470
- Registriert: Fr, 23. Dez 2005 8:00
- Wohnort: Aalen
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2126
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 75 Mal
Re: Directory() liefert ? im Namen
Alles was nicht Windows ist, ist Linux oder nix für unsramses hat geschrieben:NEIN NEIN NEIN, um himmelswillen nicht Linux sondern FreeBSD da liegen WELTEN dazwischen.
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>
- Jan
- Marvin
- Beiträge: 14658
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Directory() liefert ? im Namen
Linux ist doch wie FreeBSD auch nur ein Unix.
Jan
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2517
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Directory() liefert ? im Namen
Hallo Jan
In Wikipedia findest du sicher einige gute Artikel. Wenn du mal Power pur und Stabilität erleben willst wären einige Selbstversuche mit FreeBSD sehr zu empfehlen. Natürlich ausschliesslich im Textmodus!
Sicher mit Windows kann jeder, auch unbeholfene umgehen, jedoch finde ich Windows im Vergleich zu BSD wie frühe Steinzeit ......... (als Server natürlich, nicht als Arbeitsplatz)
Gruss Carlo
Nein Jan, dem ist nicht so. FreeBSD stammt von dem Ursprünglichen AT&T Unix ab, das kannst du mit Linux gar nicht vergleichen. Höchstens in der gemeinsamen POSIX Schnittstelle.Jan hat geschrieben:Linux ist doch wie FreeBSD auch nur ein Unix.
In Wikipedia findest du sicher einige gute Artikel. Wenn du mal Power pur und Stabilität erleben willst wären einige Selbstversuche mit FreeBSD sehr zu empfehlen. Natürlich ausschliesslich im Textmodus!
Sicher mit Windows kann jeder, auch unbeholfene umgehen, jedoch finde ich Windows im Vergleich zu BSD wie frühe Steinzeit ......... (als Server natürlich, nicht als Arbeitsplatz)
Gruss Carlo
Valar Morghulis
Gruss Carlo
Gruss Carlo
- Jan
- Marvin
- Beiträge: 14658
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Directory() liefert ? im Namen
Carlo,
doch. Schreibst Du ja sogar selber. Welches Unix die Basis ist, ist doch gleich. Linux und FreeBSD haben jeweils ihre eigenen Wurzeln in dem System.
Aber letztendlich ist das auch egal. Es geht ja hier nicht um den Stammbaum aller Unixderivate, sondern um ein Zeichensatzproblem.
Jan
doch. Schreibst Du ja sogar selber. Welches Unix die Basis ist, ist doch gleich. Linux und FreeBSD haben jeweils ihre eigenen Wurzeln in dem System.
Aber letztendlich ist das auch egal. Es geht ja hier nicht um den Stammbaum aller Unixderivate, sondern um ein Zeichensatzproblem.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2517
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Directory() liefert ? im Namen
Hallo Jan
in einem hast du recht. Es geht hier um den Zeichensatz.
Alle betroffenen Dateien kamen von einem Apple-Rechner auf den Server.
Es sind verschiedene Zeichen welche mit diretory() unter Xbase nicht korrekt sondern z.B. als ? ( ASC 63 ) oder auch als "-" aufgeführt werden.
File() liefert bei den betroffenen Files jeweils .F. so konnte ich die betreffenden Files einfach finden.
Inzwischen habe ich mit einem Tool die mehreren 1'000 Files wie oben beschrieben umbenannt.
Das Problem ist damit erkannt und vorerst beseitigt.
Schade dass Xbase nicht anscheinend nicht mit UTF-8 Zeichen / Filenamen umgehen kann.
Das scheint aber nicht nur ein Problem von Xbase zu sein denn auch die ANSI API Funktionen zeigen die betroffenen Filenamen nicht korrekt an.
Gruss Carlo
in einem hast du recht. Es geht hier um den Zeichensatz.
Alle betroffenen Dateien kamen von einem Apple-Rechner auf den Server.
Es sind verschiedene Zeichen welche mit diretory() unter Xbase nicht korrekt sondern z.B. als ? ( ASC 63 ) oder auch als "-" aufgeführt werden.
File() liefert bei den betroffenen Files jeweils .F. so konnte ich die betreffenden Files einfach finden.
Inzwischen habe ich mit einem Tool die mehreren 1'000 Files wie oben beschrieben umbenannt.
Das Problem ist damit erkannt und vorerst beseitigt.
Schade dass Xbase nicht anscheinend nicht mit UTF-8 Zeichen / Filenamen umgehen kann.
Das scheint aber nicht nur ein Problem von Xbase zu sein denn auch die ANSI API Funktionen zeigen die betroffenen Filenamen nicht korrekt an.
Gruss Carlo
Valar Morghulis
Gruss Carlo
Gruss Carlo
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Directory() liefert ? im Namen
Windows 7 oder 8 ff nutzen Unicode 16 oder 32 Bit. Keiner UTF-8 ... die Umsetzung nach Unicode funktioniert, aber Apple scheint hier ein Zeichen zu verwenden, das wie ein ü aussieht, aber eBen nicht von der API nach ANSI umgesetzt werden kann. Xbase++ selbst nutzt ausschließlich die ANSI API .
Gut dass es die kurzen Dateinamen gibt.
Gut dass es die kurzen Dateinamen gibt.
Gruß
Hubert
Hubert