根据几位这里的朋友们的帮助下,我写了一个调用ini的参数连接sql的方法,现在我想把这个做成funtion,那位能帮我改一下吗,这样我可以在别的pas里调用。
unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, DB, ADODB, StdCtrls, Buttons, IniFiles;type
  TForm1 = class(TForm)
    ADOConnection1: TADOConnection;
    ADOQuery1: TADOQuery;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    BitBtn1: TBitBtn;
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
    myinifile:Tinifile;
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.BitBtn1Click(Sender: TObject);
var
 password,servername,user,databasename:string;
begin
myinifile:=Tinifile.create (ExtractFilePath (
    Application.ExeName) + 'conn.ini');
password:= myinifile.readString('conn','password',password);
servername:= myinifile.readString('conn','servername',servername);
user:= myinifile.readString('conn','user',user);
databasename:= myinifile.readString('conn','databasename',databasename);
myinifile.Free;
ADOConnection1.ConnectionString :='Provider=SQLOLEDB.1;Persist Security Info=False;Initial Catalog='+databasename+';'+
            'User ID='+User+';password='+PassWord+';Data Source='+servername;
  try
    adoconnection1.LoginPrompt:=False;
    ADOConnection1.Connected := True;
  except
    Application.MessageBox('连接失败,请检查服务器配置是否正确!','提示',MB_OK+MB_ICONINFORMATION);
    Application.Terminate;
  end;adoquery1.Active:=true;
end;end.

解决方案 »

  1.   

    procedure SetADOConnection(ADOConnection1: TADOConnection);
    begin
     ...
    end;簡單點, 這樣修改就可!
      

  2.   

    Function TForm1.BitBtn1Click(Sender: TObject):Boolean;
    var
     password,servername,user,databasename:string;
    begin
     Result:=False;
    myinifile:=Tinifile.create (ExtractFilePath (
        Application.ExeName) + 'conn.ini');
    password:= myinifile.readString('conn','password',password);
    servername:= myinifile.readString('conn','servername',servername);
    user:= myinifile.readString('conn','user',user);
    databasename:= myinifile.readString('conn','databasename',databasename);
    myinifile.Free;
    ADOConnection1.ConnectionString :='Provider=SQLOLEDB.1;Persist Security Info=False;Initial Catalog='+databasename+';'+
                'User ID='+User+';password='+PassWord+';Data Source='+servername;
      try
        adoconnection1.LoginPrompt:=False;
        ADOConnection1.Connected := True;
        Result:=True;
      except
      end;
    end;
      

  3.   

    呵呵,谢谢阿,不过我想再仔细问一下
    怎么样自己做一个*.pas,里写这样的函数,然后在别的pas里调用这个
      

  4.   

    你可以新建一個unit, 將代碼拷貝進去! 保存unit Unit1;interfaceuses
      Windows, Messages, Variants,  Forms,
      Dialogs, DB, ADODB, IniFiles;  procedure SetADOConnection(ADOConnection1: TADOConnection);
        
    implementation
    var 
     myinifile:Tinifile;
     
    procedure SetADOConnection(ADOConnection1: TADOConnection);
    var
     password,servername,user,databasename:string;
    begin
    myinifile:=Tinifile.create (ExtractFilePath (
        Application.ExeName) + 'conn.ini');
    password:= myinifile.readString('conn','password',password);
    servername:= myinifile.readString('conn','servername',servername);
    user:= myinifile.readString('conn','user',user);
    databasename:= myinifile.readString('conn','databasename',databasename);
    myinifile.Free;
    ADOConnection1.ConnectionString :='Provider=SQLOLEDB.1;Persist Security Info=False;Initial Catalog='+databasename+';'+
                'User ID='+User+';password='+PassWord+';Data Source='+servername;
      try
        adoconnection1.LoginPrompt:=False;
        ADOConnection1.Connected := True;
      except
        Application.MessageBox('连接失败,请检查服务器配置是否正确!','提示',MB_OK+MB_ICONINFORMATION);
        Application.Terminate;
      end;   adoquery1.Active:=true;
    end;end.
      

  5.   

    以後, 要用到, 在你的新的項目中uses 你保存的這個uint的名字;設置, 菜單 Project - Options 
    在 directiories/Conditions 中 的 search path 中, 加入你這個unit 所在的路徑
    直接調用就可!
      

  6.   

    myinifile:=Tinifile.create (ExtractFilePath (
        Application.ExeName) + 'conn.ini');
    为什么这句话里的ExtractFilePath有问题啊