Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];

Вниз

Итераторы в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.56 MB
Время: 0.041 c
2-1161322857
_Mouse_
2006-10-20 09:40
2006.11.05
Привязка открытия сайта на кнопку в программе.


5-1142197877
AlexeyT
2006-03-13 00:11
2006.11.05
Реакция на клавиатуру


3-1157931407
boss_zbk
2006-09-11 03:36
2006.11.05
Как выдать сообщение


2-1161329954
yel
2006-10-20 11:39
2006.11.05
Отправить сообщение всем компьютерам в сети (TcpClient)


2-1161504506
m-kirill-2003
2006-10-22 12:08
2006.11.05
Имя пользователя





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский