|
Вопрос # 6 519/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
пишу программу для самообновления программы столкнулся с проблемкой, ex-e файлы почему то не скачивает, то есть якобы скачал но из 2мб получается 17кб. winrar-ские файлы скачивает
вот код:
К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)
Приложение: Переключить в обычный режим- function ExtractUrlFileName(url: string): string;
- var
- A: LongInt;
- begin
-
- result := '';
- A := LastDelimiter('/', url);
- if (A > 0) and (url[A] = '/') then
- result := Copy(url, A + 1, Length(url) - A);
- end;
-
- function GetInetFileSize(const FileUrl: string): integer;
- var
- IdHTTP: TIdHTTP;
- begin
-
- IdHTTP := TIdHTTP.Create(nil);
- try
-
-
-
- except
- IdHTTP.Free;
- end;
- end;
-
- procedure TDownload.Execute;
- const
- BufferSize = 1024;
- var
- stream: TMemoryStream;
- FName: String;
- http: TIdHTTP;
- begin
- FName := 'C:\' + ExtractUrlFileName(Form13.ed.Text);
- http := TIdHTTP.Create(nil);
- http.OnWork := OnWork;
- http.OnWorkBegin := OnWorkBegin;
- http.OnWorkEnd := OnWorkEnd;
- stream := TMemoryStream.Create;
-
- if size > 0 then
- try
-
-
-
-
-
- except
-
-
- end
- else
-
- end;
-
- procedure TDownload.OnWork(ASender: TObject; AWorkMode: TWorkMode;
- AWorkCount: Int64);
- begin
-
-
- (RoundTo(AWorkCount / (1024 * 1024), -2)) + ' MB.';
- end;
-
- procedure TDownload.OnWorkBegin(ASender: TObject; AWorkMode: TWorkMode;
- AWorkCountMax: Int64);
- begin
-
-
- end;
-
- procedure TDownload.OnWorkEnd(Sender: TObject; AWorkMode: TWorkMode);
- begin
-
-
- end;
-
- procedure TForm13.btClick(Sender: TObject);
- begin
- TDownload.Create(false);
- end;
 |
Вопрос задал: casio (статус: Посетитель)
Вопрос отправлен: 9 марта 2014, 12:53
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 26; последнее сообщение — 9 марта 2014, 18:08; участников в обсуждении: 2.
Страницы: [« Предыдущая] [1] [2]
|
min@y™ (статус: Доктор наук), 9 марта 2014, 16:20 [#22]:
Цитата (casio):
не ну на вкус и цвет товарища нет  ключик до 15 года надыбал и все четенько!
Я компами с 1990 года занимаюсь, перепробовал просто дохрена антивирусов (а как в инет полез - и файрволлов). Остановил свой выбор на том комбайне, что у меня в данный момент. Лет 5, наверное, юзаю и бед не знаю. Ставлю на все компы, с которыми приходится иметь дело, пока никто не жаловался.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 9 марта 2014, 16:47 [#23]:
Вот тебе до кучи ещё от меня немного кода. А то, чтой-то мне не нравится твоя конструкция типа:
sizes := floattostr(RoundTo(size / (1024 * 1024), -2)); // Переводим в МБ
У меня оно как-то попроще, что-ли...
// Преобразование размера файла в строку
function FileSize2Str(const ASize: Int64): string;
begin
if ASize < 1024
then Result:= IntToStr(ASize) + ' байт'
else if ASize < 1048576
then Result:= FloatToStrF(ASize / $400, ffFixed, 15, 2) + ' Кб' //IntToStr(ASize div 1024) + ' Кб'
else Result:= FloatToStrF(ASize / $100000, ffFixed, 15, 2) + ' Мб'; //IntToStr(ASize div 1048576) + ' Мб'
end;
Вот ещё, на всякий случай:
function Speed2Str(const ASpeed: Cardinal): string;
// Форматирование скорости закачки в строку.
// Параметр ASpeed - скорость в байт/сек
var
sp: Double;
Suffix: string;
begin
if ASpeed < 1048576 // < 1МБ/с
then begin
Suffix:= ' Кб/с';
sp:= ASpeed / 1024;
end
else begin // >= 1МБ/с
Suffix:= ' Мб/с';
sp:= ASpeed / 1048576;
end;
//Result:= FloatToStrF(sp, ffFixed, 2, 2) + Suffix;
Result:= FormatFloat('0.00', sp) + Suffix;
end;
Ну и вот ещё:
// Извлечение имены файла из прямой ссылки
function ExtractFileNameFromURL(const AURL: string): string;
var
Index: Integer;
begin
Result:= '';
for Index:= Length(AURL) downto 1 do
if AURL[Index] <> '/'
then Result:= AURL[Index] + Result
else Break;
end;
З.Ы. Когда мне было надо делать закачку из инета, чой-то было стрёмно как-то юзать Indy или какие другие компоненты. Написал вручную (так отлаживать проще) с помощью API-функций из WinInet.pas. Могу дать исходник посмотреть.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 9 марта 2014, 17:06 [#25]:
Цитата (casio):
давай
Да на, мне не жалко.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
Страницы: [« Предыдущая] [1] [2]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|