Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Запись в файл (разъясните код)


Автор: thistle 5.4.2009, 02:19
Есть код 

Код

//---------------------------------------------------------------------------

#include <vcl.h>
#include <fstream>
#include <iostream>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused

int main(int argc, char* argv[])
{
    std::ofstream file ("c:\\log.txt", std::ios_base::app); // открываем файл на добавление

    try {

    for(int z = 0;;z++) {
        std::cout << z << std::endl;
        if (z == 500) {              // если здесь заменить 500 на 1000 и выше запись в файл не происходит
            if (file)
                file << "hello wor.d\n";
            z = 0;
        }
    }

    }
    catch(...) {
        file.close();
    }
    file.close();
    return 0;
}
//---------------------------------------------------------------------------



Данный кусок кода должен добавлять запись в файл   через каждые z == 500, и  это  он успешно делает,
но ...  smile 

почему если мы укажем  создавать запись   через каждые z == 5000 этого не происходит?!

  


Где грабли? 

Ps В MS Studio все работает отлично =/ 

Автор: Zakhar_Shan 5.4.2009, 08:26
У меня всё отлично и при 1000 и при 1200 делал на C++Builder® 2009 smile 

Автор: thistle 5.4.2009, 09:20
Я пробывал под  C++  Builder 2007 и под  С++ Builder 6 на двух разных машина, просил разобраться в коде друга ...  и результат один и тотже:  записей в файле нет =/
Это действительно выносит мне мозг 

Автор: SVN74 5.4.2009, 11:13
Вот немного подкорректировал (добавил определенное время окончания цикла), а то получится, что код будет выполняться бесконечно, пока не будет возвращена ошибка от системы о невозможности продолжения записи в файл.
=====================================
Код

//---------------------------------------------------------------------------

#include <vcl.h>
#include <fstream>
#include <iostream>
#pragma hdrstop
using namespace std;
//---------------------------------------------------------------------------

#pragma argsused

int main(int argc, char* argv[])
{
    ofstream file ("c:\\log.txt", ios::app); // открываем файл на добавление

try
   {
    int F = 0;
    for(int z = 0;F<100;z++)
     {
        cout << z << endl;
        if (z == 1500)
        {              // если здесь заменить 500 на 1000 и выше запись в файл не происходит
            if (file)
                file << "hello wor.d\n";
            z = 0;
            F++;
        }
     }
    }
    __finally
    {
        if(file) file.close();
    }
    return 0;
}
//---------------------------------------------------------------------------

За каждым разом добавляет по 1300 байт

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)