procedure TForm1.Button3Click(Sender: TObject);
var
refArr :TTestArray;
nIndex :Integer;
strOut :string;
begin
refArr := GetArray();
strOut := '';
for nIndex := Low(refArr) to High(refArr) do
strOut := strOut + refArr[nIndex] + #13#10;
ShowMessage(strOut);
end;
위에서 처럼... Array of String을 사용하기 위해서 먼저 타입을 정해주고,
그 타입에 준해서 코딩하심 됩니다.
또한 동적 배열의 경우 그 처음과 끝이 명확하지 않기 때문에 Low / High를 써주시면 되고요...
위에서 보심... SetLength는 있는 데 해제하는 코드가 없다고 하실 지 몰겠군요...
써본 바에 의하면... SetLength(***, 0)는 필요 없는 코드입니다.
델파이가 참조가 끝나믄.. 알아서 해제시키는 거 같더군요...
(pview.exe로 힙 사용량을 봐보았는 데... 증가분이 없었습니다.)
포인터타입을 써서 구현하는 방법이 있구요. 아님 변수를 var타입으로 선언하실 수도 있죠.. var는 비베에두 아마도.. 있었던거 같은데.. 예전에 잠시 써봤거덩요.. ^^;
var를 쓰면 function이 아니라 procedure만으로 구현이 가능해지죠.
procedure testProc(a: char; var b, c: Integer);
begin
b := 0;
c := 0;
case a of
'1':
begin
b := 1;
c := b;
end;
'2':
b := 2;
c := b;
begin
end;
end;
end;
procedure UseTestProc;
var
t2, t3: Integer;
begin
testProc('1', t2, t3);
showmessage(inttostr(t2) + ':' + inttostr(t3));
end;
단... 타입을 선언해야 합니다...
아래의 예제를 보믄서...
implementation
type
TTestArray = array of string;
{$R *.dfm}
function GetArray():TTestArray;
begin
SetLength(Result, 5);
Result[0] := '첫번째';
Result[1] := '두번째';
Result[2] := '세번째';
Result[3] := '네번째';
Result[4] := '다섯번째';
end;
procedure TForm1.Button3Click(Sender: TObject);
var
refArr :TTestArray;
nIndex :Integer;
strOut :string;
begin
refArr := GetArray();
strOut := '';
for nIndex := Low(refArr) to High(refArr) do
strOut := strOut + refArr[nIndex] + #13#10;
ShowMessage(strOut);
end;
위에서 처럼... Array of String을 사용하기 위해서 먼저 타입을 정해주고,
그 타입에 준해서 코딩하심 됩니다.
또한 동적 배열의 경우 그 처음과 끝이 명확하지 않기 때문에 Low / High를 써주시면 되고요...
위에서 보심... SetLength는 있는 데 해제하는 코드가 없다고 하실 지 몰겠군요...
써본 바에 의하면... SetLength(***, 0)는 필요 없는 코드입니다.
델파이가 참조가 끝나믄.. 알아서 해제시키는 거 같더군요...
(pview.exe로 힙 사용량을 봐보았는 데... 증가분이 없었습니다.)
그럼 오늘도 즐입니다.