![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Передача пользовательского типа из функции в DLL [D7, WinXP]
JetuS © (2006-11-21 13:50:00)Здравствуйте!
У меня такая беда: есть dll в которой есть функция, возвращающая данные пользовательского типа.
type
TDLLVersionInfo = record
HiVersion: Byte;
LoVersion: Byte;
Comments: String;
end;
function ReadDLLVersionInfo: TDLLVersionInfo; stdcall;
var
DLLVI: TDLLVersionInfo;
begin
DLLVI.HiVersion := 1;
DLLVI.LoVersion := 200;
DLLVI.Comments := 'It''s a test comments string';
Result := DLLVI;
end;
Вопрос: как мне теперь получить эти данные из этой DLL?
Орион (2006-11-21 14:16:00) [1]> [5] Игорь Шевченко © (21.11.06 14:06)
этож коммент, зачем его читать? :)
Сергей М. (2006-11-21 14:06:00) [2]
> Почему?
Потому что Sharemem не задействован.
Игорь Шевченко (2006-11-21 14:06:00) [3]Уж сколько раз твердили миру - читайте то, что написано в файле с проектом dll
JetuS (2006-11-21 14:05:00) [4]Забыл дописать:
var
ReadDLLVersionInfo: TReadDLLVersionInfo;
JetuS (2006-11-21 14:03:00) [5]
> var
> MyResult: TDLLVersionInfo;
>
> ..
> MyResult := ReadDLLVersionInfo;
Н-да. Сильно.
Я пробую в программе так:
type
TReadDLLVersionInfo = function: TDLLVersionInfo; stdcall;
...
function GetDLLInfo: TDLLVersionInfo;
begin
DllHandle := LoadLibrary(PAnsiChar(DLLFileName));
if DllHandle < 32 then
...
@ReadDLLVersionInfo := GetProcAddress(DllHandle, 'ReadDLLVersionInfo');
if @ReadDLLVersionInfo <> nil then
Result := ReadDLLVersionInfo
else ...;
FreeLibrary(DllHandle);
end;
На FreeLibrary(DllHandle) вылетает AV.
Почему?
Сергей М. (2006-11-21 13:54:00) [6]var
MyResult: TDLLVersionInfo;
..
MyResult := ReadDLLVersionInfo;