Форум: "Основная";
Текущий архив: 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