Текущий архив: 2006.12.31;
Скачать: CL | DM;
ВнизКак передать array of record Найти похожие ветки
← →
SupKlo (2005-09-23 10:13) [0]Как передать array of record с сервера на клиента
← →
isasa © (2005-09-23 10:36) [1]На клиенте имеем
type
...
rComponent = record
id : integer;
Xi : double;
dXi : double;
end;
TrComponent = array of rComponent;
...
var
...
Comp : TrComponent;
...
function DynArrayToVar(var buf; dataLen: cardinal): variant;
var p : pointer;
begin
Result:=VarArrayCreate([0, dataLen], varByte);
p:=VarArrayLock(Result);
move(buf, p^, dataLen);
VarArrayUnlock(Result);
end;
вызов на клиенте
propInterf.Components:=DynArrayToVar(Comp, (high(Comp)-low(Comp)+1)*sizeof(rComponent));
Сервер
TautoFLClass = class(TAutoObject)
...
protected
Fks : array of integer;
FXi : array of double;
FdXi : array of double;
...
procedure Set_Components(value : OleVariant); safecall;
...
end;
procedure TautoFLClass.Set_Components(value: OleVariant);
var pArr : ParComponent;
dataLen : Cardinal;
i : integer;
begin
dataLen:=VarArrayHighBound(Value, VarArrayDimCount(Value));
i:=dataLen div SizeOf(rComponent);
SetLength(Fks, i);
SetLength(FXi, i);
SetLength(FdXi, i);
pArr:=VarArrayLock(Value);
for i:=low(Fks) to high(Fks) do begin
Fks[i]:=pArr^[i].id;
FXi[i]:=pArr^[i].Xi*0.01;
FdXi[i]:=pArr^[i].dXi;
end;
VarArrayUnLock(Value);
end;
← →
isasa © (2005-09-23 10:40) [2]FXi[i]:=pArr^[i].Xi*0.01; => FXi[i]:=pArr^[i].Xi;
← →
urdolphin (2005-09-25 20:46) [3]Живите проще, господа! Зачем что-то рассчитывать? Ситаем Delphi X - Руководство разработчика (Стив Тейксера, Ксавье Пачеко). Там все подробненько описано (только не про DCOM :((( )
Страницы: 1 вся ветка
Текущий архив: 2006.12.31;
Скачать: CL | DM;
Память: 0.44 MB
Время: 0.055 c