AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Variable sender im Debugger überwachen

Variable sender im Debugger überwachen

Ein Thema von andzie · begonnen am 21. Okt 2015 · letzter Beitrag vom 23. Okt 2015
Antwort Antwort
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Variable sender im Debugger überwachen

  Alt 22. Okt 2015, 12:10
Moin...
Zitat:
Zumindest denke ich, dass if sender = btn1 then diesen Vergleich durchführt.
eher doch (Bsp.):
if TButton(Sender).Name = 'btn1'
Njain.

Will man nun die korrekte Refernz vergleichen, oder ob es den selben gleichen Namen besitzt?
Vor allem, weil damit sogar ein TEdit mit dem Namen btn1 durchgelassen würde

Delphi-Quellcode:
if Sender = btn1
then
ist vergleichbar mit
Delphi-Quellcode:
if (Sender is TButton) // ah ein Button
and (TButton(Sender).Owner = Self) // diese Form ist der Owner
and (TButton(Sender).Name = 'btn1' ) // der Name passt auch
then // dann wird es wohl btn1 sein
  Assert( Sender = btn1 );
und auch nur deswegen, weil der Owner dafür sorgt, dass der Name der Unter-Komponenten eindeutig ist.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (22. Okt 2015 um 12:12 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.438 Beiträge
 
Delphi 12 Athens
 
#2

AW: Variable sender im Debugger überwachen

  Alt 22. Okt 2015, 12:14
Zitat:
Vor allem, weil damit sogar ein TEdit mit dem Namen btn1 durchgelassen würde
boah eh... Die Wahrscheinlichkeit ist im TForm1.btn1Click wohl eher gering. Das ist doch nur ein Beispiel. Müßt ihr immer alles bis ins kleinste Detail zerpflücken? Am Anfang ging es um die Sichtbarkeit des Senders...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Variable sender im Debugger überwachen

  Alt 22. Okt 2015, 12:29
Zitat:
Die Wahrscheinlichkeit ist im TForm1.btn1Click wohl eher gering.
Man kann diese Eventmethode auch anderen Komponenten zuweisen.
Es ist aber auch möglich eine Editkomponente btn1 zu nennen.
if Sender = btn1 überprüft auf die Instanz und nicht den Typ
Markus Kinzler
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.192 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Variable sender im Debugger überwachen

  Alt 22. Okt 2015, 16:13
Hi zusammen

Zitat:
Man kann diese Eventmethode auch anderen Komponenten zuweisen.
Sicher, kann man. Man kann sie auch von (fast) überall aufrufen. Die Frage ist eigentlich eher: wann wird der Sender befüllt? Wenn der User mit der Komponente interagiert, indem er darauf clickt? Oder wenn die Onclickmethode ausgeführt wird? Im 2. Fall müsste der Sender mit dem Sender des Aufrufers belegt werden. Ist dieser eine andere Prozedur oder Funktion, hat er keinen Sender-Parameter. Das heisst für mich: Der Sender übergibt eine Referenz auf das TObject, das angeklickt, hochgeklappt oder was auch immer wurde.
if Sender = btn1 Ich glaube nicht, das das wirklich funktionieren kann. Der Sender ist erstmal ein TObject und btn1 kann weiss was sein: der Ausdruck ist also immer false. Was auch heisst: So kann man Fehler einbauen, ohne es zu bemerken. Zumindest solange, bis einem klar wird, dass das ohne Cast nicht geht.
Sollte ich daneben liegen, lasse ich mich gerne eines besseren brlehren. Ansonsten würde ich nur noch sagen: wer sein TEdit Btn1 nennt, it echt selber schuld...

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Variable sender im Debugger überwachen

  Alt 22. Okt 2015, 16:28
Zitat:
Ich glaube nicht, das das wirklich funktionieren kann. Der Sender ist erstmal ein TObject und btn1 kann weiss was sein: der Ausdruck ist also immer false.
Nein, jedes Objekt ist ein TObject. Zudem wird hier auf die Gleichheit der Adressen der beiden Objekte geprüft.
Markus Kinzler
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Variable sender im Debugger überwachen

  Alt 23. Okt 2015, 05:27
Hallo,
Sender.ClassName lässt sich answerten, mit dem Schalter "Funktionsaufrufe answerten" habe gerade kein Delphi da).


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 04:27 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