Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

За 2004-12-25

Re: Динамическая память

> Тема: Динамическая память
>
>
> > Привет программисты,
> >
> > Пишу так:
> > type
> > PData = ^TData;
> > TData = record
> > ...
> > Next: PData
> > end;
> Может я чего не понимаю..... Но зачем это в Delphi????
> Там есть
> aData : array of tData;
> - динамические массивы!!
> Или Вам видение (задание) такое было?

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

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

Хотя массив, конечно, проще в понимании и управлении. :-)

Номер выпуска : 3904
Возраст листа : 460 (дней)
Количество подписчиков : 513
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/286895
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Подписан адрес:
Код этой рассылки: comp.soft.prog.prog
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru?subject=comp.soft.prog.prog

http://subscribe.ru/ http://subscribe.ru/feedback

   2004-12-25 23:16:36 (#286895)

Re[2]: Динамическая память

Привет Surin_bp,

Friday, December 24, 2004, 4:22:26 PM, вы писали:

S> Может я чего не понимаю..... Но зачем это в Delphi????
S> Там есть aData : array of tData; - динамические массивы!!
Знаю, знаю...
S> Или Вам видение (задание) такое было?
Это лаб. работа - ни шагу в сторону! :)

Привожу текст полностью (почти):
...............
PDataUndo = ^TDataUndo;
TDataUndo = record
Data: TData;
Pos: Integer;
UType: Boolean;
(* True - Insert *)
(* False - Delete*)
Next: PDataUndo;
end;
.......................
procedure TEMailList.UAdd(D: TDataUndo);
var
P: PDataUndo;
begin
new(P);
P^:=D;
P^.Next:=UMas;
UMas:=P; <- не в этой ли строке проблема?!
//Подозрения: В UMas копируется не адрес, а содержимое переменной P
(т.е. UMas^:=P^)
//Если так, то как в UMas записать адрес P?
end;

procedure TEMailList.Undo;
begin
if UMas=Nil then
begin
E.Message:='Undo empty';
raise E;
Exit;
end;

if UMas^.UType
then Delete(UMas^.Pos) //Insert
else Insert(UMas^.Data, UMas^.Pos); //Delete
USub;
end;

procedure TEMailList.UNull;
begin
While UMas<>Nil do USub;
end;

procedure TEMailList.USub;
var
P: PDataUndo;
begin
P:=UMas;
UMas:=P^.Next;
Dispose(P);
end;
........................

Выше представлена простенькая реализация Undo на указателях для списка
адресов EMail (лабораторная работа - все типы определены преподом, за
мной реализация)

Афоризм напоследок: Принятие решения часто свидетельствует о том, что человек
устал думать.
25 декабря 2004 г. 19:33:12

Просто студент
Eugene mailto:rav***@o*****.ru

Номер выпуска : 3903
Возраст листа : 460 (дней)
Количество подписчиков : 513
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/286817
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Подписан адрес:
Код этой рассылки: comp.soft.prog.prog
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru?subject=comp.soft.prog.prog

http://subscribe.ru/ http://subscribe.ru/feedback

   2004-12-25 19:58:49 (#286817)