Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2010, 17:39   #11
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

как показала практика, то не все проблемы это решает, много поточность лучше.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.07.2010, 07:44   #12
fezilk24
Заблокирован
 
Регистрация: 16.11.2009
Сообщений: 85
Счастье

В новом проекте снова требуется скачивание файла, делаю так:

Код:
var
  Form3: TForm3;
  T:TCriricalThread;

procedure TForm3.AdvGlowButton2Click(Sender: TObject);
begin
progressbar1.Visible := true;
  T:=TCriricalThread.Create(false);
end;

procedure TForm3.IdHTTP1Work(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCount: Int64);
begin
 ProgressBar1.Position:=Int64(AWorkCount);
end;


procedure TForm3.IdHTTP1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
  AWorkCountMax: Int64);
begin
ProgressBar1.Max := Int64(AWorkCountMax);
end;

procedure TCriricalThread.Execute;
var
  fs : TFileStream;
  FILENAME:string;
begin
  filename:=form3.AdvEdit2.Text+form3.listview1.Items[form3.ListView1.ItemIndex].SubItems[0]+' - '+form3.listview1.Items[form3.ListView1.ItemIndex].SubItems[1]+'.mp3';
  ForceDirectories(ExtractFilePath(FileName));
  fs := TFileStream.Create(filename,fmCreate or fmOpenReadWrite);
  form3.IdHTTP1.Get(form3.Edit1.Text,fs);
  fs.Free;
end;

Файл качается нормально, а ProgressBar криво отображается - сразу на 100%. Подскажите, пожалуйста, где я допустил ошибку..

И еще - при закрытии формы (если файл еще качается) вылетает ошибка 'disconnected', это наверное нехорошо?
fezilk24 вне форума Ответить с цитированием
Старый 06.02.2011, 13:29   #13
fezilk25
Форумчанин
 
Регистрация: 01.08.2010
Сообщений: 124
По умолчанию

Как только жму кнопку "Скачать", создается файл, размером 4,3 МВ. (полный размер закачивающегося файла)
На самом деле файл ещё не скачался. Как реализовать создание файла с ПРАВИЛЬНЫМ размером, т.е. размер файла = кол-ву скачанных байт?

Код:
unit Unit1;



interface



uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, ComCtrls, IdBaseComponent, IdComponent,

  IdTCPConnection, IdTCPClient, IdHTTP;



type

  TForm1 = class(TForm)

    Button1: TButton;

    IdHTTP1: TIdHTTP;

    Edit1: TEdit;

    Label1: TLabel;

    ProgressBar1: TProgressBar;

    procedure Button1Click(Sender: TObject);

    procedure IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;

      const AWorkCount: Integer);

    procedure IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;

      const AWorkCountMax: Integer);

  private

    { Private declarations }

  public

    { Public declarations }

  end;



  TCriricalThread = class(TThread)

  private

  protected

    procedure Execute; override;

  end;



var

  Form1: TForm1;



implementation



{$R *.dfm}



procedure TForm1.Button1Click(Sender: TObject);

var

  CriricalThread: TCriricalThread;

begin

  CriricalThread:=TCriricalThread.Create(true);

  CriricalThread.Resume;

end;



{ TCriricalThread }



procedure TCriricalThread.Execute;

var

  fs : TFileStream;

begin

  fs := TFileStream.Create('c:\1.txt',fmCreate or fmOpenReadWrite);

  form1.IdHTTP1.Get(form1.Edit1.Text,fs);

  MessageBox(Application.Handle,'Скачано','Готово',0);

  fs.Free;

end;



procedure TForm1.IdHTTP1Work(Sender: TObject; AWorkMode: TWorkMode;

  const AWorkCount: Integer);

begin

  ProgressBar1.Position := Int64(AWorkCount);

end;



procedure TForm1.IdHTTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode;

  const AWorkCountMax: Integer);

begin

  ProgressBar1.Max := Int64(AWorkCountMax);

end;



end.
fezilk25 вне форума Ответить с цитированием
Старый 06.02.2011, 13:52   #14
exn
Пользователь
 
Регистрация: 06.02.2011
Сообщений: 51
По умолчанию

в IdIOHandler закомментируй // AStream.Size := ASize;
exn вне форума Ответить с цитированием
Старый 06.02.2011, 14:15   #15
fezilk25
Форумчанин
 
Регистрация: 01.08.2010
Сообщений: 124
По умолчанию

Это где? =)
fezilk25 вне форума Ответить с цитированием
Старый 06.02.2011, 14:22   #16
exn
Пользователь
 
Регистрация: 06.02.2011
Сообщений: 51
По умолчанию

это в indy )
exn вне форума Ответить с цитированием
Старый 07.02.2011, 18:35   #17
fezilk25
Форумчанин
 
Регистрация: 01.08.2010
Сообщений: 124
По умолчанию

Не могу найти этот IdIOHandler.pas, пишет Source File not found. Delphi 2010.
fezilk25 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скачивание файла из интернета по ссылке smith45 Microsoft Office Excel 24 24.01.2012 13:15
Скачивание файла winsock Horus92 Работа с сетью в Delphi 13 25.02.2011 13:29
Частичное скачивание файла Usov Работа с сетью в Delphi 1 19.10.2009 21:45
Скачивание файла Lemo Помощь студентам 16 28.07.2009 22:54
Скачивание файла с прогрессом CoDeR Работа с сетью в Delphi 2 22.10.2007 09:10