![]() |
Abbruch in einer Schleife ermöglichen
Ich habe eine Suchfunktion für eine Datenbank geschrieben, die solange in einer Schleife läuft, bis ein Ergebnis gefunden wurde oder der letzte Datensatz erreicht wurde (repeat...until). Da die Datenbank aber mittlerweile recht gross geworden ist, dauert die Suche manchmal sehr lange, so dass der Wunsch entsteht, die Suche abzubrechen (um z.B. mit neuen Parametern anders oder schneller etwas ztu finden). Kann mir jemand sagen, wie ich das realisieren muss? Sowiet ich mich eriinern kann, gab's da was mit application.processmessages damit man eine eingabe mitbekommt - wenn das richtig ist, wie komme ich dann weiter?
Hartmut |
Re: Abbruch in einer Schleife ermöglichen
Guten Morgen,
du kannst zum Beispiel eine Variable vom Typ Boolean deklarieren und diese bei bedarf abfragen. Ich zeige dir mein Beispiel, damit sich das verdeutlicht. Lege die ein Formular mit 2 Buttons und einem Edit an
Delphi-Quellcode:
type
TForm1 = class(TForm) btn1: TBitBtn; btn2: TBitBtn; edt: TEdit; procedure btn1Click(Sender: TObject); procedure btn2Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } bBreak: Boolean; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.btn1Click(Sender: TObject); var i: Integer; begin bBreak := False; // Initialiserung for i := 0 to 1000000 do begin if bBreak then Break; // wenn die Abbruchbedingung gesetzt ist, Schleife abbrechen edt.Text := IntToStr(i); Application.ProcessMessages; // Sorgt dafür, dass Nutzereingaben empfangen werden können. end; end; procedure TForm1.btn2Click(Sender: TObject); begin bBreak := True; // Wenn auf den Abbruch-Button geklickt wird, wird die Abbruchbedingung auf wahr gesetzt end; Gruß Ansgar |
Re: Abbruch in einer Schleife ermöglichen
Einen privaten Classmember vom Typ Boolean hinzufüge, den als weiteres Abbruchkriterium in Schleife einbauen. im Button-clickevent o.ä. den auf True setzen.
|
Re: Abbruch in einer Schleife ermöglichen
Hallo Ansgar,
danke für das Beispiel - so geht's! Gruss, Hartmut |
Re: Abbruch in einer Schleife ermöglichen
@Hartmut,
hast du dich schon mal in SQL eingearbeitet? Warum läufst du die gesamte Datenmeng zu Fuss durch? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz