Delphi - база знаний

       

Докачка файлов по сети ( 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




Содержание раздела