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 :
Et ReadChild est définie ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part ReadChild(@FExpression,Reader,[TMyExpression])
j'ai transformer mon code en :
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;
et enfin
Code : Sélectionner tout - Visualiser dans une fenêtre à part ReadChild(FExpression,Reader,[TMyExpression])
Mais j'ai un doute pour les transformations. Ne devrait-je poas plutot utiliser un paramètre var pour Child ?
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;
Partager