Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.01;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.01 c
3-858
VictorT
2002-06-06 11:02
2002.07.01
Первичный ключ.


1-1043
Arkan
2002-06-17 18:25
2002.07.01
график


1-1072
Sniffer
2002-06-17 11:53
2002.07.01
BitBtn


14-1135
Внук
2002-05-28 10:33
2002.07.01
Функция wvsprintf


3-931
alextov
2002-06-06 11:29
2002.07.01
Проблема использования view в TOraTable (ODAC)