C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
OpenDialog КАК?, НесответствиеAnsiString и char* или нет?
dayver2009
Отправлено: 27.11.2006, 20:15


Ученик-кочегар

Группа: Участник
Сообщений: 26



Создал я програмку но вот пришлось улучшать интерфейс и я столкнулся с такой проблемкой
Как с помощью компонента OpenDialog изменить параметр "input.txt" в строке
std::ifstream inFile ("input.txt", std::ios::binary);
Я пытался зделать так :

AnsiString name;
if(OpenDialog1->Execute())name=OpenDialog1->FileName;
std::ifstream inFile (name , std::ios::binary);

Но выдает ошыбку :

[C++ Error] Unit1.cpp(49): E2285 Could not find a match for '_STL::ifstream::basic_ifstream(AnsiString,enum)'

как я понял то проблема в том что OpenDialog1 возвращает в переменную name Имя файла в формате "C:\C++\"input.txt" , а ifstream пониает только ""input.txt" в текущей папке с виполняемой программой
Хотя я могу ошыбатся
Или может ето несоответствие типов AnsiString (OpenDialog1->FileName;) и char* ("input.txt") или нет?

Кто нибудь подскажыте в чем проблема и как ее решыть?
vvkot
Отправлено: 27.11.2006, 21:08


Ученик-кочегар

Группа: Участник
Сообщений: 20



Чтобы из AnsiString сделать char* используйте синтаксис:

name.c_str()

Не знаю как в Вашем контексте, но во многих других случаях нужно делать имеено так, например открытие файла:

AnsiString name;

OpenDialog->Execute();
name=OpenDialog->FileName();

FILE *fptr = fopen(name.c_str(),"r");
dayver2009
Отправлено: 27.11.2006, 23:13


Ученик-кочегар

Группа: Участник
Сообщений: 26



vvkot Большое спасибо! name.c_str() помогло! Работает как надо.

Вернуться в Вопросы программирования в C++Builder