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

Тема в разделе "Borland C++ Builder & Kylix", создана пользователем NeviDimka, 30 апр 2007.

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

    NeviDimka Гость

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

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    <!--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 Гость

    прога сложная, вот упрощенный вариант(просто вставьте в новую форму с Button1 и Button2)
    Код (Text):
    #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 Гость

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

    62316e Гость

    Тут все владеют искусством "кунг-фу" в стиле "угадай что-имел ввиду тот кто не умеет правила форума читать"
     
Загрузка...
Похожие Темы - C++ класс файлов
  1. 203
    Ответов:
    1
    Просмотров:
    1.442
  2. 203
    Ответов:
    0
    Просмотров:
    1.065
  3. 203
    Ответов:
    11
    Просмотров:
    2.578
  4. BashOrgRu
    Ответов:
    6
    Просмотров:
    4.144
  5. Azgor
    Ответов:
    2
    Просмотров:
    1.675
Статус темы:
Закрыта.

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