AGB  ·  Datenschutz  ·  Impressum  







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

Generisches Typecasting?

Ein Thema von Stevie · begonnen am 7. Sep 2004 · letzter Beitrag vom 9. Sep 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Generisches Typecasting?

  Alt 7. Sep 2004, 16:20
Hi Leute,

ich möchte dem ActiveControl mit Perform eine WindowsMessage schicken, allerdings möchte ich dazu das Objekt als Objekt seiner Klasse haben und nicht als TWinControl. Wie mache ich das?
Meine Idee sieht folgendermaßen aus (Pseudocode!):
  (ActiveControl as ActiveControl.ClassType).Perform(...); Klar, dass das so nicht geht, aber wie kann ich das umsetzen?

Ok, dass es mit Perform nicht ging, hatte ne andere Ursache, und da spielt es ja keine Rolle, was das Objekt für eine Klasse hat, weil ja über das Handle SendMessage aufgerufen wird. Trotzdem interessiert mich die Lösung der ursprünglichen Frage noch.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Generisches Typecasting?

  Alt 7. Sep 2004, 16:33
Moin!

Du musst das zu TWinControl typecasten, da er bei einem TypeCast wie oben bei dir die Methode nicht kennt. Der Compiler kann nicht feststellen ob es die Methode bei dem Typ gibt zu Compile-Zeit und daher geht es nicht. Und selbst wenn du es auf TWinControl typecastest sollte die Perfom() Botschaft an das spezielisierte Element gehen bzw. dort verarbeitet werden.

MfG
Muetze1
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

Re: Generisches Typecasting?

  Alt 7. Sep 2004, 16:36
Zitat von Muetze1:
Du musst das zu TWinControl typecasten, da er bei einem TypeCast wie oben bei dir die Methode nicht kennt. Der Compiler kann nicht feststellen ob es die Methode bei dem Typ gibt zu Compile-Zeit und daher geht es nicht. Und selbst wenn du es auf TWinControl typecastest sollte die Perfom() Botschaft an das spezielisierte Element gehen bzw. dort verarbeitet werden.
Siehe meinen geänderten Beitrag oben...
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: Generisches Typecasting?

  Alt 7. Sep 2004, 16:42
Moin!

Ja, wie gesagt: Der Compiler kann es nicht compilieren, da er die Eigenschaft oder Typ nicht kennt. Der Typecast wird während der Laufzeit erst möglich, da zur Compile Zeit nicht weiss, welches Objekt denn ActiveControl ist. Daher kann er keine Informationen ermitteln, ob die Eigenschaft oder Methode die du spezialisiert nach dem TypeCast aufrufen willst überhaupt existiert. Und sobald er dies nicht weiss, kann er keinen Code generieren, da ihm die Info's dazu fehlen.

MfG
Muetze1
  Mit Zitat antworten Zitat
Benutzerbild von samson
samson

Registriert seit: 26. Aug 2003
Ort: Hövelhof Riege
105 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Generisches Typecasting?

  Alt 7. Sep 2004, 16:53
Hallo!!!

Meinst DU sowas in der Art:

Delphi-Quellcode:
if self.ActiveControl is TEdit then
  (self.ActiveControl as TEdit).Perform(...);
Frank Gellermann
Wer Informationen hat, hat Macht. Wer Macht hat, hat Informationen!!!
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

Re: Generisches Typecasting?

  Alt 7. Sep 2004, 16:55
Zitat von samson:
Meinst DU sowas in der Art
Jo, allerdings will ich nicht alle Objektklassen aufzählen, die es so gibt...
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von samson
samson

Registriert seit: 26. Aug 2003
Ort: Hövelhof Riege
105 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Generisches Typecasting?

  Alt 7. Sep 2004, 17:25
Was hast Du eigentlich vor? Vielleicht kann der Sinn des Programms weiterhelfen.

Die Methode Perform hat doch auch ein TWinControl, wieso musst Du dann Casten??


Gruß


Frank
Frank Gellermann
Wer Informationen hat, hat Macht. Wer Macht hat, hat Informationen!!!
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

Re: Generisches Typecasting?

  Alt 7. Sep 2004, 17:38
Zitat von samson:
Die Methode Perform hat doch auch ein TWinControl, wieso musst Du dann Casten??
Siehe oben...
Zitat von samson:
Was hast Du eigentlich vor? Vielleicht kann der Sinn des Programms weiterhelfen.
Angenommen, ich habe zwei mehrere verschiedene Komponenten aus verschiedenen Klassen (kommt auf einem Formular schonmal vor... ) und die haben alle die gleiche Methode, die entweder nicht in TWinControl implementiert sind oder aber in einer Nachfahrenklasse überschrieben wurden. Wenn sie nicht vorhanden sind, ist der Fall klar, dann geht's sowieso nicht. Wenn sie aber in einer Nachfahrenklasse überschrieben wurden, dann kommt diese Methode überhaupt nicht zum Zuge, sondern die in TWinControl. Deshalb das TypeCasting, damit mit der "richtigen" Klasse gearbeitet wird.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#9

Re: Generisches Typecasting?

  Alt 9. Sep 2004, 08:59
Hat echt keiner eine Idee, wie sowas gehen könnte???
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#10

Re: Generisches Typecasting?

  Alt 9. Sep 2004, 10:09
Moin!

Ich habe dir doch nun schon versucht zu schreiben warum es nicht gehen kann, also in wie fern sollte es denn nun noch eine Lösung dazu geben? Unter .NET kannst du es mit dem JustInTime Compiler machen und direkt Quellcode zur Ausführung geben aber mit Delphi Boardmitteln musst du dich immer auf die Klassenebene einigen die die gesuchte Methode bietet.

MfG
Muetze1
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 21:57 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