AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

property für zweidimensionale Arrays

Ein Thema von mytar · begonnen am 5. Jun 2004 · letzter Beitrag vom 7. Jun 2004
Antwort Antwort
mytar

Registriert seit: 30. Mai 2004
Ort: Zermatt
411 Beiträge
 
Delphi 6 Enterprise
 
#1

property für zweidimensionale Arrays

  Alt 5. Jun 2004, 14:14
Ich hab ein Problem bei den propertys.

und zwar möchte ich mit property Matrix folgendes machen:
-Matrix soll die gesamte Matrix zurueckgeben
-Matrix[i, j] soll nur das Element von [i, j] zurückgeben

Ich weiss wie propertys ohne Indizes funktionieren,
aber da es sich hier um ein 2D-Array handelt, nützt mir das nicht viel!
Deshalb benötigt ich dringend eure Hilfe.

mytar
Francis Obikwelu
  Mit Zitat antworten Zitat
rsilo

Registriert seit: 12. Feb 2004
43 Beiträge
 
#2

Re: property für zweidimensionale Arrays

  Alt 5. Jun 2004, 16:40
Vom Ansatz her müsste das genau gleich sein wie die

property Items.

Dort kann man auch einen Index angeben, dann erhält man das ListItem bzw. den String,

ohne Index erhält man TListItems bzw. TStrings


Die Property kommt in vielen Komponenten wie Listbox und ListView enthalten ist.

Lieg ich da richtig?


grüße
rsilo
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#3

Re: property für zweidimensionale Arrays

  Alt 5. Jun 2004, 16:46
Hallo,
der Ansatz mit Items ist schon nicht schlecht.
Bei einer TListBox ist die property Itemsvom Type TStrings.
Normalerweise wird auf die einzelnen Elemente wie folgt zugegriffem
Items.Strings[Index] Jetzt kann man aber eine property zu einer default property machen
Dann reicht folgendes für den Zugriff auf ein Element
Items[Index] Man beachte im folgenden Source das Wort default und das es nach dem Semikolon kommt !!!
Delphi-Quellcode:
  TStrings = class(TPersistent)
  ...
  public
  ...
    property Strings[Index: Integer]: string read Get write Put; default;
  ...
  end;
I come from outer space to save the human race
  Mit Zitat antworten Zitat
mytar

Registriert seit: 30. Mai 2004
Ort: Zermatt
411 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: property für zweidimensionale Arrays

  Alt 5. Jun 2004, 16:50
Wie ist dass dan aber zu vestehen?

Bei Items erhält man TListItems und bei Items[Index] bekommt man das ListItem mit dem entsprechenden Index zurück.

Eine überladenen Prozedur geht bei propertys ja nicht, als kann man overload vergessen.

Wie würde man das dann machen?

mytar
Francis Obikwelu
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#5

Re: property für zweidimensionale Arrays

  Alt 5. Jun 2004, 16:53
Genau so wie ich es oben beschrieben habe.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
mytar

Registriert seit: 30. Mai 2004
Ort: Zermatt
411 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: property für zweidimensionale Arrays

  Alt 6. Jun 2004, 16:00
ok, das was du bereits gesagt hast hab ich nun verstanden,

d.h. aber ich muss einen Klasse für mein 2D-Array schreiben, oder?

und dass Array selbst muss dann in dieser Klasse als Private-Attribut enthalten sein, nicht?

ich hab mir da folgendes gedacht:



Delphi-Quellcode:
type
  TMatrix = Array of Array of Real;

  T2DArrayClass = class(TObject)
   private
    FMatrix: TMatrix;
    function GetElement(i, j: Integer): Real;
    procedure SetElement(i, j: Integer; const Value: Real);
   public
    property Elements[i, j: Integer]: Real read GetElement write SetElement; default;
   end;

  TFatherClass = class(TObject)
   private
    function GetMatrix: T2DArrayClass;
    procedure SetMatrix(const Value: T2DArrayClass);
   public
    property Matrix: T2DArrayClass read GetMatrix write SetMatrix;
   end;
Irgendwas stimmt an meiner Überlegung noch nicht (ich hab das ganze nicht nicht implementiert)

kann mir jemand helfen?

mytar
Francis Obikwelu
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#7

Re: property für zweidimensionale Arrays

  Alt 7. Jun 2004, 20:06
Hallo,
da ich Deinen Ansatz so nie verwenden würde habe ich Dir mal ein Beispiel
gebastelt. D.h. so würde ich das Problem lösen. Dyn. Array's würde ich nur mir einer
Pistole am Kopf verwenden.

Delphi-Quellcode:
  TArrayElement = class(TObject)
  private
    FDouble: Double;
  public
    property Value : Double read FDouble write FDouble;
  end;

  TArrayElements = class(TObject)
  private
    FList : TList;
    FXCount : Integer;
    FYCount : Integer;
    function GetCount: Integer;
    function GetItem(X, Y: Integer): TArrayElement;
    procedure AddNullElement;
  public
    constructor Create;
    destructor Destroy; override;
    procedure Clear;
    procedure Size(XSize, YSize : Integer);
    property Element[X,Y : Integer] : TArrayElement read GetItem; default;
    property XCount : Integer read FXCount;
    property YCount : Integer read FYCount;
  end;
TArrayElement repräsentiert ein Element das Array's.
TArrayElements verwaltet die einzelnen Elemente.
Im Beipsiel findest Du den hier fehlenden Code.

P.S. Real gibt es nur noch aus kompatibilitäts Gründen. Verwende besser Double.
Angehängte Dateien
Dateityp: zip zip_529.zip (234,4 KB, 9x aufgerufen)
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz