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

Вниз

form in dll   Найти похожие ветки 

 
SeF   (2002-06-18 16:03) [0]

Здраствуйте!
проблема:
после загрузки dll из этой процедуры при переключении фокуса/завершении программы вылетает ошибка www.seff.pisem.net/images/error.jpg (40k)


procedure TForm1.button1Click(Sender: TObject);
var
res:pchar;
hnd:integer;
showedit:function:pchar;
begin
hnd:=loadlibrary("editdll.dll");
if hnd<=32 then begin messagebox(self.Handle,pchar("Не удалось загрузить редактор!"+#13+#13+"Обратитесь к разработчику за обновлением/консультацией"),pchar(self.Caption),0); exit; end;
showedit:=nil;
try
@showedit:=GetProcAddress(hnd,pchar("showedit"));
if @showedit=nil
then
messagebox(self.Handle,pchar("Не удалось загрузить редактор!"),pchar(self.Caption),0)
else
res:=showedit;
finally
freelibrary(hnd);
end;
end;


кусок из dll:


function showedit:pchar; stdcall;
var
res:integer;
begin
try
form2:=tform2.Create(nil);
// form2.Load(string(Fname));
res:=form2.ShowModal;
except
application.messagebox({pchar}"Не удалось открыть файл!",nil);
result:=pchar(inttostr(mrAbort));
// form2.Release;
end;
result:= pchar(inttostr(res));
// form2.Release;
end;

заранее спасибо!


 
Skier   (2002-06-18 16:09) [1]

Пробуй это
...........
type
TShowEdit= function : PChar; stdcall;
var
res:pchar;
hnd:integer;
showedit:TShowEdit;
...........

И про stdcall не забывай.


 
Игорь Шевченко   (2002-06-18 16:19) [2]

stdcall абсолютно не имеет значения.

PChar в данном случе возвращать не надо, так как он ссылается в никуда


 
Skier   (2002-06-18 16:22) [3]

> Игорь Шевченко
Да ?!
Ты считаешь что объявление
showedit:function:pchar; - правильное ?


 
sef   (2002-06-18 16:26) [4]

не помогло, проблема таже..... таже ошибка в техже местах......


 
Игорь Шевченко   (2002-06-18 16:27) [5]

Skier © (18.06.02 16:22)

А что в нем неправильного ?


 
Игорь Шевченко   (2002-06-18 16:30) [6]

ShowEdit : function : Integer;


 
Skier   (2002-06-18 16:30) [7]

> Игорь Шевченко
Мне кажется, что функция-то берётся из DLL
значит нужно указывать как передаются параметры.
Или нет ?


 
sef   (2002-06-18 16:32) [8]

убирал stdcall, также pchar, function сделал procedure тоже самое... ничего не пойму.......


 
Игорь Шевченко   (2002-06-18 16:42) [9]

Skier © (18.06.02 16:30)

А какая разница, откуда она берется ? Главное, чтобы совпадали calling conventions.

Автору:
Или я не вижу грубой ошибки в тексте или приведено мало текста и ошибка возникает по другой причине.


 
sef   (2002-06-18 17:04) [10]

Игорь Шевченко ©
это весь кодкоторый работает с библиотекой(1-я процедура). если она не вызывается то при выходе/смене фокуса ни каких ошибок......


 
Игорь Шевченко   (2002-06-18 17:30) [11]

Тогда отладчик в руки.


 
oomneeq   (2002-06-18 20:12) [12]

A про то что Application"ы и соответственно обработчики Exception"ов в приложении и dll разные слыхал?


Вот здесь например у тебя application чей будет?

>except
> application.messagebox({pchar}"Не удалось открыть >файл!",nil);


>после загрузки dll из этой процедуры при переключении фокуса/завершении программы вылетает ошибка

Хм, так когда конкретно?
Что за фокус? Чей? куда переключается?
Форма то хоть успевает показаться?

Вот тут был?
http://src.fitkursk.ru/articles/art0000038.asp


 
SeF   (2002-06-18 23:51) [13]

oomneeq
фокус- в смысле активизирую другую программу.......
нет не слыхал, я первый раз форму в dll запихиваю.....


 
SeF   (2002-06-19 00:34) [14]

oomneeq BIG 10ks понял, разобрался...



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

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

Наверх





Память: 0.47 MB
Время: 0.007 c
1-1029
Looser
2002-06-17 23:39
2002.07.01
Как можно реализовать задержку в выполнении программы?


3-887
maxim2
2002-06-06 21:58
2002.07.01
Как закрыть MDIchild форму


1-1088
volph
2002-06-19 12:15
2002.07.01
как в ReachEdit разукрасить строки, сделать жирным?


3-883
perov
2002-06-06 09:36
2002.07.01
параметры соединения


1-955
аак
2002-06-19 14:07
2002.07.01
Как скопиравть папку со всем содержимым?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский