![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: 1 Всего: 23 |
Тут кнопка должна сделать так: определить, к каким группам относится пользователь, затем напечатать список в файл. Не хочет! Файл создаётся, но не заполняется. Почему это так?
void __fastcall TForm1::Button1Click(TObject *Sender) { DWORD EntriesRead = 0; DWORD TotalEntries = 0; DWORD i; char *UserName; LPGROUP_USERS_INFO_0 pBuf = NULL; NetUserGetGroups(NULL, (LPWSTR)UserName, 0, (LPBYTE*)&pBuf, MAX_PREFERRED_LENGTH, &EntriesRead, &TotalEntries); FILE *f; f = fopen("c:\\usg.txt","w"); for (i=1;i<=EntriesRead;i++) { fprintf(f,"%s\n",pBuf->grui0_name); (LPBYTE*)pBuf++; } fclose(f); } |
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Потому что WideChar-строка. Тебе придётся переводить в char*. Последнее время такие темы часто создавались. Поищи.
И ещё - буфер pBuf надо освободить через NetApiBufferFree. UserName должен быть типа LPWSTR. Так: (LPWSTR)UserName, нельзя перевести из char* в LPWSTR. И надо инициализировать UserName значением. |
|||
|
||||
| NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: 1 Всего: 23 |
Но как теперь закинуть в UserName имя пользователя
void __fastcall TForm1::Button1Click(TObject *Sender) { DWORD EntriesRead = 0; DWORD TotalEntries = 0; DWORD i; LPWSTR UserName; LPGROUP_USERS_INFO_0 pBuf = NULL; NetUserGetGroups(NULL, UserName, 0, (LPBYTE*)&pBuf, MAX_PREFERRED_LENGTH, &EntriesRead, &TotalEntries); FILE *f; char *s; f = fopen("c:\\usg.txt","w"); for (i=1;i<=EntriesRead;i++) { strcpy(s, (char *)pBuf->grui0_name); fprintf(f,"%s\n", s); (LPBYTE*)pBuf++; s[0] = '\0'; } NetApiBufferFree(pBuf); fclose(f); } |
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Ну, проблема то главным образом не в отсутствии имени и типе UserName'а (хотя и в этом тоже). Тебе надо строки переводить из формата в формат. Научишься это делать. И вопрос с закидованием UserName сам самой отпадёт. Для проверки можешь писать L"USERNAME". Но это если константа. А так MultiByteToWideChar и WideCharToMultiByte.
|
|||
|
||||
| p0s0l |
|
||||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 2 Всего: 112 |
RAN:
Только еще:
А я бы сказал NetApiBufferAllocate И по-моему строка (LPBYTE*)pBuf++; неправильная, хотя я в си несилен... Надо чтобы pBuf увеличивался на размер GROUP_USERS_INFO_0 Это сообщение отредактировал(а) p0s0l - 12.9.2003, 00:35 -------------------- С уважением, г-н Посол. |
||||
|
|||||
| RAN |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Неправильная, но работать будет. Потому что сначала будет выполнено ++, а потом преобразование "впустую". Здесь (LPBYTE*) лишнее.
А сколько выделять? Я это тоже видел, но примеров нет и не понятно сколько памяти выделять. |
||||
|
|||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 2 Всего: 112 |
Все-таки ничего не надо выделять - это хелп допотопный...
В MSDN'е:
-------------------- С уважением, г-н Посол. |
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Вот нашёл обсуждение Как привести переменную типа char* к wchar_t*.
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |