 |
|

08.04.2021, 05:09
|
|
Участник форума
Регистрация: 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
(
)
;
Но вот в чем загвоздка, после прочтения, у меня вместе с сообщением может вывести мусор. С чем это связано
|
|
|

08.04.2021, 11:24
|
|
Постоянный
Регистрация: 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
(
)
;
Попробуй так
|
|
|

08.04.2021, 12:57
|
|
Флудер
Регистрация: 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
(
)
;
Попробуй так
Сегфолт
|
|
|

08.04.2021, 13:00
|
|
Постоянный
Регистрация: 05.08.2018
Сообщений: 372
С нами:
4091290
Репутация:
213
|
|
Сообщение от KiN4StAt
Сегфолт
Что?
|
|
|

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

08.04.2021, 14:37
|
|
Постоянный
Регистрация: 05.08.2018
Сообщений: 372
С нами:
4091290
Репутация:
213
|
|
|
|
|

08.04.2021, 16:04
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Сообщение от AdCKuY_DpO4uLa
И почему она происходит?
Потому что ты дурак, вот почему. Обращаешься к несуществующему участку памяти.
|
|
|

08.04.2021, 16:20
|
|
Участник форума
Регистрация: 03.08.2019
Сообщений: 168
С нами:
3568604
Репутация:
48
|
|
Все конечно хорошо, а проблему кто-нить скажет?)
|
|
|

08.04.2021, 16:24
|
|
Флудер
Регистрация: 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
)
;
|
|
|

08.04.2021, 19:28
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
Сообщение от AdCKuY_DpO4uLa
Ещё и обозвал((
Тебе повезло что тебя не крашнуло потому что
undefined behavior
|
|
|
|
 |
|
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|