hallo,
eine frage: kann man diese beiden code's in einen
clientsocketread vereinen ?????
datei einlesen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| 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:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62:
| public daten:boolean; pos,size:integer; mem:TMemoryStream;
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; if Copy(s,1,4) = 'Tree' then begin delete(s,1,5); for i := 1 to length(s) do if (length(s) > i) and ((s[i] = #13) and (s[i+1] = #10)) then break; if i = length(s) then exit; size := StrToint(copy(s,1,i-1)); daten := true; mem.Clear; delete(s,1,i+1); mem.Position := 0; for i := 1 to length(s) Do mem.Write(s[i],1); pos := length(s); if pos >= size then begin daten := false; mem.position := 0; pos := 0; TreeView1.Items.Clear; TreeView1.LoadFromStream(mem); end; end; end else begin buf := @a; i := Socket.ReceiveBuf(buf^,4096); mem.write(buf^,i); pos := pos + i; if pos >= size then begin daten := false; mem.position := 0; pos := 0; TreeView1.Items.Clear; TreeView1.LoadFromStream(mem); end; end; end; |
ist das irgenwie möglich,ohne indy bzw ftp ??
Moderiert von
Peter Lustig (19:24, 07.05.2004): Code- durch Delphi-Tags ersetzt
mfg vader