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

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

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

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

Сообщение Сквозняк » 26.12.2006 13:25:37

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

Сообщение mif » 26.12.2006 15:41:45

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

fdopen и fpopen че-то я не помню таких на паскале.
mif
новенький
 
Сообщения: 71
Зарегистрирован: 14.12.2005 10:09:27

Сообщение shade » 26.12.2006 16:36:17

Сквозняк писал(а):rewrite при открытии большого файла просто усекает его до 0
rewrite все файлы усекает до 0
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение Сквозняк » 26.12.2006 17:18:14

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

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


Никогда через потоки не читал, не думал что для простой задачи придётся так извращаться. fdopen и fpopen - системные вызовы, для их использования в строке uses нужно добавить oldlinux или unix, baseunix Намного удобнее, только для вычисления длины файла нужно позицию передвигать в конец. А задача простая и не только с 2 гектарами а с 4 и больше. Имеется утилита, текстовой визуализатор, я в ней книжки читаю. Почти доделал, но пользоваться уже можно. Со времён нортона имеется привычка просматривать в визуализаторе не только текстовики. А тут большие архивы, образы на диске лежат. Для просмотра недоступны :(
Сквозняк
энтузиаст
 
Сообщения: 1126
Зарегистрирован: 29.06.2006 22:08:32

Сообщение Sergei I. Gorelkin » 26.12.2006 20:46:48

Если мне память не изменяет, поддержка файлов размером более 2Гб на платформах, отличных от Windows, появилась все-таки позже версии 2.0.2. Причем появилась она именно для потоков (TStream) и функции FileSeek(). Насчет 'обычных' файлов (Assign/reset/rewrite) - скорее нет чем да, хотя все равно проверять надо.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1407
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение mif » 26.12.2006 23:43:37

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

ну почему извращаться. Вполне нормально, тк файлы здоровенные, через потоки будет быстрей.
mif
новенький
 
Сообщения: 71
Зарегистрирован: 14.12.2005 10:09:27

Сообщение Alexander » 27.12.2006 01:22:18

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

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

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

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

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

Assign
Reset, Rewrite, Append
Close
Аватара пользователя
Alexander
энтузиаст
 
Сообщения: 821
Зарегистрирован: 18.12.2005 19:10:00
Откуда: оттуда

Сообщение Сквозняк » 28.12.2006 13:06:39

( Уже обновлялся - курсор повисает после первого клика мышки. Буду пробовать по новой, авось пронесёт.
Сквозняк
энтузиаст
 
Сообщения: 1126
Зарегистрирован: 29.06.2006 22:08:32


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

Рейтинг@Mail.ru