zeilenumbrüche in string einarbeiten und bei TEXT beachten

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

juse4pro

Betreff: zeilenumbrüche in string einarbeiten und bei TEXT beachten

BeitragMo, Jul 28, 2008 13:29
Antworten mit Zitat
Benutzer-Profile anzeigen
hi,

eigentlich sagt die überschrift schon alles^^

wie kann ich es in mein programm einbauen, wenn ein string so aussieht:
Code: [AUSKLAPPEN]
Global blablubb$="Hallo,\nich bin dein Gewissen..."


dass bei:
Code: [AUSKLAPPEN]
Text 5,5,blablubb$


bei jedem Code: [AUSKLAPPEN]
\n
im string einen zeilen umbruch geben soll???

benötige hilfe...
Cool Cool Very Happy
Portfolio |LinkedIn |XING

The Shark

BeitragMo, Jul 28, 2008 13:34
Antworten mit Zitat
Benutzer-Profile anzeigen
string analysieren, aufteilen und für jede zeile ein extra text aufruf

ToeB

BeitragMo, Jul 28, 2008 13:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Warte mal... Gabs da nicht Instr ? Oder Mid,Left oder Right ?


Wink

Versuch es mal mit einer Schleife, die solange weiderholt, bis keine "\n"s mehr da sind, ließt die stelle bis zum \n aus, Screibt sie hin an die y - Korrdinate, verkürzt den String bis nach "\n" und rechnet eine Variable für die Schleife hoch (y=y+13). Nach der schleife darst du aber nicht vergessen, den Restlichen String nochmal hinzuschreiben, also Text x,y,Text$, sonst wird die letzte Zeile nicht angezeigt...

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

juse4pro

BeitragMo, Jul 28, 2008 13:37
Antworten mit Zitat
Benutzer-Profile anzeigen
nice, danke, werds mal probieren^^
Portfolio |LinkedIn |XING

Smily

BeitragMo, Jul 28, 2008 13:51
Antworten mit Zitat
Benutzer-Profile anzeigen
chr$(13) + chr$(10) ist der zeilenumbruch
(oder umgedreht, ich bin mir grad nicht ganz sicher)

print replace(string$, "\n", chr$(13) + chr$(10))
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

juse4pro

BeitragMo, Jul 28, 2008 13:55
Antworten mit Zitat
Benutzer-Profile anzeigen
bei deiner methode kommt bei mir anstatt ein "\n" ein hochgestelltes rechteck (unbekanntes zeichen) und kein zeilenumbruch^^
why?
Portfolio |LinkedIn |XING

The Shark

BeitragMo, Jul 28, 2008 13:59
Antworten mit Zitat
Benutzer-Profile anzeigen
schätzungsweise versuch das text bzw printcommand die zeichen anzugeigen anstatt zu interpretieren.
chr$(13) + chr$(10) stzeht für nächste zeile+wagenrücklauf.

Smily

BeitragMo, Jul 28, 2008 14:02
Antworten mit Zitat
Benutzer-Profile anzeigen
mortus hat Folgendes geschrieben:
bei deiner methode kommt bei mir anstatt ein "\n" ein hochgestelltes rechteck (unbekanntes zeichen) und kein zeilenumbruch^^
why?


Zitat:

(oder umgedreht, ich bin mir grad nicht ganz sicher)


hast du es mal getauscht?
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Jul 28, 2008 14:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Das liegt daran, dass keines der möglichen Textausgaben Zeilenumbrüche unterstützen.

Code: [AUSKLAPPEN]
Graphics 400,300,0,2
SetBuffer FrontBuffer()

Locate 20,20
Print "print print print"+Chr$(10)+Chr$(13)+"print print print"

Locate 20,120
Write "write write write"+Chr$(10)+Chr$(13)+"write write write"

Text 20,220,"text text text"+Chr$(10)+Chr$(13)+"text text text"

WaitKey
End


Man kann aber mit Chr$(10)+Chr$(13) Zeilenumbrüche in Textdateien schreiben. Diese werden dann mit Notepad oder anderen Textviewern auch so angezeigt.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

The Shark

BeitragMo, Jul 28, 2008 14:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Müsste Funktionieren:
ist aber nicht optimiert, nur runtergeschrieben um die funktionsweise zu demonstrieren

Code: [AUSKLAPPEN]
Function brtxt(x,y,txt$)
   Repeat
      pos=Instr(txt$,"\n")
      If pos=0 Then Exit
      laenge=Len(txt$)
      Text x,y,Left(txt$,pos-1)
      txt$=Right(txt$,laenge-pos-1)
      y=y+FontHeight()   
   Forever
   Text x,y,txt$
End Function

juse4pro

BeitragMo, Jul 28, 2008 18:43
Antworten mit Zitat
Benutzer-Profile anzeigen
danke Shark habs eingebaut und es funzt!!
thx, an alle da mir das mit Chr 10 und chr 13 (oder so) auch sehr weitergeholfen hat
Portfolio |LinkedIn |XING

Der Eisvogel

BeitragMo, Jul 28, 2008 22:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier noch was kleineres:
Code: [AUSKLAPPEN]
txt$="Ich bin ein sehr, sehr, sehr langer Text und muss mit Zeilenümbrüchen ausgeschmückt werden./"
txt$=txt$+"Damit es sich lohnt, mach ich noch etwas:/"
txt$=txt$+"QUATSCH - QUATSCH - QUATSCH - QUATSCH - QUATSCH - QUATSCH - QUATSCH - QUATSCH - QUATSCH - QUATSCH"

lenth=100

Rect 0,0,lenth,5,1
Line lenth,0,lenth,240

TextEx 0,10,txt$,lenth,"/"

WaitKey
End



Function TextEx(x,y,txt$,lenth,zub$)
.start

width=StringWidth(txt$)

If width>lenth Then
   Repeat
      txt_pos=txt_pos+1
      If StringWidth(Left(txt$,txt_pos))>lenth Then Exit
   Forever
   txt_pos=txt_pos-1
   print_txt$=Left(txt$,txt_pos)
   
   zub_pos=Instr(print_txt$,zub$)
   If zub_pos>0 Then
      print_txt$=Left(txt$,zub_pos-1)
      txt$=Right(txt$,Len(txt$)-zub_pos)
   Else
      txt$=Right(txt$,Len(txt$)-txt_pos)
   EndIf
   
   Text x,y+y_pos,print_txt$
   y_pos=y_pos+10
   Goto start
Else
   Text x,y+y_pos,txt$
EndIf
End Function


Vlt hilft das dir auch noch ein bisschen.
Bei dieser Funktion wird auch bei einer bestimmten Länge ein Zeilenumbruch durchgeführt.

Erläuterung der Parameter der Funktion "TextEx":
x = X-Position des Textes
y = Y-Position des Textes
txt$ = String der angezeigt werden soll
lenth = Breite in Pixel, die der Text haben soll
zub$ = Zeichen, bei dem ein Zeilenumbruch erfolgt

Ich wünsch dir viel Spaß damit.

MfG
Der Eisvogel
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group