Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.03.2012, 22:22
Pcrepair
 
Сообщения: n/a
По умолчанию Тип переменной для СТЕКа в Delphi. что выбрать?

Добрый день. Для обработки символьных данных необходим СТЕК со следующими возможностями:
- LIFA (Last In First Out) как базовая возможность
- возможность загрузить множество строк в СТЕК (с последующей выборкой верхней строки)
- возможность копирования всех строк из СТЕКа
- наличие флага, сигнализирующего о том что СТЕК обнулен (все строки выбраны)

Вопрос:
1. есть ли в ДЕЛФИ (РАД2010) тип переменой(какой? именно), соотвествующей по выше перечисленным возможностям, или надо лепить какой то свой модуль
2. если нужен отдельный модуль, есть ли примеры? где их искать(УРЛ)
Всем спасибо
Ответить с цитированием
  #2  
Старый 21.03.2012, 22:29
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Код:
asm
 push s;
end;

asm
 pop s;
end;
Не смог стерпеть такой жути, как push в процедуре...

А если серьёзно, то я бы использовал массив. Ведь строка в делфи есть указатель на строку, тобишь 4 байта. Можно использовать обычный динамический массив как основу (хранить в нём указатели на строки) и дописать к нему нужные функции. Можно оформить это как класс. Можно вместо массива сделать списком (двойной расход памяти, зато очень динамично и работе как со стеком никакие минусы списка не мешают). Дело недолгое.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 21.03.2012 в 23:16.
Ответить с цитированием
Этот пользователь сказал Спасибо Bargest за это полезное сообщение:
nixel (21.03.2012)
  #3  
Старый 21.03.2012, 23:28
nixel nixel вне форума
Начинающий
 
Регистрация: 12.12.2011
Адрес: Москва
Сообщения: 150
Версия Delphi: XE2-U4
Репутация: 131
По умолчанию

Цитата:
Сообщение от Pcrepair
Добрый день. Для обработки символьных данных необходим СТЕК со следующими возможностями:
- LIFA (Last In First Out) как базовая возможность
- возможность загрузить множество строк в СТЕК (с последующей выборкой верхней строки)
- возможность копирования всех строк из СТЕКа
- наличие флага, сигнализирующего о том что СТЕК обнулен (все строки выбраны)

Можно использовать класс от TList<string> с небольшой доработкой.

1. Функция TList.Add. При этом увеличивает счетчик Count на единицу. Обратится к последнему элементу можно через функцию Last.

2. Функция Add позволяет принимать range - диапазон чего угодно, включая строки.

3. Написать функцию с циклом for i:= 0 (to count - 1) с копированием строк из TList куда-то и последующим очищением TList через метод Clear.

4. Если Count=0, значит лист пустой.

в итоге надо дописать всего одну функцию, реализующую пункт 3.
Ответить с цитированием
Этот пользователь сказал Спасибо nixel за это полезное сообщение:
Pcrepair (21.03.2012)
  #4  
Старый 22.03.2012, 08:27
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

класс TStack
Цитата:
TStack maintains a last-in first-out array of pointers.
Unit
Contnrs
Description
Use a TStack object to store and maintain a last-in first-out list.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
nixel (22.03.2012)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:55.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025