Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > 2 DWORD в 64битный size_t


Автор: leniviy 1.9.2012, 12:53
Есть размер файла, хранящийся в 2 DWORD.
Если архитектура 64битная, надо запихать их в size_t, а если 32битная, и старший DWORD не равен 0, то выкинуть ошибку.

Код

  WIN32_FIND_DATA findData;
  size_t filesz;
  if (???) {
    printf("file too big\n");
    return 1;
  }
  filesz = findData.nFileSizeHigh;
  ???
  filesz += findData.nFileSizeLow;

Автор: boostcoder 1.9.2012, 13:06
нехочу чтоб сказали что предлагаю то, чего не просили, но все же: http://www.boost.org/doc/libs/1_49_0/libs/filesystem/v3/doc/reference.html#file_size

Автор: borisbn 1.9.2012, 14:30
leniviy, а почему в 32-х битной системе не м.б. файлы больше 4-х гиг ? у меня, например, на 32-х битной системе таких файлов есть несколько (последние пару-тройку фильмов пока не удаляю)

Автор: leniviy 1.9.2012, 14:39
Я хотел прочитать файл целиком в буфер. Потом передумал и сделал через file mapping

Автор: Dem_max 2.9.2012, 16:57
Цитата

Я хотел прочитать файл целиком в буфер.

Да ты мега программер.

Автор: leniviy 2.9.2012, 17:47
Цитата(Dem_max @  2.9.2012,  16:57 Найти цитируемый пост)

Да ты мега программер.

А то!

Автор: xvr 3.9.2012, 11:46
Код

if (sizeof(size_t)<8 && findData.nFileSizeHigh) { error ... }


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)