2

これは、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 :=@status;
  { setup user data pointer to point to user data structure }
  userDataPtr :=@userData;
  { 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;

しかし、次のような1つのエラーがあります

isc_add_user(isc_status、userDataPtr);

関数がIBheader.pas、IBExternalsに見つかりません

このコードの問題点を教えてください。

Delphi 2007 Professional Editionを使用しており、CodeGear内のソースフォルダーにあるIBheader.pas、IBExternals.pasファイルを使用しています。

4

2 に答える 2

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;

または、AddUserメソッドを呼び出すことにより、使用しているヘッダーを提供するのと同じライブラリであるIBXの一部であるTIBSecurityServiceを使用することもできます。

CREATE USERまたは、最新のInterbaseでは、 SQLステートメントを実行してそのアクションを実行したい場合があります。

于 2012-12-18T08:10:35.613 に答える
1

Unified Interbaseライブラリをダウンロードし、そこから必要なすべてのAPI宣言をコピーします

TLamaもこの記事を提案しています:http://edn.embarcadero.com/article/25831

于 2012-12-18T08:43:01.907 に答える