Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.01.08;
Скачать: [xml.tar.bz2];

Вниз

Отправка почты из dll   Найти похожие ветки 

 
yk ©   (2005-12-20 11:01) [0]

library smtp;
уважаемые мастера!
хочу отправить почту из dll.
Для отправки почты использую Indy, которые лежат в dll
uses
 ShareMem,
 SysUtils,
 Classes,
 IdBaseComponent, IdComponent,
 IdRawBase,IdRawClient,
 IdIcmpClient, IdMessage,
 IdTCPConnection,IdTCPClient,
 IdMessageClient, IdSMTP, Forms,
 Unit1 in "Unit1.pas" {Form1};

{$R *.res}

function SendMail(MailAddress:string;MailText:TStrings):string;cdecl;export;

begin
Form1:=TForm1.Create(Application);
  with Form1 do begin
try
Result:="no";
  IdSMTP.Host:="myhost";
  IdSmTP.Port:=25;
  IdSmtp.Username:="myuser";
  Idsmtp.Password:="123";
  idsmtp.AuthenticationType:=atnone;
  IdSMTP.Connect(5000);
  Msg.Clear;
  Msg.Clear;
  Msg.Subject:="Snabg";
  Msg.From.Address:="myuser@myhost;
   Msg.Recipients.EMailAddresses:="";
   Msg.Recipients.EMailAddresses:=MailAddress;
   Msg.Body.Clear;
   Msg.Body.Text:=MAilText.Text;
   IdSMTP.Send(msg);
   IdSMTP.Disconnect;
Form1.Free;
 except
  begin
   Result:="error";
  Form1.Free;
  end;
           end;

end;
end;

exports
  SendMail;

begin
isMultiThread:=True;
end.

-----------------
....
function SendMail(MailAddress:string;MailText:TStrings):string;cdecl; external "smtp";

procedure TForm1.Button1Click(Sender: TObject);
var
str:string;
begin
 Str := SendMail("eyolkina@polygon.local",Memo1.Lines);
 ShowMessage(Str);

end;

проблема: почта отправляется. Но когда хочу закрыть программу - выскакивает access violation. предположительно изза неправильной работы с памятью в dll.
Соответственно подключить эту библиоткеу как udf к IB не могу.
Подскажите где ошибка


 
alex_*** ©   (2005-12-20 11:04) [1]

парамерами передавай PChar или собери с runtime пакетами или пользуй sharemem


 
alex_*** ©   (2005-12-20 11:05) [2]

совет: используй TForm по назначению, а не в качестве DataModule


 
yk ©   (2005-12-20 11:36) [3]

странно.
но ошибка вылезает даже когда

uses
 ShareMem,
 SysUtils,
 Classes,
 IdBaseComponent,
 IdComponent,
 IdRawBase,
 IdRawClient,
 IdIcmpClient,
 IdMessage,
 IdTCPConnection,
 IdTCPClient,
 IdMessageClient,
 IdSMTP,
 Forms,
 Unit1 in "Unit1.pas" {Form1};

function SendMail(MailAddress:pcHAR;MailText:pcHAR):pcHAR;cdecl;export;
begin
Result:="no";
end;


 
umbra ©   (2005-12-20 11:40) [4]

ShareMem должен быть первым в uses модуля проекта (*.dpr)


 
yk ©   (2005-12-20 11:46) [5]


> umbra ©   (20.12.05 11:40) [4]

спасибо - ступила :))



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.01.08;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.009 c
14-1134507398
(CHALING 32)S K i N E R
2005-12-13 23:56
2006.01.08
Delphi 6 и Delphi 7


14-1134664429
NickX
2005-12-15 19:33
2006.01.08
Компилирование


14-1134555913
dr Tr0jan
2005-12-14 13:25
2006.01.08
Очень нужна книжка


11-1116454469
Vans
2005-05-19 02:14
2006.01.08
Дада про taskbar


2-1135117211
newhite
2005-12-21 01:20
2006.01.08
Простой вопрос!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский