incompatible types HELP
От: edvin  
Дата: 08.02.02 14:16
Оценка:
Здравствуйте у меня такая беда: использую функцию
#define BUF_SIZE 50
char buf[BUF_SIZE];GetDlgItemText(hDlg, IDD_USER_NAME, buf, BUF_SIZE); //а потом
file = fopen( file_name, "w" );
fputs( buf, file );
fclose( file );
в результате вадается ошибка
warning C4133: 'function' : incompatible types — from 'char [50]' to 'unsigned short *' на строку с функцией.В help написано что buf это указатель (Pointer to the null-terminated string that contains the text to be copied to the control), тогда вопрос как достать оттуда текст.
Re: incompatible types HELP
От: Аноним  
Дата: 08.02.02 14:22
Оценка:
Здравствуйте edvin, Вы писали:

E>Здравствуйте у меня такая беда: использую функцию

E>#define BUF_SIZE 50
E>char buf[BUF_SIZE];GetDlgItemText(hDlg, IDD_USER_NAME, buf, BUF_SIZE); //а потом
Может попробовать char* buf=new char[BUF_SIZE]
E>file = fopen( file_name, "w" );
E>fputs( buf, file );
E>fclose( file );
E>в результате вадается ошибка
E>warning C4133: 'function' : incompatible types — from 'char [50]' to 'unsigned short *' на строку с функцией.В help написано что buf это указатель (Pointer to the null-terminated string that contains the text to be copied to the control), тогда вопрос как достать оттуда текст.
Re: incompatible types HELP
От: Kaa Украина http://blog.meta.ua/users/kaa/
Дата: 08.02.02 14:24
Оценка:
Здравствуйте edvin, Вы писали:

E>Здравствуйте у меня такая беда: использую функцию

E>#define BUF_SIZE 50
E>char buf[BUF_SIZE];GetDlgItemText(hDlg, IDD_USER_NAME, buf, BUF_SIZE); //а потом
E>file = fopen( file_name, "w" ); 
E>fputs( buf, file );
E>fclose( file );


E>в результате вадается ошибка

E>warning C4133: 'function' : incompatible types — from 'char [50]' to 'unsigned short *' на строку с функцией.В help написано что buf это указатель (Pointer to the null-terminated string that contains the text to be copied to the control), тогда вопрос как достать оттуда текст.

UINT GetDlgItemText(
  HWND hDlg,       // handle to dialog box
  int nIDDlgItem,  // control identifier
  LPTSTR lpString, // pointer to buffer for text
  int nMaxCount    // maximum size of string
);

— определена в доке так. А это — так:
LPTSTR A 32-bit pointer to a character string that is portable for Unicode and DBCS

Когда пишет, что 'unsigned short*', это значит, что требуется юникодная строка. Проверь, не собираешься ли ты часим в юникодной конфигурации, или не определен ли у тебя где-нибудь часом макрос _UNICODE.

С уважением
Алексей Кирдин
Re: incompatible types HELP
От: edvin  
Дата: 08.02.02 14:44
Оценка:
Насчет char* buf=new char[BUF_SIZE] пробовал не проходит
А насчет UNICODE признаться не знаю, вообще говоря это не ошибка а Warning но в файл пишется только первая буква логина,
дело в том что я пишу свою gina.dll
грубо говоря изменяю пример из MSDN, в результате
я отлавливаю логин юзера при входе и мне надо записать его
в файл, в прмере есть вариант как записать в реестр но меня интересует файл.
Re[2]: incompatible types HELP
От: Кодт Россия  
Дата: 13.02.02 11:02
Оценка:
Здравствуйте edvin, Вы писали:

E>Насчет char* buf=new char[BUF_SIZE] пробовал не проходит

E>А насчет UNICODE признаться не знаю, вообще говоря это не ошибка а Warning но в файл пишется только первая буква логина,
E>дело в том что я пишу свою gina.dll
E>грубо говоря изменяю пример из MSDN, в результате
E>я отлавливаю логин юзера при входе и мне надо записать его
E>в файл, в прмере есть вариант как записать в реестр но меня интересует файл.

Если пишется только первая буква — это стопудово UNICODE (младшим байтом вперед).
L"Login\x0000" ==
"L\x00o\x00g\x00i\x00n\x00\x00\x00"

Очевидно, что в дальнейшем строка воспринимается до первого нуль-символа (т.е. до байта [1]).

Хочешь работать с char — используй WideCharToMultiByte
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.