ifstream и Builder 2009
От: My_name_is_Bond  
Дата: 27.01.09 10:27
Оценка:
Вот кусочек кода, который работал в BC6, но отаказывается работать в C++ Builder 2009.

void load_project(const AnsiString& fname)
{
    using namespace std;
    ifstream ttfile(fname.c_str());
    if (!ttfile)
    {
        MessageDlg("Can't open file", mtError, TMsgDlgButtons() << mbOK, 0);;
        return;
    }

    ios_base::iostate old = ttfile.exceptions();
    ttfile.exceptions(ios_base::eofbit|ios_base::badbit|ios_base::failbit);

    try
    {
        int xr, yr;
        ttfile >> xr >> yr;
        ...
    }
    catch (ios_base::failure)
    {
        MessageDlg("Bad file format", mtError, TMsgDlgButtons() << mbOK, 0);
        ...
    }

    ttfile.exceptions(old);
}


Затык случается при чтении в yr. Т.е. xr читается и принимает правильное значение, а потом вылетает ios_base::failure.
Я в недоумении. Куда копать?
Re: ifstream и Builder 2009
От: cryzis Ниоткуда -
Дата: 27.01.09 15:48
Оценка:
2009 видимо тут непричем. Открываешь файл в текстовом режиме а читаешь из него целые.
или убери из списка исключений failbit, или читай в переменные с помощью read(char*,size_t).
И еще их (переменные) инициализировать бы неплохо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.