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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2011, 14:06   #11
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
Сообщение от Antistas Посмотреть сообщение
теперь вылетает с ошибкой Range Check Error в dll
Значит в твоём алгоритме баг. Индекс массива выходит за допустимый для массива диапазон.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 08.02.2011, 14:18   #12
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Какого же лешего ты вызываешь Write[Ln] при использовании dll в НЕконсольном хост-приложении ?
ССЗД)
mss вне форума Ответить с цитированием
Старый 08.02.2011, 14:34   #13
Antistas
Пользователь
 
Регистрация: 29.03.2009
Сообщений: 15
По умолчанию

Цитата:
Сообщение от mss Посмотреть сообщение
Какого же лешего ты вызываешь Write[Ln] при использовании dll в НЕконсольном хост-приложении ?
ССЗД)
writeln были в консольном приложении. при переносе в dll writeln уже нет.
Antistas вне форума Ответить с цитированием
Старый 08.02.2011, 14:38   #14
Antistas
Пользователь
 
Регистрация: 29.03.2009
Сообщений: 15
По умолчанию

Цитата:
Сообщение от veniside Посмотреть сообщение
> И она вполне рабочая.

Ну так при переносе в ДЛЛ ты всё переделал. Толку, что она рабочая.

В общем, это уже не так важно, т.к.:

> теперь вылетает с ошибкой Range Check Error в dll

Ищи, где и почему выходишь за границы массива.

Выход за границы массива происходит потому что программа зацикливается. делал трассировку. компилятор почему то некоторые действия пропускает. тупо синяя полоска проходит мимо.
Сам по себе алгоритм должен заканчиваться с 1-2 итерации , при переносе в алгоритме ничего не трогал. убрал лишь writeln. Программа нормально выходит когда ставлю число итерации (М) = 5 например. и в процедуре stop присваиваю d=1, чтобы выйти из цикла. Только в этом случае программа нормально завершается. однако повторюсь что 5 итерации быть не должно. 1 - 2 максимум.
Antistas вне форума Ответить с цитированием
Старый 08.02.2011, 14:48   #15
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

> компилятор почему то некоторые действия пропускает

Выключи оптимизатор.
mss вне форума Ответить с цитированием
Старый 08.02.2011, 14:56   #16
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
Сообщение от Antistas Посмотреть сообщение
компилятор почему то некоторые действия пропускает
"Некоторые" - это какие? Свой хрустальный шар я забыл у друга.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 08.02.2011, 15:03   #17
Antistas
Пользователь
 
Регистрация: 29.03.2009
Сообщений: 15
По умолчанию

Код:
  if (y1 < y2)   then
			      begin
					    delta:= x2 - x1;
					    b:= x2;
					    x2:= x1;
				    	x1:= a + delta;
				    	y2:= y1;
			      end
В этой части например . Зайдет сюда
Код:
b:= x2;
и выйдет. Но я уже по ходу разобрался. Похоже дело было в том что я не организовал нормальный выход из цикла. Спасибо всем
Antistas вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов функции из DLL(C#) ZverSS88 Помощь студентам 0 25.11.2010 11:27
Получить экспортируемые из DLL функции Memfis1992 Общие вопросы Delphi 5 30.10.2010 13:24
Вызов функции из dll-ки VVVadim Общие вопросы Delphi 2 28.04.2009 10:37
Функции binkw32.dll Volkogriz Общие вопросы Delphi 3 16.10.2007 11:46
DLL + Процедуры(не функции) LEKA Общие вопросы Delphi 1 02.05.2007 20:37