Einzelnen Beitrag anzeigen

hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#1

Variants wer entsorgt Speicherplatz ?

  Alt 19. Jul 2006, 14:36
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
  Mit Zitat antworten Zitat