1. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

C++ класс файлов File

Тема в разделе "С и С++", создана пользователем NeviDimka, 30 апр 2007.

Статус темы:
Закрыта.
  1. NeviDimka

    NeviDimka Гость

    Репутация:
    0
    Пишу в файл (с++ класс FILE) последовательность int'ов и даблов, потом читаю в том же порядке - в каком записывал (всего 76 байтов - 9 int'ов и 5 double'ов, вперемешку) где-то после 9 записи он сообщает об ошибке чтения и думает что достигнут конец файла :(
    У кого какие будут соображения?
     
  2. European

    Репутация:
    0
    Регистрация:
    4 сен 2006
    Сообщения:
    2.566
    Симпатии:
    2
    <!--QuoteBegin-NeviDimka+30:04:2007, 14:17 -->
    <span class="vbquote">(NeviDimka @ 30:04:2007, 14:17 )</span><!--QuoteEBegin-->У кого какие будут соображения?
    [snapback]64000" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Глянуть бы на твой код, может соображения и появятся
     
  3. NeviDimka

    NeviDimka Гость

    Репутация:
    0
    прога сложная, вот упрощенный вариант(просто вставьте в новую форму с Button1 и Button2)
    Код:
    #include "fstream.h"
    FILE	*DlsFile;
    
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    if((DlsFile = fopen("D:\\ActDeals.log", "r+")) == NULL)
    {
    MessageBox(NULL, "Ошибка! Невозможно восстановить активные сделки.", "Монитор", MB_OK);
    exit(0);
    }
    int ivar;
    double dvar;
    
    while(!feof(DlsFile))
    {
    if(!fread(&ivar,		sizeof(int), 1, DlsFile))
    MessageBox(NULL, "Ошибка чтения в файл ActDeals.log!", "Монитор", MB_OK);
    else MessageBox(NULL, IntToStr(ivar).c_str(), "Монитор", MB_OK);
    if(!fread(&ivar,		 sizeof(int), 1, DlsFile))
    MessageBox(NULL, "Ошибка чтения в файле ActDeals.log!", "Монитор", MB_OK);
    else MessageBox(NULL, IntToStr(ivar).c_str(), "Монитор", MB_OK);
    if(!fread(&ivar,	sizeof(int), 1, DlsFile))
    MessageBox(NULL, "Ошибка чтения в файле ActDeals.log!", "Монитор", MB_OK);
    else MessageBox(NULL, IntToStr(ivar).c_str(), "Монитор", MB_OK);
    if(!fread(&ivar,	sizeof(int), 1, DlsFile))
    MessageBox(NULL, "Ошибка чтения в файле ActDeals.log!", "Монитор", MB_OK);
    else MessageBox(NULL, IntToStr(ivar).c_str(), "Монитор", MB_OK);
    if(!fread(&dvar,		 sizeof(double), 1, DlsFile))
    MessageBox(NULL, "Ошибка чтения в файле ActDeals.log!", "Монитор", MB_OK);
    else MessageBox(NULL, FloatToStr(dvar).c_str(), "Монитор", MB_OK);
    if(!fread(&ivar,		sizeof(int), 1, DlsFile))
    MessageBox(NULL, "Ошибка чтения в файле ActDeals.log!", "Монитор", MB_OK);
    else MessageBox(NULL, IntToStr(ivar).c_str(), "Монитор", MB_OK);
    if(!fread(&ivar,	  sizeof(int), 1, DlsFile))
    MessageBox(NULL, "Ошибка чтения в файле ActDeals.log!", "Монитор", MB_OK);
    else MessageBox(NULL, IntToStr(ivar).c_str(), "Монитор", MB_OK);
    if(!fread(&ivar,		sizeof(int), 1, DlsFile))
    MessageBox(NULL, "Ошибка чтения в файле ActDeals.log!", "Монитор", MB_OK);
    else MessageBox(NULL, IntToStr(ivar).c_str(), "Монитор", MB_OK);
    if(!fread(&dvar,sizeof(double), 1, DlsFile))
    MessageBox(NULL, "Ошибка чтения в файле ActDeals.log!", "Монитор", MB_OK);
    else MessageBox(NULL, FloatToStr(dvar).c_str(), "Монитор", MB_OK);
    if(!fread(&dvar, sizeof(double), 1, DlsFile))
    MessageBox(NULL, "Ошибка чтения в файле ActDeals.log!", "Монитор", MB_OK);
    else MessageBox(NULL, FloatToStr(dvar).c_str(), "Монитор", MB_OK);
    if(!fread(&dvar,	sizeof(double), 1, DlsFile))
    MessageBox(NULL, "Ошибка чтения в файле ActDeals.log!", "Монитор", MB_OK);
    else MessageBox(NULL, FloatToStr(dvar).c_str(), "Монитор", MB_OK);
    if(!fread(&dvar,	 sizeof(double), 1, DlsFile))
    MessageBox(NULL, "Ошибка чтения в файле ActDeals.log!", "Монитор", MB_OK);
    else MessageBox(NULL, FloatToStr(dvar).c_str(), "Монитор", MB_OK);
    if(!fread(&ivar,		sizeof(int), 1, DlsFile))
    MessageBox(NULL, "Ошибка чтения в файле ActDeals.log!", "Монитор", MB_OK);
    else MessageBox(NULL, FloatToStr(ivar).c_str(), "Монитор", MB_OK);
    if(!fread(&ivar,		sizeof(int), 1, DlsFile))
    MessageBox(NULL, "Ошибка чтения в файле ActDeals.log!", "Монитор", MB_OK);
    else MessageBox(NULL, FloatToStr(ivar).c_str(), "Монитор", MB_OK);
    }
    fclose(DlsFile);
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    int ivar;
    double dvar;
    if((DlsFile = fopen("D:\\ActDeals.log", "w")) == NULL)
    {
    MessageBox(NULL, "Ошибка! Невозможно восстановить активные сделки.", "Монитор", MB_OK);
    exit(0);
    }
    ivar = 1;
    if(!fwrite(&ivar,		sizeof(int), 1, DlsFile))
    MessageBox(NULL, "Ошибка чтения в файл ActDeals.log!", "Монитор", MB_OK);
    ivar = 2;
    if(!fwrite(&ivar,		 sizeof(int), 1, DlsFile))
    MessageBox(NULL, "Ошибка чтения в файле ActDeals.log!", "Монитор", MB_OK);
    ivar = 3;
    if(!fwrite(&ivar,	sizeof(int), 1, DlsFile))
    MessageBox(NULL, "Ошибка чтения в файле ActDeals.log!", "Монитор", MB_OK);
    ivar = 4;
    if(!fwrite(&ivar,	sizeof(int), 1, DlsFile))
    MessageBox(NULL, "Ошибка чтения в файле ActDeals.log!", "Монитор", MB_OK);
    dvar = 0.5;
    if(!fwrite(&dvar,		 sizeof(double), 1, DlsFile))
    MessageBox(NULL, "Ошибка чтения в файле ActDeals.log!", "Монитор", MB_OK);
    ivar = 6;
    if(!fwrite(&ivar,		sizeof(int), 1, DlsFile))
    MessageBox(NULL, "Ошибка чтения в файле ActDeals.log!", "Монитор", MB_OK);
    ivar = 25 ;
    if(!fwrite(&ivar,	  sizeof(int), 1, DlsFile))
    MessageBox(NULL, "Ошибка чтения в файле ActDeals.log!", "Монитор", MB_OK);
    ivar = 27 ;
    if(!fwrite(&ivar,		sizeof(int), 1, DlsFile))
    MessageBox(NULL, "Ошибка чтения в файле ActDeals.log!", "Монитор", MB_OK);
    dvar = 0.9 ;
    if(!fwrite(&dvar,sizeof(double), 1, DlsFile))
    MessageBox(NULL, "Ошибка чтения в файле ActDeals.log!", "Монитор", MB_OK);
    dvar = 0.01 ;
    if(!fwrite(&dvar, sizeof(double), 1, DlsFile))
    MessageBox(NULL, "Ошибка чтения в файле ActDeals.log!", "Монитор", MB_OK);
    dvar = 0.011 ;
    if(!fwrite(&dvar,	sizeof(double), 1, DlsFile))
    MessageBox(NULL, "Ошибка чтения в файле ActDeals.log!", "Монитор", MB_OK);
    dvar = 0.012;
    if(!fwrite(&dvar,	 sizeof(double), 1, DlsFile))
    MessageBox(NULL, "Ошибка чтения в файле ActDeals.log!", "Монитор", MB_OK);
    ivar = 13;
    if(!fwrite(&ivar,		sizeof(int), 1, DlsFile))
    MessageBox(NULL, "Ошибка чтения в файле ActDeals.log!", "Монитор", MB_OK);
    ivar = 14;
    if(!fwrite(&ivar,		sizeof(int), 1, DlsFile))
    MessageBox(NULL, "Ошибка чтения в файле ActDeals.log!", "Монитор", MB_OK);
    fclose(DlsFile);
    }
    //----------------
    Здесь такойже глюк появляется на предпоследней записи :)
     
  4. NeviDimka

    NeviDimka Гость

    Репутация:
    0
    Я опять разобрался сам, нужно было всего-лишь писать/читать файл как бинарник :)
    неужели никто не додумался?!
     
  5. 62316e

    62316e Гость

    Репутация:
    0
    Тут все владеют искусством "кунг-фу" в стиле "угадай что-имел ввиду тот кто не умеет правила форума читать"
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей