AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

on client read

Ein Thema von Karg · begonnen am 5. Jun 2007 · letzter Beitrag vom 6. Jun 2007
 
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#7

Re: on client read

  Alt 6. Jun 2007, 11:29
Hi und erstmal Herzlich Willkommen in der DP

Das was Muetze meint ist, dass Du einfach die Daten, die Du mit OnClientRead empfängst pufferst. Damit umgehst Du Dein jetziges Problem. Dazu legst Du einfach eine String-Variable an, die global verfügbar ist. Wenn Du eine Klasse verwendest, so bietet sich eine private Instanzvariable (Variable einfach im Private-Abschnitt anlegen) an.
Beim Senden einer Botschaft hängst Du immer ein Zeichen ran, dass ihr Ende markiert. Sinnvoll ist es, dass Du also ein Zeichen nimmst, dass nicht in der Botschaft selbst erwartet wird. Häufig wird hier das Zeilenende Zeichen Carriage Return (CR) verwendet. Dein Senden hat also die Form:

Delphi-Quellcode:
procedure sendMessage(const txt: String);
var message: String;
begin
  message := txt + chr(13); // chr(13) = CR
  
  // jetzt die message senden
  ...
end;
Auf der anderen Seite weißt Du nun, das egal was gesendet wird immer mit dem Zeichen chr(13) endet. Empfängst Du jetzt einen String, ist der nur ein Teil der gesamten Botschaft, bis Du eben chr(13) findest. Was auch immer Du jetzt empfängst hängst Du einfach an den Puffer an. Der ist am Anfang leer, kommt etwas an, wird das einfach angehangen.
Nach jedem Anhängen kannst Du dann schauen, ob Du hier eine vollständige Botschaft findest. Das ist immer dann der Fall, wenn das Zeichen chr(13) im Puffer findest.

Delphi-Quellcode:
// Prüfen ob das Zeichen im String ist
if pos(chr(13), buffer) > 0 then
Was Du nun noch machen musst ist den Teilstring von Position 1 bis zum ersten Auftreten von chr(13) zu kopieren (das ist dann die empfangene Nachricht). Dazu gibt es den Copy-Befehl (einfach mal suchen, findest Du eine Menge zu). Zuguter Letzt einfach den Pufferinhalt durch den hinteren Teil des Strings (der nach dem ersten Chr(13) kommt) ersetzen. Das ist nötig, da Du natürlich auch einen zweiten String direkt im Anschluss empfangen kannst und davon kann dann auch ein Teil hinter dem Trennzeichen der ersten Nachricht landen.

Gruß Der Unwissende
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz