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 :lol:

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? :wink: