Wikipedia hat ein ainfaches Beispiel so einer Datei:
Code:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
UID:uid1@example.com
DTSTAMP:19970714T170000Z
ORGANIZER:CN=John Doe:MAILTO:john.doe@example.com
DTSTART:19970714T170000Z
DTEND:19970715T035959Z
SUMMARY:Bastille Day Party
END:VEVENT
END:VCALENDAR
Ist also auch nur eine Textdatei.
Wenn du die Datei Zeile für Zeile einliest...
BEGIN:VCALENDAR und END:VCALENDAR markieren den "Kalender", der dann mehrere Tage eingetragen hat.
Da theoretisch außerhalb dieser Sektion auch was sein kann (zumindest eine leere Zeile am Schluss oder ähnliches, könnte man zB. außerhalb der Schleife eine Variable machen, ob man gerade "in" dem Kalender oder außerhalb ist. Anfangswert ist außerhalb (zB. false für ein bool inCalendar).
In der Schleife, wo je eine Zeile eingelesen wird, hänt es dann von der Variable ab, was man mit der Zeile macht:
Wenn man nicht im Kalender ist, prüfen ob die Zeile BEGIN:VEVENT ist. Wenn ja, die Variable auf "drinnen" setzen, weil es eben ab hier drinnen ist. Sonst, einfach nichts tun und den nächsten Schleifendurchgang die nächste Zeile lesen lassen.
Wenn man gerade im Kalender ist: Wenn END:VCALENDAR dann die Variable wieder auf draußen setzen, sonst (vorerst) nichts.
Bisher weiß man dann immerhin, wo der Kalender anfängt und aufhört.
Der Kalender hat dann innen so Zeug wie VERSION, und ein oder mehrere VEVENTs - wieder mit BEGIN und END. Da kann man den bestehenden Code gleich erweitern - die Variable ist dann nicht nur "außerhalb" oder "im Kalender", sondern "gand draußen", "im Kalender aber nicht in einem Event", und "in einem Event". Wieder mit dem Erkennen von Beginn und Ende von Events, aber die nur wenn man schon im Kalender ist.
Was man dann im Event macht später - sind bis hierhin einmal Fragen/Probleme?