Seite 1 von 3
suche stoppen, wie?
Verfasst: 20.12.2005 15:04
von sen-me
also ich hab mir jetzt ne Procedur gebaut die ordner für ordner durchgeht und nach datein sucht
aber wie kann ich die suche vorzeitig beenden? d.h. die procedure tut sich ja rekursiv aufrufen, d.h. ich muss irgendwie ne block in die procedure machen
ich hab schon versucht mit ner globalen variable zu machen, aber wenn ich auf den button klcike der das stopt, wird erst nach der suche die variable auf 1 gesetzt
Verfasst: 20.12.2005 15:11
von AND51
Speicher in der Procedure eine Variable, wo drin steht, wie der erste ordner / die erste Datei hieß, die er gefunden hat.
Die Prozedur ruft sich nur solange rekursiv auf, bis er wieder auf die Datei stößt, die du in der variablen drin hast.
Verfasst: 20.12.2005 15:14
von Batze
Vielleicht über den Rückgabewert der Prozedur.
Verfasst: 20.12.2005 19:29
von sen-me
O.o
die procedure gibt keinen rückwert, sie schreibt ihre funde in eine liste
d.h, sie ruft sich solange auf bis sie bis in die letzte lücke des angegeben pfads durchforsten hat.
aber irgendwie muss ich doch die rekusion stoppen
Verfasst: 20.12.2005 19:41
von bobobo
Ruf die Procedure mal als Thread auf.
siehe dazu in der Hilfe unter Thread
Du kannst vor jeder Suche nach dem Inhalt einer globalen Variable
checken .. und im Thread entsprechend reagieren.
Code: Alles auswählen
Global quit.l
Procedure machwas()
Repeat
Debug "ich mach was"+Str(quit)
Delay(20)
Until quit=1
EndProcedure
quit=0
MessageRequester("","thread wird gestartet",0)
tid=CreateThread(@machwas(),0)
MessageRequester("","das ding läuft",0)
quit=1
MessageRequester("","das ding läuft nicht mehr",0)
End
Verfasst: 20.12.2005 19:47
von Konne
Wenn deine Procedure keinen Prukgabewert hat, dann must du haslt einen einbauen.
ZB SDchaut dir Procedureimmer wenn ihre Erstellte Procedure beendet ist ob 1 oder 0 zurückgegeben wurde und beendet sich dann auch wenn es Nulkl ist und gibt wieder 0 zurück usw...
Verfasst: 20.12.2005 19:48
von sen-me
wenn ich mit threa dmach sagt er mir Invalid memory access
Verfasst: 20.12.2005 19:54
von bobobo
komisch .. mein demo da oben läuft ohne invalid memory error
Verfasst: 20.12.2005 20:09
von sen-me
ich habs ja direkt eingebaut ^^
er bringt das aber bei jedme testlauf (neu testen) imemr an ner andren stelle O.o
edit:
vielleicht liegts daran das ich in dieser procedur die selbe procedur (rekursiv) nochmal aufrufe? und das öfters
Verfasst: 20.12.2005 20:54
von HeX0R
Debugger-Ausgaben in Threads sollte man nicht wirklich machen.
Irgendwann wird das zwangsläufig immer in einem Invalid memory access Error resultieren.
Um beim Thema zu bleiben:
Das mit dem Rückgabewert ist eigentlich perfekt.
P.S.: Kann man mich eigentlich verstehen, oder muss ich auch soviele Fehler eintippen ?
