Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Eine Dauerhafte abfrage


qwertzuiopü - Di 14.03.06 00:12
Titel: Eine Dauerhafte abfrage
Hallo zusammen,
wie kann ich eine abfrage durch führen, die startet, wenn das Programm startet und endet, wenn das Programm endet. ich habe es mit einer FOr Schleife probiert, doch es hat nicht geklapt.


Delete - Di 14.03.06 01:03

wie oft willst du sie denn ausführen? jede 1'000tel sekunde?


qwertzuiopü - Mi 15.03.06 14:39

ja, das würde reichen
es muss nur öffter als 10mal pro sekunde sein


Hux - Mi 15.03.06 14:43

ähm..., versuchs mal mit nem Timer...


qwertzuiopü - Mi 15.03.06 21:50

Habe ich schon, doch dieser hat eine fehlfunktion, wenn ich eine andere Funktion ausführe. da diese sehr lange dauert, bis sie abgeschlossen ist und der Timer anscheinend eine Kurze zeit aussetzt.


UGrohne - Mi 15.03.06 23:33

Dann probiers mit einem Suche in: Delphi-Forum, Delphi-Library TTHREAD ;)


Philipp_Reitter - Do 16.03.06 07:56

kann man nicht sagen on create repeat.... deinen script until close.form1???


UGrohne - Mo 20.03.06 11:39

user profile iconPhilipp_Reitter hat folgendes geschrieben:
kann man nicht sagen on create repeat.... deinen script until close.form1???

Nein, 1. gibt es keinen Boolean-Wert, der Dir sagt, wann das Formular geschlossen werden soll, so wie Du es anscheinend dir ausgedacht hast. Und 2. kannst Du in diesem Fall nichts mehr mit dem Form machen, weil die Prozedur OnCreate die ganze Zeit ausgeführt wird.

Wenn Du dann allerdings Application.ProcessMessages in diese Schleife einbaust, dann funktioniert das zwar, aber mehr schlecht als recht und Du wirst die Lösung ziemlich schnell verwünschen ;)

Thread ist besser für so etwas geeignet.


Delete - Mo 20.03.06 20:49

mal eine andere frage. was willst du eigentlich damit erreichen und für was soll das ganze gut sein?


F34r0fTh3D4rk - Di 21.03.06 15:43


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure Abfrage;
begin
  if bla = true then
    {};
  sleep(10);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  tid: cardinal;
begin
  BeginThread(nil0, @Abfrage, nil0, tid);
end;


du musst nur den thread terminieren wenn du ihn nicht mehr brauchst, aber eventuelle Ausgaben die nicht threadsave sind MÜSSEN dann synchronisiert werden !


qwertzuiopü - Di 21.03.06 23:46

ich finde es cool das mir so viel so schnell helfen.

ich möchte das ein Panel immer wieder aktualiesiert wird und bei jeder aktiviewrung ein Button gedrückt wird. und das am besten mehr mal oder mindestens einmal die Sekunde.
In diesem Panel soll die Uhrzeit angezeigt werden und die abfrage überprüft pb eine bestimmte uhrzeit angezeigt wird.

Mein Problem ist nur ich habe einen anderen Button der so um die 2000 einzell elementen etwas zuweist und diese visibel auf True setzt. Ich benutze bis jetzt einen Counddown, der bis 1 zählt und dann das oben genandteausführt und dieser verzählt sich während ich den Button drücke, er zählt 4-6 sekunden zu weit, und findet dadurch kein ende mehr und kann dann seine aufgabe nicht ausführen.


Ich werde jetzt mal die ideen von euch testen.


qwertzuiopü


qwertzuiopü - Mi 29.03.06 10:33

ich habe das jetzt endlich mal ausprobiert, doch hätte es gerne das die uhr immer wieder aktualiesirt wird. wie mache ich das?

Ich brauche eigentlich eine schleife, die anfängt, wenn das Programm startet, und endet, wenn das Programm endet. Diese Schleife soll ihren inhalt jede Sekunde ausführen.

Dadrin steht dan zum Beispiel das die Uhrzeit aktualisirt werden soll oder das Button geklickt werden oder so


F34r0fTh3D4rk - Mi 29.03.06 15:14

dann nimm die TTimer Komponente