Wie soll ich den Text einlesen ???

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

prolapper

Betreff: Wie soll ich den Text einlesen ???

BeitragSo, Dez 02, 2007 19:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Leute

Mein Problem:

Ich muss in mein Programm SEHR viel Text ausgeben ( 150 Seiten) und weiß nicht, wie ich des dann am besten mach, ohne dass ich zu lange laden muss.

Wichtig is auch, dass ich nach einer gewissen Anzahl von höchstens (ca.) 150 Zeichen einen Zeilenumbruch machen muss, und des hab ich versucht, indem ich einfach nach 150 Zeichen überprüfe, ob des eine Lehrstelle is und wenn ned einfach des nächste Zeichen (also 149.zigste) überprüft, usw, bis ich auf eine Lehrstelle stoß und hab an die Stelle dann einfach einen Zeilenumbruch in die Variable miteingefügt(Chr(13)).

Dazu kommt, dass ich des alles in Form von Grafik (text "adsf",x,x,x) ausgeben muss. Also muss ich alles am Anfang laden, sonst würde ich eine Framrate von 0,3/sek. haben. ( Laughing ^^)


Also meine Frage:

Gibt es eine Möglichkeit Text, der beliebig lang ist in mein Grafikprogramm einzuarbeiten, ohne dass ich zu hohe Verluste in Sachen Geschwindigkeit mache.


Bedanke mich schon mal für die Antworten!!! Cool
P.S: ICH SUCHE NOCH EINEN GRAFIKER UND EINEN PROGRAMMIERER FÜR EIN RPG
E-Mail: prolapper@gmx.net

Lunatix

BeitragSo, Dez 02, 2007 19:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Einfach Solange laden, bis eine Seite voll ist und nicht mehr auf den Bildschirm passt und dies in einen Anzeige-Buffer packen (Type/Dim/Variable). Während dies angezeigt wird, kannst du nebenbei den rest weiterladen, nicht alles aber ein Stück, und wenn der Benutzer eine Seite weiter oder scrollen will, passt du das an. Denn du musst ja nicht alles auf einmal anzeigen und somit auch nicht alles auf einmal laden
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

prolapper

BeitragSo, Dez 02, 2007 19:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja
Also : Ich hab ja da etz meinen text (in Word) und ich will etz, dass auf eine Seite (scrollen find ich doof)
eine gewisse anzahl von Zeilen steht und dann unten mit einem button auf die nächste seite gesprungen wird.

Mein Problem is eigentlich des einlesen und des anschließende formatieren.

Also soll ich einen Hammer langen text in einer datei speichern und dann einlesen und dann aufwendig formatieren und in ein Dim-Feld packen.
Des dauert 5min, weil ich nach einer gewissen Anzahl von Buchstaben einen Zeilenumbruch einfügen muss, und bei 150 Seiten Word kommen wir da schon leicht auf 100000 Zeilenumbrüche und außerdem passen dann später im programm nur so ca. 20 Zeilen untereinander also muss ich dann auch noch jedesmal abfragen, ob die 20 Zeilen ereicht sind.
(^^Laughing ich liebe so was (nicht))
P.S: ICH SUCHE NOCH EINEN GRAFIKER UND EINEN PROGRAMMIERER FÜR EIN RPG
E-Mail: prolapper@gmx.net

Xeres

Moderator

BeitragSo, Dez 02, 2007 19:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann musst du dir eine Funktion schreiben, die (d)einen Text automatisch passend anzeigt. Womöglich gibt das Codearchiv da etwas her.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

The_Nici

BeitragSo, Dez 02, 2007 20:56
Antworten mit Zitat
Benutzer-Profile anzeigen
mmh, ich würde da ein Array machen.
Da speicherst du jede Zeile hinein.
Dann machst du eine Scrolling-nummer. Die geht hoch, wenn du am mausrad scrollst.
Warte, ich editier zum besseren Verständniss einen Code rein.

Code: [AUSKLAPPEN]

Graphics 640,480,0,2
SetBuffer BackBuffer()
Dim Textarray$(999)
For i=0 To 999
   Textarray(i)="Blabber!"
Next
For i=0 To 999 Step 2
   Textarray(i)="Blablubb"
Next

scrolled%=0
zeilen%=0
While Not KeyDown(1)
   zeilen=0   ;Die gemalten Zeilen wieder auf 0 setzen.
   If MouseZSpeed()<>0 Then scrolled=scrolled+1   ;Wert "Scrolled" erhöhen. Geht bis jetzt nur nach Unten.
   maxscroll=scrolled*53   ;Bis zum Bildschirmrand
   While maxscroll>999
      maxscroll=maxscroll-1   ;Darauf achten, dass man nicht aus dem Array gelangt!
   Wend
   For i=scrolled To maxscroll
      zeilen=zeilen+1      ;Gemalter Zeilenwert.
      Text 0,zeilen*12,Textarray(i)   ;Malen
   Next
   Text 400,0,scrolled
   Flip
   Cls
Wend


Versteht keiner. ^^

prolapper

Betreff: ???

BeitragMo, Dez 03, 2007 21:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich weiß0 etz ned so, aber des funtzt ned so wirklich ^?!^ Embarassed Rolling Eyes Question Question Question
P.S: ICH SUCHE NOCH EINEN GRAFIKER UND EINEN PROGRAMMIERER FÜR EIN RPG
E-Mail: prolapper@gmx.net

The_Nici

BeitragMo, Dez 03, 2007 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Graphics 640,480,0,2
SetBuffer BackBuffer()
Dim Textarray$(1000)
Datei=ReadFile("blubb.txt")
i=1
readed$=""
While readed<>"[/ENDFILE]"
   readed$=ReadLine(Datei)
   Textarray(i)=readed$   ;Text der Datei auslesen
   i=i+1
Wend
Textarray(i-1)=""
CloseFile(Datei)
scrolled%=1
zeilen%=0
While Not KeyDown(1)
   zeilen=0   ;Die gemalten Zeilen wieder auf 0 setzen.
   scrolled=scrolled-MouseZSpeed()   ;Wert "Scrolled" erhöhen. Geht bis jetzt nur nach Unten.
   If scrolled<1 Then scrolled=1
   maxscroll=scrolled*53   ;Bis zum Bildschirmrand
   While maxscroll>1000
      maxscroll=maxscroll-1   ;Darauf achten, dass man nicht aus dem Array gelangt!
   Wend
   For i=scrolled To maxscroll
      zeilen=zeilen+1      ;Gemalter Zeilenwert.
      Text 0,zeilen*12,Textarray(i)   ;Malen
   Next
   Text 400,0,scrolled
   Flip
   Cls
Wend

mmh, nochmals verbessert. Dieser Code gibt eine Datei so lange aus, bis drin [/Endfile] steht. Dies kannst du nachträglich mit dem texteditor eintragen.

Zur Erklärung: Ich lese jede Zeile aus der Datei in ein Array-Feld ein.
Da wir aber nicht alle Array-Felder anzeigen wollen, mach ichs so: ich habe eine Variable Scroll. Diese entspricht dem aktuellen zu anzeigen gewünschten Arrayeintrag. Dann gibts Maxscroll. Damit lege ich fest, was der letzte zu anzeigende Arrayeintrag ist.
Ich frage MouseZspeed ab. (weitere beschreibung auf Blitzbase) und male dann. "zeilen" ist die aktuelle gemalte Zeile. Diese erhöhe ich bei jedem For...Next durchlauf um eins, um eine Zeile nach unten zu rutschen. Danach zeichne ich den entsprechenden Arrayeintrag.

Falls dus nicht verstehst, solltest du dich erstmal mit anderer Materie befassen oder lieber noch mal das eine oder andere Tutorial anschauen.

MFG

Thunder

BeitragMo, Dez 03, 2007 21:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Falls du den Text nicht als txt gespeichert hast mach es. Es könnte helfen da es in txt keine Textformatierung giebt. Arrow
Code: [AUSKLAPPEN]

Repeat
Satz$=Readline$(datei)
Print Satz$; oder halt Addgadgetitem oder settextareatext
until Eof(datei)=1
Waitkey
end

so lese ich immer schnell etwas ein. In mein Micro-Word
Code: [AUSKLAPPEN]

list=Createlistbox(x,x,y,y)
Repeat
Satz$=Readline$(datei)
addgadgetitem list,Satz$
until Eof(datei)=1
Waitkey
end

Das wäre ein kleiner Micro-Word-Abschnitt
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

prolapper

BeitragMo, Dez 03, 2007 21:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Mein Problem is nicht das Verstehen, sondern das Nichtfunktionierens des Vorherigen Posts(^^)


Smile

Thx für die Antwort
P.S: ICH SUCHE NOCH EINEN GRAFIKER UND EINEN PROGRAMMIERER FÜR EIN RPG
E-Mail: prolapper@gmx.net

BigMaexle

BeitragMo, Dez 03, 2007 21:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast es verstanden? gut, dann machs dir selbst.
The_Nici mach die Arbeit ja nich für dich Confused
--------------------------------------
Ich bin unfreiwillig ein Mitglied dieser kapitalistischen Gesellschaft, wo jeder Geldgeile Unternehmer an mein Geld will und ich selbst bei meinen Entscheidungen so gut wie willenlos bin...... und ich bin glücklich drüber

The_Nici

BeitragMo, Dez 03, 2007 21:39
Antworten mit Zitat
Benutzer-Profile anzeigen
BigMaexle hat Folgendes geschrieben:
Du hast es verstanden? gut, dann machs dir selbst.
The_Nici mach die Arbeit ja nich für dich Confused


Indirekt schon, ich habe ihm geholfen, es zu verstehen. Also hab ich ihm einen Teil der Arbeit abgenommen.
Eigentlich bin ich auch dafür, dass man den Code selbst schreibt.

@Thunder: Und das hat mit dem thema zu tun...?

prolapper

BeitragMo, Dez 03, 2007 21:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Also :
Ihr dürft des etz ned falsch verstehen:
Ich hab den Beitrag von The_Nici (thx!!!) schon verstanden, aber ich wusste zuvor nicht so ganz wie ich mein Problem lösen soll, weil ich mich auf dieses einlesen und anschließende formatieren festgesetzt hab.
@ The_Nici :
Des zweite geht etz und ich habs auch schon etwas verändert, so dass es in mein Programm hineinpasst.
THX Exclamation Exclamation Wink Mr. Green
P.S: ICH SUCHE NOCH EINEN GRAFIKER UND EINEN PROGRAMMIERER FÜR EIN RPG
E-Mail: prolapper@gmx.net

The_Nici

BeitragMo, Dez 03, 2007 21:49
Antworten mit Zitat
Benutzer-Profile anzeigen
mmh, wenn du den 1. Code verstanden hättest, würdest du nicht fragen, warum er nicht funktioniert. Denn du hattest ihn nicht verstanden.
Und einfach den Datei-Parameter beim Readline verändern ist kein grosses Werk.
Ehrlich gesagt würde ich gerne fordern, dass du mir jede Zeile des Codes erklärst, aber das wär unmenschlich. also lass ich es.

MfG

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group