AGB  ·  Datenschutz  ·  Impressum  







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

Timer wird zu langsam

Ein Thema von Larsi · begonnen am 4. Mär 2008 · letzter Beitrag vom 5. Mär 2008
Antwort Antwort
Seite 1 von 3  1 23      
Larsi

Registriert seit: 10. Feb 2007
2.262 Beiträge
 
Delphi 2007 Professional
 
#1

Timer wird zu langsam

  Alt 4. Mär 2008, 12:23
Hi,
ich habe einen Timer der eine Grafik bewegen soll, das funktioniert ja auch schon ganz gut! Aber wenn ich jetzt gleichzeitig eine andere Speicherfressende Sachen wie zb das suchen nach dateien in Delphi oder das löschen von mehreren Dateien bleibt der Timer einfach stehn! Ich habe mal was von IdProcessMessage oder irgendwie sowas gehört, hat das was damit zu tun, also ich will der der Timer weiterlüft. Und mit Threads kenn ich mich leider auch nicht besonders aus also wäre es gut wenn mit jemand mein Problem einfach lösen kann. Wäre sehr dankbar

Habe auch schon das Tutorial von dsdt oder wie das heißt über Threads falls die damit überhaupt was zu tun haben gelesen aber irgnedwie sieht das nach sehr viel Arbeit aus. Gehts nicht einfacherer?

MFG Lars Wiltfang
Ein Tag ohne Delphi ist ein verlorener Tag!

Homepage zu meinem neuen Programm: StreamZ
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Timer wird zu langsam

  Alt 4. Mär 2008, 12:25
Threads sind ganz einfach.
Und du hast den richtigen (und einzigen) Lösungsansatz gefunden.

Wo klemmt es denn?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.170 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Timer wird zu langsam

  Alt 4. Mär 2008, 12:28
VCL-Anwendungen sind alles andere als geeigent für Echzeit-GUI-Aktionen. Hierfür arbeitest Du dich am besten auch in das Thema DirectX ein.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Larsi

Registriert seit: 10. Feb 2007
2.262 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Timer wird zu langsam

  Alt 4. Mär 2008, 12:56
Es geht mir grunsätzlich darum dass der Timer zu langsam ist jetzt nicht nur bei Grafik Sachen. Also mein Problem ist dass ich nicht weiß wie ich das machen soll mit dem Thread. Wenn mit jemand mal den Code dafür geben könnte wie ein Timer besser arbeitet wäre ich diesem wirklich sehr sehr sehr dankbar da ich schon sehr lange nach einer Lösung suche aber irgendwie hab ich das alles nciht kapiert!
Ein Tag ohne Delphi ist ein verlorener Tag!

Homepage zu meinem neuen Programm: StreamZ
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.754 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Timer wird zu langsam

  Alt 4. Mär 2008, 13:07
Hallo Lars,

was ist denn Dein Problem?
Ist es, dass die Aufgaben nicht in einem Timerintervall erledigt werden können?
Oder ist Dir das kleinste Interval (20ms) zu groß?
Wenn es das zweite Problem sein sollte, kannst Du dir mal den MultimediaTimer anschauen.
Wenn es das erste Problem sein sollte -> Threads einsetzen oder das design ändern.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Timer wird zu langsam

  Alt 4. Mär 2008, 13:09
Es geht bei Threads nicht um den Timer. Es geht bei Threads darum, dass du solche Sachen:
Zitat:
zb das suchen nach dateien in Delphi oder das löschen von mehreren Dateien
in einen Thread auslagerst und dadurch allea was GUI betrifft ohne Probleme läuft.

Dazu nimmst du am einfachsten eine Ableitung der Klasse TThread. Im constructor übergibst du Initialisierungsparameter und im Ereignis onTerminate liest du das Ergebnis aus.
Wichtig ist, dass du dazwischen keine Variablen/Objekte aus dem anderen Thread/MainThread benutzt. Ansonsten musst du mit Synchronisieren anfangen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.170 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Timer wird zu langsam

  Alt 4. Mär 2008, 13:12
Zitat von Larsi:
Es geht mir grunsätzlich darum dass der Timer zu langsam ist jetzt nicht nur bei Grafik Sachen.
TTimer setzt auf den simplen Timer von Windows auf und der schlägt maximal 20/50 mal pro Sekunde zu. Alternative währen hier sog. Multimedia-Timer (Forensuche bemühen) die eine kleinere Auflösung bieten.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Larsi

Registriert seit: 10. Feb 2007
2.262 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Timer wird zu langsam

  Alt 4. Mär 2008, 14:57
Kann mir denn keiner ein simples Beispiel dafür geben wie ich dann z.b. das löschen mehreren dateien mit einem thread mache der aktiv ist wenn man auf nen button klcikt. Das mit dem löschen krieg ich natärlich selber schon mir gehts eher um den thread!
Ein Tag ohne Delphi ist ein verlorener Tag!

Homepage zu meinem neuen Programm: StreamZ
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Timer wird zu langsam

  Alt 4. Mär 2008, 19:06
Wenn wir dem oben genannten Konzept bleiben:

Delphi-Quellcode:
type TCopy=class(TThread)
       constructor Create(const aPassword, aQuelle, aZiel : String);
      protected
       procedure execute; override;
      private
       FPassword:string;
       FQuelle:string;
       FZiel:string;
end;

...
constructor TCopy.Create(const aPassword, aQuelle, aZiel : String);
begin
  inherited Create(false); //false=> Thread gleich nach dem Constructor starten
  FreeOnTerminate:=True; //Objekt löschen, wenn Thread beendet wurde
  FPassword:=aPassword;
  FQuelle:=aQuelle;
  FZiel:=aZiel;
end;

procedure TCopy.execute;
begin
  XORCrypt(FPassword, FQuelle, FZiel);
    
end;



//.... Aufruf von irgendwoher, Beispiel:

procedure TForm1.Button1click(...);
...
begin

  TCopy.create('DasPassword', Edit1.text, Edit1.text);
  //Objektzeiger brauchen wir nicht zu speichern, da er nicht mehr benötigt wird
  //Objekt gibt sich ja selber frei
end;
Das ist die einfachste Version mittels TThread. du kannst die Klasse auch noch weiter ausbauen und dich z.B. benachrichtigen lassen, wenn der Thread fertig ist, oder noch andere Sachen machen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Larsi

Registriert seit: 10. Feb 2007
2.262 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Timer wird zu langsam

  Alt 5. Mär 2008, 14:18
Danke aber ich glaub ich bin zu blöd Wie kann ich denn jetzt diese einzelne Zeile die auf keine Variablen sondern nur auf einen schon oben genannte Funktion zugreift in nen Thread packen? Am besten wärs wenn das ganze in einer Button Procedur unterbring bar wäre!
XORCrypt('DasPassword', Edit1.text, Edit1.text);
Ein Tag ohne Delphi ist ein verlorener Tag!

Homepage zu meinem neuen Programm: StreamZ
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 07:10 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