//创建DLL文件
library MyDll;
uses
  SysUtils,
  Classes;function TestDll(s:String):String;stdcall;
begin 
  s:='';
  s:=s+'Provider=SQLOLEDB.1;';
  s:=s+'Password=sa;';
  s:=S+'Persist Security Info=True;';
  s:=S+'User ID=sa;';
  s:=S+'Initial Catalog=posdb;';
  s:=S+'Data Source=Servername;';
end; exports 
TestDll;
------------------------------------------------------------------
//下面是主程序
function TestDll(s:String):String;stdcall; 
external 'MyDll'; procedure TForm1.Button1Click(Sender: TObject); 
begin 
  DataModule1.ADOConnection1.Close;
  DataModule1.ADOConnection1.ConnectionString:==TestDll(); //这边怎么办?
  DataModule1.ADOConnection1.LoginPrompt:=false;
  DataModule1.ADOConnection1.Connected:=true;
end; 
高手请指教

解决方案 »

  1.   

    library MyDll;
    uses
      ShareMem, //这行
      SysUtils,
      Classes;function TestDll(var s:String):boolean;stdcall;
    begin 
      s:='';
      s:=s+'Provider=SQLOLEDB.1;';
      s:=s+'Password=sa;';
      s:=S+'Persist Security Info=True;';
      s:=S+'User ID=sa;';
      s:=S+'Initial Catalog=posdb;';
      s:=S+'Data Source=Servername;';
      result := true;
    end; 
    ---------------------------------------------------
    uses
      ShareMem, //这行function TestDll(s:String):boolean;stdcall; 
    external 'MyDll'; procedure TForm1.Button1Click(Sender: TObject); 
    var s: string;
    begin 
     if not TestDll(s) then exit;
      DataModule1.ADOConnection1.Close;
      DataModule1.ADOConnection1.ConnectionString:==TestDll(); //这边怎么办?
      DataModule1.ADOConnection1.LoginPrompt:=false;
      DataModule1.ADOConnection1.Connected:=true;
    end; 
      

  2.   

    另外,改
    dll的
    function TestDll(s:String):String;stdcall;为
    function TestDll(var s:String):String;stdcall;

     DataModule1.ADOConnection1.ConnectionString:==TestDll(); //这边怎么办?

     DataModule1.ADOConnection1.ConnectionString:=s; //这边怎么办?
      

  3.   

    第一个要改成:
    function TestDll(var s:String):boolean;stdcall;
      

  4.   

    function TestDll(s:String):boolean;stdcall; 
    external 'MyDll'; 
    procedure TForm1.Button1Click(Sender: TObject); 
    var s: string;
    begin 
     if not TestDll(s) then exit;
      DataModule1.ADOConnection1.Close;
      DataModule1.ADOConnection1.ConnectionString:=s;
      DataModule1.ADOConnection1.LoginPrompt:=false;
      DataModule1.ADOConnection1.Connected:=true;
    end;
      

  5.   

    请问这个“Project Project1.exe raised exception class EInvalidPointer with message 'EInvalidPointer operation'. Process stopped. use step or Run to continue.

    怎么解决?