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 GetTickCount zögert (https://www.delphipraxis.net/76307-gettickcount-zoegert.html)

Cöster 1. Sep 2006 20:47


GetTickCount zögert
 
:gruebel: . . . HI!

Mir ist gerade was komisches passiert. Wenn man auf einem Image.Canvas außerhalb des Canvas-Bereiches zeichnet, zögert die Aktualisierung von GetTickCount.

Ist ziemlich schwer zu erklären, deswegen hier einfach der Code, dann könnt ihr's selber ausprobieren:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Start, Y: Integer;
begin
  Start := GetTickCount;
  Y := 0;
  repeat
    Image1.Canvas.Ellipse(0, Y, 50, Y+50);
    Y := Y - 10;
    TrackBar1.Position := GetTickCount-Start;
    Application.ProcessMessages;
  until TrackBar1.Position = TrackBar1.Max;
end;
Auf der Form befinden sich also Image, TrackBar und Button.

Dieses Problem tritt nicht auf, wenn man statt eines Images eine PaintBox benutzt. Wenn man die Zeile
Delphi-Quellcode:
Application.ProcessMessages;
weglässt, läuft der TrackBar auch glatt.

Kennt jemand das Problem? Warum ist das so?

EDIT:
TrackBar.Min ist 0, Max ca. 3000. Y könnt ihr am Anfang auch auf nen höheren Wert setzen (500), und statt um 10 könnt ihr es auch um 1 oder so erniedrigen.

3_of_8 1. Sep 2006 20:51

Re: GetTickCount zögert
 
GetTickCount aktualisiert sich meines Wissens in einem eigenen Thread. Daher kann das nicht sein.

Das Problem ist vermutlich das, dass Application.ProcessMessages zu lange braucht und daher die Schleife lange bis zum nächsten Schritt braucht. Das dürfte aber normalerweise auch nicht sein.

Cöster 1. Sep 2006 21:04

Re: GetTickCount zögert
 
Zitat:

Zitat von 3_of_8
GetTickCount aktualisiert sich meines Wissens in einem eigenen Thread. Daher kann das nicht sein.

Das Problem ist vermutlich das, dass Application.ProcessMessages zu lange braucht und daher die Schleife lange bis zum nächsten Schritt braucht. Das dürfte aber normalerweise auch nicht sein.

Das hat mich ja auch gewundert: ES KANN SEIN! Der TrackBar läuft nicht glatt durch. Vielleicht ist es an deinem Rechner ja anders, glaub ich aber kaum. Du könntest es ja auch mal ausprobieren und dann schreiben, wie es bei dir aussieht.

3_of_8 1. Sep 2006 21:10

Re: GetTickCount zögert
 
Was für einen PC hast du? Eine Z3? :lol:

Wenn ich auf den Button klicke, ist die Trackbar so gut wie sofort am anderen Ende und ich sehe 4 Ellipsen auf dem Image. Egal ob mit oder ohne Application.ProcessMessages.

Cöster 1. Sep 2006 21:18

Re: GetTickCount zögert
 
Zitat:

Zitat von 3_of_8
Was für einen PC hast du? Eine Z3? :lol:

Athlon 2400+, 256 MB Grafikspeicher, nicht der beste, aber auch nicht der schlechteste :mrgreen:

Zitat:

Zitat von 3_of_8
Wenn ich auf den Button klicke, ist die Trackbar so gut wie sofort am anderen Ende und ich sehe 4 Ellipsen auf dem Image. Egal ob mit oder ohne Application.ProcessMessages.

Hast du auch TrackBar.Min auf 0 und TrackBar.Max auf 3000? 'so gut wie sofort' wär dann nämlich auch nicht ganz richtig. Es müsste, wenn alles richtig liefe, 3 Sek dauern. Wenn TrackBar.Max zu niedrig ist, fällt der Fehler kaum auf.

Khabarakh 1. Sep 2006 21:24

Re: GetTickCount zögert
 
Ich bemerke auch bei 3s nichts Außergewöhnliches :stupid: .

Cöster 1. Sep 2006 21:29

Re: GetTickCount zögert
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hä? Moment, ich lad die Exe einfach mal hoch, dann geh ich sicher, dass ihr auch wirklich das gleiche Programm habt wie ich.
Guckt nur auf den TrackBar. Wenn er dann immer noch ganz glatt und gleichmäßig läuft, hab ich wohl wirklich nen scheiß Computer :wall:

3_of_8 1. Sep 2006 21:40

Re: GetTickCount zögert
 
Läuft richtig schön smooth durch.

BTW: Dass du eine Z3 hast, erkennst du an dem charakteristischen Klackern und dem Gewicht von etwa einer metrischen Tonne.

Matze 1. Sep 2006 21:52

Re: GetTickCount zögert
 
Hi

Also bei mir läuft das absolut nicht schön durch. Zuerst geht's wenige Pixel sehr schnell, dann etwas langsamer und anschließend macht die Trackbar 2 riesige Sprünge bis zum Ende. (Athlon XP 2800+, 1 GB RAM).

Aber woran das liegen kann, weiß ich auch nicht. :gruebel:

Daniel B 1. Sep 2006 22:06

Re: GetTickCount zögert
 
Also bei mir läuft die TrackBar gleichmässig durch, braucht ca. 4 Sek. dazu. Der weisse Flecke ist in < 0.5sek. durch und hinterlässt den schwarzen Balken.

Warum es bei manchen nicht gleichmässig läuft, ist mMn das die ProcessMessages gar nicht richtig läuft, feststellen kann man dies, indem man während die TrackBar läuft, es nicht möglich ist das Programm zu beeenden, man kann die Bar dadurch leicht bremsen, die Ereignisreihenfolge/Abarbeitung ist da nicht ganz "zuverlässig".


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

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