Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi timer zu langsam? (https://www.delphipraxis.net/13895-timer-zu-langsam.html)

Pseudemys Nelsoni 28. Dez 2003 18:19


timer zu langsam?
 
hi,

Code:
canvas.Pixels[Random(form1.Width), Random(Form1.Height)] := clRed;
wenn ich das in einem timer habe, der den intervall 1 hat, einfüge und die Form etwas grösser ist, kommt zwar alle 0,015 sek ein punkt dazu, trotzdem ist das auf die dauer echt lahmarschig. wie bekomm ich das schneller hin?

Dagon 28. Dez 2003 18:21

Re: timer zu langsam?
 
Willst du so den ganzen Bildschirm füllen?

[edit=sakura] Doppelpost ausradiert :mrgreen: Mfg, sakura[/edit]

Pseudemys Nelsoni 28. Dez 2003 18:23

Re: timer zu langsam?
 
jo, is nur zum testen, ich fange gerade erst mit canvas an, aber es muss doch auch schneller gehen oder?


EDIT: müsst ich mehrere timer nehmen?

Mirilin 28. Dez 2003 18:30

Re: timer zu langsam?
 
:hi:

Ich glaube Timer-Intervall auf 1 runter bringt nichts - ich hab schön des öfteren gelesen, dass da irgendwo mal schluss ist . . .

mfg Tobias

Edit :
Philipp Frenzel aus den Delphi-Groups
Die kleinste Timerauflösung sollte unter W9x so um 52ms liegen, bei NT kann man AFAIK bis gut 10ms runtergehen.

Pseudemys Nelsoni 28. Dez 2003 18:41

Re: timer zu langsam?
 
jo, ich weiss, da ich aber nicht wusste wo "schluss" ist hab ich halt 1 genommen ;)

MrKnogge 28. Dez 2003 19:46

Re: timer zu langsam?
 
Zitat:

Zitat von Mirilin

Edit :
Philipp Frenzel aus den Delphi-Groups
Die kleinste Timerauflösung sollte unter W9x so um 52ms liegen, bei NT kann man AFAIK bis gut 10ms runtergehen.

Sicher ?
Ich dachte das Minimum von ca. 50ms wäre Hardware bedingt :gruebel:
Tja, man lernt eben immer wieder...

SleepyMaster 28. Dez 2003 19:58

Re: timer zu langsam?
 
nimm doch einen eigenen Thread der ungefähr so aussieht:

Delphi-Quellcode:
while true do
  begin
  sleep(1);
  canvas.Pixels[Random(form1.Width), Random(Form1.Height)] := clRed;
  end;
Oder du lässt das sleep einfach ganz weg!

himitsu 28. Dez 2003 20:28

Re: timer zu langsam?
 
Kannst ja auch mal mehrer Pixel pro Timerinterval zeichnen, vielleicht hilft das ja was.

Delphi-Quellcode:
Procedure TForm1.Timer1Timer(Sender: TObject);
  Var I: Integer;

  Begin
    For I := 1 to 20 do
      Canvas.Pixels[Random(ClientWidth), Random(ClientHeight)] := clRed;
  End;
Statt Width und Height solltest du ClientWidth und ClientHeight verwenden, das gibt die richtige Größe des Canvas an. Bei Width und Height liegen einige gezeichnete Pixel außerhalb des Canvas und es dauert länger, bis alles ausgefüllt wird.
Wenn du es dann noch schafst, das keine Pixel doppelt gezeichnet werden, geht es noch mal viel schneller.

Weitere Timer zu erstellen wird nichts helfen, bei so kurzen Intervallen dürften die sich gegenseitig ausbremsen.

[add]
Ein Thread wird wohl auch nicht viel bringen, die ganze Syncronisation dürfte den Vorteil eines Thread's total vernichten.

SleepyMaster 28. Dez 2003 21:15

Re: timer zu langsam?
 
Liste der Anhänge anzeigen (Anzahl: 1)
@himitsu
was willst du denn alles Syncronisieren??? :gruebel:

Hab mal ein Beispiel angehangen um zu zeigen wie effektiv Threads sind.

himitsu 28. Dez 2003 21:25

Re: timer zu langsam?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Also, ich hab mir deinen Quellcode nicht erst angegukt.

Hab aber mal schnell dein Prog zum abstürzen gebracht - Dauer etwa 1-2 Sekunden.

Hab das Programmfenster einfach mal schnell nach unten (teilweise aus dem Bildschirm raus) und gleich wieder nach oben verschoben.

Und promt ist dein Thread mit dem Refresh des Formulars in konflickt getreten.

Deshalb muß da eine Synchronisation rein !!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:05 Uhr.
Seite 1 von 2  1 2      

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