Zireael |
Отправлено: 02 Сентября, 2019 - 14:02:38
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: flag=1;
Не объявлена переменная.
Цитата: отложенное нажатие кнопки
Не совсем понятно что именно нужно.
CODE:int flag_button=0, time;
enabletimer(0);
loop()
{
// тут скрипт
textout(0, 300, 300, "Нажмите клавишу Ё", 1);
sleep(10);
}
CREATE_TIMER(0, 30)
{
if(getkeystate(192)) // если нажата клавиша Ё
{
while(getkeystate(192))sleep(10); // ждать пока нажата Ё
flag_button=1; // флаг что кнопка была нажата
time=gettime()+2000; // через сколько выполнить условие
}
if(flag_button && gettime()>time) // если флаг стоит и время пришло выполнить действия
{
flag_button=0; // обнуляем флаг
messagebox("Прошло 2 секунды после нажатия клавиши Ё");
}
} |
|
|
007wan |
Отправлено: 02 Сентября, 2019 - 17:10:29
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Существует шаблон, например, в файле это выглядит так:
Цитата:
fmumjejnvn/22.09.2019/dich@mail.ru;fhgjkhnrtknbrjtn/12.09.2019/yur@mail.ru;ohgjkhnrtknbrjtn/10.09.2019/dir@mail.ru;
Как найти из всего текста, сначала: fmumjejnvn, если нашел, то найти то, что рядом с ним разделенный слешом (дату), если нашел, то сравнить эту дату с датой сегодня(узнать разницу: больше или меньше и на сколько разница), потом узнать то, что в другом слеше(почта или любой текст за слешом может быть). Стоить заметить, что все коробки разделены ";". И так все пропарсить если можно.
Они все строчку записаны, а не столбец если важно. |
|
|
Zireael |
Отправлено: 03 Сентября, 2019 - 02:45:07
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Как найти из всего текста
CODE:string text="fmumjejnvn/22.09.2019/dich@mail.ru;fhgjkhnrtknbrjtn/12.09.2019/yur@mail.ru;ohgjkhnrtknbrjtn/10.09.2019/dir@mail.ru";
string s[999];
string login, date, mail;
string rn=formatic(13)+formatic(10);
int count=regexsearch(sizearray(s), #s[0], text, "[^;]+(?=;|$)");
messagebox("Всего найдено: "+format(count));
for(int i=0; i<count; i++)
{
//messagebox(s[i]);
if(regexsearch(1, #login, s[i], "^.+?(?=\/)"))
{
if(regexsearch(1, #date, s[i], "(?<=\/)[\d\.]+(?=\/)"))
{
if(regexsearch(1, #mail, s[i], "[^\/]+(?=;|$)"))
{
messagebox(login+rn+date+rn+mail);
}
}
}
} |
|
|
007wan |
Отправлено: 03 Сентября, 2019 - 17:01:42
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Как сравнить дату? Например такого формата: "30.09.2019"(строгий формат, без сокращений)
Я находил код, но это не то немного. Тук
Мне нужно сравнить дату, которую он получает сейчас с датой, которая записана выше, причем вывести разницу дат(в днях). Если можно, то сравнивать в днях(для начала преобразовать это в дни)
(Добавление)
Форум опять не находит. Мне нужно когда-то я просил о том. как сделать выпуклую рамку или впуклую для статика или экдита(не помню), вроде это оно WS_EX_CLIENTEDGE, но опять не вищет(Отредактировано автором: 03 Сентября, 2019 - 17:02:42) |
|
|
Zireael |
Отправлено: 04 Сентября, 2019 - 04:14:48
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Как сравнить дату? Например такого формата: "30.09.2019"(строгий формат, без сокращений)
Особо не проверял, должно работать:
Сравнить 2 даты (Отобразить)CODE:external(INT, "SystemTimeToVariantTime", "SystemTimeToVariantTime", "OleAut32.dll");
int difference;
int result=date_compare("07.10.2019", "07.10.2020", #difference);
messagebox("Дней между датами: "+format(difference));
if(result==-1)messagebox("Ошибка");
if(result==0)messagebox("Даты равны");
if(result==1)messagebox("Первая дата больше");
if(result==2)messagebox("Вторая дата больше");
function date_compare(string d1, string d2, int #difference_day)
{
char st[16], st2[16];
double x, x2;
string s1[3], s2[3];
int count1=regexsearch(3, #s1[0], d1, "\d+");
int count2=regexsearch(3, #s2[0], d2, "\d+");
if(count1==3 && count2==3)
{
struct_systemtime(#st[0], s1[0], s1[1], s1[2]);
struct_systemtime(#st2[0], s2[0], s2[1], s2[2]);
SystemTimeToVariantTime(address(#st[0]), address(#x));
SystemTimeToVariantTime(address(#st2[0]), address(#x2));
difference_day=sqrt(pow(x2-x, 2));
if(x==x2)return 0;
if(x>x2)return 1;
if(x<x2)return 2;
}
difference_day=-1;
return -1;
}
function struct_systemtime(char #systemtime, string day, string month, string year)
{
initialarray(#systemtime[0], 0);
codhex(formatsn(year), #systemtime[0]);
codhex(formatsn(month), #systemtime[2]);
codhex(formatsn(day), #systemtime[6]);
} |
|
|
007wan |
Отправлено: 04 Сентября, 2019 - 13:30:38
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael пишет: Цитата: Как сравнить дату? Например такого формата: "30.09.2019"(строгий формат, без сокращений)
Особо не проверял, должно работать:
Сравнить 2 даты (Отобразить)CODE:external(INT, "SystemTimeToVariantTime", "SystemTimeToVariantTime", "OleAut32.dll");
int difference;
int result=date_compare("07.10.2019", "07.10.2020", #difference);
messagebox("Дней между датами: "+format(difference));
if(result==-1)messagebox("Ошибка");
if(result==0)messagebox("Даты равны");
if(result==1)messagebox("Первая дата больше");
if(result==2)messagebox("Вторая дата больше");
function date_compare(string d1, string d2, int #difference_day)
{
char st[16], st2[16];
double x, x2;
string s1[3], s2[3];
int count1=regexsearch(3, #s1[0], d1, "\d+");
int count2=regexsearch(3, #s2[0], d2, "\d+");
if(count1==3 && count2==3)
{
struct_systemtime(#st[0], s1[0], s1[1], s1[2]);
struct_systemtime(#st2[0], s2[0], s2[1], s2[2]);
SystemTimeToVariantTime(address(#st[0]), address(#x));
SystemTimeToVariantTime(address(#st2[0]), address(#x2));
difference_day=sqrt(pow(x2-x, 2));
if(x==x2)return 0;
if(x>x2)return 1;
if(x<x2)return 2;
}
difference_day=-1;
return -1;
}
function struct_systemtime(char #systemtime, string day, string month, string year)
{
initialarray(#systemtime[0], 0);
codhex(formatsn(year), #systemtime[0]);
codhex(formatsn(month), #systemtime[2]);
codhex(formatsn(day), #systemtime[6]);
}
Выдает: Дней между датами 366, а потом messagebox("Вторая дата больше"); |
|
|
|