喫茶XRAYトップページ
[12904]
整数型配列の引数-DLL
返信
削除
2019/6/7 (金) 18:52:25
Mr.XRAY
[ 複数の結果を取得するDLLの使用方法 ]
http://
madia.
world.
coocan.
jp/
cgi-
bin/
DelphiBB
S/
wwwlng.
cgi?
print+
201906/
19060002
.
txt
> 以下のようにポインターで引数を受け渡したところ無事動作しました。
> ありがとうございました。
えっ !?
本人がそう言うのですから.しょうがないですが.
興味があれば...
http://
mrxray.
on.
coocan.
jp/
Delphi/
zip/
QandA_20
190603_D
LL_Intar
ray.
zip
動作確認は Windows 7 U64(SP1) + Delphi XE5(UP2) Pro VCL-32 です.
DLL 内のの関数を使用するテスト用のコード
implementation
{$R *.dfm}
function test_conv(src:array of integer;
var dst1:array of single;
var dst2:array of single):boolean;stdcall;external 'dll_testarray.dll';
procedure TForm1.Button1Click(Sender: TObject);
var
ret : boolean;
src_dat : array[0..1000]of Integer;
dst1_dat : array[0..500]of Single;
dst2_dat : array[0..500]of Single;
LIndex : Integer;
begin
Memo1.Lines.Clear;
Memo1.Lines.BeginUpdate;
for LIndex := 0 to 1000 do src_dat[LIndex]:=1000 + LIndex;
ret:=test_conv(src_dat,dst1_dat,dst2_dat);
Memo1.Lines.Add(BoolToStr(ret));
for Lindex := Low(dst1_dat) to High(dst1_dat) do begin
Memo1.Lines.Add(FloatToStr(dst1_dat[LIndex]) + ' '
+ FloatToStr(dst2_dat[LIndex]));
end;
Memo1.Lines.EndUpdate;
end;
DLL のコード
library dll_testarray;
uses
System.SysUtils,
System.Classes;
function test_conv(src:array of integer;
var dst1:array of single;
var dst2:array of single):boolean; stdcall;
var
Lindex : Integer;
begin
Result := True;
for Lindex := Low(dst1) to High(dst1) do begin
dst1[Lindex] := src[Lindex];
dst2[Lindex] := src[Lindex] * 2;
end;
end;
exports
test_conv;
end.
[12905]
Re:整数型配列の引数-DLL
返信
削除
2019/6/7 (金) 21:43:40
福士
> えっ !?
> 本人がそう言うのですから.しょうがないですが.
これ、他の人がC言語ベースで作ったDLLをDelphiから呼ぶ、という話だったのでは?
int test_conv(
int src[1000],
float dst1[500],
float dst2[500]
);
は
int test_conv(
int *src,
float *dst1,
float *dst2
);
と同義ですから、これで解決というのは当たり前と言えば当たり前で…
[12906]
Re2:整数型配列の引数-DLL
返信
削除
2019/6/7 (金) 22:52:16
Mr.XRAY
▼ 福士さん.どうもです.
> > 本人がそう言うのですから.しょうがないですが.
> これ、他の人がC言語ベースで作ったDLLをDelphiから呼ぶ、という話だったのでは?
なるほど,そういうことですか.納得です.
読みが浅かったようです.
「行間を読む」と言う言葉がありますが,
「読む」というのは中々難しいです.勉強になりました.
[12907]
Re3:整数型配列の引数-DLL
返信
削除
2019/6/7 (金) 22:56:40
Mr.XRAY
> 「行間を読む」と言う言葉がありますが,
> 「読む」というのは中々難しいです.勉強になりました.
というか,最初の
int test_conv(
int src[1000],
float dst1[500],
float dst2[500]
);
の書き方で気づくべきでししたね.
[12911]
Re4:整数型配列の引数-DLL
返信
削除
2019/6/9 (日) 19:49:08
Mr.XRAY
> の書き方で気づくべきでししたね.
記事にしました.
これをネタにして,また何か変な記事を書くんしゃないか,と思っていた方,
期待に応えてスミマセン (笑)
[ Windows API ( C, C++ ) の関数の配列の引数はポインタ型 ]
http://
mrxray.
on.
coocan.
jp/
Delphi/
Others/
TypeArra
y.
htm#
12
ページの構成変更に伴い以下に移動しました.
http://
mrxray.
on.
coocan.
jp/
Delphi/
Others/
Array_Me
ssage.
htm#
05
INCM/CMT
Cyclamen v3.82