Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - C# to Delphi Schnittstelle
ts_dev - Sa 02.10.21 10:24
Titel: C# to Delphi Schnittstelle
Hallo zusammen,
ich bin am Verzweifeln und brauche ein wenig Hilfe.
Ich muss in altes Delphi Programm ein Update vornehmen.
In C# sieht mein Code folgendermaßen aus:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| private void StartInBackground() { _phoneListener = new ScreenPopTelephoneListener();
_phoneListener.Initialize("6000@XXX");
_phoneListener.StartListening("000");
_phoneListener.ScreenPop += new _IScreenPopTelephoneListenerEvents_ScreenPopEventHandler(ScreenPopEvent);
this.Shutdown += new HiPathScreenPop_ShutdownEventHandler(HiPathScreenPop_Shutdown); }
private void ScreenPopEvent(ScreenPopTelephoneEvent screenpoptelephoneevent) { Console.WriteLine(screenpoptelephoneevent.From);
Console.WriteLine(screenpoptelephoneevent.Destination);
Console.WriteLine(screenpoptelephoneevent.QueueName); } |
Leider habe ich keine Ahnung wie das in Delphi gelöst wird und finde per Google kein passendes Beispiel.
In Delphi 10.4 wurde mir die beigefügte TLB generiert.
Delphi:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| var Listener : ScreenPopTelephoneListener;
...
Listener := CoScreenPopTelephoneListener.Create;
Listener.Initialize('6000@XXX');
Listener.StartListening('000'); |
Wie kann ich auf das Event ScreenPop in Delphi reagieren? (Function)
Vielen Dank im voraus.
Moderiert von Th69: C#-Tags hinzugefügt
Moderiert von Th69: Delphi-Tags hinzugefügtModeriert von Th69: Topic aus Dateizugriff verschoben am Sa 02.10.2021 um 14:28
Th69 - Sa 02.10.21 14:21
Hallo und :welcome:
ein Ereignis zuweisen geht in Delphi fast analog zu C# (oder anderen Sprachen), nur daß hier kein Eventhandler hinzugefügt, sondern nur zugewiesen werden muß (Delphi kennt kein Multicast-Event), s.a.
Ereignisse (Delphi) [
https://docwiki.embarcadero.com/RADStudio/Sydney/de/Ereignisse_(Delphi)].
Bei dir also
Delphi-Quelltext
1:
| Listener.ScreenPop := ScreenPopEvent; |
Der Eventhandler
ScreenPopEvent muß natürlich dann die passende Signatur besitzen.
PS: Auch in C# reicht ein einfaches
C#-Quelltext
1:
| _phoneListener.ScreenPop += ScreenPopEvent; |
ts_dev - Sa 02.10.21 15:42
Hallo Th69,
vielen Dank für die schnelle Antwort.
Ja, so hatte ich es schon probiert und wäre es für mich auch logisch gewesen, jedoch wird mir die Function beim Listener gar nicht angezeigt.
In der Komponente ist
ScreenPop nur als
dispinterface vorhanden unter
_IScreenPopTelephoneListenerEvents. Wie komme ich da ran?
Wenn ich es wie folgt eingebe:
Delphi-Quelltext
1:
| Listener.ScreenPop := ScreenPopEvent; |
erhalte ich diese Fehlermeldungen:
Zitat: |
[dcc32 Fehler] Unit1.pas(70): E2003 Undeklarierter Bezeichner: 'ScreenPop'
[dcc32 Fehler] Unit1.pas(70): E2035 Nicht genügend wirkliche Parameter
[dcc32 Fataler Fehler] ScreenPop.dpr(5): F2063 Verwendete Unit 'Unit1.pas' kann nicht compiliert werden
|
Moderiert von Th69: Delphi-Tags hinzugefügt
Moderiert von Th69: Quote-Tags hinzugefügt
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!