FindFirstFile und FindNextFile auf CDFS?



  • Hallo,
    Ich "durchsuche" mit FindFirstFile und FindNextFile ein Verzeichnis (diesen Vorgang muss ich, denke ich, nicht weiter erleutern...). Dann prüfe ich, ob es sich um eine Datei handelt (und nicht um ein Verzeichnis), und ob die FileExtention stimmt (.kdga). Die dabei "gefilterten" Dateien werden in eine TListBox ge"Add()"ed.

    Das ganze klappt auch wunderbar und ich habe die Dateien, die ich haben will, in der ListBox. Wenn ich das Programm jetzt aber auf CD Brenne liest er mir die Dateien nicht aus (die TListBox bleibt einfach leer).

    Ich konnte das bisher nur unter XP und 98 testen (unter XP wird das Programm kompiliert), aber wenn ich das Programm unter 98 von CD starte bleibt die ListBox leer. Kopiere ich das Programm dann aber von der CD auf dir Festplatte, funktioniert es wieder.
    Unter XP habe ich das Problem nicht, dort werden die Dateien auch von der CD problemlos gelesen.

    Woran kann das liegen (vielleicht an CDFS..?)



  • Arbeitest du eventuell mit relativen statt absoluten Pfaden?
    Wo liegen denn die aufzulistenden Dateien, auch auf der CD?



  • Also, die Dateien liegen in den Unterverzeichnissen
    \articles\topic_0
    \articles\topic_1
    \articles\topic_2
    im Projektordner.

    Der Pfad wird zur Laufzeit wie folgt ausgelesen:
    ExtractFileDir(Application->ExeName)+"\\articles\\topic_"+IntToStr(cnt)+"\*"
    Wobei cnt eine int-Variable ist, die halt nacheinander die einzelnen Topics der einzelnen Artikel auslesen soll (darum geht es).

    Statt Application->ExeName den ParamStr(0) zu nehmen ändert nichts.

    Auf der CD ist das Programm auf oberster Hierachieebene platziert:
    x:\Programme.exe
    Demzufolge sind die Dateien unter
    x:\articles\topic_0
    x:\articles\topic_1
    x:\articles\topic_2
    zu finden (wobei x natürlich immer der dynamische Laufwerksbuchstabe ist).
    Relativ ist das nicht wirklich... nur eben dynamisch; Aber wie gesagt: Unter XP funktioniert es!?



  • Reyx schrieb:

    Der Pfad wird zur Laufzeit wie folgt ausgelesen:
    ExtractFileDir(Application->ExeName)+"\\articles\\topic_"+IntToStr(cnt)+"\*"

    Hast du dir das Ergebnis mal zur Laufzeit ausgeben lassen?

    Auf dem Level, auf dem Anwendungsprogramme laufen, dürften Besonderheiten des Dateisystems jedenfalls keine Rolle spielen, schliesslich wird ja nicht direkt darauf zugegriffen sondern über die Routinen des Betriebssystems.


Log in to reply