![]() |
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 |
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? |
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 |
Re: Katze fordert Prozessort heraus ;-)
Zitat:
![]() MfG Binärbaum |
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.
|
Re: Katze fordert Prozessort heraus ;-)
Zum Pausieren einfach
![]() |
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 02:32 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