ПОМОГИТЕ РАЗОБРАТЬСЯ!!!
DLL на delphi:
....
TImpulsResults = packed record
data:array [0..7] of real;
Number:array [0..255] of char;
end;
....
//функция в dll
Function ReturnImpuls(var ImpResult:TImpulsResults): Integer;export;stdcall;
var
str:pchar;
Len,i: Integer;
begin
Len:=0;
Len := StrLen(PChar(Form1.stNumber));
GetMem(str,Len+2);
str^ := Chr(0);
// Form1.stNumber:string;
StrLCat(str, PChar(Form1.stNumber), Len);
for i := 0 to Len do
begin
ImpResult.Number[i]:=str[i];
end;
//ShowMessage показывает что ImpResult.Number не пуст :o
ShowMessage(ImpResult.Number);
ImpResult.data[0]:=Form1.stMin1;//real
ImpResult.data[1]:=Form1.stMax1;
ImpResult.data[2]:=Form1.stMin2;
ImpResult.data[3]:=Form1.stMax2;
ImpResult.data[4]:=Form1.stMin3;
ImpResult.data[5]:=Form1.stMax3;
ImpResult.data[6]:=Form1.stMin4;
ImpResult.data[7]:=Form1.stMax4;
Result:=1;
end;
EXE на visual:
.....
typedef struct tagTImpulsResults
{
float Impuls[8];
char NomeroNabor[256];
}TImpulsResults;
.....
typedef int (WINAPI *PFN_ReturnImpuls)(TImpulsResults&);
.....
//вызов функции dll из exe
PFN_ReturnImpuls pfnReturnImpuls;
pfnReturnImpuls=(PFN_ReturnImpuls)GetProcAddress(hCBRDll,"ReturnImpuls");
int iCode=(*pfnReturnImpuls)(ImpulsResult);
//здесь оказывается что ImpulsResult.NomeroNabor и Impuls[8] нули хотя должно быть ???