Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.10.25;
Скачать: CL | DM;

Вниз

FTP индикация закачки больших файлов   Найти похожие ветки 

 
Real ©   (2008-04-07 15:26) [0]

Использую 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ГБ - все ок. Может быть компонент не расчитан на такие объемные файлы (или внутренный числовой тип ограничен) и отсюда ошибки? Кто сталкивался с таким?


 
Reindeer Moss Eater ©   (2008-04-07 15:31) [1]

где-то есть intеger. В нем и косяк.


 
Reindeer Moss Eater ©   (2008-04-07 15:35) [2]

проверь тип BytesTotal и BytesSent


 
Real ©   (2008-04-07 20:52) [3]

Гм... а у меня нету исходника nmftp.pas Само свойство в подсказке отображается как Integer (Delphi 6, а предельный размер на файл такой смешной :) Народ, у кого есть исходник модуля, закиньте плиз. Или может у кого есть DCU обновленной версии или вообще какой-нить продвинутый FTP-компонент по мотивам NMFTP (Indy не хотелось бы, софтина в активном использовании, новое тестирование начинать не хотелось бы, глюк только визуальный, сам upload от этого не страдает)


 
Reindeer Moss Eater ©   (2008-04-07 21:03) [4]

Так ведь и без исходников уже ясно, что там integer.


 
Reindeer Moss Eater ©   (2008-04-07 21:05) [5]

Делай подпорку сбоку.
Если свойство имеет отрицательное значение, приводи его к беззнаковому.


 
Real ©   (2008-04-07 22:43) [6]


> Так ведь и без исходников уже ясно, что там integer.

Исходник нужен для перекомпиляции с int64


 
Reindeer Moss Eater ©   (2008-04-07 23:39) [7]

глюк только визуальный, сам upload от этого не страдает)

var
i : integer; pc : pcardinal;
begin
i := 3000000000;
pc := @i;
ShowMessage(IntToStr(i) + " " + IntToStr(pc^));


 
Сергей М. ©   (2008-04-08 09:14) [8]


> Исходник нужен для перекомпиляции с int64


У Борланда спроси.


 
clickmaker ©   (2008-04-08 11:56) [9]

в Indy 10 (а может уже и в 9) есть поддержка 64-битных размеров


 
Real ©   (2008-04-08 19:41) [10]


> в Indy 10 (а может уже и в 9) есть поддержка 64-битных размеров

Не хочется на Indy... Ну наверное придется. А как узнать версию? В Delphi 6 какая версия Indy никто не в курсе?


 
Real ©   (2008-04-08 19:45) [11]


> var
> i : integer; pc : pcardinal;
> begin
> i := 3000000000;
> pc := @i;
> ShowMessage(IntToStr(i) + " " + IntToStr(pc^));

Гм, интересная мысль, надо затестить! А почему предлагаешь именно cardinal? int64 ведь круче будет? (а то завтра террабайтовые размеры пойдут еще вдруг :)


 
Reindeer Moss Eater ©   (2008-04-08 21:41) [12]

ShowMessage(IntToStr(SizeOf(Integer)) + " " + IntToStr(SizeOf(Cardinal)) + IntToStr(SizeOf(int64)) )

ку?


 
clickmaker ©   (2008-04-09 10:39) [13]


> В Delphi 6 какая версия Indy никто не в курсе?

а в принципе не важно. Можно качнуть с индейского сайта, да обновить
в Д7 вроде 9


 
Real ©   (2008-04-21 02:06) [14]


Reindeer Moss Eater

Спасибо за совет! Работает!!!



Страницы: 1 вся ветка

Текущий архив: 2009.10.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.019 c
2-1251174172
Danila.R
2009-08-25 08:22
2009.10.25
Как вводя данные в Edit, вывести их в Мемо?


15-1251059406
Юрий
2009-08-24 00:30
2009.10.25
С днем рождения ! 24 августа 2009 понедельник


15-1251525036
TUser
2009-08-29 09:50
2009.10.25
Умный хостинг?


2-1251206612
Дмитрий_
2009-08-25 17:23
2009.10.25
TStrngList.AddObject..?


2-1251702004
wah
2009-08-31 11:00
2009.10.25
XP Style и Standard