file_find_first Filterfunktion

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

  • file_find_first Filterfunktion

    Hallo,

    bei dem Befehl get_open_filename, gibt es ja einen Filter, den man "erweitern" kann möchte ich mal sagen. Sprich man kann auswhlen, ob man bspw. nur Textdateien oder nur Konfigurationsdateien sehen möchte.
    Mich würde mal interessieren, ob es etwas Ähnliches auch für die file_find_first Funktion gibt. Dort kann man ja zumindest einen Filter haben, aber es wäre ziemlich blöd wenn in einem Ordner zum Beispiel mehrere 100 Dateien sind, wo viele unterschiedliche Dateitypen vertreten sind und man aber nur bestimmte Dateitypen sucht.

    Edit: *Kleine Information* Ich möchte das ganze mit FTP verwirklichen!

    Gruß
    icqgamer

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von icqgamer ()

  • Du musst einfach nur zwischen den einzelnen namen ein ; bzw. | machen als z.B.

    GML-Quellcode

    1. ​file = get_open_filename(fa_archive,"Video|*.wmv;*.mp4|Audio|*.mp3;*.wmv")//usw

    ich bin mir jetzt nicht ganz sicher ob man da hinter erst | und dann nach audio | machen muss...
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Benutzt du eine Dll oder ähnliches?
    Gib mal ein Link zu der oder zeig mal die Skripte.
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Ja, ich verwende die FTP.dll

    Hier ist einmal der Code, welcher die Dateien auflistet, die in dem Ordner (global.dir) sind.
    Wie du sehen kannst, habe ich momentan den Filter mit global.filter definiert, bis ich weiß, ob es anders auch möglich ist (also mit mehreren Filtern).

    GML-Quellcode

    1. if string(global.dir) == "" { exit; }
    2. ftp_connect(global.server,global.user,global.pass);
    3. ftp_set_current_directory("www/"+string(global.dir));
    4. readbegin = ftp_file_find_first(string(global.filter), fa_readonly);
    5. ins = instance_create(xx,yy, obj_read); ins.givenread = readbegin; yy+=32;
    6. read[i] = ftp_file_find_next();
    7. ins = instance_create(xx,yy, obj_read); ins.givenread = read[i]; yy+=32;
    8. while(string(read[i])!="")
    9. {
    10. i+=1;
    11. read[i] = ftp_file_find_next();
    12. if string(read[i])!=""
    13. {
    14. ins = instance_create(xx,yy, obj_read); ins.givenread = read[i]; yy+=32;
    15. }
    16. }
    17. ftp_file_find_close();
    18. ftp_disconnect();
    Alles anzeigen
  • :D die benutze ich auch.
    Also kann man jetzt schlecht sagen, ich habe die dll nicht gemacht eigentlich müsste man sich dann an den Programmierer wenden
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Hm.. ja, ich glaube auch. Aber ich denke nicht, dass da nocheinmal etwas aktuallisiert wird, die ist ja schon ganz alter Schinken.
    Ich denke ich werde es dann einfach bei dem einen Filter lassen.

    Um nocheinmal grafisch darzustellen, was mein Vorhaben war (vielleicht kennt ja doch noch jemand eine Lösung):
    --- Wer das Problem schon vorher verstanden hat, kann sich diesen Teil hier jetzt sparen. Das ist nur für Leute, die mich nicht richtig verstanden könnten. q-: ---

    Spoiler anzeigen

    Hier soll man den Ordner auf dem Webspace wählen, indem man auf "Directory" klickt und den Ordnernamen dort eingibt. (Die Webspace Daten kann man in einer Ini-Datei ändern, ich habe das bei mir so gemacht, dass das Programm automatisch zu meinem Webspace verbindet, wenn alle Felder - also server, user und password - leer gelassen werden.)
    Wenn man die Dateien in dem Ordner anzeigen lassen will, drückt man auf Connect. Wenn dort zu viele Dateien sind und diese nichtmehr in den kleinen Raum von Game Maker passen, wird die Raumgröße angepasst und man kann hoch- und runterscrollen (View ist festgelegt). Unter den Optionen aus dem Drag & Drop Menü kann man einstellen, ob man die Datei downloaden möchte, wenn man auf einen Namen drückt (siehe Bild 2). Außerdem kann man dort einstellen, wo die Datei runtergeladen werden soll also in welchem Verzeichnis die landen soll.

    Bild 1:


    Bild 2:


    Nun zum eigentlichen Teil meines Anliegens:
    Wie man ja auf den beiden Bildern unschwer erkennen kann, gibt es verschiedene Dateitypen (.txt, .dat, .exe). Ich kann - wenn ich den Filter (auch links im Drag & Drop Menü) verwende auf maximal eine Dateiendung filtern. Heißt, wenn ich *.txt als Wildcard angebe, werden nur die Textdateien angezeigt. Was nicht möglich ist: *.txt un d *.dat (So dass die Anwendungsdatei quasi ausgeblendet wird). Vielleicht kann der ein oder andere mir jetzt mehr folgen als vorher.
    Natürlich ist das momentan noch sehr übersichtlich, da es momentan nur zu Testzwecken dient. Aber wie man an dem Ordner erkennen kann, sollen dort Dateien für die Schule (bzw. schulische Ausschildung) rein, da in meiner Informatikerklasse nicht jeder bestimmte Platformen benutzt, wo wir uns einfach Dateien senden können und über Facebook soweit ich weiß auch nur bestimmte Dateiformate erlaubt sind.


    Liebe Grüße
    icqgamer
  • Ok ich mach dir mal was, (ungetestet)

    GML-Quellcode

    1. filter_a = 2; //anzahl der Filter
    2. filter[0] = ;.mp3//Filter ohne *
    3. filter[1] = .mp4;
    4. file[0] = ftp_file_find_first("*.*" ;fa_readonly )
    5. if file[0] == ""
    6. exit;
    7. for (i = 1; file[i-1] != ; i += 1)
    8. file[i] =ftp_file_find_next();
    9. for (i = 0; file[i] != ; i += 1)
    10. {
    11. for (ii = 0; ii < filter_a-1; ii += 1)
    12. {
    13. if filename_ext(file[i]) == filter[ii]
    14. {
    15. instance_create(xx,i*32+yy, obj_read);
    16. ins.givenread=file[i];
    17. }
    18. }
    Alles anzeigen


    Edit: Das Bearbeitungsprogramm ist echt ***** ich musste gerade diese blöde <p> <nsp..> rausfischen als ich abgesendet habe
    Deswegen formatier ich das jetzt nicht nochmal übersichtilich sorry
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von husi012 ()