Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];

Вниз

Ошибка при модальном вызове формы из DLL. Я в отчаянии!   Найти похожие ветки 

 
Knapweed ©   (2004-06-16 01:24) [0]

Уважаемые мастера! Прошу помощи!!! Я в глубоком отчаянии.. Код:

(в основной программе)
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 в библиотеку(нужно было передавать строку). Тут-то всё и посыпалось :( Потом я всё вернул на место, НО ОШИБКА ОСТАЛАСЬ! ПОЧЕМУ???


 
Knapweed ©   (2004-06-16 01:30) [1]

Забыл сказать, что ошибка выглядит примерно так: не могу сделать модальным уже видимое окно...
Примечание: свойство FormExport.VISIBLE=FALSE.


 
GuAV ©   (2004-06-16 01:34) [2]


> TFormExport.Create(Application);

TFormExport.Create(nil); ?


 
Knapweed ©   (2004-06-16 01:36) [3]

2GuAV
То-же самое :(


 
GuAV ©   (2004-06-16 01:41) [4]

А если переименовать форму в библиотеке?


 
Knapweed ©   (2004-06-16 01:42) [5]

Эта мысль тоже приходила мне в голову... Пробовал переименовать в MyFormExport - та же самая фигня :(


 
GuAV ©   (2004-06-16 01:51) [6]


>  Потом я всё вернул на место, НО ОШИБКА ОСТАЛАСЬ! ПОЧЕМУ???

по меньшей мере странно. такого не бывает. убрал sharemem и в проге и в либе? build сделал?


 
Knapweed ©   (2004-06-16 01:56) [7]

2GuAV
В том то и чертовщина... Даже сделал поиск ShareMem по всем файлам проекта - нигде нету.


 
GuAV ©   (2004-06-16 02:01) [8]

А оно точно работает если форму в приложение вставить, а не в библиотеку?

Не тот ли это случай, что (Program) Application <> (library) Application?


 
zuk   (2004-06-16 02:03) [9]

У меня подобная проблема, правда не в DLL а в BPL
В проекте вдруг ни с того ни с сего перестали поджигаться модально окна, выводится такая же ошибка (не могу сделать модальным уже видимое окно).
Временно победил тем что перед ShowModal пишу Visible := False, помогает, но не приятное мигание окна. Но это уже из разряда шаманство, хотелось бы знать что это :-(
ЗЫ: у меня D7.


 
GuAV ©   (2004-06-16 02:05) [10]

да, в либе Application.ShowMainForm:=False помогает?


 
Knapweed ©   (2004-06-16 02:06) [11]

В приложение всё перетаскивать я не пробовал. Разрабатывал сразу в DLL. Но даже если заработает, то каким образом мне это поможет? Необходимо сделать всё в библиотеке.


 
Knapweed ©   (2004-06-16 02:10) [12]

2zuk
> Visible := False
Я и так тоже пробовал... Мне не помогло :(


 
GuAV ©   (2004-06-16 02:11) [13]

[10] - ?


 
zuk   (2004-06-16 02:13) [14]

[9] - ?


 
Knapweed ©   (2004-06-16 02:14) [15]

2GuAV
>[10] - ?
[9] - не то же самое?


 
zuk   (2004-06-16 02:14) [16]

Думаем, а если в дизайнере поставить сразу Visible - False?


 
GuAV ©   (2004-06-16 02:15) [17]


> [9] - ?

Ну да, на [9] может быть поможет [10]


 
Knapweed ©   (2004-06-16 02:17) [18]

2zuk
>в дизайнере поставить сразу Visible - False?
Дык это у меня с самого начала так и стояло. Периодически проверяю - так и стоит.


 
GuAV ©   (2004-06-16 02:20) [19]


> [9] - не то же самое?

нет. создай новый пустой проэкт и посмотри visible у главной формы. да? а ведь она видна.


 
Knapweed ©   (2004-06-16 02:29) [20]

2GuAV
>[19]
Думаю, я тебя понял.
У меня в библиотеке только одна форма - FormExport, и она и есть главная.


 
GuAV ©   (2004-06-16 02:35) [21]

если она главная, то она в списке auto-create, а это имхо не нужно


 
Knapweed ©   (2004-06-16 02:46) [22]

2GuAV
Она главная настолько, насколько может быть главной форма в DLL-ке. Но даже если она стоит в auto-create, раньше же всё работало(перед вознёй с ShareMem)? Какая тут связь с ShareMem?


 
Knapweed ©   (2004-06-16 04:17) [23]

Может ещё кто-нибудь мысли хорошие подкинет, а?
Я ещё буду заглядывать сюда...
Последняя надежда - этот форум... :(


 
_alex_   (2004-06-17 14:31) [24]

> Knapweed
Чем закончилась твоя история с отображением формы?

Дело в том, что я сейчас начинаю переносить некоторые формы из своего приложения в dll.
Единственное отличие - я делаю статический вызов dll.
А прочитав эту ветку даже не знаю - может не стоит этим заниматься, что бы когда-нибудь не наткнуться на тоже самое.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.041 c
1-1087739472
Islander
2004-06-20 17:51
2004.07.04
Как проверить, раскрыто ли PopupMenu или нет?


1-1087734403
Johnny Raw
2004-06-20 16:26
2004.07.04
Можно ли в StringGrid е каждой ячейки ...


6-1083986699
magician
2004-05-08 07:24
2004.07.04
Как удаленно перезагрузить компьютер


3-1086330720
avgur
2004-06-04 10:32
2004.07.04
Помогите составить запрос.(я уже туплю)...


6-1083773934
yakuza
2004-05-05 20:18
2004.07.04
Как обмениваться IP-пакетами на сетевом уровне, без TCP/IP и UDP?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский