Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

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

Post Reply
MAKAPEBu4
Neophyte
Neophyte
Posts: 23
Joined: 16.12.2006 19:19

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

Post 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(); без сохранения данных ответа функции работает нормально.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

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

Post 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.

пс иногда начинает беситься, когда массивы идут возвращаемыми значениями, или обьекты в массиве, или записи - закидывание массива в тип всегда помогает.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
MAKAPEBu4
Neophyte
Neophyte
Posts: 23
Joined: 16.12.2006 19:19

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

Post 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.
Post Reply