2012-12-18 30 views
2

使用Interbase的API本是我的Delphi代碼將用戶添加到Interbase的安全數據庫在Delphi

uses 
    IBHeader,IBExternals 

var 
    Form7: TForm7; 
    userData: TUserSecData; 
    userDataPtr: PUserSecData; 
    status: array[0..19] of ISC_STATUS; 
    isc_status: PISC_STATUS; 

procedure TForm7.Create_UserClick(Sender: TObject); 
begin 
    { setup isc_status pointer } 
    isc_status :[email protected]; 
    { setup user data pointer to point to user data structure } 
    userDataPtr :[email protected]; 
    { setup user data structure } 
    userData.user_name :='aseem'; 

    userData.password :='xxxxxxx'; 

    userData.protocol :=sec_protocol_local; 

    userData.dba_user_name :='SYSDBA'; 

    userData.dba_password :='xxxxxxx'; { Don_t hardcode this } 

    userData.first_name :='asa'; 

    userData.last_name :='sad'; 

    userData.sec_flags :=sec_password_spec or sec_dba_user_name_spec or 
    sec_dba_password_spec or sec_first_name_spec or sec_last_name_spec; 

    { add user to security database } 
    isc_add_user(isc_status,userDataPtr); 

end; 

但有像

isc_add_user(isc_status,userDataPtr)一個錯誤;

功能不IBheader.pas發現,IBExternals

能否請你告訴我什麼是這個代碼的問題?

我使用的是Delphi 2007專業版,我使用CodeGear內源文件夾中的IBheader.pas,IBExternals.pas文件。

回答

2

您可能需要使用在IBIntf.pas定義的接口:

uses IBHeader, IBExternals, IBIntf; 

procedure TMyForm.RegisterNewUser; 
var 
    status: ISC_STATUS; 
    status_vector: array[0..19] of ISC_STATUS; 
    user_sec_data: UserSecData; 
    gds: IGDSLibrary; 
begin 
    //setup the user info and then 
    ... 
    //call the function 
    gds := GetGDSLibrary; 
    gds.LoadLibrary; 
    try 
    status := gds.isc_add_user(@status_vector[0], @user_sec_data); 
    //check the status and act accordingly 
    finally 
    gds.FreeLibrary; 
    end; 
end; 

或者你要使用的TIBSecurityService,這是IBX,提供你的頭在同一庫的一部分使用,通過調用它的AddUser方法。

或者,在現代Interbase中,您可能需要執行CREATE USER SQL語句來執行該操作。

+0

謝謝jachguate先生這正與功能gds.LoadIBLibrary; –

+0

@Aseem你好。現在考慮我在代碼中修正了一個錯誤(我沒有在它應該傳遞的地方傳遞一個向量)。 – jachguate

1

下載統一Interbase的庫和複製所需的所有API聲明它

TLama也表明這篇文章:http://edn.embarcadero.com/article/25831

+0

或者看看['這篇文章'](http://edn.embarcadero.com/article/25831)。 – TLama

+0

@TLama是一個獨立的答案在其完整的權利,而不僅僅是評論 –

+0

隨時包括它到您的答案。我會在幾分鐘內刪除我的。它不是獨立的,因爲它只是一個鏈接;-) – TLama