Ich habe versucht das ganze Anzeigen zu lassen. In dieser:
Delphi-Quellcode:
procedure TForm1.IdTCPClient1Work(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
begin
if AWorkMode = wmRead then begin
Label6.Caption:=IntToStr(SizeOfIncomingStream);
Label7.Caption:=IntToStr(AWorkCount);
ProgressBar1.StepBy(AWorkCount);
end;
if AWorkMode = wmWrite then begin
Label6.Caption:=IntToStr(SizeOfIncomingStream);
Label7.Caption:=IntToStr(AWorkCount);
ProgressBar1.StepBy(AWorkCount);
end;
end;
Funktion funktioniert es nicht. AWorkMode und SizeOfIncomingStream sollten aber in dieser Funktion während der Übertragung angezeit werden. Wenn ich SizeOfIncomingStream direkt nach dem Ankommen der Dateigröße beim Empfänger der Datei abfrage funktioniert es. Sourecode der Funktion bei der es funktioniert:
Delphi-Quellcode:
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
fs: TFileStream;
begin
if not SaveDialog1.Execute then exit;
fs := TFileStream.Create(SaveDialog1.Filename, fmCreate or fmShareExclusive);
with AThread.Connection do
try
SizeOfIncomingStream := ReadInteger;
Label5.Caption:=IntToStr(SizeOfIncomingStream);
ProgressBar1.Max := SizeOfIncomingStream;
ReadStream(fs, SizeOfIncomingStream);
finally
Disconnect;
fs.Free;
end;
end;
Langsam habe ich das Gefühl, dass meine Funktion falsch ist.
Hoffe ihr könnt mir helfen
mfg
robertthronhill