Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

открыть файл

12K
22 июня 2006 года
alexash
18 / / 22.06.2006
Доброго ВСЕМ здравия человеки
компилятор Microsoft Visual C++ 6.0
В конечном итоге должна получиться некая смотрел-ка гледелка
? Вопрос 1 открыть файл (формат описан в приложенном файле)
hdf ob;
ifstream input("PAN.hdf", ios::in | ios::binary);
if(!input){cout<<"Erroe open file";};

и считать его в некую структуру

struct hdf{
char BEGINNING_TIME[63];
char ENDING_TIME[63];
char PLATFORM[63];
char SENSOR[63];
char STATION_ID[63];
char PRODUCT_ID[63];
char ALGORITHM_VERSION[63];
__int32 REV_NUMBER;// так как 32 бита
//и т. д.
};
но как я понял так как объекты могут отсутствовать то необходимо осуществить их поиск и заполнить
структуры (а может лучше класс?) как это сделать?
надо ли читая данные из бинарного потока преобразовывать их?
398
22 июня 2006 года
Alexandoros
630 / / 21.10.2005
Стримы были разработаны для текстовых файлов. Юзай CreateFile/ReadFile. Тогда прочитавши структуру с диска в масив char используя адресную арифметику присвой значения структуре. Не читай прямо в структуру - можеш ошибится с выравниванием - пазмер структуры в памяти может быть НЕ РАВЕН размеру структуры на диске(суммма длин всех членов структуры).
11K
22 июня 2006 года
Ireul
90 / / 15.06.2006
[QUOTE=alexash]Доброго ВСЕМ здравия человеки
компилятор Microsoft Visual C++ 6.0
В конечном итоге должна получиться некая смотрел-ка гледелка
? Вопрос 1 открыть файл (формат описан в приложенном файле)
hdf ob;
ifstream input("PAN.hdf", ios::in | ios::binary);
if(!input){cout<<"Erroe open file";};

и считать его в некую структуру

struct hdf{
char BEGINNING_TIME[63];
char ENDING_TIME[63];
char PLATFORM[63];
char SENSOR[63];
char STATION_ID[63];
char PRODUCT_ID[63];
char ALGORITHM_VERSION[63];
__int32 REV_NUMBER;// так как 32 бита
//и т. д.
};
но как я понял так как объекты могут отсутствовать то необходимо осуществить их поиск и заполнить
структуры (а может лучше класс?) как это сделать?
надо ли читая данные из бинарного потока преобразовывать их?[/QUOTE]

Сколько заглавных буков :)
Зависит от способа хранения данных. Если просто бинарка - то CreateFile/ReadFile/WriteFile/CloseHandle - всё что тебе нужно. Кстати, не представляю как в С может размер в памяти отличатся от размера на диске - он строго одинаков, если записывали по размеру sizeof(typename) - ведь всё статическое.
12K
28 июня 2006 года
alexash
18 / / 22.06.2006
Что-то до меня все ровно не доходит всякие там самоучители не дают такой информации если Вас не затруднит может Вы посмотрите формат и объясните подробней или на пример какой ссылку кинете (РУС)
11K
29 июня 2006 года
Ireul
90 / / 15.06.2006
[QUOTE=alexash]Что-то до меня все ровно не доходит всякие там самоучители не дают такой информации если Вас не затруднит может Вы посмотрите формат и объясните подробней или на пример какой ссылку кинете (РУС)[/QUOTE]

(РУС) не бывает без купюр... Уж не знаю к сожалению или к счастью.

С такой задачей как у тебя - просто запиши да читай блоками :) У тебя структура имеет СТАТИЧЕСКИЙ ФИКСИРОВАННЫЙ РАЗМЕР. Проще быть ничего не может, просто читай блоки заданного размера в адрес структуры.

truct hdf{
char BEGINNING_TIME[63];
char ENDING_TIME[63];
char PLATFORM[63];
char SENSOR[63];
char STATION_ID[63];
char PRODUCT_ID[63];
char ALGORITHM_VERSION[63];
__int32 REV_NUMBER;// так как 32 бита
//и т. д.
};

hFile = CreateFile(...);
hdf x[23];
DWORD dwRead;
for(int i = 0; i < 23; i++)
{
ReadFile(hFile,&x,sizeof(x),&dwRead,NULL);
};

Для записи так же, только ReadFile меняй на WriteFile. Если надо выбрать энную - читай N блоков в одну и ту же - останется энная - и т.д.

В общем какая тебе ссылка ещё? Тут всё просто по-бараньи и так..
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог