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

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

Delphi (class)

Здравствуйте, все.

Повторю свой вопрос, заданный в теме о class и object.

Подскажите простой способ создания списков экземпляров классов.

Поясняю:
Мой препод (не мудозвон :), просто немного странный чел) учил меня
классическому приему паскалистов - динамическим спискам
(однонаправленным или двунаправленным). Т.е. скажем примерно так:

PSomeListItem=^TSomeListItem;
TSomeListItem=object
value:String;
next:PSomeListItem;
end;

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

Вот как теперь быть с классами (class)?

З.Ы. и Буча, и "союз четырех" я читал. Очень интересно

Ответить   Болюба Георгий Thu, 26 Feb 2004 11:58:00 +0300 (#89744)

 

Ответы:

Тема: Delphi (class)

В данном случае достаточно даже RECORD, а так, если нужно и в Delphi, что напиши
CLASS, и учти, что costructor Create и destructor Done у тебя уже есть. Их вызывать
надо.
То есть
type
PSomeListItem=^TSomeListItem;
TSomeListItem=class
value:String;
next:TSomeListItem;
end;

procedure TfmMain.Button1Click(Sender: TObject);
var
AList: TSomeListItem;
begin
AList:=TSomeListItem.Create;
AList.value:='first';
AList.next :=TSomeListItem.Create;
AList.next.value:='second';
ShowMessage(AList.value +#13+Alist.next.value);
AList.next.Free;
AList.Free
end;

Однако, это только схема. Для добавления новых следует добавить метод Add(ANewValue:
String): TSomeListItem;
и написать деструктор - который список очищает.
TSomeListItem - в 32-разрядном приложении не отличается от PSomeListItem. Только
мороки с ним поболее

Но често говоря, а на ... это? Есть TStrings или TStrinList
С уважением,
Борис Сурин, surin_***@m*****.ru
Номер выпуска : 2237
Возраст листа : 158 (дней)
Количество подписчиков : 390
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/89789
Получить правила : 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
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   Thu, 26 Feb 2004 12:43:15 +0300 (#89789)

 

Здравствуйте.

напиши
да пример то абсолютно оторван от жизни был... можно вообразить, что
там есть какойнить метод :)

вызывать

Собсна, до этого я догадался...

О... Золотые слова... Метод добавить к какому объекту?

Тот же вопрос

Только

Повторюсь - оторванный от жизни пример. Т.е. на то, что список содержит
строки обращать внимание не нужно.

ИМХО:
Не напрашивается ли здесь использование объекта-коллекции? Указатель
на следующий элемент списка внутри класса уменьшает возможность
повторного использования кода (руководствуюсь шаблонамипроектирования).

Ответить   Болюба Георгий Thu, 26 Feb 2004 13:15:16 +0300 (#89816)

 

Тема: Re[2]: Delphi (class)

Нужно написать? Я чуть позднее сделаю. Есть срочная работа

Естественно! Они для этого и написаны! Но вот преп примет? Я понял так, что он
хочет Вас дожать :[
Если что, то пишите на мыло - вряд ли это всех заинтересует
С уважением,
Борис Сурин, surin_***@m*****.ru
Номер выпуска : 2241
Возраст листа : 158 (дней)
Количество подписчиков : 390
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/89858
Получить правила : 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
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   Thu, 26 Feb 2004 14:02:26 +0300 (#89858)

 

Здравствуйте.

Код писать не нужно... Скажите к какому объекту вы предлагаете этот
диструктор прилепить? Ведь список - это не класс. Собсна ниже я и
написал про объект-коллекцию. Вот у него и должен быть этот
деструктор.

он

Вы похоже меня спутали :) Меня пока никто дожимать не собирается :)
Даже наоборот - повысили зарплату...

Только вот хотелось поподробнее про объекты-коллекции, которые "Они для этого
и написаны!"
Как с ними эффективно работать? и т.д.

Гм... Разве мы не о программировании говорим :)? Какой смысл уходить в
приват? Например, я сейчас не интересуюсь плотерами, но это не значит,
что через пару лет я ими не буду заниматься. Открою архивчик, почитаю,
спокойно все обдумаю. Иными словами, я против привата! :)

Ответить   Болюба Георгий Thu, 26 Feb 2004 14:25:23 +0300 (#89893)

 

Тема: Re[4]: Delphi (class)

В данном случае - это связанный список = класс, то есть после полей и писать.
Методу передаете параметр, он по условию "пока не NIL" находит хвост списка,
инициализиует, записывае данные
Удаление аналогично - ищем хвост - Free для NEXT выполняем, все пока не удалим
все
Но если не по-заданию, то конечно, проще использовать готовый TCollection, TStringList
....

Сейчас много написано.-> Поиск, но я рекомендую Delphist's FAQ на http://www.forum.vingrad.ru/index.php?act=SF&f=32
скачать - мощный справочник с практическими примерами
С уважением,
Борис Сурин, surin_***@m*****.ru
Номер выпуска : 2248
Возраст листа : 158 (дней)
Количество подписчиков : 390
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/89974
Получить правила : 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
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   Thu, 26 Feb 2004 15:25:08 +0300 (#89974)