AGB  ·  Datenschutz  ·  Impressum  







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

Variable sender im Debugger überwachen

Ein Thema von andzie · begonnen am 21. Okt 2015 · letzter Beitrag vom 23. Okt 2015
Antwort Antwort
Seite 1 von 2  1 2      
andzie

Registriert seit: 18. Dez 2014
4 Beiträge
 
Delphi XE7 Professional
 
#1

Variable sender im Debugger überwachen

  Alt 21. Okt 2015, 15:23
Hallöchen,

auf folgendes Problem bin ich gestoßen:
Ich habe ein bisschen mit der Variable sender rumgespielt und mir ist aufgefallen, dass sich die Variable beim Debuggen nicht beobachten lässt(Siehe Anhang). Mache ich etwas falsch oder geht das einfach nicht. Wenn es nicht geht würde mich aus Interesse interessieren wieso nicht.

Benutzt wird XE7 und folgenden Code habe ich benutzt:
Delphi-Quellcode:
procedure TForm1.btn1Click(Sender: TObject);
begin
if sender = btn1 then
  pnl1.caption := 'erster sender erkannt'
end;
Grüße

Andzie
Miniaturansicht angehängter Grafiken
sender-ueberwachen.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

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

AW: Variable sender im Debugger überwachen

  Alt 21. Okt 2015, 15:38
Das Argument Sender ist vom Typ TObject und der Debugger zeigt alle Informationen zu diesem Typ TObject an ... und da gibt es einfach nichts.
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)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

AW: Variable sender im Debugger überwachen

  Alt 21. Okt 2015, 15:46
Hallöle...

In den überwachten Ausdrücken kannst du den Sender (TObject) auf den zu erwartenden Typ casten und somit sehen. Nur mit Maus drüber wird das nix...
  Mit Zitat antworten Zitat
andzie

Registriert seit: 18. Dez 2014
4 Beiträge
 
Delphi XE7 Professional
 
#4

AW: Variable sender im Debugger überwachen

  Alt 22. Okt 2015, 07:41
ok, ok dann eben MAHLZEIT und kein Hallöle

In den überwachten Ausdrücken kannst du den Sender (TObject) auf den zu erwartenden Typ casten und somit sehen. Nur mit Maus drüber wird das nix...

Ich habe es zu den überwachten Ausdrücken hinzugefügt. Einen Typ hatte ich aber nicht angegeben. Werde es später mal ausprobieren!


Das Argument Sender ist vom Typ TObject und der Debugger zeigt alle Informationen zu diesem Typ TObject an ... und da gibt es einfach nichts.
Naja ich hätte eventuell erwartet, die Adresse des aufrufenden Buttons zu erhalten. Zumindest denke ich, dass if sender = btn1 then diesen Vergleich durchführt.

Muss dazu sagen, dass ich erst seitdem ich beruflich mit Programmieren zu tun habe, mich intensiver mit den Grundlagen beschäftige. Davor war ich eher das typische Scriptkiddy.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

AW: Variable sender im Debugger überwachen

  Alt 22. Okt 2015, 09:47
Moin...
Zitat:
Zumindest denke ich, dass if sender = btn1 then diesen Vergleich durchführt.
eher doch (Bsp.):
if TButton(Sender).Name = 'btn1'
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.189 Beiträge
 
Delphi 12 Athens
 
#6

AW: Variable sender im Debugger überwachen

  Alt 22. Okt 2015, 12:03
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?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

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

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.303 Beiträge
 
Delphi 12 Athens
 
#8

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.851 Beiträge
 
Delphi 11 Alexandria
 
#9

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.186 Beiträge
 
Delphi 11 Alexandria
 
#10

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