![]() |
Was hat vorrang?
hi,
was hat ihr eigentlich vorrang:
Delphi-Quellcode:
?
procedure TServerSocket.myClientRead(Sender: TObject; Socket: TCustomWinSocket);
ich meine wenn ich jetzt auf "socket." zugreifen möchte, wir dann mein "socket" von meiner instanz benutzt oder mein "socket" im übergebenem argument? |
Re: Was hat vorrang?
wo is da ne instanz ? :gruebel:
poste doch n bisschen mehr code .. aber falls du das meinst was ich auch meine *g* dann würde ich sagen, das übergebene.. sowas hatte ich vorgestern auch |
Re: Was hat vorrang?
Moin!
Nein, das ist der Socket aus dem Connections[] Array, also der Socket für genau den einen Client von dem was empfangen wurde. Ein TClientSocket hat nur einen Socket, ein TServerSocket hat einen Socket pro verbundenen Client. Und es wird dort als Parameter der gleiche Socket übergeben wie er auch in dem Connections[] Array vorkommt. Da Instanzenvariablen standardmässig Zeiger sind, wird immer ein Zeiger übergeben der auf ein und die selbe Instanz zeigt. // ---- Edit ---- Aso, deine Klasse TServerSocket beinhaltet eine Variable/Property namens "Socket" und die Procedure ja nun auch - da ist die Eindeutigkeit nicht immer eindeutig. Ärger gehst du leicht aus dem Weg, wenn du einfach den Parameter von "Socket" auf "ASocket" z.B. umbenennst. Dies ist z.B. ein gutes Beispiel, warum bei mir alle Argument eine "A" vor dem Namen bekommen, weil es Argumente sind und somit schlecht mit den Klassenvariablen/-properties verwechselt werden können. MfG Muetze1 |
Re: Was hat vorrang?
hoi
Delphi-Quellcode:
^^^^^hier natürlich sieht man die instanz nicht, aber die instanz hier von TServerSocket hat u.a auch "Socket", deshalb weiss ich nun nicht ob wenn ich "Socket.Disconnect" benutze sich das auf meine instanz von TServerSocket bezieht, oder auf den übergebenen "socket"
procedure TServerSocket.myClientRead(Sender: TObject; Socket: TCustomWinSocket);
Edit: @Mütze, aber ServerSocket.Socket gibt es ja auch oder? |
Re: Was hat vorrang?
Moin!
1. Ich habe oben meinen Post nochmals editiert. 2. zu deiner Frage: Ja, hat er - aber das ist eine andere Klasse als beim TClientSocket. Diese bietet z.B. die Eigenschaft ActiveConnections, Connections, etc. Mit diesen kommst du dann an die Sockets für die Clients ran. MfG Muetze1 |
Re: Was hat vorrang?
hoi mütze, danke für deinen beitrag.
Genau das meinte ich ja, welches "socket" benutzt wird :thumb: |
Re: Was hat vorrang?
Es muss der Parameter Vorrang haben, da er ja zu den lokalen Variablen gehoert. Immer lokal vor global.
Die property kann man mit Self.Socket ansprechen. |
Re: Was hat vorrang?
Zitat:
Der "Self - Zeiger" kann immer zur Auflösung von Vorrangfragen eingesetzt werden, um sicher zu stellen, dass die Instanzvariable verwendet wird. "Self.Socket" wäre also auch etwas anderes als eine lokal definierte Variable mit dem Namen "Socket" Schönen Tag wünsche ich. Niels |
Re: Was hat vorrang?
Moin!
Ich gehe trotzdem lieber solchen Doppeldeutigkeiten aus dem Weg, weil ich schon öfters mal beim debuggen feststellen musste, das er trotz dieser "Vorrangregelung" das falsche übergibt - also der Compiler mal wieder Müll macht. Das ist mir nun schon bei grossen Projekten mehr als einmal vor die Füsse gefallen weshalb ich sowas grundsätzlich mit Verwendung eines "A" bei den Argumenten aus dem Weg gehe... MfG Muetze1 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15: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