Autor Beitrag
accessViolation
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 68

Win
Delphi 5 Enterpr.
BeitragVerfasst: Mi 22.08.07 15:39 
Hallo!

Ich arbeite zur Zeit mit MapPoint in Delphi 5. Leider verwendet Microsoft sehr oft Variablen vom Typ OleVariant benötigt, im ungünstigsten Fall Arrays. Wenn man's mal drauf hat, haut auch alles hin, ich weiß aber nicht, wie man die Variant-Arrays wieder freigeben kann.

Um ein Array zu ERZEUGEN, lege ich eine Variable vom Typ OleVAriant an:
ausblenden Delphi-Quelltext
1:
meinArray: OleVariant;					


... und mache mit folgendem Code ein Array daraus:
ausblenden Delphi-Quelltext
1:
meinArray := VarArrayCreate([0,2], varVariant);  // Array mit drei Elementen					


Dann fülle ich die Elemente meines Arrays:
ausblenden Delphi-Quelltext
1:
2:
   meinArray[0] := DataSetFilialen.Fields[oVar];  // z.B.
   // ...


Und jetzt möchte ich den Speicher wieder freigeben. Wie geht das?
Mit  VarClear ?

Viele Grüße,
Dietmar

Moderiert von user profile iconChristian S.: Code- durch Delphi-Tags ersetzt
little-wolf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 47

WinXP
Delphi 5 Enterprise, Delphi 2006 Enterprise
BeitragVerfasst: Mi 22.08.07 16:26 
hallo dietmar

versuchs doch mal mit:

ausblenden Delphi-Quelltext
1:
meinArray.Free;					


oder

ausblenden Delphi-Quelltext
1:
FreeAndNil(meinArray);					



hab grad kein delphi zur hand und kanns daher leider nicht ausprobieren...


gruss

little-wolf
accessViolation Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 68

Win
Delphi 5 Enterpr.
BeitragVerfasst: Do 23.08.07 09:20 
Ja, danke, es geht folgendermaßen:

Erst VarClear(varArray)
und dann FreeAndNil(varArray).

Ohne VarClear() kommt eine Zugriffsverletzung.

Ich denke, damit bin ich auf der sicheren Seite.

Viele Grüße
Dietmar