Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Потеря переменно из процедуры 
V
    Опции темы
KazOFF
Дата 6.6.2007, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 6.6.2007
Где: Раменское

Репутация: нет
Всего: нет



Создаю стек и хочу скопировать его в другой, но почему то из нового стека пропадают значение, как только программа выходит за рамки процедуры.
PM MAIL   Вверх
Snowy
Дата 6.6.2007, 21:12 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Ну это вполне логично.
А в чём вопрос-то?
Ты хочешь, чтоб они не пропадали?
Или чтобы пропадали, но по другому?
Или чтобы на форме была визуализация? Типа хотите фокус: вот есть значения, а вот пропали... Хопс и нету smile 
Или почему они пропадают? Скажу сразу - кончается область видимости переменных.

Где вопрос? Где код?

А в данный момент могу тебе точно ответить - ты скорее всего что-то сделал неправильно, поэтому работает не так, как ты хотел...
Компьютер вообще странная штука - хочешь, чтобы он делал что-то вот так, а он почему-то делает не так, как ты хочешь, а так, как ты ему сказал делать...
PM MAIL   Вверх
skyboy
Дата 6.6.2007, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 4
Всего: 260



KazOFF, код где?
и как может "программа выходить ща рамки процедуры"? и как ты "создаешь стек"?
PM MAIL   Вверх
KazOFF
Дата 6.6.2007, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 6.6.2007
Где: Раменское

Репутация: нет
Всего: нет



Вот код со всеми процедурами которые использует программа, загвоздка идет в процедуре ChangeStack
Код

unit Unit2;

interface
type
 PElem=^TElem;
 TElem=record
       info:string;
       next:PElem;
      end;

var
 t1,t2:PElem;

procedure CreateStack(var t:PElem;i:string);
procedure CreateList(var t:PElem;i:string);
procedure AddTop(var t:PElem;i:string);
procedure TopToTop(var t1,t2:PElem);
procedure FreeList(var t:PElem);
procedure ChangeStack(var N:integer; t1,t2:PElem);
procedure ChangeStack2(var t1,t2:PElem);

implementation
procedure CreateStack(var t:PElem;i:string);
var
 flag:boolean;
begin
 flag:=false;
 while not flag do
 begin
  if t=nil then
   begin
    CreateList(t,i);
    flag:=true;
   end
  else
   begin
    AddTop(t,i);
    flag:=true;
   end;
  end;
end;

procedure CreateList(var t:PElem;i:string);
begin
 new(t);
 t^.info:=i;
 t^.next:=nil;
end;

procedure AddTop(var t:PElem;i:string);
var
 Elem:PElem;
begin
 new(Elem);
 Elem^.info:=i;
 Elem^.next:=t;
 t:=Elem;
end;

procedure TopToTop(var t1,t2:PElem);
var
 t:PElem;
begin
 t:=t1;
 t1:=t1^.next;
 t^.next:=t2;
 t2:=t;
end;

procedure FreeList(var t:PElem);
var
 ELem:PElem;
begin
 Elem:=t;
 while Elem<>nil do
  begin
   t:=t^.next;
   Dispose(Elem);
   Elem:=t;
  end;
end;

procedure ChangeStack(var N:integer; t1,t2:pElem);
var
 flag:boolean;
 i:string;
begin
 flag:=false;
 while t1<>nil do
  begin
   if Length(t1^.info)=N then
    begin
     if not flag then
      begin
       i:=t1^.info;
       CreateList (t2,i);
       flag:=true;
      end
     else
      begin
       i:=t1^.info;
       AddTop (t2,i);
      end;
    end;
    t1:=t1^.next;
  end;
end;

end.

PM MAIL   Вверх
Snowy
Дата 6.6.2007, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Ты не сделал t2 var'овской.
Поэтому она просто её изменение никак не повлияет на её состояние вне процедуры.
Поставь перед ней var

Добавлено через 6 минут и 27 секунд
Хм... Это вообще что? Курсовая?
Иначе зачем изобретать велосипед? В Delphi есть и стек и очередь и списки и стринглист...
Непонятен мне смысл создания того, что штатно есть в комплекте...
PM MAIL   Вверх
KazOFF
Дата 6.6.2007, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 6.6.2007
Где: Раменское

Репутация: нет
Всего: нет



Это лаба просто из инста.
Огромное спасибо за помощь такому чайнику  smile 

Это сообщение отредактировал(а) KazOFF - 6.6.2007, 21:38
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.2971 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.