AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit dem Timer!?

Ein Thema von fedderle · begonnen am 10. Jan 2003 · letzter Beitrag vom 10. Jan 2003
Antwort Antwort
fedderle

Registriert seit: 3. Jan 2003
Ort: Reiskirchen
51 Beiträge
 
#1

Problem mit dem Timer!?

  Alt 10. Jan 2003, 12:34
Hi!

Hab ein Problem mit einem Timer.
Ich lasse vier Labels alle 100 ms mit Hilfe von einem Timer um zwei Pixel nach unten verschieben!

Das Funktioniert auf meinem Athlon 650 ohne Probleme! Aber auf nem 2 Ghz Rechner bewegen sich die Labels um einiges langsamer! Gleiches Problem auch bei einem 750 Mhz Rechner!

Woran kann das liegen? Brauch dringend Hilfe. Das muss bis Montag funktionieren! Brauch es für die Schule!


Steffen!
  Mit Zitat antworten Zitat
lodda

Registriert seit: 6. Dez 2002
65 Beiträge
 
Delphi 5 Standard
 
#2
  Alt 10. Jan 2003, 12:46
Schau mal nach welche Programme auf den verschiedenen Rechnern im Hintergrund laufen, denn Timerbotschaften haben die eine sehr niedrige Priorität. Wenn viele Anwendungen im Hintergrung laufen, dann kann es sein das einige Timerbotschaften einfach ignoriert werden.
  Mit Zitat antworten Zitat
fedderle

Registriert seit: 3. Jan 2003
Ort: Reiskirchen
51 Beiträge
 
#3
  Alt 10. Jan 2003, 15:39
Das habe ich schon ausprobiert. Auf dem 750 Mhz Rechner hab ich alle Progs im Hintergund geschlossen! Das problem war trotzdem da. Ich hab auch das ganze Programm vor dem Start mal in den Arbeitsspeicher geladen (Mit irgend so nem Tool). Das hat aber auch nicht geholfen.
Am Betriebssystem kann es auch nicht liegen. Ist bei allen Rechnern Windows XP Professionell drauf. Bei mir laufen im Hintergrund mehr Programme als es bei dem 750er normalerweise der Fall ist! Trotzdem funktioniert das ganze nur bei mir.

Hat jemand sonst noch irgend ne Idee woran es liegen könnte! Und falls es doch irgendwie was mit der Priorität zu tun hat wie lodda meint. Kann ich dagegen dann irgendetwas machen außer zu versuchen Programme im Hintergrund zu schließen. Immerhin kann ich das ja nicht auf jedem Rechner vorher machen bzw. machen lassen.

Steffen
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 10. Jan 2003, 15:42
Moin fedderle,

wie sieht's denn mit dem Speicherausbau auf den verschiedenen Rechnern aus?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
fedderle

Registriert seit: 3. Jan 2003
Ort: Reiskirchen
51 Beiträge
 
#5
  Alt 10. Jan 2003, 15:46
Tach Chris!

Also!

650er hat 192 MB.
750er hat 512 MB.
2 Ghz hat 256 MB.

Die haben also beide mehr Arbeitsspeicher als ich auf meinem!
  Mit Zitat antworten Zitat
lodda

Registriert seit: 6. Dez 2002
65 Beiträge
 
Delphi 5 Standard
 
#6
  Alt 10. Jan 2003, 15:53
hallo fedderle

Compilierst du das Programm auf allen Rechnern neu oder kopierst du es einfach auf die anderen Rechner?
  Mit Zitat antworten Zitat
fedderle

Registriert seit: 3. Jan 2003
Ort: Reiskirchen
51 Beiträge
 
#7

Noch ein andres Problem mit dem Timer

  Alt 10. Jan 2003, 16:00
Da fällt mir grad noch was ein!

Habe im gleichen Programm noch ein andres Problem mit dem Timer.

Also es handelt sich um ne Art kleine Demo, in der sich verschiedene Labels zu einer Hintergrundmusik bewegen. Also müssen diese Labels sich manchmal auf 100ms genau bewegen oder verschwinden o.ä.

Da das Lied sehr lang ist. 7 Minuten habe ich bei der Programmierung die Mp3 Datei in einzelne Stücke geschrieben und dann die einzelenen Teile des Programmcodes zusammengefügt. Und genau an diesen Stellen, wo ich das Programm zusammengefügt habe, hab ich nun folgendes Problem.

Wenn ich Delphi im Hintergund laufen lasse und den Timer dann einstelle, damit der nächste Teil wieder synchron zur Musik ist, dann stimmt der Zeitabstand auch nur so lange, bis ich Delphi wieder schließe. Also wenn ich die Exe-Datei einfach alleine öffne ist genau an diesen Stellen dann eine Verzögerung im Programm. Aber nur bei einem von den zwei Timern, die ich verwende. (Oder sollte man keine zwei Timer verwenden? ) bei den restlichen Pausen, die ich mit dem Timer erzeuge, tritt das Problem nicht auf.

Kann mir da jemand helfen?

Steffen!
  Mit Zitat antworten Zitat
fedderle

Registriert seit: 3. Jan 2003
Ort: Reiskirchen
51 Beiträge
 
#8
  Alt 10. Jan 2003, 16:05
Hi lodda!


Zitat von lodda:
hallo fedderle

Compilierst du das Programm auf allen Rechnern neu oder kopierst du es einfach auf die anderen Rechner?
Also ich hatte das Programm Compiliert aber auch mit den Delphidateien in ein selbstextrahierendes Ace-Archiv gepackt. Bei dem 750 Mhz Rechner hab ich nachdem es nicht synchron zur Musik war neu compiliert. Der Fehler trat erst ca. 15 Sekunden später auf.

Steffen!
  Mit Zitat antworten Zitat
lodda

Registriert seit: 6. Dez 2002
65 Beiträge
 
Delphi 5 Standard
 
#9
  Alt 10. Jan 2003, 16:20
Schick mir mal die wichtigen Teile von deinem Programm.Vielleicht kann ich dann erkennen wo das Problem liegt.
  Mit Zitat antworten Zitat
fedderle

Registriert seit: 3. Jan 2003
Ort: Reiskirchen
51 Beiträge
 
#10
  Alt 10. Jan 2003, 18:45
Zitat von lodda:
Schick mir mal die wichtigen Teile von deinem Programm.
Also Hier ist ein Auszug aus dem Programm!!

On Create von der Form "FormCredits":
Delphi-Quellcode:
procedure TFormCredits.FormCreate(Sender: TObject);
begin
   AssignFile(schrift, 'lauf.ste');
   Reset(schrift);
   randomize;
   k := 0;
   j := 0;
   i := 0;
   m := 0;
   n := 0;
   XLabel := -1;
   XLabel2 := -1;
   FormCredits.Player.play;
   FormCredits.TimerLabel1.Enabled := true;
   FormCredits.TimerLabel2.Enabled := true
end;
Auszug aus der Prozedur des ersten von den beiden Timer:
Delphi-Quellcode:
procedure TFormCredits.TimerLabel1Timer(Sender: TObject);
var l, o, p : integer;
begin
  Inc(XLabel);
   case XLabel of

...


     46: FormCredits.Label2.Caption := 'Patrick B ';
     47: FormCredits.Label2.Caption := 'Patric ';
     48: FormCredits.Label2.Caption := 'Pat ';
     49: begin FormCredits.Label2.Visible := false;
                FormCredits.TimerLabel1.Interval := 300;
                if i >= 3 then begin XLabel := 54;
                                     i := 0;
                                     FormCredits.TimerLabel1.Interval := 100
                               end
          end;
     50: begin FormCredits.Label1.Visible := true;
                FormCredits.Label2.Visible := true;
                FormCredits.TimerLabel1.Interval := 100
          end;
     51: FormCredits.Label2.Caption := 'Patric ';
     52: FormCredits.Label2.Caption := 'Patrick B ';
     53: FormCredits.Label2.Caption := 'Patrick Bor ';
     54: begin FormCredits.Label2.Caption := 'Patrick Borsch';
                FormCredits.TimerLabel1.Interval := 1600;
                if i <= 2 then begin XLabel := 44;
                                     Inc(i)
                               end
          end;
     55: begin FormCredits.ImageBack.Picture.LoadFromFile('Bilder\Bild2.jpg');
                FormCredits.TimerLabel1.Interval := 100
          end;
     56: begin FormCredits.Label4.Top := -15;
                FormCredits.Label4.Visible := true;
                FormCredits.Label3.Top := -75;
                FormCredits.Label3.Visible := true;
                FormCredits.Label2.Caption := 'Patrick Borsch';
                FormCredits.Label2.Top := -135;
                FormCredits.Label2.Visible := true;
                FormCredits.Label1.Caption := 'Idee';
                FormCredits.Label1.Top := -205;
                FormCredits.Label1.Visible := true;
                FormCredits.TimerLabel1.Interval := 1
          end;
     57: begin FormCredits.Label4.Top := FormCredits.Label4.Top + 2;
                FormCredits.Label3.Top := FormCredits.Label3.Top + 2;
                FormCredits.Label2.Top := FormCredits.Label2.Top + 2;
                FormCredits.Label1.Top := FormCredits.Label1.Top + 2;
                FormCredits.TimerLabel1.Interval := 5;
                Inc(i);
                if i < 370 then XLabel := 56 else i := 0
          end;
     58: begin FormCredits.Label4.Top := FormCredits.Label4.Top - 2;
                FormCredits.Label3.Top := FormCredits.Label3.Top - 2;
                FormCredits.Label2.Top := FormCredits.Label2.Top - 2;
                FormCredits.Label1.Top := FormCredits.Label1.Top - 2;
                Inc(i);
                if i < 180 then XLabel := 57 else begin i := 0;
                                                        FormCredits.TimerLabel1.Interval := 100
                                                  end
          end;
     59: begin FormCredits.Label1.Font.Color := clred;
                FormCredits.Label2.Font.Color := clblue;
                FormCredits.Label3.Font.Color := clgreen;
                FormCredits.Label4.Font.Color := clyellow
          end;
     60: begin FormCredits.Label1.Font.Color := clred;
                FormCredits.Label2.Font.Color := clyellow;
                FormCredits.Label3.Font.Color := clblue;
                FormCredits.Label4.Font.Color := clgreen
          end;
     61: begin FormCredits.Label1.Font.Color := clred;
                FormCredits.Label2.Font.Color := clgreen;
                FormCredits.Label3.Font.Color := clyellow;
                FormCredits.Label4.Font.Color := clblue;
                Inc(i);
                if i <= 36 then XLabel := 58 else i := 0
          end;
     62: begin FormCredits.Label1.Visible := false;
               FormCredits.Label2.Visible := false;
               FormCredits.Label3.Visible := false;
               FormCredits.Label4.Visible := false;
               FormCredits.Label1.Top := FormCredits.Label1.Top + 20;
               FormCredits.TimerLabel1.Interval := 1500
         end;
     63: begin FormCredits.Label5.Caption := 'Musikauswahl';
               FormCredits.Label6.Caption := 'und';
               FormCredits.Label7.Caption := 'Musikschnitt';
               FormCredits.Label5.Font.Size := 30;
               FormCredits.Label6.Font.Size := 20;
               FormCredits.Label7.Font.Size := 30;

               FormCredits.TimerLabel1.Interval := 1
         end;


...


   else exit end
end;
Steffen!
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:18 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