Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Procedurestart zu bestimmten Zeitpunkt (https://www.delphipraxis.net/112555-procedurestart-zu-bestimmten-zeitpunkt.html)

Cosamia 23. Apr 2008 12:45


Procedurestart zu bestimmten Zeitpunkt
 
Tag zusammen,

ich stehe gerade wieder auf dem Schlauch.

Wie schaffe ich eine Systemressourcen sparende Lösung, eine Procedure um eine bestimmte Zeit zu starten.

Gruss

angos 23. Apr 2008 12:49

Re: Procedurestart zu bestimmten Zeitpunkt
 
Hi... wie wäre es mit einem geplanten task?

Gruß
angos

Cosamia 23. Apr 2008 12:52

Re: Procedurestart zu bestimmten Zeitpunkt
 
eher schlecht, weil das Teil als Dienst auf einem Server laufen soll.

Bernhard Geyer 23. Apr 2008 12:58

Re: Procedurestart zu bestimmten Zeitpunkt
 
Evtl. den Prozess (besser vermutlich Worker-Thread) entsprechend schlafen legen um "Gewünschte zeit"-Now

bluesbear 23. Apr 2008 13:08

Re: Procedurestart zu bestimmten Zeitpunkt
 
In einem Timer die Uhrzeit abfragen? Oder wäre das zu einfach? Ich glaube, ich verstehe mal wieder das Problem nicht <g>

Cosamia 23. Apr 2008 13:15

Re: Procedurestart zu bestimmten Zeitpunkt
 
Ok, nochmal. Aber evtl. stehe ich ja auch gerade auf dem Schlauch. Es kann durchaus eine einfache Lösung geben. Aber ich sehe sie gerade nicht.

Ich will um 23 Uhr alle Dateien in einem Verzeichnis löschen.

Zum rekursiven löschen habe ich eine Procedure geschrieben. nun muss diese aber vor dem Backup um 23.00 Uhr laufen.

guidok 23. Apr 2008 13:18

Re: Procedurestart zu bestimmten Zeitpunkt
 
Wurde ja schon einen Beitrag weiter oben beschrieben:

In einem Timerereignis zyklisch prüfen wie spät es ist und zum gegebenen Zeitpunkt zuschlagen. Wenn es nicht allzu genau sein muss, dann reicht es ja den Timer alle Minute aufzurufen.

SubData 23. Apr 2008 13:19

Re: Procedurestart zu bestimmten Zeitpunkt
 
Ich würde die aktuelle Zeit nehmen und den Interval des Timers auf die restliche Zeit setzen, wann das Programm gestartet werden soll...

Cosamia 23. Apr 2008 13:21

Re: Procedurestart zu bestimmten Zeitpunkt
 
Und was mache ich morgen?

Ich will das Programm nicht jeden Tag um die selbe Uhrzeit starten.

shmia 23. Apr 2008 13:30

Re: Procedurestart zu bestimmten Zeitpunkt
 
Zitat:

Zitat von Cosamia
eher schlecht, weil das Teil als Dienst auf einem Server laufen soll.

Die Taskplaner Engine ist doch sowieso schon ein Dienst.
Wenn man bei geplante Tasks einen Neuen anlegt, dann wird man auch nach einem Benutzerkonto gefragt, unter dem das Programm ausgeführt werden soll.
Für für solche administrativen Aufgaben ein eigenes Programm schreibt, anstatt den Taskplaner Dienst zu benützen, der hat den Sinn & Zweck des Taskplaners nicht verstanden. :warn:
Man schreibt einfach eine Datei mit der Endung .CMD mit folgendem Inhalt:
Code:
@echo off
dir C:\backups >C:\backups\del.log
del C:\backups\*.bak
und lässt die CMD-Datei vom Taskplaner ausführen. Fertig !

Cosamia 23. Apr 2008 13:38

Re: Procedurestart zu bestimmten Zeitpunkt
 
Zitat:

Zitat von shmia
Zitat:

Zitat von Cosamia
eher schlecht, weil das Teil als Dienst auf einem Server laufen soll.

Die Taskplaner Engine ist doch sowieso schon ein Dienst.
Wenn man bei geplante Tasks einen Neuen anlegt, dann wird man auch nach einem Benutzerkonto gefragt, unter dem das Programm ausgeführt werden soll.
Für für solche administrativen Aufgaben ein eigenes Programm schreibt, anstatt den Taskplaner Dienst zu benützen, der hat den Sinn & Zweck des Taskplaners nicht verstanden. :warn:
Man schreibt einfach eine Datei mit der Endung .CMD mit folgendem Inhalt:
Code:
@echo off
dir C:\backups >C:\backups\del.log
del C:\backups\*.bak
und lässt die CMD-Datei vom Taskplaner ausführen. Fertig !

Oje, ja evtl. habe ich es nicht verstanden, aber das Problem stellt sich etwas anders.

Zum nutzen des Taskplanerdienstes muss ein User eingeloggt sein, welches auf dem Server nicht unbedingt gegeben ist.

Noch ne Idee?

Hudel1965 23. Apr 2008 13:54

Re: Procedurestart zu bestimmten Zeitpunkt
 
Hi :-)

Auf dem Server muss kein User eingeloggt sein. Ich nutze immer den Taskplaner um Daten von einer Festplatte auf eine andere zu kopieren um eine bestimmte Uhrzeit. Das ganze läuft auf einem Windows Server 2008.

Gruß

Hudel

shmia 23. Apr 2008 14:07

Re: Procedurestart zu bestimmten Zeitpunkt
 
Zitat:

Zitat von Cosamia
Zum nutzen des Taskplanerdienstes muss ein User eingeloggt sein, welches auf dem Server nicht unbedingt gegeben ::ist.

Nein, muss nicht.
Gib doch einfach im Taskplaner das Administrator Konto an, dann wird die CMD ausgeführt (auch wenn niemand angemeldet ist !!)
Aus Sicherheitsgründen kann man auch ein anderes Konto verwenden, denn falls jemand die CMD-Datei verändert, könnte er damit Admin-Rechte erlangen.
Aber man kann sich ganz einfach dagegen schützen: die CMD-Datei darf nur von dem Benutzerkonto ausgeführt und geschrieben werden, das im Taskplaner eingetragen ist. (rechter Mausklick auf die Datei -> Eigenschaften -> Sicherheit
)

Cosamia 23. Apr 2008 14:37

Re: Procedurestart zu bestimmten Zeitpunkt
 
Ich scheine ja echt die letzten Jahre gepennt haben, aber auf einem W2k Server mit den geplanten Tasks ein Batch Datei ausführen, klappt bei mir immer nur wenn ein User eingeloggt ist (egal ob an der Konsole oder per Terminalclient).
:gruebel:

shmia 23. Apr 2008 14:49

Re: Procedurestart zu bestimmten Zeitpunkt
 
Zitat:

Zitat von Cosamia
Ich scheine ja echt die letzten Jahre gepennt haben, aber auf einem W2k Server mit den geplanten Tasks ein Batch Datei ausführen, klappt bei mir immer nur wenn ein User eingeloggt ist (egal ob an der Konsole oder per Terminalclient).

Wenn die Dateiendung *.BAT ist, wird der alte COMMAND.COM von MS DOS 5.0 (!) benützt.
(seltsamerweise wird bei einem Doppelklick auf eine BAT-Datei aber auch cmd.exe verwendet)
Wenn die Dateiendung *.CMD ist, wird cmd.exe mit den erweiterten Funktionenen verwendet.
Also eine CMD-Datei aus dem Taskplaner heraus gestartet klappt bei mir auf WinXP.

Cosamia 23. Apr 2008 15:37

Re: Procedurestart zu bestimmten Zeitpunkt
 
XP ist ein ganz anderes Thema. Da funzt es auch bei mir.
Es geht um einen W2k Server anwelchem kein User eingeloggt ist. Und da hilft, meiner Erfahrung nach, euch keine CMD Extension.

Ich habe jetzt einfach einen Timer eingebaut, der die Logs viermal am Tag eliminiert. Und somit auch kurz vor der Datensicherung.

Über einen weiteren Vorschlag würde ich mich aber trotzdem freuen, da das Thema mit Sicherheit bei mir nochmals auftaucht.

Gruss

Apollonius 23. Apr 2008 16:07

Re: Procedurestart zu bestimmten Zeitpunkt
 
Falls das Programm permanent läuft, bietet sich ein Waitable Timer an. Schau einfach mal bei Microsoft vorbei.

Cosamia 23. Apr 2008 16:18

Re: Procedurestart zu bestimmten Zeitpunkt
 
Danke für den Tip. Das sieht doch gut aus.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:57 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