Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не понятный глюк с CFile, NSVS7.1 C++ 
:(
    Опции темы
knave
Дата 29.3.2005, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 6.3.2003
Где: Санкт-Питербург ( Россия)

Репутация: нет
Всего: 5



NSVS7.1 C++
Читаю файл (через CFile) который лежит в корне диска d:\scheme_1.gif.

Файл открывается, устанавливается позициz 68 байт от конца, дальше пытаюст считать - считывается 0 байт, ни ошибок ни эксцепшенов. Все пучком, а даные не читаются

Код

CFile fFile
EncryptedHeader hd;

fFile.Open(pszEncFileName, CFile::modeRead|CFile::shareDenyWrite);
fFile.Seek(0 - sizeof(EncryptedHeader), CFile::end);
intt iPos = fFile.GetPosition(); - Проверяю позицию, она верная

//sizeof(EncryptedHeader)) = 68 байт - в отладчике так же

if(fFile.Read(&hd, sizeof(EncryptedHeader)) != sizeof(EncryptedHeader) )
  return FALSE;


Захожу внутрь этого вызова, там обычный ::ReadFile , который и выдает такой интересный результат. Считывается именно 0 байт. @ERR ошибок не показывает, эксцепшенов то же никаких.

Вчем рпоблема???

Это сообщение отредактировал(а) knave - 29.3.2005, 14:15


--------------------
С наилучшими пожеланиями !!!
PM MAIL ICQ   Вверх
knave
Дата 4.4.2005, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 6.3.2003
Где: Санкт-Питербург ( Россия)

Репутация: нет
Всего: 5



Разобрался. Подкузьмили MS мне основательно.

Файл открывался нормально, а вот такая конструкция работала не верное.
CFile file;

...

file.Seek(0 - sizeof(EncryptedHeader), CFile::end);
0 - sizeof(EncryptedHeader) - вместо знакового результата получался беззнаковый, так как в 7.1 это sizeof(EncryptedHeader) дает беззнаковый результат. Получалосб что вместо отрицательного смещения у меня дыло оченьболльшое положительное (отрицательное число в беззнаковом представлении).

Пришлось все править на такую конструкцию, с явным преобразованеим типа.
file.Seek(0 - (LONGLONG)sizeof(EncryptedHeader), CFile::end);

в 6.0 file.Seek(0 - sizeof(EncryptedHeader), CFile::end); - это давало знаковы резкльтат


--------------------
С наилучшими пожеланиями !!!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.2041 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.