Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Копирующий конструктор

Автор: -QDe5n1K- 12.04.2005 18:18

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

Код

type PAL=^Al;
    Al=record
       numb:string[5];
       name:string;
       adress:string;
       next:pal;
    end;
    PIL=^Il;
    Il=record
       ind:string;
       next:pil;
       Ablist:pal;
    end;

    TPhInd=class(TObject)
       inl:pil;
      .............
       constructor create(TPI:TPhInd); overload;
    end;
implementation
.......


Помогите пожалуйста это сделать.
Спасибо.

Автор: volvo 12.04.2005 18:38

Цитата(-QDe5n1K- @ 12.04.05 14:18)
а котором одно из полей - указатель на начало двунаправленного списка.

blink.gif Сколько не искал - не нашел ни одного указателя на двунаправленный список...

А вообще-то, я бы использовал копирующий конструктор самого списка:
Код
constructor tlist.copy(var l: tlist);
var p: ptitem;
begin
 first := nil; last := nil;
 p := l.first;
 while p <> nil do
   begin
     append(p^.info);
     p := p^.next;
   end;
end;

ну, а потом в твоем конструкторе просто:
Код
constructor PhInd.create(TPI:TPhInd);
begin
 ...
 new(inl, copy(TPI^));
end;

Автор: -QDe5n1K- 12.04.2005 18:56

Да блин, не двунаправленный, а список списков smile.gif Всегда оговариваюсь smile.gif
Сейчас попробую...

Автор: -QDe5n1K- 18.04.2005 14:16

Огроиное спасибо, все получилось.

Автор: iriska_2 19.05.2007 21:38

а ты не мог бы выложить то,что получилось, а то мне тоже надо это написать и не получается(