일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 데이터베이스
- Visual Basic
- 델파이
- 인스톨
- 셋업
- PostgreSQL
- 소니
- MySQL
- 문자열
- 초보
- SQL
- Visual Studio 2005
- MFC
- c#
- 기초
- 파라미터
- WIN32 SDK
- SDK
- VB.NET
- winsock
- Firebird
- 예제
- xml
- vb
- dll
- 시리얼 통신
- 입문
- Delphi
- 설치
- 파이어버드
- Today
- Total
프로그래밍 노트
[델파이] DLL에 동적 배열을 파라미터를 넘기기, DLL 반환값 동적 배열로 받기 본문
DLL의 파라미터를 동적 배열로 넘기기
DLL의 반환값을 동적 배열로 반환하기
library SecondDll;
uses
SysUtils, Classes;
{$R *.res}
type
TDynArrVal = array of Integer;
function DynamicSum(DynArr: TDynArrVal): Integer; stdcall;
var
i, iSum : integer;
begin
iSum := 0;
for i := Low(DynArr) to High(DynArr) do
iSum := iSum + DynArr[i];
Result := iSum;
end;
function DynamicReturn(iCnt: integer): TDynArrVal; stdcall;
var
i : integer;
DynArr : TDynArrVal;
begin
SetLength(DynArr, iCnt);
for i := 0 to iCnt - 1 do
DynArr[i] := i + 1;
Result := DynArr;
end;
exports
DynamicSum,
DynamicReturn;
begin
end.
DLL의 파라미터를 동적 배열로 넘기기
DLL의 반환값을 동적 배열로 반환하는 DLL 사용하기
unit uMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
// 동적 배열형 선언
public
{ Public declarations }
end;
var
Form2: TForm2;
type
TDynArrVal = array of Integer;
function DynamicSum(DynArr: TDynArrVal): Integer; stdcall; external 'SecondDll.dll';
function DynamicReturn(iCnt: integer): TDynArrVal; stdcall; external 'SecondDll.dll';
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
var
DynArrTest : TDynArrVal;
i : integer;
begin
// 동적 배열 크기설정
SetLength(DynArrTest, 10);
for i := Low(DynArrTest) to High(DynArrTest) do
DynArrTest[i] := i + 1;
// 동적 배열 파라미터 함수 호출
Button1.Caption := IntToStr(DynamicSum(DynArrTest));
end;
procedure TForm2.Button2Click(Sender: TObject);
var
DynArrTest : TDynArrVal;
i, iSum : integer;
begin
iSum := 0;
SetLength(DynArrTest, 10);
DynArrTest := DynamicReturn(10);
for i := Low(DynArrTest) to High(DynArrTest) do
iSum := iSum + DynArrTest[i];
Button2.Caption := IntToStr(iSum);
end;
end.
예제 소스