Autor Beitrag
Nickture
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

Win 98
D2
BeitragVerfasst: Fr 10.10.03 15:34 
Ich Suche Eine alternative zum Objekt TTimer Denn es ist zu langsam für meine anwendung Erstens braucht er zum aufruf der procedur bei ontimer offenbar zu lange und zweitens ist die minimale zeit von 1 ms immer noch viel zu viel für meine anwendung ich müsste irgendwie so auf etwa 0,01ms kommen weis Irgendwer Abhilfe ?? :?:
joerg68
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 116

Win 2000
D5Enterprise
BeitragVerfasst: Fr 10.10.03 16:02 
Was hast Du den vor das Du einen Timer brauchst der 0,01 ms Intervalle hat. :o In der Zeit kann der Rechner ja so gut wie nix berechnen. zumindest nix aufwendiges :wink:
Ich vermute auch das Du bei Diesen Zeitabständen auch schon an die Grenzen des normalen PC stoßen wirst
Gruss
Jörg

_________________
Aus den Chaos sprach eine Stimme " Lächele und sei froh denn es könnte schlimmer kommen". Und ich lächelte und ich war froh.
UND ES KAM SCHLIMMER
opfer.der.genauigkeit
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 754
Erhaltene Danke: 1



BeitragVerfasst: Fr 10.10.03 17:30 
Bei 0,01 ms an Grenzen stoßen. Was hastn du für'n PC bzw. was programmierst du in die Timer rein? :D :wink:
Threads sind meines Wissens nach sogar noch schneller. (Wenn man sie nicht bremst).

Ich dachte mal '100 Millionen Arbeitsschritte pro Sekunde bedeutet eine Taktfrequenz von 100 MHz'.

Nickture wenn du deinen Timer als Endlosautomaten verwendest, dann bedien dich lieber eines Thread.

_________________
Stellen Sie sich bitte Zirkusmusik vor.
Nickture Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

Win 98
D2
BeitragVerfasst: Sa 11.10.03 21:34 
Titel: naja 0,01 ms vielleicht übertrieben
ok ich gebe zu die 0,01 ms wahren ein bischen übertrieben aber den timer bekomm ich selbst bei einer einstellung von 1 also 1ms nur auf ca. 600 takte in der minute sprich 10 in der sekunde und an die 500 besser 1000 in der sekunde bräucht ich die berechnung die er macht ist nicht aufwendig und mit einer repeatschleife ging es auch schneller habe ich schon probiert aber das problem ist das ich die repeatschleife nicht abgebrochen bekomme und das ist wichtig. die on timer sieht zur zeit so aus :
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Timer4Timer(Sender: TObject);
 Var I :Integer;
  begin
   Aus := Inport($0304);
   Aus := Inport($0300);
   If (Aus > 38and (Aus < 128Then
    Begin
     Aus := Random(256)-1;
     Lampensteuerung(Aus);
     end;
  end;

Inport ist eine funktion die über einen assembler den betreffenden port anspricht und die ist längst schnell genug hab ich getestet.
@ opfer.der.genauigkeit
von threads hab ich keine ahnung ich bin anfänger wenn du mir helfen könntest war ich aber trotzdem sehr dankbar. der PC ist ein 700er PIII das programm soll nacher aber auch auf einem 200PII LAufen aber selbst da schaff ich es mit dem repeat auf problemlos 10.000 Aufrufe in einem 1s Timer
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 12.10.03 00:19 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
var
  bCanceled := False;

procedure foo;
begin
  repeat 
    Application.ProcessMessages;
    ...;
    ...;
  until (...) or bCanceled
end;

procedure TForm1.Button1OnClick(Sender: TObject);
begin
  bCanceled := True;
end;


Ein normaler Windows Timer hat unter Windows9x eien auflösung von ca. 50 Millisekunden, unter Windows2000/XP bis 10 Millisekunden.
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: So 12.10.03 11:06 
Zitat:
da schaff ich es mit dem repeat auf problemlos 10.000 Aufrufe in einem 1s Timer


hmm, solange du in deiner Repeat Schleife kein Application.ProcessMessage einbaust, schafft die zig Milliarden Repeats, da solche Schleifen, wenn sie die Kontrolle nicht abgeben, alles des aktuellen Prozesses (deine Anwendung) anhalten.

Und wenn du einen Timer benutzt und Application.processMessages, muss unbedingt der Timer bei Eintritt in seine Funktion disabled werden. SOnst ruft er sich auf, wenn die Zeit heran ist aber deine Funktion noch nicht zu Ende ist. Das gibt dann nette Ergebnisse. Application.ProcessMessages hat auch die unschöne Eigenschaft, dass ich dann den focus auf eine andere Anwendung setzen kann, z.b. einem Raytracer - der gerade mal DOOM IV neu rendert und deine Proc nun keine Rechenzeit mehr erhält.

grez
msch

_________________
ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
Nickture Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

Win 98
D2
BeitragVerfasst: So 12.10.03 19:26 
Titel: @ lukie
Du schreibst eine repeat schleife die durch buttonclick abgebrochen wird aber bei mir war das bisher immer so das wenn er die schleife gestartet hatte auf keinen buttonklick oder ähnliches mehr reagiert hat auch auf tastendruck nicht daher hab ich es mit dem timer versucht oder bringt dieses Application.ProcessMessages; das das er beim jedem neustart der schleife erst auf clicks etc. reagiert ??
tut mir leid wenn ich etwas dumm frage aber ich bin nunmal ziemlicher anfänger aber trotzdem Danke