Старый 03.01.2004, 16:03   #1   
Форумец
 
Сообщений: 23
Регистрация: 29.12.2003

Santec вне форума Не в сети
Обработать файл > 4Gb на Си

Кто-нить реализовывал Сабж? Какими путями делали?
  Ответить с цитированием
Старый 04.01.2004, 12:40   #2   
Форумец
 
Аватар для RomanPshenichny
 
Сообщений: 334
Регистрация: 14.04.2003
Возраст: 42

RomanPshenichny вне форума Не в сети
MSDN:
GetFileSizeEx
SetFilePointerEx

работают с LARGE_INTEGER (64-bit).
  Ответить с цитированием
Старый 04.01.2004, 13:12   #3   
Форумец
 
Сообщений: 23
Регистрация: 29.12.2003

Santec вне форума Не в сети
RomanPshenichny Спасибо, а других путей нет? Я пользуюсь DJGPP компилятором как в нем эти функции вызвать? В Unix этих функций вообще не будет?
  Ответить с цитированием
Старый 04.01.2004, 18:58   #4   
Форумец
 
Аватар для RomanPshenichny
 
Сообщений: 334
Регистрация: 14.04.2003
Возраст: 42

RomanPshenichny вне форума Не в сети
Тебе для какой платформы нужно?
Какая файловая система?

GetFileSizeEx, SetFilePointerEx находятся в <windows.h>
  Ответить с цитированием
Старый 05.01.2004, 10:24   #5   
Форумец
 
Сообщений: 23
Регистрация: 29.12.2003

Santec вне форума Не в сети
Две платформы: Win и FreeBSD, поскольку работу с большими файлами нужно выполнять и там и там. Поэтому я и стремился сделать прогу, которую несложно было бы откомпилировать под обе платформы, отсюда и выбор компиляторов.
Ну а файловая система в Виндах NTFS, а во Фре соответственно ее файловая система.
  Ответить с цитированием
Старый 05.01.2004, 15:17   #6   
Registered User
 
Аватар для netwind
 
Сообщений: 1,905
Регистрация: 25.03.2003

netwind вне форума Не в сети
Нужно определить define :
_FILE_OFFSET_BITS=64 и _LARGEFILE_SOURCE.
После этого станут доступными функции fseeko(3) и сам тип off_t станет 64 битным.
Еще нужно чтобы ядро и libc поддерживали большие файлы.
Современные системы поддерживают.
  Ответить с цитированием
Старый 05.01.2004, 16:38   #7   
Форумец
 
Сообщений: 792
Регистрация: 09.01.2003

Unforgiven вне форума Не в сети
Можно спросить тут: http://www.opennet.ru/cgi-bin/openfo...mID9&conf=misc
  Ответить с цитированием
Старый 19.01.2004, 17:02   #8   
Форумец
 
Сообщений: 23
Регистрация: 29.12.2003

Santec вне форума Не в сети
Спасибо за советы. Скорее всего прийдется делать две программы: одну под винды, вторую под юникс
1)DJGPP не поддерживает _FILE_OFFSET_BITS=64 и _LARGEFILE_SOURCE
2)Под юниксом соответственно не будет GetFileSizeEx и т.п.
  Ответить с цитированием
Старый 19.01.2004, 17:37   #9   
Registered User
 
Аватар для netwind
 
Сообщений: 1,905
Регистрация: 25.03.2003

netwind вне форума Не в сети
Б-же, а для кого придумали препроцессор ?
При написании кроссплатформенных программ обычно пользуются #ifdef, не говоря уже о всевозможных autoconf, а лучше механизмами абстракции.
Например не мешает взглянуть на system abstraction level от Книжника : http://www.garret.ru/~knizhnik/sal.html
(хотя, насколько, я вижу поддержку
больших файлов он не реализовал )
  Ответить с цитированием
Старый 19.01.2004, 18:07   #10   
Форумец
 
Сообщений: 23
Регистрация: 29.12.2003

Santec вне форума Не в сети
netwind Это конечно хоршо, но разбираться проще в двух отдельных небольших файликах, чем в одном таком кроссплатформенном, где сам черт ногу сломит...
  Ответить с цитированием
Поиск в теме: 



Быстрый переход:

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind