Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi TArray - Alternative zu SetLength(..) ? (https://www.delphipraxis.net/179284-tarray-alternative-zu-setlength.html)

Der schöne Günther 25. Feb 2014 17:40

AW: TArray - Alternative zu SetLength(..) ?
 
Herzlich Willkommen dazu.


Wie gesagt, ich wollte einfach nur anonym ein Array mit X Elementen haben. Bastel ich mir halt einfach selbst was an TArray dran. Dachte, da könnte es vielleicht schon so etwas geben.

Mavarik 26. Feb 2014 11:10

AW: TArray - Alternative zu SetLength(..) ?
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1249583)
Herzlich Willkommen dazu.


Wie gesagt, ich wollte einfach nur anonym ein Array mit X Elementen haben. Bastel ich mir halt einfach selbst was an TArray dran. Dachte, da könnte es vielleicht schon so etwas geben.

Wir könnten Sicherlich besser helfen, wenn wir einen Sinn darin sehen würden...
Worin liegt der Nutzen eine Liste mit X Elementen "Müll" zu füllen?

Entweder habe ich die Daten Statisch im Source als Const oder lese es aus einer Resource oder aus einer Datei/Datenbank...

Lass einfach das Generics geraffel weg und nimm einen Fillchar...

Mavarik

Der schöne Günther 26. Feb 2014 11:16

AW: TArray - Alternative zu SetLength(..) ?
 
Danke für die gut gemeinte Hilfe.

Ich hätte einfach nur fragen sollen "Gibt es schon etwas, womit ich anonym ein Array mit einer bestimmten Länge erstellen kann?". Dann hätte jemand gesagt "Nö. Bau dir halt selber was.". Und dann wäre es das schon gewesen.

Mavarik 26. Feb 2014 11:28

AW: TArray - Alternative zu SetLength(..) ?
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1249698)
Danke für die gut gemeinte Hilfe.

Ok wir verbuchen es als Beschäftigungstherapie. :stupid:

Bjoerk 26. Feb 2014 11:36

AW: TArray - Alternative zu SetLength(..) ?
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1249698)
Ich hätte einfach nur fragen sollen "Gibt es schon etwas, womit ich anonym ein Array mit einer bestimmten Länge erstellen kann?". Dann hätte jemand gesagt "Nö. Bau dir halt selber was.". Und dann wäre es das schon gewesen.

Falls du dir was selber stricken möchtest, dann kannst du dir z.B. anschauen wie TList Capacity setzt (Capacity >= Count). Das interne Array dort muß übrigens nicht unbedingt Pointer auf Pointer sein.

Der schöne Günther 26. Feb 2014 11:44

AW: TArray - Alternative zu SetLength(..) ?
 
Das mit der
Delphi-Quellcode:
TList
war ja nur ein Beispiel. Ein Array mit x Elementen wollte ich gerne haben um es irgendwo reinzustecken:

Delphi-Quellcode:
function gibArray<T>(const elementCount: Integer): TArray<T>;
begin
   SetLength(Result, elementCount);
end;
Meine Frage war einfach nur, ob es so etwas schon gibt.

Auf jeden Fall vielen Dank an alle beteiligten! :-)

Stevie 26. Feb 2014 12:13

AW: TArray - Alternative zu SetLength(..) ?
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1249704)
Das mit der
Delphi-Quellcode:
TList
war ja nur ein Beispiel. Ein Array mit x Elementen wollte ich gerne haben um es irgendwo reinzustecken:

Delphi-Quellcode:
function gibArray<T>(const elementCount: Integer): TArray<T>;
begin
   SetLength(Result, elementCount);
end;
Meine Frage war einfach nur, ob es so etwas schon gibt.

Auf jeden Fall vielen Dank an alle beteiligten! :-)

Du wirst ja irgendwas mit dem Ergebnis dieser Methode machen wollen, gell?
Zum Beispiel es einer Variable vom Typ TArray<T> zuweisen? Warum also nicht gleich
Delphi-Quellcode:
SetLength(meinArray, 5)
aufrufen?
Klar, das eine ist eine Funktion, die dir ein Array einer bestimmten Länge zurückliefert, was du rein theoretisch direkt an eine andere Methode übergeben kannst
(wobei ich hierbei den Nutzen davon bezweifeln möchte, ein Array mit x Einträgen, die aber nicht befüllt sind, zu übergeben).
Und das andere eine Methode mit einem var Parameter, der die Größe eines zuvor deklarierten dynamischen Arrays setzt.

Darum die konkrete Frage, wozu du so etwas haben möchtest.

Wie bereits gesagt, ich bezweifel den praktischen Nutzen, nur um es woanders hin übergeben zu können, wenn die Elemente ja alle "leer" (
Delphi-Quellcode:
Default(T)
) sind.

Kannst du ein praktisches Beispiel benennen, wo man ein dynamisches Array mit einer bestimmten Größe aber leeren Einträgen irgendwo by Value (also nicht als var, denn das geht ja nicht mit einem Result einer Funktion) übergeben sollte?

P.S.
Bei diesem Code kräuseln sich mit die Fußnägel hoch:
Delphi-Quellcode:
var
  myBooleanList: IList<Boolean>;
begin
  myBooleanList := TCollections.CreateList<Boolean>(
    TArray<Boolean>.Create(False, False, False, False, False)
   );
end;
Besser:
Delphi-Quellcode:
var
  myBooleanList: IList<Boolean>;
begin
  myBooleanList := TCollections.CreateList<Boolean>([False, False, False, False, False]);
end;

Der schöne Günther 26. Feb 2014 12:24

AW: TArray - Alternative zu SetLength(..) ?
 
Ob man etwas wirklich so machen "sollte" - Darüber werden wir uns im Endeffekt doch wieder streiten.

Ganz konkretes Beispiel: Ich möchte eine
Delphi-Quellcode:
Spring.Collections.IList<TIrgendeinTyp>
haben.

Bei
Delphi-Quellcode:
TCollections.CreateList<>(const values: Array of TIrgendeinTyp)
kann ich ein Array mit x Elementen angeben und meine Liste beinhaltet direkt diese Elemente.

Hier sind die meisten schon ausgestiegen, das sei ja totaler Quatsch und überhaupt.
Vielleicht ist bei meinen Pillen etwas durcheinander gekommen, aber ich finde, das entfernt sich zu weit von der eigentlichen Frage und tut eigentlich auch überhaupt nichts zur Sache.


Ja, ich kann einfach ein Array nehmen, SetLength() darauf machen und dieses Array jetzt da hineinstecken. Ich kann auch x mal Add() auf meiner Liste machen. Ich wollte mir einfach nur die Array-Variable bzw. die Zähl-Variable für das "x mal" sparen.

Also einfach sagen
Delphi-Quellcode:
CreateList<TIrgendeinTyp>( TArray.createArray<TIrgendeinTyp>(35) );
.

Und das schmeckt sicher jedem anders.

Mavarik 26. Feb 2014 12:32

AW: TArray - Alternative zu SetLength(..) ?
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1249709)
Also einfach sagen
Delphi-Quellcode:
CreateList<TIrgendeinTyp>( TArray.createArray<TIrgendeinTyp>(35) );
.

Ja aber wofür? Das hat doch echt NULL nutzen..

Der schöne Günther 26. Feb 2014 12:36

AW: TArray - Alternative zu SetLength(..) ?
 
Ich komme wirklich nicht hinterher :?
Woran erkennst du das? Du kannst doch nicht riechen, wofür die Liste gut ist oder was ich damit mache.

Oder etwa doch? :shock:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:59 Uhr.
Seite 2 von 3     12 3      

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