|
|
|
новичок
      
участник
Last Login: 30.05.2007 6:40
Сообщ.: 3,
Visits: 13
|
|
Здраствуйте! Программирую на VC++2005
Возникло множество проблем со строковыми типами в связи с переходом с VC++2003
try
{
CStdioFile file( _T("c:\\test.txt"), CFile::modeRead || CFile::typeText );
CString buf;
file.ReadString( buf ); // здесь вызывается исключение и пишет "неизвесная ошибка". Почему??
AfxMessageBox( buf );
file.Close();
}
catch( CFileException* pe )
{
pe->ReportError();
}
Еще вот: '_access' : cannot convert parameter 1 from 'LPCTSTR' to 'const char *'
public:
static BOOL FileExists(LPCTSTR lpszFileName)
{
return (0 == (_access(lpszFileName, 4)));
}
Помогите, просто руки опускаются
|
|
|
|
|
Forum Member
      
участник
Last Login: 30.06.2007 8:03
Сообщ.: 28,
Visits: 42
|
|
ругается, потому что ожидает ASCI-строку, а ты ему передаешь Unicode (по умолчанию в VS2005 проект создается как Unicode).
Так что либо поменяй настройку для пользования ASCI, либо применяй функции, поддерживающие Unicode
|
|
|
|
|
Forum Guru
      
участник
Last Login: вчера @ 14:54
Сообщ.: 60,
Visits: 639
|
|
Вообще-то классы MFC поддерживают юникод. Автор топика передавал аргумент конструктору правильно - с помощью макроса _T("") и в зависимости от настроек проекта (unicode, asci) и код будет компилироваться по-разному с подстановкой L или без к началу строки. Конструктор класса CStdioFile, ведь принимает параметр LPCTSTR.
А приведенный код рабочий, у себя проверил, - работает.
|
|
|
|
|
Forum Member
      
участник
Last Login: 30.06.2007 8:03
Сообщ.: 28,
Visits: 42
|
|
| _access все же требует ASCI. для Unicode - _waccess. Или же использовать тогда _taccess в дополнение к использованию _t-макросов
|
|
|
|