Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Katze fordert Prozessort heraus ;-) (https://www.delphipraxis.net/41268-katze-fordert-prozessort-heraus-%3B.html)

vielwerth 28. Feb 2005 21:05


Katze fordert Prozessort heraus ;-)
 
Zunächst: "Guten Abend!"

Habe für meine Tochter einen Bildschirmschoner gemacht: In einem gewissen Zeitabschnitt wird aus einer DLL per Random jeweils ein (eins von acht) Foto ihres Katers geladen. Das JPG (150..300 KB) wird in eine Bitmap umgewandelt und diese auf den Screen ausgegeben und wieder ab einem gewissen Zeitabschnitt wird der Schirm mit "lineTo" schwarz übermalt. Dann kommt das nächste Bild.

Pause(Application.ProcessMessages) 125 MilliSek..

Dabei läuft der Prozessor permanent - auch wenn gerade nix geschieht - auf 100%!

Mein Athlon XP 3000, der unter Delphi, Word, Internet so zwischen 43 und 46 Grad heiss wird, kriegt nach 20 Min die Krise mit bis zu 62 Grad (Sandra).

Was kann ich tun, damit der Kater den Prozessor pfleglicher behandelt? :cat:

P.S. Prozessor wird ebenso heiss, wenn keine Maus angeschlossen ist.
Überströmender Dank, wenn einer was weiß.

Danke fürs Lesen.
Vielwerth

Nikolas 28. Feb 2005 21:25

Re: Katze fordert Prozessort heraus ;-)
 
erstmal herzlich willkommen in der :dp: :bounce1:

Nutz doch lieber einen Timer um das neue Bild zu laden und um etwas zu übermalen ist es einfach gleich
rectangle zu nehmen.

Application.Processmessages dauert seine Zeit und wenn der Befehl 8 Mal in der Sekunde aufgerufen wird, ist klar, dass viel Rechenzeit verbraucht wird. Ist es denn notwendig das so oft aufzurufen?

Binärbaum 28. Feb 2005 21:26

Re: Katze fordert Prozessort heraus ;-)
 
Ich kann jetzt leider nur raten, woran das liegt. :? Wahrscheinlich macht der PC in den "Pausen" zwischen den einzelnen Bildern irgendwas, das viel Rechnerleistung beansprucht. Hier wäre ein Code-Abschnitt nicht schlecht, um das Problem zu lokalisieren.

MfG
Binärbaum

Binärbaum 28. Feb 2005 21:28

Re: Katze fordert Prozessort heraus ;-)
 
Zitat:

Zitat von Toxman
erstmal herzlich willkommen in der :dp: :bounce1:

Nutz doch lieber einen Timer um das neue Bild zu laden und um etwas zu übermalen ist es einfach gleich
rectangle zu nehmen.

Danach muss man das Rechteck aber noch mit Delphi-Referenz durchsuchenFillRect ausfüllen, da sonst nur der Rahmen gezeichnet wird.

MfG
Binärbaum

Nikolas 28. Feb 2005 21:30

Re: Katze fordert Prozessort heraus ;-)
 
Stimmt nicht unbedingt. Rectangle wird mit dem akutellen Pinsel gefüllt. ALso da noch Farbe setzen und dunkel ist's.

Chewie 28. Feb 2005 21:47

Re: Katze fordert Prozessort heraus ;-)
 
Zum Pausieren einfach Delphi-Referenz durchsuchenSleep benutzen, da so die Zeitkontrolle an den Dispatcher weitergegeben wird, und der kann die Prozesszeit anderen zuweisen.

vielwerth 3. Mär 2005 17:59

Re: Katze fordert Prozessort heraus ;-)
 
Besonders der Tip von Chewi war goldrichtig:

Hier ist der (*geänderte*) Code:

procedure Pause(Zeit: Cardinal);
begin
sleep(Zeit);
Application.ProcessMessages;
end;

(*
procedure Pause(Zeit: Cardinal);
var Zeit1 : Cardinal;
begin
Zeit1:= GetTickCount;
repeat
Application.ProcessMessages;
until (GetTickCount - Zeit1 > Zeit);
end;

*)
Vielen Dank an alle für Euere Hilfe.
vielwerth


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:03 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