
10.07.2016, 15:48
|
|
Флудер
Регистрация: 23.03.2013
Сообщений: 2,696
С нами:
6915558
Репутация:
183
|
|
Сообщение от iAmerican
Решил уже . Проблема тут была..
Код:
Код:
#pragma comment(lib, "C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\x64\d3d9.lib")
Походу путь просто неправильно читал , указал в проекте путь к библиотекам и все нормально стало.
C:\\Program Files (x86)\\Microsoft DirectX SDK (June 2010)\\Lib\\x64\\d3d9.lib
|
|
|

10.07.2016, 22:47
|
|
Познающий
Регистрация: 27.03.2016
Сообщений: 78
С нами:
5331145
Репутация:
0
|
|
Никак не получается составить регулярное выражение. Есть строчка либо формата "ip1 ip2", либо просто "ip1". Нужно регулярками понять сколько введено адресов и записать каждое в переменную. Поможете? Вот есть небольшая наработка.
C++:
Код:
std
::
regex
rgx
(
"([:digit:]{1,3}\.[:digit:]{1,3}\.[:digit:]{1,3}\.[:digit:]{1,3}) ([:digit:]{1,3}\.[:digit:]{1,3}\.[:digit:]{1,3}\.[:digit:]{1,3})"
)
;
std
::
smatch match
;
if
(
std
::
regex_search
(
playerid
,
match
,
rgx
)
)
{
if
(
match
[
2
]
.
matched
)
{
SF
->
LogFile
(
"[EM]: Найдено 2 ip адреса"
,
m
)
;
findedip
=
match
[
1
]
;
sprintf
(
sInfo
.
ip1
,
"%s"
,
findedip
.
c_str
(
)
)
;
findedip
=
match
[
2
]
;
sprintf
(
sInfo
.
ip2
,
"%s"
,
findedip
.
c_str
(
)
)
;
SF
->
LogFile
(
"[EM]: %s %s"
,
sInfo
.
ip1
,
sInfo
.
ip2
)
;
}
else
if
(
match
[
1
]
.
matched
)
{
SF
->
LogFile
(
"[EM]: Найден 1 ip адрес."
)
;
findedip
=
match
[
1
]
;
sprintf
(
sInfo
.
ip1
,
"%s"
,
findedip
.
c_str
(
)
)
;
SF
->
LogFile
(
"[EM]: %s"
,
sInfo
.
ip1
)
;
}
else
{
SF
->
LogFile
(
"[EM]: Ошибка ввода."
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
0xFF
,
0
,
0
)
,
"Проверьте правильность ввода!"
)
;
return
;
}
}
|
|
|

11.07.2016, 04:40
|
|
Флудер
Регистрация: 23.03.2013
Сообщений: 2,696
С нами:
6915558
Репутация:
183
|
|
Сообщение от QGate
Никак не получается составить регулярное выражение. Есть строчка либо формата "ip1 ip2", либо просто "ip1". Нужно регулярками понять сколько введено адресов и записать каждое в переменную. Поможете? Вот есть небольшая наработка.
C++:
Код:
std
::
regex
rx
(
"(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})"
)
;
std
::
smatch rx_match
;
std
::
string str
=
"15.14.88.4 127.0.0.1"
;
byte count
=
0
;
// http://stackoverflow.com/questions/6136699/visual-studio-2010-c-tr1-regex-equivalent-of-perl-g-global-modifier
auto
str_it
=
str
.
cbegin
(
)
;
while
(
std
::
regex_search
(
str_it
,
str
.
cend
(
)
,
rx_match
,
rx
)
)
{
// SF->Log("%s", rx_match.str().c_str());
str_it
=
rx_match
[
0
]
.
second
;
count
++
;
}
printf
(
"Found: %d\n"
,
count
)
;
Если хочешь прям точно определить, IP ли это(максимальный диапазон ипа - 255.255.255.255), то можешь найти в интернете, либо помучиться самому. Вообще, составить регулярку для такой задачи будет тяжело, поэтому как-нибудь через строки проверяй.
|
|
|

11.07.2016, 11:43
|
|
Познающий
Регистрация: 27.03.2016
Сообщений: 78
С нами:
5331145
Репутация:
0
|
|
Сообщение от legend2360
C++:
Код:
std
::
regex
rx
(
"(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})"
)
;
std
::
smatch rx_match
;
std
::
string str
=
"15.14.88.4 127.0.0.1"
;
byte count
=
0
;
// http://stackoverflow.com/questions/6136699/visual-studio-2010-c-tr1-regex-equivalent-of-perl-g-global-modifier
auto
str_it
=
str
.
cbegin
(
)
;
while
(
std
::
regex_search
(
str_it
,
str
.
cend
(
)
,
rx_match
,
rx
)
)
{
// SF->Log("%s", rx_match.str().c_str());
str_it
=
rx_match
[
0
]
.
second
;
count
++
;
}
printf
(
"Found: %d\n"
,
count
)
;
Если хочешь прям точно определить, IP ли это(максимальный диапазон ипа - 255.255.255.255), то можешь найти в интернете, либо помучиться самому. Вообще, составить регулярку для такой задачи будет тяжело, поэтому как-нибудь через строки проверяй.
Я нашел выход из этой ситуации. Я сделал просто 2 регулярки, одна ищет 2 ип адреса в стринге, вторая - один, соответственно если не находится 2 адреса, ищется 1.
C++:
Код:
std
::
regex
rgx1
(
"(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}) (\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})"
)
;
std
::
regex
rgx2
(
"(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})"
)
;
std
::
smatch match
;
if
(
std
::
regex_search
(
playerid
,
match
,
rgx1
)
)
{
SF
->
LogFile
(
"[EM]: Найдено 2 ip адреса"
,
m
)
;
findedip1
=
match
[
1
]
;
findedip2
=
match
[
2
]
;
SF
->
LogFile
(
"[EM]: %s %s"
,
findedip1
.
c_str
(
)
,
findedip2
.
c_str
(
)
)
;
return
;
}
else
if
(
std
::
regex_search
(
playerid
,
match
,
rgx2
)
)
{
SF
->
LogFile
(
"[EM]: Найден 1 ip адрес."
)
;
findedip1
=
match
[
1
]
;
SF
->
LogFile
(
"[EM]: %s"
,
findedip1
.
c_str
(
)
)
;
return
;
}
|
|
|

11.07.2016, 14:11
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Сообщение от QGate
Я нашел выход из этой ситуации. Я сделал просто 2 регулярки, одна ищет 2 ип адреса в стринге, вторая - один, соответственно если не находится 2 адреса, ищется 1.
Твои регурялки плохие.
https://yadi.sk/i/7A9glYbFtBekc
Так же регекс сеарч нужно юзать в цикле, а не как условие.
http://pastebin.com/V0d8paZX
|
|
|

11.07.2016, 14:36
|
|
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами:
6603505
Репутация:
183
|
|
Сообщение от Dark_Knight
регекс сеарч нужно юзать в цикле, а не как условие.
для поиска подстроки в строки с дальнейшим извлечением из нее параметров вполне катит в качестве условия
|
|
|

11.07.2016, 17:59
|
|
Познающий
Регистрация: 27.03.2016
Сообщений: 78
С нами:
5331145
Репутация:
0
|
|
Ну плохи не плохие... по крайней мере оно работает  А насчет цикла не знал.
|
|
|

11.07.2016, 00:18
|
|
Новичок
Регистрация: 07.06.2016
Сообщений: 14
С нами:
5227107
Репутация:
0
|
|
Хочу начать учить C++, где взять уроки?
|
|
|

11.07.2016, 09:22
|
|
Участник форума
Регистрация: 04.07.2015
Сообщений: 168
С нами:
5715860
Репутация:
78
|
|
есть адрес памяти на RPC ClickTextDraw что то типа такого?
|
|
|

11.07.2016, 12:11
|
|
Флудер
Регистрация: 23.03.2013
Сообщений: 2,696
С нами:
6915558
Репутация:
183
|
|
Требую больше костылей!
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|