Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Im Compiler läuft mein Programm, die EXE hat aber einen Bug (https://www.delphipraxis.net/56411-im-compiler-laeuft-mein-programm-die-exe-hat-aber-einen-bug.html)

kallimusic 5. Nov 2005 09:32


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:

marabu 5. Nov 2005 09:47

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

kallimusic 5. Nov 2005 09:53

Re: Im Compiler läuft mein Programm, die EXE hat aber einen
 
Ich hab mal die Routine jetzt zum ansehen mitgeliefert

Delphi-Quellcode:
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;
[edit=Sharky]Delphi-Tags gesetzt. Mfg, Sharky[/edit]

ripper8472 5. Nov 2005 09:57

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 15:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz