Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Array : Record (https://www.delphipraxis.net/158442-array-record.html)

Dunkelbunt27 17. Feb 2011 18:19

Array : Record
 
Hallo Delphi-PRAXIS,

ich brauche ein Array vom Typ Record, ich weiß aber nicht wie ich es richtig schrieben soll...
Am Ende möchte ich mit folgendem darauf zugreifen können:
Bsp:
Code:
Array [spalte,Zeile].zeichen :=‘A‘;
Array [spalte,zeile].attribut = eigenschaft;
Das heißt ich brauche also einen Record mit
Code:
Zeichen:char;
Attribut:byte
Probiert habe ich es mit:
Delphi-Quellcode:
type
TBuchstabe = record
    Zeichen    :char;
    Attribut   :byte;
end;
...
var
  buchstabe      : array of TBuchstabe;
...
  SetLength(buchstabe,zeile,spalte);
  buchstabe[1,1].zeichen := 'A';
  buchstabe[1,1].attribut:= eigenschaft;
Das ist von der Syntax her leider nicht wirklich richtig...

Ich hoffe jemand kennt sich etwas besser mit Arrays aus und kann mir helfen...

FG Dunkelbunt

SirThornberry 17. Feb 2011 18:21

AW: Array : Record
 
Dein Problem ist das du ein eindimensionales Array hast und es ansprichst als hätte es mehrere dimensionen. Wenn du ein Array von Integern hast greifst du ja auch nicht mit ArrayVariable[zeile][spalte] drauf zu.

WM_CLOSE 17. Feb 2011 18:24

AW: Array : Record
 
Delphi-Quellcode:
var
  i:Integer
 a:array of array of TRecord;
begin
  SetLength(a, 10);
  for i:=Low(a) to High(a) do
  begin
    SetLength(a[i], 42);
  end;
end;

Dunkelbunt27 17. Feb 2011 18:27

AW: Array : Record
 
Hallo, :thumb:
Delphi-Quellcode:
buchstabe      : array of array of TBuchstabe;
:stupid:

Das war der Fehler...
Ich bin mir grad nicht ganz sicher wie ich das mit der Zeilenbelegung zur Ausgabe mache... aber soweit danke!
:gruebel:

FG Dunkelbunt

Bummi 17. Feb 2011 21:46

AW: Array : Record
 
wobei bei "rechteckigen" Arrays auch
Delphi-Quellcode:
SetLength(a, 10, 42)
geht.

sx2008 18. Feb 2011 00:00

AW: Array : Record
 
Sieht ganz danach als ob das ein Screenbuffer ergeben soll.
Dann würde ich doch ein Array fester Grösse anstelle von dyn. Arrays vorschlagen.
Das Array würde man mit der max. Grösse deklarieren und falls zur Laufzeit ein etwas
kleinerer Buffer benötigt wird den überflüssigen Speicherplatz einfach ignorieren.
So programmiert es sich leichter und schneller als mit dyn. Arrays mit 2 Dimensionen.
Delphi-Quellcode:
type
TBuchstabe = record
    Zeichen :char;
    Attribut :byte;
end;

TScreenBuffer = array[0..79, 0..199] of TBuchstabe;
...

var
  screenbuffer : TScreenBuffer;
  ScreenbufWidth, ScreenbufHeight : integer;
Wenn man jetzt noch etwas weiterdenkt, dann fällt auf, dass man jetzt 3 Variablen hat die zusammengehören.
Das würde man in eine Klasse abbilden, zu mal es ja viele Funktion gibt, die mit dem Screenbuffer arbeiten sollen.


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