Einzelnen Beitrag anzeigen

BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#1

typecast in neuen Delphi-Versionen

  Alt 13. Okt 2015, 16:21
Delphi-Version: XE8
Da ich mich schon einige Zeit mit dem Gedanken beschäftige von Delphi eventuell auf Lazarus umzusteigen (anstelle einer Neuanschaffung von Delphi / bisher D2007) ist mir im Lazarus-Forum ein Beitrag aufgefallen, welcher für meine Überlegung sehr interessiert ist, da ich zum Teil exzessiv Typecasts einsetze.

Hier einmal der Link:
http://www.lazarusforum.de/viewtopic.php?f=18&t=9105


Die Ausgangssituation mit einer erweiterten Komponente:
Delphi-Quellcode:
type
  TMyEdit = class(TEdit)
   private
    FEnhReadOnly: Boolean;
    function GetEnhReadOnly(): Boolean; virtual;
    procedure SetEnhReadOnly(AValue: Boolean); virtual;
   public
    constructor Create(AOwner: TComponent); override;
   published
    property ReadOnly: Boolean read GetEnhReadOnly write SetEnhReadOnly;
  end;

implementation

constructor TMyEdit.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FEnhReadOnly := inherited ReadOnly;
end;

function TMyEdit.GetEnhReadOnly(): Boolean;
begin
  Result := FEnhReadOnly;
end;

procedure TMyEdit.SetEnhReadOnly(AValue: Boolean);
begin
  if (FEnhReadOnly <> AValue) then
   begin
    FEnhReadOnly := AValue;
   end;
end;
und darauf folgenden Zugriff:

Delphi-Quellcode:
MyEdit1 := TMyEdit.Create(Self);
MyEdit1.ReadOnly := true;

lBoolean := MyEdit1.ReadOnly //Result: true
lBoolean := TEdit(MyEdit1).ReadOnly //Result: false
lBoolean := (MyEdit1 as TEdit).ReadOnly //Result: true
So ist es zum Beispiel auch bei mir mit Delphi2007 aus.

Wie sieht es in den aktuellen Delphi-Versionen aus?

Oder wird seit neuestem bei (MyEdit1 as TEdit).ReadOnly auch false zurückgegeben wie scheinbar bei Lazarus?

Den Original-Quellcode habe ich einmal ausgeborgt und angehängt.
Wäre nett, wenn dies jemand testen könnte.
Angehängte Dateien
Dateityp: zip TypeCastDelphi.zip (227,4 KB, 4x aufgerufen)
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat