VC Programm mit BCC starten
-
Das it ja das gleich wie das hier:
Test->OnMeasureArrived=Messwert;
würde ich mal behaupten.
aber OnMeasureArrived wird nicht ausgeführt und nu bin ich auf der suche warum das nicht ausgeführt wird.
-
Nein, das ist nicht das Gleiche. Da wird lediglich dem Event OnMeasureArrived die Funktion Messwert zugewiesen. Einen Eventhandler für OnMeasureArrived braucht man trotzdem.
-
Wie sieht denn sowas aus unter borland??
-
Braunstein schrieb:
Nein, das ist nicht das Gleiche. Da wird lediglich dem Event OnMeasureArrived die Funktion Messwert zugewiesen. Einen Eventhandler für OnMeasureArrived braucht man trotzdem.
Wie anders sollte das denn aussehen?
-
Was meinst du jetzt?
Ich wollte damit nur sagen, dass das hierTest->OnMeasureArrived=Messwert;
kein Eventhandler ist.
-
Was soll das denn sonst sein? Die Funktion TForm1::Messwert ist ein Event-Handler und wird aus diesem Grund dem Event zugewiesen. Was du meinst, ist vermutlich der Event-Dispatcher - und der wird gewöhnlich vom Typelibrary-Importer mitgeneriert.
@JBOpael: Insofern wäre es vielleicht ganz sinnvoll, wenn du die anderen beiden Dateien noch irgendwo hochladen könntest. (Alternativ auch gerne die Typelibrary, sofern möglich.)
-
Das scheint eine reine Begriffsfrage zu sein. Für mich ist OnMeasureArrived die Eventfunktion und das was du Eventdispatcher nennst nenne ich Eventhandler.
-
Ich hab hier mal mein testprojekt und die dazugehörigen dateien.
die Bibliotheken hab ich aus den ocx dateien. Hab auch noch die beispielprogramme von vc mit rein gepackt.
bin euch echt dankbar das ihr euch soviel mühe mit mir gebt.
-
Braunstein schrieb:
Das scheint eine reine Begriffsfrage zu sein. Für mich ist OnMeasureArrived die Eventfunktion und das was du Eventdispatcher nennst nenne ich Eventhandler.
Wie du meinst. Das ist aber mindestens aller Konvention zuwider, zumal ein Eventhandler, um die Aufgabe, die seine Bezeichnung suggeriert, zu erfüllen, ein Event vielleicht auch behandeln und nicht nur delegieren sollte
@JBOpael: ich sehe es mir am Montag mal an.
-
Wenn es da konkrete Konventionen gibt bin ich gern bereit mich da anzupassen.
Ich habe bisher aber nichts dergleichen gefunden. In den alten Zeiten, wo ich mit TurboVision rumgespielt hatte, war der Eventhandler die Funktion, die die Events aufgenommen und an die dazugehörige Funktion weitergeleitet hat. Daher stammt auch die mir geläufige Begrifflichkeit.Ciao und schönes WE
-
Braunstein schrieb:
Wenn es da konkrete Konventionen gibt bin ich gern bereit mich da anzupassen.
Wenn ich bei Google nach "eventhandler" suche, finde ich nicht nur viele Event-Handler, die tatsächlich Events behandeln, sondern auch das hier
en.wikipedia.org schrieb:
In computer programming, an event handler is an asynchronous callback subroutine that handles inputs received in a program.
...
Created events are first processed by an event dispatcher within the framework. It typically manages the associations between events and event handlers, and may queue event handlers or events for later processing. Event dispatchers may call event handlers directly, or wait for events to be dequeued with information about the handler to be executed.@JBOpael: der ActiveX-Wrapper, den ich per Import erzeugte (deinen hast du ja nicht beigelegt), war in Ordnung; warum dein Event-Handler nicht aufgerufen wird, weiß ich nicht. Du kannst aber folgende Schritte zur Nachverfolgung des Eventbehandlungsablaufes unternehmen:
- setze einen Breakpoint auf die einzige Zeile der Funktion TOphirUsbX::InitControlData() in OphirUsbXLib_OCX.cpp und achte darauf, ob und wann sie ausgeführt wird
- deaktiviere Laufzeit-Packages in deinem Projekt, öffne $(BDS)\source\Win32\vcl\OleCtrls.pas und setze einen Breakpoint auf eine Zeile in TEventDispatch.Invoke(). Wird diese Funktion aufgerufen, wenn du ein Ereignis erwartest; falls ja, was tut sie genau?
-
Ich hab die Breakpoints an die beschrieben stellen gesetzt.
TOphirUsbX::InitControlData() wird beim öffnen aufgerufen. Sonst nicht mehr.
TEventDispatch.Invoke() wird gar nicht aufgerufen. Ich hab an diversen stellen mal breakpoints gesetzt aber an keiner stelle hat er angehalten.
Was ist das denn für ein thread der gestartet wird wenn ich startcs ausführe? kann ich da nicht irgendwie rein kommen?
Danke für eure Hilfe.
-
JBOpael schrieb:
TEventDispatch.Invoke() wird gar nicht aufgerufen. Ich hab an diversen stellen mal breakpoints gesetzt aber an keiner stelle hat er angehalten.
Dann bekommt deine Anwendung offenbar überhaupt keine Events.
JBOpael schrieb:
Was ist das denn für ein thread der gestartet wird wenn ich startcs ausführe? kann ich da nicht irgendwie rein kommen?
Doch: erst pausieren, dann im "Thread-Status"-Fenster aus dem Thread-Kontextmenu den Eintrag "Aktuell" (suboptimale Übersetzung von "Make current") auswählen.