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:
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.
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; |
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.
|
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. |
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.
|
Re: Property vom Typ array?
noch eine Alternative wäre eine Collection ;)
aenogym |
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. |
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 |
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. |
Re: Property vom Typ array?
Hallo Thornberry,
Zitat:
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 |
Re: Property vom Typ array?
Zitat:
|
Re: Property vom Typ array?
Moin...
Delphi-Quellcode:
oder
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;
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 |
Re: Property vom Typ array?
Zitat:
|
Re: Property vom Typ array?
Zitat:
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. |
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. |
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; |
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!
|
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 |
Re: Property vom Typ array?
[OT]In deiner Signatur ist ein "denkst" zu viel... :warn: [/OT]
|
Re: Property vom Typ array?
Zitat:
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] |
Re: Property vom Typ array?
Aah, jetzt hab ich es verstanden. :drunken:
|
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