Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#6

AW: Datenverlust bei ReadFile auf virtuellen COM-Port

  Alt 3. Nov 2014, 08:56
Ist auch klar, denn du liest nur das aus, was "aktuell" im Puffer ist, das können mehr oder wender sein, als das, was du jetzt auslesen willst.
Bei weniger mußt du entweder auf die fehlenden Daten warten oder die Daten sammeln und zusammensetzen, bis die Anzahl ausreicht.

Ich würde dir aber eh empfehlen, eine Comport-Komponente zu benutzen.


Ist bei sendData Length(SDaten) größer als Anzahl?
-> Buffer-overrun?

Zitat:
port:=pChar('com'+IntToStr(PC_COMM));
Delphi speichert den erzeigten String in einer temporären String-Variable, und bis zur Verwendung von "port" könnte es nun passieren, daß Delphi die Variable löscht/überschreibt, wenn man das erst "viel" später benutzt.


PS:
Daten am Port werden nicht gecachet, solange der Port nicht offen ist, also wenn Daten ankommen, bevor du den Port aufmachst, dann sind die weg.

Das war übrigens auch einer der Gründe, warum ich meinte der Port solle besser offen bleiben.
Wenn man den Port aufmacht, Daten anfragt und dann die Daten ausliest, dann OK,
aber du willst etwas auslesen das "irgendwann" gesendet wird.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat