Форум: "Начинающим";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];
Внизpointers and dll Найти похожие ветки
← →
deplhi (2006-08-21 15:05) [0]
tagInArg = record
Reserved, in_struct: Pointer;
end;
tag_struct_out3 = record
info1: array [0..11] of char;
info2: array [0..11] of char;
end;
tagOutArg2 = record
ErrorCode, Flags: LongWord;
Reserved: Pointer;
out_struct: ^tag_struct_out3;
end;
..............................
procedure Tbb_.myfunc;
var inArg: tagInArg;
p, p2:^tag_struct_out3;
outArg2:tagOutArg2;
out3:tag_struct_out3;
begin
inArg.Reserved := nil;
inArg.in_struct := nil;
outArg2.Flags := 0;
outArg2.out_struct := @p;
outArg2.Reserved := nil;
outArg2.ErrorCode := 0;
_call_dll_function(12, @inArg, @outArg2);
p2:= @outArg2.out_struct;
out3.info1 := p2.info1;
out3.info2 := p2.info2;
//Res:=outArg2.ErrorCode;
//r2:=p.TrxTime;
end;
Проблема в следующем: я при помощи функции _call_dll_function обращаюсь к библиотеке написанной на сях. у нее три параметра. нас интересует только третий - по нему передается указатель на структуру в которую вызываемая библиотека запишет выходные данные. ну так вот - в структуре out3 в итоге получается всякая хрень, чего быть не должно. Наверняка я в работе с указателями делаю ошибки. Нет времени разбираться самому, так что помогите советом кто знает
← →
MBo © (2006-08-21 15:34) [1]>Наверняка я в работе с указателями делаю ошибки
Похоже на то...
Приведи объявление С-шной функции и как она у тебя описана
← →
deplhi (2006-08-21 16:04) [2]
> Приведи объявление С-шной функции и как она у тебя описанаextern “C” DWORD call_dll_function(
DWORD func,
void *in_arg,
void *out_arg);
void *in_arg
Указатель на структуру, содержащую параметры, передаваемые функции. Структура опи-сана следующим образом.typedef struct tagInArg{
void *Reserved;
void *in_struct;
} InArg;
void *out_arg
Указатель на структуру, в которой возвращается результат. Структура описана следую-щим образом.typedef struct tagOutArg{
DWORD ErrorCode;
DWORD Flags;
void *Reserved;
void *out_struct;
} OutArg;
в данном случае *out_struct - указывает на структуру tag_struct_out3
а у мну в коде описана она так:function _call_dll_function(func: LongWord; in_arg, out_arg: pointer):LongWord; cdecl;
external "mydll.dll";
← →
clickmaker © (2006-08-21 16:14) [3]не вижу, где выделяется память под out_struct?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.047 c