![]() |
Im Compiler läuft mein Programm, die EXE hat aber einen Bug
Ich werd noch verückt. In meinem Delphi 7.0 Compiler läuft mein Program.
In der EXE ist allerdings ein großer Bug. Anscheinend wird meine Timer1 Routine nicht komplett durchlaufen. Kann es sein, daß ich eventuell zu viele Timer in meinem Programm habe? Es sind nämlich 7 Stück. :cry: |
Re: Im Compiler läuft mein Programm, die EXE hat aber einen
Herzlich willkommen in der Delphi-PRAXiS, kallimusic.
Die sieben Timer werden sich wahrscheinlich gegenseitig bei der Arbeit unterbrechen - das musst du in deinen Timer-Routinen berücksichtigen. Auch ist es vorteilhaft, wenn du den Timer deaktivierst, solange seine zugehörige Prozedur abgearbeitet wird, damit kein unbeabsichtigter Wiedereintritt erfolgt. Grüße vom marabu |
Re: Im Compiler läuft mein Programm, die EXE hat aber einen
Ich hab mal die Routine jetzt zum ansehen mitgeliefert
Delphi-Quellcode:
[edit=Sharky]Delphi-Tags gesetzt. Mfg, Sharky[/edit]
procedure TForm1.Timer1Timer(Sender:TObject); {Nur Geschwindigkeitsfeststellung}
begin {1000 ms} timer1.enabled:=false; If RadarPresent='Ein' then SensorTicks := RadarTicksPro100Meter; If RadSensorPresent='Ein' then SensorTicks := RadSensorTicksPro100Meter; If MaschinenSpeedSensorPresent='Ein' then SensorTicks := MaschinenSpeedSensorTicksPro100Meter; if SensorTicks = 0 then SensorTicks := 1000; QueryPerformanceFrequency(t0); if HilfsSchalter1=true then begin ReadCounterDummy1:=ReadCounter(1); QueryPerformanceCounter(t1); HilfsSchalter1:=false; timer1.enabled:=true; exit; end; if HilfsSchalter1=false then begin ReadCounterDummy2:=ReadCounter(1); QueryPerformanceCounter(t2); HilfsSchalter1:=true; end; if ReadCounterDummy2 < ReadCounterDummy1 then Geschwindigkeit:=3600/ ((abs(t2-t1)/t0)*(SensorTicks*10)) *(ReadCounterDummy2+(65535-ReadCounterDummy1)); if ReadCounterDummy2 > ReadCounterDummy1 then Geschwindigkeit:=3600/ ((abs(t2-t1)/t0)*(SensorTicks*10)) *(ReadCounterDummy2-ReadCounterDummy1); if ReadCounterDummy2 = ReadCounterDummy1 then Geschwindigkeit:=0; if Geschwindigkeit >= 10 then Label11.Caption := FormatFloat('#0.0',Geschwindigkeit) else Label11.Caption := FormatFloat('#0.00',Geschwindigkeit); Label16.Caption := FormatFloat('##0.000000',(abs(t2-t1)/t0)); Label23.Caption := IntToStr(ReadCounterDummy2-ReadCounterDummy1); Label17.Caption := FormatFloat('######.##',ReadCounter(1)); timer1.enabled:=true; end; |
Re: Im Compiler läuft mein Programm, die EXE hat aber einen
wenn irgend moeglich versuche die timerprozeduren zu serialisieren.
d.h. ein timer sorgt fuer die ausfuehrung aller timerprozeduren (zur richtigen zeit). damit laufen die nicht parallel und laufen nicht ueberlappt. hatte selber schon solche probleme, dass das programm komplett einfriert. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:34 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