Russian Qt Forum

Компиляторы и платформы => Visual C++ => Тема начата: Rostislav от Ноябрь 19, 2004, 04:13



Название: строковые массивы
Отправлено: Rostislav от Ноябрь 19, 2004, 04:13
*/
CFile myFile;
CFileException fileException;
char* pszFileName = "D:\\1.txt";
if ( !myFile.Open( pszFileName, CFile::modeRead, &fileException ) )
{
    TRACE( "Can't open file %s, error = %u\n",
       pszFileName, fileException.m_cause );
}
int count=0;

int length = (int)myFile.GetLength();
char szBuffer[length];
*/
Проблема такакя: не устанавливается размер массива szBuffer;  
При компиляции выдается:
1)d:\documents and settings\rostislav\мои документы\visual studio projects\client\clientdlg.cpp(199): error C2057: expected constant expression
2)d:\documents and settings\rostislav\мои документы\visual studio projects\client\clientdlg.cpp(199): error C2466: cannot allocate an array of constant size 0
3)d:\documents and settings\rostislav\мои документы\visual studio projects\client\clientdlg.cpp(199): error C2133: 'szBuffer' : unknown size
4)d:\documents and settings\rostislav\мои документы\visual studio projects\client\clientdlg.cpp(215): error C2070: 'char []': illegal sizeof operand

пробывал обьявить переменную "length" как "const int" все равно не компилируется,
зато если  сделать так то все работает: const int length = 10000;
Подскажите что делать???


Название: строковые массивы
Отправлено: Admin от Ноябрь 19, 2004, 12:46
насколько я помню VC не поддерживает создание массива во время исполнения

твой код
int length = (int)myFile.GetLength();
char szBuffer[length];

нужно изменить на

char* szBuffer = new char[length];

потом не задудь сделать

delete[] szBuffer;


Название: строковые массивы
Отправлено: Rostislav от Ноябрь 20, 2004, 02:26
Спасибо за ответ, все работает.