Forum: Object-Pascal / Delphi-Language
Delphi
by Binärbaum,
17. Feb 2005
Naja, die while-Schleife war von mir so ausgelegt, dass sie nur 30 Zahlen sendet und dann beendet. Wenn es nach 30 wieder von vorne anfangen soll, dann muss man die while-Schleife in der Prozedur Senden ändern:
while (Schleife) do
begin
i:= i+1;
PortOut($378,i);
Warten(delay);
Form1.ProgressBar1.Position := i;
if i>=30 then i:=0;
end;
Forum: Object-Pascal / Delphi-Language
Delphi
by Binärbaum,
17. Feb 2005
Also die Prozedurdeklaration ist doch folgende:
procedure PortOut(Port : Word; Data : Byte); stdcall; external 'io.dll';
Das heißt, es wird ein Wert vom Typ Byte an den ausgewählten Port gesendet. Ob man den Wert nun dezimal oder als den entsprechenden Hex-Wert angibt, dürfte ziemlich egal sein. Letztlich ist das sowieso alles binär codiert, also wird sowohl aus der 10 im Dezimalsystem oder $A...
Forum: Object-Pascal / Delphi-Language
Delphi
by Binärbaum,
16. Feb 2005
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:
procedure Warten(ms: Cardinal);
var zeit: Cardinal;
begin
zeit:= GetTickCount;
while ((GetTickCount-zeit)<ms) do
Application.ProcessMessages;
Forum: Object-Pascal / Delphi-Language
Delphi
by Binärbaum,
16. Feb 2005
Aber genau das macht ein Timer doch: er führt die Aktion aus, die in der Ereignisprozedur OnTimer festgelegt ist und wartet danach den in der property Intervall festgelegten Zeitraum, bevor die Prozedur wieder ausgeführt wird.
MfG
Binärbaum
Forum: Object-Pascal / Delphi-Language
Delphi
by Binärbaum,
16. Feb 2005
Dann lese doch vor dem Start den Takt aus dem Edit-Feld aus und setze den Timer-Intervall dann auf diesen Wert. Durch den Klick auf den Start/Stop-Button wird Timer.Enabled auf True/False gesetzt und somit der Timer gestartet bzw. angehalten.
MfG
Binärbaum