AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi 2 Codes in clientsocketread vereinen ?
Thema durchsuchen
Ansicht
Themen-Optionen

2 Codes in clientsocketread vereinen ?

Ein Thema von Vader · begonnen am 1. Mai 2004 · letzter Beitrag vom 8. Mai 2004
 
Vader

Registriert seit: 6. Mai 2003
804 Beiträge
 
Delphi 6 Enterprise
 
#1

2 Codes in clientsocketread vereinen ?

  Alt 1. Mai 2004, 20:12
hallo,

eine frage: kann man diese beiden code's in einen
clientsocketread vereinen ?????

datei einlesen:
Delphi-Quellcode:
var
  Form1: TForm1;
  FStream: TFileStream;


procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
var
  iLen: Integer;
  Bfr: Pointer;
begin
  iLen := Socket.ReceiveLength;
  GetMem(Bfr, iLen);
  try
    Socket.ReceiveBuf(Bfr^, iLen);
    FStream.Write(Bfr^, iLen);
  finally
    FreeMem(Bfr);
  end;

end;
treeview einlesen:
Delphi-Quellcode:
public
  daten:boolean;
    pos,size:integer;
    mem:TMemoryStream;

    { Public-Deklarationen }


procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
 var a:array[0..4096]of byte;
      buf:pointer;
      i:integer;
      s:string;
begin
   if not daten then
   begin
     s := Socket.ReceiveText; //Text empfangen
     if Copy(s,1,4) = 'Treethen //wurde der "Tree" gesendet?
//in der alten Version stand hier 'tree' - kein wunder, dass nie was angekommen is ^^
     begin
        delete(s,1,5); // den Text löschen
        for i := 1 to length(s) do //#13#10 suchen
          if (length(s) > i) and
             ((s[i] = #13) and (s[i+1] = #10)) then break;
        if i = length(s) then exit; //nicht gefunden --> abbrechen
// es könnte theoretisch sein, dass auch der string in mehreren packeten ankommt, es ist aber sehr unwahrscheinlich, deshalb hab ich darauf verzichtet. bei bedarf einfach genau so wie mit dem stream verfahren...
        size := StrToint(copy(s,1,i-1)); //größe abspeichern
        daten := true; //daten kommen jetzt!
        mem.Clear; //stream löschen
        delete(s,1,i+1); //alles bis zum #13#10 aus dem string löschen
        mem.Position := 0;
        for i := 1 to length(s) Do //alles übriggebliebene in den stream speichern
          mem.Write(s[i],1);
//sollte eigentlich auch mit der alten Methode gehen, kannst ja ausprobieren, wenns dir nicht gefällt ;-P
        pos := length(s); //position festsetzen
        if pos >= size then //schon alle bytes empfangen? (triff ein, wenn alles in einem packet gesendet wurde)
        begin
          daten := false; //keine daten mehr!
          mem.position := 0; //stream zurücksetzen
          pos := 0; //anzahl der empfangenen bytes zurücksetzen
          TreeView1.Items.Clear;
          TreeView1.LoadFromStream(mem); //empfangenen tree ins treeview laden
       end;
     end;
   end
   else
   begin
     buf := @a;
     i := Socket.ReceiveBuf(buf^,4096); //daten empfangen
     mem.write(buf^,i); //in stream speichern
     pos := pos + i; //anzahl der empfangenen bytes erhöhen
     if pos >= size then //schon alle bytes empfangen?
     begin
        daten := false; //keine daten mehr!
        mem.position := 0; //stream zurücksetzen
        pos := 0; //anzahl der empfangenen bytes zurücksetzen
        TreeView1.Items.Clear;
        TreeView1.LoadFromStream(mem); //empfangenen tree ins treeview laden
     end;
   end;
end;
ist das irgenwie möglich,ohne indy bzw ftp ??


mfg vader

[edit=MrSpock]Code Tags durch Delphi Tags ersetzt. Mfg, MrSpock[/edit]
  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 05:02 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 by Thomas Breitkreuz