Текущий архив: 2003.11.13;
Скачать: CL | DM;
ВнизСтруктура как возвращаемое функцией значение Найти похожие ветки
← →
qwerty2 (2003-11-03 22:53) [0]Есть следующая структкра:
type
My_Record = record
Name1 : string;
Name2 : string;
Name3 : string;
end;
В одной dll описывается функция возвращающая эту структуру:
function GetMyRec:MyRecord; export; safecall;
var rr:MyRecord
begin
//заполнение всех полей например rr.Name1:="dfsdfsdfsd";
GetMyRec:=rr;
end;
из другой программы вызываю эту функцию
...
type
proc=Function:My_Record;
...
var
hd:THandle;
p:proc;
RValue2:My_Record;
...
hd:=LoadLibrary("MyDll.dll");
@p:=GetProcAddress(hd,"GetMyRec");
RValue2:=p;
после выполнения этих действий структура RValue2 остается незаполенной! в чем ошибка?
← →
Dimaxx (2003-11-04 00:40) [1]Поставь так...
PMy_Record = ^My_Record;
My_Record = record
Name1: string;
Name2: string;
Name3: string;
end;
...и передавай в длл не запись, а указатель на запись. Тада передаваться будет тип pointer, а это удобнее. В длл присваивание выполняй что-то типа этого
var X: PMy_Record;
...
X^.Name1:="111";
X^.Name2:="222";
X^.Name3:="333";
И вообще используй не string, а shortstring. И все будет хоккей.
← →
Bart (2003-11-04 19:41) [2]поставь uses ShareMem dв проекте и в в dll
Страницы: 1 вся ветка
Текущий архив: 2003.11.13;
Скачать: CL | DM;
Память: 0.44 MB
Время: 0.033 c