Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.024 c
1-41711
MaG
2003-11-03 19:16
2003.11.13
HTML


9-40773
STANT
2003-04-30 14:35
2003.11.13
Поворот спрайтов


14-41915
icebeerg
2003-10-21 13:30
2003.11.13
О списании


1-41194
KSergey
2003-11-02 10:48
2003.11.13
String-поле в Record и Dispose.


6-41860
саф
2003-09-09 09:09
2003.11.13
строку через сокет на определенный комп




   Наверх