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

  #6841  
Старый 19.04.2023, 02:43
Leatington
Участник форума
Регистрация: 25.11.2018
Сообщений: 263
С нами: 3929792

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

Использую в проекте "Use Multi-Byte Character Set". Заметил, что при работе с sqlite3_open (www.sqlite.org) и наличии русских символов в пути к базе возвращает unable to open database file. Как решить проблему?
 
Ответить с цитированием

  #6842  
Старый 19.04.2023, 04:32
Digger Man52
Познавший АНТИЧАТ
Регистрация: 14.07.2019
Сообщений: 1,097
С нами: 3596877

Репутация: 183


По умолчанию

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

Использую в проекте "Use Multi-Byte Character Set". Заметил, что при работе с sqlite3_open (www.sqlite.org) и наличии русских символов в пути к базе возвращает unable to open database file. Как решить проблему?
Ты когда мульти байт используешь, у тебя некоторые буквы на кириллице представляются несколькими байтами,

sqlite3_open ожидает UTF-8, который использует однобайтовую кодировку для ASCII и многобайтовую для не ASCII, включая кириллицу , преобразуй путь к файлу в UTF-8 перед передачей в sqlite3_open, в винапи для этого есть MultiByteToWideChar и обратная WideCharToMultiByte
 
Ответить с цитированием

  #6843  
Старый 19.04.2023, 15:36
Leatington
Участник форума
Регистрация: 25.11.2018
Сообщений: 263
С нами: 3929792

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

Цитата:
Сообщение от Digger Man  

Ты когда мульти байт используешь, у тебя некоторые буквы на кириллице представляются несколькими байтами,
sqlite3_open ожидает UTF-8, который использует однобайтовую кодировку для ASCII и многобайтовую для не ASCII, включая кириллицу , преобразуй путь к файлу в UTF-8 перед передачей в sqlite3_open, в винапи для этого есть MultiByteToWideChar и обратная WideCharToMultiByte
(обновлено), получилось с помощью следующей функции, спасибо.

C++:





Код:
std
::
string
CP1251_to_UTF8
(
const
char
*
str
)
{
std
::
string res
;
int
result_u
,
result_c
;
result_u
=
MultiByteToWideChar
(
1251
,
0
,
str
,
-
1
,
0
,
0
)
;
if
(
!
result_u
)
{
return
0
;
}
wchar_t
*
ures
=
new
wchar_t
[
result_u
]
;
if
(
!
MultiByteToWideChar
(
1251
,
0
,
str
,
-
1
,
ures
,
result_u
)
)
{
delete
[
]
ures
;
return
0
;
}
result_c
=
WideCharToMultiByte
(
65001
,
0
,
ures
,
-
1
,
0
,
0
,
0
,
0
)
;
if
(
!
result_c
)
{
delete
[
]
ures
;
return
0
;
}
char
*
cres
=
new
char
[
result_c
]
;
if
(
!
WideCharToMultiByte
(
65001
,
0
,
ures
,
-
1
,
cres
,
result_c
,
0
,
0
)
)
{
delete
[
]
cres
;
return
0
;
}
delete
[
]
ures
;
res
.
append
(
cres
)
;
delete
[
]
cres
;
return
res
;
}


Код:





[CODE]
std::string res = CP1251_to_UTF8(path.c_str());

sqlite3* users;
if (sqlite3_open(res.c_str(), &users))
{
std::cout

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

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

Репутация: 183


По умолчанию

[QUOTE="Leatington"]

(обновлено), получилось с помощью следующей функции, спасибо.

C++:





Код:
std
::
string
CP1251_to_UTF8
(
const
char
*
str
)
{
std
::
string res
;
int
result_u
,
result_c
;
result_u
=
MultiByteToWideChar
(
1251
,
0
,
str
,
-
1
,
0
,
0
)
;
if
(
!
result_u
)
{
return
0
;
}
wchar_t
*
ures
=
new
wchar_t
[
result_u
]
;
if
(
!
MultiByteToWideChar
(
1251
,
0
,
str
,
-
1
,
ures
,
result_u
)
)
{
delete
[
]
ures
;
return
0
;
}
result_c
=
WideCharToMultiByte
(
65001
,
0
,
ures
,
-
1
,
0
,
0
,
0
,
0
)
;
if
(
!
result_c
)
{
delete
[
]
ures
;
return
0
;
}
char
*
cres
=
new
char
[
result_c
]
;
if
(
!
WideCharToMultiByte
(
65001
,
0
,
ures
,
-
1
,
cres
,
result_c
,
0
,
0
)
)
{
delete
[
]
cres
;
return
0
;
}
delete
[
]
ures
;
res
.
append
(
cres
)
;
delete
[
]
cres
;
return
res
;
}


Код:





[CODE]
std::string res = CP1251_to_UTF8(path.c_str());

sqlite3* users;
if (sqlite3_open(res.c_str(), &users))
{
std::cout
 
Ответить с цитированием

  #6845  
Старый 19.04.2023, 18:39
Digger Man52
Познавший АНТИЧАТ
Регистрация: 14.07.2019
Сообщений: 1,097
С нами: 3596877

Репутация: 183


По умолчанию

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

и вроде функцию можно укоротить в два вызова (но это не точно)
можно, если wstring и wstring_convert юзать

по поводу мемори лика, можно просто перед каждым ретерном добавить delete[] ures/cres
 
Ответить с цитированием

  #6846  
Старый 22.04.2023, 17:10
AkeGGa.biz
Новичок
Регистрация: 05.04.2023
Сообщений: 10
С нами: 1637808

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

qq, как имитировать нажатие Y?

от этого стоит защита:

c++:





Код:
keybd_event
(
key
,
0
,
KEYEVENTF_KEYDOWN
,
0
)
;
sleep
(
10
)
keybd_event
(
key
,
0
,
KEYEVENTF_KEYUP
,
0
)
;


дайте варики что юзать
 
Ответить с цитированием

  #6847  
Старый 22.04.2023, 19:32
Digger Man52
Познавший АНТИЧАТ
Регистрация: 14.07.2019
Сообщений: 1,097
С нами: 3596877

Репутация: 183


По умолчанию

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

qq, как имитировать нажатие Y?
от этого стоит защита:

c++:





Код:
keybd_event
(
key
,
0
,
KEYEVENTF_KEYDOWN
,
0
)
;
sleep
(
10
)
keybd_event
(
key
,
0
,
KEYEVENTF_KEYUP
,
0
)
;


дайте варики что юзать
SendInput() в вин апи есть

input.ki.wScan = MapVirtualKey('Y', MAPVK_VK_TO_VSC);

input.ki.wVk = 'Y';
 
Ответить с цитированием

  #6848  
Старый 23.04.2023, 15:15
ARMOR
Флудер
Регистрация: 02.02.2019
Сообщений: 5,070
С нами: 3831395

Репутация: 183


По умолчанию

Как можно получить название кнопок диалога без хука на CDIalog::Show? Облазил всю структуру CDialog и подструктур в ней, но нихуя.
 
Ответить с цитированием

  #6849  
Старый 23.04.2023, 21:39
RTD
Постоянный
Регистрация: 18.03.2017
Сообщений: 410
С нами: 4818548

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

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

Как можно получить название кнопок диалога без хука на CDIalog::Show? Облазил всю структуру CDialog и подструктур в ней, но нихуя.
Полезные сниппеты и функции

в чем смысл загружать длл в свой же процесс таким способом? ракбот ну и длл лоадер

www.blast.hk
 
Ответить с цитированием

  #6850  
Старый 26.04.2023, 02:20
Solution
Постоянный
Регистрация: 06.09.2017
Сообщений: 505
С нами: 4571066

Репутация: 251


По умолчанию

как реализовать запуск входа на сервер(открытие гташки) на плюсах? пробовал отправять с цмдху samp.exe с ником/айпи/портом = подключение к :7777, gta_sa.exe = дало одиночку. буду благодарен
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.

×

Внести депозит

Введите сумму USDT:

Принимается только USDT TRC20. Fake/Flash USDT не засчитывается.

×

Вывести депозит

Сумма USDT:

Ваш USDT TRC20 кошелек:

Заявка будет отправлена администратору.