Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi drei dimensionales dynamisches Array oder Record verwenden (https://www.delphipraxis.net/42769-drei-dimensionales-dynamisches-array-oder-record-verwenden.html)

eassy 23. Mär 2005 15:59


drei dimensionales dynamisches Array oder Record verwenden
 
hallo zusammen,

ich stehe mal wieder vor einem problem:

zur zeit habe ich mein programm mit einem drei dimensionalen dynamischen array aufgebaut.
diese möchte ich aber abändern, da das sehr unübersichtlich ist und dauernd messwerte
dazu kommen.

mein array sieht folgendermaßen aus
Delphi-Quellcode:
werte: array of array of array of string;
Aufbau des array:
[0,0,0] = wertname1
[0,0,1] = wertname1
[0,1,0] = Datum + Uhrzeit (z.b. 23.03.2005 16:55:39)
[0,1,1] = wert (z.b 2)
[0,2,0] = Datum + Uhrzeit (z.b. 23.03.2005 16:56:39)
[0,1,1] = wert (z.b 2,5)
usw.
[1,0,0] = wertname2
[1,0,1] = wertname2
[1,1,0] = Datum + Uhrzeit (z.b. 23.03.2005 16:55:39)
[1,1,1] = wert (z.b. 44,58)
[1,2,0] = Datum + Uhrzeit (z.b. 23.03.2005 16:56:39)
[1,2,1] = wert (z.b. 40,99)

jetzt meine frage, kann man das auch irgendwie als record aufbauen?
wäre das sinnvoll oder hat vielleicht jemand eine anderen idee?

ich bin über jede hilfe dankbar.

gruß
eassy

sniper_w 23. Mär 2005 16:08

Re: drei dimensionales dynamisches Array oder Record verwend
 
Ganz einfach:
Delphi-Quellcode:
type

TMyRecord = record
// alles was du brauchst, z.b
  Name : string;
  alter : integer;
  HatKinder : Boolean;
// alles was du brauchst
end;

TMyArray = array of TMyRecord;

var MyArray : TMyArray;

..
begin
 SetLength(MyArray, 10); // von 0 bis 9
 MyArray[1].Name := 'smith';
 MyArray[1].Alter := 33;
 MyArray[1].HatKinter := False;

end;

eassy 23. Mär 2005 16:13

Re: drei dimensionales dynamisches Array oder Record verwend
 
hallo,

wenn ich dich richtig verstehe kann ich dann
auch folgendes machen:

Delphi-Quellcode:
TWerte = record
  DatumUhrzeit: TDateTime;
  Wert: Double;
end;

TDaten = record
  Name: String;
  Zeitpunkt: array of TWerte;
end;


TMyArray = array of TDaten;

var MyArray : TMyArray;

..
begin
SetLength(MyArray, 10); // von 0 bis 9 

end;
Welcher Vorteil hat ein Record bezüglich einem dynamischen Array?
Braucht ein Record weniger Speicherplatz?

sniper_w 23. Mär 2005 17:00

Re: drei dimensionales dynamisches Array oder Record verwend
 
Zitat:

wenn ich dich richtig verstehe kann ich dann
auch folgendes machen:
Genau. :thumb:

Zitat:

Welcher Vorteil hat ein Record bezüglich einem dynamischen Array?
"Falsche" Frage. Eine Array kann von irgend einem Datatyp sein, d.h., auch könnte es eine array of TMyRecord geben.

Zitat:

Braucht ein Record weniger Speicherplatz?
Noch eine "Falsche" Frage.
Eine Record braucht sowiel Platz wie die Summe von einzelner Felder in Record.
D.H.
Delphi-Quellcode:
TMYr = record
a:char;
i:integer;
end;
Sizeof(tmyr) = 5; --> SizeOf(Integer)+SizeOf(Char);

Eine Array braucht--> Typ * Length

himitsu 24. Mär 2005 12:04

Re: drei dimensionales dynamisches Array oder Record verwend
 
Zitat:

Welcher Vorteil hat ein Record bezüglich einem dynamischen Array?
Und in 'nen Record kann man auch verschiedene Typen aufnehmen, außerdem ist der manchmal auch übersichtlicher

Delphi-Quellcode:
Var A: Array[0..1] of Integer;

Var B: Record
    Anzahl, Position: Integer;
  End;

// Also, bei

A[0] := 10;
A[1] := 3;

// weiß keiner was [0] und [1] ist, aber wenn man dagegen

B.Anzahl := 10;
B.Position := 3;

// sieht...
Man kann also nicht sagen, dass eines der Beiden besser ist ... es kommt halt immer auf die Verwendung an.

Es wird ja wohl(hoffentlich) Keiner, in dem folgendem Beispiel, den Record verwenden?
Delphi-Quellcode:
Var A: Array[1..1000] of Integer;

Var B: Record
    Wert1: Integer;
    Wert2: Integer;
    Wert3: Integer;
    ...
    Wert999: Integer;
    Wert1000: Integer;
  End;

PS: Eine Array braucht--> SizeOf(Typ) * Length + 4 der Zeiger auf den Speicherplatz der Arraydaten ^^


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