HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 08.04.2021, 05:09
ANZR
Участник форума
Регистрация: 03.08.2019
Сообщений: 168
С нами: 3568604

Репутация: 48
По умолчанию

Всем, ку

Хоть я и развился в SF довольно-таки просто, но все таки стыдный вопрос возник

Есть у меня RPC пакет с id = 93 (кто знает, тот поймет)

Так вот, как правильно его прочитать, чтоб вывести итоговое сообщение в чат

У меня вышло так

с++:





Код:
UINT32 dColor
;
UINT32 messageLen
;
params
->
bitStream
->
ResetReadPointer
(
)
;
params
->
bitStream
->
Read
(
dColor
)
;
params
->
bitStream
->
Read
(
messageLen
)
;
char
*
msg
=
new
char
[
messageLen
]
;
params
->
bitStream
->
Read
(
msg
,
messageLen
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
0
,
0xAA
,
0
)
,
msg
)
;
params
->
bitStream
->
ResetReadPointer
(
)
;


Но вот в чем загвоздка, после прочтения, у меня вместе с сообщением может вывести мусор. С чем это связано
 
Ответить с цитированием

  #2  
Старый 08.04.2021, 11:24
AdCKuY_DpO4uLa
Постоянный
Регистрация: 05.08.2018
Сообщений: 372
С нами: 4091290

Репутация: 213
По умолчанию

C++:





Код:
UINT32 dColor
;
UINT32 messageLen
;
params
->
bitStream
->
ResetReadPointer
(
)
;
params
->
bitStream
->
Read
(
dColor
)
;
params
->
bitStream
->
Read
(
messageLen
)
;
char
*
msg
=
new
char
[
messageLen
]
;
params
->
bitStream
->
Read
(
msg
,
messageLen
)
;
msg
[
messageLen
]
=
'\0'
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
0
,
0xAA
,
0
)
,
msg
)
;
msg
[
]
delete
;
msg
=
nullptr
;
params
->
bitStream
->
ResetReadPointer
(
)
;


Попробуй так
 
Ответить с цитированием

  #3  
Старый 08.04.2021, 12:57
kin4stat
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами: 4483143

Репутация: 183


По умолчанию

Цитата:
Сообщение от AdCKuY_DpO4uLa  

C++:





Код:
UINT32 dColor
;
UINT32 messageLen
;
params
->
bitStream
->
ResetReadPointer
(
)
;
params
->
bitStream
->
Read
(
dColor
)
;
params
->
bitStream
->
Read
(
messageLen
)
;
char
*
msg
=
new
char
[
messageLen
]
;
params
->
bitStream
->
Read
(
msg
,
messageLen
)
;
msg
[
messageLen
]
=
'\0'
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
0
,
0xAA
,
0
)
,
msg
)
;
msg
[
]
delete
;
msg
=
nullptr
;
params
->
bitStream
->
ResetReadPointer
(
)
;


Попробуй так
Сегфолт
 
Ответить с цитированием

  #4  
Старый 08.04.2021, 13:00
AdCKuY_DpO4uLa
Постоянный
Регистрация: 05.08.2018
Сообщений: 372
С нами: 4091290

Репутация: 213
По умолчанию

Цитата:
Сообщение от KiN4StAt  

Сегфолт
Что?
 
Ответить с цитированием

  #5  
Старый 08.04.2021, 14:07
Musaigen
Познавший АНТИЧАТ
Регистрация: 01.04.2018
Сообщений: 1,710
С нами: 4272230

Репутация: 183


По умолчанию

Цитата:
Сообщение от AdCKuY_DpO4uLa  

Что?
Ошибка сегментации — Википедия

ru.wikipedia.org
 
Ответить с цитированием

  #6  
Старый 08.04.2021, 14:37
AdCKuY_DpO4uLa
Постоянный
Регистрация: 05.08.2018
Сообщений: 372
С нами: 4091290

Репутация: 213
По умолчанию

Цитата:
Сообщение от Musaigen  
И почему она происходит?
 
Ответить с цитированием

  #7  
Старый 08.04.2021, 16:04
Dark_Knight
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами: 6921957

Репутация: 183


По умолчанию

Цитата:
Сообщение от AdCKuY_DpO4uLa  

И почему она происходит?
Потому что ты дурак, вот почему. Обращаешься к несуществующему участку памяти.
 
Ответить с цитированием

  #8  
Старый 08.04.2021, 16:20
ANZR
Участник форума
Регистрация: 03.08.2019
Сообщений: 168
С нами: 3568604

Репутация: 48
По умолчанию

Все конечно хорошо, а проблему кто-нить скажет?)
 
Ответить с цитированием

  #9  
Старый 08.04.2021, 16:24
Dark_Knight
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами: 6921957

Репутация: 183


По умолчанию

Пробуй.

C++:





Код:
UINT32 dColor
;
UINT32 len
;
std
::
string text
;
auto
*
bs
=
params
->
bitStream
;
bs
->
Read
(
dColor
)
;
bs
->
Read
(
len
)
;
text
.
resize
(
len
)
;
bs
->
Read
(
text
.
data
(
)
,
len
)
;
 
Ответить с цитированием

  #10  
Старый 08.04.2021, 19:28
kin4stat
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами: 4483143

Репутация: 183


По умолчанию

Цитата:
Сообщение от AdCKuY_DpO4uLa  

Ещё и обозвал((
Тебе повезло что тебя не крашнуло потому что

undefined behavior
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.