AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

GetTickCount zögert

Ein Thema von Cöster · begonnen am 1. Sep 2006 · letzter Beitrag vom 2. Sep 2006
Antwort Antwort
Seite 1 von 2  1 2      
Cöster

Registriert seit: 6. Jun 2006
589 Beiträge
 
Turbo Delphi für Win32
 
#1

GetTickCount zögert

  Alt 1. Sep 2006, 21:47
. . . 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 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.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: GetTickCount zögert

  Alt 1. Sep 2006, 21:51
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.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Cöster

Registriert seit: 6. Jun 2006
589 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: GetTickCount zögert

  Alt 1. Sep 2006, 22:04
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.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: GetTickCount zögert

  Alt 1. Sep 2006, 22:10
Was für einen PC hast du? Eine Z3?

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.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Cöster

Registriert seit: 6. Jun 2006
589 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: GetTickCount zögert

  Alt 1. Sep 2006, 22:18
Zitat von 3_of_8:
Was für einen PC hast du? Eine Z3?
Athlon 2400+, 256 MB Grafikspeicher, nicht der beste, aber auch nicht der schlechteste

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.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#6

Re: GetTickCount zögert

  Alt 1. Sep 2006, 22:24
Ich bemerke auch bei 3s nichts Außergewöhnliches .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Cöster

Registriert seit: 6. Jun 2006
589 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: GetTickCount zögert

  Alt 1. Sep 2006, 22:29
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
Angehängte Dateien
Dateityp: exe project1_302.exe (310,0 KB, 34x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: GetTickCount zögert

  Alt 1. Sep 2006, 22:40
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.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: GetTickCount zögert

  Alt 1. Sep 2006, 22:52
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.
  Mit Zitat antworten Zitat
Benutzerbild von Daniel B
Daniel B

Registriert seit: 27. Okt 2005
Ort: Dachau
453 Beiträge
 
Delphi 2007 Professional
 
#10

Re: GetTickCount zögert

  Alt 1. Sep 2006, 23:06
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".
Servus...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 01:06 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