Докачка файлов по сети ( NetBios )
Докачка файлов по сети ( NetBios )
Мне вот все интересно было...думал проги, которые файлы по сети докачивают как-то хитро с нетбиосом работают...И вот решил попробовать написать нечто подобное...Токо похоже все они ( проги ) про нетбиос и слыхом не слыхивали...нашел простейшее решение этой проблемы...
Код некрасивый, потому как писал чисто для проверки...более того, тут надо переписать его весь, но общий смысл должен быть понятен...я разочарован :((
procedure TForm1.Button1Click(Sender: TObject);
var
Stream,
Stream1: TFileStream;
Temp: array[0..$FFFF] of Byte;
Access: Integer;
FileNames, Filenames1: string;
begin
with TOpenDialog.Create(Form1) do
begin
Execute;
FileNames:=FileName;
Free;
end;
if Filenames='' then Exit;
with TSaveDialog.Create(Form1) do
begin
Execute;
FileNames1:=FileName;
Free;
end;
if Filenames1='' then Exit;
Access:=fmOpenReadWrite;
ZeroMemory(@Temp, sizeof(Temp));
Stream:=TFileStream.Create(FileNames, fmOpenRead);
if not FileExists(Filenames1) then Access:=fmCreate;
Stream1:=TFileStream.Create(Filenames1, Access);
Gauge1.MaxValue:=Stream.Size;
Stream.Position:=Stream1.Size;
Stream1.Position:=Stream1.Size;
Label1.Caption:=IntToStr(Stream1.Position);
Label2.Caption:=IntToStr(Stream.Size);
Gauge1.Progress:=Stream.Position;
while Stream.Size<>Stream1.Size do
begin
if (Stream.Size-Stream1.Position)<sizeof(Temp) then
begin
Stream1.CopyFrom(Stream, Stream.Size-Stream1.Position);
end
else
Stream1.CopyFrom(Stream, sizeof(Temp));
Gauge1.Progress:=Stream.Position;
Label1.Caption:=IntToStr(Stream.Position);
Label2.Caption:=IntToStr(Stream.Size);
Form1.Update;
Application.ProcessMessages;
end;
Stream.Free;
Stream1.Free;
end;
Взято с Vingrad.ru