Ошибка при вводе параметра (OleVariant)

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ошибка при вводе параметра (OleVariant)

Сообщение Panda1962 » 04.08.2016 12:35:40

Добрый день!

Отправляем почту с вложением через Outlook.

procedure TForm1.Button1Click(Sender: TObject);
var OutLook : OleVariant;
MailItem : Variant;
fnlog : string;
begin
try
Outlook:= GetActiveOleObject('Outlook.Application');
except
Outlook:= CreateOleObject('Outlook.Application');
end;
MailItem:= Outlook.CreateItem(olMailItem);
MailItem.Recipients.Add('qwerty@eprst.ru');
MailItem.Subject:= 'отправка log-а';
MailItem.Body:= 'Привет!';

MailItem.Attachments.Add('d:\log.txt'); //Если так - все нормально отрабатывает

fnlog := 'd:\log.txt';
MailItem.Attachments.Add(fnlog); //Если так - в этом месте ошибка "Прект вызвал класс исключения 'EOleSysError' с сообщением ???????..."
//файл не найден

MailItem.Send;
Outlook := Unassigned;
end;

В чем прикол?
Заранее спасибо!
Panda1962
незнакомец
 
Сообщения: 2
Зарегистрирован: 04.08.2016 12:21:50

Re: Ошибка при вводе параметра (OleVariant)

Сообщение alexs » 04.08.2016 13:54:25

Не помню где подсмотрел - вроде работает.
Код: Выделить всё
Var
  myItem, myAttachments, myAttachment : Variant;
const
olMailItem=0;
var
MailItem: Variant;
Outlook: OLEVariant;
begin
  try
    Outlook:=CreateOleObject('Outlook.Application');
    MailItem:=Outlook.CreateItem(olMailItem);
    MailItem.Recipients.Add(FFilter.Email); //'Список адресов');
    MailItem.Subject:=FFilter.MessageSubject; //'Заголовок письма';
    MailItem.Body:= FFilter.MessageBody.Text; //'Тело письма';
    myAttachments := MailItem.Attachments;
    myAttachment := myAttachments.Add(FFilter.EmailAttachFileName);
    MailItem.Send;
    Outlook:=Unassigned;
  Except
    ShowMessage('OLE error!');
  End;
end;   
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Ошибка при вводе параметра (OleVariant)

Сообщение Panda1962 » 04.08.2016 14:53:26

Ну да. Это тот же пример.
Проблема в том, что если присоединяемый к письму файл указать напрямую строкой MailItem.Recipients.Add('C:filename.txt') - все работает,
а если через переменную fn := 'C:filename.txt'; MailItem.Recipients.Add(fn); - ошибка "файл не найден"
:(

Добавлено спустя 1 минуту 45 секунд:
Причем этот же кусок в delphi7 работает без проблем. Ошибка в lazarus-е возникает на этапе выполнения.

Добавлено спустя 20 минут 26 секунд:
Решено! Re: Ошибка при вводе параметра (OleVariant)
Решено! Спасибо Дож-у:)
Вместо String использовал WideString и все пошло!!!
Panda1962
незнакомец
 
Сообщения: 2
Зарегистрирован: 04.08.2016 12:21:50


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28

Рейтинг@Mail.ru