![]() |
"SetLength" im Dynamischen Array bestimmen
Huhu@all :hi: ,
In meinem Programm kann ich Werte berechnen lassen, je nachdem wie lange der Benutzer das durchlaufen lässt, entstehen unterschiedliche Werte, die ich speichern wollte um danach ein Diagramm zu zeichnen. Ich hab mal ein bisschen umhergelesen, und bin der Meinung, das man das mit einem dynamischen array machen kann..... Mein Problem ist jetzt das „SetLength“. Da ich ja nich weiß wann der Benutzer die Berechnung abbricht, kann ich auch keine Größe angeben........Die Anzahl der errechneten Werte bekomm ich ja erst raus, wenn der Benutzer auf Stopp klickt, aber selbst in der Zeit bis zum Stopp- klicken muss ich ja die bereits errechneten Werte irgendwo speichern. Hab ihr vielleicht einen Tipp für mich? Schonmal vielen Dank im vorraus :) |
Re: "SetLength" im Dynamischen Array bestimmen
|
Re: "SetLength" im Dynamischen Array bestimmen
Hi Simone,
du musst auf jeden Fall den Speicher für das Array vor der Berechnung durchführen, ansonsten wird dein Programm ein richtiger Speicherfresser. Du könntest ja die Länge auf 1 Million Felder setzen, und die Berechnung da abbrechen. Wenn du nämlich bei jedem Berechnungsschritt
Delphi-Quellcode:
ausführst, reserviert das Programm immer wieder neuen Speicher für das Array. Deshalb: Zuerst erstmal richtig viel Speicher reservieren, dann läuft die Berechnung auch viel schneller. Am Ende kannst du dann die Länge evtl. zurücksetzen.
SetLength(DeinArray, Length(DeinArray)+1)
Greetz alcaeus |
Re: "SetLength" im Dynamischen Array bestimmen
Supi,
vielen Dank euch zwei :) :) :) |
Re: "SetLength" im Dynamischen Array bestimmen
Oder evtl mit
![]() |
Re: "SetLength" im Dynamischen Array bestimmen
Man kann auch einfach selber eine einfache verkettete Liste programmieren, indem man einfach einen Record schreibt, der jeweils einen Zeiger auf seinen Nachfolger (evtl. auch auf seinen Vorgänger) hat:
Delphi-Quellcode:
Nun kannst du die gesamte List durchlaufen und bei Bedarf mit "New" neue Einträge erzeugen.
type
PListEntry = ^TListEntry; TListEntry = record pNext: PListEntry; pData: Pointer; //oder irgendwas anderes end; |
Re: "SetLength" im Dynamischen Array bestimmen
Zitat:
...:cat:... |
Re: "SetLength" im Dynamischen Array bestimmen
Zitat:
Ich sehe ein, dass Delphi als RAD-Anwendung viele solcher Dinge bereitstellt, um dem Programmierer den Alltag zu erleichtern und die Programmiergeschwindigkeit zu erhöhen. Aber ich programmiere meinen Code eigentlich lieber selbst. Ok, war jetzt nicht ganz aus OOP-Sicht, aber wenn man's unbedingt OOP haben will, kann man auch seine eigene TList programmieren. |
Re: "SetLength" im Dynamischen Array bestimmen
Zitat:
Zitat:
Zitat:
Einen Vorteil hat Dein Ansatz gegenüber TList. Muss man andauernd Objekte mitten aus der Liste entfernen, bzw einfügen, dann ist Dein Ansatz evtl. schneller. Je nach Sauberkeit und Umständen. Aber danke, ich bleibe bei TList :mrgreen: ...:cat:... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:57 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