Фрилансеры предложат решение вашей задачи уже через несколько минут!

Публикация заказа на фриланс бирже не займет много времени.

12 лет назад
Николай Голубев
41 год, Россия
13 лет в сервисе
Был онлайн 5 лет назад
12 лет назад

Есть классы Delphi, реализующие стандарт vCard 2.1 (TVisitCard, TVisitCardList).
Для этих классов необходимо написать импорт контактов из Microsoft
Outlook.
Должны импортироваться все поля контактов, поддерживаемые текущей версией MS Outlook.

Поддерживаемые версии MS outlook - Outlook'2000, Outlook'2003, Outlook'2007.

Параметры импорта:
1) Источник данных в MS Outlook - из трех вариантов: дефолтная папка Outlook, папка по выбору с помощью диалогового окна Аутлука, папка с сохраненным путем;
2) Приведение номера телефона из MS outlook к набирабельному - через callback - ConvertNumberCallback;

Поддерживаемые фильтры:
1) по категориям: либо импортируются только контакты из указанных категорий, либо наоборот; "без категории" - как отдельная категория;
а) Список категорий, не подлежащих импорту;
б) Список категорий, для которых осуществляется импорт;
2) по содержанию полей: из импорта исключаются контакты и/или поля, не удовлетворяющие каким-то условиям;
а) не включаются в импорт контакты, не содержащие телефонных номеров;
б) в VCard'ы добавляются поля только указанных типов (для недобавления неномерных полей или полей, не поддерживаемых конкретным телефоном);

Дополнительные требования:
1) оформление кода в соответствии с нашим правилами;
2) прогресс процесса импорта с помощью callback'ов;
3) результат должен представлять из себя отдельный модуль на Delphi, к которому должна прилагаться тестовая программа (в исходниках), иллюстрирующая его работоспособность.

Форматы структур и функций:

TImportProgress = procedure(Current, Total: Integer; var Stop: Boolean) of object;
//Current - индекс текущего импортируемого объекта, Total - общее количество; Stop - обрабатывается; если True, то процедура импорта завершается.

TConvertNumber = function(PhoneNumber: String): String of object;

TImportParameters=class
OnlyCategories: Boolean; //True - только указанные в CategoryList категории; False - все категории, кроме указанных в CategoryList
CategoryList: TWideStringList;
IncludeContactsWONumbers: Boolean;
ConvertNumberCallback: TConvertNumber;
end;

function ImportContactsFromOutlookDefault(const Parameters: TImportParameters; out ContactList: TVisitCardList; Prg: TImportProgress = nil): Integer;
function ImportContactsFromOutlookDialog(const Parameters: TImportParameters; out ContactList: TVisitCardList; Prg: TImportProgress = nil): Integer;
function ImportContactsFromOutlookPath(const Parameters: TImportParameters; out ContactList: TVisitCardList; Prg: TImportProgress = nil): Integer;
//функции возвращают код ошибки

P.S. Точно такая же задача стоит для Microsoft Exсhange и Lotus Notes.

  1. Прием заявок
  2. Выбор исполнителя
  3. Выполнение заказа
  4. Обмен отзывами
  • Рекламное место свободно
    25 дней за $9
  • Рекламное место свободно
    25 дней за $9
  • Рекламное место свободно
    25 дней за $9

Нет заявок

Другие заказы в категории «Прикладное ПО»

Здесь заказчик и фрилансеры могут обсуждать заказ до начала его выполнения.
Фрилансеры могут участвовать в обсуждении только после подачи заявки.
Здесь заказчик будет контролировать выполнение заказа и общаться с исполнителем.
Доступ к этому разделу имеют только заказчик и выбранный исполнитель.
Все материалы этого раздела закрыты от поисковых систем.