掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
DELPHIで作成したDLLをACCESSから呼び出すと構造体の引数の値が取れない (ID:17947)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
上記投稿のソースです。 よろしくお願いします。 // DLLソース--------------------------------------------------------- library TESTDLL; uses TESTu in 'TESTu.pas'; exports CallTESTDLL; {$R *.RES} begin end. // TESTu.pas(抜粋)------------------------------------------------ // パラメータ情報レコード pParamType = ^TParamRec; TParamRec = Packed Record iCodeA : Integer; iCodeB : Integer; iCodeC : Integer; iCodeD : Integer; iCodeE : Integer; iDummy : Integer; sNameA : PChar; sNameB : PChar; sNameC : PChar; sNameD : PChar; end; function CallTESTDLL(pPar:Pointer; aa:PChar ):Integer; stdcall; implementation function CallTESTDLL(pPar:Pointer; aa:PChar):Integer; begin ↓(テスト結果)このメッセージは正常に表示されます showmessage(aa); GetParam(pParamType(pPar)); ↓(テスト結果)この戻り値も返っています result := 999; end; procedure GetParam(pPar:pParamType); var lstParam : TStringLIst; wk : String; begin lstParam := TStringLIst.Create; try with pPar^ do begin lstParam.Add('iCodeA=' + IntToStr(iCodeA)); wk := sNameA; lstParam.Add('sNameA=' + wk); lstParam.Add('iCodeB=' + IntToStr(iCodeB)); lstParam.Add('iCodeC=' + IntToStr(iCodeC)); lstParam.Add('iCodeD=' + IntToStr(iCodeD)); lstParam.Add('iCodeE=' + IntToStr(iCodeE)); lstParam.Add('sNameB=' + sNameB); lstParam.Add('sNameC=' + sNameC); lstParam.Add('sNameD=' + sNameD); end; ↓(テスト結果)この表示では、数値部分は0、文字列部分は空白''です Showmessage('DLL Get Params' + #13#10 + lstParam.CommaText); finally lstParam.Free; end; end; // VB(A)ソース-------------------------------------------------------- // モジュール Type TParamRec iCodeA As Long iCodeB As Long iCodeC As Long iCodeD As Long iCodeE As Long iDummy As Long sNameA As String sNameB As String sNameC As String sNameD As String End Type Public Declare Function CallTESTDLL Lib "TESTDLL.dll" (ByRef sParam As TParamRec, ByVal ss As String) As Long Public Param As TParamRec // フォーム Private Sub コマンド0_Click() Dim lngRet As Long With Param iCodeA = 100 sNameA = "100A" sNameC = "C:\TEST\AA.TXT C:\BB.CSV" End With lngRet = CallTESTDLL(Param, "TEST!") MsgBox ("戻り値:" & lngRet) End Sub
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.