Вот кусочек кода, который работал в 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.
Я в недоумении. Куда копать?
2009 видимо тут непричем. Открываешь файл в текстовом режиме а читаешь из него целые.
или убери из списка исключений failbit, или читай в переменные с помощью read(char*,size_t).
И еще их (переменные) инициализировать бы неплохо.