AGB  ·  Datenschutz  ·  Impressum  







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

Unbegrenzte Arrays

Ein Thema von Nicolai1234 · begonnen am 8. Apr 2004 · letzter Beitrag vom 9. Apr 2004
Antwort Antwort
Seite 1 von 2  1 2      
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#1

Unbegrenzte Arrays

  Alt 8. Apr 2004, 17:41
ich habe eine Variable wie folgt definiert:
s: Array[1..5] of String; Nun weiß ich aber nicht, wie viele arrays ich brauche! Wie kann ich die zweite Zahl (in diesem Fall 5) nach oben offen lassen.

Wenn ich s: Array of String; eingebe passiert nichts;
  Mit Zitat antworten Zitat
Tortus

Registriert seit: 15. Nov 2003
Ort: Gescher
47 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Unbegrenzte Arrays

  Alt 8. Apr 2004, 17:46
Klick
Thorsten Lanfer
  Mit Zitat antworten Zitat
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Unbegrenzte Arrays

  Alt 8. Apr 2004, 17:52
thx
  Mit Zitat antworten Zitat
Benutzerbild von S - tefano
S - tefano

Registriert seit: 16. Dez 2002
Ort: Dülmen
477 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Unbegrenzte Arrays

  Alt 8. Apr 2004, 17:55
@Tortus
Sry, hab deinen Link jetzt nicht angesehen, weiß also nicht was da steht.

Nur kurz schnell damit man die Lösung auch hier in der DP findet...

Die Array- Deklaration hast du schon richtig gemacht:
Delphi-Quellcode:
var
  meinDynamischerArray: array of {irgendein Typ};
Die Größe des Arrays bekommst du mit
length(meinDynamischerArray); //gibt Integer Die Größe _setzt_ du mit
SetLength(meinDynamischerArray, {ganzzahliger Wert für die neue Anzahl von Elementen});
Hoffe geholfen zu haben,

S - tefano
"Sir, we are surrounded!" - "Excellent, we can attack in every direction!"
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Unbegrenzte Arrays

  Alt 9. Apr 2004, 04:11
Und um's der Vollständigkeit noch näher zu bringen:

Man sollte auf jeden Fall vermeiden das dynamische Array in Schleifen immer um eine kleine Anzahl an Elementen zu vergrößern, da dadurch der Speicherverbrauch deiner Anwendung ganz schnell ganz hoch wird! Also besser alle z.B. 100 Schleifendurchläufe das Array um 100 Elemente verlängern, als pro Durchlauf um 1.

Warum das so ist, lässt sich bei einer Suche nach dynamischen Arrays hier recht oft und eingehend nachlesen .


schönen Gruß,
dizzy
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#6

Re: Unbegrenzte Arrays

  Alt 9. Apr 2004, 07:47
Also der Speicherverbrauch steigt dadurch nicht an, es dauert halt nur "sehr" lange die Speichergröße zu ändern und wenn man seltener die Größe des Arrays ändert, wird das Programm schneller.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#7

Re: Unbegrenzte Arrays

  Alt 9. Apr 2004, 10:30
Zitat von himitsu:
Also der Speicherverbrauch steigt dadurch nicht
Der steigt sehr wohl an, wenn man sich das von Windows's Seite anschaut. Betrachtet man es von Delphi's Seite, dann hast du recht, denn dem Delphi-Programm steht der Speicher zur (freien) Verfügung. Windows gehen bei
Delphi-Quellcode:
for i := 0 to 100000 do
  SetLength(a, Length(a) + 1);
n=100000
mem=n*(n+1)/2 Bytes an Speicher verlohren, da diese vom Delphi-Programm reserviert sind.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Unbegrenzte Arrays

  Alt 9. Apr 2004, 12:52
Moin Dizzy,

wenn man ein dynamisches Array vergrössert, wird i.d.R. Platz für die neue Grösse angefordert, und dann das Array umkopiert.
Das ist es dann, was das Programm langsam macht, und weswegen, man ein Array nicht zu oft vergrössern sollte.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#9

Re: Unbegrenzte Arrays

  Alt 9. Apr 2004, 13:23
Das schnellste und effektivste sind immer noch verkettete Listen / Bäume, da das wirklich dynamische Strukturen sind. Der Zugriff auf einzelne Elemente ist aber etwas schwieriger, als bei einem simplen Array.
Gruß
Hansa
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Unbegrenzte Arrays

  Alt 9. Apr 2004, 13:51
Zitat von Hansa:
Das schnellste und effektivste sind immer noch verkettete Listen / Bäume,
Nicht immer. Will man oft auf das n-te Element einer Liste zugreifen, dann iteriert man sich mit seinem Baum zu Tode. Bäume sind dann gut geeignet, wenn man die Liste ohnehin ganz durchrattert oder oft zwischendrin Elemente einfügen muss.
Außerdem frisst eine verkettete Struktur mehr Speicherplatz als eine sequenzielle.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 12:59 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