Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Größe eines Dyn. Array herrausfinden (https://www.delphipraxis.net/37509-groesse-eines-dyn-array-herrausfinden.html)

Christian18 6. Jan 2005 17:29


Größe eines Dyn. Array herrausfinden
 
hallo,

wie kann ich die Größe eines Dynamischen Arrays herrausfinden???

Mit freundlichen Grüßen

Christian18

mirage228 6. Jan 2005 17:29

Re: Größe eines Dyn. Array herrausfinden
 
Hi,

Du kannst Delphi-Referenz durchsuchenLength verwenden.

mfG
mirage228

Dax 6. Jan 2005 17:30

Re: Größe eines Dyn. Array herrausfinden
 
Länge: Delphi-Referenz durchsuchenLength
Speicherverbrauch:
Delphi-Quellcode:
Length(Array)*sizeof(Array[0])

CalganX 6. Jan 2005 18:01

Re: Größe eines Dyn. Array herrausfinden
 
Hi,
ich mache das immer mit Delphi-Referenz durchsuchenHigh. Funktioniert auch soweit. :gruebel:

Chris

dizzy 6. Jan 2005 18:08

Re: Größe eines Dyn. Array herrausfinden
 
High gibt dir den hochsten Index, und Length die Länge. Bei dyn. Arrays gilt also:

High(array) = Length(array)-1

Jens Schumann 6. Jan 2005 18:11

Re: Größe eines Dyn. Array herrausfinden
 
Zitat:

Zitat von dizzy
High gibt dir den hochsten Index, und Length die Länge. Bei dyn. Arrays gilt also:

High(array) = Length(array)-1

Was passiert eigentlich bei Array's, die von -10 bis +10 laufen?

Nikolas 6. Jan 2005 18:12

Re: Größe eines Dyn. Array herrausfinden
 
Dynamische beginnen immer bei 0 und bei festen sollte man wissen wie lang sie sind.

Keldorn 6. Jan 2005 18:14

Re: Größe eines Dyn. Array herrausfinden
 
dann sind es keine dynamischen arrays ;) sondern statische :
low(array) gibt dann -10, high(array) 10 und length(array) gibt dann 21 aus.

edit: zu langsam

Jens Schumann 6. Jan 2005 18:23

Re: Größe eines Dyn. Array herrausfinden
 
Zitat:

Zitat von Keldorn
dann sind es keine dynamischen arrays ;) sondern statische :
low(array) gibt dann -10, high(array) 10 und length(array) gibt dann 21 aus.

Stimmt. Daran habe ich nicht gedacht. Das liegt wohl daran, dass ich dyn. Array's
grundsätzlich nicht verwende.

Sprint 6. Jan 2005 18:27

Re: Größe eines Dyn. Array herrausfinden
 
Zitat:

Zitat von Jens Schumann
Das liegt wohl daran, dass ich dyn. Array's grundsätzlich nicht verwende.

Ich verwende gar keine Array's. Außer die WinAPI zwingt mich dazu. Schließlich ist Delphi ja eine objekt-orientiere Sprache. So kan man alles schön mit Klassen erarbeiten.

Nikolas 6. Jan 2005 18:29

Re: Größe eines Dyn. Array herrausfinden
 
@ Sprint: Wenn du jetzt eine Liste von 30 Daten hast, wie behandelst du die ohne Arrays?

Sprint 6. Jan 2005 18:33

Re: Größe eines Dyn. Array herrausfinden
 
Zitat:

Zitat von Toxman
@ Sprint: Wenn du jetzt eine Liste von 30 Daten hast, wie behandelst du die ohne Arrays?

Eigene Klasse. Die Objektreferenzen werden dann in TList oder TObjectList gespeichert.

mirage228 6. Jan 2005 18:50

Re: Größe eines Dyn. Array herrausfinden
 
Zitat:

Zitat von Sprint
Ich verwende gar keine Array's. Außer die WinAPI zwingt mich dazu. Schließlich ist Delphi ja eine objekt-orientiere Sprache. So kan man alles schön mit Klassen erarbeiten.

Dann kommst auch nicht in den Genuß solcher Konstruktionen ;) :
Delphi-Quellcode:
// schreib mal das hier :D
if ABoolVar then
  Result := 'Ergebnis 1' else
Result := 'Ergebins 2';
// dann ist das doch viel schöner
const
  ResArr: array[Boolean] of string = ('Ergebnis 2', 'Ergebnis 1');
begin
  Result := ResArr[ABoolVar];
Nur ein Anwendungsbeispiel dieser, wie ich finde, nützlichen Konstruktion. :)

mfG
mirage228

Jens Schumann 6. Jan 2005 18:52

Re: Größe eines Dyn. Array herrausfinden
 
Zitat:

Zitat von mirage228
Zitat:

Zitat von Sprint
Ich verwende gar keine Array's. Außer die WinAPI zwingt mich dazu. Schließlich ist Delphi ja eine objekt-orientiere Sprache. So kan man alles schön mit Klassen erarbeiten.

Dann kommst auch nicht in den Genuß solcher Konstruktionen ;) :
Delphi-Quellcode:
// schreib mal das hier :D
if ABoolVar then
  Result := 'Ergebnis 1' else
Result := 'Ergebins 2';
// dann ist das doch viel schöner
const
  ResArr: array[Boolean] of string = ('Ergebnis 2', 'Ergebnis 1');
begin
  Result := ResArr[ABoolVar];
Nur ein Anwendungsbeispiel dieser, wie ich finde, nützlichen Konstruktion. :)

mfG
mirage228

Doch, weil array[Boolean] of string kein dyn Array, sondern ein statisches Array ist.

mirage228 6. Jan 2005 18:54

Re: Größe eines Dyn. Array herrausfinden
 
Hi Jens,

Sprint meinte ja, er benutze gar keine Arrays außer für Win32-API Funktionen ;)

Bei dir hab ich ja gelesen, dass du nur keine dynamischen benutzt - also auf Dich war das gar nicht bezogen :)

mfG
mirgae228

Jens Schumann 6. Jan 2005 18:56

Re: Größe eines Dyn. Array herrausfinden
 
Zitat:

Zitat von mirage228
Hi Jens,

Sprint meinte ja, er benutze gar keine Arrays außer für Win32-API Funktionen ;)

Bei dir hab ich ja gelesen, dass du nur keine dynamischen benutzt - also auf Dich war das gar nicht bezogen :)

mfG
mirgae228

Entschuldigung

Sprint 6. Jan 2005 19:00

Re: Größe eines Dyn. Array herrausfinden
 
Zitat:

Zitat von mirage228
Dann kommst auch nicht in den Genuß solcher Konstruktionen
Nur ein Anwendungsbeispiel dieser, wie ich finde, nützlichen Konstruktion.

Genau. Dafür benutze ich RTTI.

mirage228 6. Jan 2005 19:00

Re: Größe eines Dyn. Array herrausfinden
 
Zitat:

Zitat von Jens Schumann
Entschuldigung

Ach ist doch nicht weiter Schlimm :zwinker:

Ich persönliche auch keine dynamischen Arrays (mehr), sondern, wie Sprint, TList bzw. TObjectList.

Zitat:

Zitat von Sprint
Genau. Dafür benutze ich RTTI.

Hm, kannst Du mir dazu mal ein kurzes Beispiel geben ? - Ich verstehe nicht ganz, wie man für diesen Zusammenhang die RTTI benutzen könnte :gruebel:

mfG
mirage228

axelf98 6. Jan 2005 19:22

Re: Größe eines Dyn. Array herrausfinden
 
TList ist intern aber auch ein Array of TPointer...
Außerdem kann es bei kleineren Sortieraufgaben auch mal Daseinsberechtigungen für dyn. Arrays geben.. Man muss ja nicht alles verklassifizieren!

Sprint 6. Jan 2005 19:31

Re: Größe eines Dyn. Array herrausfinden
 
Zitat:

Zitat von axelf98
TList ist intern aber auch ein Array of TPointer...

Das stimmt. Das hat aber nichts damit zu tun, das ich persönlich keine Array's einsetze.

Zitat:

Zitat von mirage228
Hm, kannst Du mir dazu mal ein kurzes Beispiel geben ? - Ich verstehe nicht ganz, wie man für diesen Zusammenhang die RTTI benutzen

Damit ich nicht extra Delphi starten muss... Link




Edit:

Zitat:

Zitat von axelf98
Außerdem kann es bei kleineren Sortieraufgaben auch mal Daseinsberechtigungen für dyn. Arrays geben.. Man muss ja nicht alles verklassifizieren!

Klar. Wenn's um Geschwindigkeit geht, dann setzt ich auch schon mal ein Array ein.

mirage228 6. Jan 2005 19:35

Re: Größe eines Dyn. Array herrausfinden
 
Zitat:

Zitat von Sprint
Damit ich nicht extra Delphi starten muss... Link

Achso, Du meintest RTTI im Allgemeinen :o

Ich dachte Du hattest einen Ersatz für meinen Boolean-Array durch die RTTI :gruebel:

Nun gut, für Enums benutze ich öfters die RTTI... aber auch Arrays, falls ich für die Enums einen anderen Namen brauche (einen etwas schöneren mit Leerzeichen und ohne die ungarische Notation z.B. ...) ;)

Edit:
Zitat:

Zitat von Sprint
Klar. Wenn's um Geschwindigkeit geht, dann setzt ich auch schon mal ein Array ein.

Also doch nicht ganz ohne Arrays ;)


mfG
mirage228

Sprint 6. Jan 2005 19:49

Re: Größe eines Dyn. Array herrausfinden
 
Zitat:

Zitat von mirage228
Delphi-Quellcode:
const
  ResArr: array[Boolean] of string = ('Ergebnis 2', 'Ergebnis 1');

Zitat:

Zitat von mirage228
Achso, Du meintest RTTI im Allgemeinen

Wie soll ich da einen Ansatz finden? Hardcoded Strings benutzt ich auch nur ganz ganz selten. (wegen MultiLanguage Umgebung)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:39 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