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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2014, 08:31   #1
jihot
Начинающий кодер
Пользователь
 
Аватар для jihot
 
Регистрация: 26.01.2010
Сообщений: 72
По умолчанию Ошибка при реализации стека (доступ, судя по всему)

Здравствуйте!

Делал модуль стека, еще неделю назад работал, вчера так и не смог найти ошибку..(

Код:
unit Unit_Stack;

interface

type                              
  tStack = ^rStack;          
  rStack = object        
    N:string;
    Pred : tStack;
    procedure Push(x: string);
    function Pop: string;
  end;

var Stack:tStack;
  { открытые описания }
implementation

procedure rStack.Push(x: string);
var St:tStack;
begin
New(St);
  St^.N := x;
  Stack^.Pred := St;
Dispose(St);
end;

function rStack.Pop: string;
begin
  if Stack = nil then
  begin
    Pop := 'null';
    Exit;
  end;
  Stack := Stack^.Pred;
  Pop := Stack^.N;
end;

begin
stack := nil;
end.
вылетает при обращении к Stack^.Pred , Runtime 236.
RAD 2010 компилятор
with love ^.^
jihot вне форума Ответить с цитированием
Старый 20.03.2014, 11:45   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну так наведи на него мышку и посмотри не равен ли он nil.
Уверен что в этом проблема.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.03.2014, 12:26   #3
jihot
Начинающий кодер
Пользователь
 
Аватар для jihot
 
Регистрация: 26.01.2010
Сообщений: 72
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну так наведи на него мышку и посмотри не равен ли он nil.
Уверен что в этом проблема.
а если так то почему? не понимаю.
я же помещаю в стек, что мешает сделать это
with love ^.^
jihot вне форума Ответить с цитированием
Старый 20.03.2014, 12:33   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
я же помещаю в стек, что мешает сделать это
то, что пред указатель, а память под него вы не выделили
p51x вне форума Ответить с цитированием
Старый 20.03.2014, 12:48   #5
jihot
Начинающий кодер
Пользователь
 
Аватар для jihot
 
Регистрация: 26.01.2010
Сообщений: 72
По умолчанию

Код:
procedure rStack.Push(x: string);
var St:tStack;
begin
New(St);
  St^.N := x;
  St^.Pred := St;
 Stack:=St;
end;
Сделал так, вроде пока проблема с Runtime исчезла.
with love ^.^
jihot вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск во всему наборе данных при включённом SetRange Sanuch89 БД в Delphi 4 19.09.2013 11:34
Не получается сменить фон у ListView. Нужно как-то сменить обработку WM_ERASEBKGND, судя по всему TwiX Win Api 2 09.06.2013 23:25
Метод простой итерации, ошибка при реализации ИВэТэшка Паскаль, Turbo Pascal, PascalABC.NET 4 05.10.2012 18:05
Ошибка при реализации метода класса, имеющего поле шаблоннного типа. DKOI Общие вопросы C/C++ 5 19.10.2010 19:10
Ошибка переполнения стека Cannibal Общие вопросы Delphi 1 01.12.2008 21:32