AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Abbruch in einer Schleife ermöglichen
Thema durchsuchen
Ansicht
Themen-Optionen

Abbruch in einer Schleife ermöglichen

Ein Thema von harfes · begonnen am 20. Nov 2007 · letzter Beitrag vom 20. Nov 2007
Antwort Antwort
harfes

Registriert seit: 25. Jun 2006
Ort: Rand der Scheibe
180 Beiträge
 
Delphi 11 Alexandria
 
#1

Abbruch in einer Schleife ermöglichen

  Alt 20. Nov 2007, 06:22
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
Hartmut
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Abbruch in einer Schleife ermöglichen

  Alt 20. Nov 2007, 06:47
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
Ansgar
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Abbruch in einer Schleife ermöglichen

  Alt 20. Nov 2007, 06:48
Einen privaten Classmember vom Typ Boolean hinzufüge, den als weiteres Abbruchkriterium in Schleife einbauen. im Button-clickevent o.ä. den auf True setzen.
Markus Kinzler
  Mit Zitat antworten Zitat
harfes

Registriert seit: 25. Jun 2006
Ort: Rand der Scheibe
180 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Abbruch in einer Schleife ermöglichen

  Alt 20. Nov 2007, 07:06
Hallo Ansgar,

danke für das Beispiel - so geht's!

Gruss,

Hartmut
Hartmut
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Abbruch in einer Schleife ermöglichen

  Alt 20. Nov 2007, 07:08
@Hartmut,

hast du dich schon mal in SQL eingearbeitet? Warum läufst du die gesamte Datenmeng zu Fuss durch?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz