Transmission de pointeurs à une procédure
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:
ReadChild(@FExpression,Reader,[TMyExpression])
Et ReadChild est définie ainsi :
Code:
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:
ReadChild(FExpression,Reader,[TMyExpression])
et enfin
Code:
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 ?