Zireael |
Отправлено: 03 Октября, 2019 - 11:38:26
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: А можно ли убрать из messagebox ";"?
Вместо:
Цитата: if(regexsearch(1, #changes, history[i], "-.+", MULTILINE | SINGLELINE))messagebox(changes);
CODE:if(regexsearch(1, #changes, history[i], "-[^;]+", MULTILINE))messagebox(changes); |
|
|
Zireael |
Отправлено: 04 Октября, 2019 - 10:29:50
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: как убрать в Текущей версии: v1.0?
Заменить:
Цитата: if(regexsearch(1, #current_version, ss, "v\d+\.\d+(?=\[Now)" ))
CODE:if(regexsearch(1, #current_version, ss, "(?<=v)\d+\.\d+(?=\[Now)")) |
|
|
007wan |
Отправлено: 04 Октября, 2019 - 10:52:07
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael , А можно пожалуйста такое, уже по сложнее в несколько крат?
Текст с файла фтп (Отобразить) Цитата: Version_Information:
Current: 1.0;
---
History:
v1.1[01.10.2019]:
-Добавлена функция снимка экрана, а так же с указанием с сохранения нужного формата и места,
-Изменена иконка программы в основном окне и в настройках;
v1.2[03.10.2019]:
-Введены кнопки в виде иконок с информационными и предупреждающими подсказками,
-Упрощён код программы;
---
License_Information:
fmumjejnvn/30.10.2019/developer@mail.ru;zxcmjejnvvn/04.10.2019/pupkin@mail.ru;
Вызывается функция, например, Checking("Current version & History"); или Checking("License");
Так вот, я знаю как передавать текст в функции и тому подобное, дело не в том как сделать зависимость, а как что бы регулярка получала текст таким образом:
-Если вызывается Checking("Current version & History"); , то ищет из текста Version_Information:, если нашел, то ищет Current: 1.0;, а выводит саму версию "1.0", она может быть разной, а потом ищет History: и по датам расписывает что нового, например, "1.1"(без v) (дата в квадратных скобках, но выводит без скобок) (и сам текст это версии без промежуточной , и последней ;)
-Если вызывается Checking("License");, то ищет License_Information:, если нашел, то искать
все коробки в этом разделе, ты уже где-то кидал код, только, но ладно я его скину ниже.
вообще, далее ищет коробки, разделенные ; считает сколько их, если больше одной, то показывает сначала первый текст (fmumjejnvn) (!) каждой, потом второй (даты), потом третьей (инфа).
(Добавление)
[/spoiler]Check License (Отобразить)CODE:function Checking_License(string Type)
{
getlocaltime(Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds);
Strftime(address(#Date[0]), sizearray(Date), "%d.%m.%Y", Hour, Minute, Second, Day, Month, Year);
if (Type == "MessageBox")
{
if (sendgetweb(#Text_File[0], "Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.0; .NET CLR 1.0.2914)", "GET", "http:/"+"/.zzz.com.ua", "K2019Bot License.txt") > 0)
{
int Boxes = regexsearch(sizearray(Elements), #Elements[0], format(#Text_File[0]), "[^;]+(?=;|$)");
if (Boxes != 0)
{
for(int ii=0; ii<Boxes; ii++)
{
if(regexsearch(1, #User_Box, Elements[ii], "^.+?(?=\/)"))
{
if (User_Box == Local_User)
{
regexsearch(1, #Date_Box, Elements[ii], "(?<=\/)[\d\.]+(?=\/)");
regexsearch(1, #Information_Box, Elements[ii], "[^\/]+(?=;|$)");
Result = Date_Compare(format(#Date[0]), Date_Box, #Difference);
Checked_User = 1;
break;
}
else
{
Checked_User = 0;
}
}
}
}
}
else
{
MessageBeep(MB_ICONEXCLAMATION);
my_message(0, "Не удается подключиться к серверу. Пожалуйста повторите попытку позже." , "", MB_OK | MB_ICONERROR | MB_TOPMOST);
}
//============================
if (Checked_User == 1)
{
if (Result == 2)
{
Registered_User = 1;
if(fopen(Settings_File_Path, "r") != 0)
{
fclose();
GetPrivateProfileString ("Another", "License_Message", 0, address(#License[0]), 255, Settings_File_Path);
if (format(#License[0]) != "1")
{
MessageBeep(MB_OK);
my_message(0, "Поздравляем! Спасибо, что купили наш бот. "+Jump+"Программа будет работать только на этом компьютере."+Jump+Jump+
"Купил/(Причина): "+Information_Box+Jump+
"Для компьютера: "+User_Box+Jump+
"Срок: до "+Date_Box+" 00:00 (осталось: >"+format(Difference)+" дней)", "", MB_OK | MB_ICONINFORMATION | MB_TOPMOST);
WritePrivateProfileString ("Another", "License_Message", "1", Settings_File_Path);
}
}
}
//============================
if (Result == 1 || Result == 0)
{
Registered_User = 0;
if(fopen(Settings_File_Path, "r") != 0)
{
fclose();
GetPrivateProfileString ("Another", "License_Message", 0, address(#License[0]), 255, Settings_File_Path);
if (format(#License[0]) != "0")
{
MessageBeep(MB_ICONEXCLAMATION);
my_message(0, "У вас не полная версия программы. "+Jump+"Часть функционала работать не будет." , "", MB_OK | MB_ICONINFORMATION | MB_TOPMOST);
WritePrivateProfileString ("Another", "License_Message", "0", Settings_File_Path);
}
}
}
}
else
{
if(fopen(Settings_File_Path, "r") != 0)
{
fclose();
GetPrivateProfileString ("Another", "License_Message", 0, address(#License[0]), 255, Settings_File_Path);
if (format(#License[0]) != "0")
{
MessageBeep(MB_ICONEXCLAMATION);
my_message(0, "У вас не полная версия программы. "+Jump+"Часть функционала работать не будет." , "", MB_OK | MB_ICONINFORMATION | MB_TOPMOST);
WritePrivateProfileString ("Another", "License_Message", "0", Settings_File_Path);
}
}
}
}
//============================
if (Type == "Action")
{
if (Registered_User == 1)
{
EnableWindow(Object_Checkbox2[1], 1);
SendMessage(Object_Checkbox2[1], BM_SETCHECK, Load_Checkbox2[1], 0);
}
else
{
EnableWindow(Object_Checkbox2[1], 0);
SendMessage(Object_Checkbox2[1], BM_SETCHECK, 0, 0);
}
}
} МОжет вам помогут эти строчки кода...
(Добавление)
Update (Отобразить)CODE:function Update(int Show_Message)
{
char New_Version_Program[100000];
string path_fold = pathfolder();
char Command[1];
if (sendgetweb(#New_Version_Program[0], "Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.0; .NET CLR 1.0.2914)", "GET", "http:/"+"/
.zzz.com.ua", "
Versions.txt") > 0)
{
if(formatsn(format(#New_Version_Program[0])) > formatsn(Version_Program))
{
WritePrivateProfileString ("Another", "Update_Message", "1", Settings_File_Path);
MessageBeep(MB_ICONEXCLAMATION);
int result_message3 = my_message(0, "Найдена новая версия программы."+formatic(13)+formatic(10)+
"Текущая : v"+Version_Program+formatic(13)+formatic(10)+
"Последняя: v"+format(#New_Version_Program[0])+formatic(13)+formatic(10)+formatic(13)+formatic(10)+
"Внимание! Эта версия программы будет удалена."+formatic(13)+formatic(10)+
"Обновить программу?", "t", MB_YESNO | MB_ICONQUESTION | MB_TOPMOST);
if (result_message3 == 6)
{
Stop_Script("", 0);
MainWindow = window("");
int Status = start(path_fold+"_Update.exe");
if (Status == 1)
{
Command[0] = "1";
writebuffer(#Command[0], 1, MainWindow);
}
sleep(2000);
Command[0] = "0";
writebuffer(#Command[0], 1, MainWindow);
WritePrivateProfileString ("Another", "First_Launch", "1", Settings_File_Path);
close();
}
}
else
{
if(formatsn(format(#New_Version_Program[0])) == formatsn(Version_Program))
{
if(fopen(Settings_File_Path, "r") != 0)
{
fclose();
GetPrivateProfileString ("Another", "Update_Message", 0, address(#Update_[0]), 255, Settings_File_Path);
if (format(#Update_[0]) != "0" || Show_Message == 1)
{
MessageBeep(MB_OK);
my_message(0, "У вас последняя версия программы. Обновление не требуется.", "t", MB_OK | MB_ICONINFORMATION | MB_TOPMOST);
WritePrivateProfileString ("Another", "Update_Message", "0", Settings_File_Path);
}
}
}
}
}
else
{
MessageBeep(MB_ICONEXCLAMATION);
my_message(0, "Не удалось подключиться к серверу. Пожалуйста повторите попытку позже.", "", MB_OK | MB_ICONERROR | MB_TOPMOST);
}
}
(Добавление)
Просто подумал, лучше всё в один файл запихать и что бы все не путалось разделил "---" |
|
|
Zireael |
Отправлено: 04 Октября, 2019 - 11:13:02
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Если вызывается Checking("Current version & History" ); , то ищет из текста Version_Information
Сравнить какая строка передана в функцию, в зависимости от этого выполнять нужные действия.
CODE:string str;
Checking("Current version & History", #str);
messagebox(str);
Checking("License", #str);
messagebox(str);
function Checking(string s, string #sss)
{
if(s=="Current version & History") // если передана Current version & History
{
// тут нужные действия
sss="123"; // записать результат в переменную
return;
}
if(s=="License")
{
sss="456";
return;
}
} |
|
|
007wan |
Отправлено: 04 Октября, 2019 - 11:18:36
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael , Ну так и понял, что ты это напишешь, спасибо. Но просто если ты обратил внимание, то я чуть-чуть изменил шаблон текста, и я боюсь, запутатся, накосячить, там я добавил запятые и точку с запятыми, а так же пунтиры, всё это должно игнорирываться для прочтения, но разделяться как текст в файле, и что бы регулярка не запуталася и не накосячила. |
|
|
007wan |
Отправлено: 04 Октября, 2019 - 11:35:35
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael пишет: Пишите нужный код, регулярку я напишу какую надо. Эммм, проблема не только в этом)
Суть скрипта является в том, что получает текст из фтп, добавляет его в диалог.
Допустим "Что нового"(текст) будет дополняться со временем, то это значит, что мне придется этот текст раcпределять на другие messageobox или MessageBox, это если он не поместится в диалог, поэтому я хочу сделать компактный диалог, а именно:
-Диалог с иконкой как в MessageBox win api
- с кнопкой "ОК"
-с кнопкой "показать детали"(подчеркнутой)
При нажатии на Показать детали, открывает текстовое поле статического типа
в нём можно будет увидеть предыдущие версии и что в них добавлено, НООО главный плюс будет не только в этом, что текст прячется, а в том, что еще будет добавлен скроллер к этому полю, количество скажет текст будет рапределено на 10 строчек, а не вписывающееся можно будет прокрутить ниже и тогда сообщение будет "Компактно" и не будет растянуто на весь экран, не хочу создавать createdialog , потому что все "забиты", пробоавл CreateDialog и др, но у меня желе вместо мозга. Но исходят из того, что нету диалога, то регулярки и объединять это в один файл я просто НЕ ХОЧУ только из-за диалога, потому что в скором времени он будет во весь экран.
(Добавление)
Что-то вроде этого...
Нажмите для увеличения
Нажмите для увеличения
(Добавление)
Не знаю как вы, но я нашел очень широкое применение Task Dialog у |
|
|
|