Text mittels Funktion an best Position anzeigen
Übersicht

![]() |
HagbardBetreff: Text mittels Funktion an best Position anzeigen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Leider komme ich nicht weiter bei meiner Funktion...
Ich übergebe einen Text an die Funktion und da an das Feld t_inhalt2$(I, t_id). (I ist die Kennzeichnung der Zeile und t_id die Kenzeichnung der Seite) Ist der Text zu lang für eine Zeile, so wird er abgeschitten und weitergeschoben in die nächste Zeile (usw.) Jetzt möchte ich jede Zeile zählen, in der ein Text steht, um bei einem weiterem Aufruf den neuen Text von da an dranzufügen... Mein Ansatz ist folgender... Allerdings wäre ich nicht nur für Code Verbesserungen dankbar, sondern auch für Ansätze generell. Code: [AUSKLAPPEN] AppTitle "Mathe, 10. Klasse" Graphics 800, 600, 16, 2 SetBuffer BackBuffer() ; Variablen und Felder Global t_anzahl2 ; Text Dim t_width(25) Dim t_anzahl(25) Dim t_inhalt3(26, 15) Dim t_inhalt2$(50, 15) Dim t_um(25) Dim t_Y(25) Global t_X ; Laden Global con_1 = LoadFont("Verdana", 20, 1) Global con_2 = LoadFont("Verdana", 17, 1) Global con_3 = LoadFont("verdana", 15, 0) ; ##### Hauptschleife Repeat Cls Create_Text(1, 1, "CREDITS", "Verbreitung", "Dieses Programm darf kostenlos verbreitet werden. Eine komerzielle Nutzung ohne Genehmigung des Autors, sowie die Verlinkung, Bewerbung oder Präsentation auf Dialer Sites ist nicht gestattet. Und irgendwie sollte das jetzt langsam mal funktionieren! Ich bin dumm!") Create_Text(1, 2, "CREDITS", "Kontakt", "http://www.teeecke.de.hm -teeesoft info@aol.com") ;Create_Text(1, 3, "CREDITS", "usw. test", "just a slob like one of us") For I = 1 To 25 Text 020, 10 + 20*I, t_inhalt3(I, 1) Text 100, 10 + 20*I, t_anzahl(I) Next Flip Until KeyHit(1) End Function Create_Text(t_id, t_id2, t_head$, t_head2$, t_inhalt$) ; Haupt SetFont con_1 Color 0, 0, 0 Text 291 + 240, 154 + 20, t_head, 1, 1 For I = 1 To 25 t_width(I) = 66 t_inhalt2(I, t_id) = Mid$(t_inhalt$, (I-1)*t_width(I) + 1, t_width(I)) ; Bei "-" abbrechen und in nächster Zeile weiterführen ;t_um(I) = Instr(t_inhalt2(I-1), "-", 1) ;If t_um(I) > 0 Then ; t_inhalt2(I, t_id) = Mid$(t_inhalt2(I-1), t_um(I)+1) + t_inhalt2(I, t_id) ; t_inhalt2(I-1) = LSet(t_inhalt2(I-1), t_um(I)-1) ;EndIf ; Leerzeichen am Anfang entfernen ;If Mid$(t_inhalt2(I, t_id), 1, 1) = " " Then t_inhalt2(I, t_id) = Trim(t_inhalt2(I, t_id)) ; Kennzeichnung If Len(t_inhalt2(I, t_id)) > 0 Then t_inhalt3(I, t_id) = 1 t_X = 305 t_anzahl2 = t_inhalt3(1, t_id) + t_inhalt3(2, t_id) + t_inhalt3(3, t_id) + t_inhalt3(4, t_id) + t_inhalt3(5, t_id) + t_inhalt3(6, t_id) + t_inhalt3(7, t_id) + t_inhalt3(8, t_id) + t_inhalt3(9, t_id) + t_inhalt3(10, t_id) + t_inhalt3(11, t_id) t_anzahl(t_id2+1) = t_anzahl(t_id2) + t_anzahl2 t_Y(t_id2) = 209 + t_anzahl(t_id2)*20 + (-1 + t_id2)*40 ; Content SetFont con_2 Color 0, 0, 0 Text t_X, t_Y(t_id2) + ((I-(I)) * 20), t_head2 ; 2. Haupt SetFont con_3 Color 0, 0, 0 Text t_X, t_Y(t_id2) + ((I-1) * 20), t_inhalt2(I-1, t_id) Next End Function |
||
- Zuletzt bearbeitet von Hagbard am Sa, Apr 17, 2010 20:55, insgesamt einmal bearbeitet
![]() |
Smokie |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich hab mir deinen code nicht angeschaut aber ein Lösung für das was du machen willst wäre ein Dim feld
Dim zeile$(number_of_rows) Dann kannst du in jede line deinen String eintragen und wenn alles voll ist lässt du alles "runterrutschen" das heißt, du löschst den letzten Eintrag. UNd machst, dass der vorletzte zum letzten wird und so weiter. Und der erste ist dann der neue. Code: [AUSKLAPPEN] for i= 0 to number_of_rows Step -1 ;Rückwärts zählen zeile$(i)=zeile$(i-1) next zeile$(0) = new_string$. ;Text zeichen for i= 0 to number_of_rows text 0,i*font_height + 2,zeile$(i) next Bei dem Beispil geh ich von einer Seite aus. Bei mehreren Seite fügst du ein Dimension ein und musst die Zeilen net "runterrutschen lassen", sonder einfach nur die Seite änder. Hoffe, dass hilftt dir Grüße |
||
M-Soft Studios Mit selbst gemachtem Forum!!!
Unbequem lebt's sich schwer. Musik macht erst Spaß, wenn man sie mit 2,8 facher Geschwindigkeit hört Zuletzt bearbeitet von Smokie am Fr Jan 01, 1888 51:58 PM, insgesamt 1000-mal bearbeitet |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Smokie hat Folgendes geschrieben: Also ich hab mir deinen code nicht angeschaut aber ein Lösung für das was du machen willst wäre ein Dim feld
Merkt man ![]() Das Problem ist das Du in der Function Create_Text() ein paar Color drin hast welche als Farbe schwarz setzen. Schwarze Schrift auf schwarzem Hintergrund hat aber einen wahnsinnig schlechten Kontrast ![]() ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
Hagbard |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe das Gefühl, dass ich den nicht ganz korrekt gepostet habe...
Aber geht auch mehr ums Prinzip! |
||
- Zuletzt bearbeitet von Hagbard am Sa, Apr 17, 2010 20:56, insgesamt einmal bearbeitet
![]() |
Smokie |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hast du's jetzt verstanden, oder haben wir dein Problem net beantwortet?
Grüße |
||
M-Soft Studios Mit selbst gemachtem Forum!!!
Unbequem lebt's sich schwer. Musik macht erst Spaß, wenn man sie mit 2,8 facher Geschwindigkeit hört Zuletzt bearbeitet von Smokie am Fr Jan 01, 1888 51:58 PM, insgesamt 1000-mal bearbeitet |
![]() |
Hagbard |
![]() Antworten mit Zitat ![]() |
---|---|---|
Deine Idee hab ich schon versucht umzusetzen...schon vorher!
Ich würde dann nur wissen, wie ich eine Variable um n erhöhe, ohne dass das die ganze Zeit passiert, da die Funktion in der Schleife aufgerufen wird. Ich werde jetzt erstmal suchen! |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
ql:MilliSecs() gibt die Zeit seit Systemstart in Millisekunden zurück. Wenn Du jetzt diesen Wert in einer Variable zwischenspeicherst läßt sich ganz bequem die vergangene Zeit seit dem letzten zwischenspeichern errechnen und wenn diese Differenz einen von Dir bestimmten Wert überschreitet zählst Du deine Variable hoch. Code dazu wirst Du auch zu Hauf finden, wenns wirklich gar nicht klappen sollte ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
Hagbard |
![]() Antworten mit Zitat ![]() |
---|---|---|
ICH HABS GESCHAFFT!!!
Wie so oft lag die Lösung schon vor Augen und wurde nur wegen einem Fehler nicht gefunden! Naja, hab es letztendlich so ähnlich gelöst wie Smokie es vorgeschagen hat. Nochmal DANKE! |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group