Schauen ob Datei im Web existiert

  • GM 8

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

  • Schauen ob Datei im Web existiert

    Hey :)
    Ich versuche gerade mit der netread.dll nachzuschauen, ob es eine Datei auf einem Webserver gibt. Das ist mein Code:

    GML-Quellcode

    1. myfile = netread("http://vollgeheimundso.de/Datei.txt",0)if (!file_exists(myfile)) {
    2. show_message("Ja hier und da so nä :)") }

    Aber es geht nicht :(
    Kann mir da jemand helfen?

    DigitalClark
  • Ich kenne die netthread DLL zwar nicht, würde unmittelbar aber tippen, dass file_exists false wieder gibt, weil es ja ein Weilchen dauert, bis die Datei runter geladen ist.
    Zwischen dem Auftrag, die Datei runterzuladen, und dem check, ob die Datei jetzt auf dem Computer liegt, vergeht bei deiner Konstruktion nicht mal eine Millisekunde.

    Du musst folglich erst die Datei anfordern, und dann konstant checken, am besten jeden Step, ob die Datei jetzt endlich da ist.
    Dies gilt natürlich nur für den Fall, dass die DLL Threads nutzt. Da diese aber schon bald 5 Jahre alt ist und alle Downloads mittlerweile Tot sind, kann ich das nicht untersuchen.


    MfG SDX
  • Krasser Button!

    Ich habs mir mal angeschaut. Die NetReadDLL ist nicht multithreaded, heißt, dass das Spiel einfriert, wenn du was runter lädst.
    Dadurch hält meine obige Theorie nimmer.

    Dein Fehler ist auch ein ganz anderer. Die NetRead Funktion gibt nicht den Pfad zu einer Datei wieder, den du checken kannst, oder die Datei öffnen kannst. Die Funktion gibt den Inhalt der Datei als String wieder.

    Was du also suchst ist etwas in diesem Stil:

    GML-Quellcode

    1. str = netread("http://vollgeheimundso.de/Datei.txt",0);
    2. if (str) {
    3. show_message(str);
    4. } else {
    5. show_message("Konnte nicht mit Webserver verbinden");
    6. }


    MfG SDX
  • Das ist korrekt, das ist mir auch durch die Lappen gegangen. Ja, die 0 beschreibt die Menge an Bytes, die gelesen werden soll. Wenn du sicher sein willst, dass alles mitkommt, haue einen hohen Wert rein. Es ist dennoch empfehlenswert sich Gedanken zu machen, und einen Wert zu wählen, der passt.

    Den Fehler kann ich mir btw nicht erklären, würde aber auf einen Fehler in den vorherigen Zeilen tippen.

    MfG SDX
  • SDX schrieb:

    Den Fehler kann ich mir btw nicht erklären, würde aber auf einen Fehler in den vorherigen Zeilen tippen.

    Das liegt daran, dass man einen String so nicht überprüfen kann, da der GM bei dieser Schreibweise auf true oder false überprüft, was bei einem String logischerweise nicht geht. Man muss ihn immer mit etwas vergleichen, in diesem Fall mit einem leeren String:

    GML-Quellcode

    1. if (str != "")
    2. {
    3. usw
    4. }

    © 2008 by Teamgrill Productions