Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Array definition (https://www.delphipraxis.net/81271-array-definition.html)

bundy 23. Nov 2006 19:10


Array definition
 
hi @ all DP´ler

Wie kann ich einen array vordefinieren ?

Ich hab mal folgendes erstellt.
Delphi-Quellcode:
  type
  Workingtable = class(Tobject)
    TechnikerAnz : integer;
    MaxMorning  : integer;
    MaxAfternoon : integer;
    MaxNight    : integer;
    EventStore : array of array of string;

   private



  end;
Wie kann ich jetzt den Array EventStore so definieren, das er die Länge von der TechnikerAnz hat.
Weiters möchte ich das die Integerfelder einen Startwert haben ca so.
Delphi-Quellcode:
 TechnikerAnz : integer = 4;


lg
Bundy

Cöster 23. Nov 2006 19:28

Re: Array definition
 
Startwerte können im Konstruktor zugewiesen werden.

Ich würde die Eigenschaften als private-Attribute anlegen und über properties darauf zugreifen lassen. Der Schreib-Zugriff sollte dann bei TechnikerAnz nicht direkt erfolgen, sondern durch eine Set-Prozedur. In der kannst du dann nämlich gleichzeitig die Länge des Arrays ändern.

Corpsman 23. Nov 2006 20:42

Re: Array definition
 
dir ist Klar das du ein 2 Dim Array definiert hast ?
Delphi-Quellcode:
Constructor Workingtable.create;
begin
TechnikerAnz := 4;
//setlength(EventStore ,TechnikerAnz ); // Für ein 1 dim array
setlength(EventStore ,TechnikerAnz,TechnikerAnz ); // Für ein 2 dim array
end;

bundy 23. Nov 2006 21:01

Re: Array definition
 
danke für eure Tips !

Soll auch ein 2Dim Array werden

Delphi-Quellcode:
constructor TWorkingtable.Create;
begin
    TechnikerAnz := 4;
    MaxMorning := 4;
    MaxAfternoon := 4;
    MaxNight := 4;
    SetLength(MorningStore,TechnikerAnz,MaxMorning+MaxAfternoon+MaxNight);

end;
aber jetzt hab ich noch ne frage, der Wert TechnikerAnz, wird zur laufzeit geändert, sowie die andern Integer Werte, wo kann ich dann die neue Array definition zuweisen.

lg
Bundy

mkinzler 23. Nov 2006 21:04

Re: Array definition
 
Man kann die Größe eines dyn. Arrays jederzeit mit setLength verändern (sowohl vergrößern wie auch verkleinern.)

bundy 23. Nov 2006 21:20

Re: Array definition
 
ah danke :thumb:

bundy 24. Nov 2006 10:49

Re: Array definition
 
HI back again.


ich hab nun folgendens

Delphi-Quellcode:

  type
  TWorkingtable = class(Tobject)
    TechnikerAnz : integer;
    MaxMorning  : integer;
    MaxAfternoon : integer;
    MaxNight    : integer;

    TechnikerStore: array of DayStore; //<<<------------ 

    public
     constructor Create;
   private



  end;
wo muss ich nun den Array DayStore definieren der solle ein DayStore: Array of String sein.

lg
Bundy

mkinzler 24. Nov 2006 11:08

Re: Array definition
 
Bevor du ihn verwendest.

bundy 24. Nov 2006 11:11

Re: Array definition
 
Delphi-Quellcode:
 type
  TWorkingtable = class(Tobject)
    TechnikerAnz : integer;
    MaxMorning  : integer;
    MaxAfternoon : integer;
    MaxNight    : integer;
    DayStore    : Array of String  //<<--------------- Wenn ich ihn hier def. kann ich eine Zeile darunter nicht darauf zugreifen
    TechnikerStore: array of DayStore; //<<<------------ 

    public
     constructor Create;
   private



  end;

SirThornberry 24. Nov 2006 11:15

Re: Array definition
 
ein Array of kann auch nur von einem Typ sein. Du versuchst ein Array von einem Variablennamen zu bauen.
Es gibt also:
Delphi-Quellcode:
Array of String;
Array of Integer;
Array of Byte;
Array of BeliebigerTyp;
aber es gibt nicht:
Delphi-Quellcode:
meineVariable: Integer;
Array of meineVariable;

bundy 24. Nov 2006 11:18

Re: Array definition
 
das würde bedeuten ich müsste das so machen


Delphi-Quellcode:

type
Daystore = array of string
end;

type
  TWorkingtable = class
  Test:Array of DayStore;

  public
  constructor Create ;

  end;

mkinzler 24. Nov 2006 12:05

Re: Array definition
 
Eher so:

Delphi-Quellcode:
type
  Daystore = array of string;

  TWorkingtable = class
       Test:Array of DayStore;

    public
       constructor Create ;

  end;

bundy 24. Nov 2006 13:42

Re: Array definition
 
wieso kann ich dann im
Delphi-Quellcode:
constructor TWorkingtable.Create;
begin
 SetLength(DayStore,2); //<-----   
end;
nicht auf DayStore zugreifen, es steht mir bei setlength nich zu Verfügung.


lg
Bundy

mkinzler 24. Nov 2006 13:52

Re: Array definition
 
Weil der Member Test heißt ;-)

Cöster 24. Nov 2006 13:54

Re: Array definition
 
Mit SetLength nimmt man keine Änderung an einem Typen vor (Typen sind nach der Definition nicht mehr umdefinierbar), sondern an einer Variablen.

bundy 24. Nov 2006 14:59

Re: Array definition
 
ahhhh jetzt hab ich es geschnallt :thumb:

das Sieht dann so aus

Delphi-Quellcode:
type
  MyStore = Array of String;

  TWorkingtable = class
  DayStore : MyStore;
  Test:Array of DayStore;

  public
  constructor Create ;

  end;

implementation





constructor TWorkingtable.Create;
begin
 SetLength(DayStore,2);
end;

Cöster 24. Nov 2006 16:09

Re: Array definition
 
Nenene. Nicht array of <Variablenname> sondern array of <Typbezeichner>

bundy 24. Nov 2006 16:42

Re: Array definition
 
könntest du mir mit einen Code Sample aushelfen :wall:

Cöster 24. Nov 2006 17:21

Re: Array definition
 
Delphi-Quellcode:
type
  TIntArray = array of Integer;

  TMyClass = class
  private
    procedure SetSpaltenAnzahl(Anz: Integer);
    FTestArray: array of TIntArray; // 2D-Array. Entspricht array of array of Integer
    FSpaltenAnzahl: Integer;
    FZeilenAnzahl: Integer;
  public
    constructor Create;
    property SpaltenAnzahl: Integer read FSpaltenAnzahl write SetSpaltenAnzahl;
  end;

implementation

constructor TMyClass.Create;
begin
  inherited Create;
  FSpaltenAnzahl := 5;
  FZeilenAnzahl := 2;
  SetLength(FTestArray, 5, 2);
end;

procedure TMyClass.SetSpaltenAnzahl(Anz: Integer);
begin
  FSpaltenAnzahl := Anz;
  SetLength(FTestArray, Anz, FZeilenAnzahl);
end;

bundy 24. Nov 2006 17:23

Re: Array definition
 
danke dir :thumb:


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