21.11.2007, 13:23
общий
это ответ
Здравствуйте, Endru!
Вряд ли дело в каких то слешах. К тому же я их у вас не вижу;))
Дело в том, что вы в конструктор объекта impf передаете непонятно что;)
Смотрим прототип вышеуказанного конструктора:
ifstream ( );
explicit ifstream ( const char * filename, ios_base::openmode mode = ios_base::in );
Первым параметром ожидается строка, в которой указан путь до открываемого файла. Вы же передаете строку дословно: "Edit1->Text" т.е. пытаетесь открыть файл с именем "Edit1->Text". Само собой такого не существует)
Скорее вы хотели взять путь файла, который был введен в Edit1 объект. Чтож, в поле Text он и находится. Но вот беда, Поле Text возвращает данные в виде AnsiString-строки. А конструктор ждет тип const char*. Ничего;) У класса AnsiString (а это класс, а не просто набор байтов) есть в свою очередь метод c_str(), который как раз возвращает содержимое себя как const char* str.
И еще, если конструктор не смог открыть файл, указанный ему как filename, в объекте устанавливается failbit в истину, который можно проверить методом fail().
С учетом всего сказанного, перепишем ваш код:
{
ifstream impf(Edit1->Text.c_str());
if(impf.fail()) {
ShowMessage ("Не удалось открыть файл!");
return;
}
}
___
Успехов!
Приложение:
{ ifstream impf(Edit1->Text.c_str()); if(impf.fail()) { ShowMessage ("Не удалось открыть файл!"); return; }}