Delphi-Quellcode:
ms := TMemoryStream.Create;
isa:=TStreamAdapter.Create(ms);
try
[...]
finally
isa.Free;
ms.Free;
end;
Nur in Bezug auf das Try-Finally-Konstrukt. Wenn im Constructor von TStreamAdapter etwas schief geht, wird ms nicht freigegeben. Daher würde das so machen:
Delphi-Quellcode:
ms := nil;
isa := nil;
try
ms := TMemoryStream.Create;
isa:=TStreamAdapter.Create(ms);
[...]
finally
isa.Free;
ms.Free;
end;
Da .Free auf nil prüft ist so sichergestellt, dass immer beides freigegeben wird.
Von dem Rest hab ich keine Ahnung.