Heavy
31-08-2004, 16:57
Hallo Allerseits!
Ich mach nun doch nochmal einen Extra-Thread für mein Problem auf, weil ich einfach nicht weiterkomme.
Ich programmiere eine Perl Anwendung mit ActivePerl-5.8.4.810-MSWin32-x86, die unter Windows 2000 laufen soll. Die Anwendung soll Dateien und zusätzliche Informationen wie z.B. die Dateigröße oder einen CRC-Wert mit Hilfe einer Datenbank verwalten. Die GUI erstelle ich mit Perl Tk.
Mit Hilfe der Dialogbox:
$path=$inpw->getOpenFile();
ermittle ich einen Dateinamen. Für diese Datei will ich dann als erstes die Dateigröße ermitteln. Aber sowohl die Ansätze:
$stats=stat("$path");
$filesize=$stats->size;
als auch
$hFile=createFile("$path","r");
$filesize=SetFilePointer($hFile,0,0,FILE_END);
CloseHandle($hFile);
schlagen bei Dateinamen mit Umlauten fehl. Leerzeichen stellen kein Problem dar. Auch die Ersetzung der Umlaute im Dateinamen mittels
$path =~ s/ä/chr(132)/ge;
usw.
führt leider nicht zum Erfolg. In der Fehlermeldung taucht dann zwar der korrekte Dateiname auf, aber die Datei wird nicht gefunden. Die Dateien mit den Umlauten herauszufiltern und in ein Extra-Verzeichnis zu verschieben, klappt dagegen.
move("$path","$workdir\\umlaute");
Ich habe nun schon alles was mir eingefallen ist probiert und bin im moment ziemlich ratlos. Natürlich gibt es noch die Möglicheit die Dateien umzubenennen, aber das sehe ich als letzten Ausweg an. Für jegliche Hinweise und Ideen zu diesem Problem wäre ich sehr dankbar.
Heavy
Ich mach nun doch nochmal einen Extra-Thread für mein Problem auf, weil ich einfach nicht weiterkomme.
Ich programmiere eine Perl Anwendung mit ActivePerl-5.8.4.810-MSWin32-x86, die unter Windows 2000 laufen soll. Die Anwendung soll Dateien und zusätzliche Informationen wie z.B. die Dateigröße oder einen CRC-Wert mit Hilfe einer Datenbank verwalten. Die GUI erstelle ich mit Perl Tk.
Mit Hilfe der Dialogbox:
$path=$inpw->getOpenFile();
ermittle ich einen Dateinamen. Für diese Datei will ich dann als erstes die Dateigröße ermitteln. Aber sowohl die Ansätze:
$stats=stat("$path");
$filesize=$stats->size;
als auch
$hFile=createFile("$path","r");
$filesize=SetFilePointer($hFile,0,0,FILE_END);
CloseHandle($hFile);
schlagen bei Dateinamen mit Umlauten fehl. Leerzeichen stellen kein Problem dar. Auch die Ersetzung der Umlaute im Dateinamen mittels
$path =~ s/ä/chr(132)/ge;
usw.
führt leider nicht zum Erfolg. In der Fehlermeldung taucht dann zwar der korrekte Dateiname auf, aber die Datei wird nicht gefunden. Die Dateien mit den Umlauten herauszufiltern und in ein Extra-Verzeichnis zu verschieben, klappt dagegen.
move("$path","$workdir\\umlaute");
Ich habe nun schon alles was mir eingefallen ist probiert und bin im moment ziemlich ratlos. Natürlich gibt es noch die Möglicheit die Dateien umzubenennen, aber das sehe ich als letzten Ausweg an. Für jegliche Hinweise und Ideen zu diesem Problem wäre ich sehr dankbar.
Heavy