буфер...
Надо взять размер файла и создать буфер в 2,5 раза больший, чем длина файла.Делаю так:
............
CFile mFile;
CFileException e;
mFile.Open( "123.dat", CFile::modeReadWrite, &e );
m_FileSize=mFile.GetLength();
............
double bufsize;
bufsize=m_FileSize*2+ceil(m_FileSize/2);
............
char buf[bufsize];
...и вот тут он пишет
error C2057: expected constant expression
...мол, ожидается постоянное выражение...
Неужели при определении длинны нельзя использовать переменные? (если ставлю заместо bufsize любое число, то все работает).
Как в таком случае поступать?
Спасибо.
Цитата:
Originally posted by budger
Люди, подскажите!
Надо взять размер файла и создать буфер в 2,5 раза больший, чем длина файла.Делаю так:
............
CFile mFile;
CFileException e;
mFile.Open( "123.dat", CFile::modeReadWrite, &e );
m_FileSize=mFile.GetLength();
............
double bufsize;
bufsize=m_FileSize*2+ceil(m_FileSize/2);
............
char buf[bufsize];
...и вот тут он пишет
error C2057: expected constant expression
...мол, ожидается постоянное выражение...
Неужели при определении длинны нельзя использовать переменные? (если ставлю заместо bufsize любое число, то все работает).
Как в таком случае поступать?
Спасибо.
Люди, подскажите!
Надо взять размер файла и создать буфер в 2,5 раза больший, чем длина файла.Делаю так:
............
CFile mFile;
CFileException e;
mFile.Open( "123.dat", CFile::modeReadWrite, &e );
m_FileSize=mFile.GetLength();
............
double bufsize;
bufsize=m_FileSize*2+ceil(m_FileSize/2);
............
char buf[bufsize];
...и вот тут он пишет
error C2057: expected constant expression
...мол, ожидается постоянное выражение...
Неужели при определении длинны нельзя использовать переменные? (если ставлю заместо bufsize любое число, то все работает).
Как в таком случае поступать?
Спасибо.
Выделять динамически, как же еще? Лично я использую для операций с большими объемами VirtualAlloc, для маленьких - используй что хочешь...
Цитата:
Originally posted by budger
Люди, подскажите!
Надо взять размер файла и создать буфер в 2,5 раза больший, чем длина файла.Делаю так:
............
CFile mFile;
CFileException e;
mFile.Open( "123.dat", CFile::modeReadWrite, &e );
m_FileSize=mFile.GetLength();
............
double bufsize;
bufsize=m_FileSize*2+ceil(m_FileSize/2);
............
char buf[bufsize];
...и вот тут он пишет
error C2057: expected constant expression
...мол, ожидается постоянное выражение...
Неужели при определении длинны нельзя использовать переменные? (если ставлю заместо bufsize любое число, то все работает).
Как в таком случае поступать?
Спасибо.
Люди, подскажите!
Надо взять размер файла и создать буфер в 2,5 раза больший, чем длина файла.Делаю так:
............
CFile mFile;
CFileException e;
mFile.Open( "123.dat", CFile::modeReadWrite, &e );
m_FileSize=mFile.GetLength();
............
double bufsize;
bufsize=m_FileSize*2+ceil(m_FileSize/2);
............
char buf[bufsize];
...и вот тут он пишет
error C2057: expected constant expression
...мол, ожидается постоянное выражение...
Неужели при определении длинны нельзя использовать переменные? (если ставлю заместо bufsize любое число, то все работает).
Как в таком случае поступать?
Спасибо.
чтобы сделать 2,5 от N достаточно написать :
(N * 5) / 2 что гораздо проще чем bufsize=m_FileSize*2+ceil(m_FileSize/2);
CFile mFile;
CFileException e;
mFile.Open( "123.dat", CFile::modeReadWrite, &e );
m_FileSize=mFile.GetLength();
char* pbuf = new char[(m_FileSize*5)/2];
...