Текущий архив: 2002.12.26;
Скачать: CL | DM;
ВнизДерево :) Найти похожие ветки
← →
Фсщкгі (2002-12-16 14:16) [0]Нужно динамически создать экземпляр структуры так чтобы при выходе из функции (где она создается) не терять структуру. То есть следующий вариант НЕ ПРЕДЛАГАТЬ:
...
var node: TStructure;
begin
node := TStructure.Create;
...
end;
← →
KoluChi (2002-12-16 14:20) [1]function ...: TStructure;
var node: TStructure;
begin
Result := TStructure.Create;
...
end;
← →
Acorus (2002-12-16 14:23) [2]Да нет! - мне нужно в этой функции дерево строить - так что нужно чтоб структурка динамически в памяти оставалась
← →
Skier (2002-12-16 14:26) [3]>Acorus
Так она и останется если ты будешь
использовать (при создании) или объекты или дин. структуры,
а из функции возвращать указатель на корень дерева.
← →
KoluChi (2002-12-16 14:27) [4]>так что нужно чтоб структурка динамически в памяти оставалась
А кто/что мешает?
Адрес структуры все-равно нужно возвращать, а для этого есть только 2 способа:
1. Результат функции.
2. Параметр функции.
← →
Acorus (2002-12-16 14:37) [5]специфика в том что эта функция - колбэк из API (у нее все фиксированно - параметры и результат - ничего из предложенного не подходит) - она дает мне инфу для каждого нода в дереве
первый раз получаю рута
при каждой следующей итерации прицепляю новую ноду - для этого нужно чтоб предыдущие ноды (структурки) сохранялись в динамической памяти так как прицепление должно происходить примерно так:
...
if pPrev <> Nil then
pPrev.Next := @Temp;
if (pParent <> Nil) And (pParent.Child = Nil) then
pParent.Child := @Temp;
if (pParent = Nil) and (pPrev = Nil) then
root := Temp;
...
← →
Skier (2002-12-16 14:42) [6]>Acorus
Видимо у тебя Temp объявлен
var
Temp : TSomeRecord;
begin
end;
и, естественно, при таком подходе после
выхода из функции никакого Temp в памяти уже не будет !
Тебе нужно пользоваться дин. структурой и выделять
под неё память самостоятельно.
PSomeRecord = ^TSomeRecord;
var
Temp : PSomeRecord;
begin
New(Temp);
//.......
pPrev.Next := Temp;
end;
← →
Acorus (2002-12-16 14:47) [7]O! - оно !
- я просто Дельфы не знаю
- СПАСИБО! :))
Страницы: 1 вся ветка
Текущий архив: 2002.12.26;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.006 c