Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

загрузка dll-ки [D6, Win95/98]


Страницы:   1 2

_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..."  ?

У меня не приводит. И вряд ли сможет привести у кого-то другого. Смотри на окружающий код.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо