Avatar billede morten_s Nybegynder
15. august 2002 - 11:39 Der er 3 kommentarer og
1 løsning

Læse buffer

Jeg har nedenstående code, hvor jeg læser fra en IndyClient, da jeg ikke ved
hvad jeg læser kan jeg ikke kører blocked, derfor tømmer jeg bufferen med

numToRead:= ClientSocket.ReadFromStack(true,1000,true);
ClientSocket.ReadBuffer(stData,numToRead);

Problemet er hvordan jeg får resat stData på en smart måde,

Hvis jeg f.eks skal læse

Hesten er rød, og derefter
Nej blå

Så får jeg første gang i min datastreng
Hesten er rød
Og ved anden læsning
Nej blåer rød



var
  stData:array[0..16384-1] of char;
  numToRead: Integer;

    numToRead:= ClientSocket.ReadFromStack(true,1000,true);
      ClientSocket.ReadBuffer(stData,numToRead);
      if numToRead > 0 then
      begin
        Data := string(stData);
        if (Data <> #1) and (Data <> '') then
          Synchronize(SetOnDataEvent);
      end;
        until pos(#2+'BREAK'+#3, Data) > 0;
Avatar billede morten_s Nybegynder
15. august 2002 - 11:42 #1
Det kan selvfølgelig gøres med

SetLength(Data, numToRead);

Hvad svaret skal være er om der er en bedre måde at læse bufferen på så jeg får det direkte over i min streng
Avatar billede hermandsen Juniormester
15. august 2002 - 13:22 #2
Ellers kan du bare bruge Data := Copy(stData, 0, numToRead);
Avatar billede nico26 Nybegynder
15. august 2002 - 17:07 #3
ReadBuffer returnerer vel hvormange bytes der er læst. Så smider du bare de overflødige bytes væk
Avatar billede morten_s Nybegynder
12. oktober 2002 - 10:36 #4
a
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester