출처 : http://delphi.about.com/od/delphitips2007/qt/array_parameter.htm

델파이에 함수의 리턴값에 배열을 사용하는 방법에 대해 설명하고 있다.
델파이에서 함수의 리턴값 설정시 "function GetWeekTotal(weekIndex : integer) : array[0..6] of integer;
"와 같은 형태로 사용하게 되면, 컴파일 에러를 발생시키며 컴파일이 진행되지 않는다.

때문에 함수의 리턴값으로 Array(배열)을 사용하기 위해서는 Array를 Type 선언한후, 해당 Type으로 리턴받으면 된다.

[선언부]
type
  TDayVisitors = array[0..6] of integer;

[사용시]
function GetWeekTotal(weekIndex : integer) : TDayVisitors;



Arrays in Delphi allow us to refer to a series of variables by the same name and to use a number (an index) to tell them apart.

Here's an example integer array that can hold up to 7 (integer) values. Note: this is a fixed-size static Delphi array declaration.

var DayVisitors : array[0..6] of Integer;

Arrays as Function Return Types

In Delphi, functions are routines that return a value.

When you want a function to return an array type variable, you might be tempted to use the next declaration:

function GetWeekTotal(weekIndex : integer) : array[0..6] of integer;
begin
  //this will NOT compile
end;
When you try to compile this code, you'll get the next compile-time error: [Pascal Error] E2029 Identifier expected but 'ARRAY' found.

Obviously, when you declare functions that will return array value, you cannot include index type specifiers return declaration.

In order to allow a function to return an array value, you first need to create a custom array type, then use it as a return function type:

//this WILL compile
type
  TDayVisitors = array[0..6] of integer;

...

function GetWeekTotal(weekIndex : integer) : TDayVisitors;
begin
  //do some calculation for the provided "week"
end;

Arrays as Method/Routine Properties

Similar to using arrays as function return types, when you declare routines that take array parameters, you cannot include index type specifiers in the parameter declarations.
type
  TDayVisitors = array[0..6] of integer;

...

procedure DisplayWeekTotal(weekVisitors : TDayVisitors) ;
begin
  //display some info for the provided "week"
end;

2007/09/06 10:54 2007/09/06 10:54
포스팅이 유익 하셨다면 RSS 구독을 신청하세요

Trackback Address >> http://dolba.net/tt/k2club/trackback/1570