Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2010, 22:46   #1
Vladimir-888
Пользователь
 
Регистрация: 01.04.2010
Сообщений: 29
По умолчанию При нажатии на кнопку должна вызываться процедура добавления в стек

Помогите пожалуйста. Я задал стек с помощью процедур, а как сделать, чтобы при нажатии на кнопку вызывалась данная процедура. Вот мой код

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Memo1: TMemo; //для вывода стека
Button1: TButton; //случайное заполнение стека
Edit1: TEdit; //для ввода значений элементов стека
Button2: TButton; //добавление элемента в стек
Button3: TButton; //удааление элемента из стека
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);


private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
type
Tps=^Ts; //определяет тип элемента стека
Ts=record
inf:word; //информационная часть элемента стека
ps:Tps; //указатель на предыдущий элемент стека
end;
var
p:Tps; //указатель на вершину стека
Const n=10; //размерность стека

implementation

{$R *.dfm}

//процедура добавления нового элемента в стек
Procedure AddStack(var P:Tps; n:word);
var
pt:Tps;
begin
new(pt); //выделяем память для нового элемента стека
pt^.inf:=n; //записываем новое число в элемент стека
pt^.ps:=p; //запоминаем указатель на предыдущий элемент стека
p:=pt; //возвращаем этот новый указатель на вершину стека
end;

//процедура извлечения числа из стека с освобождением памяти
Procedure FromStack (var p:Tps; var n:word);
var
pt:Tps;
begin
if p<>nil then begin
pt:=p; //запоминаем старое значение вершины стека
n:=p^.inf; //извлекаем число из текущего элемента стека
p:=p^.ps; //устанавливаем новый указатель на вершину стека
dispose(pt); //освобождаем память старого элемента стека
end
else n:=0;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer;
begin
randomize; //инициируем датчик случайных чисел
Memo1.Clear; //очищаем текстовый редактор Memo1
p:=nil; //указатель на вершину стека полагаем равным константе nil
for i:=1 to n do begin //открываем цикл записей в стек
j:=random(20); //получаем случайное число
AddStack(p,j); //записываем его в стек
Memo1.Lines.Add(IntToStr(j)); //выводим его значение в Memo1
end;
end;

//кнопка добавления элемента в стек из Edit
procedure TForm1.Button2Click(Sender: TObject);
begin

???

end;

//кнопка удаления элемента
procedure TForm1.Button3Click(Sender: TObject);
begin

???

end;

end.
Vladimir-888 вне форума Ответить с цитированием
Старый 03.04.2010, 00:00   #2
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Код:
begin
  AddStack(Tps,  10{Например});
end;
// Удаление
begin
  FromStack(Tps,  10{Например});
end;
P.S.Код не проверял
psycho-coder вне форума Ответить с цитированием
Старый 03.04.2010, 02:41   #3
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Если задача не учебная, то в VCL реализован стек - TStack, TObjectStack.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 03.04.2010, 19:01   #4
Vladimir-888
Пользователь
 
Регистрация: 01.04.2010
Сообщений: 29
По умолчанию

Цитата:
Сообщение от mutabor Посмотреть сообщение
Если задача не учебная, то в VCL реализован стек - TStack, TObjectStack.
Может подскажешь. как задать стек с помощью TStack, а то везде искал, но ничего подобного нет) на примере желательно)
Vladimir-888 вне форума Ответить с цитированием
Старый 03.04.2010, 20:07   #5
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Что тебе нужно в стек ложить, какой тип?
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 03.04.2010, 21:42   #6
Vladimir-888
Пользователь
 
Регистрация: 01.04.2010
Сообщений: 29
По умолчанию

Цитата:
Сообщение от mutabor Посмотреть сообщение
Что тебе нужно в стек ложить, какой тип?
Мне нужно ложить в стек числа, но также нужно будет добавить возможность вносить в стек символы (скобки, точки...)
Vladimir-888 вне форума Ответить с цитированием
Старый 05.04.2010, 18:01   #7
Vladimir-888
Пользователь
 
Регистрация: 01.04.2010
Сообщений: 29
По умолчанию

Помогите, плиз, очень нужно
Vladimir-888 вне форума Ответить с цитированием
Старый 07.04.2010, 21:57   #8
Vladimir-888
Пользователь
 
Регистрация: 01.04.2010
Сообщений: 29
По умолчанию

Подскажите, какой тип данных можно использовать для элементов стека?
Vladimir-888 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При нажатии на конопку должна открываться папка ilsen Помощь студентам 2 18.03.2010 14:58
при нажатии на кнопку Delete vik85 Помощь студентам 0 20.12.2009 20:34
прокрутка при нажатии на кнопку neformat JavaScript, Ajax 0 20.06.2008 20:40
Как сделать так,чтобы при нажатии на кнопку выполнялась процедура? Bolgarin Общие вопросы Delphi 10 03.06.2008 23:48
при нажатии на кнопку должна создаваться новая форма ***СкаЙ*** Помощь студентам 5 13.06.2007 11:51