69:
How do I encode data as ICalendar format

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
Exicalendarlib_tlb::IComponentPtr var_Component = ICalendar1->Content;
	Exicalendarlib_tlb::IComponentPtr var_Component1 = var_Component->Components->Add(L"VCALENDAR");
		var_Component1->Properties->Add(L"VERSION",TVariant("2.1"))->Parameters->Add(L"UNICODE",TVariant(ICalendar1->get_toICalendar(TVariant(true),Exicalendarlib_tlb::PropertyTypeEnum::exPropertyTypeBoolean)));
		var_Component1->Properties->Add(L"TEXT",TVariant("This is just a bit of text to be encoded."));
		var_Component1->Properties->Add(L"BINARY",TVariant(ICalendar1->get_toICalendar(TVariant("This is just a bit of text to be encoded."),Exicalendarlib_tlb::PropertyTypeEnum::exPropertyTypeBinary)));
		Exicalendarlib_tlb::IComponentPtr var_Component2 = var_Component1->Components->Add(L"VEVENT");
			var_Component2->Properties->Add(L"DTSTART",TVariant(TDateTime(2001,1,1).operator double()));
			var_Component2->Properties->Add(L"DTEND",TVariant(TDateTime(2001,1,2,10,00,00,0).operator double()));
OutputDebugString( ICalendar1->Save() );

68:
How do I get the occurrences between giving start/end margins

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( L"AsArray: " );
OutputDebugString( PChar(ICalendar1->RecurRange[L"DTSTART=19970310;FREQ=YEARLY;INTERVAL=2;COUNT=10;BYMONTH=1,2,3",TDateTime(2001,1,1).operator double(),TDateTime(2002,1,1).operator double()]) );
OutputDebugString( L"AsString: " );
OutputDebugString( PChar(ICalendar1->RecurRangeAsString[L"DTSTART=19970310;FREQ=YEARLY;INTERVAL=2;COUNT=10;BYMONTH=1,2,3",TDateTime(2001,1,1).operator double(),TDateTime(2002,1,1).operator double()]) );

67:
How do I get the value of specified part in the recurrence expression

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( L"FREQ: " );
OutputDebugString( PChar(ICalendar1->RecurPartValue[L"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",Exicalendarlib_tlb::RecurPartEnum::exRecurFREQ]) );
OutputDebugString( L"DTSTART: " );
OutputDebugString( PChar(ICalendar1->RecurPartValue[L"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",Exicalendarlib_tlb::RecurPartEnum::exRecurDTSTART]) );
OutputDebugString( L"UNTIL: " );
OutputDebugString( PChar(ICalendar1->RecurPartValue[L"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",Exicalendarlib_tlb::RecurPartEnum::exRecurUNTIL]) );
OutputDebugString( L"COUNT: " );
OutputDebugString( PChar(ICalendar1->RecurPartValue[L"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",Exicalendarlib_tlb::RecurPartEnum::exRecurCOUNT]) );
OutputDebugString( L"INTERVAL: " );
OutputDebugString( PChar(ICalendar1->RecurPartValue[L"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",Exicalendarlib_tlb::RecurPartEnum::exRecurINTERVAL]) );
OutputDebugString( L"WKST: " );
OutputDebugString( PChar(ICalendar1->RecurPartValue[L"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",Exicalendarlib_tlb::RecurPartEnum::exRecurWKST]) );
OutputDebugString( L"BYDAY: " );
OutputDebugString( PChar(ICalendar1->RecurPartValue[L"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",Exicalendarlib_tlb::RecurPartEnum::exRecurBYDAY]) );
OutputDebugString( L"BYMONTHDAY: " );
OutputDebugString( PChar(ICalendar1->RecurPartValue[L"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",Exicalendarlib_tlb::RecurPartEnum::exRecurBYMONTHDAY]) );
OutputDebugString( L"BYYEARDAY: " );
OutputDebugString( PChar(ICalendar1->RecurPartValue[L"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",Exicalendarlib_tlb::RecurPartEnum::exRecurBYYEARDAY]) );
OutputDebugString( L"BYWEEKNO: " );
OutputDebugString( PChar(ICalendar1->RecurPartValue[L"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",Exicalendarlib_tlb::RecurPartEnum::exRecurBYWEEKNO]) );
OutputDebugString( L"BYMONTH: " );
OutputDebugString( PChar(ICalendar1->RecurPartValue[L"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",Exicalendarlib_tlb::RecurPartEnum::exRecurBYMONTH]) );
OutputDebugString( L"BYSETPOS: " );
OutputDebugString( PChar(ICalendar1->RecurPartValue[L"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",Exicalendarlib_tlb::RecurPartEnum::exRecurBYSETPOS]) );
OutputDebugString( L"BYHOUR: " );
OutputDebugString( PChar(ICalendar1->RecurPartValue[L"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",Exicalendarlib_tlb::RecurPartEnum::exRecurBYHOUR]) );
OutputDebugString( L"BYMINUTE: " );
OutputDebugString( PChar(ICalendar1->RecurPartValue[L"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",Exicalendarlib_tlb::RecurPartEnum::exRecurBYMINUTE]) );
OutputDebugString( L"BYSECOND: " );
OutputDebugString( PChar(ICalendar1->RecurPartValue[L"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",Exicalendarlib_tlb::RecurPartEnum::exRecurBYSECOND]) );

66:
How do I check if the recurrence expression is syntactically correct (method 2)

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( L"1.A) SyntaxError: " );
OutputDebugString( PChar(ICalendar1->RecurPartValue[L"DTSTART=20151205;FREQ=DAILY;BYDAY=MO",Exicalendarlib_tlb::RecurPartEnum::exRecurSyntaxError]) );
OutputDebugString( L"1.B) SyntaxErrorInfo: " );
OutputDebugString( PChar(ICalendar1->RecurPartValue[L"DTSTART=20151205;FREQ=DAILY;BYDAY=MO",Exicalendarlib_tlb::RecurPartEnum::exRecurSyntaxErrorInfo]) );
OutputDebugString( L"2.A) SyntaxError: " );
OutputDebugString( PChar(ICalendar1->RecurPartValue[L"FREQ=DAILY;BYDAY=MO",Exicalendarlib_tlb::RecurPartEnum::exRecurSyntaxError]) );
OutputDebugString( L"2.B) SyntaxErrorInfo: " );
OutputDebugString( PChar(ICalendar1->RecurPartValue[L"FREQ=DAILY;BYDAY=MO",Exicalendarlib_tlb::RecurPartEnum::exRecurSyntaxErrorInfo]) );

65:
How do I check if the recurrence expression is syntactically correct (method 1)

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( L"1. If negative, the expression is incorrect" );
OutputDebugString( PChar(ICalendar1->RecurCheck[L"DTSTART=20151205;FREQ=DAILY;BYDAY=MO",TDateTime(2015,12,5).operator double()]) );
OutputDebugString( L"2. If negative, the expression is incorrect" );
OutputDebugString( PChar(ICalendar1->RecurCheck[L"junk",TDateTime(2001,1,1).operator double()]) );

64:
How do I check if a specified date match the giving recurrence

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( L"TDateTime(2015,12,5).operator double()" );
OutputDebugString( PChar(ICalendar1->RecurCheck[L"DTSTART=20151205;FREQ=DAILY;BYDAY=MO",TDateTime(2015,12,5).operator double()]) );
OutputDebugString( L"TDateTime(2015,12,7).operator double()" );
OutputDebugString( PChar(ICalendar1->RecurCheck[L"DTSTART=20151205;FREQ=DAILY;BYDAY=MO",TDateTime(2015,12,7).operator double()]) );

63:
Recur: The 2nd to last weekday of the month

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970929;FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-2",TVariant(12)]) );

62:
Recur: The 3rd instance into the month of one of Tuesday, Wednesday or Thursday, for the next 3 months

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970904;FREQ=MONTHLY;COUNT=3;BYDAY=TU,WE,TH;BYSETPOS=3",TVariant(12)]) );

61:
Recur: The last work day of the month

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970805;FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1",TVariant(12)]) );

60:
Recur: An example where the days generated makes a difference because of WKST (Sample 2)

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU",TVariant(12)]) );

59:
Recur: An example where the days generated makes a difference because of WKST (Sample 1)

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970805T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=MO",TVariant(12)]) );

58:
Recur: Every 20 minutes from 9:00 AM to 4:40 PM every day

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970902T090000;FREQ=DAILY;BYHOUR=9,10,11,12,13,14,15,16;BYMINUTE=0,20,40",TVariant(12)]) );

57:
Recur: Every hour and a half for 4 occurrences

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970902T090000;FREQ=MINUTELY;INTERVAL=90;COUNT=4",TVariant(12)]) );

56:
Recur: Every 15 minutes for 6 occurrences

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970902T090000;FREQ=MINUTELY;INTERVAL=15;COUNT=6",TVariant(12)]) );

55:
Recur: Every 3 hours from 9:00 AM to 5:00 PM on a specific day

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970902T090000;FREQ=HOURLY;INTERVAL=3;UNTIL=19970902T170000Z",TVariant(12)]) );

54:
Recur: Every four years, the first Tuesday after a Monday in November, forever (U.S. Presidential Election day)

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19961105T090000;FREQ=YEARLY;INTERVAL=4;BYMONTH=11;BYDAY=TU;BYMONTHDAY=2,3,4,5,6,7,8",TVariant(12)]) );

53:
Recur: The first Saturday that follows the first Sunday of the month, forever

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970913T090000;FREQ=MONTHLY;BYDAY=SA;BYMONTHDAY=7,8,9,10,11,12,13",TVariant(12)]) );

52:
Recur: Every Friday the 13th, forever

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970902T090000;FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13",TVariant(12)]) );

51:
Recur: Every Thursday, but only during June, July, and August, forever

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970605T090000;FREQ=YEARLY;BYDAY=TH;BYMONTH=6,7,8",TVariant(12)]) );

50:
Recur: Every Thursday in March, forever

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970313T090000;FREQ=YEARLY;BYMONTH=3;BYDAY=TH",TVariant(12)]) );

49:
Recur: Monday of week number 20 (where the default start of the week is Monday), forever

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970512T090000;FREQ=YEARLY;BYWEEKNO=20;BYDAY=MO",TVariant(12)]) );

48:
Recur: Every 20th Monday of the year, forever

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970101T090000;FREQ=YEARLY;BYDAY=20MO",TVariant(12)]) );

47:
Recur: Every 3rd year on the 1st, 100th and 200th day for 10 occurrences

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970101T090000;FREQ=YEARLY;INTERVAL=3;COUNT=10;BYYEARDAY=1,100,200",TVariant(12)]) );

46:
Recur: Every other year on January, February, and March for 10 occurrences

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970310T090000;FREQ=YEARLY;INTERVAL=2;COUNT=10;BYMONTH=1,2,3",TVariant(12)]) );

45:
Recur: Yearly in June and July for 10 occurrences

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970610T090000;FREQ=YEARLY;COUNT=10;BYMONTH=6,7",TVariant(12)]) );

44:
Recur: Every Tuesday, every other month

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970902T090000;FREQ=MONTHLY;INTERVAL=2;BYDAY=TU",TVariant(12)]) );

43:
Recur: Every 18 months on the 10th thru 15th of the month for 10 occurrences

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970910T090000;FREQ=MONTHLY;INTERVAL=18;COUNT=10;BYMONTHDAY=10,11,12,13,14,15",TVariant(12)]) );

42:
Recur: Monthly on the first and last day of the month for 10 occurrences

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970930T090000;FREQ=MONTHLY;COUNT=10;BYMONTHDAY=1,-1",TVariant(12)]) );

41:
Recur: Monthly on the 2nd and 15th of the month for 10 occurrences

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970902T090000;FREQ=MONTHLY;COUNT=10;BYMONTHDAY=2,15",TVariant(12)]) );

40:
Recur: Monthly on the third to the last day of the month, forever

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970928T090000;FREQ=MONTHLY;BYMONTHDAY=-3",TVariant(12)]) );

39:
Recur: Monthly on the second to last Monday of the month for 6 months

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970922T090000;FREQ=MONTHLY;COUNT=6;BYDAY=-2MO",TVariant(12)]) );

38:
Recur: Every other month on the 1st and last Sunday of the month for 10 occurrences

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970907T090000;FREQ=MONTHLY;INTERVAL=2;COUNT=10;BYDAY=1SU,-1SU",TVariant(12)]) );

37:
Recur: Monthly on the 1st Friday until December 24, 1997

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970905T090000;FREQ=MONTHLY;UNTIL=19971224T000000Z;BYDAY=1FR",TVariant(12)]) );

36:
Recur: Monthly on the 1st Friday for ten occurrences

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970905T090000;FREQ=MONTHLY;COUNT=10;BYDAY=1FR",TVariant(12)]) );

35:
Recur: Every other week on Tuesday and Thursday, for 8 occurrences

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970902T090000;FREQ=WEEKLY;INTERVAL=2;COUNT=8;WKST=SU;BYDAY=TU,TH",TVariant(12)]) );

34:
Recur: Every other week on Monday, Wednesday and Friday until December 24, 1997, but starting on Tuesday, September 2, 1997

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970902T090000;FREQ=WEEKLY;INTERVAL=2;UNTIL=19971224T000000Z;WKST=SU;BYDAY=MO,WE,FR",TVariant(12)]) );

33:
Recur: Weekly on Tuesday and Thursday for 5 weeks

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970902T090000;FREQ=WEEKLY;UNTIL=19971007T000000Z;WKST=SU;BYDAY=TU,TH",TVariant(12)]) );

32:
Recur: Weekly on Tuesday and Thursday for 5 weeks

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970902T090000;FREQ=WEEKLY;COUNT=10;WKST=SU;BYDAY=TU,TH",TVariant(12)]) );

31:
Recur: Every other day - forever

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970902T090000;FREQ=DAILY;INTERVAL=2",TVariant(12)]) );

30:
Recur: Daily until December 24, 1997

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970902T090000;FREQ=DAILY;UNTIL=19971224T000000Z",TVariant(12)]) );

29:
Recur: Daily for 10 occurrences

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( PChar(ICalendar1->RecurAllAsString[L"DTSTART=19970902T090000;FREQ=DAILY;COUNT=10",TVariant(12)]) );

28:
How can I add a property of UTC offset type

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
Exicalendarlib_tlb::IComponentPtr var_Component = ICalendar1->Content->Components->Add(L"VCALENDAR");
	var_Component->Properties->Add(L"UTCOffset",TVariant("+0100"));
OutputDebugString( ICalendar1->Save() );

27:
How can I add a property of URI type

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
Exicalendarlib_tlb::IComponentPtr var_Component = ICalendar1->Content->Components->Add(L"VCALENDAR");
	var_Component->Properties->Add(L"URI",TVariant("http://www.exontrol.com"));
OutputDebugString( ICalendar1->Save() );

26:
How can I add a property of time type

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
Exicalendarlib_tlb::IComponentPtr var_Component = ICalendar1->Content->Components->Add(L"VCALENDAR");
	var_Component->Properties->Add(L"Time1",TVariant(TDateTime(1899,12,30,12,00,00,0).operator double()));
	var_Component->Properties->Add(L"Time2",TVariant(ICalendar1->get_toICalendar(TVariant(0.5),Exicalendarlib_tlb::PropertyTypeEnum::exPropertyTypeTime)));
	Exicalendarlib_tlb::IPropertyPtr var_Property = var_Component->Properties->Add(L"Time3",TNoParam());
		var_Property->set_Value(TVariant(0.5));
		var_Property->Type = Exicalendarlib_tlb::PropertyTypeEnum::exPropertyTypeTime;
OutputDebugString( ICalendar1->Save() );

25:
How can I add a property of text/string type

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
Exicalendarlib_tlb::IComponentPtr var_Component = ICalendar1->Content->Components->Add(L"VCALENDAR");
	var_Component->Properties->Add(L"Text1",TVariant("A1"));
	var_Component->Properties->Add(L"Text2",TVariant(ICalendar1->get_toICalendar(TVariant("A1"),Exicalendarlib_tlb::PropertyTypeEnum::exPropertyTypeText)));
	Exicalendarlib_tlb::IPropertyPtr var_Property = var_Component->Properties->Add(L"Text3",TNoParam());
		var_Property->set_Value(TVariant("A1"));
		var_Property->Type = Exicalendarlib_tlb::PropertyTypeEnum::exPropertyTypeText;
OutputDebugString( ICalendar1->Save() );

24:
How can I find properties of recurence type

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
Exicalendarlib_tlb::IComponentPtr var_Component = ICalendar1->Content->Components->Add(L"VCALENDAR");
	var_Component->Properties->Add(L"Recur",TVariant("FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=SA,SU"));
Exicalendarlib_tlb::IPropertyPtr p = ICalendar1->Root->Properties->get_Item(TVariant("Recur"));
String i = ICalendar1->toICalendar[TVariant(p->get_Value()),p->GuessType];
OutputDebugString( L"icalendar:" );
OutputDebugString( L"i" );
OutputDebugString( L"all:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"i",p->GuessType,L""]) );
OutputDebugString( L"FREQ:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"i",p->GuessType,L"FREQ"]) );
OutputDebugString( L"UNTIL:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"i",p->GuessType,L"UNTIL"]) );
OutputDebugString( L"COUNT:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"i",p->GuessType,L"COUNT"]) );
OutputDebugString( L"INTERVAL:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"i",p->GuessType,L"INTERVAL"]) );
OutputDebugString( L"BYSECOND:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"i",p->GuessType,L"BYSECOND"]) );
OutputDebugString( L"BYMINUTE:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"i",p->GuessType,L"BYMINUTE"]) );
OutputDebugString( L"BYHOUR:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"i",p->GuessType,L"BYHOUR"]) );
OutputDebugString( L"BYDAY:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"i",p->GuessType,L"BYDAY"]) );
OutputDebugString( L"BYMONTHDAY:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"i",p->GuessType,L"BYMONTHDAY"]) );
OutputDebugString( L"BYYEARDAY:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"i",p->GuessType,L"BYYEARDAY"]) );
OutputDebugString( L"BYWEEKNO:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"i",p->GuessType,L"BYWEEKNO"]) );
OutputDebugString( L"BYMONTH:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"i",p->GuessType,L"BYMONTH"]) );
OutputDebugString( L"BYSETPOS:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"i",p->GuessType,L"BYSETPOS"]) );
OutputDebugString( L"WKST:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"i",p->GuessType,L"WKST"]) );

23:
How can I add a property of recurrence type

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
Exicalendarlib_tlb::IComponentPtr var_Component = ICalendar1->Content->Components->Add(L"VCALENDAR");
	var_Component->Properties->Add(L"Recur",TVariant("FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU"));
OutputDebugString( ICalendar1->Save() );

22:
How can I find the duration in weeks, days, hours, minutes, seconds from a property of duration type

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
Exicalendarlib_tlb::IComponentPtr var_Component = ICalendar1->Content->Components->Add(L"VCALENDAR");
	var_Component->Properties->Add(L"Period",TVariant(ICalendar1->get_valuesToICalendar(L"Start=#1/1/2001#;Duration=1",Exicalendarlib_tlb::PropertyTypeEnum::exPropertyTypePeriod)));
Exicalendarlib_tlb::IPropertyPtr p = ICalendar1->Root->Properties->get_Item(TVariant("Period"));
String i = ICalendar1->toICalendar[TVariant(p->get_Value()),p->GuessType];
OutputDebugString( L"icalendar:" );
OutputDebugString( L"i" );
OutputDebugString( L"all:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"i",p->GuessType,L""]) );
OutputDebugString( L"start:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"i",p->GuessType,L"Start"]) );
OutputDebugString( L"end:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"i",p->GuessType,L"End"]) );
OutputDebugString( L"duration:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"i",p->GuessType,L"Duration"]) );
OutputDebugString( L"weeks:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"i",p->GuessType,L"W"]) );
OutputDebugString( L"days:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"i",p->GuessType,L"D"]) );
OutputDebugString( L"hour:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"i",p->GuessType,L"H"]) );
OutputDebugString( L"min:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"i",p->GuessType,L"M"]) );
OutputDebugString( L"sec:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"i",p->GuessType,L"S"]) );

21:
How can I add a property of period type

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
Exicalendarlib_tlb::IComponentPtr var_Component = ICalendar1->Content->Components->Add(L"VCALENDAR");
	var_Component->Properties->Add(L"Period1",TVariant(ICalendar1->get_valuesToICalendar(L"Start=#1/1/2001#;Duration=1",Exicalendarlib_tlb::PropertyTypeEnum::exPropertyTypePeriod)));
	var_Component->Properties->Add(L"Period2",TVariant(ICalendar1->get_valuesToICalendar(L"Start=#1/1/2001#;End=#1/2/2001#",Exicalendarlib_tlb::PropertyTypeEnum::exPropertyTypePeriod)));
	var_Component->Properties->Add(L"Period3",TVariant(ICalendar1->get_valuesToICalendar(L"Duration=1;End=#1/2/2001#",Exicalendarlib_tlb::PropertyTypeEnum::exPropertyTypePeriod)));
OutputDebugString( ICalendar1->Save() );

20:
How can I add a property of integer type

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
Exicalendarlib_tlb::IComponentPtr var_Component = ICalendar1->Content->Components->Add(L"VCALENDAR");
	var_Component->Properties->Add(L"Integer1",TVariant(1));
	var_Component->Properties->Add(L"Integer2",TVariant(ICalendar1->get_toICalendar(TVariant(1),Exicalendarlib_tlb::PropertyTypeEnum::exPropertyTypeInteger)));
	Exicalendarlib_tlb::IPropertyPtr var_Property = var_Component->Properties->Add(L"Integer3",TNoParam());
		var_Property->set_Value(TVariant(1));
		var_Property->Type = Exicalendarlib_tlb::PropertyTypeEnum::exPropertyTypeInteger;
OutputDebugString( ICalendar1->Save() );

19:
How can I add a property of float type

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
Exicalendarlib_tlb::IComponentPtr var_Component = ICalendar1->Content->Components->Add(L"VCALENDAR");
	var_Component->Properties->Add(L"Float1",TVariant(1.5));
	var_Component->Properties->Add(L"Float2",TVariant(ICalendar1->get_toICalendar(TVariant(1.5),Exicalendarlib_tlb::PropertyTypeEnum::exPropertyTypeFloat)));
	Exicalendarlib_tlb::IPropertyPtr var_Property = var_Component->Properties->Add(L"Float3",TNoParam());
		var_Property->set_Value(TVariant(1.5));
		var_Property->Type = Exicalendarlib_tlb::PropertyTypeEnum::exPropertyTypeFloat;
OutputDebugString( ICalendar1->Save() );

18:
How do I get the type of the property

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
Exicalendarlib_tlb::IComponentPtr var_Component = ICalendar1->Content->Components->Add(L"VCALENDAR");
	var_Component->Properties->Add(L"Duration1",TVariant(ICalendar1->get_toICalendar(TVariant(2.5),Exicalendarlib_tlb::PropertyTypeEnum::exPropertyTypeDuration)));
	Exicalendarlib_tlb::IPropertyPtr var_Property = var_Component->Properties->Add(L"Duration2",TNoParam());
		var_Property->set_Value(TVariant(2.5));
		var_Property->Type = Exicalendarlib_tlb::PropertyTypeEnum::exPropertyTypeDuration;
Exicalendarlib_tlb::IPropertyPtr var_Property1 = ICalendar1->Root->Properties->get_Item(TVariant("Duration1"));
	OutputDebugString( var_Property1->Name );
	OutputDebugString( L"Guess" );
	OutputDebugString( PChar(var_Property1->GuessType) );
	OutputDebugString( var_Property1->Name );
	OutputDebugString( L"Type" );
	OutputDebugString( PChar(var_Property1->Type) );
Exicalendarlib_tlb::IPropertyPtr var_Property2 = ICalendar1->Root->Properties->get_Item(TVariant("Duration2"));
	OutputDebugString( var_Property2->Name );
	OutputDebugString( L"Guess" );
	OutputDebugString( PChar(var_Property2->GuessType) );
	OutputDebugString( var_Property2->Name );
	OutputDebugString( L"Type" );
	OutputDebugString( PChar(var_Property2->Type) );

17:
How can I get values of the duration iCalendar format

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
OutputDebugString( L"all:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"P1D",Exicalendarlib_tlb::PropertyTypeEnum::exPropertyTypeDuration,L""]) );
OutputDebugString( L"duration:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"P1D",Exicalendarlib_tlb::PropertyTypeEnum::exPropertyTypeDuration,L"Duration"]) );

16:
How can I find the duration in weeks, days, hours, minutes, seconds from a property of duration type

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
Exicalendarlib_tlb::IComponentPtr var_Component = ICalendar1->Content->Components->Add(L"VCALENDAR");
	var_Component->Properties->Add(L"Duration",TVariant(ICalendar1->get_toICalendar(TVariant(3.325),Exicalendarlib_tlb::PropertyTypeEnum::exPropertyTypeDuration)));
Exicalendarlib_tlb::IPropertyPtr p = ICalendar1->Root->Properties->get_Item(TVariant("Duration"));
String i = ICalendar1->toICalendar[TVariant(p->get_Value()),p->GuessType];
OutputDebugString( L"icalendar:" );
OutputDebugString( L"i" );
OutputDebugString( L"all:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"i",p->GuessType,L""]) );
OutputDebugString( L"duration:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"i",p->GuessType,L"Duration"]) );
OutputDebugString( L"weeks:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"i",p->GuessType,L"W"]) );
OutputDebugString( L"days:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"i",p->GuessType,L"D"]) );
OutputDebugString( L"hour:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"i",p->GuessType,L"H"]) );
OutputDebugString( L"min:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"i",p->GuessType,L"M"]) );
OutputDebugString( L"sec:" );
OutputDebugString( PChar(ICalendar1->valuesFromICalendar[L"i",p->GuessType,L"S"]) );

15:
How can I add a property of duration type

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
Exicalendarlib_tlb::IComponentPtr var_Component = ICalendar1->Content->Components->Add(L"VCALENDAR");
	var_Component->Properties->Add(L"Duration1",TVariant(ICalendar1->get_toICalendar(TVariant(2.5),Exicalendarlib_tlb::PropertyTypeEnum::exPropertyTypeDuration)));
	Exicalendarlib_tlb::IPropertyPtr var_Property = var_Component->Properties->Add(L"Duration2",TNoParam());
		var_Property->set_Value(TVariant(2.5));
		var_Property->Type = Exicalendarlib_tlb::PropertyTypeEnum::exPropertyTypeDuration;
	var_Component->Properties->Add(L"Duration3",TVariant(ICalendar1->get_valuesToICalendar(L"D=2;H=12",Exicalendarlib_tlb::PropertyTypeEnum::exPropertyTypeDuration)));
OutputDebugString( ICalendar1->Save() );

14:
How can I add a property of date-time type

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
Exicalendarlib_tlb::IComponentPtr var_Component = ICalendar1->Content->Components->Add(L"VCALENDAR");
	var_Component->Properties->Add(L"DateTime1",TVariant(TDateTime(2001,1,1,12,00,00,0).operator double()));
	var_Component->Properties->Add(L"DateTime2",TVariant(ICalendar1->get_toICalendar(TVariant(TDateTime(2001,1,1).operator double()),Exicalendarlib_tlb::PropertyTypeEnum::exPropertyTypeDateTime)));
	Exicalendarlib_tlb::IPropertyPtr var_Property = var_Component->Properties->Add(L"DateTime3",TNoParam());
		var_Property->set_Value(TVariant(TDateTime(2001,1,1).operator double()));
		var_Property->Type = Exicalendarlib_tlb::PropertyTypeEnum::exPropertyTypeDateTime;
OutputDebugString( ICalendar1->Save() );

13:
How can I add a property of date type

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
Exicalendarlib_tlb::IComponentPtr var_Component = ICalendar1->Content->Components->Add(L"VCALENDAR");
	var_Component->Properties->Add(L"Date1",TVariant(TDateTime(2001,1,1).operator double()));
	var_Component->Properties->Add(L"Date2",TVariant(ICalendar1->get_toICalendar(TVariant(TDateTime(2001,1,1).operator double()),Exicalendarlib_tlb::PropertyTypeEnum::exPropertyTypeDate)));
	Exicalendarlib_tlb::IPropertyPtr var_Property = var_Component->Properties->Add(L"Date3",TNoParam());
		var_Property->set_Value(TVariant(TDateTime(2001,1,1).operator double()));
		var_Property->Type = Exicalendarlib_tlb::PropertyTypeEnum::exPropertyTypeDate;
OutputDebugString( ICalendar1->Save() );

12:
How can I add a property of Calendar User Address type

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
Exicalendarlib_tlb::IComponentPtr var_Component = ICalendar1->Content->Components->Add(L"VCALENDAR");
	var_Component->Properties->Add(L"caladdress1",TVariant("mailto:support@exontrol.com"));
	var_Component->Properties->Add(L"caladdress2",TVariant(ICalendar1->get_toICalendar(TVariant("mailto:support@exontrol.com"),Exicalendarlib_tlb::PropertyTypeEnum::exPropertyTypeCalAddress)));
	Exicalendarlib_tlb::IPropertyPtr var_Property = var_Component->Properties->Add(L"caladdress3",TNoParam());
		var_Property->set_Value(TVariant("mailto:support@exontrol.com"));
		var_Property->Type = Exicalendarlib_tlb::PropertyTypeEnum::exPropertyTypeCalAddress;
OutputDebugString( ICalendar1->Save() );

11:
How can I add a property of boolean type

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
Exicalendarlib_tlb::IComponentPtr var_Component = ICalendar1->Content->Components->Add(L"VCALENDAR");
	var_Component->Properties->Add(L"Boolean1",TVariant(true));
	var_Component->Properties->Add(L"Boolean2",TVariant(ICalendar1->get_toICalendar(TVariant("TRUE"),Exicalendarlib_tlb::PropertyTypeEnum::exPropertyTypeBoolean)));
	Exicalendarlib_tlb::IPropertyPtr var_Property = var_Component->Properties->Add(L"Boolean3",TNoParam());
		var_Property->set_Value(TVariant(0));
		var_Property->Type = Exicalendarlib_tlb::PropertyTypeEnum::exPropertyTypeBoolean;
OutputDebugString( ICalendar1->Save() );

10:
How can I add a property of binary type

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
Exicalendarlib_tlb::IComponentPtr var_Component = ICalendar1->Content->Components->Add(L"VCALENDAR");
	var_Component->Properties->Add(L"Binary1",TVariant(ICalendar1->get_toICalendar(TVariant("This is a bit of text converted to binary"),Exicalendarlib_tlb::PropertyTypeEnum::exPropertyTypeBinary)));
	Exicalendarlib_tlb::IPropertyPtr var_Property = var_Component->Properties->Add(L"Binary2",TNoParam());
		var_Property->set_Value(TVariant("This is a bit of text converted to binary"));
		var_Property->Type = Exicalendarlib_tlb::PropertyTypeEnum::exPropertyTypeBinary;
OutputDebugString( ICalendar1->Save() );

9:
How can I access the root element of the iCalendar format

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
ICalendar1->Load(L"BEGIN:VCALENDAR\\r\\nVERSION:2.0\\r\\nEND:VCALENDAR");
OutputDebugString( ICalendar1->Root->Name );
OutputDebugString( PChar(ICalendar1->Root->Properties->get_Item(TVariant("Version"))->get_Value()) );

8:
How can I get notified once the control loads a new component, property, when using Load or LoadFile methods

// AddComponent event - Occurs when a new component is added.
void __fastcall TForm1::ICalendar1AddComponent(TObject *Sender,Exicalendarlib_tlb::IComponent *NewComponent)
{
	OutputDebugString( L"NewComponent" );
}

// AddProperty event - Occurs when a new property is added.
void __fastcall TForm1::ICalendar1AddProperty(TObject *Sender,Exicalendarlib_tlb::IProperty *NewPropery)
{
	OutputDebugString( L"NewPropery" );
}

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
ICalendar1->FireEvents = true;
ICalendar1->Load(L"BEGIN:VCALENDAR\\r\\nVERSION:2.0\\r\\nEND:VCALENDAR");

7:
How can I add a property with parameters

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
Exicalendarlib_tlb::IComponentPtr var_Component = ICalendar1->Content->Components->Add(L"VCALENDAR");
	Exicalendarlib_tlb::IPropertiesPtr var_Properties = var_Component->Components->Add(L"VEVENT")->Properties;
		var_Properties->Add(L"SUMMARY",TVariant("Company Holiday Party"))->Parameters->Add(L"LANGUAGE",TVariant("en-US"));
		var_Properties->Add(L"DATE",TVariant(TDateTime(2001,1,1).operator double()));
OutputDebugString( ICalendar1->Save() );

6:
How can I load iCalendar from a string

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
ICalendar1->Load(L"BEGIN:VCALENDAR\\r\\nVERSION:2.0\\r\\nEND:VCALENDAR");
OutputDebugString( ICalendar1->Content->Components->get_Item(TVariant(0))->Name );

5:
How can I add VEVENT objects

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
Exicalendarlib_tlb::IComponentPtr var_Component = ICalendar1->Content->Components->Add(L"VCALENDAR");
	Exicalendarlib_tlb::IPropertiesPtr var_Properties = var_Component->Properties;
		var_Properties->Add(L"Version",TVariant("2.0"));
		var_Properties->Add(L"PRODID",TVariant("-//hacksw/handcal//NONSGML v1.0//EN"));
	Exicalendarlib_tlb::IPropertiesPtr var_Properties1 = var_Component->Components->Add(L"VEVENT")->Properties;
		var_Properties1->Add(L"DTSTART",TVariant(TDateTime(2001,1,1).operator double()));
		var_Properties1->Add(L"DTEND",TVariant(TDateTime(2001,1,2).operator double()));
		var_Properties1->Add(L"SUMMARY",TVariant("First Party"));
	Exicalendarlib_tlb::IPropertiesPtr var_Properties2 = var_Component->Components->Add(L"VEVENT")->Properties;
		var_Properties2->Add(L"DTSTART",TVariant(TDateTime(2001,1,4).operator double()));
		var_Properties2->Add(L"DTEND",TVariant(TDateTime(2001,1,5).operator double()));
		var_Properties2->Add(L"SUMMARY",TVariant("Second Party"));
OutputDebugString( ICalendar1->Save() );

4:
How can I save the control's content to iCalendar format, as a file
Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
Exicalendarlib_tlb::IComponentPtr var_Component = ICalendar1->Content->Components->Add(L"VCALENDAR");
	Exicalendarlib_tlb::IPropertiesPtr var_Properties = var_Component->Properties;
		var_Properties->Add(L"Version",TVariant("2.0"));
		var_Properties->Add(L"PRODID",TVariant("-//hacksw/handcal//NONSGML v1.0//EN"));
	Exicalendarlib_tlb::IPropertiesPtr var_Properties1 = var_Component->Components->Add(L"VEVENT")->Properties;
		var_Properties1->Add(L"DTSTART",TVariant(TDateTime(2001,1,1).operator double()));
		var_Properties1->Add(L"DTEND",TVariant(TDateTime(2001,1,2).operator double()));
		var_Properties1->Add(L"SUMMARY",TVariant("Bastille Day Party"));
ICalendar1->SaveFile(L"c:/temp/test.ical");

3:
How can I load the iCalendar format from a file

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
ICalendar1->LoadFile(L"c:/temp/test.ical");
OutputDebugString( PChar(ICalendar1->Content->Components->get_Item(TVariant("VCALENDAR"))->Properties->get_Item(TVariant("PRODID"))->get_Value()) );

2:
How do I export the control's content to iCalendar format

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
Exicalendarlib_tlb::IComponentPtr var_Component = ICalendar1->Content->Components->Add(L"VCALENDAR");
	Exicalendarlib_tlb::IPropertiesPtr var_Properties = var_Component->Properties;
		var_Properties->Add(L"Version",TVariant("2.0"));
		var_Properties->Add(L"PRODID",TVariant("-//hacksw/handcal//NONSGML v1.0//EN"));
	Exicalendarlib_tlb::IPropertiesPtr var_Properties1 = var_Component->Components->Add(L"VEVENT")->Properties;
		var_Properties1->Add(L"DTSTART",TVariant(TDateTime(2001,1,1).operator double()));
		var_Properties1->Add(L"DTEND",TVariant(TDateTime(2001,1,2).operator double()));
		var_Properties1->Add(L"SUMMARY",TVariant("Bastille Day Party"));
OutputDebugString( ICalendar1->Save() );

1:
How can I generate a VCALENDAR object

Exicalendarlib_tlb::IICalendarPtr ICalendar1 = Variant::CreateObject(L"Exontrol.ICalendar.1");
Exicalendarlib_tlb::IPropertiesPtr var_Properties = ICalendar1->Content->Components->Add(L"VCALENDAR")->Properties;
	var_Properties->Add(L"Version",TVariant("2.0"));
	var_Properties->Add(L"PRODID",TVariant("-//hacksw/handcal//NONSGML v1.0//EN"));
OutputDebugString( ICalendar1->Save() );