Seite 1 von 2
Repeat - Until : Komme nicht raus!
Verfasst: 13.04.2008 17:09
von Tombi
Hallo Community.
Ich habe hier einen Code. Ich poste hier erstmal nicht den ganzen, da wir de wahrscheinlich nicht brauchen werden.
Finde leider keinen Fehler.
Ich komme irgendwie nicht aus diesem Repeat raus:
Code: Alles auswählen
Repeat
line + 1
zeile$ = ReadString()
X = FindString(zeile$,"<area",1)
Debug X
If X
Y = FindString(zeile$,"<area",X+1)
Z = FindString(zeile$,">",X+1)
If Y < Z
MessageRequester("Error","Line "+Str(line)+": Im Area-Element wurde vor dessen Schließung ein "+search$+"-Element entdeckt. Möglicherweiße könnte es auch sein, dass das Area-Element nicht geschlossen wird.",0)
End
EndIf
EndIf
Until Eof(0)
Verfasst: 13.04.2008 17:12
von KeyKon
Welche PB Version nutzt du denn?
Bist du sicher das du aus dem File mit der ID 0 ausließt?
Verfasst: 13.04.2008 17:17
von Kaeru Gaman
sorry für meinen spott ohne hilfe....aber dieser titel ist ja mal zitierungswürdig!
Verfasst: 13.04.2008 17:19
von scholly
@KeyKon:
dürfte immer noch 3.30 sein
@Tombi:
Hilft
Break an der richtigen Stelle nicht weiter?
Verfasst: 13.04.2008 17:22
von KeyKon
scholly hat geschrieben:@KeyKon:
dürfte immer noch 3.30 sein

Könnte er ja eig in seine Sig schreiben... Dann muss man sich nich immer an alles erinnern...
Verfasst: 13.04.2008 17:27
von Tombi
@KeyKon, 3.30, ja.
@Kaeru Gaman, hä?
@scholly, wo soll ich da den bitte Break hinsetzen?
Muss übrigends erstmal nachschauen ob es die Funktion in 3.30 schon gibt.
@KeyKon (nochmal), werde ich machen!
Verfasst: 13.04.2008 17:31
von scholly
Tombi hat geschrieben:@scholly, wo soll ich da den bitte Break hinsetzen?
Tja, mangels Glaskugel kann ich Dir das leider nicht beantworten, da Du noch nicht geschrieben hast, wann Du rauskommen willst

Verfasst: 13.04.2008 17:34
von AND51
Bitte poste alle relevanten Daten!
Auch wie du die Datei öffnest; bei Versionen <= 3.94 ist es bei Verwendung mehrerer Dateien parallel nämlich nötig, zwischen diesen mit UseFile() zu wechseln. Nur so zur Info, falls du dabei was falsch machst.
Verfasst: 13.04.2008 17:39
von Tombi
Code: Alles auswählen
Global line.w
Global a_a.w
Global b_b.w
Global file$
file$ = OpenFileRequester("Öffne...","C:\","Map-Datei (*.map)|*.map|Textdatei (*.txt)|*.txt",0)
ReadFile(0,file$)
Procedure SearchOnFile(text$)
ReadFile(1,file$)
If text$ = ""
MessageRequester("Error","An SearchOnFile() wurde ein leerer String überreicht. Das Programm muss daher beendet werden.",0)
End
EndIf
Repeat
zeile$ = ReadString()
aaa = FindString(zeile$,text$,0)
If aaa
gefunden = 1
EndIf
Until Eof(1)
CloseFile(1)
If gefunden
ProcedureReturn 1
Else
MessageRequester("Error",text$+" wurde in der aktuellen Datei nicht gefunden!",0)
ProcedureReturn 0
End
EndIf
EndProcedure
Procedure BeginEndCheck(a$,b$)
ReadFile(1,file$)
If a$ = "" Or b$ = ""
MessageRequester("Error","An BeginEndCheck() wurden ein oder mehrere leere Strings überreicht. Das Programm muss daher beendet werden.",0)
End
EndIf
a_a = 0
b_b = 0
Repeat
zeile$ = ReadString()
X = FindString(zeile$,a$,0)
If X
a_a + 1
EndIf
Until Eof(1)
CloseFile(1) : ReadFile(1,file$)
Repeat
zeile$ = ReadString()
X = FindString(zeile$,b$,0)
If X
b_b + 1
EndIf
Until Eof(1)
If b_b > a_a
MessageRequester("Error","Es existieren mehr "+b$+" Schließungen als geöffnet werden.",0)
ProcedureReturn 0
End
ElseIf a_a > b_b
MessageRequester("Error","Es existieren mehr "+a$+" Öffnungen als geschlossen werden.",0)
ProcedureReturn 0
End
Else
ProcedureReturn 1
EndIf
EndProcedure
SearchOnFile("<game>") : SearchOnFile("</game>")
BeginEndCheck("<data>","</data>")
Repeat
line + 1
zeile$ = ReadString()
X = FindString(zeile$,"<area",0)
If X
Y = FindString(zeile$,"<area",X+1)
Z = FindString(zeile$,">",X+1)
If Y < Z
MessageRequester("Error","Line "+Str(line)+": Im Area-Element wurde vor dessen Schließung ein "+search$+"-Element entdeckt. Möglicherweiße könnte es auch sein, dass das Area-Element nicht geschlossen wird.",0)
End
EndIf
EndIf
Until Eof(0) = 1
End
Wann ich rauskommen will? Natürlich wenn Eof(0) zutrifft (Die ganze Datei durchgegangen)
Verfasst: 13.04.2008 17:46
von AND51
lol...Und ich sag vorher noch, benutz mal
UseFile().
Tombi, tu das mal und ersetze:
Code: Alles auswählen
SearchOnFile("<game>") : SearchOnFile("</game>")
BeginEndCheck("<data>","</data>")
Repeat
durch
Code: Alles auswählen
SearchOnFile("<game>") : SearchOnFile("</game>")
BeginEndCheck("<data>","</data>")
; ****** HINZUGEFÜGT *******
UseFile(0)
; **************************
Repeat
Weißt du auch, warum?
