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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка переполнение стека, Не могу разобраться 
:(
    Опции темы
artdd
Дата 9.3.2011, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



В АБЦ паскаль все работает, в турбо не хочет,помогите найти ошибку
Код



program Lab2;
uses LAB3U;

var
 InputString, srt_out: StrData;
 WordOut, WordIn: StrData;
 OutputString: StrData;

begin
  writeln('ВВедите строку');
  readln(InputString);
  writeln('ВВедите слово, после которого надо вставить другое слово');
  readln(WordOut);
  writeln('Введите слово, которое надо вставить');
  readln(WordIn);
   Inp( InputString, WordOut, WordIn);
  if ind<>11 then
  begin
  Writeln( ' результат');
  Writeln(o);
  end
  else
   writeln('слово не найдено');
readln;
 end.


Код




unit LAB3U;
Interface
type StrData = string;
     StrData1 = string;
 var inputstring,WordOut,WordIn,outputt,srt_out,a,o: string;
 i,len,ind:integer;
procedure Inp (Inputstring : StrData; WordOut:strData;  var WordIn: StrData1 );
implementation
procedure Inp (Inputstring : StrData; WordOut:strData;  var WordIn: StrData1 );
 var
    b:array[1..100]of string;
     l,i:integer;
 begin
 if pos(WordOut+' ', Inputstring)>0 then
 begin
  i := 1; l := 0;
  while (i <= length(Inputstring)) do
    begin
     while ((i <= length(Inputstring)) and (Inputstring[i] = ' ')) do
     inc (i);
     inc(l);
     b[l]:='';
     while ((i <= length(Inputstring)) and (Inputstring[i] <> ' ')) DO
       begin
            b[l]:=b[l]+Inputstring[i];
            inc (i);
       end;
    end;
 if (b[length(Inputstring)] = ' ')then dec(l);
 for i:=1 to l do
 if b[i] = WordOut then b[i]:=(WordOut) + ' ' + (WordIn);
 for i:=1 to l do
  begin
   a:=(b[i] + ' ');
   o:=o+a;
    end;
end
  else
  ind:=11;
end;
   end.


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


Эксперт
****


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

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



переменную ind надо проинициализировать. хотя причем тут стек...
PM MAIL   Вверх
artdd
Дата 9.3.2011, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ошибка 202
Не помогает
Вводим 3 строчки, почле чего вылетает ошибка 202
PM MAIL   Вверх
artdd
Дата 10.3.2011, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



есть идеи?
PM MAIL   Вверх
northener
Дата 10.3.2011, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

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



Цитата(artdd @  9.3.2011,  19:49 Найти цитируемый пост)
Ошибка 202
Не помогает
Вводим 3 строчки, почле чего вылетает ошибка 202 

Непонятно почему сразу не вылетает. Стек-то в турбо паскале по умолчанию всего 16К.
А тут в стеке 
Цитата

  b:array[1..100]of string;
 
25600 байт.


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
baldina
Дата 10.3.2011, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



тогда понятно и почему вылетает, и
Цитата(northener @  10.3.2011,  18:50 Найти цитируемый пост)
почему сразу не вылетает

потому что стек заканчивается в момент вызова функции, когда выделяется память под массив
а ведь знал когда-то, что стек в паскале маленький...
PM MAIL   Вверх
artdd
Дата 11.3.2011, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Большое спасибо, поменял на 20 элементов, теперь все работает
PM MAIL   Вверх
northener
Дата 12.3.2011, 02:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

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



Цитата(artdd @  11.3.2011,  09:57 Найти цитируемый пост)
Большое спасибо, поменял на 20 элементов, теперь все работает 

Логичнее было бы поменять выделение памяти для массива в стеке на выделение памяти для массива в куче. Стек он ведь не резиновый! Даже и в Дельфи!

Это сообщение отредактировал(а) northener - 12.3.2011, 02:35


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
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.0445 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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