아래는 소스입니다;
Sm문자는 정상적으로 발송합니다. 그런데 보낸후 프로그램이 종료합니다.
또 이런방법으로 사용하는데 메모리문제와는 어떤지 궁금합니다.
type
TMyFunction1 = function(Tcpip:String;TcpPort:Integer;Buffer:String;Len:integer):integer; cdecl;
TMyFunction2 = function(TcpPort:integer;Tcpip:String):integer; cdecl;
TMyFunction3 = function(SendData:String;DataByte:integer):integer; cdecl;
procedure TP_i_JeopSu_SmsF.Btn_WriteClick(Sender: TObject);
var TMyHandle2 : THandle ;
TMyHandle3 : THandle ;
MySmsOpen : TMyFunction2 ;
MySmsSend : TMyFunction3 ;
//
a_Gateway,
a_ip ,
a_port :String;
c,
d :String;
b,res:integer;
begin
TMyHandle2 := LoadLibrary('\pnp\master\dll\STrans.dll');
TMyHandle3 := LoadLibrary('\pnp\master\dll\STrans.dll');
//
a_Gateway:=Name_Cal('GateWay','SMS');
a_Port :=Copy(a_Gateway,Pos(':' ,a_Gateway)+1,05);
a_ip :=Copy(a_Gateway,1,Pos(':',a_Gateway)-1 );
//
@MySmsOpen:= GetProcAddress(TMyHandle2 ,'SmsOpenAPI');
@MySmsSend:= GetProcAddress(TMyHandle3 ,'SmsTransDataAPI');
Try
res := MySmsOpen(StrToint(a_port),a_ip);
iF (res <> 0) Then Begin showmessage('에라:'+IntToHex(res,2));
End Else Begin showmessage('성공');
End;
Except
ShowMessage('통신 에라');
// FreeLibrary(THandle2);
End;
//
c:= Copy('접수일:' +A_Date .Text+StringOfChar(' ',090),1,16);
c:=c+Copy('접수시:' +A_Time .Text+StringOfChar(' ',090),1,16);
c:=c+Copy('요청사유:'+A_ContType_Na.Text+StringOfChar(' ',090),1,16);
c:=c+Copy('고객위치:'+A_Addr .Text+StringOfChar(' ',090),1,32);
//
d:= '10';
d:=d+Copy(' ' +StringOfChar(' ',090),1,02);
d:=d+Copy(Z_Myip +StringOfChar(' ',090),1,16);
d:=d+Copy(a_CustName .Text +StringOfChar(' ',090),1,20);
d:=d+Copy(a_ShopPhone .Text +StringOfChar(' ',090),1,20);
d:=d+Copy(c +StringOfChar(' ',090),1,80);
d:=d+Copy(a_JoinPhone .Text +StringOfChar(' ',090),1,20);
d:=d+Copy('10' ,1,02);
d:=d+Copy(a_JoinCode .Text +StringOfChar(' ',090),1,04);
d:=d+Copy(Z_AdjustiD +StringOfChar(' ',090),1,10);
d:=d+Copy(Z_AdjustName +StringOfChar(' ',090),1,20);
d:=d+Copy('00000000' +StringOfChar(' ',090),1,08);
d:=d+Copy('0000' +StringOfChar(' ',090),1,04);
//
Try
res := MySmsSend(d,208);
iF (res <> 0) Then Begin showmessage('Error:'+IntToHex(res,2));
End Else Begin showmessage('성공:');
End;
Except
ShowMessage('Error');
FreeLibrary(TMyHandle2);
End;
end;
|