AGB  ·  Datenschutz  ·  Impressum  







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

Timer.Interval<1

Ein Thema von Martin.Ghosts · begonnen am 8. Jun 2006 · letzter Beitrag vom 9. Jun 2006
Antwort Antwort
Seite 1 von 2  1 2      
Martin.Ghosts

Registriert seit: 9. Dez 2005
54 Beiträge
 
Delphi 7 Personal
 
#1

Timer.Interval<1

  Alt 8. Jun 2006, 21:14
Hallo zusammen,

ich habe ein kleines Problem mit der Timer-Komponente. Ich möchte einen Interval haben, der kleiner 1 ist. Ist mir jedoch klar, dass das nicht klappt (oder doch?). Nun habe ich versucht, eine "eigene" Timer-Komponente mit der Procedure sleep zu simulieren. Ich habe eine eigene Procedur erstellt, die am Ende die Procedure sleep ausführt und dann sich selbst wieder aufruft. Jedoch schläft dabei das Programm ein. Kennt jemand eine Möglichkeit, kleinere Intervalle als 1ms zu realisieren?

Schon mal danke für jegliche Hilfe,
Martin.Ghosts
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Timer.Interval<1

  Alt 8. Jun 2006, 21:16
das macht keinen Sinn, alles unter ca. 20 ms macht keinen Sinn weil deine Windows deinem Programm in der Regel nicht viel mehr Zeit am Stück gibt. Wozu brauchst du einen so kleinen Interval? Da macht es doch eher sein das ganze in einer Schleife auszuführen ohne darin zu warten.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Martin.Ghosts

Registriert seit: 9. Dez 2005
54 Beiträge
 
Delphi 7 Personal
 
#3

Re: Timer.Interval<1

  Alt 8. Jun 2006, 21:21
Ich bin ein klassisches Pongspiel am programieren und will den Ball immer um einen Pixel verschieben. Mit einem Interval von 1 ist er mir aber zu langsam. Bei einer Verschiebung von mehr als einem Pixel kann es passieren, dass der Ball teilweise den Rand des Formulars überschreitet.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.167 Beiträge
 
Delphi 12 Athens
 
#4

Re: Timer.Interval<1

  Alt 8. Jun 2006, 21:25
In DelphiX soll ein schnellerer Timer drin sein.

Aber warum immer nur ein Pixel ... mach doch Mehrere

Du kannst dir natürlich auch mit QueryPerformanceCounter, RealTimeStampCounter, oder ...
was eigenes aufbauen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  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
 
#5

Re: Timer.Interval<1

  Alt 8. Jun 2006, 21:26
Zitat von Martin.Ghosts:
Bei einer Verschiebung von mehr als einem Pixel kann es passieren, dass der Ball teilweise den Rand des Formulars überschreitet.
Aber nur so ergibt es Sinn. Frag doch einfach ab:

Delphi-Quellcode:
if Ball.X <= linke_Wand then
  // links
else if Ball.X >= ...
else if Ball.Y <= ...
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Timer.Interval<1

  Alt 8. Jun 2006, 21:26
sinnvoller wäre es wenn du die Position andauern um eins verschiebst (in einer Extra Variablen) und in geringeren Abständen dann den Ball zeichnest. Denn kleiner als 1ms macht da keinen Sinn, das sieht man nicht und die cpu wird vermutlich auch zu 100% ausgelastet sein. 25 Bilder (also 25 mal verschieben deines Balles) reicht vollkommen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#7

Re: Timer.Interval<1

  Alt 8. Jun 2006, 21:32
esist doch auch möglich, ob bei einer Verschiebung von 20 Pixeln nach links z.b. der linke rand erreicht wird (x<=0) .. da muss man doch net jeden Pixel einzelnd prüfen.. so käme man bei größeren Computerspielen auch net weit ^^
Dann reicht ein Intervall von 20ms gut..
Florian Heft
  Mit Zitat antworten Zitat
Martin.Ghosts

Registriert seit: 9. Dez 2005
54 Beiträge
 
Delphi 7 Personal
 
#8

Re: Timer.Interval<1

  Alt 8. Jun 2006, 21:39
Zitat:
Aber nur so ergibt es Sinn. Wink Frag doch einfach ab:
Delphi-Quellcode:
Delphi-Quellcode:    markieren
if Ball.X <= linke_Wand then
  // links
else if Ball.X >= ...
else if Ball.Y <= ...
(zu Matze) Diese Abfrage mache ich schon. Aber der Ball geht erst einmal über den Rand hinaus und würde dann erst die Richtung wechseln (bei einer Verschiebung über 1 Pixel).


Zitat:
sinnvoller wäre es wenn du die Position andauern um eins verschiebst (in einer Extra Variablen) und in geringeren Abständen dann den Ball zeichnest.
(zu Sir Thornberry) Wie meinst du das? Ist das nicht genau das gleiche ergebnis wie bei mir?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Timer.Interval<1

  Alt 8. Jun 2006, 21:41
ich hab die Vermutung das du versuchst alle 1 ms ein TImage oder etwas anderes zu malen. Unter Windows dauert das malen aber von allem am längsten. Das heißt du solltest das Malen nur so häufig machen wie es wirklich nötig ist (also maximal 25 mal in der Sekunden). Ansonsten einfach nur die Position berechnen aber nichts verschieben
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  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
 
#10

Re: Timer.Interval<1

  Alt 8. Jun 2006, 21:45
Zitat von Martin.Ghosts:
(zu Matze) Diese Abfrage mache ich schon. Aber der Ball geht erst einmal über den Rand hinaus und würde dann erst die Richtung wechseln (bei einer Verschiebung über 1 Pixel).
Teste doch einfach vorm Verschieben, ob's drüber hinaus geht und verschiebe nach der Abfrage.
  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 06:02 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