Re[2]: Проблема с CreateFile (не получается запись в файл)
От: Alexmoon Украина  
Дата: 15.10.03 05:11
Оценка: +1
Здравствуйте, HeaveN, Вы писали:

HN>Здравствуйте, Svat_, Вы писали:


S_>>Проблема с CreateFile (не получается запись в файл)

S_>>Вот строки из кода программы:

S_>>HANDLE hFile ;

S_>>MYSTRUCT level;
S_>>hFile = CreateFile("filename.ext", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
S_>>WriteFile(hFile, (char*)&level, sizeof(level), 0, NULL);
S_>>CloseHandle(hFile);

S_>>Компилятор ругается:

S_>>error C2664: 'CreateFileW' : cannot convert parameter 1 from 'char [13]' to 'const unsigned short *'

S_>>Подскажите пожалуйсто в чем ошибка.


HN>У меня VS.NET 2003 такое глотает без проблем... Может сделать явное приведение типа? Например:


HN>
HN>char* filename = "filename.ext";
HN>hFile = CreateFile ((LPCTSTR)filename, ...)

HN>


здесь вопрос кодировок и посмотри что получится при прямом приведении однобайтовой кодировки в двухбайтовую.
Alex Fedotov абсолютно прав пунктом выше.
Проблема с CreateFile (не получается запись в файл)
От: Svat_  
Дата: 14.10.03 20:58
Оценка:
Проблема с CreateFile (не получается запись в файл)
Вот строки из кода программы:

HANDLE hFile ;
MYSTRUCT level;
hFile = CreateFile("filename.ext", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
WriteFile(hFile, (char*)&level, sizeof(level), 0, NULL);
CloseHandle(hFile);

Компилятор ругается:
error C2664: 'CreateFileW' : cannot convert parameter 1 from 'char [13]' to 'const unsigned short *'

Подскажите пожалуйсто в чем ошибка.
Re: Проблема с CreateFile (не получается запись в файл)
От: Alex Fedotov США  
Дата: 14.10.03 21:11
Оценка:
Здравствуйте, Svat_, Вы писали:

S_>Проблема с CreateFile (не получается запись в файл)

S_>Вот строки из кода программы:

S_>HANDLE hFile ;

S_>MYSTRUCT level;
S_>hFile = CreateFile("filename.ext", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
S_>WriteFile(hFile, (char*)&level, sizeof(level), 0, NULL);
S_>CloseHandle(hFile);

S_>Компилятор ругается:

S_>error C2664: 'CreateFileW' : cannot convert parameter 1 from 'char [13]' to 'const unsigned short *'

S_>Подскажите пожалуйсто в чем ошибка.


Ошибка в том, что на уровне проекта указан макрос _UNICODE (или UNICODE, или оба), а имя файла передается в виде ANSI-строки. Правильно будет _T("filename.ext").
-- Alex Fedotov
Re: Проблема с CreateFile (не получается запись в файл)
От: HeaveN Россия  
Дата: 14.10.03 21:17
Оценка:
Здравствуйте, Svat_, Вы писали:

S_>Проблема с CreateFile (не получается запись в файл)

S_>Вот строки из кода программы:

S_>HANDLE hFile ;

S_>MYSTRUCT level;
S_>hFile = CreateFile("filename.ext", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
S_>WriteFile(hFile, (char*)&level, sizeof(level), 0, NULL);
S_>CloseHandle(hFile);

S_>Компилятор ругается:

S_>error C2664: 'CreateFileW' : cannot convert parameter 1 from 'char [13]' to 'const unsigned short *'

S_>Подскажите пожалуйсто в чем ошибка.


У меня VS.NET 2003 такое глотает без проблем... Может сделать явное приведение типа? Например:

char* filename = "filename.ext";
hFile = CreateFile ((LPCTSTR)filename, ...)
... << RSDN@Home 1.1 beta 2 >>
Нет такого закона, что человеку летать нельзя...
Re[2]: Проблема с CreateFile (не получается запись в файл)
От: Svat_  
Дата: 16.10.03 03:45
Оценка:
Здравствуйте, Alex Fedotov, Вы писали:

AF>Ошибка в том, что на уровне проекта указан макрос _UNICODE (или UNICODE, или оба), а имя файла передается в виде ANSI-строки. Правильно будет _T("filename.ext").

Большое спасибо, теперь работает.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.