Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Ghost
Сообщений: n/a
#1

Вылетает конструкция: CString st; st = _T('%x'); st.Format(st, 0xFFFFFFFF); - C++

12.10.2009, 17:33. Просмотров 939. Ответов 7
Метки нет (Все метки)

Выполняю такой код - и прога вылетает. Где ошибка - в генах или у MS?
Студия 2003

{
CString st;
UINT m_hReplicatorApplicationID (0xFFFFFFFF);
long m_lTryCount(0);
DWORD m_dwChannelID(0);

st = _T('> IP = ');
st += _T(', OP = ');
st += _T(', AI = %x');
st += _T(', TC = %x');
st += _T(', Ch = %x <');
st.Format(st, m_hReplicatorApplicationID, m_lTryCount, m_dwChannelID);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2009, 17:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вылетает конструкция: CString st; st = _T('%x'); st.Format(st, 0xFFFFFFFF); (C++):

CString::Format() и преобразование double в CString - Visual C++
Вот фрагмент программы: void CMy6_1Dlg::OnRadio3() { CString s; int i=m_list1.GetCount(); int a; int k=0; float...

Конструкция с IIf вылетает. Не могу понять в чем причина. - Visual Basic .NET
Всем доброго времени суток. Есть кодTextBox3.Text = CStr(IIf(TextBox1.Text = &quot;&quot;, 0, CInt(TextBox1.Text)) - IIf(TextBox2.Text = &quot;&quot;, 0,...

Значение 0xFFFFFFFF заменить на 0х00000000 - C#
Простите что врываюсь со своим вопросом, но он думаю по теме: Есть чтение из потока: var val = reader.ReadUInt32(); Так вот как...

Что означают 0xFFFFFFFF и 0xeeeeeeee? - C#
Здравствуйте! Подскажите, пожалуйста, что означают 0xFFFFFFFF и 0xeeeeeeee?

STOP: 0x000000A5 0X00001000 0X00000000 0XFFFFFFFF 0X00002040 - BSOD
при установки Windows 7 выбивает синий жкран с ошибками STOP: 0x000000A5 0X00001000 0X00000000 0XFFFFFFFF 0X00002040

#define PRINT(format,x) printf("x = %format\n",x) - C (СИ)
#include &lt;stdio.h&gt; #include &lt;limits.h&gt; #define PRINT(format,x) printf(&quot;x = %format\n&quot;,x) int integer = 5; char character = '5'; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ghost
Сообщений: n/a
13.10.2009, 01:15 #2
Гммм....

Вот эта конструкция вылетает:
CString st;
st = _T('%x');
st.Format(st, 0xFFFFFFFF);

А вот эта - работает:
CString st;
st.Format(_T('%x'), 0xFFFFFFFF);

и беды с CString.Format у MS идут аж с MSVC++ 2.0 (((
Фигово... ну и хрен с ним - главное - нашел, как обойти.
John Paramol
Сообщений: n/a
23.01.2011, 22:22 #3
'ghost', я тебя знаю?
Ghost
Сообщений: n/a
24.01.2011, 15:35 #4
Сомневаюсь
boombastik
7 / 7 / 0
Регистрация: 13.02.2007
Сообщений: 1,255
24.01.2011, 18:29 #5
Я бы тоже на месте MS выбросил Exception, ты же пытаешься менять строку которую используешь в качестве шаблона для ф-ции формат. Можешь объяснить, зачем тебе такое поведение программы?
0
Ghost
Сообщений: n/a
25.01.2011, 14:32 #6
гммммм.... бум - спасибо ))) я не тормоз )
в общем - не люблю плодить лишние переменные.
заработало в виде:

{
CString st;
UINT m_hReplicatorApplicationID (0xFFFFFFFF);
long m_lTryCount(0);
DWORD m_dwChannelID(0);

st = _T('> IP = ');
st += _T(', OP = ');
st += _T(', AI = %x');
st += _T(', TC = %x');
st += _T(', Ch = %x <');
st2.Format(st, m_hReplicatorApplicationID, m_lTryCount, m_dwChannelID);
}
boombastik
7 / 7 / 0
Регистрация: 13.02.2007
Сообщений: 1,255
26.01.2011, 00:03 #7
Ghost в отличие от John Paramol я-то тебя давно знаю, по крайней мере по постам на релибе, и я знаю, что ты не тормоз

Функция Format берет в качестве первого параметра LPCTSTR - длинный указатель на неизменяемую строку и подразумевает что та не изменяется. Ты ей даешь переменную типа CString происходит неявное преобразование строки в этот указатель, по сути просто ссылка на внутренний буфер класса CString приводится к LPCTSTR. Начинается работа функции форматирования и внутренний соответственно внутренний буфер объекта CString начинает менятся. 'Как же это так?' - возмущается ф-ция формата и выбрасывает ошибку. Короче конфликтик получается.

Вообще для неизменямых шаблонов для функции Format лучше всего подойдут строковые константы. Ну а для изменямых придется завести новую переменну. Кстати вовсе не обязательно тяжелую CString, подойдет и char[200] или char* (в Unicode версии _TCHAR или как то так).

С уважением, Владимир
0
Ghost
Сообщений: n/a
26.01.2011, 14:19 #8
>> Функция Format берет в качестве первого параметра LPCTSTR - длинный указатель на
неизменяемую строку и подразумевает что та не изменяется

Да допер сразу после вопроса, спасибо ) как-то не задумывался на эту тему
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.01.2011, 14:19
Привет! Вот еще темы с ответами:

Хром не открывается, модем вылетает, везде просят капчу. И вылетает синий экран - Удаление вирусов
В общем, хотела найти лечение на соседнем форуме...но мой вопрос проигнорили.:( Одна надежда на Вас!:) Итак, с чего всё началось : ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.01.2011, 14:19
Ответ Создать тему
Опции темы

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