Показать сообщение отдельно

  #2  
Старый 23.06.2009, 18:35
Gar|k
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме:
991929

Репутация: 395


По умолчанию

SetFilePointer(d,curpos,NULL,FILE_BEGIN);
если третий параметр NULL то она не работает с размерами больше 2гигов...
Цитата:
Сообщение от MSDN  
Хотя параметр lpDistanceToMoveHigh используется, чтобы управлять огромными файлами, значение этого параметра должно устанавливаться при перемещении в файлах любого размера. Если он устанавливается в ПУСТО (NULL), то lDistanceToMove имеет максимальное значение 2(31)-2, или 2 гигабайта без двух байтов. Это так потому, что все значения указателя позиции в файле - значения со знаком. Поэтому, даже если есть маленький шанс, что файл будет расти до этого размера, вам следует рассматривать его как огромный файл и работать с 64-разрядными указателями позиции в файле.
вот примерчик приведен для упрощения небольшого
Код:
__int64 myFileSeek (HANDLE hf, __int64 distance, DWORD MoveMethod)
{
   LARGE_INTEGER li;

   li.QuadPart = distance;

   li.LowPart = SetFilePointer (hf, li.LowPart, &li.HighPart,
                                 MoveMethod);

   if (li.LowPart == INVALID_SET_FILE_POINTER && GetLastError()
       != NO_ERROR)
   {
      li.QuadPart = -1;
   }

   return li.QuadPart;
}

Последний раз редактировалось Gar|k; 23.06.2009 в 18:47..
 
Ответить с цитированием