AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SetLength und ARRAY OF Variant

Ein Thema von PaulJr · begonnen am 28. Nov 2007 · letzter Beitrag vom 29. Nov 2007
Antwort Antwort
PaulJr

Registriert seit: 10. Feb 2007
Ort: Stuttgart
66 Beiträge
 
#1

SetLength und ARRAY OF Variant

  Alt 28. Nov 2007, 14:13
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:
var
   MeinArray : array of Variant;
   i : Integer;
begin
   (...)
   SetLength(MeinArray, i); // Zuweisung
   (...)
   ??? // Freigabe

end;
Viele Grüße

PaulJr.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: SetLength und ARRAY OF Variant

  Alt 28. Nov 2007, 14:24
SetLength(MeinArray, 0);
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: SetLength und ARRAY OF Variant

  Alt 28. Nov 2007, 14:30
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).
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
PaulJr

Registriert seit: 10. Feb 2007
Ort: Stuttgart
66 Beiträge
 
#4

Re: SetLength und ARRAY OF Variant

  Alt 28. Nov 2007, 14:46
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...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: SetLength und ARRAY OF Variant

  Alt 28. Nov 2007, 14:57
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.
Markus Kinzler
  Mit Zitat antworten Zitat
PaulJr

Registriert seit: 10. Feb 2007
Ort: Stuttgart
66 Beiträge
 
#6

Re: SetLength und ARRAY OF Variant

  Alt 28. Nov 2007, 22:31
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.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: SetLength und ARRAY OF Variant

  Alt 29. Nov 2007, 07:44
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
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: SetLength und ARRAY OF Variant

  Alt 29. Nov 2007, 07:50
für mich klingt es auch danach das hier der Speicher zu sehr fragmentiert.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: SetLength und ARRAY OF Variant

  Alt 29. Nov 2007, 07:54
Was ja auch nicht verwundert, wenn er in einer Schleife ständig die Größe eines dynamischen Arrays verändert.
Markus Kinzler
  Mit Zitat antworten Zitat
PaulJr

Registriert seit: 10. Feb 2007
Ort: Stuttgart
66 Beiträge
 
#10

Re: SetLength und ARRAY OF Variant

  Alt 29. Nov 2007, 10:47
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz