![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
загрузка dll-ки [D6, Win95/98]
_Guest_ © (2006-09-29 18:01:00)Гружу dll-ку: LoadLibrary(dll); все нормально. Хочу упростить код и вынести поиск файла библиотеки, а затем и загрузку в отдельную процедуру (или функцию - без разницы). И тут начинаются чудеса: ошибка обращения в никуда. Если поставить в отладчике точку останова и выполнять пошагово - снова все нормально. Снова выношу этот кусок кода в TForm.Create - опять все работает. Кто знает, объясните в чем дело.
PS пора перебираться в форум для начинающих, ничего уже не понимаю.
_Guest_ (2006-10-03 09:10:00) [1]
> Ketmar © (02.10.06 13:29) [28]
> бывает. но то, что оно заработало, ещё не значит, что бага
> не было. %-)
Конечно, поэтому и лопачу близлежащий код. Весь в ближайшее время не получится, там под сотню тысяч строк :(
> TStas © (02.10.06 17:11) [29]
> Вообще-то THandle Cardinal'ом всю жисть был, как Ришелье,
> например. Ну, или LongWord
Ага, см. [8] и [11]
jack128 (2006-10-02 23:25:00) [2]Rat Rat (29.09.06 19:41) [26]
что-то вроде ExtractFilePath(Application.ExeName) + 'моя.длл'
А то реально глаза косят от LoadLibrary('odbfinfo.dll');
а чем плох LoadLibrary('моя.dll') , если не секрет ??
Leonid Troyanovsky (2006-10-02 18:48:00) [3]
> Rat Rat (29.09.06 19:41) [26]
Одно замечание. Анонимные советы никчемны.
Или ничтожны (выбрать по вкусу).
--
Regards, LVT.
TStas (2006-10-02 17:11:00) [4]Вообще-то THandle Cardinal'ом всю жисть был, как Ришелье, например. Ну, или LongWord
Ketmar (2006-10-02 13:29:00) [5]>[27] _Guest_ 2-Oct-2006, 09:57
бывает. но то, что оно заработало, ещё не значит, что бага не было. %-)
_Guest_ (2006-10-02 09:57:00) [6]Мужики (и дамы если были), огромное всем спасибо! Много дельных замечаний, особенно по PChar. Обязательно учту. Особенно порадовало и обнадежило:
> Rat Rat (29.09.06 19:41) [26]
> Не поленимся, пособим.
Извиняюсь, конечно, но ситуация такова: прихожу в понедельник на работу, гружу проект, даже не перекомпилируя, запускаю - все работает. Повторяю на всякий случай, компилирую, опять же - снова все работает. С чем был связан глюк непонятно. Может даже и не с Делфями. Я никогда бы не полез с такой фигней сюда, но глюк устойчиво держался с середины среды. Обязательно перелопачу близлежащий код на предмет всяких несуразностей типа как с PChar.
Еще раз ВСЕМ спасибо.
Rat Rat (2006-09-29 19:41:00) [7]Пара замечаний.
Неполенься сделать:
что-то вроде ExtractFilePath(Application.ExeName) + 'моя.длл'
А то реально глаза косят от LoadLibrary('odbfinfo.dll');
По поводу использования PChar у тебя, парень ОХЕННЫЕ проблемы.
Я тебе обещаю еще и не те чудеса. На самом деле в дельфях есть очень простая щтючка PChar(my_string) - если она не пустая, то сработает. Об этом клоуны С. Тейксейра и К. Пачеко цельную главу написали. К вопросу о том, что не нужно мутить свой PChar.
Да. Мужики тоже дали очень дельную мысль по-поводу кода Длл-ки. Там тоже можно начудить.
Так что уж запости коды и длл (строк 10) и Form1.pas (без описания класса формы, плиз - только раздел implementation). Не поленимся, пособим. » Palladin: » Так. Маленькая просьба: речь желательно через фильтр и конвертор в удобоваримую форму. Истину глаголешь, но некультурно.
_Guest_ (2006-09-29 19:23:00) [8]
> Джо © (29.09.06 19:22) [23]
>
> А если любую другую библиотеку попробовать грузить?
Попробую, но теперь уже в понедельник. Спасибо. Пока.
Palladin (2006-09-29 19:22:00) [9]odbfinfo.dll чья? тобой написана? в инициализации dll ничего нет криминального?
ps. веди текстовый трейсер...
Джо (2006-09-29 19:22:00) [10]А если любую другую библиотеку попробовать грузить?
_Guest_ (2006-09-29 19:19:00) [11]
> Palladin © (29.09.06 19:16) [21]
>
> хм... сомневаюсь конечно, но может у тебя функция есть одноименная.
> ..
C LoadLibrary ? Нет нету.
Palladin (2006-09-29 19:16:00) [12]хм... сомневаюсь конечно, но может у тебя функция есть одноименная...
_Guest_ (2006-09-29 19:15:00) [13]
> Джо © (29.09.06 19:12) [19]
>
> > [18] Джо © (29.09.06 19:11)
> > Неужели сложно пройтись отладчиком пошагово и установить
>
> > точно, в какой именно строке вылезает AV?
>
> Не прочитал предыдущий пост. Тогда скажу так: на какой именно
> строке возникает исключение?
В отладчике в пошаговом режиме исключения не возникает. Но методом муторных (F8... затем F9) проб установлено: на Handle := LoadLibrary('odbfinfo.dll');
Джо (2006-09-29 19:12:00) [14]> [18] Джо © (29.09.06 19:11)
> Неужели сложно пройтись отладчиком пошагово и установить
> точно, в какой именно строке вылезает AV?
Не прочитал предыдущий пост. Тогда скажу так: на какой именно строке возникает исключение?
Джо (2006-09-29 19:11:00) [15]Неужели сложно пройтись отладчиком пошагово и установить точно, в какой именно строке вылезает AV?
_Guest_ (2006-09-29 19:06:00) [16]
> @!!ex © (29.09.06 19:00) [15]
>
> По теме:
> Код нормальный и ничего там не может ломатся....... в обычных
> условиях.
> Где то в другом месте ошибка.
> Например в самой дллке.
Спасибо. Почему же когда отладчиком останавливаю, то все отрабатывает. Иесли гружу dll-ку из другой программы - тоже. Вряд ли дело в библиотеке.:(
_Guest_ (2006-09-29 19:01:00) [17]
> Джо © (29.09.06 18:55) [13]
>
> > [9] _Guest_ (29.09.06 18:48)
> > Выполнение приводит к "Access violation at adress..."
> ?
>
> У меня не приводит. И вряд ли сможет привести у кого-то
> другого. Смотри на окружающий код.
Втом то и дело, что если я весь этот код пшу в TFormMain.Create то и у меня не приводит. А если в отдельную процедуру, и уже вызов ее из TFormMain.Create, тогда приводит. Все, вечер-пятница уже и глаза и мозги замылены. Не понимаю что происходит.
@!!ex (2006-09-29 19:00:00) [18]Ну если пустится в демагогию, то ЛоадЛибрарий вообще не с хэндлом работает, а с инстансом. :)
И в дельфе тип требуется HMODULE....
Ну это так, оффтоп..
По теме:
Код нормальный и ничего там не может ломатся....... в обычных условиях.
Где то в другом месте ошибка.
Например в самой дллке.
Джо (2006-09-29 18:56:00) [19]> Конечно. Но тем не менее?
Просто уточняю. Лично я всегда использую именно THandle.
Джо (2006-09-29 18:55:00) [20]> [9] _Guest_ (29.09.06 18:48)
> Выполнение приводит к "Access violation at adress..." ?
У меня не приводит. И вряд ли сможет привести у кого-то другого. Смотри на окружающий код.