|
|
|
Как определить размер файла, если он больше 2 Гб?
|
|||
|---|---|---|---|
|
#18+
Для работы мне необходимо определить размер файла, размер диска и размер свободного места на диске. Использовать FSO (FileSystemObject) нельзя, так как он работает при объемах до 2 Гб. А если больше? Для определения свободного места на диске я воспользовался функцией API - GetDiskFreeSpaceEx. Всё отработало нормально. А вот с определением размера файла - проблема. Я использую функцию API - GetFileSize. Для файлов до 2 Гб она работает нормально, а вот потом сбоит. И я непойму, в чем тут дело. Пример кода Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 15:52 |
|
||
|
Как определить размер файла, если он больше 2 Гб?
|
|||
|---|---|---|---|
|
#18+
GetDiskFreeSpaceEx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 16:03 |
|
||
|
Как определить размер файла, если он больше 2 Гб?
|
|||
|---|---|---|---|
|
#18+
Тьфу. Прочитал по диагонали, пардон. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 16:04 |
|
||
|
Как определить размер файла, если он больше 2 Гб?
|
|||
|---|---|---|---|
|
#18+
Joss, на NTFS почти всё с этим кодом в порядке. "Почти" потому, что для файлов с размером 2^31..2^32-2 выдастся сообщение с отрицательным размером файла - из-за того, что размер печатается как signed long, а не как unsigned long. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 16:32 |
|
||
|
Как определить размер файла, если он больше 2 Гб?
|
|||
|---|---|---|---|
|
#18+
БенедиктJoss, на NTFS почти всё с этим кодом в порядке. "Почти" потому, что для файлов с размером 2^31..2^32-2 выдастся сообщение с отрицательным размером файла - из-за того, что размер печатается как signed long, а не как unsigned long. тогда если файл больше 4гб, тебе покажыт значительно более низкую цифру. если вообще покажут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 16:40 |
|
||
|
Как определить размер файла, если он больше 2 Гб?
|
|||
|---|---|---|---|
|
#18+
У меня файл имеет размер 3 563 978 752 байта. А программа выдает Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 17:03 |
|
||
|
Как определить размер файла, если он больше 2 Гб?
|
|||
|---|---|---|---|
|
#18+
Joss, ну, правильно. -730988544l = 0xD46E0000 = 3563978752ul. Что делать - показывать его, как unsigned. Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 17:29 |
|
||
|
Как определить размер файла, если он больше 2 Гб?
|
|||
|---|---|---|---|
|
#18+
Aklin, проблема только с показом - проблем с двоичным представлением нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 17:31 |
|
||
|
Как определить размер файла, если он больше 2 Гб?
|
|||
|---|---|---|---|
|
#18+
JossИспользовать FSO (FileSystemObject) нельзя, так как он работает при объемах до 2 Гб. Почему? Вот расширенный пример на все параметры файла на VBA из книжки. Все прекрасно работает. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 17:42 |
|
||
|
Как определить размер файла, если он больше 2 Гб?
|
|||
|---|---|---|---|
|
#18+
to Бенедикт А что означает число 2147483648# ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 17:48 |
|
||
|
Как определить размер файла, если он больше 2 Гб?
|
|||
|---|---|---|---|
|
#18+
to Бенедикт Извини, затуркался 2Гб = 2147483648# to k-nike Проверил - работает, но и справочнике В.И. Короля и на MSDN (только сегодня лазил) утверждают, что правильный размер только для файлов менее 2 Гб. А из какой книги ты брал пример? ------------------------------- А, ты, вложил уже свой кровный рубль в 50-ти миллиардное состояние Билла Гейтса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 17:56 |
|
||
|
Как определить размер файла, если он больше 2 Гб?
|
|||
|---|---|---|---|
|
#18+
JossА из какой книги ты брал пример? "Самоучитель VBA" 2-ое издание, Андрей Гарнаев, "БХВ-Петербург" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 18:02 |
|
||
|
Как определить размер файла, если он больше 2 Гб?
|
|||
|---|---|---|---|
|
#18+
Joss, FileSystemObject.Size возвращает Variant. До 2^31-1 этот Variant имеет подтип Long, а для 2^31..(предположительно)2^53-1 - Double. Для практических целей достаточно. Но, возможно, так было не во всех версиях Scripting Runtime. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 18:09 |
|
||
|
Как определить размер файла, если он больше 2 Гб?
|
|||
|---|---|---|---|
|
#18+
У меня через FSO прекрасно выводит информацию о размерах, файлов, у которых он более чем 2 гига, а именно 4 гига и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2006, 20:06 |
|
||
|
|

start [/forum/topic.php?fid=60&fpage=262&tid=2165129]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
72ms |
get topic data: |
15ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 248ms |
| total: | 444ms |

| 0 / 0 |
