AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

typecast in neuen Delphi-Versionen

Ein Thema von BadenPower · begonnen am 13. Okt 2015 · letzter Beitrag vom 14. Okt 2015
Antwort Antwort
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#1

AW: typecast in neuen Delphi-Versionen

  Alt 14. Okt 2015, 08:48
In XE6 funktioniert's, wie es sollte - also anders, als du es gerne hättest.
Das ist so nicht richtig ausgedrückt.

Denn unter XE6 funktioniert es anderst, denn ich hatte bisher angenommen, dass es bislang so funktioniert wie es sollte.
Dann bleib' ich doch bei Delphi2007, denn da funktioniert es so wie ich es brauche und seit je her gewohnt bin.

Also wenn ich auf "Deklaration suchen" gehe von:

(MyEdit1 as TEdit).ReadOnly Dann verweist Delphi XE8 korrekt auf Vcl.StdCtrls

Unter Delphi 2007 geht die Deklaration (fehlerhaft) auf TMyEdit.ReadOnly

Also ist es ein Bug von Delphi 2007, der irgendwann behoben wurde.
Schreib Deinen Code doch lieber um, so dass er logisch korrekt auch unter XE funktioniert.

.
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.

Geändert von stoxx (14. Okt 2015 um 08:50 Uhr)
  Mit Zitat antworten Zitat
BadenPower

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

AW: typecast in neuen Delphi-Versionen

  Alt 14. Okt 2015, 10:59
Schreib Deinen Code doch lieber um, so dass er logisch korrekt auch unter XE funktioniert.
Umschreiben ist immer mit Aufwand verbunden.

Klar könnte ich zum Beispiel GetPropValue einsetzen, was mir dann auch die richtigen Werte ausgeben würde.

Allerdings müsste ich dann für die abzufragenden Properties feste Strings verwenden, worauf ich eigentlich verzichten wollte.

1. können Tippfehler entstehen
2. merkt man erst zur Laufzeit dass eine Property für dieses Objekt nicht exisiert.
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
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#3

AW: typecast in neuen Delphi-Versionen

  Alt 14. Okt 2015, 11:34
Wenn ich bei Delphi 2007..2010 (andere Versionen nicht getestet) folgendes formuliere:

Delphi-Quellcode:
function GetReadOnly(AEdit: TEdit): Boolean;
begin
  Result := AEdit.ReadOnly;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Memo1.Lines.Clear;
  Memo1.Lines.Add('MyEdit1.ReadOnly : ' + BoolToStr(MyEdit1.ReadOnly, True));
  Memo1.Lines.Add('TEdit(MyEdit1).ReadOnly : ' + BoolToStr(TEdit(MyEdit1).ReadOnly, True));
  Memo1.Lines.Add('(MyEdit1 as TEdit).ReadOnly : ' + BoolToStr((MyEdit1 as TEdit).ReadOnly, True));
  Memo1.Lines.Add('GetReadOnly(MyEdit1) : ' + BoolToStr(GetReadOnly(MyEdit1), True));
  Memo1.Lines.Add('');
end;
ergibt das folgende Ausgabe:
Code:
MyEdit1.ReadOnly            : True
TEdit(MyEdit1).ReadOnly     : False
(MyEdit1 as TEdit).ReadOnly : True
GetReadOnly(MyEdit1)        : False
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.749 Beiträge
 
Delphi 2007 Professional
 
#4

AW: typecast in neuen Delphi-Versionen

  Alt 14. Okt 2015, 12:20
Code:
MyEdit1.ReadOnly            : True
TEdit(MyEdit1).ReadOnly     : False
(MyEdit1 as TEdit).ReadOnly : True
GetReadOnly(MyEdit1)        : False
Ist doch klar:
  • Bei 1 ist die Variable vom statischen Typ TMyEdit, also kommt True. Passt.
  • Bei 2 und 4 ist der statische Typ TEdit, aber der dynamische TMyEdit. Wichtig ist aber der statische Typ, also False. Passt auch.
  • 3 sollte wie 2 laufen, wegen des Bugs kommt aber True.
Uli Gerhardt
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz