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() помогло! Работает как надо. |
|