Page 1 of 1

массив TStringList как результат функции

Posted: 01.02.2013 0:22
by MAKAPEBu4
Изображаю код в простом виде:

Code: Select all

Program tst;
var tt: array[0..1] of TStringList;

Function NewFunc(): array[0..1] of TStringList;
begin
result[0] := TStringList.Create;
result[1] := TStringList.Create;
end;

begin
  tt := NewFunc();
  tt[0].free;
  tt[1].free;
end.
Ответ компилятора: "Type Mismatch at 0.28"
Просто запуск NewFunc(); без сохранения данных ответа функции работает нормально.

Re: массив TStringList как результат функции

Posted: 01.02.2013 0:43
by Vizit0r

Code: Select all

type arr = array[0..1] of TStringList;

var tt: arr;

Function NewFunc: arr;
begin
result[0] := TStringList.Create;
result[1] := TStringList.Create;
end;

begin
  tt := NewFunc;
  tt[0].free;
  tt[1].free;
end.

пс иногда начинает беситься, когда массивы идут возвращаемыми значениями, или обьекты в массиве, или записи - закидывание массива в тип всегда помогает.

Re: массив TStringList как результат функции

Posted: 01.02.2013 12:01
by MAKAPEBu4
Спасибо, проясню для потомков примером, вдруг кому-то понадобится (:

Code: Select all

Program tst;
type TArrOfTStringList = array [0..1] of TStringList;
var tt: TArrOfTStringList;

Function NewFunc(): TArrOfTStringList;
begin
result[0] := TStringList.Create;
result[1] := TStringList.Create;
end;

begin
  tt := NewFunc();
  tt[0].free;
  tt[1].free;
end.