AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Schleife stoppen!

Ein Thema von AndiS75 · begonnen am 14. Aug 2006 · letzter Beitrag vom 14. Aug 2006
Antwort Antwort
AndiS75

Registriert seit: 25. Nov 2005
42 Beiträge
 
#1

Schleife stoppen!

  Alt 14. Aug 2006, 12:51
Hallo zusammen,


wenn ich folgende Schleife laufen lasse

Delphi-Quellcode:

for i := 1 to 100000000000 do
begin
  Status.Panles[0].Text := ' blablabla' + IntTOStr(i) + 'blabla';
end;

friert mein Programm ein. ich möchte gerne die Schleife über einen Button stoppen können. Aber in der Zeit, in welcher die Schleife durchläuft, kann ich auf mein programm nicht zugreifen.

Gruß

Andreas
  Mit Zitat antworten Zitat
14. Aug 2006, 12:53
Dieses Thema wurde von "Phoenix" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Erstmal ab nach Delphi dafür^^
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.613 Beiträge
 
#3

Re: Schleife stoppen!

  Alt 14. Aug 2006, 12:55
dann machst Du folgendes:

Delphi-Quellcode:
for i := 1 to 100000000000 do
begin
  Status.Panles[0].Text := ' blablabla' + IntTOStr(i) + 'blabla';
  Application.ProcessMessages();
  if (abort) then
    break;
end;
Wobei abort eine Boolean-Variable auf dem Formular ist, welche am Anfang false ist und durch den Button-Click auf true gesetzt wird.

Edit Nachtrag: Wichtig ist das Application.Processmessages, weil hierdrin dann der ButtonClick erst ausgeführt wird.
Das ganze macht die Schleife aber extrem langsam. Vllt. bietet es sich also an, diese Abfrage nach einem Abbruch z.B. nur alle 100 oder nur alle 1000 Durchläufe zu machen.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
AndiS75

Registriert seit: 25. Nov 2005
42 Beiträge
 
#4

Re: Schleife stoppen!

  Alt 14. Aug 2006, 13:35
Bedanke mich
  Mit Zitat antworten Zitat
oldmax

Registriert seit: 27. Apr 2006
Ort: Gieboldehausen
167 Beiträge
 
#5

Re: Schleife stoppen!

  Alt 14. Aug 2006, 13:41
Hi
Warum benutzt du nicht die Repeat oder While -Schleife. Diese sind dafür ausgelegt, auch früher abgebrochen zu werden...
Delphi-Quellcode:
.....
I:=0; // i vorbesetzen
Repeat // Schleife wird mindestens 1mal durchlaufen
  .....yourCode....
  Inc(i); // oder anders i:=i+1;
Until (i = Zielwert) or Abbruchbedingung; // bis hierher und nicht weiter
.....
oder die andere Variante
Delphi-Quellcode:
......
i:=0; // i vorbesetzen
While (i<=Zielwert) and Not Abbruchbedingung do // Schleife kann umgangen werden
Begin // da Abbruchbedingung am Anfang steht
  ........ YourCode ........
  Inc(i); // oder wieder i:=i+1;
end; // bis hierher und nicht weiter
......
Noch ist mein Rechner mir zu Diensten.... ansonsten habe ich die Macht ihn zu vernichten !
  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 19:25 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