델파이에 함수의 리턴값에 배열을 사용하는 방법에 대해 설명하고 있다.
델파이에서 함수의 리턴값 설정시 "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;
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;When you try to compile this code, you'll get the next compile-time error: [Pascal Error] E2029 Identifier expected but 'ARRAY' found.
begin
//this will NOT compile
end;
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;