Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2009.10.25;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.042 c
2-1251446645
TarenoKostanay
2009-08-28 12:04
2009.10.25
Дескриптор окна


15-1250820480
Alkid
2009-08-21 06:08
2009.10.25
Ура!


15-1250875581
DillerXX
2009-08-21 21:26
2009.10.25
Аудио системы


1-1220066174
Xandr001
2008-08-30 07:16
2009.10.25
Refresh в браузере


2-1251356970
Priest
2009-08-27 11:09
2009.10.25
Как определить, что работаем под 64 разрядной виндой





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский