Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
28 / 28 / 5
Регистрация: 24.03.2013
Сообщений: 238

Ошибка вычисления длины строки wchar_t

14.03.2015, 08:06. Показов 2331. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Делаю автозагрузку приложения, проблема в lstrlenW(appPath), она не вычисляет полную длину строки, отбрасывает несколько последних символов.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  // Получаем путь к приложению
    wchar_t appPath[32767];
    GetModuleFileNameW(NULL, appPath, 32767);
 
    // Заполняем путь в реестре
    wchar_t *autorunPath = L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
    wchar_t *appName = L"CApplication.exe";
 
    // Объявляем ключ
    HKEY hKey = NULL;
 
    // Записываем в реестр
    RegOpenKeyExW(HKEY_CURRENT_USER, autorunPath, 0, KEY_WRITE, &hKey);
    RegSetValueExW(hKey, appName, 0, REG_SZ, (BYTE *)appPath, lstrlenW(appPath));
    RegCloseKey(hKey);
Добавлено через 8 часов 17 минут
Посоветовали использовать wcslen, ничего не изменилось, так же теряется часть пути.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.03.2015, 08:06
Ответы с готовыми решениями:

Ошибка при подключении к XE3 библиотеки для VS: "Please use native wchar_t type (/Zc:wchar_t)"
Господа, пытаюсь прикрутить к билдеру библиотеку для работы с автокадом. К сожалению она жестко прибита гвоздями к microsoft visual studio...

Рекурсивная функция вычисления длины строки
Помогите пожалуйста решить задачу по программированию. Напишите рекурсивную функцию вычисления длины строки. Заранее благодарен.

Написать рекурсивную функцию для вычисления длины строки
Написать рекурсивную функцию для вычисления длины строки.

3
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
14.03.2015, 09:16
Цитата Сообщение от z668 Посмотреть сообщение
проблема в lstrlenW(appPath), она не вычисляет полную длину строки, отбрасывает несколько последних символов.
Ничего она не отбрасывает.
Проблема здесь в том, lstrlen возвращает длину строки в символах, а
RegSetValueEx принимает длину данных в байтах. Это все есть в документации.
Плюс к этому я рекомендую сохранять в реестре строку с завершающим нулем.
1
1779 / 757 / 153
Регистрация: 03.06.2009
Сообщений: 5,940
14.03.2015, 10:15
Лучший ответ Сообщение было отмечено z668 как решение

Решение

https://msdn.microsoft.com/en-... 85%29.aspx

cbData [in]

The size of the information pointed to by the lpData parameter, in bytes.
а у вас передается длина строки в символах. lstrlenW(appPath)*sizeof(wchar_t)
1
28 / 28 / 5
Регистрация: 24.03.2013
Сообщений: 238
14.03.2015, 12:05  [ТС]
Alexcoder, благодарю за помощь. Си изучаю 3 день только, после хорошо документированного дотнета очень сложно втянуться и найти хорошие маны, собираю по крупицам в интернете.
Добавил еще 2 байта на нулевой символ (\0) окончания строки как посоветовал Убежденный в ветке с плюсами.
Вот что в итоге получилось, мб кому то поможет.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Автозагрузка
void SetAutorun()
{
    // Получаем путь к приложению
    wchar_t appPath[32767];
    GetModuleFileNameW(NULL, appPath, 32767);
 
    // Заполняем путь в реестре
    wchar_t *autorunPath = L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
    wchar_t *appName = L"CApplication.exe";
 
    // Объявляем ключ
    HKEY hKey = NULL;
 
    // Записываем в реестр
    RegOpenKeyExW(HKEY_CURRENT_USER, autorunPath, 0, KEY_WRITE, &hKey);
    RegSetValueExW(hKey, appName, 0, REG_SZ, (BYTE *)appPath, (lstrlenW(appPath) * sizeof(wchar_t)) + 2);
    RegCloseKey(hKey);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.03.2015, 12:05
Помогаю со студенческими работами здесь

Написать собственную функцию вычисления длины строки,перевода всех введенных букв в заглавные
Написать собственную функцию вычисления длины строки,перевода всех введенных букв в заглавные.Продемонстрировать работу функции,введя...

Написать собственную функцию вычисления длины строки,перевода всех введенных букв в заглавные
Написать собственную функцию вычисления длины строки,перевода всех введенных букв в заглавные.Продемонстрировать работу функции,введя...

Ошибки (в файле содержатся строки разной длины - записать их в выходной файл в порядке возрастания длины строки)
#include <iostream> #include <set> #include <iterator> #include <fstream> #include <string> #include <algorithm> int main()...

Получить последовательность содержащую строки из A длины L1 и все строки из B длины L2 (используя LINQ)
Даны целые положительные числа L1 и L2 и строковые последовательности A и B. Строки последовательностей содержат только цифры и...

Где ошибка в коде проверки длины строки?
Всем привет) Не могу понять, в чем ошибка в коде. Все правильно сделал, а оно мне ошибку выдает. Вот код string inputString ; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru