Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

Re: Image senden - Bin kurz vorm verzweifeln

  Alt 26. Jun 2005, 19:55
So, noch mal gesucht:

Das hier muss ins OnClientRead Ereigniss des TClientSockets:

Delphi-Quellcode:
Var
  a: array[0..4096] of byte;
  i: integer;
  s: string;
  fs: tfilestream;
begin
  If FDaten = false then
  begin
    s := Socket.ReceiveText;
    If Copy(s, 1, 5) = 'Datenthen
    begin
      Delete(s, 1, 5);
      try
        FSize := StrToInt(s);
        FDaten := true;
        FStream.Clear;
      except
        
      end;
    end;
  end
  else
  begin
    i := Socket.ReceiveBuf(a, 4096);
    FStream.Write(a, i);
    FPos2 := FPos2 + i;
    // hiermit prozent ermitteln: floattostr(Round((fpos2 / fsize)*100));
    If FPos2 >= FSize then
    begin
      FDaten := false;
      FStream.Position := 0;
      FPos2 := 0;
      
    end;
  end;
FDaten: boolean;
FSize: int64;
Fpos2: int64;
FStream: TMemoryStream;

als globale Veriablen definieren!

und das hier muss zum Senden benutzt werden:

Delphi-Quellcode:
procedure SendFileToClient(clientindex: integer; filename: string);
Var i: integer; Buf: Pointer;
begin
  fstream.LoadFromFile(filename);
  Buf := FStream.Memory;
  serversocket1.Socket.connections[clientindex].SendText('Daten'+inttostr(fstream.size));
  sleep(sleeptime+50);
  serversocket1.Socket.connections[clientindex].SendBuf(buf^, fstream.Size);
end;
ClientIndex gibt die Nummer des Clients an.

Florian

PS: Ja, es geht auch mit den normalen Komponenten.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat