AGB  ·  Datenschutz  ·  Impressum  







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

Typecast Error by Sender As TWhatever

Ein Thema von FrankBKK · begonnen am 3. Sep 2008 · letzter Beitrag vom 3. Sep 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von FrankBKK
FrankBKK

Registriert seit: 20. Mai 2005
Ort: Bangkok
35 Beiträge
 
Delphi 7 Enterprise
 
#1

Typecast Error by Sender As TWhatever

  Alt 3. Sep 2008, 11:35
Hilfe, ich sitz' heut etwas auf der Leitung -

wie kann ich sowas realisieren ohne einen Typecast Error zu kriegen:

Delphi-Quellcode:
if ((Sender as TBitBtn).Name = 'bbPrint') or (Sender as TMenuItem).Name = 'miPrint')) then
begin
   ...
end ;
Frank
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Typecast Error by Sender As TWhatever

  Alt 3. Sep 2008, 11:38
Der Sender muss auch von diesem Typ sein! Du könntest einen harten Cast machen, dann könnte es aber sein, dass es richtig knallt!
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von FrankBKK
FrankBKK

Registriert seit: 20. Mai 2005
Ort: Bangkok
35 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Typecast Error by Sender As TWhatever

  Alt 3. Sep 2008, 11:46
Zitat von mkinzler:
Der Sender muss auch von diesem Typ sein! Du könntest einen harten Cast machen, dann könnte es aber sein, dass es richtig knallt!
Ja, das weiss ich - deshalb wuerd ich gern wissen wie man das eleganter loesen kann ...
Frank
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Typecast Error by Sender As TWhatever

  Alt 3. Sep 2008, 11:49
Die könntest das "Name"-Feld auch mittels RTTI abfragen (Delphi-Referenz durchsuchenIsPublishedProp und Delphi-Referenz durchsuchenGetStrProp - Unit Delphi-Referenz durchsuchenTypInfo)

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Typecast Error by Sender As TWhatever

  Alt 3. Sep 2008, 11:49
if Sender is <Typ> then ...
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Typecast Error by Sender As TWhatever

  Alt 3. Sep 2008, 11:58
Name ist doch von TComponent abgeleitet.
Also:
Delphi-Quellcode:
var tmp:string;
begin
  tmp:=(Sender as TComponent).Name;
  if ((sender is TBitBtn) and (tmp='xyz1'))or
     ((sender is TBitBtn) and (tmp='xyz2'))or
     ...
  then
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Typecast Error by Sender As TWhatever

  Alt 3. Sep 2008, 15:33
Zitat von sirius:
Name ist doch von TComponent abgeleitet.
Also:
Delphi-Quellcode:
var tmp:string;
begin
  tmp:=(Sender as TComponent).Name;
  if ((sender is TBitBtn) and (tmp='xyz1'))or
     ((sender is TBitBtn) and (tmp='xyz2'))or
     ...
  then
Stimmt, so gehts auch. Wenn die Methode auch von nicht-TComponent-Ableitungen aufgerufen wird, müsste man da allerdings noch eine zusätzliche Prüfung einbauen.
Ahja, wenn er sich nur für den Namen interessiert, kann man die Abfrage ob das Objekt ein TBitBtn ist auch weglassen
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Typecast Error by Sender As TWhatever

  Alt 3. Sep 2008, 15:35
Zitat von mirage228:
Wobei man, wenn er sich nur für den Namen interessiert, die Abfrage ob das Objekt ein TBitBtn ist auch weglassen kann.
Er überprüft ja auf unterschiedliche Namen (je nach Klasse)
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Typecast Error by Sender As TWhatever

  Alt 3. Sep 2008, 15:37
Zitat von sirius:
Zitat von mirage228:
Wobei man, wenn er sich nur für den Namen interessiert, die Abfrage ob das Objekt ein TBitBtn ist auch weglassen kann.
Er überprüft ja auf unterschiedliche Namen (je nach Klasse)
Ja gut, aber wenn er die Methode wirklich nur von zwei Komponenten aus abrufbar machen will kann er gleich gegen die Komponenten-Variable testen.
if (Sender = miPrint) or (Sender = btnWhatEver) then ...
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Typecast Error by Sender As TWhatever

  Alt 3. Sep 2008, 15:41
Es ist aber besser den Typ und nicht den Namen der Variablen abzufragen
Markus Kinzler
  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 00: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