Thema: Delphi Array's in Klassen

Einzelnen Beitrag anzeigen

Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#1

Array's in Klassen

  Alt 15. Mär 2006, 17:25
Hi Ich habe da ein kleines Problem

Ich brauche die Möglichkeit ein Dynamisches Array als Parameter einer Function zu übergeben.

Das geht ja bekanntlich nicht.

Also dachte ich mir bastle ich ne Klasse die das darstellt. Gesagt getan.

Delphi-Quellcode:
Type
  TPencildata = Array[0..8] Of Boolean; // Bleibt Konstant dan mus es nicht auch noch zu einer Klasse werden !!

  Tsinglefield = Record
    Value: byte; // Die Zahl im Feld
    Fixed: Boolean; // Das Feld beinhaltet eine Nicht Löschbare Zahl !!
    Owner: byte; // Die zugehörigtkeit , zu den 9 er Gruppen
    Marked: Boolean; // Wenn True dann ist dieses Feld Entweder belegt oder won der Grad behandelten Routine als belegt gemerkt.
    Pencils: TPencildata; // Die Pencil Daten
  End;

  TNxNField = Class
  private
    Field: Array Of Array Of Tsinglefield;
    Function getvalue(x, y: integer): Byte;
    Procedure Setvalue(x, y: integer; z: Byte);
    Function getFixed(x, y: integer): Boolean;
    Procedure SetFixed(x, y: integer; z: Boolean);
    Function getOwner(x, y: integer): Byte;
    Procedure Setowner(x, y: integer; z: Byte);
    Function getMarked(x, y: integer): Boolean;
    Procedure SetMarked(x, y: integer; z: Boolean);
    Function getPencils(x, y, z: integer): Boolean;
    Procedure SetPencils(x, y, z: integer; Value: Boolean);
    Function GetPencilsdata(x, y: integer): TPencildata;
    Function getnumbercount: byte;
  public
    Constructor Create(n: Byte);
    Destructor destroy; override;
    Property Value[x, y: integer]: Byte read Getvalue write setvalue;
    Property Fixed[x, y: integer]: Boolean read GetFixed write setFixed;
    Property Owner[x, y: integer]: Byte read GetOwner write setOwner;
    Property Marked[x, y: integer]: Boolean read GetMArked write setMarked;
    Property Pencils[x, y, z: integer]: Boolean read GetPencils write setPencils;
    Property Pencildata[x, y: integer]: TPencildata read GetPencilsdata; // write setPencils;
    Property Numbercount: Byte read Getnumbercount;
  End;
Diese Klasse tut wunderbar und nur für neugierige hier noch der Constructor.

Delphi-Quellcode:
Constructor Tnxnfield.Create(n: Byte);
Begin
  Inherited create;
  Setlength(Field, n, n);
End;

Destructor Tnxnfield.destroy;
Begin
  Setlength(Field, 0, 0);
  Inherited destroy;
End;
Das Lustige ist nur das ein Array normalerweise mit

Delphi-Quellcode:
Type Bla = Array of array of Boolean;

..
Var bl:Bla;

Begin
..
bl[x,y]:=true;
..
end;
Angesprochen werden kann.

Bei meiner Klassen version geht das nicht.

Da geht das nur mit.
Delphi-Quellcode:
..
var Value:TNxNField;
begin
..
Value.Value[x, y] = 0;
// Viel schöner wäre doch
// Value[x, y].Value = 0;

..
end;
Weis jemand wie ich die Klasse Verändern mus das ich es so Programmieren kann wie ich das bisher gewöhnt bin.

Oder geht es gar nicht anders ?
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat