![]() |
SetLength und ARRAY OF Variant
Hallo Programmierer, :???:
weiß vielleicht jemand wie ich hier MeinArray korrekt freigeben kann? Ich habe hier etwas im Forum gesucht aber nichts passendes gefunden...
Delphi-Quellcode:
Viele Grüße
var
MeinArray : array of Variant; i : Integer; begin (...) SetLength(MeinArray, i); // Zuweisung (...) ??? // Freigabe end; PaulJr. |
Re: SetLength und ARRAY OF Variant
Delphi-Quellcode:
SetLength(MeinArray, 0);
|
Re: SetLength und ARRAY OF Variant
Delphi gibt dynamische Arrays auch selber frei, wenn sie nicht mehr gebraucht werden. Wenn also deine Funktion (inkl. einer lokalen dynamischen Variable) dann sowieso zu Ende ist, ist auch keine Freigabe nötig (es würde die FreigabeRoutine nur eben zweimal aufgerufen).
|
Re: SetLength und ARRAY OF Variant
Hallo MKinzler, :???:
DANKE, so habe ich auch programmiert... nun wollte ich 100% sicher gehen, dass ich keinen Fehler mache, da ich mich in einer Schleife befinde, wo ich diese Variable immer neu initialisieren muss, und kriege zur Laufzeit mein Lieblings Fehler: Zu wenig Arbeitsspeicher für diese Operation Dies bedeutet also, dass ich an anderen Stellen suchen muss. Viele Grüße PaulJr. P.S. Danke Sirius, :???: leider befinde ich mich in einer Schleife... |
Re: SetLength und ARRAY OF Variant
Ständiges Freigeben und Neuanfordern von Speicher sollte man aber Vermeiden. weil er nicht unbedingt den Vorhandenen Speicherbereich erweitert sondern den neuen Speicher woanders allokiert, den Inhalt kopiert und dann den alten speicher freigibt. so kann es also vorkommen, das temorär etwa doppelt so viel Speicher benötigt wird.
|
Re: SetLength und ARRAY OF Variant
Hallo MKinzler, :???:
ich werde über Deine letzte Bemerkung etwas nachdenken bzw. etwas ausprobieren… Sollte ich eine Lösung finden werde ich mich hier melden… Viele Grüße PaulJr. |
Re: SetLength und ARRAY OF Variant
Hallo Paul,
vielleicht solltest du dir in der Delphi Online-Hilfe mal das Kapitel zu Finalize() durchlesen. Wieviele Elemente hat denn dein Array maximal? Ist das Inkrement immer 1? Welche Variants steckst du da rein? Hast du Code in deinem Programm vorgesehen, der mit der Windows Speicherverwaltung kommuniziert? Grüße vom marabu |
Re: SetLength und ARRAY OF Variant
für mich klingt es auch danach das hier der Speicher zu sehr fragmentiert.
|
Re: SetLength und ARRAY OF Variant
Was ja auch nicht verwundert, wenn er in einer Schleife ständig die Größe eines dynamischen Arrays verändert.
|
Re: SetLength und ARRAY OF Variant
Hallo Marabu, SirThornberry und MKinzler, :???:
ich lese sehr aufmerksam was hier geschrieben wird. Dieses Konstrukt brauche ich für TDataSet.Locate und genau für VarArrayOf(…) Sobald ich mein Problem behoben habe werde ich mich hier mit Sicherheit melden… Viele Grüße PaulJr. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz