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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2010, 14:19   #1
Яська
Пользователь
 
Регистрация: 09.01.2009
Сообщений: 50
По умолчанию Использование динамических списков Delphi

Создать приложение, которое заносит в стек символы с клавиатуры, выводит содержимое стека и сообщение о том, содержится или нет в стеке заданный символ.


Код:
Type
 PSt=^Zap;
 Zap=record
      inf:string;
      adr:PSt;
     end;
Var            // объявление глобальных переменных:
 PVer,         // указатель вершины стека
 PTek:PSt;     // текущий указатель
 ElSt:string; // элемент стека


procedure TForm1.Button1Click(Sender: TObject);
begin
New(PTek);                 // выделить память
 ElSt:=Edit1.Text;// в ElSt занести значение из Edit1
 PTek^.inf:=ElSt;           // в информационную часть стека занести ElSt
 PTek^.adr:=PVer;       // в адресную часть занести указатель на вершину
 PVer:=PTek;// указатель вершины должен указывать на последний элемент
 if ElSt<>'' then
             begin
              Edit1.Text:='';// очистить окно редактора Edit1
              Edit1.SetFocus;// передать фокус ввода редактору Edit1
             end
            else
             begin
              Memo1.Lines.Add('Элементы стека:'); // вывести заголовок
              repeat
               Memo1.Lines.Add(#9+(PTek^.inf));// вывод элементов
               PVer:=PTek^.adr;
               Dispose(PTek);  // освободить память
               PTek:=PVer
              until PTek=nil;

end;

end;

procedure TForm1.Button2Click(Sender: TObject);
var a:string;
begin
a:=Edit2.Text;

While PTek<> nil do
if ElSt=a then ShowMessage('Есть  ' )  else ShowMessage('НЕт');
end;

end.
подскажите,где ошибка.
Яська вне форума Ответить с цитированием
Старый 21.12.2010, 16:34   #2
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Везде.
Давайте по порядку.

Занести в стек символы с клавиатуры
При чем тут Edit? Обрабатывайте событие KeyPress. Каждый раз при начатии клавиши запоминаем в стек нажатый символ.

На форму кидаем Memo, Edit и кнопку. В инспекторе устанавливаем Form1.KeyPreview = True и Memo1.ReadOnly = True.
Далее:
Код:
type

...

  PStekItem = ^TStekItem;
  TStekItem = record
    inf: char;
    adr: PStekItem;
  end;

var
  Ver: PStekItem;    // вершина стека
  Form1: TForm1;

implementation

// Добавление в стек
procedure AddKey (Key: Char);
var
  rab: PStekItem;
begin
  New(rab);                 // выделить память
  rab^.inf := Key;          // в информационную часть стека занести key
  rab^.adr := Ver;          // в адресную часть занести указатель на вершину
  Ver := rab;
end;

{$R *.dfm}

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  AddKey (Key);
end;
Всё. Стек заполняется при нажатии на клавиши.

Далее так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  rab: PStekItem;
  s: String;
  ch: Char;
begin
  ch := Edit1.Text[1]; // искомый символ
  Memo1.Lines.Clear;
  while Ver <> nil do begin
    // извлекаем элемент стека (естественно сверху)
...
    // выводим информацию
...
    // удаляем извлеченный элемент
...
  end;
end;

Последний раз редактировалось Sibedir; 21.12.2010 в 16:43.
Sibedir вне форума Ответить с цитированием
Старый 21.12.2010, 17:54   #3
Яська
Пользователь
 
Регистрация: 09.01.2009
Сообщений: 50
По умолчанию

спасибо большое за помощь)
Яська вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка типизированых файлов и динамических списков (паскаль) SHAK Помощь студентам 4 21.01.2010 21:18
Delphi передача динамических массивов world12_tk Помощь студентам 7 23.12.2009 21:06
Создание и использование динамических структур Oksana11 Помощь студентам 5 09.01.2008 19:39
Использование JavaScript в Delphi... Valdis Общие вопросы Delphi 2 27.09.2007 08:45
Использование JPEG в Delphi 7 Aslan Мультимедиа в Delphi 11 02.08.2007 13:25