1

サードパーティの DLL 用に定義された次の関数がありますが、これを制御することはできません。

const
  DLL = 'Qarapea.dll';

function QARapid_Open(IniFile: shortstring; Section: shortstring): integer; stdcall; external DLL;
procedure QARapid_EndSearch(); stdcall; external DLL;
function QARapid_Count: integer; stdcall; external DLL;
function QARapid_Search(vs: shortstring): integer; stdcall; external DLL;
function QARapid_FormatAddr(ItemNumber: integer; Buffer: PAnsiChar; BufferSize: integer):     integer; stdcall; external DLL;
procedure QARapid_Close; stdcall; external DLL;

次の方法で関数を呼び出します。

procedure TFormMain.ButtonStaticLookupClick(Sender: TObject);
var
  Res: integer;
  ACode: shortstring;
  IniFile, Section: shortstring;
begin
  try
    ACode := PrepareCode(EditCode.Text);
    IniFile := ExtractFilePath(ParamStr(0)) + 'DllIni.ini';
    Section := 'Default';
    QARapid_Open(IniFile, Section);
    try
      Res := QARapid_Search(ACode);
      Res := QARapid_Count;

    finally
      QARapid_Close;
    end;

  Except on E: Exception do
    MessageDlg(E.Message, mtError, [mbOK], 0);
  end;
end;

QARapid_Count次のエラーが発生したときに、関数を呼び出すまではすべて問題ないようです。

QAS.exe が次のメッセージで失敗しました: Privileged instruction at 0x0012eff4. プロセスが停止しました。step または run を使用して続行します。

CPU デバッグ ウィンドウが開いているため、どこから障害を探し始めればよいかわかりません。

何が問題なのかをどのように追跡できますか?

4

1 に答える 1

0

QuickAddress Rapid API ガイドを読んでから、それに応じて Delphi インポートを修正してください。

于 2012-09-06T13:48:29.370 に答える