[Delphi] OleVariants goed gebruikt of niet?

Pagina: 1
Acties:

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 23-08 22:26

Tomatoman

Fulltime prutser

Topicstarter
Op mijn server wordt de volgende procedure aangeroepen door een client, waarbij UserIDs, Usernames en Descriptions worden doorgegeven aan de client. Vraag: wie is verantwoordelijk voor het vrijgeven de OleVariants, de client of de server. Of is dat helemaal niet nodig?
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
procedure TMijnAppServer.EnumUserInfo(out UserIDs, Usernames,
  Descriptions: OleVariant);
var
  { UserInfo is een dataset (TClientDataSet) }
  { UserInfoUserID, UserInfoUserName en UserInfoUserDescription zijn
    velden (TField descendants) in de dataset }
  i: Integer;
begin
  UserIDs := Null;
  Usernames := Null;
  Descriptions := Null;
  with UserInfo do
  begin
    UserIDs := VarArrayCreate([0, RecordCount -1], varInteger);
    Usernames := VarArrayCreate([0, RecordCount -1], varOleStr);
    Descriptions := VarArrayCreate([0, RecordCount -1], varOleStr);

    i := VarArrayLowBound(UserIDs, 1);
    First;
    while i <= VarArrayHighBound(UserIDs, 1) do
    begin
      if Eof then Abort; // er is iets verkeerd gegaan
      UserIDs[i] := UserInfoUserID.Value;
      Usernames[i] := UserInfoUserName.Value;
      Descriptions[i] := UserInfoUserDescription.Value;
      Inc(i);
      Next;
    end;
  end;
end;

Een goede grap mag vrienden kosten.


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Dat ligt er aan wat voor soort parameters het zijn ([in], [out] of [in, out]), maar als het goed is zorgt Delphi er voor dat je hier niet druk om hoeft te maken. Draai anders eens een programma zoals MemProof of AQTime of Memory Sleuth.

We adore chaos because we like to restore order - M.C. Escher


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 23-08 22:26

Tomatoman

Fulltime prutser

Topicstarter
In dit geval gaat het om [out] parameters in een functie die door een ander proces (de client) wordt aangesproken. Iemand die hier een definitieve uitspraak over durft te doen over het vrijgeven dan de OleVariants?

Een goede grap mag vrienden kosten.


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

De client is in dat geval verplicht m vrij te geven, maar volgensmij gebeurt dat automatisch. Ik gebruik zelf dagelijks COM en ook OleVariants en geef ze nooit vrij

We adore chaos because we like to restore order - M.C. Escher


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 23-08 22:26

Tomatoman

Fulltime prutser

Topicstarter
OK, nooit meer vrijgeven dus. Voor de zekerheid zal ik de minimale systeemeisen voor mijn progsel opschroeven naar 1 GB RAM :)

Een goede grap mag vrienden kosten.