Помогите пожалиста!!!!
При обратном вызове из DLL (в нем модальный диалог) пользовательской функции из программы возникает ошибка "Access Violetion at 0x0...."
При рассмотрении видно, что ошибка возникает возможно по какому-то таймеру,
потому что часто указывает на Idle.
Мысли наводят на передачу Application.Handle в DLL, но ситуация не меняется
Второе предположение, что нельзя так использовать тип String при передаче из DLL
Короче — я в нокауте.
Код в программе
--------------------------------------------------
type
TDLLFunc=function(HApp:THandle; AUserFunction:pointer):TModalResult; stdcall;
TMyForm = class(TForm)
.......
procedure FormCreate(Sender: TObject);
.......
end;
var
MyForm: TMyForm;
implementation
const
cDLLName = 'testdll.dll';
Function UserFunction(InputVal, FuncName:String):String; stdcall;
begin
Result:='Тыры-пыры'+InputVal+FuncName;
end;
procedure TMyForm.FormCreate(Sender: TObject);
var
H: THandle;
F : TDLLFunc;
begin
......
H := LoadLibrary(cDLLName);
F := GetProcAddress(H, 'ShowFormInDll');
dmWizard := Self;
F(Application.Handle, @UserFunction);
FreeLibrary(H);
end;
===================================================
Код в DLLe, создающий диалог TMyWizardForm
---------------Main-----------------------------------
function ShowFormInDll(HApp:THandle; AUserFunction:pointer): TModalResult; stdcall;
begin
MyWizardForm := TMyWizardForm.Create(nil);
try
@UserFunction := AUserFunction;
try
Result := MyWizardForm.ShowModal;
except
Result := mrCancel;
end;
finally
MyWizardForm.Free;
end;
end;
---------------WizardForm unit-----------------------------------
type
TUserFunction = function (InputVal, FuncName:String):String; stdcall;
TMyWizardForm = class(TForm)
procedure FormShow(Sender: TObject);
end;
var
MyWizardForm: TMyWizardForm;
UserFunction: TUserFunction;
implementation
procedure TMyWizardForm.FormShow(Sender: TObject);
var St1:String
begin
St1:=UserFunction('Написано что-то', 'и еще что-то');
end;
========================================================
Заранее благодарен, Bistro
26.01.05 11:46: Перенесено модератором из 'Управление проектами' — Merle
Здравствуйте, Bistro, Вы писали:
B> При обратном вызове из DLL (в нем модальный диалог) пользовательской функции из программы возникает ошибка "Access Violetion at 0x0...."
http://softwarer.ru/packages.html
Здравствуйте, Bistro, Вы писали:
B>Помогите пожалиста!!!!
B> При обратном вызове из DLL (в нем модальный диалог) пользовательской функции из программы возникает ошибка "Access Violetion at 0x0...."
Да у тебя и Delphi с
ашипками
Здравствуйте, Dimonka, Вы писали:
D>Здравствуйте, Bistro, Вы писали:
B>>Помогите пожалиста!!!!
B>> При обратном вызове из DLL (в нем модальный диалог) пользовательской функции из программы возникает ошибка "Access Violetion at 0x0...."
D>Да у тебя и Delphi с ашипками
Хорошо хоть, что не голубой, а просто фиолетовый

... << RSDN@Home 1.1.4 beta 4 rev. 303>>