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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2010, 09:25   #11
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,542
По умолчанию

Цитата:
грузится процессор
нет выхода из цикла while length(tmp)>0 -> нет изменения длины tmp ->
delete(tmp,1,p); -> здесь видимо р=0 ->
p:=pos(tmp,''); // не нашли ничего в пустой строке -> p=0
Цитата:
и ежесекундно пожирается память
Цитата:
Код:
inc(setarr);// увеличиваем длину массива на 1
SetLength(words,setarr);
в бесконечном цикле
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 27.02.2010 в 09:30.
evg_m вне форума Ответить с цитированием
Старый 27.02.2010, 09:46   #12
T-dayne
Пользователь
 
Аватар для T-dayne
 
Регистрация: 07.02.2010
Сообщений: 54
По умолчанию

evg_m
Если разобрать построчо:
Я ввожу текст "привет!" он разделяется на 2 элемента это "Привет" и "!"
считаются символы до пробела: p=6.
Копируем в массив, и удалям "Привет", остается " !" , вот здесь и ошибка-пробел идет первым, p=0 --> вечный цикл.
Попробуем обойти это, в место где происходит удаление скопированного текста дописываю
Код:
delete(tmp,1,p+1);
, для удаления первого пробела, при этом, выход из цикла происходит, но вылазиет другая ошибка, в строчке
Код:
modif:=modif+translate(words[i]);
где там ошибка?
T-dayne вне форума Ответить с цитированием
Старый 27.02.2010, 10:14   #13
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,542
По умолчанию

может быть так
if tmp[1]=' ' then
Delete(tmp,1,1)
else
//
;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 27.02.2010, 10:21   #14
T-dayne
Пользователь
 
Аватар для T-dayne
 
Регистрация: 07.02.2010
Сообщений: 54
По умолчанию

Код:
while length(tmp)<>0 do
begin
inc(setarr);
p:=pos(tmp,'');
SetLength(words,setarr);
words[i]:=copy(tmp,1,p);
if tmp[1]=' ' then
delete(tmp,1,1)
else
delete(tmp,1,p);
end;
-не рабоает, опять бесконечный цикл.
T-dayne вне форума Ответить с цитированием
Старый 27.02.2010, 10:21   #15
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,542
По умолчанию

Код:
SetLength(words,setarr); //последний  индекс в массиве setarr-1

for i:=0 to setarr do
begin
modif:=modif+translate(words[i]);
end;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 27.02.2010, 10:31   #16
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
сомневаюсь что это много сообщит Вам, но все же
А зря. В ошибке написан адрес, на котором вылет произошел. Войдя в отладчик CPU и добравшись до этого адреса можно узнать в какой конкретно части кода программа такое выкинула.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ПК выдает ошибку при обращении к несуществующему дочернему окну KaimNotark БД в Delphi 3 12.02.2010 10:16
выдает ошибку при вызове scanf Wi1D Общие вопросы C/C++ 6 27.12.2009 19:53
Программа выдает ошибку на нуле Panika Помощь студентам 1 11.11.2009 21:42
При активизации формы выдает ошибку Canadec Общие вопросы Delphi 11 04.09.2007 12:10