Вверх ↑
Этот топик читают: Гость
Ответов: 758
Рейтинг: 112
#1: 2010-11-08 16:55:30 ЛС | профиль | цитата
Попытался сделать новый компонент Очередь (Queue)
Элемент должен работать очень просто (расскажу на примере)
Пусть есть 3-и ячейки очереди. При подаче данных на вход, данные записываются в 1-ю ячейку
но перед записью делают сдвиг ячеек (1-я становится 2-й, 2-я становится 3-й, 3-ю выдаем в поток)
См. пример в архиве
queue.rar
Попытка не удалась
Программа с новым элементом не хочет даже запускаться

Elements\delphi\code\hiMainForm_16931D0.pas(13) Fatal: Unit name mismatch: 'hiQueue'
Подскажите, где ошибка и от помощи в доработке не откажусь
карма: 1

0
файлы: 1queue.rar [3.6KB] [298]
vip
#1.1контекстная реклама от партнеров
Разработчик
Ответов: 26061
Рейтинг: 2120
#2: 2010-11-08 16:57:45 ЛС | профиль | цитата
miver, а че, элемент Stack не подходит ля этой цели
карма: 22

0
Ответов: 9
Рейтинг: 1
#3: 2010-11-08 17:03:53 ЛС | профиль | цитата
nesco
Стек - это механизм повсеместно используемый в программирование в силу своей простоты и удобства. Смысл его сводится к тому, что вы можете класть туда(в стек) данные только "наверх" и соответственно брать только "сверху". Например, если вы запишите в стек числа: 3, 7, 1, то получить назад их можно только в обратной последовательности, т.е. 1, 7, 3.

А очередь, как я понимаю, должна позволять получать данные в том порядке, как они в нее поступают, например - записываем в очередь 3, 7, 1 и на выходе получаем 3, 7, 1.
карма: 0

0
Ответов: 758
Рейтинг: 112
#4: 2010-11-08 17:05:43 ЛС | профиль | цитата
nesco писал(а):
miver, а че, элемент Stack не подходит ля этой цели

Из Stack можно вынуть только сверху, то есть последний записанный элемент.
А в Queue выдается в поток первый записанный элемент, но с задержкой (задержка определяется количеством ячеек памяти)
З.Ы.: Был еще один интерес - своими мозгами сделать элемент, но видимо это не для меня

карма: 1

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#5: 2010-11-08 17:06:28 ЛС | профиль | цитата
miver, у тебя класс твоего элемента не THIQueue, a THIMyElement
карма: 22

0
Администрация
Ответов: 15294
Рейтинг: 1518
#6: 2010-11-08 17:10:15 ЛС | профиль | цитата
действительно: стек и очередь это разные вещи. Только запись в очередь обычно осуществляется в конец, а не в начало (в магазине покупатели встают как правило тоже в конец очереди...).
карма: 26
0
Разработчик
Ответов: 26061
Рейтинг: 2120
#7: 2010-11-08 17:12:23 ЛС | профиль | цитата
PiligrimSJV, существует несколько типов организации стека -- LIFO (последним пришел -- первым вышел), это и есть наш элемент стек, но есть еще и FIFO (первым пришел -- первым вышел), это как раз то, что ты и описал, те -- очередь. Iarspider делал такой компонент, где-то лежит на форуме
карма: 22

1
Голосовали:miver
Администрация
Ответов: 15294
Рейтинг: 1518
#8: 2010-11-08 17:14:20 ЛС | профиль | цитата
nesco писал(а):
но есть еще и FIFO (первым пришел -- первым вышел)

это классическая очередь, а не стек. Обычно называют просто "FIFO буфер"
карма: 26
0
Разработчик
Ответов: 26061
Рейтинг: 2120
#9: 2010-11-08 17:18:29 ЛС | профиль | цитата
Все это можно очень просто организовать на штатных компонентах.
------------ Дoбавленo в 17.18:
Dilma писал(а):
это классическая очередь

Спасибо за уточнение. Действительно:
метод LIFO -- стек
метод FIFO -- очередь

карма: 22

0
Ответов: 758
Рейтинг: 112
#10: 2010-11-08 17:28:30 ЛС | профиль | цитата
nesco писал(а):
Все это можно очень просто организовать на штатных компонентах.

На каких если не секрет
nesco писал(а):
Iarspider делал такой компонент, где-то лежит на форуме

Нашол тему Вот, но скачать уже нельзя
карма: 1

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#11: 2010-11-08 17:36:32 ЛС | профиль | цитата
miver писал(а):
На каких если не секрет

К примеру, на StrList-e

code_21423.txt
карма: 22

1
файлы: 1code_21423.txt [1.1KB] [373]
Голосовали:miver
Ответов: 131
Рейтинг: 15
#12: 2010-11-08 17:40:00 ЛС | профиль | цитата
miver писал(а):
На каких если не секрет

Вот ещё
code_21424.txt
карма: 0

1
файлы: 1code_21424.txt [1KB] [255]
Голосовали:miver
Разработчик
Ответов: 26061
Рейтинг: 2120
#13: 2010-11-08 17:50:53 ЛС | профиль | цитата
pardon писал(а):
Вот ещё

На StrList-e гораздо проще

code_21425.txt
карма: 22

1
файлы: 1code_21425.txt [783B] [342]
Голосовали:foksov
Ответов: 8886
Рейтинг: 823
#14: 2010-11-08 22:37:10 ЛС | профиль | цитата
miver, если очередь небольшая, можно так: code_21431.txt
карма: 19

0
файлы: 1code_21431.txt [1.3KB] [292]
Разработчик
Ответов: 4697
Рейтинг: 426
#15: 2010-11-09 14:20:46 ЛС | профиль | цитата
Вариант очереди: code_21436.txt
карма: 10
1
файлы: 1code_21436.txt [827B] [444]
Голосовали:Byuik
Сообщение
...
Прикрепленные файлы
(файлы не залиты)