Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: ActiveX/СОМ/CORBA > Передача массива


Автор: Neox_GeForce 9.12.2008, 19:23
Добрый день! У меня такая проблема. Я должен сделать програму типа БД-Сервер-Клиент
БД- мс скюл 2005 сервер и клиент на дельфи.

У меня трудность. я Не знаю как з масива COM обьектов перекодированого у  Вариант на клиенте взять СОМ обьект.
 вот код функций на сервере
Код

////////////////////////////////////////////////////////////////
function ArrayToVariant(ar: array of IUser): Variant;
var
  Min,Max, i: integer;
begin
  Min := Low(ar);
  Max := High(ar);
  result := VarArrayCreate([Min,Max], varVariant);
  for i := Min to Max do begin
    result[i] := ar[i];
  end;
end;
/////////////////////////////////////////////////////////////////


function TUserManager.GetAllUsers(out Users: OleVariant): HResult;
var
  user:IUser;
  i:integer;
  size:integer;
  UserArr:array[Word] of IUser;
begin
  dm:=TDMServer.Create(nil);
  dm.SQLconnect.open;
  size:=1;
  while dm.GetUser.Eof=false do
  begin
// записываем у поля обьекта данные
   user:=CoUser.Create;
   user.Set_PrinCipalID(dm.GetUser.Fields.Fields[0].AsInteger) ;
   user.Set_pass(dm.GetUser.Fields.Fields[1].AsString);
   user.Set_name(dm.GetUser.Fields.Fields[2].AsString);
   user.Set_surname(dm.GetUser.fields.Fields[3].AsString);
    UserArr[size]:= user;
    size:=size+1;
  end;

  dm.GetUser.Close;
  dm.SQLconnect.Close;
  Users:=ArrayToVariant(UserArr);


end;


а вот код клиента
Код


procedure TPharmacyClient.Button2Click(Sender: TObject);
var
a:OleVariant;
s:array of IUser;
user:IUser;
t:integer;
begin
userm1.GetAllUsers(a);
t:=VarType(a);


MessageDlg( VarToStr(t), mtInformation, [mbOk], 0);
 If VarIsArray(a) then
   MessageDlg( 'Переменная является массивом', mtInformation, [mbOk], 0);

//Так не работает да и не будет работать типы ж разные
s[1]:=a[1];

end;



Вопрос:

как взять назад обьект с етого Вариант массива????

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)