Hallo zusammen!
ich versuche gerade, ein
FTP-Upload mit Progressbar
auf Basis der WinInet umzusetzen (die
Indy-Komponenten
halte ich hier für übertrieben).
Dies funktioniert in dem Sinne, dass immerhin Bytes
hochgeladen werden und sich die Progressbar bewegt.
Nur: Es hört nicht mehr auf!
Ich will die Schleife eigentlich beenden, wenn die
Dateigröße = GesamtGeleseneBytes ist.
Ohne diese Abfrage gibt es einen Fehler und es heißt
sinngemäß: "Kann nicht über das Dateiende hinaus lesen"
Weiß hier jemand Rat? Danke für Eure Hilfe!
Pfoto
Delphi-Quellcode:
uses WinInet;
const
BUFFERSIZE = 4096;
var
buffer: array[0..WRITE_BUFFERSIZE - 1] of Char;
bufsize: DWORD;
NumberOfBytesRead,
NumberOfBytesWritten: DWord;
SizeFile, TotalBytesWritten: longint;
[...]
{ Dateigröße der lokalen Datei }
SizeFile := FileSize(LocalFile);
{ Insgesamt gelesene Bytes }
TotalBytesWritten := 0;
bufsize := WRITE_BUFFERSIZE;
repeat
BlockRead(LocalFile, buffer, bufsize, NumberOfBytesRead);
if not InternetWriteFile(hFile,
@buffer,
WRITE_BUFFERSIZE,
NumberOfBytesWritten) then FCancelProcess:= true;
TotalBytesWritten := TotalBytesWritten + bufsize;
{ Hier Prozentanzeige ermitteln und ausgeben }
until (TotalBytesWritten = SizeFile) or (FCancelProcess = true);
[...]