Automatischer Zeile numbruch

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

  • Automatischer Zeile numbruch

    Hallo,
    wie kriege ich es hin das ein text automatisch umricht. ich habe einen text der aus einer datei eingelesen wird, und aus beliebig vielen zeichen besteht. etwa so:
    "dies ist ein beispieltext, er wurde aus einer textdatei eingelesen. nun wird er weiterverarbeitet und ausgegeben."
    ich möchte nun das der text nachdem er soundsoviele pixel (als beispiel einfach mal 128pix) länge überschrittenhat umbricht, so wie man es von word ect. kennt.
    der draw_text(x,y,string) befehl schreibt einfach solange weiter wie der text lang ist, also auch aus dem bildschirm raus. mein text soll in einer box stehen als beispiel einfach mal von x1=0; y1=0; x2=128; y2=128; oder, falls er zulang ist, immer weiter nach unten.

    ps:
    es währe für mich günstig das der text vor der ausgabe verändert wird, sprich die umbruchzeichen drin sind.
    :) Nobody is perfect (-:

    "Dummköpfe sind Denkerköpfen weit überlegen. Zahlenmäßig." Ernst Ferstl
  • GML-Quellcode

    1. text_start='der ewig lange text und so weiter...'
    2. zeilenlaenge=20 // wie lang darf denn ne zeile sein?
    3. text_output='' // der fertige text mit umbruch-zeichen drinn
    4. text_temp=text_start
    5. while (string_length(text_temp)>zeilenlaenge)
    6. {
    7. text_output+=string_copy(text_temp,1,zeilenlaenge)+'#'
    8. text_temp=string_delete(text_temp,1,zeilenlaenge)
    9. }
    10. text_output+=text_temp
    Alles anzeigen


    have fun :D

    EDIT: wird aber ganz fürchterlich umbrochen ^^
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • Wenn du den Codeetwas erweiterst und dann in ein seperates Script packst, kannst du dir eine eigene Funktion zum Text-Zeichnen schreiben. Als Tip gebe ich mal: Nimm die Maimallänge und such dann im Text nach dem letzten Leerzeichen bzw. Bindestich. An dieser Stelle wird dann umgebrochen.
  • Ich hab mal ein Script gemacht welches nach Leerzeichen trennt. Argument0 ist dein String und argument1 die maximale Länge in Pixel. Die Variabel m gibt an nach wie vielen Zeichen ohne Leerzeichen trotzdem ein Zeilenumbruch stattfinden soll (falls das Wort zu lang ist).

    GML-Quellcode

    1. {
    2. var txt,i,ii,ret,ar,tmp,m;
    3. txt=argument0;
    4. l=argument1;
    5. m=6;
    6. if(string_width(txt)<=l)
    7. {
    8. return txt;
    9. }
    10. else
    11. {
    12. for(ii=0;string_width(txt)>l;ii+=1)
    13. {
    14. for(i=1;string_width(string_copy(txt,1,i))<l;i+=1)
    15. {}
    16. tmp=i;
    17. for(i=i;(i>tmp-m)and(string_copy(txt,i,1)!=" ");i-=1)
    18. {}
    19. ar[ii]=string_copy(txt,1,i-1);
    20. txt=string_copy(txt,i+1,string_length(txt));
    21. }
    22. ret="";
    23. for(i=0;i<ii;i+=1)
    24. {
    25. ret+=ar[i]+"#";
    26. }
    27. return ret+txt;
    28. }
    29. }
    Alles anzeigen
    Wer eine einfachere Lösung hat, bitte melden :D

    Dragoon
    int (*x(*x(int))[5])(int*);
    Confused? Yes, it's C!
  • sobalt ich den script aufrufe (ich rufe ihn aus nem anderen script auf) stürtzt das spiel ab, oder es friert ein (beides aufgetreten). ohne deinen script aufruf ging es wunderbar.
    ich werde mich morgen intensiv damit beschäftigen, heute hab ich keine zeit mehr dazu.
    ich poste dan ob es geklappt hat oder nicht.
    :) Nobody is perfect (-:

    "Dummköpfe sind Denkerköpfen weit überlegen. Zahlenmäßig." Ernst Ferstl