各位大虾,帮我看看
代码如下:
library faxdll;
uses
SysUtils,
Windows,
//Dialogs,
Classes;  Type
   Address = Record
      Name,Company,Adr,Location,Fax,Tel,Owner : TStringList;
        End;
   JobInfo = Record
              Sender,Recipient : Address;
      STime,ETime,RTime,Subject,Comment,
              NotifyAdr,TagLine,PageChop,Coverpage,
              CountCoverPage,Modem : String;
      Dials,Tries,Prio,PRes,ChopThreshold,
      PForm,Notify,Pages : Byte;
      WCover,WCountCover,WTagline : Boolean;
      Docs,Dests : TStringList;
      JobID : TStringList;
              JobTag : String;
             end;
function mySendFax(HD: THandle; const FaxPath: string; const sServer, sUser, sPass: string;
      const iPort: Integer; const sinfo: string; const sFileName: string; var AJobInfo: JobInfo;
      var sError: string; const sLoginUser: string = ''): Boolean; stdcall; external 'SendFax.dll';
Function mysend ( X: integer; FAX_PHONE,FAX_SERVER,FAX_SJR,FAX_FJR,FAX_FILE: pchar) : integer ; stdcall ;
var
  AJobInfo: JobInfo;
  sinfo, sError,_FaxDataPath,aa: string;
  Bol: Boolean;
  k: THandle;
begin
 try  _FaxDataPath := 'C:';
  sinfo :='111' + #9 + 'NOW' + #9 + 'fjr' + #9 + '' + #9 + 'sjr' + #9 + '' + #9 + '' + #9 + '' + #9 + 'ttyS4' + #9 + 'test' + #9 + '1' + #9 + '1' + #9 + '127';  k := THandle(X);
  Bol := mySendFax(k,'C:','10.141.37.200','000185', '123456', 0,sinfo,'C:\111.txt',AJobInfo, sError, '');
  aa := BoolToStr(Bol);
  result := strtoint(aa);
 except
  result := 0;
  end;
end;{$R *.RES}
exports mysend;
beginend.

解决方案 »

  1.   

    在调用程序和dll 里都要uses ShareMem,exe里要,dll里也要,且必须是uses 的第一位,其他uses的单元都跟后面。string等这些自动管理生命周期的类型需要borlandmm.dll来实现管理,
    如果程序发布,还要把BORLNDMM.DLL带上,如果想不带上BORLNDMM.DLL,可以用fastmm,uses ShareMem 换成 uses fastmm; 发布程序可以不带上BORLNDMM.DLL。当然你也可以自己写一个内存管理器,《delphi 技术手册》里有个自定义实现内存管理器的示例代码。
      

  2.   

    谢谢您!现在问题是'SendFax.dll'这个dll不是我写的,
      

  3.   

    没办法咯,既然DLL有问题只能找作者了
      

  4.   

    DELPHI中调用时正常的,问题应该出在接口部分,