type
TDataType = record
I: Integer;
S: string[255];
end;
server:
function GetData: OleVariant;
var
P: Pointer;
begin
VarClear(Result);//不知D5有没。
try
Result := VarArrayCreate([0, SizeOf(TDataType)], varByte);
P := VarArrayLock(Result);
//Data: TDataType为你要传的记录类型
Move(Data, P^, SizeOf(TDataType));
finally
VarArrayUnLock(Result);
end;
end;
client;
procedure GetFile(const FileName: string);
var
P: Pointer;
V: OleVariant;
Data: TDataType;
begin
FillChar(Data, SizeOf(Data), 0);
V := SocketConnection1.AppServer.GetData;
try
P := VarArrayLock(V);
Move(P^, Data, SizeOf(Data));
finally
VarArrayUnLock(V);
end;
end;
注意一点,在这里传的记录类型中,如果是不能确定内容长度的,请为它分配一定的空间。
如string,请用string[len], array 的为:array [0..len] of 类型