Помогите советом !!!

 
0
 
Delphi, Kylix & Pascal
ava
experiencedbeginner | 11.04.2013, 22:00
Занимаюсь программированием недавно. Мне в программе надо получить список файлов каталога и их размер.
Для некоторых файлов получаю отрицательное число при определении размера файла, использую функцию API:

q2:=ShellTreeView1.Path+'\*.*';
if FindFirst(q2,faAnyFile,sr)=0 then
   repeat
   if sr.size>0 then
      begin
      q:=sr.Name;
      i:=sr.size;
      ....
      и т.д.

Пожалуйста, подскажите, что делаю не так. Или возможен другой способ получить список файлов с их размерами, без использования API?
Comments (2)
ava
Чучмек | 11.04.2013, 22:47 #
experiencedbeginner,
Поле TSearchRec.Size имеет тип Integer  знаковое целое 4 байта [-2147483648...2147483647]
Потому если размер файла больше 2147483647, получишь отрицательное число.
Если размер файла больше 4294967295, то вообще получишь  только  4 младших  байта от  размера.
Для получения размера используй

Size:=(Int64(SearchRec.FindData.nFileSizeHigh) shl 32 or SearchRec.FindData.nFileSizeLow);  //Size:Int64

Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit