Per While-Schleife Dateien ermitteln?

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo liebe Com,


    Nach etwas längerer Zeit melde ich mich endlich auch mal wieder :)


    Ich hab nämlich ein Problem:
    Ich hab ein Haussystem gescriptet, jedoch trenne ich die Häuser per Files und habe nicht alle in einer File (finde ich 1000x einfacher).
    Und ich kann die Files ja mit einer for-Schleife auswählen, jedoch nur solange diese mit 1.txt, 2.txt, ... benannt sind.
    Wenn ich nun aber ein Haus ingame lösche, fehlt ja eins und dann ist es logisch das es Buggt.
    Nun ist meine Frage: Kann ich das irgendwie umgehen? Ich dachte da irgendwie an eine Funktion die ausliest wieviele Dateien in dem Ordner sind und diese unabhängig ihres Namens nacheinander ausließt. Ich hoffe ihr könnt mir helfen.
    Danke im Vorraus!


    D4rk :D


  • new i = 0;
    do {
    i++;
    format(path, 68, "/reports/%i.ini", i);
    }
    while(dini_Exists(path));
    dini_Create(path);
    // ... Weiterführend
    So habe ich das bei meinem dynamicReport-System gelöst. Sollte das sein was du willst.
    Ggf. noch an dein Dateisystem anpassen.


    Mit freundl. Grüßen
    Padarom

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger

  • Das scheint leider wieder das gleiche zu sein. Er wählt die Dateien mit ihrem Namen aus. (1.txt, 2.txt, usw.).
    Ich würde gerne das man den Dateien einen beliebigen Namen geben kann.


    Das Problem ist nämlich wenn ich eine Datei namens 1.txt habe und eine andere Namens 3.txt dann lädt er nur die 1.txt weil es keine
    2.txt gibt...

  • Eine möglichkeit gibt es, eine While Schleife die solange läuft bis er sagen wir 20 mal hintereinander ein File nicht gefunden hat. Ist jedoch unellegant, einfacher ist ein weiterer File, in dem du schreibst welche ids vorhanden sind.

  • Eine möglichkeit gibt es, eine While Schleife die solange läuft bis er sagen wir 20 mal hintereinander ein File nicht gefunden hat.

    Ja das wäre eigentlich eine gute Idee, jedoch hab ich grad garkeine Idee wie ich das verändern soll...



    einfacher ist ein weiterer File, in dem du schreibst welche ids vorhanden sind.

    Das wäre ebenfalls eine gute Idee, bloß wenn ich InGame dann ein Haus lösche weiß ich wieder nicht wie ich das aus der Datei nehmen soll...

  • Ich glaube er möchte es so das er ein Haus z.B. Rofl (.ini) nennt und eins Lol und das will er z.B. auslesen,
    ich glaube das wäre unmöglich(?).
    Also in PHP wüsste ich wies geht :X


    dini_IntSet(file, hausid, 0)
    ganz einfach ;) (hausid ist eine variable die z.B Haus3 enthält ;))

  • Also eigentlich wärs auch Ok wenn die Dateien Nummern haben, bloß eben wenn ich nun Ingame 3 Häuser erstelle:


    1.ini, 2.ini, 3.ini


    und dann lösche ich das 2te wieder. Dann wenn ich Server Restarte lädt er logischer nur 1.ini und nicht eben die 3.ini.


    Wie Sniper schon sagte gibts die Möglichkeit 20 Dateien plus überprüfen zu lassen bloß ist das eben wie er auch schon sagte nicht sehr elegant.
    Wenn möglich würde ich das gerne etwas Ressourcensparender machen. hat einer eine Idee?


    Falls nicht muss ich es mit Snipers Idee umsetzen...

  • Geht es dir jetzt darum, dass du die Häuser beim Serverstart lädst (und dabei zwischendrin eine ID frei ist), oder darum, dass du Häuser speichern willst, und das dann jeweils in die erste freie ID machst?
    Bei Fall 1: Mach einfach eine Schleife, die von 0 bis zur maximalen Hausanzahl läuft. Darin überprüfst du, ob die entsprechende .ini-Datei existiert. Wenn ja, lädst du die Daten, ansonsten eben nicht. Dabei ist es egal ob es bei 1 aufhört und erst bei 15 weitergeht oder von 1-50 alles existiert.
    Bei Fall 2: Nutze meinen Code. i entspricht dann der ersten "nicht gespeicherten" ID.
    Wenn keins von beiden zutrifft, erläutere mir bitte ein wenig genauer, was du denn haben willst. Dann hab ich dich nämlich missverstanden.

    Ich bin
    .. seit etwa 2007 in der Webentwicklung tätig, seit 2013 professionell
    .. Erfahrener Entwickler in PHP, Swift, Javascript, Typescript und Ruby. Zusätzlich habe ich Erfahrung in Python, Java, C#, C++, Prolog und einigen esoterischen Programmiersprachen
    .. Luftfahrtenthusiast und Segelflieger