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-Eigenschaft (https://www.delphipraxis.net/53716-array-eigenschaft.html)

luckyluke80 21. Sep 2005 20:05


Array-Eigenschaft
 
Ich habe demnächst eine Delphi Klausur und habe schon alle möglichen Hilfen gewälzt. Ich bin mir noch etwas unsicher in folgendem Bereich.

Es soll eine Klasse entworfen werden die über die Eigenschaft "meineFelder" ein Array (array[1..100]of Char veröffentlicht. Es soll lediglich lesender Zugriff auf diese Eigenschaft gestattet werden.

mein erster Ansatz war const --> nicht so ganz richtig (Nur bei Methoden wird lesender Zugriff gewährt, aber ich glaube es geht hier um Klasseneigenschaften also properties)

mein zweiter Ansatz war Schutzklassen --> klar die werde ich auch brauchen, aber selbst der strengste Schutz (private) gewährt noch eine Veränderung der Eigenschaft

Dadurch bin ich zu property gekommen. Dann bin ich in der Hilfe auf Array Eigenschaften gestossen. Leider lässt sich hier nicht so einfach ein statisches Array definieren. Der Compiler meckert rum, wenn man das nach dem altbewährtem Schema array[1..100] of ... versucht.

Und aus der Hilfe werde ich auch nicht ganz schlau.
Ich hab mal so angefangen, leider komm ich nicht weiter und ich glaube es ist auch nicht so ganz richtig.

Delphi-Quellcode:
type
  TForm1 = class(TForm)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

type TLese = class
     private
      FmeineFelder :array[1..100] of char;
      function getFelder(Index :integer):char;
     public
      property meineFelder[Index:integer]:char read getFelder;
     end;


var
  Form1: TForm1;

implementation

{$R *.dfm}

function TLese.getFelder(Index: integer):char;
begin
   Result := FmeineFelder[Char];
end;


end.
Danke schonmal im Voraus für Eure Mühen

SirThornberry 21. Sep 2005 20:09

Re: Array-Eigenschaft
 
schon fast vollständig
Delphi-Quellcode:
function TLese.getFelder(Index: integer):char;
begin
   Result := FmeineFelder[Index];
end;
du bekommst bei der Funktion ja Index übergeben also musst du auch diesen Index zurück geben.

sECuRE 21. Sep 2005 20:10

Re: Array-Eigenschaft
 
Hi,

ich denke der Fehler liegt bei der Deklination. Du musst für dein Array einen eigenen Typ definieren:
Delphi-Quellcode:
type
  MyArray = array[0..100] of char;

// ...
property Eigenschaft:MyArray read GetIndex;
cu

SirThornberry 21. Sep 2005 20:13

Re: Array-Eigenschaft
 
@sECuRE: So ist es vollkommen falsch weil ja dein property bereits das ganze array ist und du somit bei der GetMethode das ganze array zurück liefern müsstest. Der Fragesteller hat es an sich schon richtig, nur seine GetMethode hatte eben einen kleinen Fehler.

luckyluke80 21. Sep 2005 20:17

Re: Array-Eigenschaft
 
sehr genial, es funktioniert

Danke @all

sECuRE 21. Sep 2005 20:20

Re: Array-Eigenschaft
 
Hi,

@SirThornberry: Stimmt, hab's eben noch mal ausprobiert, klappt tatsächlich so nicht.

@luckyluke: Sorry für die Verwirrung ;).

cu


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