Thema: Delphi Endlosschleife mit Timer

Einzelnen Beitrag anzeigen

Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Endlosschleife mit Timer

  Alt 16. Feb 2005, 22:41
Zitat von Crazy-MF:
Ja stimmt. sorry.

also mein quelltext sieht ungefähr so aus:

Code:
procedure PortOut(Port : Word; Data : Byte); stdcall; external 'io.dll';
function PortIn(Port : Word): Byte; stdcall; external 'io.dll';

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  If TrackBar1.Position = 0 then
    begin
      PortOut($378,$00);
    end;
  If TrackBar1.Position = 1 then
    begin
      PortOut($378,$01);
    end;
  If TrackBar1.Position = 2 then
    begin
      PortOut($378,$02);
    end;
das sind jetzt nur die ersten 3 das geht so weiter bis 30.
Wie soll ich denn jetzt genau mit der Timerkomponente eine schleife programmieren, damit er nach jedem mal wenn er den wert geändert hat zeit x wartet und dann den nächsten sendet???
Hast wohl was gegen die Timer? Dann hier eine Lösung ohne Timer:
Also setze auf deine Form ein Edit (für die Verzögerungszeit), zwei Buttons (1. zum starten, 2. zum stoppen) und die TrackBar.
Dann noch folgender Code:
Delphi-Quellcode:
procedure Warten(ms: Cardinal);
var zeit: Cardinal;
begin
 zeit:= GetTickCount;
 while ((GetTickCount-zeit)<ms) do
  Application.ProcessMessages;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 Schleife:= True;
 Senden;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 Schleife:= False;
end;

procedure Senden;
var i: Integer;
    delay: Cardinal;//Verzögerung in Millisekunden
begin
 try
  delay:= StrToInt(Form1.Edit1.Text);
 except
  delay:= 1000;
 end;
 i:=0;
 while (Schleife and (i<=30)) do begin
  i:= i+1;
  PortOut($378,i);
  Warten(delay);
 end;
 Schleife:= False;
end;
So, fertig.
Statt in der Prozedur senden die Variable i hochzuzählen, kannst du auch die TrackBar.Position erhöhen und dann diese senden.
Die Variable Schleife ist von Typ Boolean und global deklariert. Sie sollte im OnCreate-Ereignis der Form1 auf False gesetzt werden (ist aber nicht unbedingt nötig).

MfG
Binärbaum

//Edit: kleinen Fehler im Quelltext berichtigt
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat