Repeat - Until : Komme nicht raus!

Anfängerfragen zum Programmieren mit PureBasic.
Tombi
Beiträge: 369
Registriert: 05.03.2008 22:05

Repeat - Until : Komme nicht raus!

Beitrag 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)
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

Welche PB Version nutzt du denn?
Bist du sicher das du aus dem File mit der ID 0 ausließt?
(\/) (°,,,°) (\/)
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

sorry für meinen spott ohne hilfe....aber dieser titel ist ja mal zitierungswürdig!
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag von scholly »

@KeyKon:
dürfte immer noch 3.30 sein ;)

@Tombi:
Hilft Break an der richtigen Stelle nicht weiter?
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag 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...
(\/) (°,,,°) (\/)
Tombi
Beiträge: 369
Registriert: 05.03.2008 22:05

Beitrag 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!
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag 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:
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Tombi
Beiträge: 369
Registriert: 05.03.2008 22:05

Beitrag 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)
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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:
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Antworten