Чтение файлов в линуксе

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
Сквозняк
энтузиаст
Сообщения: 1159
Зарегистрирован: 29.06.2006 22:08:32

Чтение файлов в линуксе

Сообщение Сквозняк »

Тестил на ASPLinuks11, FPC 2.0.2. fdopen и fpopen нормально открывают файлы только до 2Гб. reset после 2Гб выдаёт ошибку 27 rewrite при открытии большого файла просто усекает его до 0. reset к тому же неудобен. Им файл открывается сразу для чтения и записи. Если файл с правом только на чтении, то облом наступает сразу при открытии. Можно чем-то читать и писать файлы с размером больше 2Гб?
mif
новенький
Сообщения: 71
Зарегистрирован: 14.12.2005 09:09:27

Сообщение mif »

Через файловые потоки пробовал ? А какие задачи с этим 2-х гиговым файлом связаны?

fdopen и fpopen че-то я не помню таких на паскале.
Аватара пользователя
shade
энтузиаст
Сообщения: 879
Зарегистрирован: 21.02.2006 19:15:48
Откуда: http://shamangrad.net/
Контактная информация:

Сообщение shade »

Сквозняк писал(а):rewrite при открытии большого файла просто усекает его до 0
rewrite все файлы усекает до 0
Сквозняк
энтузиаст
Сообщения: 1159
Зарегистрирован: 29.06.2006 22:08:32

Сообщение Сквозняк »

mif писал(а):Через файловые потоки пробовал ? А какие задачи с этим 2-х гиговым файлом связаны?

fdopen и fpopen че-то я не помню таких на паскале.


Никогда через потоки не читал, не думал что для простой задачи придётся так извращаться. fdopen и fpopen - системные вызовы, для их использования в строке uses нужно добавить oldlinux или unix, baseunix Намного удобнее, только для вычисления длины файла нужно позицию передвигать в конец. А задача простая и не только с 2 гектарами а с 4 и больше. Имеется утилита, текстовой визуализатор, я в ней книжки читаю. Почти доделал, но пользоваться уже можно. Со времён нортона имеется привычка просматривать в визуализаторе не только текстовики. А тут большие архивы, образы на диске лежат. Для просмотра недоступны :(
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

Если мне память не изменяет, поддержка файлов размером более 2Гб на платформах, отличных от Windows, появилась все-таки позже версии 2.0.2. Причем появилась она именно для потоков (TStream) и функции FileSeek(). Насчет 'обычных' файлов (Assign/reset/rewrite) - скорее нет чем да, хотя все равно проверять надо.
mif
новенький
Сообщения: 71
Зарегистрирован: 14.12.2005 09:09:27

Сообщение mif »

Сквозняк писал(а):Никогда через потоки не читал, не думал что для простой задачи придётся так извращаться.

ну почему извращаться. Вполне нормально, тк файлы здоровенные, через потоки будет быстрей.
Аватара пользователя
Alexander
энтузиаст
Сообщения: 864
Зарегистрирован: 18.12.2005 18:10:00
Откуда: оттуда
Контактная информация:

Сообщение Alexander »

Обновись до FPC 2.0.4 на нём я точно испытывал. В более старых
может не быть.

В качестве типа для переменной в операциях вроде Seek - тип Int64.

Потом не забывай о переменной FileMode := ...

Она определяет файл только для чтения, записи или вместе.

Ну и как всегда:

Assign
Reset, Rewrite, Append
Close
Сквозняк
энтузиаст
Сообщения: 1159
Зарегистрирован: 29.06.2006 22:08:32

Сообщение Сквозняк »

( Уже обновлялся - курсор повисает после первого клика мышки. Буду пробовать по новой, авось пронесёт.
Ответить