ivantu |
Отправлено: 30 Сентября, 2019 - 11:59:37
|
Эксперт
Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013
Репутация: 14
|
Подскажите что делаю не так? Пытаюсь прочитать ключ из ini и проверить его
CODE:
for (int i_r_names=0; i_r_names<22; i_r_names++){
GetPrivateProfileString ("Rune_Names", format(i_r_names), 0, address (#c_rune_names[0]), sizearray(c_rune_names), path_drop_list); // получить значение
regexreplace(-1, #rune_name, text, ".*?("+format(#c_rune_names[0])+").*", "$1"); // Оставить только имя руны
messagebox(rune_name);
}
(Отредактировано автором: 30 Сентября, 2019 - 12:00:04) |
|
|
ivantu |
Отправлено: 30 Сентября, 2019 - 15:07:57
|
Эксперт
Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013
Репутация: 14
|
Разобрался, пришлось еще одну переменную заводить...
Спойлер (Отобразить)CODE:external (INT, "GetPrivateProfileString", "GetPrivateProfileStringA", "kernel32.dll");
external (INT, "WritePrivateProfileString", "WritePrivateProfileStringA", "kernel32.dll");
char c[256];
string path="C:\kibor_set\drop_list.ini"; // путь к ini
string text="Руна сила(5)"; string rune_name;
for (int i_r_names=0; i_r_names<22; i_r_names++){
GetPrivateProfileString ("Rune_Names", format(i_r_names), 0, address (#c[0]), sizearray(c), path); // получить значение
//rune_name=format(#c[0]);
//messagebox(rune_name);
if(regexreplace(-1, #rune_name, text, ".*?("+rune_name+").*", "$1")>0){
messagebox(rune_name+" "+ format(i_r_names)); break;
}
}
(Отредактировано автором: 30 Сентября, 2019 - 15:08:24) |
|
|
Zireael |
Отправлено: 02 Октября, 2019 - 11:28:21
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: как найти цифру в строке, но начинать искать с символа "x"
CODE:string s="Выпало 123 (целых) x6 штук";
string s2;
if(regexsearch(1, #s2, s, "(?<=x)\d+"))messagebox(s2); // найти число после 'x'
else messagebox("Не найдено");
if(regexreplace(1, #s2, s, ".*?x(\d+).*", "$1"))messagebox(s2); // или так
else messagebox("Не найдено"); |
|
|
Zireael |
Отправлено: 02 Октября, 2019 - 11:41:54
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: можно в одном регулярном, сначала убрать все пробелы, а затем
Нельзя. Как вариант можно так:
CODE:string s="Выпало 123 (целых) x 6 штук"; // между 'x' и 6 могут быть пробелы
if(regexreplace(1, #s, s, ".*?x *(\d+).*", "$1"))messagebox(s);
else messagebox("Не найдено"); |
|
|
007wan |
Отправлено: 03 Октября, 2019 - 09:06:23
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael , Помогите с регулярками, пожалуйста
Есть текст.
Цитата: v1.0[Now];
History:
v1.1[01.10.2019]:
-Добавлена функция снимка экрана, а так же с указанием с сохранения нужного формата и места.
-Изменена иконка программы в основном окне и в настройках;
v1.2[03.10.2019]:
-Введены кнопки в виде иконок с информационными и предупреждающими подсказками.
-Упрощён код программы;
Сначала сравнить вывести текущую версию программы v1.0[Now]; оставив только 1.0
PS^Не забываем про разделители ;;;;
Можно вывести эти "коробки" таким образом.
Первый messagebox"(Заголовок:"+История версий программы: v1.1 Дата обновления: 01.10.2019".", "Текст ниже заголовка:" formatic(10)+formatic(13) -Добавлена функция снимка экрана, а так же с указанием с сохранения нужного формата и места.formatic(10)+formatic(13)
-Изменена иконка программы в основном окне и в настройках.
Второй messagebox"(Заголовок:"+История версий программы: v1.2 Дата обновления: 03.10.2019".", "Текст ниже заголовка:" formatic(10)+formatic(13) -Введены кнопки в виде иконок с информационными и предупреждающими подсказками.formatic(10)+formatic(13)
-Упрощён код программы.
Как-то так)
(Добавление)
PS: со временем будет пополняться текст, поэтому нужно что бы он получал количество таких коробок, и что бы v1.0[Now]; была независима от этих коробок, это совсем другая часть текста(Отредактировано автором: 03 Октября, 2019 - 09:09:53) |
|
|
Zireael |
Отправлено: 03 Октября, 2019 - 11:20:10
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Помогите с регулярками
code (Отобразить)CODE:string rn=formatic(13)+formatic(10);
string s="v1.0[Now];";
string s1="History:";
string s2="v1.1[01.10.2019]:";
string s3="-Добавлена функция снимка экрана, а так же с указанием с сохранения нужного формата и места.";
string s4="-Изменена иконка программы в основном окне и в настройках;";
string s5="v1.2[03.10.2019]:";
string s6="-Введены кнопки в виде иконок с информационными и предупреждающими подсказками.";
string s7="-Упрощён код программы;";
string ss=s+rn+s1+rn+s2+rn+s3+rn+s4+rn+s5+rn+s6+rn+s7;
messagebox(ss);
f(ss);
function f(string s)
{
string history[999], current_version, version, date, changes;
if(regexsearch(1, #current_version, ss, "v\d+\.\d+(?=\[Now)"))messagebox("Текущая версия: "+current_version);
int count=regexsearch(sizearray(history), #history[0], s, "v\d+\.\d+\[\d+\.\d+\.\d+\]:[\r\n]+(?:^-.+(?:[\r\n]|$))+", MULTILINE);
//messagebox(count);
if(count)
{
for(int i=0; i<count; i++)
{
//messagebox(history[i]);
if(regexsearch(1, #version, history[i], "v\d+\.\d+"))messagebox(version);
if(regexsearch(1, #date, history[i], "\d+\.\d+\.\d+"))messagebox(date);
if(regexsearch(1, #changes, history[i], "-.+", MULTILINE | SINGLELINE))messagebox(changes);
}
}
} |
|
|
|