Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Default property (nicht array) (https://www.delphipraxis.net/181254-default-property-nicht-array.html)

mts 29. Jul 2014 20:00

Delphi-Version: 5

Default property (nicht array)
 
Hallo zusammen,

kann man ein nicht-array property als default deklarieren (oder so ähnlich)?

z.B. eine eigene Integer-Klasse (TMyInteger)
Code:
TMyInteger = class(eine Klasse)
public
  function ToString : string;

  property Value : integer read ... write... default;
end;


myVar : TMyInteger;

myVar := 4;
showMessage(myVar.ToString);
Es geht jetzt natürlich nicht darum ein Integer in einen string zu wandeln, aber die Integer-Klasse soll diverse Funktionen erhalten (onChange-Events, callbacks...).
Gibt es eine Möglichkeit sowas in Delphi umzusetzen? In c# kann man sowas umsetzen.

himitsu 29. Jul 2014 20:27

AW: Default property (nicht array)
 
Nein, denn dort hat das DEFAULT die "andere" Bedeutung, also die mit dem Default-Wert,
und außerdem weiß Delphi dann nicht, ob das Property verwendet wird, oder die Objektinstanz, wenn man
Delphi-Quellcode:
Obj
oder
Delphi-Quellcode:
Obj
benutzt, was bei
Delphi-Quellcode:
Obj
oder
Delphi-Quellcode:
Obj[...]
eindeutig erkennbar ist.

Zitat:

In c# kann man sowas umsetzen.
Nein, nicht mit einem Property.

Dafür sind die Operatoren, aber Diese sind nur bei Records möglich. (seit Delphi 2006 ... falls das Delphi 5 stimmt, welches du da angegeben hast)

mts 29. Jul 2014 21:38

AW: Default property (nicht array)
 
Delphi 5 stimmt nicht :-) Keine Ahnung wie das da hinkommt.
Nutze Delphi XE4.

In C# kann man z.B. mit implicit operator arbeiten. z.B.:
Code:
public static implicit operator int(MyInteger i)
    {
        return i.value;
    }
Gibt es nichts vergleichbares in Delphi?

Sir Rufo 29. Jul 2014 21:57

AW: Default property (nicht array)
 
Zitat:

Zitat von mts (Beitrag 1266978)
Delphi 5 stimmt nicht :-) Keine Ahnung wie das da hinkommt.
Nutze Delphi XE4.

In C# kann man z.B. mit implicit operator arbeiten. z.B.:
Code:
public static implicit operator int(MyInteger i)
    {
        return i.value;
    }
Gibt es nichts vergleichbares in Delphi?

Doch records oder wenn der Compiler ARC kann (iOS, Android) dann auch bei Klassen (da gibt es dann auf jeden Fall das operator overloding)


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