 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Name.and(2)=Andreas
Anmeldungsdatum: 11.07.2008 Beiträge: 14
|
Verfasst am: 15.07.2008, 16:01 Titel: Fehler bei Stringmanipulation |
|
|
Hi,
also ich hab einen Sub, der den eingehenden string in evtl.mehrere strings mit der länge 64 teilt und dann ausgibt in der Farbe wie in den parametern angegeben, doch leider tut nur der teil, wo keine manipulationenen notwenig sind, da der string weniger als 64 zeichen umfasst.
Ansonsten kommt eine fehlermeldung, aber ich weiß nicht warum...kann mir da jemand helfen?
(ist bestimmt ein total dämlicher fehler)
Andreas
Code:
Code: | Sub outputstr(outstr as String, colo as Byte)
Dim lenstr as Integer
Dim aestr as Integer
lenstr= len(outstr)
If lenstr <=woz then
locate (z mod 14)+1
Print " "
locate z,1
Print " "
locate z,1
Color colo
Print outstr
z= (z mod 14)+1
Else
aestr = INT( lenstr/woz)
Dim stri(aestr) as String
Dim x as Integer, y as Integer
y=1
x=1
Do
stri(y)= stri(y) + Mid(outstr,x,1)
If x= 64 then
y=y+1
x=1
Else
x= x+1
EndIf
If x= lenstr+1 then
exit do
End If
Loop
For i= 1 to aestr
locate z,1
Color colo
Print stri(i)
z= (z mod 14)+1
Next
End IF
End Sub |
_________________ Fluchen ist die einzige Sprache, die alle Programmierer wirklich beherrschen! |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 15.07.2008, 18:44 Titel: |
|
|
Zitat: | Ansonsten kommt eine fehlermeldung |
Welche?
Mir scheint die Routine etwas kompliziert. Warum pflügst du Buchstabe für Buchstabe? Würde es nicht so auch gehen?
Code: |
DIM AS string arbeitsstring = outstr
' ...
DO
stri(y) = LEFT(arbeitsstring, 64)
arbeitsstring = MID(arbeitsstring, 65)
y = y + 1
LOOP UNTIL arbeitsstring = ""
|
Was vermutlich einen Fehler verursacht, ist
Code: | DO
stri(y)= stri(y) + MID(outstr,x,1)
IF x= 64 THEN
y=y+1
x=1 ' *** x WIRD NIE > 64; DU LIEST IMMER DIESELBEN 64 ZEICHEN! ***
ELSE
x= x+1
ENDIF
IF x= lenstr+1 THEN ' *** WIRD FUER lenstr >= 64 NIE ERREICHT! ***
EXIT DO
END IF
LOOP |
_________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Name.and(2)=Andreas
Anmeldungsdatum: 11.07.2008 Beiträge: 14
|
Verfasst am: 15.07.2008, 21:53 Titel: |
|
|
Ah...
naja..., dass ich buchstabe für buchstabe dadurch gehe ist absicht, der sub ist ja noch nicht fertig
Der Fehler war also, dass ich x immer wieder auf eins gesetzt hab
Hab ja gesagt, da ist ein banaler fehler drinn...naja...jetzt gehts
Danke
Andreas _________________ Fluchen ist die einzige Sprache, die alle Programmierer wirklich beherrschen! |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|