Seite 1 von 2

ExamineDirectory() hat Problem mit Umlauten

Verfasst: 25.09.2008 17:11
von Waldixxl
Hallo Zusammen (Ich hoffe jetzt ist es das richtige Forum)
Habe schon wieder ein neues Problem
Habe ein kleines Programm geschieben in den ich ein Verzeichnis nach Dateien durchsuche.

Code: Alles auswählen

Verzeichnis$=PathRequester("Verzeichnis Wählen:",Verzeichnis$)
 SetGadgetText(#String_0,Verzeichnis$)
 If Verzeichnis$<>""
   If 0,Verzeichnis$,Wilgat$)
     While NextDirectoryEntry(0)
     If DirectoryEntryType(0) = #PB_DirectoryEntry_File
       AddGadgetItem(#DateiListe,-1,DirectoryEntryName(0))
     EndIf
   Wend
   FinishDirectory(0)
  EndIf
 EndIf
So und jetzt zum Fehler:. Der Code läuft einwandfrei bis ich einen Verzeichnisnamen mit einem Umlaut wähle (ö). Durch Schrittweises Ausführen des Code konnt ich feststellen
das ExamineDirectory(0,Verzeichnis$,Wilgat$)=0 sodas das Verzeichnis nicht gelesen wird.
System Ubuntu 7.10
Purebasic 4.01[/code]

Verfasst: 25.09.2008 21:32
von tmjuk
Hast du in Compiler-Optionen bei UniCode ein Häkchen gemacht?
Also bei mir läuft's.

Torsten

Verfasst: 26.09.2008 06:22
von Waldixxl
Habe ich auch schon getestet führt aber beim ausführen der Zeile

Code: Alles auswählen

If   ExamineDirectory(0,Verzeichnis$,Wilgat$) 
zu einem Programmabsturz.
mit welcher Version hat Du es versucht?

Verfasst: 26.09.2008 07:49
von cxAlex
Waldixxl hat geschrieben:Habe ich auch schon getestet führt aber beim ausführen der Zeile

Code: Alles auswählen

If   ExamineDirectory(0,Verzeichnis$,Wilgat$) 
zu einem Programmabsturz.
mit welcher Version hat Du es versucht?
Wie genau lautet die Fehlermeldung?

Verfasst: 26.09.2008 17:22
von Waldixxl
Es gibt keine Fehlermeldung das Programm bleibt einfach hängen.
Kann nur mehr gekillt werden.

Verfasst: 26.09.2008 17:23
von cxAlex
Was machst du vor dem Examine? Wenn du am Speicher rumspielst kanns sein das du aus versehen an der Stelle den Speicher veränderst und es deswegen abstürzt.

Verfasst: 26.09.2008 17:46
von Waldixxl
Ich spiele nicht im Speicher.
Bin ein Anfänger und verwenden nur, für Anfänger, "normale Befehle"
Habe in der Zwischenzeit mit der Version 4.20 eine ausführbare Programm erstellt,
da diese Version bei mir mit dem Debugger nicht läuft (Siehe Mucki0501),
und siehe da, der Code läuft!

Verfasst: 26.09.2008 22:22
von tmjuk
Hallo,

also ich habe mir diesen Code gebastelt:

Code: Alles auswählen

Verzeichnis$=PathRequester("Verzeichnis Wählen:",Verzeichnis$)
 ;SetGadgetText(#String_0,Verzeichnis$)
 If Verzeichnis$<>""
   If ExamineDirectory(0,Verzeichnis$,Wilgat$)
     While NextDirectoryEntry(0)
     If DirectoryEntryType(0) = #PB_DirectoryEntry_File
       ;AddGadgetItem(#DateiListe,-1,DirectoryEntryName(0))
       Debug DirectoryEntryName(0)
     EndIf
   Wend
   FinishDirectory(0)
  EndIf
 EndIf 
Damit funktioniert es nur, wenn UniCode gesetzt ist.
Was sind jetzt die Unterschiede zu deinem Code?
Was steht denn zum Beispiel in "Wilgat$" und so weiter und so fort.

Version bei mir 4.20

Torsten

Verfasst: 27.09.2008 11:52
von Waldixxl
Hallo tmjuk
Auch ich kann keinen Unterschiede zwischen Deinem und meinem Code finden!
In "Wilgat$" steht "*.*" oder "*.jpg" je nach den was ich suche.
Ergebnisse bis jetzt:
Version 4.01 ohne gesetzten UniCode: Programm läuft jedoch es kennt die Umlaute nicht!
Version 4.01 mit gesetzten UniCode: Programm stürzt ohne einer Fehlermeldung ab!
Version 4.20 mit gesetzten UniCode: Programm läuft problemlos und kennt auch die Umlaute.
Leider kann ich nicht mit der Version 4.20 das Programm schreiben, den wenn ich es starte möchte kommt die Fehlermeldung
Linker ERROR "gcc: /tmp/purebasic_compilation0.out: No such file or directory. " (ist das gleiche was Mucki0501 auch hat(e))
Dieses Problem konnte ich bis jetzt leider noch nicht lösen.
Aber ein ausführbares Programm kann ich mit der Version 4.20 erstellen.

Es scheint das der Fehler mit der Version 4.20 behoben worden ist.

Verfasst: 27.09.2008 13:53
von tmjuk
Hm.

Bin ich jetzt überfragt. Sieht ja so aus, als ob eine Datei nicht gefunden wird.

Versuch doch mal in der IDE unter Einstellungen-Editor-Standards
den Punkt "Temporäres Executable im Quellcodeverzeichnis" zu aktivieren.


Was passiert dann?

Torsten