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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2014, 17:02   #1
mogo
Пользователь
 
Регистрация: 12.02.2014
Сообщений: 40
По умолчанию Ошибка при загрузке файла (через IdHTTP )

Код:
var
Stream:TMemoryStream;
begin
try
Form7.IdHTTP1.Request.UserAgent := 'Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.2.15 Version/10.10';
version:=Form7.IdHTTP1.Get('ССылка/v.txt');
Form7.idhttp1.Get('ССылка/run.exe',Stream);
Stream.SaveToFile(ExtractFilePath(Application.ExeName)+('run-v.'+version+'.exe'));
except
on e:Exception do
Stream.Free;
end;
showmessage('Успешно загружено и сохранено: '+ExtractFilePath(Application.ExeName)+'Vk-Soft-v.'+version+'.exe');
end;
В чем тут ошибка? Вроде все загружает нормально, но почему то по окончанию загрузки файл весит 0 кб.

Последний раз редактировалось mogo; 14.02.2014 в 17:15.
mogo вне форума Ответить с цитированием
Старый 14.02.2014, 17:25   #2
Vad33
Участник клуба
 
Аватар для Vad33
 
Регистрация: 24.07.2009
Сообщений: 1,136
По умолчанию

Цитата:
Сообщение от mogo Посмотреть сообщение
Код:
var
Stream:TMemoryStream;
begin
try
Form7.IdHTTP1.Request.UserAgent := 'Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.2.15 Version/10.10';
version:=Form7.IdHTTP1.Get('ССылка/v.txt');
Form7.idhttp1.Get('ССылка/run.exe',Stream);
Stream.SaveToFile(ExtractFilePath(Application.ExeName)+('run-v.'+version+'.exe'));
except
on e:Exception do
Stream.Free;
end;
showmessage('Успешно загружено и сохранено: '+ExtractFilePath(Application.ExeName)+'Vk-Soft-v.'+version+'.exe');
end;
В чем тут ошибка? Вроде все загружает нормально, но почему то по окончанию загрузки файл весит 0 кб.
Оно точно отрабатывает нормально?
Судя по коду, при ошибке она просто перехватывается и даже ничего
не сообщается. А потом выводится сообщение об успехе.
Под отладкой запускать пробовали?
** Удача терпелива. **
Vad3333@inbox.ru

Последний раз редактировалось Vad33; 14.02.2014 в 17:28.
Vad33 вне форума Ответить с цитированием
Старый 14.02.2014, 17:47   #3
mogo
Пользователь
 
Регистрация: 12.02.2014
Сообщений: 40
По умолчанию

Цитата:
Сообщение от Vad33 Посмотреть сообщение
Оно точно отрабатывает нормально?
Судя по коду, при ошибке она просто перехватывается и даже ничего
не сообщается. А потом выводится сообщение об успехе.
Под отладкой запускать пробовали?
Тоесть данный пример загрузки не оч? Можно пример как лучше реализовать загрузку файла?
mogo вне форума Ответить с цитированием
Старый 14.02.2014, 18:13   #4
Vad33
Участник клуба
 
Аватар для Vad33
 
Регистрация: 24.07.2009
Сообщений: 1,136
По умолчанию

Цитата:
Сообщение от mogo Посмотреть сообщение
Тоесть данный пример загрузки не оч? Можно пример как лучше реализовать загрузку файла?
Данный пример обработки ошибок не оч.
Про загрузку сложно сказать по 3 строчкам кода выдранным из середины.
Еще раз совет: запустите по отладкой и посмотрите на каждом шаге,
что происходит.
** Удача терпелива. **
Vad3333@inbox.ru
Vad33 вне форума Ответить с цитированием
Старый 14.02.2014, 19:08   #5
mogo
Пользователь
 
Регистрация: 12.02.2014
Сообщений: 40
По умолчанию

еще во время загрузки иногда вылазиют ошибки, например не верный дескриптор и еще какаето
mogo вне форума Ответить с цитированием
Старый 14.02.2014, 19:37   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
но почему то по окончанию загрузки файл весит 0 кб.
Не удивительно. Ты позицию в стриме в начало не переводишь после загрузки.

Рекомендую так:
Код:
var
Stream:TMemoryStream; 
begin
 Stream:=TMemoryStream.create;
try
 Form7.IdHTTP1.Request.UserAgent := 'Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.2.15 Version/10.10';
 version:=Form7.IdHTTP1.Get('ССылка/v.txt');
 Form7.idhttp1.Get('ССылка/run.exe',Stream);
 Stream.Position:=0;
 Stream.SaveToFile(ExtractFilePath(Application.ExeName)+('run-v.'+version+'.exe'));
 showmessage('Успешно загружено и сохранено: '+ExtractFilePath(Application.ExeName)+'Vk-Soft-v.'+version+'.exe');
except
 on e:Exception do showmessage('Фигвам');
end;
Stream.Free;

end;
I'm learning to live...

Последний раз редактировалось Stilet; 14.02.2014 в 19:42.
Stilet вне форума Ответить с цитированием
Старый 14.02.2014, 21:54   #7
mogo
Пользователь
 
Регистрация: 12.02.2014
Сообщений: 40
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Не удивительно. Ты позицию в стриме в начало не переводишь после загрузки.

Рекомендую так:
Код:
var
Stream:TMemoryStream; 
begin
 Stream:=TMemoryStream.create;
try
 Form7.IdHTTP1.Request.UserAgent := 'Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.2.15 Version/10.10';
 version:=Form7.IdHTTP1.Get('ССылка/v.txt');
 Form7.idhttp1.Get('ССылка/run.exe',Stream);
 Stream.Position:=0;
 Stream.SaveToFile(ExtractFilePath(Application.ExeName)+('run-v.'+version+'.exe'));
 showmessage('Успешно загружено и сохранено: '+ExtractFilePath(Application.ExeName)+'Vk-Soft-v.'+version+'.exe');
except
 on e:Exception do showmessage('Фигвам');
end;
Stream.Free;

end;
Спасибо, выручили! А еще, можно как то в этом же примере определить скорость загрузки файла?
mogo вне форума Ответить с цитированием
Старый 14.02.2014, 22:04   #8
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 18,136
По умолчанию

Цитата:
А еще, можно как то в этом же примере определить скорость загрузки файла?
Засечь время и посчитать количество битов переданных за него.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 14.02.2014, 22:20   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
определить скорость загрузки файла?
Не помню чтоб Get такое позволяла.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.02.2014, 22:57   #10
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

а разве события в компоненте не для этого созданы?
ZuBy вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при загрузке массива из файла Damik Общие вопросы Delphi 1 14.02.2013 10:46
Ошибка при загрузке XML файла Alter Общие вопросы Delphi 4 25.09.2011 13:58
Ошибка при загрузке файла через броузер _PROGRAMM_ PHP 6 24.01.2011 08:52
Ошибка компонента TADOQuery при загрузке запроса из файла в Delphi 2006 WhiteKoS Помощь студентам 2 16.02.2008 15:07
Ошибка при загрузке файла html Ign Microsoft Office Excel 1 11.11.2007 13:55