Hallo eine Verständnisfrage.
In einem
Com Server erzeuge ich ein variantes Array und fülle dieses:
Delphi-Quellcode:
function TebmTechnologieStack.GetData: OleVariant;
begin
result := VarArrayCreate([0, 100], varVariant);
Im Client hole ich die Daten ab und verarbeite diese.
Delphi-Quellcode:
v :=
Com.GetData;
SavetoList(PSafeArray(VarArrayAsPSafeArray(v)));
Wer gibt jetzt die dynamischen Bereiche wieder frei ?
ActiveX.SafeArrayDestroyData(PSafeArray(TVarData(v ).VArray));
ActiveX.SafeArrayDestroy(PSafeArray(TVarData(v).VA rray));
bringt einen Fehler, wenn der Zugriffsbereich der Variablen verlassen wird.
Also entweder bei Procedureende, was ja noch in Ordnung wäre, oder aber bei Programmende, wenn
es eine globale Variable war.
Der Speichermanager zeigt in keinem Fall ein Speicherleak an.
Kann ich nit der Anweisung
v : oleVariant;
.
.
.
v := unsasigned;
den Speicherbereich explizit freigeben?
Die Funktion soll eine Vielzahl von Blöcken vom
Com-Server holen, ich möchte vermeiden das sich Speicher-Leaks
ansammeln.
Für einen Tip dankbar.
Gruß Peter