Autor Beitrag
Juergen Rieger
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Sa 08.05.04 20:02 
Wie greife ich in einer Whileschleife auf eine boolsche Variable zu, die in einer Timer-Methode gesetzt wird.
Beispiel:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
unit UnitTimertest; 

interface 

uses 
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
Dialogs, ExtCtrls, StdCtrls; 

type 
  TTimertest = class(TForm) 
    Timer1: TTimer; 
    Taster: TButton; 
    procedure Timer1Timer(Sender: TObject); 
    procedure TasterClick(Sender: TObject); 

  private 
    { Private-Deklarationen } 
  public 
    { Public-Deklarationen } 
  end; 

var 
  Timertest: TTimertest; 
  Timerinterrupt : boolean; 
  breakpoint : integer; 

implementation 
label Schleife,over; 
{$R *.dfm} 

procedure TTimertest.Timer1Timer(Sender: TObject); 
begin 
  Timerinterrupt := true; 
end; 

procedure TTimertest.TasterClick(Sender: TObject); 
begin 
  Timerinterrupt := false; 
  Timer1.Enabled := true; 
  while Timerinterrupt do; 
end; 

end.


Moderiert von user profile iconPeter Lustig (21:15, 08.05.2004): Delphi-Tags hinzugefügt
Anfänger
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 128

WinXP
D3 Prof
BeitragVerfasst: So 09.05.04 14:39 
Du möchtest wissen, wie die While-Schleife funzt?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.Button1Click(Sender: TObject);
begin
  While Voraussetzung=True do
  begin
    //z.B
    Listbox1.Add('Hallo');
  end;
end;


Wenn das nicht deine Frage war, oder dir das Beispiel nicht half, versuch mal zu schildern, was die Schleife tuen soll und was nicht funzt, oder das Problem ist.
Juergen Rieger Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mo 10.05.04 18:32 
Vielen Dank für deine Nachricht.
Ich möchte wissen, wie ich das gesamte Programm programmieren muss, damit ich auf dei boolsche Variable zugreiffen kann, die von der Whileschleife benutzt wird.
Simon Joker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 236
Erhaltene Danke: 1



BeitragVerfasst: Di 11.05.04 08:17 
Hi Juergen

das geht so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
  Timer1.Enabled := true;
  StopLoop := false;
  i := 0;
  while not StopLoop do
  begin
    inc(i);
    Label1.Caption := IntToStr(i);
    Application.ProcessMessages; //gib dem Rechner die Chanche was naderes zumachen als deine Schleife
  end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  StopLoop := true;
end;


StopLoop ist eine globale Variable. Wichtig ist das "ProcessMessages", sonst hängt deine Application in der Schleife fest. Das die Stop-Variable global sein muß hast du ja schon selbst herausgefunden.
Zu while -> die Bedingung muß Wahr sein, damit die Schleife ausgeführt wird! Wenn du deine Abbruchbedingung also so definierts, das sie bei Wahr abbrechen soll muß du sie bei der Abfrage mit not invertieren.