AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Formular für bestimmte Zeit deaktivieren
Thema durchsuchen
Ansicht
Themen-Optionen

Formular für bestimmte Zeit deaktivieren

Ein Thema von Beck93 · begonnen am 3. Aug 2011 · letzter Beitrag vom 3. Aug 2011
Antwort Antwort
Beck93

Registriert seit: 2. Aug 2011
22 Beiträge
 
Delphi XE Professional
 
#1

Formular für bestimmte Zeit deaktivieren

  Alt 3. Aug 2011, 09:49
Hi,

ich bin es schon wieder.

Ich stehe jetzt vor dem Problem, dass ich nach dem Drücken eines Buttons, über einen Timer einen Ordner beobachte ob eine bestimmte Datei reinkopiert wird. Ein Zweiter Timer soll nun 20 sekunden laufen und solange Dieser läuft darf das Formular nicht geschlossen werden oder ein Button gedrückt werden. Wenn nach den 20 Sekunden die Datei noch nicht gefunden wurde soll er das Formular wieder aktivieren und eine Fehlermeldung bringen.

Soweit die Beschreibung.

Nur wie Weiß ich wann die 20 Sekunden rum sind? Der Timer soll ja nur einmal laufen?

Ich bin für jede Hilfe Dankbar

Gruß

Beck93
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Formular für bestimmte Zeit deaktivieren

  Alt 3. Aug 2011, 10:26
Du kannst den Timer.Interlav auf 20000 stellen oder alternativ auf 1000 und jede Sekunde einen Zähler hochzählen. Bei 20 stellst Du den Timer dann aus.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von MGC
MGC

Registriert seit: 15. Mai 2008
Ort: Helsa
106 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: Formular für bestimmte Zeit deaktivieren

  Alt 3. Aug 2011, 10:31
Ich würde es genauso wie Stahli umsetzen und zusätzlich noch das CanClose des Forms auf false setzen, damit das Formular auch wirklich nicht während der Wartezeit geschlossen werden kann.
Marc
Programmieren ist wie Chemie:
1. Wenn man alles einfach nur zusammenschmeisst kommt es zu unerwarteten Reaktionen.
2. Wenn es plötzlich anfängt zu qualmen, muss man eben noch mal von vorn anfangen.
  Mit Zitat antworten Zitat
Beck93

Registriert seit: 2. Aug 2011
22 Beiträge
 
Delphi XE Professional
 
#4

AW: Formular für bestimmte Zeit deaktivieren

  Alt 3. Aug 2011, 12:22
Sorry wenn ich nochmal doof nachfragen muss aber so ganz habe ich es leider noch nicht verstanden.

Also in der Zeit der Timer mit den 20 Sekunden läuft muss ich ja ständig gucken ob eine neue Datei im Ordner ist und sobald Sie da ist soll er abbrechen. Wenn Sie nach 20 Sekunden nicht da ist soll er auch abbrechen mit Fehlermeldung.
In diesem Zusammenhang habe ich leider noch nicht ganz verstanden wie ich das Timer.Interval verwenden kann.

Ich wäre euch sehr Dankbar wenn Ihr vielleicht mal ein kleines Beispiel machen könntet.

Danke trotzdem schon einmal

Gruß

Beck93
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Formular für bestimmte Zeit deaktivieren

  Alt 3. Aug 2011, 12:38
Ok, dann würde ich einfach die Zeit merken, wann das Formular eingeblendet werden soll: DT := Now + (20 * OneSecond); In Deinem Timer prüfst Du dann die Files und wenn (DT <> 0) and (Now > DT) ist, blendest Du Dein Formular ein und setzt DT wieder auf 0.

(Den Timerintervall auf 20 Sekunden zu setzen, ist dann wohl nicht zweckmäßig.)
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von MGC
MGC

Registriert seit: 15. Mai 2008
Ort: Helsa
106 Beiträge
 
Turbo Delphi für Win32
 
#6

AW: Formular für bestimmte Zeit deaktivieren

  Alt 3. Aug 2011, 12:49
Hallo,

ist eigentlich ganz einfach. Deinen Timer stellst Du auf 1000 ms ein (=1 Sec.). Nun durchläuft der Timer jede Sekunde die ihm übergebenen Aufgaben.

Zu den Aufgaben gehört:
1. Prüfen FileExists, falls ja, dann Timer deaktivieren
2. Eine Zählervariable, welche die Anzahl der Durchläufe zählt mit Inc um 1 erhöhen
3. Wenn die Zählervariable = 20, dann Timer deaktivieren und Fehlermeldung ausgeben

Nicht vergessen: Deine Anwendung wieder freigeben
Marc
Programmieren ist wie Chemie:
1. Wenn man alles einfach nur zusammenschmeisst kommt es zu unerwarteten Reaktionen.
2. Wenn es plötzlich anfängt zu qualmen, muss man eben noch mal von vorn anfangen.
  Mit Zitat antworten Zitat
Benutzerbild von MGC
MGC

Registriert seit: 15. Mai 2008
Ort: Helsa
106 Beiträge
 
Turbo Delphi für Win32
 
#7

AW: Formular für bestimmte Zeit deaktivieren

  Alt 3. Aug 2011, 12:51
Nimm Stahlis Vorschlag, der ist eleganter.
Marc
Programmieren ist wie Chemie:
1. Wenn man alles einfach nur zusammenschmeisst kommt es zu unerwarteten Reaktionen.
2. Wenn es plötzlich anfängt zu qualmen, muss man eben noch mal von vorn anfangen.
  Mit Zitat antworten Zitat
Beck93

Registriert seit: 2. Aug 2011
22 Beiträge
 
Delphi XE Professional
 
#8

AW: Formular für bestimmte Zeit deaktivieren

  Alt 3. Aug 2011, 14:43
Erst einmal vielen Dank für eure Antworten.

Ich habe den vorschlag von MGC umgesetzt da ich über eine Ini-Datei steuern will/muss wie lange es bis zur Fehlermelduung dauert und ich mir nicht vorstellen konnte wie ich das mit Stahlis Idee machen könnte.

Ich habe es jetzt so gelöst.

Delphi-Quellcode:
procedure TFormDatenAnfordern.TimeOutTimer(Sender: TObject);
Var
  DateinameQuelle: String;
  IniName: string;
  Zaehler: integer;
  Sek: string;
begin
 IniDatei := TIniFile.Create(ExtractFilePath(Application.ExeName) + IniName);
 Sek:= IniDatei.ReadString('Sonstiges','Sekunden','');
 DateinameQuelle:= IniDatei.ReadString('Pfade','DateinameQuelle','');


  if Zaehler <= StrToInt(Sek) then begin
   if FileExists(DateinameQuelle) then begin
     Timer1.Enabled:= true;
     FormDatenAnfordern.Enabled:= true;
     TimeOut.Enabled:= false;
   end;
  end else begin
    ShowMessage('Keine Antwort erhalten! Bitte versuchen Sie es erneut.');
    FormDatenAnfordern.Enabled:= true;
  end;

 Inc(Zaehler);
 
 FreeAndNil(IniDatei);
end;
So nur leider ist die Variable Zaehler bei jedem neuen durchlauf wieder Null und ich weiß nicht wie ich das so ändern könnte?

Wäre echt cool wenn Ihr mir nochmal weiter helfen könntet.

Gruß

Beck93
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Formular für bestimmte Zeit deaktivieren

  Alt 3. Aug 2011, 14:46
Da Zaehler eine lokale Variable ist, gilt sie nur innerhalb der Methode. Deklarier sie doch als privates Feld des Formulars, dann ist sie dort global erreichbar und gültig.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Beck93

Registriert seit: 2. Aug 2011
22 Beiträge
 
Delphi XE Professional
 
#10

AW: Formular für bestimmte Zeit deaktivieren

  Alt 3. Aug 2011, 15:10
Super jetzt funktioniert es auch Vielen Dank an alle

Gruß

Beck93
  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 04:04 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