![]() |
frage zu TTimer
hallo
ich möchte eine funktion programmieren, die nacheinander töne ausgibt, dazwischen soll jeweils pause sein, nur klappt das überhaupt nicht mit dem code den ich geschrieben habe. ich möchte einen Timer verwenden und kein sleep. kann mir jemand helfen? danke.
Delphi-Quellcode:
function Dur(StartTon: integer; Timer: TTimer): string;
begin //1. Ton FMain.MidiOutput.PutShort($90, StartTon, UGlobal.IVLautstaerke); Timer.Enabled:= True; //2. Ton FMain.MidiOutput.PutShort($90, StartTon+2, UGlobal.IVLautstaerke); Timer.Enabled:= True; //3. Ton FMain.MidiOutput.PutShort($90, StartTon+4, UGlobal.IVLautstaerke); Timer.Enabled:= True; //4. Ton FMain.MidiOutput.PutShort($90, StartTon+5, UGlobal.IVLautstaerke); Timer.Enabled:= True; //5. Ton FMain.MidiOutput.PutShort($90, StartTon+7, UGlobal.IVLautstaerke); Timer.Enabled:= True; //6. Ton FMain.MidiOutput.PutShort($90, StartTon+9, UGlobal.IVLautstaerke); Timer.Enabled:= True; //7. Ton FMain.MidiOutput.PutShort($90, StartTon+11, UGlobal.IVLautstaerke); Timer.Enabled:= True; //8. Ton FMain.MidiOutput.PutShort($90, StartTon+12, UGlobal.IVLautstaerke); Timer.Enabled:= True; Result:= 'Dur'; end; |
Re: frage zu TTimer
Einen Timer zu verwenden ist nicht sehr passend hier. Machs halt so:
Delphi-Quellcode:
procedure Delay(Time: Cardinal);
var start: Cardinal; begin start:=GetTickCount; repeat Application.ProcessMessages until GetTickCount>=start+time; end; |
Re: frage zu TTimer
|
Re: frage zu TTimer
Der Timer kann nur ausgeführt werden, während keine Funktion läuft. Du machst es so:
Delphi-Quellcode:
du musst deine Funktion beenden und kannst dann den Timer öffnen. Verwende dann eine globale Zählervariable:
beep;
timer aktivieren; beep; timer aktivieren; (sinnlos, da bereits aktiviert)
Delphi-Quellcode:
var
zaehler:integer=0; procedure tform1.timerprozedur (Doppelklick auf Timer); begin zaehler:=zaehler+1; case zaehler of 1: TON1 ABSPIELEN; 2: TON2 ABSPIELEN; end else begin zaehler:=0; timer1.enabled:=false; end; end; //so aktivieren: procedure aktivieretimer; begin timer1.enabled:=true; timer1timer(self); end; |
Re: frage zu TTimer
danke, sehr hilfreich.
ich werde das über delay regeln. es ist einfacher umzusetzen, außerdem ist das nur eine von vielen ähnlichen aufgebauten prozeduren. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz