ExamineDirectory() hat Problem mit Umlauten

In dieser Linux-Ecke dürfen nur Themen rund um Linux geschrieben werden.
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
Waldixxl
Beiträge: 108
Registriert: 27.12.2005 17:35
Wohnort: Linz, Österreich

ExamineDirectory() hat Problem mit Umlauten

Beitrag 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]
tmjuk
Beiträge: 380
Registriert: 30.06.2006 00:10
Wohnort: Backaryd, Schweden

Beitrag von tmjuk »

Hast du in Compiler-Optionen bei UniCode ein Häkchen gemacht?
Also bei mir läuft's.

Torsten
PB 4.51 32 Windows Vista, 32 XP, PB 4.51 32 Ubuntu 10.10
Benutzeravatar
Waldixxl
Beiträge: 108
Registriert: 27.12.2005 17:35
Wohnort: Linz, Österreich

Beitrag 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?
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Beitrag 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?
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Benutzeravatar
Waldixxl
Beiträge: 108
Registriert: 27.12.2005 17:35
Wohnort: Linz, Österreich

Beitrag von Waldixxl »

Es gibt keine Fehlermeldung das Programm bleibt einfach hängen.
Kann nur mehr gekillt werden.
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Beitrag 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.
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Benutzeravatar
Waldixxl
Beiträge: 108
Registriert: 27.12.2005 17:35
Wohnort: Linz, Österreich

Beitrag 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!
tmjuk
Beiträge: 380
Registriert: 30.06.2006 00:10
Wohnort: Backaryd, Schweden

Beitrag 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
PB 4.51 32 Windows Vista, 32 XP, PB 4.51 32 Ubuntu 10.10
Benutzeravatar
Waldixxl
Beiträge: 108
Registriert: 27.12.2005 17:35
Wohnort: Linz, Österreich

Beitrag 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.
tmjuk
Beiträge: 380
Registriert: 30.06.2006 00:10
Wohnort: Backaryd, Schweden

Beitrag 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
PB 4.51 32 Windows Vista, 32 XP, PB 4.51 32 Ubuntu 10.10
Antworten