Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Докачка файлов по сети (NetBios)

Автор: http://forum.vingrad.ru

Мне вот все интересно было...думал проги, которые файлы по сети докачивают как-то хитро с нетбиосом работают...И вот решил попробовать написать нечто подобное...Токо похоже все они ( проги ) про нетбиос и слыхом не слыхивали...нашел простейшее решение этой проблемы... Код некрасивый, потому как писал чисто для проверки...более того, тут надо переписать его весь, но общий смысл должен быть понятен...я разочарован :((

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;
Проект Delphi World © Выпуск 2002 - 2024
Автор проекта: USU Software
Вы можете выкупить этот проект.