Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   TIntegerDynArray - Länge bestimmen (https://www.delphipraxis.net/191888-tintegerdynarray-laenge-bestimmen.html)

Rabenrecht 28. Feb 2017 10:52

Delphi-Version: 5

TIntegerDynArray - Länge bestimmen
 
Da die Embarcadero-Doku zu diesem Arraytyp mal wieder unglaublich hilfreich ist: wie lässt sich die Länge eines IntgerDynArrays herausfinden?

Wenn wir schon bei dem Thema sind, würde etwas wie das folgende überhaupt funktionieren?

Delphi-Quellcode:
while something do
begin
  if somethingelse then
  begin
    i := myIntDynArray.Length; //oder wie auch immer man an die Länge kommt
    myIntDynArray.SetLength(i+1);
    myIntDynArray[i] := value;
  end;
  [...]
end;
Dh. was wirklich ins Array reinkommt, kann erst zur Laufzeit bestimmt werden. Man darf weiterhin annehmen, dass ich auch Gründen hier keine TList verwenden möchte.

hoika 28. Feb 2017 10:55

AW: TIntegerDynArray - Länge bestimmen
 
Hallo,
hm, der Code ist doch OK oder?

Es ist also ein normales dynamisches Array,
was in der Tat erst zur Laufzeit befüllt werden kann.

Aus der Doku
Delphi-Quellcode:
type TIntegerDynArray = array of Integer;

Rabenrecht 28. Feb 2017 11:03

AW: TIntegerDynArray - Länge bestimmen
 
Tja, Delphi unterkringelt das myArray.Length eben mit der Meldung "TIntegerDynArray enthält kein Element namens Length" :(

Edit: ah, habe meinen Fehler gefunden:

Es muss Length(Array) und SetLength(Array,length) heißen :)

Stevie 28. Feb 2017 11:09

AW: TIntegerDynArray - Länge bestimmen
 
Delphi-Referenz durchsuchenSystem.Length

himitsu 28. Feb 2017 15:49

AW: TIntegerDynArray - Länge bestimmen
 
In den "neueren" DelphiVerionen könnte es Methoden ala x.Length geben.
Seitdem es Record-Helper auch für einfache Typen gibt.

So haben z.B. die Typen Integer und String jetzt auch paar nette Methoden dran. Delphi-Referenz durchsuchenTStringHelper


PS: Wenn man nicht unbedingt auf eine Funktion angewiesen ist, welche einen TXyzDynArray zurück gibt, dann sollte man besser TArray<TXyz> verwenden.
Delphi-Referenz durchsuchenSplitString

Stevie 28. Feb 2017 17:20

AW: TIntegerDynArray - Länge bestimmen
 
Zitat:

Zitat von himitsu (Beitrag 1362895)
Wenn man nicht unbedingt auf eine Funktion angewiesen ist, welche einen TXyzDynArray zurück gibt, dann sollte man besser TArray<TXyz> verwenden.

Und bitte für RSP-16737 und RSP-10336 voten.

Mavarik 28. Feb 2017 18:42

AW: TIntegerDynArray - Länge bestimmen
 
Zitat:

Zitat von Stevie (Beitrag 1362901)

Und bitte für RSP-16737 und RSP-10336 voten.

Done...

himitsu 28. Feb 2017 19:14

AW: TIntegerDynArray - Länge bestimmen
 
Genau das Beides hatte mich auch schon genervt.
Wobei ich es auch nicht verstehe, warum der Typ
Delphi-Quellcode:
array of T
nicht kompatibel mit
Delphi-Quellcode:
TArray<T>
ist. :wall:


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