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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2010, 21:10   #1
Nostalgia
Пользователь
 
Регистрация: 17.12.2008
Сообщений: 44
По умолчанию Стэк. прорисовка в Memo

Доброго времени суток,
подскажите пожалуйста как в приведенном коде сделать, чтобы стэк сразу добавлялся в Memo, а не считывался с Edit. Нужно сделать прорисовку. И ещё как задать максимальное количество символов в строке в мемо - 10 ? вообще как оно задается ? или нужно писать отдельную процедуру ? Я новичёк в этом деле, подскажите пожалуйста на доступном языке что мне исправить.

Код:
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, stack2, StdCtrls;
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Memo1: TMemo;
    Label4: TLabel;
    Button1: TButton;
    Button4: TButton;
    Label2: TLabel;
    Button3: TButton;

    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  stack:tstack;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
begin
if edit1.text<>'' then
if length(edit1.text)=10  then
begin
s:=edit1.Text;
memo1.Lines.Add(s);
stack.AddToStack(s);
edit1.Text:=''
end
else
showmessage('Длина строки меньше 10')
else
showmessage('Введите значение');
end;

procedure TForm1.Button3Click(Sender: TObject);
var n:integer;
begin
if not stack.EmptyStack then
begin
stack.LastOfStack;
stack.DelFromStack;
n:=memo1.Lines.Count;
memo1.Lines.Delete(n-1);
end
else
showmessage('Стек пуст');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
stack:=tstack.Create;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
stack.Free;
form1.Close;
end;

end.

unit Stack2;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
     const
        StackEmpty =nil;
     type
        T = string;
        TStackEl=^Stackel;
        StackEl=record
                el:T;
                prev:TStackEl;
                end;
     TStack = class
   private
     StackTop:TStackEl;

   public
     Constructor Create;                      //конструктор
     Function EmptyStack:boolean;   //перевірка, чи порожній стек
     Procedure AddToStack(elem:T); //додавання елементу до стека
     Procedure DelFromStack;           //видалення елементу зі стека
     Function LastOfStack:T;             //останній елемент стеку
   end;

implementation
     Constructor TStack.Create;
     begin
       Inherited Create
     end;

     Function TStack.EmptyStack;
     begin
       EmptyStack:=StackTop = StackEmpty
     end;
     procedure TStack.AddtoStack;
     var
        tmp:TStackEl;
     begin
        new(tmp);
        tmp^.el:=elem;
        tmp^.prev:=STackTop;
        STackTop:=tmp;
     end;
     
     procedure TStack.DelFromStack;
     var
        help:TStackEl;
     begin
        if StackTop<>STackEmpty then
        begin
                help:=StackTop;
                StackTop:=StackTop^.prev;
                dispose(help);
        end
        else
        showmessage('error stack pust');
     end;
     function TStack.LastOfStack;
        begin
                if StackTop<>StackEmpty then
                result:=StackTop^.el;

        end;
end.
Nostalgia вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование с использованием структур данных стэк Nostalgia Помощь студентам 0 24.02.2010 20:20
Стэк КсенияСергеевна Общие вопросы C/C++ 4 09.11.2009 18:51
Инвертировать стэк в C++ Drozvd Помощь студентам 0 09.04.2009 03:58
с# прорисовка MAcK Общие вопросы .NET 1 29.08.2008 16:48
Прорисовка букв Миша Помощь студентам 3 19.05.2008 19:46