Autor Beitrag
FinalFantasy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 127

Windows XP
Delphi 5 Professional, Visual Studio 7 .NET (C#)
BeitragVerfasst: Mo 11.07.05 14:37 
Hi,
Ich habe hier bei einem Socket die Callbackfunktion OnConnect.
Ich starte jedoch mehrere Instanzen der Klasse, die jede für sich eine Socket öffnet, natürlich sollte der Callback OnConnect dann auch auf eine Methode genau dieser Instanz laufen, die auch den Socket erzeugt hat.
Wie kann ich denn eine Callback Funktion auf eine bestimmte Methode einer bestimmten Instanz machen?

Ich hoffe, ihr versteht, was ich meine!
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Mo 11.07.05 15:55 
user profile iconFinalFantasy hat folgendes geschrieben:
Ich hoffe, ihr versteht, was ich meine!
Nicht so richtig :(
Du kannst das Ereignis irgendwo hin richten. Wenn du es lokal verwenden willst, dann setzt du es auch eine Methode deiner Klasse. Wo ist jetzt dein Problem?

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
MrSaint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1033
Erhaltene Danke: 1

WinXP Pro SP2
Delphi 6 Prof.
BeitragVerfasst: Mo 11.07.05 16:27 
Ich gaklube ich hab dich vertsanden, hatte auch schonmal sowas in der Art: www.delphi-forum.de/viewtopic.php?t=30581

--> Es geht nicht. Alle Instanzen einer Klasse benutzen die gleiche "Instanz" einer Prozedur. SPrich also: die Procedure TMyClass.xyz liegt genau ein mal im Speicher. wenn ich jetzt mehrere Instanzen dieser Klasse habe, wir immer die gleiche Speicherstelle aufgerufen, wenn ich Instanz1.xyz; und Instanz2.xyz; mache (um die Instanzen in der Procedure dann zu untershceiden, wird noch ein "unsichtbarer" Parameter mitgeführt). Folglich kann ich auch keine Funktion/Procedurte einer Klasse als Callback Funktion angeben. Es müssen Proceduren/Funktionen außerhalb von klassen sein, also z.B. procedure CallbackFnkt(...);.



MrSaint

_________________
"people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mo 11.07.05 17:14 
MakeObjectInstance. Damit geht das zwar, aber sollte man vermeiden.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
FinalFantasy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 127

Windows XP
Delphi 5 Professional, Visual Studio 7 .NET (C#)
BeitragVerfasst: Mo 11.07.05 20:00 
Mhm, MrSaint trifft mein Problem. Das hab ich mir schon fast gedacht, dass es sowas in der Art ist. Naja, muss ich mir eine andere Lösung einfallen lassen.
Trotzdem danke.
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Mo 11.07.05 21:12 
Ich versteh das Problem nicht ganz.. wieso brauchst du dieselbe Methode mehrmals? Es ist ja egal dass die Methode nur 1x im Speicher liegt, schließlich wird eh die Objektreferenz mitgegeben auf die zugegriffen werden soll..! Es stellt auch kein Problem dar, wenn man Threads verwendet, da ja jeder Thread seinen eigenen Stack hat etc, es kann also eine Methoden, obwohl sie nur 1x im Speicher existiert, problemlos parallel x-mal gleichzeitig ausgeführt werden. Der Zugriff auf eventuell gemeinsam benutzte Resourcen muss natürlich synchronisiert werden, aber das hat ja nichts damit zu tun wie oft die Methode im Speicher liegt!!

Oder versteh ich irgendwas falsch? Irgendwie komm ich nicht ganz hinter den Sinn des ganzen.. :?

Gruß, Motzi

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
MrSaint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1033
Erhaltene Danke: 1

WinXP Pro SP2
Delphi 6 Prof.
BeitragVerfasst: Mo 11.07.05 21:16 
user profile iconMotzi hat folgendes geschrieben:
Es ist ja egal dass die Methode nur 1x im Speicher liegt, schließlich wird eh die Objektreferenz mitgegeben auf die zugegriffen werden soll..!


Im Normalfall korrekt. Wenn das aber eine Callback Funktion sein soll, die ich z.B. einer API-Fnkt übergebe, wird die Klassenreferenz plötzlich nicht mehr mit übergeben, weil die API-Fnkt. diese Referenz einfach nicht kennt!


MrSaint

_________________
"people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Mo 11.07.05 21:39 
Das ist richtig.. in so einem Fall hilft Suche in: Delphi-Forum, Delphi-Library MAKEOBJECTINSTANCE weiter... Aber das OnConnect im ersten Beitrag hat mich vermuten lassen, dass es sich um ein Event, also einen Methodenzeiger, handelt...

Gruß, Motzi

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
FinalFantasy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 127

Windows XP
Delphi 5 Professional, Visual Studio 7 .NET (C#)
BeitragVerfasst: Di 12.07.05 07:10 
Es ist ja auch ein Event/Methodenzeiger, nur anscheinend wird wirklich keine Objektinstanz mit übergeben. Jedenfalls sind beim Aufruf sämtliche Membervariablen der Klasse (speziell dieser einen Instanz) leer.
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Di 12.07.05 08:50 
Dann zeig am besten mal ein bisschen Code..!

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
FinalFantasy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 127

Windows XP
Delphi 5 Professional, Visual Studio 7 .NET (C#)
BeitragVerfasst: Di 12.07.05 10:21 
Ok, habs scho gefunden... Hab nur ein paar Objekte durcheinander gebracht...