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

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



Память: 0.45 MB
Время: 0.032 c
2-1165686682
ezorcist
2006-12-09 20:51
2006.12.31
Уничтожить TClientSocket после disconnect-а.


2-1165911751
Aks13
2006-12-12 11:22
2006.12.31
Программно нажать кнопку на форме


4-1156274077
Dot
2006-08-22 23:14
2006.12.31
поиск hwnd одного из двух окон


2-1165897474
Kvinta
2006-12-12 07:24
2006.12.31
Вернуть Field а ADO


15-1165840218
Чапаев
2006-12-11 15:30
2006.12.31
"Достаться на орехи"




   Наверх