Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   dynamisches Array in einem Record? (https://www.delphipraxis.net/62363-dynamisches-array-einem-record.html)

em-sigma 3. Feb 2006 13:35


dynamisches Array in einem Record?
 
Hallo zusammen,

ich habe ein kleines Problem mit variablen Arraygrößen.

Zunächst einmal habe ich ein statisches Array mit 100 Elementen.

Z.B.
Delphi-Quellcode:
      MyTable:array[1..100] of MyElement;
Jetzt kommt das Problem:
MyElement ist ein Record, der ein Array enthalten soll, bei dem ich nicht vorher weiß, wie groß es werden soll, also etwa

Delphi-Quellcode:
     
MyElement = record
    n:Integer;   // Größe des folgenden Arrays
    MyArray:array[1..n] of Extended;
end;
Das Array im Record enthält mindestens 2 Werte und maximal 256 Werte. Der Wert n soll während der Laufzeit geändert werden können, also größer oder kleiner werden (Minimum=2; Maximum=256).

Geht das? Ich habe dazu leider gar keine Idee. Kann mir bitte jemand helfen. Ich bin auch für andere Lösungen dankbar, sie müssen nur die beschriebenen Anforderungen erfüllen.

Vielen Dank,

em-sigma

Grishnak 3. Feb 2006 13:59

Re: dynamisches Array in einem Record?
 
Welche Delphi-Version benutzt du? Klappen bei dir schon Dynamische Arrays:
Delphi-Quellcode:
var
  MyTable: array of MyElement;
[...]
  SetLength(MyTable, 32); /* --> MyTable[0] bis MyTable[31]
Ansonsten das Ganze über Listen realisieren.

SubData 3. Feb 2006 14:01

Re: dynamisches Array in einem Record?
 
Delphi-Quellcode:
MyElement = record
    n:Integer;   // Größe des folgenden Arrays
    MyArray:array of Extended;
end;



var
 x : MyElement;
begin

SetLength(x.MyArray, x.n);

end;
Das müsste funktionieren :)

em-sigma 3. Feb 2006 14:28

Re: dynamisches Array in einem Record?
 
@Grishnak:
das übergeordnete Array war nicht das Problem, sondern das Array innerhalb des Records.

@SubData:
Deine Lösung sieht interessant aus.
Aber kann ich damit jedem Element (also jedem Record) des übergeordneten Arrays ein Array geben, das eine andere Größe hat?
Also z. B. so:

Delphi-Quellcode:
type
   MyElement = record
       n:Integer;
       MyArray:array[1..n] of Extended;
   end;

var
   MyTable:array[1..1000] of MyElement;

[...]
SetLength(MyTable[78].MyArray,MyTable[78].n); // Das funktioniert???
SetLength(MyTable[79].MyArray,MyTable[79].n); // Hab ich dadurch zwei verschieden große Arrays?
Ich werde das mal ausprobieren.

Vielen Dank,

em-sigma

SubData 3. Feb 2006 14:29

Re: dynamisches Array in einem Record?
 
Jap kannst du ^^

em-sigma 8. Feb 2006 10:58

Re: dynamisches Array in einem Record?
 
Danke für die tolle Hilfe.

Es hat wunderbar geklappt.

Vielen Dank, em-sigma


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