![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка при модальном вызове формы из DLL. Я в отчаянии! [D6, Win95/98, Win2k]
Knapweed © (2004-06-16 01:24:00)Уважаемые мастера! Прошу помощи!!! Я в глубоком отчаянии.. Код:
(в основной программе)
procedure TMainForm.LabExportClick(Sender: TObject);
begin
ExportDLLHandle := LoadLibrary('KExport');
if ExportDLLHandle = 0 then begin
MessageDlg('Ошибка загрузки библиотеки KExport.dll.', mtError, [mbOk], 0);
exit;
end;
try
@DLLShowExport := GetProcAddress(ExportDLLHandle, PCHar('ShowExport'));
DLLShowExport(Config.CurrentArea);
finally
if FreeLibrary(ExportDLLHandle)=False then
MessageDlg('Ошибка выгрузки библиотеки.',mtError, [mbOk], 0);
end;
end;
(в KExport.DLL)
function ShowExport(CurArea : byte) : TModalResult;
begin
BCurArea := CurArea;
try
FormExport := TFormExport.Create(Application);
try
result := FormExport.ShowModal;
except
ShowMessage('Здесь как раз и выходит эта Ё..я ошибка!!!');
result := mrAbort;
end;
finally
FormExport.Free;
end;
end;
Причём всё работало, пока мне не приспичило включить модуль ShareMem в библиотеку(нужно было передавать строку). Тут-то всё и посыпалось :( Потом я всё вернул на место, НО ОШИБКА ОСТАЛАСЬ! ПОЧЕМУ???
_alex_ (2004-06-17 14:31:00) [1]> Knapweed
Чем закончилась твоя история с отображением формы?
Дело в том, что я сейчас начинаю переносить некоторые формы из своего приложения в dll.
Единственное отличие - я делаю статический вызов dll.
А прочитав эту ветку даже не знаю - может не стоит этим заниматься, что бы когда-нибудь не наткнуться на тоже самое.
Knapweed (2004-06-16 04:17:00) [2]Может ещё кто-нибудь мысли хорошие подкинет, а?
Я ещё буду заглядывать сюда...
Последняя надежда - этот форум... :(
Knapweed (2004-06-16 02:46:00) [3]2GuAV
Она главная настолько, насколько может быть главной форма в DLL-ке. Но даже если она стоит в auto-create, раньше же всё работало(перед вознёй с ShareMem)? Какая тут связь с ShareMem?
GuAV (2004-06-16 02:35:00) [4]если она главная, то она в списке auto-create, а это имхо не нужно
Knapweed (2004-06-16 02:29:00) [5]2GuAV
>[19]
Думаю, я тебя понял.
У меня в библиотеке только одна форма - FormExport, и она и есть главная.
GuAV (2004-06-16 02:20:00) [6]
> [9] - не то же самое?
нет. создай новый пустой проэкт и посмотри visible у главной формы. да? а ведь она видна.
Knapweed (2004-06-16 02:17:00) [7]2zuk
>в дизайнере поставить сразу Visible - False?
Дык это у меня с самого начала так и стояло. Периодически проверяю - так и стоит.
GuAV (2004-06-16 02:15:00) [8]
> [9] - ?
Ну да, на [9] может быть поможет [10]
zuk (2004-06-16 02:14:00) [9]Думаем, а если в дизайнере поставить сразу Visible - False?
Knapweed (2004-06-16 02:14:00) [10]2GuAV
>[10] - ?
[9] - не то же самое?
zuk (2004-06-16 02:13:00) [11][9] - ?
GuAV (2004-06-16 02:11:00) [12][10] - ?
Knapweed (2004-06-16 02:10:00) [13]2zuk
> Visible := False
Я и так тоже пробовал... Мне не помогло :(
Knapweed (2004-06-16 02:06:00) [14]В приложение всё перетаскивать я не пробовал. Разрабатывал сразу в DLL. Но даже если заработает, то каким образом мне это поможет? Необходимо сделать всё в библиотеке.
GuAV (2004-06-16 02:05:00) [15]да, в либе Application.ShowMainForm:=False помогает?
zuk (2004-06-16 02:03:00) [16]У меня подобная проблема, правда не в DLL а в BPL
В проекте вдруг ни с того ни с сего перестали поджигаться модально окна, выводится такая же ошибка ( не могу сделать модальным уже видимое окно).
Временно победил тем что передShowModalпишуVisible := False, помогает, но не приятное мигание окна. Но это уже из разряда шаманство, хотелось бы знать что это :-(
ЗЫ: у меня D7.
GuAV (2004-06-16 02:01:00) [17]А оно точно работает если форму в приложение вставить, а не в библиотеку?
Не тот ли это случай, что (Program) Application <> (library) Application?
Knapweed (2004-06-16 01:56:00) [18]2GuAV
В том то и чертовщина... Даже сделал поиск ShareMem по всем файлам проекта - нигде нету.
GuAV (2004-06-16 01:51:00) [19]
> Потом я всё вернул на место, НО ОШИБКА ОСТАЛАСЬ! ПОЧЕМУ???
по меньшей мере странно. такого не бывает. убрал sharemem и в проге и в либе? build сделал?
Knapweed (2004-06-16 01:42:00) [20]Эта мысль тоже приходила мне в голову... Пробовал переименовать в MyFormExport - та же самая фигня :(