AGB  ·  Datenschutz  ·  Impressum  







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

das DELAY unterbrechen ....

Ein Thema von Rapthor · begonnen am 7. Mär 2003 · letzter Beitrag vom 7. Mär 2003
Antwort Antwort
Rapthor

Registriert seit: 30. Nov 2002
139 Beiträge
 
#1

das DELAY unterbrechen ....

  Alt 7. Mär 2003, 14:11
Hallo!
Mein 12 Stunden Delay funktioniert schon! Aber sobald ich diesen in der Laufzeit aktiviert habe, lassen sich zwar andere Aktionen im Programm weiterhin ausführen, jedoch kann ich es einfach nicht schließen und muss zum Taskmanager greifen bzw. per STRG + F2 zurück ins Delphi.
Es scheint als würde ich das Programm nur regulär schließen können (mit Form1.Close), wenn es nicht gerade die Delay Prozedur ausführt.
Ich will aber eine Funktion integrieren mit der man das Delay unterbrechen kann.Wenn der Benutzer z.b. nicht unbedingt 12 Stunden warten will.
Geht das irgendwie?
Hier die DELAY Sache:
Code:
begin
                      lTick:=GetTickCount;
                      repeat
                      Application.ProcessMessages;
                      until (GetTickCount-lTick>=12*3600*1000);
end
  Mit Zitat antworten Zitat
Helld_River

Registriert seit: 2. Jan 2003
Ort: Hürth
136 Beiträge
 
Delphi 2010 Professional
 
#2
  Alt 7. Mär 2003, 14:18
Hi !
Setze dir in das OnClose-Ereigniss eine Variable bAbbruch (auf true setzten, beim initialisieren auf false !!!) und erweitere die Schleife folgendermassen:
Delphi-Quellcode:
...
  until ((GetTickCount-lTick>=12*3600*1000) [B]or (bAbbruch)[/B]);
...
Gruß, Helld
  Mit Zitat antworten Zitat
Rapthor

Registriert seit: 30. Nov 2002
139 Beiträge
 
#3
  Alt 7. Mär 2003, 15:09
Ich hab ins Form1 ein OnClose Eregnis "bAbbruch" gesetzt .... bis hierhin alles okay. Jetzt komm ich ja direkt in den Quelltext mit der Prozedur

Code:
procedure TForm1.bAbbruch(Sender: TObject; var Action: TCloseAction);
Und was muss ich hier zwischen begin und end reinschreiben?

Meine until Zeile habe ich auch erweitert .... die sieht jetzt so aus

Code:
until (GetTickCount-lTick>=12*3600*1000) or bAbbruch;
Unter VAR hab ich bAbbruch als boolean gesetzt-
Achja und gleich am Anfang bei Form1.Create hab ich bAbbruch auf FALSE gesetzt.
Das ist alles aber es will nicht klappen.
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#4
  Alt 7. Mär 2003, 16:15
bAbbruch ist eine Funktion und eine Prozedur? Zu unsicher! Nimm einen anderen Namen für die Funktion.
Dann solltest du im OnClose schreiben
  bAbbruch := true; Chris
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#5
  Alt 7. Mär 2003, 16:29
Hallo,
ich glaube ihr habt da aneinander vorbeigeredet.
babbruch soll doch eine variable und keine Prozedur oder funktion sein.
Erstelle einfach eine globale variable, die du direkt als false deklarierst, also so:

Code:
var
    vabbruch : boolean = false;

und dann erweiterst du die delay schleife so, wie chris das schon geschrieben hat:

Code:
until ((GetTickCount-lTick>=12*3600*1000) or (bAbbruch));
also einfach die abbruchbedingung, die du im Moment verwendest durch diese hier ersetzen.
Jetzt musst du nurnoch einen Butto erstellen, in dem du deine variable auf true setzt. Das bewirkt, dass der delay unterbrochen wird, und du dein Programm beenden kannst.
Gruß
Jan
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
Rapthor

Registriert seit: 30. Nov 2002
139 Beiträge
 
#6
  Alt 7. Mär 2003, 17:32
In Ordnung ich hab jetzt folgendes eingestellt:

1. Im Deklarationsteil hab ich

Code:
var
vabbruch : boolean = false;
2. TForm1.FormCreate hat im OnClose Fenster des Objektinspektors babbruch

3. Die babbruch Prozedur dazu sieht so aus

Code:
procedure TForm1.bAbbruch(Sender: TObject; var Action: TCloseAction);
begin
    vAbbruch := true;
end;
4. Trotz der Abbruchbedingung

Code:
until (GetTickCount-lTick>=12*3600*1000) or (vAbbruch = true);
schließt sich das Delphi Programm NICHT beim klicken des kleinen schwarzen kreuzes ganz rechts oben im Fenster (biSystemMenu) .... auch ALT + F4 schließt das Programm nicht. Es scheint als liefe diese Delay Funktion dennoch weiter.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7
  Alt 7. Mär 2003, 17:37
Schon mal mit F7 debuggt?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Helld_River

Registriert seit: 2. Jan 2003
Ort: Hürth
136 Beiträge
 
Delphi 2010 Professional
 
#8
  Alt 7. Mär 2003, 18:26
Hey !
Also, ich habe es ausprobiert und es geht !!!
Hier der Code :

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
  vAbbruch : boolean;
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
  close;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  repeat
    beep;
    Application.ProcessMessages;
  until (1000<1) or vAbbruch;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  vAbbruch:=true;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  vAbbruch:=false;
end;

end.
GRuß, Helld
  Mit Zitat antworten Zitat
Rapthor

Registriert seit: 30. Nov 2002
139 Beiträge
 
#9
  Alt 7. Mär 2003, 19:39
Danke vielmals!!!
Es lag bei mir ... hab da an ner bestimmten Stelle totalen Müll verzapft ... sozusagen ne UNTIL Anweisung die nie durchbrochen wurde
Danke für die Hilfe ... jetzt funzt alles ....
  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 21:24 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