AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi "SetLength" im Dynamischen Array bestimmen
Thema durchsuchen
Ansicht
Themen-Optionen

"SetLength" im Dynamischen Array bestimmen

Ein Thema von SilverMoonGirl · begonnen am 6. Dez 2004 · letzter Beitrag vom 6. Dez 2004
Antwort Antwort
Benutzerbild von SilverMoonGirl
SilverMoonGirl

Registriert seit: 21. Aug 2003
Ort: Berlin
160 Beiträge
 
Delphi 6 Professional
 
#1

"SetLength" im Dynamischen Array bestimmen

  Alt 6. Dez 2004, 12:32
Huhu@all ,

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
Simone
There is no dark side of the moon really.
Matter of fact it's all dark.
.::mein Blog::.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#2

Re: "SetLength" im Dynamischen Array bestimmen

  Alt 6. Dez 2004, 12:34
Mit Delphi-Referenz durchsuchenLength bekommst Du die Länge, mit Delphi-Referenz durchsuchenLow und Delphi-Referenz durchsuchenHigh die Grenzen eines dynamischen Arrays raus.

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#3

Re: "SetLength" im Dynamischen Array bestimmen

  Alt 6. Dez 2004, 12:42
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 SetLength(DeinArray, Length(DeinArray)+1) 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.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von SilverMoonGirl
SilverMoonGirl

Registriert seit: 21. Aug 2003
Ort: Berlin
160 Beiträge
 
Delphi 6 Professional
 
#4

Re: "SetLength" im Dynamischen Array bestimmen

  Alt 6. Dez 2004, 12:51
Supi,

vielen Dank euch zwei
Simone
There is no dark side of the moon really.
Matter of fact it's all dark.
.::mein Blog::.
  Mit Zitat antworten Zitat
Jörn

Registriert seit: 5. Sep 2003
Ort: Helmstedt
312 Beiträge
 
#5

Re: "SetLength" im Dynamischen Array bestimmen

  Alt 6. Dez 2004, 13:13
Oder evtl mit Hier im Forum suchenTList arbeiten.
  Mit Zitat antworten Zitat
Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#6

Re: "SetLength" im Dynamischen Array bestimmen

  Alt 6. Dez 2004, 13:39
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:
type
  PListEntry = ^TListEntry;
  TListEntry = record
    pNext: PListEntry;
    pData: Pointer; //oder irgendwas anderes
  end;
Nun kannst du die gesamte List durchlaufen und bei Bedarf mit "New" neue Einträge erzeugen.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#7

Re: "SetLength" im Dynamischen Array bestimmen

  Alt 6. Dez 2004, 13:42
Zitat von Oxmyx:
Man kann auch einfach selber eine einfache verkettete Liste programmieren
Aus OOP-Sicht, nenne mir einen guten Grund dafür anstatt auf TList zu setzen Ab ca. 5 Objekten verbraucht es sogar mehr Speicher

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#8

Re: "SetLength" im Dynamischen Array bestimmen

  Alt 6. Dez 2004, 13:52
Zitat von sakura:
Zitat von Oxmyx:
Man kann auch einfach selber eine einfache verkettete Liste programmieren
Aus OOP-Sicht, nenne mir einen guten Grund dafür anstatt auf TList zu setzen Ab ca. 5 Objekten verbraucht es sogar mehr Speicher

......
Naja, man lernt natürlich mehr, wenn man auch selber mal solche Dinge programmiert, anstatt immer nur vorgefertigte Komponenten zu benutzen.
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.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#9

Re: "SetLength" im Dynamischen Array bestimmen

  Alt 6. Dez 2004, 13:56
Zitat von Oxmyx:
Naja, man lernt natürlich mehr, wenn man auch selber mal solche Dinge programmiert, anstatt immer nur vorgefertigte Komponenten zu benutzen.
Das stimmt.

Zitat von Oxmyx:
Aber ich programmiere meinen Code eigentlich lieber selbst.
Ich auch, aber wenn ich mir anschaue, dass ich auch Geld verdienen will, dann nutze ich doch lieber vorhandenes

Zitat von Oxmyx:
Ok, war jetzt nicht ganz aus OOP-Sicht, aber wenn man's unbedingt OOP haben will, kann man auch seine eigene TList programmieren.
Genau Okay, also gibt es in OOP Hinsicht keine Vorteile. Mehr wollte ich nicht wissen.

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

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  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 03:20 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