名前 題名 ▼ Mr.XRAYさん > [ 複数の結果を取得するDLLの使用方法 ] > http://madia.world.coocan.jp/cgi-bin/DelphiBBS/wwwlng.cgi?print+201906/19060002.txt > > > 以下のようにポインターで引数を受け渡したところ無事動作しました。 > > ありがとうございました。 > > えっ !? > 本人がそう言うのですから.しょうがないですが. > > 興味があれば... > http://mrxray.on.coocan.jp/Delphi/zip/QandA_20190603_DLL_Intarray.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. > > GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link