Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi WinSock & Dateien versenden (https://www.delphipraxis.net/100991-winsock-dateien-versenden.html)

combocraft 6. Okt 2007 19:32

Re: WinSock & Dateien versenden
 
So, datei wird neu erstellt aber nicht mit Daten gefüllt!

Hab eure beiden Ratschläge befolgt und steh nun wieder da wie ein Ochs vorm Berg..

Hilfe!

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ScktComp;

type
  TDLFile= array[0..2048-1] of Byte;
  TForm1 = class(TForm)
    Button1: TButton;
    ServerSocket1: TServerSocket;
    ClientSocket1: TClientSocket;
    procedure Button1Click(Sender: TObject);
    procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  dlCounter: Cardinal = 0;
implementation

{$R *.dfm}

procedure WriteToNewFile(bByteDat: TDLFile; iSize: Integer);
var
  hDat: File;
begin
  if FileExists('C:\new_bild.bmp') then
  begin
    AssignFile(hDat, 'C:\new_bild.bmp');
    ReSet(hDat, 1);
    Seek(hDat, soFromBeginning+dlCounter);
    BlockWrite(hDat, bByteDat, iSize);
    inc(dlCounter, iSize);
    CloseFile(hDat);
  end
  else begin
    AssignFile(hDat, 'C:\new_bild.bmp');
    ReWrite(hDat, 1);
    BlockWrite(hDat, bByteDat, iSize);
    dlCounter := iSize;
    CloseFile(hDat);
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
type TDLFile= array[0..2048-1] of Byte;
var datei: file;
    buffer: TDLFile;
    iResult: Integer;
begin
  AssignFile(datei, 'D:\Balls\balls\Cedfence.bmp');
  ReSet(datei, 1);
  while iResult <> 0 do
  while not eof(datei) = true do
  begin
    BlockRead(datei, buffer, 2048, iResult);
    ServerSocket1.Socket.Connections[0].SendBuf(buffer, iResult);
  end;
  CloseFile(datei);
end;
procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
var
  buffer: TDLFile;
  iResult: Integer; //Was soll das hier eigentlich??
begin
  ClientSocket1.Socket.ReceiveBuf(buffer, Socket.ReceiveLength);
  WriteToNewFile(buffer, ClientSocket1.Socket.ReceiveLength);
end;

end.

Muetze1 6. Okt 2007 20:23

Re: WinSock & Dateien versenden
 
1. Warum definierst du global einen Typ TDLFile über der Form und in Button1Click() das ganze nochmal?
2. Was wurde in Bezug auf iResult und 0 setzen gesagt?
3. Wer hat gemeint, du sollst beim Empfangen iResult einfügen?
4. Warum gibst du bei Seek() soFromBeginning an? Seek() für die alten Dateiroutinen ist immer ab Anfang der Datei...
5. Gib mal bitte bei jeder Angabe von Buffer direkt ein [0] an.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:37 Uhr.
Seite 2 von 2     12   

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-2025 by Thomas Breitkreuz