Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.05;
Скачать: CL | DM;

Вниз

Итераторы в Delphi   Найти похожие ветки 

 
Cyrax ©   (2006-10-06 00:32) [0]

Как их реализовать?


 
Ketmar ©   (2006-10-06 00:34) [1]

аккуратно.


 
Cyrax ©   (2006-10-06 00:37) [2]

Ещё как...


 
Ketmar ©   (2006-10-06 00:49) [3]

ты это... задачу давай. или тебе универсальные надо? тогда тут без нормальных сопроцессов не обойдёшься.

(больная идея: fibers? не пинать -- сам знаю, что больной на голову %-)


 
Cyrax ©   (2006-10-06 01:03) [4]

А ещё лучше ссылочку, где можно скачать компонент для работы с итераторами... :)/

1. Есть data типа Pointer. Надо пробежаться по n первым элементам типа, например, integer, лежащим по этому указателю.
Желательно без создания дополнительного указателя типа Integer... (*)
Желательно всё в цикле for (а вот это шутка)...

2. Надо получить i-й элемент какого-либо типа по указателю data типа Pointer, используя как можно меньше символов... Желательно 2-3...
(*) в силе.


 
Ketmar ©   (2006-10-06 01:20) [5]

вряд ли так просто всё получится...


 
Celades   (2006-10-06 01:23) [6]

А имеют ли они вообще в Delphi смысл, при отсутсвии в нем парадигмы обобщенного программирования на должном уровне?


 
vuk ©   (2006-10-06 01:54) [7]

А чего здесь сложного-то? Приводим data к типу "указатель на массив элементов нужного типа" и по индексу берем значение. В общем виде i-й элемент массива любо типа получается добавлением к адресу начала массива i, умноженного на размер элемента.

Правда, это я итераторами не называл бы... :)


 
Джо ©   (2006-10-06 03:46) [8]

> [4] Cyrax ©   (06.10.06 01:03)
> 1. Есть data типа Pointer.

Выбросить :)

Переводи в классы и списки классов. Кстати, в BDS2006 можно реализовать (синтаксически) итератор для употребления в новой конструкции for ... in.


 
MBo ©   (2006-10-06 06:19) [9]

можно посмотреть библиотеки DeCal/SDL

Однако для задач в [4] итераторы не нужны.


 
vidiv ©   (2006-10-06 09:52) [10]

Что такое итераторы?


 
Cyrax ©   (2006-10-06 12:06) [11]

vuk ©   (06.10.06 01:54) [7]
Правда, это я итераторами не называл бы... :)

Сойдёт и так...

Джо ©   (06.10.06 03:46) [8]
Переводи в классы и списки классов.

В данном случае это крайне неэффективно...

vidiv ©   (06.10.06 09:52) [10]
Что такое итераторы?

Ето абстракция...
...для управления контейнерами, не зная типов, идентифицирующих элементы...


 
vuk ©   (2006-10-06 12:24) [12]

to Cyrax ©   (06.10.06 12:06) [11]:
>для управления контейнерами
Нет. Для перебора элементов.


 
Cyrax ©   (2006-10-06 23:14) [13]

vuk ©   (06.10.06 12:24) [12]
> to Cyrax ©   (06.10.06 12:06) [11]:
>>для управления контейнерами
>Нет. Для перебора элементов.

Нет, всё-таки для управления, поскольку перебор - это всего лишь частный случай использования итераторов...


 
default ©   (2006-10-07 00:07) [14]

посмотри как сделаны итераторы в .NET, например, в класс Stack, ArrayList, Quene,...
итераторы там просто перебор элементов


 
default ©   (2006-10-07 00:11) [15]

итератора дословно - перечислитель, ни о каком УПРАВЛЕНИИ речи не идёт


 
default ©   (2006-10-07 01:22) [16]

Удалено модератором
Примечание: Личная переписка. Чат/почта/аська


 
Джо ©   (2006-10-07 02:27) [17]

> [13] Cyrax ©   (06.10.06 23:14)
> vuk ©   (06.10.06 12:24) [12]
> > to Cyrax ©   (06.10.06 12:06) [11]:
> >>для управления контейнерами
> >Нет. Для перебора элементов.
>
> Нет, всё-таки для управления, поскольку перебор - это всего
> лишь частный случай использования итераторов...

Как раз наоборот, вроде. :) Перебор, собственно, и есть главная функция итераторов. А "управляем" мы и ими или нет — дело десятое...


 
vuk ©   (2006-10-07 11:45) [18]

to Cyrax:
Возьмите книжку какую-нибудь, ну хотя бы Буча и посмотрите, как там итераторы описаны.
Кстати, у Буча выделены два типа итераторов - активные и пассивные. Активные - это то, что используется чаще всего(с набором методов/свойств в духе IsDone-Next-Reset-Current). Пассивные - это когда клиент сам перебором не упарвляет, а только передает итератору функцию, которую он вызывает для каждого элемента контейнера. Если кто помнит, то именно так были устроены методы-итераторы в коллекциях TurboVision/OWL.


 
Cyrax ©   (2006-10-09 22:34) [19]

Удалено модератором
Примечание: Личная переписка. Чат/почта/аська


 
Kolan ©   (2006-10-09 22:35) [20]


> Cyrax ©   (06.10.06 00:32)

До итератора я еще не дочитал, но там же есть UML диаграммы на все паттерны.


 
Юрий Зотов ©   (2006-10-09 23:11) [21]

Аффигеть...

Простейший цикл... простейший проход по массиву/списку/коллекции объектов... а как много "хвилософфии"...

Аффигеть....

PS
После знакомства с Джавой не могу отделаться от ощущения, что мир катится к ламеризму.

Не стану утверждать, что это ощущение  безусловно верно, но все же плдтверждения тому есть.

Это еще одно?


 
Kolan ©   (2006-10-09 23:12) [22]


> После знакомства с Джавой

Шас придет iZEN :)


 
Cyrax ©   (2006-10-09 23:20) [23]

Юрий Зотов ©   (09.10.06 23:11) [21]
Аффигеть...
Простейший цикл... простейший проход по массиву/списку/коллекции объектов... а как много "хвилософфии"...
Аффигеть...
После знакомства с Джавой не могу отделаться от ощущения, что мир катится к ламеризму.

Я просто тащщусь от такого запала... (в хорошем смысле, конечно)

Kolan ©   (09.10.06 23:12) [22]
> После знакомства с Джавой
Шас придет iZEN :)

Давай его сюда. Щас споём... (ну, :))


 
Джо ©   (2006-10-09 23:20) [24]

> [21] Юрий Зотов ©   (09.10.06 23:11)
> Аффигеть...
>
> Простейший цикл... простейший проход по массиву/списку/коллекции
> объектов... а как много "хвилософфии"...

Ну почему хвилософии? Один из видов итераторов: передача параметра процедурного типа, который будет вызываться для каждого элемента коллекции, иногда ведь удобно.


 
jack128 ©   (2006-10-09 23:26) [25]

Юрий Зотов ©   (09.10.06 23:11) [21]
с другой сторому принцип "Keep It Simple, Stupid" никто не отменял. А  людей, которые понимают его - не так и много. Вот и приходится принудительно заставлять народ следовать ему...


 
Ketmar ©   (2006-10-09 23:30) [26]

>[25] jack128(c) 9-Oct-2006, 23:26
>принцип "Keep It Simple, Stupid"
хорош, когда
а) его не навязывают;
б) оно-таки simple.

%-)


 
jack128 ©   (2006-10-09 23:42) [27]

jack128 ©   (09.10.06 23:26) [25]
с другой стороНЫ
естественно

Ketmar ©   (09.10.06 23:30) [26]
а) его не навязывают;

не знаю... Может быть, а может и нет. Например, стиль форматирования я себе навязывал. Точему тут этот фокус не пройдет ?

Ketmar ©   (09.10.06 23:30) [26]
б) оно-таки simple.

ну ты еще скажи, что джава (как язык) - сложна ;-)


 
Джо ©   (2006-10-09 23:43) [28]

> [27] jack128 ©   (09.10.06 23:42)
> Ketmar ©   (09.10.06 23:30) [26]
> б) оно-таки simple.
> ну ты еще скажи, что джава (как язык) - сложна ;-)

Как язык несложна. Но такая муть :)


 
Zeqfreed ©   (2006-10-09 23:57) [29]

> [28] Джо ©   (09.10.06 23:43)

Тсс! Сейчас iZEN прийдет! :)


 
isasa ©   (2006-10-10 00:02) [30]

Долго крепился, но влезу.

Это от того, что при варианте
type *var;  // type var[];
type **var;  // type var[][];
с последующей
var = (type*)calloc(nSize, typeof(type));
...
Ну очень надо помнить nSize в дальнейшем. Что дико раздражает, когда сравниваешь с динамическими массивамив Дельфи. :)


 
Юрий Зотов ©   (2006-10-10 00:06) [31]

> Джо ©   (09.10.06 23:20) [24]

> Ну почему хвилософии?

Потому что "передача параметра процедурного типа, который будет вызываться для каждого элемента коллекции" - это 11 слов.

А "callback" - это 1 слово. Причем придуманное давным-давно.

"Keep It Simple".
:o)

> jack128 ©   (09.10.06 23:26) [25]

> А  людей, которые понимают его - не так и много. Вот и приходится
> принудительно заставлять народ следовать ему...

Вот именно поэтому такое ощущение и сложилось.

"Хищные вещи века"...


 
Джо ©   (2006-10-10 00:08) [32]

> [31] Юрий Зотов ©   (10.10.06 00:06)
> > Джо ©   (09.10.06 23:20) [24]
>
> > Ну почему хвилософии?
>
> Потому что "передача параметра процедурного типа, который
> будет вызываться для каждого элемента коллекции" - это 11
> слов.
>
> А "callback" - это 1 слово. Причем придуманное давным-давно.

А, Вы об этом. Ну, так я это исключительно в описательных целях. Ибо, на разъяснение понятия "колбэк" — как раз и нужно около 11 слов. У кого выйдет больше — я не виноват :)


 
Ketmar ©   (2006-10-10 00:15) [33]

>[30] isasa(c) 10-Oct-2006, 00:02
>type *var;  // type var[];
>type **var;  // type var[][];
>с последующей
>var = (type*)calloc(nSize, typeof(type));
а это и не жаба уже вовсе, на?


 
isasa ©   (2006-10-10 00:20) [34]

Ketmar ©   (10.10.06 00:15) [33]
Угу.
Жаба еще не успела достать.


 
Ketmar ©   (2006-10-10 00:21) [35]

да ладно тебе. не, писал я на ней немного. язык как язык -- в меру глупый, в меру простой. вот библиотеки... это да. %-)


 
isasa ©   (2006-10-10 00:27) [36]

Ketmar ©   (10.10.06 00:21) [35]
вот библиотеки... это да.

Ооо! Это отдельная песня. Мне NetBeans предложил >400 штук и я прозрел и понял, что выбирать долго придется.
Счастливые люди, я их понимаю - JBoss,  остальных на костер :)


 
Юрий Зотов ©   (2006-10-10 00:30) [37]

> Ketmar ©   (10.10.06 00:21) [35]

Даже и в языке - убивает хотя бы обилие скобок. Наследие C ?

if (лог_выражение)...
Мы не в силах распознать лог_выражение и без скобок?

obj.func()
Мы не в силах отличить метод от поля и без скобок?

И т.д. А в итоге 4 и более закрывающие скобки подряд - это норма.

Раздражает.


 
Ketmar ©   (2006-10-10 00:31) [38]

>[37] Юрий Зотов(c) 10-Oct-2006, 00:30
>Даже и в языке - убивает хотя бы обилие скобок. Наследие C?
таки да. специально делали на цэ похожим -- чтобы народ переманивать было проще. %-(


 
jack128 ©   (2006-10-10 00:36) [39]

Ketmar ©   (10.10.06 0:31) [38]
таки да. специально делали на цэ похожим -- чтобы народ переманивать было проще. %-(


ну дык в дельфи же тоже можно писать:
if (a = b)                                                                                     then
 c();
но никто не говорит, что дельфя сишников переманивает :-D


 
Джо ©   (2006-10-10 00:38) [40]

> [39] jack128 ©   (10.10.06 00:36)
> Ketmar ©   (10.10.06 0:31) [38]
> таки да. специально делали на цэ похожим -- чтобы народ
> переманивать было проще. %-(
>
> ну дык в дельфи же тоже можно писать:
> if (a = b)                                              
>                                       then
> c();
> но никто не говорит, что дельфя сишников переманивает :-
> D

А вот делфистов на Це переманить сложнее, ибо
if a = b then
 c;
писать там нельзя :)



Страницы: 1 2 вся ветка

Текущий архив: 2006.11.05;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.057 c
2-1161096034
hom
2006-10-17 18:40
2006.11.05
вопрос по Excel


2-1160983161
Dr. Genius
2006-10-16 11:19
2006.11.05
Drag n Drop для файлов из проводника с использованием OnDragOver


3-1157530197
tomkat
2006-09-06 12:09
2006.11.05
Convert "Null" to "0"


2-1161430828
nokk
2006-10-21 15:40
2006.11.05
время gmt


2-1161108419
C@N
2006-10-17 22:06
2006.11.05
Вопрос по INDY а точнее IdPOP3