|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.05.2018, 22:37 | #1 |
Регистрация: 21.05.2018
Сообщений: 3
|
Invalid Pointer operator
Здравствуйте, уважаемые программисты!
Не могу справиться с проблемой. Имеется проект программы для работы с библиотекой швейцарских эфемерид. Все нужные функции объявлены большая часть из них нормально работает, возвращает искомые значения и т.д. Но, вызов одной функций (если кто знает, swe_fixstar_UT) постоянно вызывает исключение "Project ХХХ raised exception class EAccessViolation with message 'Access violation at address 00401C22 in module 'ХХХ'. Write of address 0000000C'. Process stopped." В функцию передаётся рад параметров, один из которых значение переменной типа "PChar" (название звезды). Функция по значению этой переменной выбирает из текстового файла строку с параметрами, выполняет расчёты и возвращает результаты вычислений в указанны массив. Данные рассчитываются,но после окончания расчётов выдаётся исключение и всё глохнет... Прошу помощи, может кто-нибудь сталкивался с подобным. Спасибо! |
21.05.2018, 23:14 | #2 |
Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
|
Что-то, видимо, не так передаёте.
Судя по описанному поведению - проблема с очисткой стека Или пишите разработчикам. |
21.05.2018, 23:41 | #3 |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Ansi <> Unicode
дай посмотреть DLL. ------------------ Апд.: параметры функций передаются stdcall (через стек). Их порядок, размер и выделенная дин. память должны иметь месть быть правильными. Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
Последний раз редактировалось min@y™; 21.05.2018 в 23:56. |
22.05.2018, 12:12 | #4 | |
Регистрация: 21.05.2018
Сообщений: 3
|
Цитата:
Я пытался всунуть в качестве star переменную типа PChar, причём задавал её размер с запасом для более 41 символа. Задача решалась, но с генерацией исключений. Ещё раз спасибо . С уважением, Владимир |
|
23.05.2018, 12:10 | #5 | |
Регистрация: 21.05.2018
Сообщений: 3
|
Цитата:
Я так понял, что Вы имели дело со швейцарскими эфемеридами? Есть ещё один вопрос по ним. С swe_fixstar_UT я разобрался, ещё раз спасибо за ответ, но есть ещё ф-я swe_fixstar2_mag, выводящая звёздную величину светила, и она вообще не хочет работать, выдаёт вот такое сообщение: "Project ХХХ.exe raised exception class EAccessViolation with message 'Access violation at address 60DA5646 in module 'swedll32.dll'. Write of address 00000000'." Код: var mag: double; St_name: array [0..40] of Char; SName:String; ns, i: integer; zxc: Longint; begin SName:=Trim(SE_N_MAE[N_Star-1]); ns:=Length(SName); i:=0; while i<=ns-1 do begin St_Name[i]:=SName[i+1]; Inc(i) end; zxc:=swe_fixstar2_mag(St_Name, mag, sErr); Frm_main.Lbl_m_st.Caption:=FloatToS tr(mag); end; Нужна помощь профессионала Спасибо. |
|
23.05.2018, 12:29 | #6 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,760
|
Ну так swe_fixstar2_mag требует адреса в качества параметров, а вы ей значения суете. Вот, например, mag типа double чему будет равен? 0. И по какому адресу функция будет писать? 0. О чем ваша ошибка? О том, что вы пытаетесь писать по адресу 0. Никаких ассоциаций?..
|
23.05.2018, 13:08 | #7 |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
До появления этой темы я вообще не знал про их существование. И до сих пор не знаю, что это такое. Я просто в гугле нашёл описание функции, прочитал его и указал тебе на те места, где ты мог сделать ошибку. Это всё.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Invalid pointer operation. | KoBRaAndrey | Общие вопросы Delphi | 6 | 02.06.2010 17:32 |
Invalid Pointer Operation | csander | Общие вопросы Delphi | 0 | 21.10.2009 17:44 |
Invalid Pointer Operation | Unconnected | Общие вопросы Delphi | 3 | 21.02.2009 20:23 |
Invalid pointer operation | Димарик | Общие вопросы Delphi | 2 | 05.11.2007 09:53 |
Delphi + dll= Invalid Pointer Operator | LEKA | Общие вопросы Delphi | 4 | 01.05.2007 23:38 |