Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - default-Eigenschaft bei Nicht-Array-Variablen
Bergmann89 - Sa 01.05.10 03:03
Titel: default-Eigenschaft bei Nicht-Array-Variablen
Hey,
ich wollt mal fragen, ob es in Delphi7 eine Möglichkeit gibt die default-Eigenschaft auch einer Variable zu geben, die kein Array ist. Also so ungefähr:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| type TTest = class private fInt: Integer; public property Int: Integer read fInt write fInt; default; end;
var TestInt: Integer;
T1 := TTest.Create; T2 := TTest.Create; TestInt = T1 + T2; |
MfG & Thx Bergmann.
Moderiert von
Narses: Topic aus VCL (Visual Component Library) verschoben am So 02.05.2010 um 12:56
platzwart - Sa 01.05.10 10:11
Kompilieren und ausprobieren? Hast den Quelltext doch schon getippt, noch ein Mausklick und du weißt Bescheid ;)
BenBE - Sa 01.05.10 10:59
Default für Array- und Non-Array-Properties machen was unterschiedliches. Mehr dazu in der Hilfe ;-)
Bergmann89 - Sa 01.05.10 13:55
Hey,
wenn ich das so Kompiliere, dann sagt er mir, das es die default-Eigenschaft nur für Arrays gibt. Deshalb hab ich ja gefragt, ob es so was ähnliches gibt.
MfG Bergmann.
BenBE - Sa 01.05.10 14:04
Deshalb sagte ich ja, dass
default bei Non-Array was anderes bedeutet; und die Hilfe hätte Dir auch verraten was: Damit legt man den Startwert fest, für den eine Eigenschaft nicht gespeichert wird.
Spricht:
Delphi-Quelltext
1:
| property HomeopathicCode: Boolean read FHomeopathic write SetHomeopathic default true; |
Wenn im Constructor FHomeopathic auf True initialisiert wird und daher das Speichern dieses Wertes uninteressant ist (man also nur für Nicht-Homeopathischen Code diese Information benötigt).
Bergmann89 - Sa 01.05.10 17:57
Hey,
ja das hab ich ja alles aus der Hilfe raus gelesen und auch verstanden. Die Frage war ja auch, ob ich das MyObject[x] auch für Nicht-Array-Eigenschaften hin bekomm?! Also anstatt MyOject.Int := 0; --> MyObject := 0;
MfG Bergmann
Kha - Sa 01.05.10 18:10
Und welche Syntax willst du dann benutzen, um der Variablen ein TTest-Objekt zuzuweisen? Nur anhand vom Typ der rechten Seite zu unterscheiden wäre wohl etwas verwegen ;) .
Bergmann89 - Sa 01.05.10 18:46
Hä? Wenn es sowas ähnliches wie ne default Eigenschaft für Nicht-Arrays gibt (die aber genau so funktioniert wie bei dem Array) dann is der Typ doch bei der Eigenschaft deklariert?! Wie ich das machen will weiß ich auch nicht, dehalb frag ich ja ob es wowas gibt ^^
MfG Bergmann.
Kha - Sa 01.05.10 19:59
Keine Angst, wenn es so etwas gäbe, hätte dich sicherlich mittlerweile jemand darauf hingewiesen :mrgreen: .
In neueren Version kannst du
Records eigene
implizite Konvertierungen hinzufügen, das trifft es eigentlich ziemlich genau:
http://edn.embarcadero.com/article/34324
dummzeuch - Mo 03.05.10 23:12
Bergmann89 hat folgendes geschrieben: |
ich wollt mal fragen, ob es in Delphi7 eine Möglichkeit gibt die default-Eigenschaft auch einer Variable zu geben, die kein Array ist. Also so ungefähr:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| type TTest = class private fInt: Integer; public property Int: Integer read fInt write fInt; default; end;
var TestInt: Integer;
T1 := TTest.Create; T2 := TTest.Create; TestInt = T1 + T2; |
|
Problem dabei: Wie soll der Compiler unterscheiden, ob mit
Eine Zuweisung auf den Pointer T1 oder auf die Default Property von T1 gemeint ist?
Deshalb gibt es Default-Properties nur fuer Arrays und damit ist es eindeutig.
twm
Bergmann89 - Mi 05.05.10 20:33
Hey,
das überladen der Operatoren funktioniert bei mit nich, ich hab Delphi 7 Personal. Un da steht ja das es seit Delphi 7 gehen sollte. Er will aber nich. Kann es sein, das es nur mit der Professional oder so geht?
MfG Bergmann
Tryer - Mi 05.05.10 20:52
Zitat: |
features in Delphi released after the Delphi 7 |
Das "since" im fetten Titel verwirrt da wohl etwas.
jaenicke - Mi 05.05.10 21:14
Ja, die neue übersichtlichere IDE kam mit Delphi 2005, dann die stabile Version davon kombiniert mit neuen Sprachfeatures mit Delphi 2006 / Turbo Delphi.
Und danach kamen dann noch weitere Entwicklungen an der Sprache in den folgenden Versionen. Vorher, also bis einschließlich Delphi 2005, hat sich an der Sprache nicht allzuviel geändert, z.B. sowas wie Klassenmethoden wurde AFAIK aber auch schon dort eingeführt.
Bergmann89 - Mi 05.05.10 21:33
Hm Mist. Gibts irgend ne FreeWare Version, die das kann? Mit Lazarus gehts schonma nich...
jaenicke - Mi 05.05.10 21:34
Nicht mehr, da gab es ausschließlich Turbo Delphi. Hast du dir das nicht geholt gehabt? Bist doch lange genug dabei. ;-)
Bergmann89 - Mi 05.05.10 21:51
Nee eben nich :cry: Bis jetz bin ich ja mit meinem D7 zufrieden gewesen :)
€: achnee ich habs doch xDD das war ganz weit unten in den Tiefen meiner (Un-)Ordnung :P gleich ma installen un ausprobieren^^
jaenicke - Mi 05.05.10 21:56
Dann bleibt dir nur der umständlichere Weg über entsprechende Funktionen / Methoden. Da geht dann definitiv nix einfacheres.
Bergmann89 - Mi 05.05.10 22:09
Zu früh gefreut, habs zwar geladen aber kein Key -.- Naja bleib ich halt bei dem umständlichen weg...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!