Keinen Geburtstag mehr vergessen

Immer wieder vergessen Sie den Geburtstag eines Verwandten oder Freundes. Windows kann Sie auf Wunsch automatisch daran erinnern.

Viele Programme k÷nnen die Aufgabe ⁿbernehmen, Sie an diverse Termine wie Geburtstage zu erinnern: Outlook ist nur ein Beispiel. Wenn Sie allerdings Outlook oder die diversen Alternativen nicht nutzen, kann sich auch der Windows Scripting Host (WSH) dieser Aufgabe widmen. Sie ben÷tigen nur eine einfache Textdatei, in der Sie die Geburtstage vermerken, und ein kleines Programm in VBScript.
Die einzelnen Zeilen der Textdatei mⁿssen einem bestimmten Aufbau folgen, wobei in jeder einzelnen Zeile genau ein Geburtstag steht. Gleich am Anfang der Zeile tragen Sie Tag und Monat des Geburtstages ein, jeweils gefolgt von einem Punkt. Diesen Angaben folgt der Name des Geburtstagskindes. Ein korrekter Eintrag wΣre beispielsweise: ╗22.04. Peter Arnold½.
Speichern Sie die Datei unter dem Namen BIRTHDAY.INI im Ordner C:\DATEN. Das VBScript-Programm BIRTHDAY.VBS finden Sie im Kasten abgedruckt und auf der Heft-CD unter CHIP-Code BIRTHDAY. Sie k÷nnen es mit jedem beliebigen Editor verfassen, zum Beispiel dem Windows Notepad.

Dim objFileSystem
Dim objFile
Dim objTextStream
Dim szConfigFile
Dim szBirthday, szName, szThisYear, szNextYear, szComparisonDate
Dim szMessage
Dim iTime
Dim iDifference

æ Standardwerte fⁿr einige Variablen
szConfigFile = äC:\DATEN\BIRTHDAY.INIô
iTime        = 5
szMessage    = äô
szThisYear   = CStr(Year(date))
szNextYear   = CStr(Year(date)+1)

Set objFileSystem = CreateObject(äScripting.FileSystemObjectô)

æ Config-Datei ermitteln, ...
If objFileSystem.FileExists(szConfigFile) Then

   æ ... ÷ffnen...
   Set objFile = objFileSystem.OpenTextFile(szConfigFile)

   æ ... und zeilenweise abarbeiten
   Do until objFile.atEndOfStream
   
      æ Geburtstag und Name des Geburtstagskindes lesen
      szBirthday = objFile.read(6)
      szName = objFile.readLine

      æ Wieviele Tage sind es noch bis zum nΣchsten Geburtstag?
      szComparisonDate = szBirthday & szThisYear
      iDifference = DateDiff(äyô, date, DateValue(szComparisonDate))

      æ Falls der nΣchste Geburtstag im nΣchsten Jahr liegt
      if (CInt(iDifference) < 0) then
        szComparisonDate = szBirthday & szNextYear 
        iDifference = DateDiff(äyô, date, DateValue(szComparisonDate))   
      end if
      æ Wenn die Anzahl der Tage innerhalb der Frist liegt
      if (CInt(iDifference) <= iTime) then
      szMessage = szMessage & szName & ä am ä & szComparisonDate & ä - noch ä & iDifference & äTageô & Chr(10)  
      end if
     Loop
   objFile.close
 else
  MsgBox äDie Config-Datei ä & szConfigFile & ä ist nicht  vorhanden!ô,  vbCritical, äFehlerô
end if

æ Falls vorhaben, Liste der nΣchsten Geburtstage ausgeben
If szMessage<>ôä Then
  MsgBox szMessage, vbInformation, äDie nΣchsten Geburtstageô
End If


Von besonderem Interesse sind hier die beiden Variablen ╗szConfigFile½ und ╗iTime½, ⁿber die Sie das Programm konfigurieren. Die Variable ╗szConfigFile½ enthΣlt den Pfad sowie den Namen der Textdatei, in der Sie die Liste der Geburtstage verwalten. Bei der Variable ╗iTime½ handelt es sich um die Anzahl der Tage, die Sie vor einem anstehenden Geburtstag erinnert werden m÷chten. Damit Windows das Programm bei jedem Systemstart ausfⁿhrt, mⁿssen Sie zuletzt im Ordner ╗Autostart½ eine Verknⁿpfung auf die Datei BIRTHDAY.VBS erzeugen. Sollte dann ein Bekannter Geburtstag haben, meldet sich Windows mit einer Meldung und dem Namen des Geburtstagskindes.