dini_Get Zeilenumbruch wird nicht erkannt

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
  • Hi ich habe ein Problem, ich lasse den Text eines Dialoges über dini_Get auslesen.
    In meiner Dini steht der Inhalt zum Beispiel so: Text=Leider wird dieser\nZeilenumbruch nicht beachtet.
    Der Text wird InGame im Dialog wiedergegeben, aber ohne das der Zeilenumbruch erkannt wird, also so wird er wiedergegeben: Leider wird dieser\nZeilenumbruch nicht beachtet.


    Ich habe bereits diese zwei Varianten ausprobiert, leider wurde der Zeilenumbruch bei keiner erkannt.



    ShowPlayerDialog(playerid,DIALOG_INFO,DIALOG_STYLE_MSGBOX,dini_Get(pfad,"Titel"),dini_Get(pfad,"Text"),"Schließen","");


    ODER


    format(string,sizeof(string),"%s",dini_Get(pfad,"Text"));
    ShowPlayerDialog(playerid,DIALOG_INFO,DIALOG_STYLE_MSGBOX,dini_Get(pfad,"Titel"),string,"Schließen","");


    Woran kann das liegen, bzw. was habe ich falsch gemacht ?

    GELD verdienen durch Websites angucken ? (Klick hier oder den Banner)


  • Nein, \r\n funktioniert leider auch nicht.
    Aber eigentl. müsste es doch mind. mit format(string,sizeof(string),"%s",dini_Get(pfad,"Text")); gehen, da hier der Text ja aus der dini gezogen und formatiert wird, sprich ist es ja nichts anderes als wenn ich format(string,sizeof(string),"Zeile1\nZeile2")); anstatt von dini_Get schreibe oder ?

    GELD verdienen durch Websites angucken ? (Klick hier oder den Banner)


  • Das funktioniert mit dini leider nicht.
    Ich hab das ganz einfach so gemacht, dass ich statt dem zeilenumbruch \n einfach yx verwendet habe. Dann lese ich den Text aus, suche ihn nach yx durch und ersetze das Zeichen durch 10 ( was dem ascii Code für einen Zeilenumbruch entspricht)


    Natürlich muss man nicht yx verwenden, aber ich habe mir einfach gedacht, dass diese kombination in keinem Wort vorkommt.

  • dini, sowie die meisten anderen Filesysteme können keine zwilenumbrüche ausgeben, da ein Zeilen Umbruch für Dini eine Neue Zeile und somit eine neue Variable bedeutet...


    Ambesten machst du vor dem Speichern aus \n ein %n und beim laden aus %n wieder ein \n

  • Strings bestehen in pawn ais arrays. Ich bin einfach mit ner schleife jeden Index durchgelaufen und hab geprüft ob der Buchstabe bei dem ich grad bin n y und der nächste n x is (müsst dir den ascii Code suchen). Wenn ja, hab ichs einfach so gmacht:

    Code
    String[i]=10;


    Wenn ich am pc wäre könnte ichs besser erklären, am Handy is grad aber eher schlecht.

  • [DT]Sniper: das wäre eine möglichkeit, nur fallen mir dazu strmid und co ein, wobei man aber mit der Zeichenanzahl arbeiten muss sprich angeben muss von welchem Buchstaben zu welchem Buchstaben, da aber mein Text variable ist und die Zeilenumbrüche an verschiedenen stellen stehen können stellt das für mich ein Problem dar.


    Sry4pwn: wäre nett wenn du wieder am PC bist das du mir mal via PN das etwas genauer erklären könntest bzw. mir einen beispiel code schicken könntest.
    //EDIT: Sry4pwn okay ich probiere das mal aus
    //EDIT: Sry4pwn, wenn du wieder am PC bist wäre nett wenn du mir das mal etwas ausführlicher per PN bzw. mit Beispielcode erklären könntest :D


    Ich setzte das Thema erstmal als Erledigt, danke für die Hilfe.


    Mfg

    GELD verdienen durch Websites angucken ? (Klick hier oder den Banner)


  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Brianski12:
    Das geht ganz einfach, man behilft sich eines Tricks, nämlich dem, dass \n nur einen Character darstellt.
    In deiner dini File sieht das ganze so aus:


    Zitat

    Text=Dieser Zeilenumbruch~wird nun beachtet.


    Im code:
    format(string,sizeof(string),"%s",dini_Get(pfad,"Text"));
    for(new i=0; i<strlen(string); i++) if(string[i] == '~') string[i] = '\n';
    ShowPlayerDialog(playerid,DIALOG_INFO,DIALOG_STYLE_MSGBOX,dini_Get(pfad,"Titel"),string,"Schließen","");


    Somit wäre ~ dein Zeilenumbruch.

  • Wow das es nun so simpel ist hätte ich jetzt auch nicht gedacht :D
    Aber vielen vielen Dank Jeffry.
    Danke auch an die anderen.


    Mit freundlichen Grüßen
    Brianski12

    GELD verdienen durch Websites angucken ? (Klick hier oder den Banner)


  • Jo... So habe ich das in etwa auch gemeint. Bin echt ned so der Pro in erklären.
    Bei meiner Variante verwendest du eben statt dem geschwungenen Zeichen yx, obwohl,~ wahrscheinlich die bessere Variante ist. Und statt '\n' einfach 10, was dem selben entspricht.