Datei in einem Dialog auslesen

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
  • Mahlzeit.
    mal ne frage. kann mir einer vielleicht erklären, wie ich in einem dialog ne datei auslesen kann? ich habe gestern mal versucht was zu machen, aber der server schmiert mir immer ab wenn ich das ausführen will. ich zeig euch einfach mal am besten, was ich meine.
    ich hab das ganze mal zum testen mal in einem command erstellt. soll nachher woanders hin.
    aber so oder so, schmiert der server beim ausführen ab. was mach ich da falsch??


    ocmd:test(playerid,params[])
    {
    new File:BusiBank = fopen("Startup.txt",io_read);
    new read[128];
    fread(BusiBank,read);
    ShowPlayerDialog(playerid,DIALOG_BANLIST,DIALOG_STYLE_MSGBOX,"{33AA33}Bannliste",read,"Okay","");
    return 1;
    }


    und zwar möchte ich, dass in dem dialog der inhalt dieser startup.txt angezeigt wird.
    hab halt sowas noch nie gemacht, deswegen brauch ich mal eure hilfe, bitte.

  • ocmd:test(playerid,params[])
    {
    new File:BusiBank = fopen("Startup.txt",io_read);
    new read[128];
    fread(BusiBank,read); // Vor dem lesen prüfen ob BusiBank ( die Datei ) überhaupt geöffnet werden konnte. Sonst gib einen Fehlermeldung aus : "Datei nicht gefunden o.Ä".
    ShowPlayerDialog(playerid,DIALOG_BANLIST,DIALOG_STYLE_MSGBOX,"{33AA33}Bannliste",read,"Okay","");
    return 1;
    }
    fread ließt übrigens immer nur eine Zeile aus. Um alle Zeilen auszulesen wäre eine while-Schleife um fread angebracht.

  • Das mit dem \n ist ganz einfach:
    ocmd:test(playerid,params[])
    {
    new File:BusiBank = fopen("Startup.txt",io_read);
    new read[128],str[256];//Größen sollten je nach Inhalt der TXT angepasst werden
    while(fread(BusiBank,read))
    {
    format(str,sizeof str, "%s\n%s",str,read);//Mit jeder neu gelesenen Zeile adden wir einfach manuel ein \n
    }
    ShowPlayerDialog(playerid,DIALOG_BANLIST,DIALOG_STYLE_MSGBOX,"{33AA33}Bannliste",str,"Okay","");
    return 1;
    }
    //edit, es sollte dann auch str und nicht read ausgegeben werden...

  • Goldkiller ne frage dazu
    ein \n kann ja nicht ausgelesen werden
    wie macht man dann ein Zeilenumbruch?


    :huh:
    Hab ich doch geschrieben.Ein Zeilenumbruch kann man nicht auslesen,ist ja eine neue Zeile.Daher:

    Zitat

    fread ließt übrigens immer nur eine Zeile aus. Um alle Zeilen auszulesen wäre eine while-Schleife um fread angebracht.


    Ob du es jetzt wieder hinzufügst,dir überlassen.


    ja soweit klar. aber könntest du mir vielleicdht ein kleines beispiel geben? ich weiss selbermachen, macht schlau. aber ich saß gestern den ganzen tag dran und war abends noch immer nicht schlauer. wäre echt dufte von dir. :rolleyes:


    Hast du denn wenigstens versucht es umzusetzen.Die Abfrage die ich als Kommentar geschrieben habe dürfte ja kein Problem sein.
    Wenn du sowieso schon vom Wiki kopierst,dann mach es richtig und schau wie dort while benutzt wird ;).
    http://wiki.sa-mp.com/wiki/Fread


  • new File:BusiBank = fopen("Startup.txt",io_read);
    new read[128] , Output[256];
    while ( fread ( BusiBank , read ) ) {
    format(Output,256,"%s\n%s",Output,read);
    }
    ShowPlayerDialog(playerid,DIALOG_BANLIST,DIALOG_STYLE_MSGBOX,"{33AA33}Bannliste",Output,"Okay","");


    Edit: Okay, das war jetzt etwas kontraproduktiv zu Goldkillers Beitrag...

    PAWNit gratis nutzen?
    Geschenkcode: 2017VQXPKB8V3KA

    Hier könnte Ihre Werbung stehen.

  • Das sowieso ;). Lösungen posten bringt hier keinem was.
    Übrigens wäre mit eurer Formatierung ( %s\n%s ) erst immer eine Zeile frei. Man nimmt ( bzw Ich ) immer:
    format( ... , ... , "%s%s\n", output, zeile );
    output ist Anfangs sowieso leer,daher egal.Dann kommt zeile und dann erst ein Zeilenumbruch.