![]() |
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. |
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. |
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