Есть задача интеграции своей программы с Outlook. Для контактных лиц.
Для этого используется возможность добавления своего поля в карточку контакта Outlook и хранения там кода контакта из своей БД.
Вот примерный кусочек кода который это делает.
var
Outlook, NameSpace, ContactsRoot, OutlookContact, UserProperty: Variant;
begin
Outlook := CreateOleObject('Outlook.Application');
NameSpace := Outlook.GetNameSpace('MAPI');
ContactsRoot := NameSpace.GetDefaultFolder(10);
OutlookContact := ContactsRoot.Items.Add;
OutlookContact.FirstName := IntToStr(Random(1000000));
Все было хорошо, пока не вышел Outlook 2007.
Эта строчка перестала работать и выдает "Incorrect Funtcion"
UserProperty := OutlookContact.UserProperties.Add('code', 3);
Метод тыка позволил выявить следующее.
Оказывается, добавить поле к Контакту (поле контакта) с этим именем уже нельзя, т.к. оно уже существует в загашнике (поля пользователя в папке), т.к. его добавили на другую карточку контакта раньше.
Найти это поле методом UserProperties.Find не получается, т.к. в нем не установлено значение(!).
В общем бред какой-то. Помогите плиз.
Вопрос собственно вот в чем, покажите мне код, который создаст два контакта в Outlook 2007(!), добавит им одинаковое поле и установит в нем значение.