Einzelnen Beitrag anzeigen

BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#3

Re: aus datenblöcken bestimmte Daten filtern

  Alt 28. Feb 2007, 10:30
Da hast du natürlich recht, der Anfang könnte theoretisch auch mal über 2 blöcke verteilt sein. Daran habe ich nicht gedacht. Das ist aber bis jetzt nie passiert, dennoch muss eine Möglichkeit her.

Hier mal der Code wie ich derzeit die Daten extrahiere:
Delphi-Quellcode:
      Anfang := pos('%ANFANG',data);
      Ende := pos('%ENDE',data);
      // wenn keine daten im paket
      if (anfang = 0) and (ende = 0) and (parts = false) then
         exit;
      // wenn im paket der Anfang aber kein ende
      if (anfang <> 0) and (ende = 0) and (parts=false) then begin
         dataparts := '';
         allparts := '';
         parts := true;
         dataParts := copy(data,anfang,TCPDataLength);
      end;
      // wenn part angefangen wurde aber noch kein ende (also mitte)
      if (anfang=0) and (ende=0) and (parts=true) then begin
         dataParts := dataparts + copy(data,0,TCPDataLength);
      end;
      // wenn part angefangen wurde und nun das ende da ist
      if (anfang=0) and (ende<>0) and (parts=true) then begin
         dataParts := dataparts + copy(data,0,ende+6);
         parts := false;
         allparts := allparts + dataparts;
         memo3.Lines.Add(allparts);
      end;
Hinzu kommt, dass natürlich nicht ständig die gewünschten daten im Datenstrom enthalten sind. Daher fällt möglichkeit eins (mit dem großen Puffer weg).

Da muss es doch möglichkeiten geben
  Mit Zitat antworten Zitat