J'ai encore un problème pour porter du code Win32 en .Net

j'ai une classe avec un champ FExpression de type TMyType

et dans une procédure j'ai un truc du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
ReadChild(@FExpression,Reader,[TMyExpression])
Et ReadChild est définie ainsi :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function TInstantIQLObject.ReadChild(Child: Pointer; Reader: TInstantIQLReader;
  Classes: array of TInstantIQLObjectClass): Boolean;
var
  I: Integer;
  ObjectClass: TInstantIQLObjectClass;
begin
  for I := Low(Classes) to High(Classes) do
  begin
    ObjectClass := Classes[I];
    Result := ObjectClass.AtInstance(Reader);
    if Result then
    begin
      TInstantIQLObject(Child^) := ObjectClass.Create(Self);
      TInstantIQLObject(Child^).Read(Reader);
      Exit;
    end;
  end;
  Result := False;
end;
j'ai transformer mon code en :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
ReadChild(FExpression,Reader,[TMyExpression])
et enfin

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function TInstantIQLObject.ReadChild(Child: TObject; Reader: TInstantIQLReader;
  Classes: array of TInstantIQLObjectClass): Boolean;
var
  I: Integer;
  ObjectClass: TInstantIQLObjectClass;
begin
  for I := Low(Classes) to High(Classes) do
  begin
    ObjectClass := Classes[I];
    Result := ObjectClass.AtInstance(Reader);
    if Result then
    begin
      Child := ObjectClass.Create(Self);
      TInstantIQLObject(Child^).Read(Reader);
      Exit;
    end;
  end;
  Result := False;
end;
Mais j'ai un doute pour les transformations. Ne devrait-je poas plutot utiliser un paramètre var pour Child ?