AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Katze fordert Prozessort heraus ;-)
Thema durchsuchen
Ansicht
Themen-Optionen

Katze fordert Prozessort heraus ;-)

Ein Thema von vielwerth · begonnen am 28. Feb 2005 · letzter Beitrag vom 3. Mär 2005
Antwort Antwort
vielwerth

Registriert seit: 13. Feb 2004
Ort: Erlangen
2 Beiträge
 
Delphi 6 Professional
 
#1

Katze fordert Prozessort heraus ;-)

  Alt 28. Feb 2005, 21:05
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?

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

Danke fürs Lesen.
Vielwerth
Peter Vielwerth
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Katze fordert Prozessort heraus ;-)

  Alt 28. Feb 2005, 21:25
erstmal herzlich willkommen in der

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?
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Katze fordert Prozessort heraus ;-)

  Alt 28. Feb 2005, 21:26
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
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Katze fordert Prozessort heraus ;-)

  Alt 28. Feb 2005, 21:28
Zitat von Toxman:
erstmal herzlich willkommen in der

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
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Katze fordert Prozessort heraus ;-)

  Alt 28. Feb 2005, 21:30
Stimmt nicht unbedingt. Rectangle wird mit dem akutellen Pinsel gefüllt. ALso da noch Farbe setzen und dunkel ist's.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Katze fordert Prozessort heraus ;-)

  Alt 28. Feb 2005, 21:47
Zum Pausieren einfach Delphi-Referenz durchsuchenSleep benutzen, da so die Zeitkontrolle an den Dispatcher weitergegeben wird, und der kann die Prozesszeit anderen zuweisen.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
vielwerth

Registriert seit: 13. Feb 2004
Ort: Erlangen
2 Beiträge
 
Delphi 6 Professional
 
#7

Re: Katze fordert Prozessort heraus ;-)

  Alt 3. Mär 2005, 17:59
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
Peter Vielwerth
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:49 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