Забыл, как объявить то, что не выходит объявить так:
Tc = record
a: integer;
m: array of Tc;
end;
Объявить самоссылочное поле
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
[syntax="delphi"]type
PC = ^TC;
TC = record
a: integer;
m: array of PC;
end;[/syntax]
PC = ^TC;
TC = record
a: integer;
m: array of PC;
end;[/syntax]
С уважением, Lost Angel...
Спасибо, это то, что нужно!
Продолжение вопроса.
Объявил вот это:
Кроме того, есть рекурсивная функция
countThis(aTc: Tc): real;
Она вызывает себя, передавая в качестве аргумента элементы массива m.
Однако, при компиляции возникает ошибка: Incompartible types: 'Tc' and 'Pc'
Как бы заставить функцию принимать оба типа аргументов? Ведь в сущности, они одно и то же.
Пока есть идея (громоздкая) создать дополнительную функцию, чтоб переводила Pc в Tc, но наверняка есть более простой способ. Может, кто-то знает?
Объявил вот это:
Код: Выделить всё
type PC = ^TC;
TC = record
a: integer;
m: array of PC;
end;
countThis(aTc: Tc): real;
Она вызывает себя, передавая в качестве аргумента элементы массива m.
Однако, при компиляции возникает ошибка: Incompartible types: 'Tc' and 'Pc'
Как бы заставить функцию принимать оба типа аргументов? Ведь в сущности, они одно и то же.
Пока есть идея (громоздкая) создать дополнительную функцию, чтоб переводила Pc в Tc, но наверняка есть более простой способ. Может, кто-то знает?
это не одно и то же.
PC - это ссылка на TC
приведение:
впринципе... пожно объявить перезагруженные функции для эмуляции:

PC - это ссылка на TC

приведение:
Код: Выделить всё
var
a: TC;
b: PC;
begin
a := b^;
b := @a;
end;
Код: Выделить всё
function countThis(aTc: TC): real; overload;
begin
... текст функции
end;
function countThis(aTc: PC): readl overload;
begin
result := countThis(aTc^);
end;

С уважением, Lost Angel...
Ура! Вы меня снова выручили! 
