Announcement

Collapse
No announcement yet.

Ausgabe während Rekursion

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Ausgabe während Rekursion

    Hi ich bastle gerade an einer Findfirst Findnext rekursion, nun möchte ich währenddessen das aktuelle Verzeichnis ausgeben, welches gerade durchsucht wird. Leider wird aber ein entsprechendes Label nicht aktualisiert solange die Rekursion durchlaufen wird, wie kann man das ändern und wenn wir schon dabei sind, gibt es eine einfache Methode einen Suchlauf via Rekursion mittendrin abzubrechen??

    Thx schonmal

    Christopher

  • #2
    Hallo Christopher,

    innerhalb Deiner Funktion ab und an mal Application.processmessages aufrufen (z.B. nach jeweils 100 gefundenen Dateien). Dadurch wird die Botschaftswarteschlange in regelmässigen Abständen ausgelesen.

    Für den Abbruch einfach eine Variable in der Funktion abfragen.

    Tschüß

    Torste

    Comment


    • #3
      Hallo,<br>
      Erstelle einfach ein neues Form, haue da ein TMemo rein, und schreibe während der Rekursion in dieses Memo die Verzeichnisnamen...<br&gt

      Comment


      • #4
        @Patrick: Das nützt gar nichts, solange nicht Application.ProcessMessages aufgerufen wird...

        @Christopher: Definier eine globale Variable, z.B. bool SearchAborted (mit false initialisieren!). Mach einen Button 'Suche abbrechen' und in der OnClick() des Buttons setzt Du SearchAborted auf true. In der Rekursion prüftst Du SearchAborted und wenn es true ist, beendest Du die Rekursion, als wäre die normale Abbruchbedingung erfüllt... (Auch hierfür muß ProcessMessages in der Rekursion aufgerufen werden. Sonst wird der Klick auf den Button niemals ausgewertet. Das ist das gleiche Problem, wie mit dem Label, das nicht aktualisiert wird. Anbieten würde sich ProcessMessages, wenn Du in ein neues Verzeichnis wechselst).

        Grüße

        Joche

        Comment


        • #5
          Ähm, ich mache das immer so (also daß ich debug-meldungen in ein memo in einem eigens dafür erstelltes Form schreibe). Application.ProcessMessages habe ich dafür noch nie gebraucht.<br>
          Kleiner Zusatz: ich bezog mich mit meinem Vorschlag nur auf die Ausgabe der Verzeichnisse, nicht auf das Abbrechen der Rekursion.

          Comment

          Working...
          X