Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
Sheppard
1 / 1 / 0
Регистрация: 27.05.2012
Сообщений: 48
1

Некорректный вывод текста

06.07.2012, 05:37. Просмотров 556. Ответов 6
Метки нет (Все метки)

Здравствуйте! Есть такая функция:
C++
1
2
3
4
5
6
7
8
9
10
11
wchar_t* GetPlayerInfo()
{
    wchar_t buffer[64];
    .......
    int player_scores = GetScores(player);
    int player_level = GetLevel(player);
    int player_kills = GetKills(player);
    int player_deaths = GetDeaths(player);
    swprintf_s(buffer, L"Level: %d / Scores: %d / Kills: %d / Deaths: %d", player_level, player_scores, player_kills, player_deaths);
    return buffer;
}
Результат отрисовки текста (DX11, шрифт Arial):
 Комментарий модератора 
Создайте изображение, которое видно не только под микроскопом, и прикрепите его к сообщению (расширенный режим -> управление вложениями)

Когда просто вывожу текст с помощью MessageBoxW всё отлично...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2012, 05:37
Ответы с готовыми решениями:

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

Некорректный ввод русского текста
Всем привет..столкнулся с такой проблемой. Есть программа которая считывает с...

Некорректный вывод
#include "stdafx.h" #include <iostream> #include <cstring> #include...

Некорректный вывод
Почему-то все выводимые y равны 1. #include "stdafx.h" #include <iostream>...

Некорректный вывод
Не получается вывести имена файлов (какая-то белиберда на выходе). И не могу...

6
MrCold
861 / 759 / 174
Регистрация: 11.01.2012
Сообщений: 1,942
06.07.2012, 06:03 2
как выводите ?

Так ?
C++
1
printf("%ws", buffer);
0
Sheppard
1 / 1 / 0
Регистрация: 27.05.2012
Сообщений: 48
06.07.2012, 06:34  [ТС] 3
Цитата Сообщение от MrCold Посмотреть сообщение
как выводите ?

Так ?
C++
1
printf("%ws", buffer);
Я рисую:
C++
1
DrawText(GetPlayerInfo(), 16, 0, 0, 0xff0099ff, 0);
P.S. Когда я в GetPlayerInfo возвращаю простой текст, например -
C++
1
return L"Test string";
, то он правильно рисуется (не иероглифами)
0
MrCold
861 / 759 / 174
Регистрация: 11.01.2012
Сообщений: 1,942
06.07.2012, 07:06 4
Sheppard, предложу только заменить только все широкие символы
на обычный char, а больше и не знаю что делать , да еще ошибка возврат
локальной переменной, надо static сделать
вот так
C++
1
2
3
4
5
6
7
8
9
10
11
char* GetPlayerInfo()
{
   static char buffer[64];
 
    int player_scores = GetScores(player);
    int player_level = GetLevel(player);
    int player_kills = GetKills(player);
    int player_deaths = GetDeaths(player);
    sprintf_s(buffer, "Level: %d / Scores: %d / Kills: %d / Deaths: %d", player_level, player_scores, player_kills, player_deaths);
    return buffer;
}
0
Sheppard
1 / 1 / 0
Регистрация: 27.05.2012
Сообщений: 48
06.07.2012, 07:26  [ТС] 5
Цитата Сообщение от MrCold Посмотреть сообщение
Sheppard, предложу только заменить только все широкие символы
на обычный char, а больше и не знаю что делать , да еще ошибка возврат
локальной переменной, надо static сделать
вот так
C++
1
2
3
4
5
6
7
8
9
10
11
char* GetPlayerInfo()
{
   static char buffer[64];
 
    int player_scores = GetScores(player);
    int player_level = GetLevel(player);
    int player_kills = GetKills(player);
    int player_deaths = GetDeaths(player);
    sprintf_s(buffer, "Level: %d / Scores: %d / Kills: %d / Deaths: %d", player_level, player_scores, player_kills, player_deaths);
    return buffer;
}
Для рисования текста в DirectX 11 используется WCHAR
0
Case-Man
167 / 107 / 22
Регистрация: 02.01.2012
Сообщений: 596
06.07.2012, 09:05 6
Цитата Сообщение от MrCold Посмотреть сообщение
еще ошибка возврат
локальной переменной
Вот тут корень всех проблем. Переменная на стеке затирается раньше, чем до нее доберется DX
Проще буфер снаружи в процедуру передавать.
Ну, или static, но это не самое красивое решение.
0
Sheppard
1 / 1 / 0
Регистрация: 27.05.2012
Сообщений: 48
06.07.2012, 16:16  [ТС] 7
Спасибо большое, да вы права проблема была именно с буфером!
0
06.07.2012, 16:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2012, 16:16

Некорректный вывод
Правильно считает только х выводит не правильно, если убрать ссылки то все...

Некорректный вывод
Проблема очень странная, впервые с таким сталкиваюсь. Итак, вводятся сначала 3...

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru