Einzelnen Beitrag anzeigen

Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#31

Re: Uhr ohne Hilfe vom "Ttimer" erstellen

  Alt 30. Apr 2010, 01:13
Moin,
also ich habe jetzt mal deine angebliche Heizung implementiert. Wenn ich die Zeit auf 0 setze, dann hast du recht, aber bei 10 ms zeigt die CPU Werte um 0 % an.
So wie der Code da aber steht ist das nicht eine sondern sind es genau 24 Sekunden Das heißt 3600 * 24 nehmen dann passt es wieder.

Das ist übrigens der Code:
Delphi-Quellcode:
procedure TForm1.BPowerClick(Sender: TObject);
begin
  Tick(0); // Heizt!
end;

procedure TForm1.BSleepClick(Sender: TObject);
begin
  Tick(10); // Heizt nicht!
end;

procedure TForm1.Tick(WaitTime: Integer);
var
  tickTime : extended;
  tckCnt : Byte;
begin
  tickTime := Now + 1 / 86400;

  // Prevent reexecution
  BSleep.Enabled := False;
  BPower.Enabled := False;
  Application.ProcessMessages;
  tckCnt := 0;

  repeat

    while (tickTime - Now) > 0 do
    begin
      sleep(WaitTime); // in 10 Millisekundenschritten warten bis eine Sekunde um ist
    end;

    tickTime := tickTime + 1 / 86400; // wieder eine Sekunde weiter gehen

    Inc(tckCnt);
    lTicks.Caption := IntToStr(tckCnt);
    lTicks.Repaint;
  until tckCnt >= 5;

  BSleep.Enabled := True;
  BPower.Enabled := True;
end;
Außerdem die Auslastung als Anhang. Ich habe einen Quadcore, weshalb selbst die Heiße Variante nur 25 % verbraucht. Ich habe dabei 5 Sekunden zuerst die 10 ms Variante ausgeführt (da wo der rote Strich ist) und dann 5 Sekunden die 0 ms Variante (dort wo der Berg ist). Das am Anfang ist der Programmstart.

MfG
Fabian
Miniaturansicht angehängter Grafiken
heater_184.png  
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat