Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 06.04.2013
Сообщений: 83

Программа из книги (Харт Джонсон | Системное программирование в среде Windows)

22.03.2015, 12:37. Показов 2782. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Программа для обработки ошибок. Рабочая программа, только не могу понять почему из функции выводит кракозябрами. Как добиться того, чтобы выводило текст ошибки на русском языке.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include "EvryThng.h"
#include <clocale> //подключаем для использования setlocale
BOOL PrintStrings (HANDLE hOut, ...)
/* Запись сообщений в буфер экрана консоли. */
{
 DWORD MsgLen, Count;
 LPCTSTR pMsg;
 va_list pMsgList; /* Строка текущего сообщения. */
 va_start (pMsgList, hOut); /* Начать обработку сообщений. */
 while ((pMsg = va_arg(pMsgList, LPCTSTR)) != NULL) {
  MsgLen = strlen(pMsg);
  /* Функция WriteConsole может применяться только с дескриптором буфера экрана консоли. */
  if (!WriteConsole(hOut, pMsg, MsgLen, &Count, NULL)
      /* Функция WriteFile вызывается только в случае неудачного завершения функции WriteConsole. */
      && !WriteFile(hOut, pMsg, MsgLen * sizeof (TCHAR), &Count, NULL)) return FALSE;
 }
 va_end (pMsgList);
 return TRUE;
}
 
BOOL PrintMsg(HANDLE hOut, LPCTSTR pMsg)
/* Версия PrintStrings для вывода одиночного сообщения. */
{
 return PrintStrings(hOut, pMsg, NULL);
}
VOID ReportError(LPCTSTR UserMessage, DWORD ExitCode, BOOL PrintErrorMsg)
/* Универсальная функция для вывода сообщений о системных ошибках. */
{   
 DWORD eMsgLen, LastErr = GetLastError();
 LPTSTR lpvSysMsg;
 HANDLE hStdErr = GetStdHandle(STD_ERROR_HANDLE);
 PrintMsg(hStdErr, UserMessage);
 if (PrintErrorMsg) {
  eMsgLen = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, LastErr, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpvSysMsg, 0, NULL);
  PrintStrings (hStdErr, _T("\n"), lpvSysMsg, _T("\n"), NULL);
  /* Освободить блок памяти, содержащий сообщение об ошибке. */
  HeapFree(GetProcessHeap(), 0, lpvSysMsg); /* См. гл. 5. */
 }
 if (ExitCode > 0) ExitProcess (ExitCode);
 else return;
} 
int main (int argc, char* argv[])
{
    
 
        setlocale(LC_ALL, "Russian");
        if (argc !=3) {
        printf ("Использование: cpC файл1 файл2\n");
        ReportError("Не указанны аргументы команды: ",0,true);
        system("pause");
        return 1;
    }
        if (!CopyFileA(argv[1], argv[2], false)) {
        //ReportError("Ошибка при выполнении функции CopyFile: ",GetLastError(),true);
        system("pause");
        return 2;
    }
        printf ("Файл file.txt успешно скопирован!\n");
        system("pause");
        return 0;
}
Миниатюры
Программа из книги (Харт Джонсон | Системное программирование в среде Windows)  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.03.2015, 12:37
Ответы с готовыми решениями:

Харт Системное программирование в среде Windows
Здравствуйте! Есть люди,которые читали книгу Харт Системное программирование в среде Windows? Меня интересуют упражнения, который в...

Нужны исходники кода из книги от Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес
книга: Приемы объектно-ориентированного проектирования. Паттерны проектирования автор: Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес ...

Системное программирование: программа контроля переход в спящий режим
Доброе время суток. Каким образом можно реализовать системно контроль перехода в спящий режим. Подскажите, что можно почитать по этой теме?...

9
 Аватар для Shvonder
46 / 35 / 24
Регистрация: 16.03.2015
Сообщений: 179
22.03.2015, 20:05
1) Настройте проект

2) строка 11, изменить
C++
1
MsgLen = (int)wcslen(pMsg);
3) строка 49, изменить
C++
1
ReportError( _T( "Не указанны аргументы команды: " ), 0,true);
0
0 / 0 / 0
Регистрация: 06.04.2013
Сообщений: 83
22.03.2015, 20:45  [ТС]
Shvonder, проект настроен, а там поменять не могу
Миниатюры
Программа из книги (Харт Джонсон | Системное программирование в среде Windows)   Программа из книги (Харт Джонсон | Системное программирование в среде Windows)  
0
 Аватар для Shvonder
46 / 35 / 24
Регистрация: 16.03.2015
Сообщений: 179
22.03.2015, 21:35
Чтобы ни париться:
Johnson_Hart_test1.zip
Также, для себя сделайте выбор и придерживайтесь его, чтобы ни путаться каждый раз.
Например, мой выбор - юникод.
0
0 / 0 / 0
Регистрация: 06.04.2013
Сообщений: 83
22.03.2015, 21:41  [ТС]
Shvonder, какая студия у вас?
0
 Аватар для Shvonder
46 / 35 / 24
Регистрация: 16.03.2015
Сообщений: 179
22.03.2015, 21:48
Десятилетней давности. Только это ни причём. Просто конвертнёт проект свежий компилятор да-и-всё.
0
0 / 0 / 0
Регистрация: 06.04.2013
Сообщений: 83
22.03.2015, 21:55  [ТС]
Shvonder, ну я понимаю, что ни причем, но у меня так как у вас не работает...
Во-первых, не работает функция
C++
1
 MsgLen = (int)wcslen(pMsg);
.
Во-вторых, выводит кракозябрами.
0
 Аватар для Shvonder
46 / 35 / 24
Регистрация: 16.03.2015
Сообщений: 179
22.03.2015, 22:00
жаль
0
0 / 0 / 0
Регистрация: 06.04.2013
Сообщений: 83
22.03.2015, 22:04  [ТС]
Shvonder, так а студия какого года?
0
 Аватар для Shvonder
46 / 35 / 24
Регистрация: 16.03.2015
Сообщений: 179
23.03.2015, 12:56
Цитата Сообщение от Lenchik_19 Посмотреть сообщение
а студия какого года?
Lenchik_19, 2005.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.03.2015, 12:56
Помогаю со студенческими работами здесь

Анонимные каналы "Системное программирование в Windows" (А. Побегайло)
Здравствуйте. Читаю книгу &quot;Системное программирование в Windows&quot; (А. Побегайло). Добрался до 15 главы &quot;Работа с анонимными...

Выбор кафедры в дальнейшей жизни: прикладное программирование VS системное программирование
Сразу извиняюсь что очень не по теме но всё же лучшего форума для этого вопроса я не нашел. Итак я вступаю во взрослую жизнь и давно...

Программирование в сетях Windows | Поиск книги
Доброго времени суток! Ищу хорошую книгу по программированию в сетях Windows! Хотелось бы книгу по новей (Лучше всего начиная с 2010...

Системное программирование
Всем привет! Если я не там тему создал, прошу указать верную. Есть проблемы с предметом &quot;Системное программирование&quot;....

Системное программирование
Добрый день! Начала изучать системное программирование, но не могу нигде найти простенькие задачи по нему. Подскажите, пожалуйста, задачи,...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru