![]() |
Exception bei Typecast
Hallo Leute,
hab folgende Klassenstruktur:
Delphi-Quellcode:
wenn ich jetzt mit
IDIFControl = interface(IInterface)
// ein paar methoden end; TOwnTextField = class(TTntEdit, IDIFControl) // implementierung der methoden end; var ctrl: IDIFControl;
Delphi-Quellcode:
drauf zugreife, dann kommt eine EAccessViolation. (ja, ich hab sie vorher initialisiert!)
ctrl := TOwnTextField.Create(myPanel); // myPanel kommt von wo anders... und ist nicht nil!
TControl(ctrl).Width := 5; // hier krachts! ich muss dazusagen, dass es das erste mal ist dass ich mit delphi mit interfaces/vererbung arbeite. lg, Lukas |
Re: Exception bei Typecast
Hallo,
ist crtl eine Instanz der Klasse TOwnTextField, oder reräsentiert crtl das Interface IDIFControl? |
Re: Exception bei Typecast
hallo,
Delphi-Quellcode:
ruf ich auf.
ctrl := TOwnTextField.Create(myLabel);
ist also von TTntEdit abgeleitet und implementiert IDIFControl. |
Re: Exception bei Typecast
Hallo,
Zitat:
Delphi-Quellcode:
var
ctrl: IDIFControl; |
Re: Exception bei Typecast
ja, das mach ich deswegen damit ctrl alles sein kann was IDIFControl implementiert...
ich hab da ja noch TOwnCheckBox usw... |
Re: Exception bei Typecast
Hallo,
crtl ist das Interface und nicht die Klasse. crtl stammt nicht von TControl ab!!! Somit muss ein Typecast auch in die Hose gehen. |
Re: Exception bei Typecast
ok, dann muss ich mir was anderes einfallen lassen. danke
|
Re: Exception bei Typecast
Moin Lukas,
ein Typecast dieser Form:
Delphi-Quellcode:
ist immer gefährlich.
TControl(ctrl).Width ...
Hättest Du es so
Delphi-Quellcode:
gemacht, hätte wohl schon der Compiler gemeckert.
(ctrl as TControl).Width ...
Im ersten Fall übernimmst Du die Verantwortung dafür, dass der Typecast korrekt ist (der Pointer also auf ein passendes Objekt zeigt), im zweiten kann der Compiler schon beim Compilieren feststellen, ob die Typen passen. |
Re: Exception bei Typecast
ok, danke. habs inzwischen anders gelöst.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:30 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