Geister-Ordner bei Ordnersuche xD

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Geister-Ordner bei Ordnersuche xD

    Hallo

    Bin dabei in meinem Spiel ein System einzubauen damit der Spieler durch Ordner suchen kann.
    Hab dafür dieses Skript geschrieben:
    Argument0 ist der Pfad und argument1 die Nummer der Stelle im Array wo die Ordner rein sollen.

    GML-Quellcode

    1. var a, hold;
    2. a = argument1;
    3. hold = file_find_first(argument0+'*.',fa_directory);
    4. if hold = "" then {file_find_close(); return(a)}
    5. else
    6. {
    7. a += 1;
    8. files[a,0] = hold;
    9. files[a,1] = filename_name(files[a,0]);
    10. files[a,2] = 1;
    11. }
    12. while(1)
    13. {
    14. hold = file_find_next();
    15. if hold = "" then {file_find_close(); return(a)};
    16. a += 1;
    17. files[a,0] = hold;
    18. files[a,1] = filename_name(files[a,0]);
    19. files[a,2] = 1;
    20. }
    Alles anzeigen


    In dem array soll die sache folgendermaßen aussehen:
    in [a,0] der ganze Pfad.
    in [a,1] nur der name.
    Und in [a,2] eine 1 damit später beim zeichnen zwischen Ordnern und Dateien unterschieden werden kann.

    Jetzt tritt der bug auf: wenn ich damit Ordner suche, erscheinen immer 2 ordner mehr nie diemals existiert haben.
    Ihr name is einmal nur ein Punkt und beim anderen 2 Punkte als '.' und '..' .

    Hab dann versucht einfach die ersten 2 gefundenen ordner zu ignorieren,
    das funktioniert ganz gut in allen Unterordnern.
    Sobald ich jedoch auf die Hauptfestplatte komme. Also z.b. auf C:\
    Tritt dieser Bug nicht mehr auf und mein modifizierter Skript ignoriert zwei existierende Ordner...

    Weis einer worann das ganze liegen könnte?
    Wäre sehr dankbar für Antworten :)

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Das ist mehr oder weniger normal in Windows und ein Überbleibsel der guten alten DOS Zeiten.

    Nachvollziehen kannst du das jederzeit, in dem du in einer Kommandozeile dir eingibst. Auch dort gibts in jedem Ordner . und ...

    . ist der aktuelle Ordner, .. der darüber.

    Wurde und wird manchmal für Programme benötigt, die per Kommandozeile Ordnerangaben erwarten. Mit .. kann man immer eine Verzeichnisebene höher springen. Nehmen wir an du bist im Ordner C:\1\2\3 und startest dort ein Programm. Mit dem Parameter ..\..\ würde dem Programm das Verzeichnis 1 als Parameter übergeben. Mit ..\..\test.exe würdest du ein Programm test.exe aus dem Ordner 1 starten, das aber fortan im Ordner 1\2\3 arbeiten wird.

    . ist seltener. Ich kenne persönlich nur ein Programm, das sowas braucht. Da muss zwingend immer ein Verzeichnis als Parameter angegeben werden. Will man stets das aktuelle Verzeichnis verwenden, so gibt man .\ an.

    Prüfe beim Auffüllen deines Arrays, ob der Name . oder .. lautet und überspringe das einfach, wenn du es nicht haben möchtest.

    Das es das direkt im Root nicht gibt ist auch logisch, da du in Windows nicht höher steigen kannst als auf das Root Verzeichnis einer Partition, es gibt einfach kein "darüber".
  • Das sind keine richtigen Ordner
    die 2 Punkte stehen für den vorherigen ordner und der einzelne ist er selber
    vllt kennst du winrar da ist in jedem archiv der erste ordner der mit den 2 Punkten durch den gelangt man in der vorherigen ordner
    bsp:
    C:/Ordner1/Ordner2/../
    ist das selbe wie
    c:/Ordner1/

    Oder es war anderes rum also den einzelnen für das unterverzeichnis

    Hoffe ich konnte helfen :)
    EDIT:
    Zu langsam ^^

  • Oh, ok.
    na toll und ich hab mir die Mühe gemacht ein eigenes System zum wechseln der Ordner-ebene zu machen.
    Naja dann muss ich wohl so umcoden das er diese 2 Ordner nur ignoriert wenn wenn man nicht grad im root ist.

    Aber vielen dank für die Hilfe :)

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Benutzer online 2

    2 Besucher