Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - statischer, konstanter array deklarieren


blume283 - Di 12.09.06 12:54
Titel: statischer, konstanter array deklarieren
hallo!

ich habe eine frage, auf die ich im forum noch keine antwort gefunden habe, und zwar:

sagen wir ich habe folgende konstante:


Delphi-Quelltext
1:
2:
const anzahl_hallo = 2;
const wert_hallo : Array[0..anzahl_hallo-1of Byte = (2,3);


nun möchte ich einen weiteren, konstanten array deklarieren (sagen wir mal groesse_hallo), der eben genau die länge von wert_hallo hat, also:

groesse_hallo[0] hat 2 einträge,
groesse_hallo[1] hat 3 einträge .. etc..


Delphi-Quelltext
1:
const groesse_hallo : Array[0..anzahl_hallo-1,  { hier nun im ersten argument länge 2, im 2. argument länge 3} ]  of Byte = ( (10,15) , (25,36,49) );                    


und ich wollte ihm natürlich direkt werte zuweisen (da konstant), ist so etwas möglich?

( die alternative wäre ja , einfach groesse_hallo[0] und groesse_hallo[1] gleichlang zu machen , nämlich das maximum von 2 und 3 also > 3, aber das muss doch eleganter gehen!?!)

dankeschön!


Allesquarks - Di 12.09.06 13:06

Das ist aber dann ein array eines arrays nich:

groeße_hallo:array of array [0..anzahl-1] of integer; hierbei geht dann aber wahrscheinlich nicht, dass anzahl für jede Zeile unterschiedlich ist. Das oben dürfte ein rechteckiges Feld deklarieren. Entweder du nimmst einfach den maximalwert von anzahl, dann ist das Feld zwar zu groß (Speicherverschwendung) oder du musst das dir erst vorher bauen. Dann würde ich dir aber dynamische arrays empfehlen.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
type Tgroßfeld = array of array of integer;

var großfeld:TGroßfeld

initialization

For i:=0 to length(großfeld)-1 
do begin
   setlength(großfeld[i],i+1);
end;


pennyWISE - Mo 04.12.06 19:21

hallo! ich weiß nicht genau ob es wirklich hier reingehört...aber egal^^
ich würde gern ein konstantes Feld benutzen...da ich bisher nicht wusste, wie, hab ich erstmal ein variables gemacht und die werte in einer FormCreate-Prozedur an das array übergeben... quelltext wie folgt:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var 
  farben: array[1..6of string[7];

procedure TForm1.FormCreate(Sender: TObject);
begin
 farben[1]:='blau';
 farben[2]:='gelb';
 farben[3]:='gruen';
 farben[4]:='lila';
 farben[5]:='rot';
 farben[6]:='tuerkis';
end;


so...da die farben immer gleich bleiben, soll das ganze also konstant werden... freue mich auf antworten!

-pennyWISE-


blume283 - Sa 17.02.07 00:13

hi pennywise,
das geht so:


Delphi-Quelltext
1:
const farben : Array[1..2of String = ('blau','gelb');                    


viele grüße

Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt