Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Property vom Typ array? (https://www.delphipraxis.net/54459-property-vom-typ-array.html)

Meneldur 4. Okt 2005 20:50


Property vom Typ array?
 
Hi,
ich versuche gerade eine Property für eine Objektklasse zu erstellen, deren Datentyp ein Array ist.
Es gelingt mir jedoch nicht, die Klasse zu deklarieren:

Delphi-Quellcode:
type
  TAtest=class(TObject)
  private
    function GetFeld(x: Integer): Double;
  protected
  public
  published
    property Feld[x:Integer]:Double read GetFeld; //hier tritt der Fehler auf
end;
In der markierten Zeile kommt die Fehlermeldung: "Published Property 'Feld' cannot be of type ARRAY". Aber man muss doch propertys deklarieren können, die ein Array beinhalten. Beim StringGrid z.B. sind die Cells doch auch n Array, auf das man von außen zugreifen kann. Kann mit jemand helfen? Ich verwende Delphi 7.

SirThornberry 4. Okt 2005 21:10

Re: Property vom Typ array?
 
Diese Meldung bedeutet das ein Property vom Typ eines Arrays nicht im Published Teil erlaubt ist!! Also einfach in den Public teil verschieben, im Published Teil bringt es dir eh nix da du das Property im Objectinspektor nicht siehst.

Hansa 4. Okt 2005 21:14

Re: Property vom Typ array?
 
Hi und Willkommen in der DP ! :-D

Bin mir nicht sicher, aber wenn ich mich nicht irre müßte es mit TStringList oder Abkömmling möglich sein, eine "Ellipsenschaltfläche" in den OI zu bringen, in der man dann Werte auswählen könnte. Muß es unbedingt ein Array sein, dann wie gesagt mit Public.

SirThornberry 4. Okt 2005 21:17

Re: Property vom Typ array?
 
@Hansa: Das liegt dann aber daran das es ein Object ist und kein Array-Property. In dem Falle wäre es allerdings auch möglich einfach das property ins public zu verschieben und einen ComponentEditor zu schreiben. Wenn du ein Object ins Published nimmst so müsstest du dafür ebenfalls einen Propertyeditor schreiben um das Property überhaupt ändern zu können.

Aenogym 4. Okt 2005 21:17

Re: Property vom Typ array?
 
noch eine Alternative wäre eine Collection ;)

aenogym

Hansa 4. Okt 2005 23:37

Re: Property vom Typ array?
 
@SirThornberry : wer eine Frage wie die hier stellt, für den müßte es machbar (zumindest in Reichweite) sein, einen "Property-Editor" zu schreiben.

Ich hasse übrigens solche hochtrabenden Wortschöpfungen. :mrgreen: Die schrecken nur ab. Was wird denn überhaupt gebraucht ? Lediglich eine Listbox zum Auswählen des Array-Wertes. Und da gibt es ein Klasse Delphi-Beispiel. Im Delphi-Verzeichnis irgendwo bei DEMOS. Weiß jetzt nicht genau, aber es war ein Ordner PropEdit und der komplette Source hatte ca. 300 Zeilen für alles, Deklarationen usw. Dieses Beispiel geht noch weit über das hier geforderte hinaus. Man kann damit einen Winkel mithilfe einer Trackbar vergrößern/verkleinern. Direkt in der IDE sichtbar !

Wer vor hat etwas tiefer in diese Materie einzusteigen, der muß sich das Ding unbedingt angucken und so lange dran rumpflücken, bis er weiß was da los ist. 8) Hexerei gibts in Delphi eben nicht.

runger 5. Okt 2005 05:38

Re: Property vom Typ array?
 
Hallo,

ich versteh dieses ganze Gelaber nicht. Er hat doch eine ganz klare Frage gestellt. Warum gebt ihr ihm keine ebenso klare Antwort.

Rainer

SirThornberry 5. Okt 2005 06:11

Re: Property vom Typ array?
 
Die klaare Antwort gab es doch, es ist NICHT möglich im published Teil so ein Property zu deklarieren. Und ebenso hab ich geschrieben das er es einfach ins Public verschieben soll.

Allerdings haben wir uns gedanken gemacht warum er das property unbedingt ins published machen wollte und deswegen dann auch die alternativen.

runger 5. Okt 2005 07:29

Re: Property vom Typ array?
 
Hallo Thornberry,

Zitat:

@SirThornberry : wer eine Frage wie die hier stellt, für den müßte es machbar (zumindest in Reichweite) sein, einen "Property-Editor" zu schreiben.
Mir ist es zum Beispiel nicht möglich, aber nicht weil ich das nicht kann, sondern weil mir die Units in D7 profesional nicht zugänglich sind.
Designeditors usw liegen nur als Quellcode vor und sind voll von Fehlern.
Also hab etwas Verständnis für die, die dir, einfach weil sie das Umfeld nicht haben, nicht folgen können.

Rainer

Hansa 5. Okt 2005 11:40

Re: Property vom Typ array?
 
Zitat:

Zitat von runger
..nicht weil ich das nicht kann, sondern weil mir die Units in D7 profesional nicht zugänglich sind.
Designeditors usw liegen nur als Quellcode vor und sind voll von Fehlern.
...

Hehe, was nicht haben und behaupten es sei voller Fehler. 8) Wie man leicht aus der Fragestellung am Anfang sehen kann, wollte er/sie das Array als published deklarieren -> OI. Da die Analogie zum Stringgrid erwähnt wurde : dort dind die Items Stringlisten. Daher mein Vorschlag, auch eine TStringlist zu verwenden anstatt eines Arrays. Dann könnte man es genau so machen wie beim Stringgrid. Und SirThornberry hat die Alternative gebracht, es eben ohne OI zu machen. Kapito ?

Tyrael Y. 5. Okt 2005 12:07

Re: Property vom Typ array?
 
Moin...

Delphi-Quellcode:
type
  TFieldArray = Array[Integer] of Double;
end;

type
  TAtest=class(TObject)
  private
    FField: TFieldArray;  
  protected
  public
  published
    property Feld: TFieldArray read FField write FField;
end;
oder

Delphi-Quellcode:
type
  TAtest=class(TObject)
  private
    FFieldArray: Array[Integer] of Double;
    function GetField(x: Integer): Double;
  protected
  public
  published
    property Feld: Double read GetField; //hier tritt der Fehler auf
end;

implementation

....

function TAtest.GetField(x: Integer):Double;
begin
 result := FFieldArray[x];
end;

Gruß
Tyrael

Khabarakh 5. Okt 2005 12:16

Re: Property vom Typ array?
 
Zitat:

Zitat von Tyrael Y.
Moin...

[...]

Was willst du uns damit sagen :gruebel: ? Dass beide Methoden nicht funktionieren :stupid: ?

Tyrael Y. 5. Okt 2005 12:27

Re: Property vom Typ array?
 
Zitat:

Zitat von Khabarakh
Zitat:

Zitat von Tyrael Y.
Moin...

[...]

Was willst du uns damit sagen :gruebel: ? Dass beide Methoden nicht funktionieren :stupid: ?


Wieso sollten sie nicht funktionieren?

...bei der ersten könntest du Recht haben, ahbe es nicht getestet..., aber wieso sollte die 2.Methode nicht funtionieren, sehe keinen Grund dagegen..


Gruß
T.

Khabarakh 5. Okt 2005 12:31

Re: Property vom Typ array?
 
Zur ersten: Wenn es so funktionieren würde, gäbe es diesen Thread nicht :wink: .
Zur zweiten: Weil eine Property keine Parameter haben kann. Und selbst wenn, hätte der OI wohl Probleme, das anzuzeigen.

Tyrael Y. 5. Okt 2005 13:22

Re: Property vom Typ array?
 
Wo siehst du ne Property mit nem Parameter? :shock:

edit:
sry jetzt gesehen, dann halt


Delphi-Quellcode:
type
  TAtest=class(TObject)
  private
    FIndex: Integer;
    FFieldArray: Array[Integer] of Double;
    function GetField(): Double;
  protected
  public
  published
    properyt FeldIndex: Integer read FIndex write FIndex;
    property Feld: Double read GetField; //hier tritt der Fehler auf
end;

implementation

....

function TAtest.GetField():Double;
begin
   if FIndex > -1 then
     result := FFieldArray[FIndex];
end;

Grishnak 5. Okt 2005 13:57

Re: Property vom Typ array?
 
@Tyrael: sowohl 'FeldIndex' als auch 'Feld' sind jetzt aber auch keine Array-Properties mehr! Dein Code ist zwar richtig, aber danach wurde überhaupt nicht gefragt!

Tyrael Y. 5. Okt 2005 14:08

Re: Property vom Typ array?
 
Sry, ich habe es so verstanden, daß er das Ergebnis daraus haben möchte und NICHT UNBEDINGT ein Array als published property benutzen möchte. Er möchte selbst grad das so benutzen, wie er es gepostet hat und fragt, ob es so möglich ist...
Antwort -> so nicht, aber zum selben Ergebnis kommst du halt so und so, wollte ich damit ausdrücken....

...sry, daß ich helfen wollte

tigerman33 5. Okt 2005 14:21

Re: Property vom Typ array?
 
[OT]In deiner Signatur ist ein "denkst" zu viel... :warn: [/OT]

Tyrael Y. 5. Okt 2005 14:31

Re: Property vom Typ array?
 
Zitat:

Zitat von tigerman33
[OT]In deiner Signatur ist ein "denkst" zu viel... :warn: [/OT]

[OT]...das denk ich nicht, Tim :D,
du meinst wahrscheinlich das fettgedruckte, richtig? Wenn ja, dann lies es dir noch paar mal durch, das passt schon ;)

..wenn du denkst, daß du denkst, denkst, gedacht zu haben, denn das Denken der Gedanken ist gedankenloses Denken....
[/OT]

tigerman33 5. Okt 2005 14:37

Re: Property vom Typ array?
 
Aah, jetzt hab ich es verstanden. :drunken:

Meneldur 6. Okt 2005 12:25

Re: Property vom Typ array?
 
Ersteinmal herzlichen dank für die vielen Antworten!
Es ist für meine Zwecke völlig unerheblich, ob das Array im Objektinspektor angezeigt wird oder nicht, da die entsprechenden Objekte sowieso erst zur Laufzeit erzeugt werden. Daher habe ich die Property jetzt einfach Public deklariert. Das scheint reibungslos zu funktionieren. Super. :)


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