Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Schleifenfunktion? (https://www.delphipraxis.net/105940-schleifenfunktion.html)

BullsEye 2. Jan 2008 18:28


Schleifenfunktion?
 
Hallo,

ich brauche eine Art Schleifenfunktion.
Dies soll bewirken, dass alle X Stunden (Edit2.text) etwas ausgeführt wird (Button1.Click) Die soll allerdings nur geschehen, wenn ich eine Checkbox angeklickt wurde (checkbox1.ckecked := true).
Welche Schleife kann ich da am besten wie nehmen?

mkinzler 2. Jan 2008 18:31

Re: Schleifenfunktion?
 
TTImer, oder besser als geplanter Task unter Windows

BullsEye 2. Jan 2008 19:01

Re: Schleifenfunktion?
 
Zitat:

Zitat von mkinzler
TTImer, oder besser als geplanter Task unter Windows

Ok, und wie läuft das mit der Schleife selbst?
Ich kann dann des ja einfach als geplanten Task unter Windows eintragen und dann im On Form Create den Buttonclick festlegen.

1234588 2. Jan 2008 19:37

Re: Schleifenfunktion?
 
warum bestehst du unbedingt auf eine schleife?

Klaus01 2. Jan 2008 19:42

Re: Schleifenfunktion?
 
Guten Abend,

wenn Du mit Deinem Programm bestimment willst
wie oft, oder wann etwas gestartet werden soll,
so ist dieser Thread vielleicht etwas für Dich.

Grüße
Klaus

BullsEye 2. Jan 2008 20:09

Re: Schleifenfunktion?
 
Wenn ich das nicht mit einer Schleife mache, muss ich ja jedes Mal das Programm neu starten.!?

mkinzler 2. Jan 2008 20:11

Re: Schleifenfunktion?
 
Das wird ja von Windows erledigt

Klaus01 2. Jan 2008 20:15

Re: Schleifenfunktion?
 
Erzähl doch einmal was Dein Programm machen soll.
Vielleicht können wir Dir da besser helfen?

Eine Schleife ist ein denkbar schlechte Wahl um etwas wiederkehrendes,
das so weit auseinanderliegt (x Stunden), auszuführen.

Da ist ein Timer schon die bessere Alternative.
Der Timer hat ein Interval (in ms) das Du entsprechend
setzen kannst.
Auch kann der Timer ein und ausgeschaltet werden (enabled = true oder false).
Da würde dann Deine Checkbox ganz gut passen.

Grüße
Klaus

BullsEye 2. Jan 2008 20:31

Re: Schleifenfunktion?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von mkinzler
Das wird ja von Windows erledigt

Ja schon aber wenn ich das nicht wieder schließe hab ich ja nach nem Tag X geöffnete Fenster

Ich hab es nun mal so gemacht aber iwie stimmt das was nicht.

Delphi-Quellcode:
procedure TfrmMain.CheckBox1Click(Sender: TObject);
VAR stunden, i : longint;
begin
IF (CheckBox1.Checked = true) THEN BEGIN
stunden := StrToInt(Edit2.text);
stunden := stunden * 3600000;
END;
FOR i := 1 TO 2 DO
BEGIN
Button1.Click;
sleep(1000);
END;
i := i-1;
end;
Ich hab ein Prog (siehe Bild im Anhang) und da soll das so geschehen, das sich alle 3 Stunden Button1 geclickt wird

Die Muhkuh 2. Jan 2008 20:39

Re: Schleifenfunktion?
 
Oh je. Mach einen Windows-Task, der das Programm alle drei Stunden aufruft. Im Programm schließt Du nach dem Klicken das Programm wieder. Somit keine x geöffneten Fenster.

BullsEye 2. Jan 2008 20:43

Re: Schleifenfunktion?
 
Zitat:

Zitat von Die Muhkuh
Oh je. Mach einen Windows-Task, der das Programm alle drei Stunden aufruft. Im Programm schließt Du nach dem Klicken das Programm wieder. Somit keine x geöffneten Fenster.

hm wäre auch ne Möglichkeit aber aber das wird denn alles nicht so, wie ich das haben will^^
Und es bietet einige Nachteile

Klaus01 2. Jan 2008 20:45

Re: Schleifenfunktion?
 
ich finde es immer noch, dass der Ansatz falsch ist.
Aber Du willst es ja nicht anders.

Delphi-Quellcode:
procedure TfrmMain.CheckBox1Click(Sender: TObject);
VAR zeit, i : longint;
begin
  IF CheckBox1.Checked THEN
    BEGIN
      zeit := StrToInt(Edit2.text);
      zeit := zeit * 3600;
    END;

    i:=0;
    // fast endlos Schleife
    while CheckBox1.checked do
    BEGIN
      if i = zeit then
        begin
           Button1.Click;
           i:=0
        end;
      //sleep(1000);
      delay(1000);
      inc(i,1000);
    END;

end;
Die delay Funktion findest Du hier im Forum.
Grüße
Klaus

BullsEye 2. Jan 2008 20:49

Re: Schleifenfunktion?
 
Zitat:

Zitat von Klaus01
ich finde es immer noch, dass der Ansatz falsch ist.
Aber Du willst es ja nicht anders.

Im Grunde gebe ich dir da Recht, nur ist das so für mich besser zu regelen und später sollen noch einige Funktionen hinzukommen. Deswegen. Aber danke, der Ansatz hilft mir!

Klaus01 2. Jan 2008 20:54

Re: Schleifenfunktion?
 
Oder so:

Delphi-Quellcode:
procedure TForm1.CheckBox1Click(Sender: TObject);
var
  stunden: Integer;
  zeit: LongInt;
begin

  if checkbox1.Checked then
    begin
      stunden:=StrToInt(Edit1.Text);
      zeit:=stunden * 3600;
      Timer1.Interval:=zeit*1000;
    end;
  Timer1.Enabled:=checkbox1.Checked;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  button1.Click;
end;
Gute Nacht.
Grüße
Klaus

Die Muhkuh 2. Jan 2008 20:55

Re: Schleifenfunktion?
 
Sorry, aber von allen Lösungen ist Deine echt die schlechteste. Wenn man wüsste, was Dein Programm macht, könnte man Dir noch besser helfen. Einen Button anklicken, der dann wieder irgendwas macht.

Du könntest eine Consolen-App z.B. mit Parameter aufrufen und dann entsprechenden Code ausführen.

Quasi ist alles besser, als das, was Du vor hast.

BullsEye 2. Jan 2008 20:59

Re: Schleifenfunktion?
 
Zitat:

Zitat von Die Muhkuh
Sorry, aber von allen Lösungen ist Deine echt die schlechteste. Wenn man wüsste, was Dein Programm macht, könnte man Dir noch besser helfen. Einen Button anklicken, der dann wieder irgendwas macht.

Du könntest eine Consolen-App z.B. mit Parameter aufrufen und dann entsprechenden Code ausführen.

Quasi ist alles besser, als das, was Du vor hast.

Der Button bewirkt, das eine URL aufgerufen wird, die in dem Edit Feld steht.

Die Muhkuh 2. Jan 2008 21:01

Re: Schleifenfunktion?
 
Und warum das ganze nicht per Parameter an die Anwendung übergeben? Oder aus einer Ini / XML / Text-Datei auslesen?

Klaus01 2. Jan 2008 21:09

Re: Schleifenfunktion?
 
Zitat:

Zitat von BullsEye

Der Button bewirkt, das eine URL aufgerufen wird, die in dem Edit Feld steht.

Und was soll dann mit der aufgerufenen URL passieren.
Angezeigt werden (Twebbrowser?) geparst werden (TidHttp?)?

Grüße
Klaus

BullsEye 2. Jan 2008 21:10

Re: Schleifenfunktion?
 
Delphi-Quellcode:
ShellExecute(Application.Handle, 'open',
               PChar(sLabel3.Caption), nil, nil,
               SW_ShowNormal);
Er soll den Standardbrowser öffnen und dann anzeigen

Die Muhkuh 2. Jan 2008 21:17

Re: Schleifenfunktion?
 
Mach Dir eine Konsole, übergib als ersten Paramter die Website und alles ist gut. Dann kannst Du bei mehreren Internetseiten mehrere Tasks erstellen und aufrufen lassen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz