Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wann tritt ein Ereignis ein? (https://www.delphipraxis.net/84889-wann-tritt-ein-ereignis-ein.html)

hirnstroem 23. Jan 2007 10:58


Wann tritt ein Ereignis ein?
 
'loha Folks,

folgendes Szenario:

Eine Prozedur wird aufgerufen, welche über den COM-Port Daten versendet und zugleich einen InputBuffer auf eingehende Daten durchsucht. Wird während einer definierten Zeitspanne etwas gefunden, so werden die entsprechenden Daten gelöscht.

Es ist so, dass eintreffende Daten sich durch das Auslösen eines Ereignisses (OnRxChar) bemerkbar machen.

Meine Frage ist nun, ob, wenn die genannte Prozedur abgearbeitet wird, die Daten welche am COM-Port ankommen sofort für diese Prozedur verfügbar sind. Oder ob zuerst die Prozedur beendet werden muss, bis das Ereignis eintritt.

Ich hoffe dies ist einigermassen verständlich formuliert.

Grüsse
hirnstroem

Der_Unwissende 23. Jan 2007 11:11

Re: Wann tritt ein Ereignis ein?
 
Hi,
ich hoffe ich habe Dich richtig verstanden. Also an sich sollte das Ereignis quasi-parallel zu Deinem Programm eintreten und abgearbeitet werden. Das ganze siehst Du leicht, wenn Du etwas bestimmtes tust (z.B. in einer Schleife auf einen Canvas zeichnen) und dann einfach mal mit der Maus das Form bewegst oder einen Button drückst oder so. Dabei wird dann auch ein entsprechendes Ereignis und seine Behandlung ausgelöst.

Die eigentliche Frage ist, wie wartest Du denn die gewisse Zeitspanne ab? Ich glaube mich zu erinnern, dass die Lösung doch schon ein MsgWaitForMultipleObjects enthält? Da solltest Du dann leicht signalisieren können, das Daten angekommen sind. Gerade wenn Du hier den Prozess auf Ereignisse (Eintreffen von Daten oder eben Ablaufen einer Zeit) warten lässt, dann schläft der bis die Daten ankommen (oder eben die Zeit abgelaufen ist), hat also eh nichts anderes zu tun.
Aber wie gesagt, an sich läuft das aut. parallel.

Gruß Der Unwissende

hirnstroem 23. Jan 2007 11:15

Re: Wann tritt ein Ereignis ein?
 
Bestens. Also wenn es ohnehin parallel läuft, erübrigt sich einiges.

Ich war mir nicht sicher ob, wenn ein solches Ereignis eintritt und z.B. einen Eintrag in eine StringList macht, die wartende Prozedur das eintragen durch die Funktion, welche das Ereignis auslöst, überhaupt mitbekommt oder nicht.

Aber wenn du das so erklärst...bin ich zufrieden.

Danke und Gruss
hirnstroem


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:10 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