![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
FTP индикация закачки больших файлов [D6, WinXP]
Real © (2008-04-07 15:26:00)Использую NMFTP для закачки файлов на сервер. Если файл больше 2 ГБ, то наблюдается глюк индикации: процент больше 250 и идет вниз :) Код, в обработчкике отправки очередного пакета (и расчета прогресса в процентах такой):
procedure TFMain.FTPPacketSent(Sender: TObject);
var
sent_kb,total_kb: int64;
r: Extended;
pr: byte;
begin
sent_kb:=Trunc(FTP.BytesSent/1024);
total_kb:=Trunc(FTP.BytesTotal/1024);
r:=(sent_kb*100)/total_kb;
pr:=Trunc(r);
Application.Title:='Upload - '+IntToStr(pr)+'%';
FProcess.Progress.Position:=pr;
end;
Не могу понять, с чем связан глюк. На файлах меньше 2ГБ - все ок. Может быть компонент не расчитан на такие объемные файлы (или внутренный числовой тип ограничен) и отсюда ошибки? Кто сталкивался с таким?
Real (2008-04-21 02:06:00) [1]
Reindeer Moss Eater
Спасибо за совет! Работает!!!
clickmaker (2008-04-09 10:39:00) [2]
> В Delphi 6 какая версия Indy никто не в курсе?
а в принципе не важно. Можно качнуть с индейского сайта, да обновить
в Д7 вроде 9
Reindeer Moss Eater (2008-04-08 21:41:00) [3]ShowMessage(IntToStr(SizeOf(Integer)) + ' ' + IntToStr(SizeOf(Cardinal)) + IntToStr(SizeOf(int64)) )
ку?
Real (2008-04-08 19:45:00) [4]
> var
> i : integer; pc : pcardinal;
> begin
> i := 3000000000;
> pc := @i;
> ShowMessage(IntToStr(i) + ' ' + IntToStr(pc^));
Гм, интересная мысль, надо затестить! А почему предлагаешь именно cardinal? int64 ведь круче будет? (а то завтра террабайтовые размеры пойдут еще вдруг :)
Real (2008-04-08 19:41:00) [5]
> в Indy 10 (а может уже и в 9) есть поддержка 64-битных размеров
Не хочется на Indy... Ну наверное придется. А как узнать версию? В Delphi 6 какая версия Indy никто не в курсе?
clickmaker (2008-04-08 11:56:00) [6]в Indy 10 (а может уже и в 9) есть поддержка 64-битных размеров
Сергей М. (2008-04-08 09:14:00) [7]
> Исходник нужен для перекомпиляции с int64
У Борланда спроси.
Reindeer Moss Eater (2008-04-07 23:39:00) [8]глюк только визуальный, сам upload от этого не страдает)
var
i : integer; pc : pcardinal;
begin
i := 3000000000;
pc := @i;
ShowMessage(IntToStr(i) + ' ' + IntToStr(pc^));
Real (2008-04-07 22:43:00) [9]
> Так ведь и без исходников уже ясно, что там integer.
Исходник нужен для перекомпиляции с int64
Reindeer Moss Eater (2008-04-07 21:05:00) [10]Делай подпорку сбоку.
Если свойство имеет отрицательное значение, приводи его к беззнаковому.
Reindeer Moss Eater (2008-04-07 21:03:00) [11]Так ведь и без исходников уже ясно, что там integer.
Real (2008-04-07 20:52:00) [12]Гм... а у меня нету исходника nmftp.pas Само свойство в подсказке отображается как Integer (Delphi 6, а предельный размер на файл такой смешной :) Народ, у кого есть исходник модуля, закиньте плиз. Или может у кого есть DCU обновленной версии или вообще какой-нить продвинутый FTP-компонент по мотивам NMFTP (Indy не хотелось бы, софтина в активном использовании, новое тестирование начинать не хотелось бы, глюк только визуальный, сам upload от этого не страдает)
Reindeer Moss Eater (2008-04-07 15:35:00) [13]проверь тип BytesTotal и BytesSent
Reindeer Moss Eater (2008-04-07 15:31:00) [14]где-то есть intеger. В нем и косяк.