全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1353
推到 Plurk!
推到 Facebook!

讀取Outlook行事曆錯誤

缺席
cashyy
高階會員


發表:117
回覆:322
積分:212
註冊:2004-04-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-04-22 15:10:25 IP:59.125.xxx.xxx 訂閱
各位先進您好!
小弟目前寫了一段程式,主要是讀取outlook的行事曆,奇怪的是有兩台電腦都是outlook 2003,且平台是XP Pro SP3,
一台不會出現如圖的錯誤畫面,另一台會出現,一直無法解決,請先進們指導一下!

謝謝!

程式碼如下:

[code cpp]
int i = 0;
AnsiString subject,location,body,busyStatus,isRecurring,importance,reminderSet;
AnsiString reminderMinutesBeforeStart,allDayEvent;
AnsiString recurrType,recurrStatus,recurrNoEndDate;
AnsiString sID;
Variant vsubject,vlocation,vbody,vbusyStatus,visRecurring,vimportance,vreminderSet;
Variant vreminderMinutesBeforeStart,vallDayEvent;
Variant vID;

TDateTime dtstart,dtend;
_NameSpacePtr spNamespace = OutlookApplication->GetNamespace((wchar_t*)WideString("MAPI"));
MAPIFolderPtr spFolder = spNamespace->GetDefaultFolder(OlDefaultFolders::olFolderCalendar);
_ItemsPtr spItems = spFolder->Items;
_AppointmentItemPtr spAppointment;
RecurrencePatternPtr RecurrPatt;

Memo2->Lines->Clear();
Variant v;
for(i=0;iCount;i )
{
v = Variant(i 1);
spAppointment = spItems->Item(v);
//if(i==2)
//{
//spAppointment->Subject = (wchar_t*)StringToOleStr(AnsiString("duke test ok"));
//spAppointment->Body = (wchar_t*)StringToOleStr(AnsiString("I m' duke"));
//spAppointment->Save();
//spAppointment->Delete();
//}
if(spAppointment->IsRecurring)
{
RecurrPatt = spAppointment->GetRecurrencePattern();
switch(RecurrPatt->RecurrenceType)
{
/* olRecursDaily-每天 */
case 0:
recurrType = AnsiString("每天");
recurrStatus = AnsiString("每") RecurrPatt->Interval AnsiString("天");
break;
// .........省略
}
/* 開始日期、時間 */
dtstart = RecurrPatt->PatternStartDate;
/* 結束日期、時間 */
dtend = RecurrPatt->PatternEndDate;
}

/* 傳回代表 Outlook 項目交談紀錄索引的 String (每筆資料的唯一值) */
vID = spAppointment->get_ConversationIndex();
sID = vID;

/* 主旨Subject */
vsubject = spAppointment->Subject;
subject = vsubject;
/* 地點Location */
vlocation = spAppointment->Location;
location = vlocation;
/* 內容Body */
vbody = spAppointment->Body;
body = vbody;
/* 忙碌狀態BusyStatus */
vbusyStatus = spAppointment->BusyStatus;
busyStatus = vbusyStatus;
/* 週期性約會IsRecurring */
visRecurring = spAppointment->IsRecurring;
isRecurring = visRecurring;
/* 重要等級Importance */
vimportance = spAppointment->Importance;
importance = vimportance;
/* 提醒ReminderSet */
vreminderSet = spAppointment->ReminderSet;
reminderSet = vreminderSet;
/* 約會開始前多少分鐘發出提醒ReminderMinutesBeforeStart */
vreminderMinutesBeforeStart = spAppointment->ReminderMinutesBeforeStart;
reminderMinutesBeforeStart = vreminderMinutesBeforeStart;
/* 全天AllDayEvent */
vallDayEvent = spAppointment->AllDayEvent;
allDayEvent = vallDayEvent;

if(!spAppointment->IsRecurring)
{
/* 開始日期、時間 */
dtstart = spAppointment->Start;
/* 結束日期、時間 */
dtend = spAppointment->End;
}

Memo2->Lines->Add(AnsiString("ID:" sID "\r\n")
AnsiString("主旨:" subject "\r\n")
AnsiString("地點:" location "\r\n")
AnsiString("內容:" body "\r\n")
AnsiString("忙碌狀態:" busyStatus "\r\n")
AnsiString("重要等級:" importance "\r\n")
AnsiString("提醒:" reminderSet "\r\n")
AnsiString("約會開始前幾分鐘發出提醒:" reminderMinutesBeforeStart "\r\n")
AnsiString("全天:" allDayEvent "\r\n")
AnsiString("週期性行程:" isRecurring "\r\n")
AnsiString("週期性類型:" recurrType "\r\n")
AnsiString("週期性狀態:" recurrStatus "\r\n")
AnsiString("開始時間:" dtstart "\r\n")
AnsiString("結束時間:" dtend));

Memo2->Lines->Add("======================================\r\n\r\n");
}

[/code]

附加檔案:4bcff66170cf0_error1.JPG
編輯記錄
cashyy 重新編輯於 2010-04-22 15:10:57, 註解 無‧
cashyy 重新編輯於 2010-04-22 15:16:58, 註解 無‧
cashyy
高階會員


發表:117
回覆:322
積分:212
註冊:2004-04-30

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-04-23 09:17:17 IP:59.125.xxx.xxx 訂閱
這會是因為沒有update新版RAD Studio的關係嗎?
cashyy
高階會員


發表:117
回覆:322
積分:212
註冊:2004-04-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-04-27 17:37:11 IP:59.125.xxx.xxx 訂閱
有人在嗎?可以提出一些建議或方向嗎?小弟重新安裝了XP Pro outlook 2003 就好了!不過另一台電腦的系統也是XP Pro SP3、outlook 2003,卻出現錯誤畫面!
系統時間:2024-04-26 20:07:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!