Название: QFile и файлы больше 2GB под Windows Отправлено: Sega от Май 15, 2005, 22:18 Как решить проблему при работе с большими файлами в QT 3.1.2 под Windows. В качестве указателя позиции файла используется тип int, что и является проблемой при работе с файлами больше 2GB.
Название: QFile и файлы больше 2GB под Windows Отправлено: Keiko от Май 16, 2005, 00:23 странно, http://webcvs.kde.org/*checkout*/qt-copy/Attic/changes-3.1.0-beta1
Написано, что поддерживается. Название: QFile и файлы больше 2GB под Windows Отправлено: Sega от Май 16, 2005, 01:01 Да в Solaris поддерживается. Меня интерисует, как это сделать под Windows. Где почему-то в функции QFile::at(Offset pos) Offset на самом деле определен как int, хотя логично бы использовать __int64.
Название: QFile и файлы больше 2GB под Windows Отправлено: Sergeich от Май 16, 2005, 14:51 У меня была такая же проблема: QT-шники советовали для поддержки больших файлов зафигачить configure с параметром -largefile (под линухом) или чем-то вроде того. Но проблемы это не решало, как я не изголялся sizeof( QIODevice::Offset ) все равно был равен 4. В итоге я плюнул на QFile и стал юзать низкоуровневый ввод/вывод. В итоге пришлось написать свою ф-цию сдвига
Код:
плюс добавить в *.pro-файл строчки Код:
Название: QFile и файлы больше 2GB под Windows Отправлено: Sergeich от Май 16, 2005, 14:54 Да, кстати. Вроде бы в Qt4 все эти проблемы решены: там везде юзается int64
Название: QFile и файлы больше 2GB под Windows Отправлено: Ruslan Popov от Май 16, 2005, 16:26 Есть подозрение, что дело в файловой системе.
Вы точно не используете FAT32? Название: QFile и файлы больше 2GB под Windows Отправлено: Sega от Май 16, 2005, 16:39 Я использую ntfs. Как временное решение использую низкоуровневый ввод вывод. Просто так теряется кроссплатформенность. Мне прогу на sun компилить тоже надо. Там с большими файлами все в порядке. Странно что с windows такая проблема.
Название: QFile и файлы больше 2GB под Windows Отправлено: Admin от Май 16, 2005, 21:57 Цитата: "Ruslan Popov" Есть подозрение, что дело в файловой системе. Вы точно не используете FAT32? это одна из причин но они же сказали у них есть int который под windows равен long в Delphi и Borland появились типы типа long long 8 байт так же в gcc такой тип есть Название: QFile и файлы больше 2GB под Windows Отправлено: Sega от Май 16, 2005, 22:52 Файловая система тут не причем. Максимальный размер файла в FAT32 4 Тбайт. У меня вообще это вылезло на NTFS.
В микрософтовском компиляторе есть специальный тип __int64. Он и используется в _lseeki64. А тут Trolltech явно промахнулось. Вот в qt4 действительно уже все ок. Но посмотрев исходники понимаешь, что и в QT3 это как бы задумано, но к сожалению не работает. Название: QFile и файлы больше 2GB под Windows Отправлено: Sergeich от Май 17, 2005, 14:10 Цитата: "Sega" Максимальный размер файла в FAT32 4 Тбайт. Ну это ты загнул :D . Больше 2Гб туды не запихнешь :( Название: QFile и файлы больше 2GB под Windows Отправлено: Sega от Май 17, 2005, 18:58 Загнул точно. Максимальный размер файла для fat32 все же не 2, а 4GB.
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q314463&ID=kb;en-us;Q314463 Название: QFile и файлы больше 2GB под Windows Отправлено: Sergeich от Май 18, 2005, 00:19 Это теория ( от Microsoft ). На практике при размере файла больше 2Гб начинаются глюки.
|