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

  #3791  
Старый 07.07.2019, 14:43
Stiopko
Постоянный
Регистрация: 28.02.2018
Сообщений: 307
С нами: 4319022

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

Цитата:
Сообщение от ๖ۣۣۜШурик  



C++:





Код:
// Возникает ошибка
string data
;
CHAR szBuffer
[
1024
]
;
strcpy
(
szBuffer
,
"{\"hash\":\"475d03f623908a13b6d8171221119a77\"}"
)
;
data
+=
szBuffer
;
// Не возникает ошибка
string data
;
CHAR szBuffer
[
1024
]
;
strcpy
(
szBuffer
,
"TEST"
)
;
data
+=
szBuffer
;


Хелп
Попробуй заменить CHAR на char

все норм робит

Цитата:
Сообщение от Спойлер  




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

  #3792  
Старый 07.07.2019, 14:48
Шурик
Новичок
Регистрация: 01.12.2009
Сообщений: 0
С нами: 8654409

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

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

Попробуй заменить CHAR на char

все норм робит

Цитата:
Сообщение от Спойлер  


Разницы никакой, ошибка также останется (проверено уже давно).

Цитата:
Сообщение от Спойлер  




Какой толк проверять компиляцию если ошибка появляется при запуске? Скомпилировать и я могу...
 
Ответить с цитированием

  #3793  
Старый 07.07.2019, 14:52
Stiopko
Постоянный
Регистрация: 28.02.2018
Сообщений: 307
С нами: 4319022

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

Цитата:
Сообщение от ๖ۣۣۜШурик  

Разницы никакой, ошибка также останется (проверено уже давно).
Цитата:
Сообщение от Спойлер  




Какой толк проверять компиляцию если ошибка появляется при запуске? Скомпилировать и я могу...
Оно скомпилировалось и выполнилось и вывело строку
 
Ответить с цитированием

  #3794  
Старый 07.07.2019, 14:54
Шурик
Новичок
Регистрация: 01.12.2009
Сообщений: 0
С нами: 8654409

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

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

Оно скомпилировалось и выполнилось и вывело строку
Уже всё, решил проблему
 
Ответить с цитированием

  #3795  
Старый 07.07.2019, 15:46
ishi
Постоянный
Регистрация: 17.01.2014
Сообщений: 493
С нами: 6483143

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

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

+ 1 не нужен, так ты будешь получать указатель на конец строки + 1, а это не только может приводить к неправильному результату функции, но и изменять данные в чужой выделенной памяти и приводить к сбою программы
Цитата:
Сообщение от _Vine_  

И вообще, можно было бы реализовать функцию и без промежуточного буфера temp
В моём случае, строка может быть слеплена с другими символами, и если скопировав её не оградить нулём, strcmp может принять следующий символ за её продолжение, и выдать 1 вместо 0, даже если константа меньшего размера, что с одной стороны и логично, ведь он выдаёт 1, а значит первое больше, но с другой стороны мне этого совершенно не нужно, и хватит сравнения того числа символов, что получено как искомая строка.

Как раз для ограждения и нужен yo, как указатель на конец. У меня не вполне адекватно себя ведёт преобразование памяти ptrTo*, потому вместо инкремента имеющегося адреса я создал указатель. Мб я криворукий, но так хотя бы ошибки доступа мозг не выносят.

temp как раз служит хранилищем для строки, без доп буфера я не нашёл способ оградить байты нулём и сравнить с искомой строкой, ну а без нуля шо - описал выше.

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

strstr
Он не ищет дальше первого нуля. В моём случае пришлось бы обрабатывать каждый ноль, а это геморрой, на мой взгляд

[QUOTE="_Vine_"]

Тут должен быть оператор
 
Ответить с цитированием

  #3796  
Старый 07.07.2019, 19:51
ishi
Постоянный
Регистрация: 17.01.2014
Сообщений: 493
С нами: 6483143

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

[QUOTE="ishi"]

[QUOTE="Спойлер"]
[COLOR="#363940"]
Обновляю запрос.

В yo была утечка, исправив слепил это:

C++:





[CODE]
int
findstring
(
void
*
where_
,
char
*
what
,
int
whereSize
)
{
void
*
temp
=
malloc
(
strlen
(
what
)
+
1
)
;
int
iterator
=
0
;
char
*
yo
=
static_cast

(
temp
)
+
strlen
(
what
)
+
1
;
char
*
tempptr
=
static_cast

(
where_
)
;
while
(
iterator



Теперь из десяти запусков по 100 вызовов, 8-9 запусков идут без ошибок, а конкретно: ошибка вылетает первые
 
Ответить с цитированием

  #3797  
Старый 07.07.2019, 20:17
-raymond-
Участник форума
Регистрация: 17.12.2017
Сообщений: 110
С нами: 4423953

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

как перезаписать строку времени в /timestamp?
 
Ответить с цитированием

  #3798  
Старый 08.07.2019, 16:06
CatKnight
Участник форума
Регистрация: 26.11.2015
Сообщений: 148
С нами: 5506473

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

Как можно при помощи СФ заблокировать камеру свою (т.е. чтобы нельзя было ей вращать вокруг персонажа)?
 
Ответить с цитированием

  #3799  
Старый 09.07.2019, 12:17
Stiopko
Постоянный
Регистрация: 28.02.2018
Сообщений: 307
С нами: 4319022

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

почему при втором запросе вылетает игра?

C++:





Код:
void
AddToString
(
char
*
*
myStr
,
const
char
*
sourse
)
{
char
*
newStr
;
if
(
*
myStr
!=
nullptr
)
{
if
(
sizeof
(
*
myStr
)
>=
strlen
(
*
myStr
)
+
strlen
(
sourse
)
+
1
)
{
strcat
(
*
myStr
,
sourse
)
;
return
;
}
else
{
newStr
=
new
char
[
strlen
(
*
myStr
)
+
strlen
(
sourse
)
+
1
]
;
strcpy
(
newStr
,
*
myStr
)
;
strcat
(
newStr
,
sourse
)
;
delete
[
]
*
myStr
;
}
}
else
{
newStr
=
new
char
[
strlen
(
sourse
)
+
1
]
;
strcpy
(
newStr
,
sourse
)
;
}
*
myStr
=
newStr
;
}
const
char
*
SendPost
(
const
char
*
site
,
const
char
*
file
,
char
*
data
,
char
*
*
mainBuf
,
bool
*
isError
)
{
if
(
*
mainBuf
==
nullptr
)
AddToString
(
mainBuf
,
""
)
;
HINTERNET hSession
=
InternetOpenA
(
"Test"
,
INTERNET_OPEN_TYPE_PRECONFIG
,
NULL
,
NULL
,
0
)
;
if
(
hSession
!=
NULL
)
{
HINTERNET hConnect
=
InternetConnectA
(
hSession
,
site
,
INTERNET_DEFAULT_HTTP_PORT
,
NULL
,
NULL
,
INTERNET_SERVICE_HTTP
,
0
,
1
)
;
if
(
hConnect
!=
NULL
)
{
HINTERNET hHttpRequest
=
HttpOpenRequestA
(
hConnect
,
"POST"
,
file
,
NULL
,
NULL
,
0
,
0
,
1
)
;
if
(
hHttpRequest
!=
NULL
)
{
char
szReq
[
1024
]
=
""
,
szBuffer
[
1025
]
;
DWORD dwByteRead
=
0
;
BOOL bRead
;
if
(
*
mainBuf
!=
nullptr
)
mainBuf
[
0
]
=
'\0'
;
LPCSTR header
;
header
=
"Accept: *\/*"
;
HttpAddRequestHeadersA
(
hHttpRequest
,
header
,
strlen
(
header
)
,
HTTP_ADDREQ_FLAG_ADD
)
;
header
=
"Content-Type: application/x-www-form-urlencoded"
;
HttpAddRequestHeadersA
(
hHttpRequest
,
header
,
strlen
(
header
)
,
HTTP_ADDREQ_FLAG_ADD
)
;
if
(
HttpSendRequestA
(
hHttpRequest
,
NULL
,
0
,
data
,
strlen
(
data
)
)
)
{
while
(
true
)
{
bRead
=
InternetReadFile
(
hHttpRequest
,
szBuffer
,
sizeof
(
szBuffer
)
-
1
,
&
dwByteRead
)
;
if
(
bRead
==
FALSE
||
dwByteRead
==
0
)
break
;
szBuffer
[
dwByteRead
]
=
'\0'
;
AddToString
(
mainBuf
,
szBuffer
)
;
}
if
(
isError
!=
nullptr
)
*
isError
=
false
;
}
else
if
(
isError
!=
nullptr
)
*
isError
=
true
;
}
else
if
(
isError
!=
nullptr
)
*
isError
=
true
;
InternetCloseHandle
(
hHttpRequest
)
;
}
else
if
(
isError
!=
nullptr
)
*
isError
=
true
;
InternetCloseHandle
(
hConnect
)
;
}
else
if
(
isError
!=
nullptr
)
*
isError
=
true
;
InternetCloseHandle
(
hSession
)
;
return
*
mainBuf
;
}
 
Ответить с цитированием

  #3800  
Старый 09.07.2019, 13:25
index
Новичок
Регистрация: 18.10.2015
Сообщений: 6
С нами: 5563739

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

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

sizeof(*myStr)
Скорее всего проблема в том, что здесь всегда будет результат 4 (8) при компиляции в x32 (x64).

Лучше используй std::string.
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.