Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: NetScheduleJobAdd Parameter?!

  Alt 4. Sep 2006, 17:19
Moin Mr.Payne,

DaysOfMonth ist eine Bitfeld, dass heisst:
Jedes Bit des DWORD hat, allgemein ausgedrückt, eine eigene Bedeutung.
Im konkreten Fall steht hier jedes Bit (von rechts begonnen) für den Tag des Monats (1. bis 31.) an dem der Job gestartet werden soll.
Beispiel:
Du übergibst hier 5. Binär also 0000 0000 0000 0000 0000 0000 0000 1001 (32 Bit, da DWORD)
=> Der Job wird am 1. und 4. eines jeden Monats ausgeführt.

Analog gilt dies auch für DayOfWeek, wobei hier Bit 0 für Montag steht, Bit 1 für Dienstag usw.
Beispiel:
Du übergibst hier 7. Binär also 0000 1011 (8 Bit, da Char)
=> Der Job wird am Montag, Dienstag und Donnerstag gestartet.

Um jetzt zu ermitteln, welchen Wert Du übergeben musst, kannst Du so vorgehen:

DaysOfMonth := (2 shl (NummerDesErstenTages-1)) or (2 shl (NummerDesZweitenTages-1)) or ...

Das geht natürlich auch in einer Schleife, so dass die Gesamtzahl der Tage nicht festgeschrieben werden muss.
Den ersten Tag direkt zuweisen, die übrigen mit or ergänzen.

Für DaysOfWeek gilt dies analog. Wenn Du hier Montag den Wert 0 (Sonntag = 6) zuordnest, kannst Du Dir jeweils das -1 sparen.

Wird bei den beiden Werten 0 angegeben, so wird der Job nur einmal, bei ersten Auftreten von JobTime, gestartet.

Die Flags sollten in MSDN-Library durchsuchenAT_INFO erklärt sein (ggf. über MSDN-Library durchsuchenNetScheduleJobAdd zu erreichen)

Um mehrere Flags zu kombinieren muss auch or verwendet werden.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat