Здравствуйте, у меня такой вопрос. имею большой скрипт, написан конечно не оптимально, но как смог. Большой в моем понимании это примерно 2300 строк.
Так вот само окно где я набираю код, начинает подтормаживать. Это скажем так предел программы или у меня что то не в порядке? так же очень очень долго запускается скрип. Выставил значения Настройки- Трансляция на максиум, но все-равно все очень долго запускает. При создании запускаемого файла, может очень долго думать и вылететь, иногда все-таки не вылетает и создает ехе.
Есть какие то пути решения этой проблемы? Заранее спасибо.
1. KeSeG - 26 Декабря, 2018 - 12:26:33 - перейти к сообщению
2. Dantes3000 - 26 Декабря, 2018 - 13:26:03 - перейти к сообщению
Для начала надо показать код. У меня вот никогда не тупило в этом плане
3. KeSeG - 27 Декабря, 2018 - 04:41:45 - перейти к сообщению
Dantes3000 пишет:
Для начала надо показать код. У меня вот никогда не тупило в этом плане
Весь код думаю, большого смысла давать нету. Вот кусок. И такого "дела" 2к строк.
CODE:
if ((a=="5")&&(b==0))
{
if
(((c=="01")&&(d>50*k-z))
||((c=="02")&&(d>50))
||((c=="03")&&(d>110*k-z))
||((c=="04")&&(d>70*k-z))
||((c=="05")&&(d>50))
||((c=="06")&&(d>50)))
{
p=1;
beep(200,200);
text_static0[2]="OK_6";
}
if
(((c=="1")&&(d<=10000-z))
||((c=="2")&&(d<=365*k-z))
||((c=="3")&&(d<=160*k-z))
||((c=="4")&&(d<=110*k-z))
||((c=="5")&&(d<=70*k-z))
||((c=="6")&&(d<=35*k-z))
||((c=="7")&&(d<=25*k-z))
||((c=="8")&&(d<=15*k-z)))
{
p=1;
beep(200,200);
text_static0[2]="YES_6";
}
if
(((c=="9")&&(d<=535*k-z))
||((c=="10")&&(d<=175*k-z))
||((c=="11")&&(d<=110*k-z))
||((c=="12")&&(d<=80*k-z))
||((c=="13")&&(d<=70*k-z))
||((c=="14")&&(d<=65*k-z))
||((c=="15")&&(d<=40*k-z))
||((c=="16")&&(d<=25*k-z)))
{
p=1;
beep(200,200);
text_static0[2]="YES_6";
}
if
(((c=="17")&&(d<=425*k-z))
||((c=="18")&&(d<=140*k-z))
||((c=="19")&&(d<=85*k-z))
||((c=="20")&&(d<=60*k-z))
||((c=="21")&&(d<=45*k-z))
||((c=="22")&&(d<=35*k-z))
||((c=="23")&&(d<=25*k-z))
||((c=="24")&&(d<=15*k-z)))
{
p=1;
beep(200,200);
text_static0[2]="YES_6";
}
if
(((c=="25")&&(d<=90*k-z))
||((c=="26")&&(d<=65*k-z))
||((c=="27")&&(d<=55*k-z))
||((c=="28")&&(d<=35*k-z))
||((c=="29")&&(d<=20*k-z)))
{
p=1;
beep(200,200);
text_static0[2]="YES_6";
}
if
(((c=="30")&&(d<=65*k-z))
||((c=="31")&&(d<=45*k-z))
||((c=="32")&&(d<=40*k-z))
||((c=="33")&&(d<=20*k-z)))
{
p=1;
beep(200,200);
text_static0[2]="YES_6";
}
if
(((c=="34")&&(d<=55*k-z))
||((c=="35")&&(d<=55*k-z))
||((c=="36")&&(d<=30*k-z))
||((c=="37")&&(d<=20*k-z)))
{
p=1;
beep(200,200);
text_static0[2]="YES_6";
}
if
(((c=="38")&&(d<=40*k-z))
||((c=="39")&&(d<=35*k-z))
||((c=="40")&&(d<=20*k-z)))
{
p=1;
beep(200,200);
text_static0[2]="YES_6";
}
if
(((c=="41")&&(d<=50*k-z))
||((c=="42")&&(d<=35*k-z))
||((c=="43")&&(d<=20*k-z)))
{
p=1;
beep(200,200);
text_static0[2]="YES_6";
}
if
(((c=="44")&&(d<=35*k-z))
||((c=="45")&&(d<=25*k-z)))
{
p=1;
beep(200,200);
text_static0[2]="YES_6";
}
if
(((c=="46")&&(d<=45*k-z))
||((c=="47")&&(d<=30*k-z))
||((c=="48")&&(d<=20*k-z)))
{
p=1;
beep(200,200);
text_static0[2]="YES_6";
}
if
(((c=="49")&&(d<=30*k-z)))
{
p=1;
beep(200,200);
text_static0[2]="YES_6";
}
if
(((c=="50")&&(d<=40*k-z))
||((c=="51")&&(d<=20*k-z)))
{
p=1;
beep(200,200);
text_static0[2]="YES_6";
}
if
(((c=="52")&&(d<=20*k-z)))
{
p=1;
beep(200,200);
text_static0[2]="YES_6";
}
if
(((c=="53")&&(d<=15*k-z)))
{
p=1;
beep(200,200);
text_static0[2]="YES_6";
}
}
{
if
(((c=="01")&&(d>50*k-z))
||((c=="02")&&(d>50))
||((c=="03")&&(d>110*k-z))
||((c=="04")&&(d>70*k-z))
||((c=="05")&&(d>50))
||((c=="06")&&(d>50)))
{
p=1;
beep(200,200);
text_static0[2]="OK_6";
}
if
(((c=="1")&&(d<=10000-z))
||((c=="2")&&(d<=365*k-z))
||((c=="3")&&(d<=160*k-z))
||((c=="4")&&(d<=110*k-z))
||((c=="5")&&(d<=70*k-z))
||((c=="6")&&(d<=35*k-z))
||((c=="7")&&(d<=25*k-z))
||((c=="8")&&(d<=15*k-z)))
{
p=1;
beep(200,200);
text_static0[2]="YES_6";
}
if
(((c=="9")&&(d<=535*k-z))
||((c=="10")&&(d<=175*k-z))
||((c=="11")&&(d<=110*k-z))
||((c=="12")&&(d<=80*k-z))
||((c=="13")&&(d<=70*k-z))
||((c=="14")&&(d<=65*k-z))
||((c=="15")&&(d<=40*k-z))
||((c=="16")&&(d<=25*k-z)))
{
p=1;
beep(200,200);
text_static0[2]="YES_6";
}
if
(((c=="17")&&(d<=425*k-z))
||((c=="18")&&(d<=140*k-z))
||((c=="19")&&(d<=85*k-z))
||((c=="20")&&(d<=60*k-z))
||((c=="21")&&(d<=45*k-z))
||((c=="22")&&(d<=35*k-z))
||((c=="23")&&(d<=25*k-z))
||((c=="24")&&(d<=15*k-z)))
{
p=1;
beep(200,200);
text_static0[2]="YES_6";
}
if
(((c=="25")&&(d<=90*k-z))
||((c=="26")&&(d<=65*k-z))
||((c=="27")&&(d<=55*k-z))
||((c=="28")&&(d<=35*k-z))
||((c=="29")&&(d<=20*k-z)))
{
p=1;
beep(200,200);
text_static0[2]="YES_6";
}
if
(((c=="30")&&(d<=65*k-z))
||((c=="31")&&(d<=45*k-z))
||((c=="32")&&(d<=40*k-z))
||((c=="33")&&(d<=20*k-z)))
{
p=1;
beep(200,200);
text_static0[2]="YES_6";
}
if
(((c=="34")&&(d<=55*k-z))
||((c=="35")&&(d<=55*k-z))
||((c=="36")&&(d<=30*k-z))
||((c=="37")&&(d<=20*k-z)))
{
p=1;
beep(200,200);
text_static0[2]="YES_6";
}
if
(((c=="38")&&(d<=40*k-z))
||((c=="39")&&(d<=35*k-z))
||((c=="40")&&(d<=20*k-z)))
{
p=1;
beep(200,200);
text_static0[2]="YES_6";
}
if
(((c=="41")&&(d<=50*k-z))
||((c=="42")&&(d<=35*k-z))
||((c=="43")&&(d<=20*k-z)))
{
p=1;
beep(200,200);
text_static0[2]="YES_6";
}
if
(((c=="44")&&(d<=35*k-z))
||((c=="45")&&(d<=25*k-z)))
{
p=1;
beep(200,200);
text_static0[2]="YES_6";
}
if
(((c=="46")&&(d<=45*k-z))
||((c=="47")&&(d<=30*k-z))
||((c=="48")&&(d<=20*k-z)))
{
p=1;
beep(200,200);
text_static0[2]="YES_6";
}
if
(((c=="49")&&(d<=30*k-z)))
{
p=1;
beep(200,200);
text_static0[2]="YES_6";
}
if
(((c=="50")&&(d<=40*k-z))
||((c=="51")&&(d<=20*k-z)))
{
p=1;
beep(200,200);
text_static0[2]="YES_6";
}
if
(((c=="52")&&(d<=20*k-z)))
{
p=1;
beep(200,200);
text_static0[2]="YES_6";
}
if
(((c=="53")&&(d<=15*k-z)))
{
p=1;
beep(200,200);
text_static0[2]="YES_6";
}
}
4. Zireael - 27 Декабря, 2018 - 04:46:18 - перейти к сообщению
CODE:
if ((a=="5")&&(b==0))
Скобки лишние:
CODE:
if (a=="5" && b==0)
Тоже самое в других строках.
5. KeSeG - 27 Декабря, 2018 - 04:50:50 - перейти к сообщению
Zireael пишет:
CODE:
if ((a=="5")&&(b==0))
Скобки лишние:
CODE:
if (a=="5" && b==0)
Тоже самое в других строках.
Большое спасибо, сейчас протестирую, но у меня вопрос все-равно остается. Я прям вижу, чем больше такого рода кода добавляю, тем дольше запускается скрипт. А сейчас у же не запускается вовсе, экзешка тоже не создается. Какое то ограничение на строки или символы?
6. Kibor - 27 Декабря, 2018 - 04:52:14 - перейти к сообщению
Zireael пишет:
С нулём можно вообще не сравнивать:
Можно не сравнивать с чем то отличным от 0
То есть если не сравнивать, условие истина если переменная не 0.
CODE:
int b=0;
string a="5";
if (a=="5" && b)//ложь
{
messagebox ("");
}
string a="5";
if (a=="5" && b)//ложь
{
messagebox ("");
}
CODE:
int b=1;
string a="5";
if (a=="5" && b)//истина
{
messagebox ("");
}
string a="5";
if (a=="5" && b)//истина
{
messagebox ("");
}
С 0 нет смысла сравнивать только так:
CODE:
b!=0
7. Zireael - 27 Декабря, 2018 - 04:59:20 - перейти к сообщению
Цитата:
С нулём можно вообще не сравнивать:
Да я уже исправил.
(Добавление)
Цитата:
Вот кусок. И такого "дела" 2к строк.
Это весь код такой?
Тут полно похожих условий, которые можно в цикле проверять.
CODE:
c=="29" && d<=20*k-z
c=="33" && d<=20*k-z
c=="37" && d<=20*k-z
c=="40" && d<=20*k-z
c=="43" && d<=20*k-z
c=="48" && d<=20*k-z
c=="51" && d<=20*k-z
c=="52" && d<=20*k-z
c=="33" && d<=20*k-z
c=="37" && d<=20*k-z
c=="40" && d<=20*k-z
c=="43" && d<=20*k-z
c=="48" && d<=20*k-z
c=="51" && d<=20*k-z
c=="52" && d<=20*k-z
Это можно так проверить:
CODE:
string c="37";
int d=100;
int k=20;
int z=10;
string s[8]={"29", "33", "37", "40", "43", "48", "51", "52"}; // массив
for(int i=0; i<sizearray(s); i++) // цикл для всего массива
{
if(c==s[i] && d<=20*k-z)messagebox(s[i]);
}
int d=100;
int k=20;
int z=10;
string s[8]={"29", "33", "37", "40", "43", "48", "51", "52"}; // массив
for(int i=0; i<sizearray(s); i++) // цикл для всего массива
{
if(c==s[i] && d<=20*k-z)messagebox(s[i]);
}
8. KeSeG - 27 Декабря, 2018 - 05:41:22 - перейти к сообщению
Zireael пишет:
Цитата:
С нулём можно вообще не сравнивать:
Да я уже исправил.
(Добавление)
Цитата:
Вот кусок. И такого "дела" 2к строк.
Это весь код такой?
Тут полно похожих условий, которые можно в цикле проверять.
CODE:
c=="29" && d<=20*k-z
c=="33" && d<=20*k-z
c=="37" && d<=20*k-z
c=="40" && d<=20*k-z
c=="43" && d<=20*k-z
c=="48" && d<=20*k-z
c=="51" && d<=20*k-z
c=="52" && d<=20*k-z
c=="33" && d<=20*k-z
c=="37" && d<=20*k-z
c=="40" && d<=20*k-z
c=="43" && d<=20*k-z
c=="48" && d<=20*k-z
c=="51" && d<=20*k-z
c=="52" && d<=20*k-z
Это можно так проверить:
CODE:
string c="37";
int d=100;
int k=20;
int z=10;
string s[8]={"29", "33", "37", "40", "43", "48", "51", "52"}; // массив
for(int i=0; i<sizearray(s); i++) // цикл для всего массива
{
if(c==s[i] && d<=20*k-z)messagebox(s[i]);
}
int d=100;
int k=20;
int z=10;
string s[8]={"29", "33", "37", "40", "43", "48", "51", "52"}; // массив
for(int i=0; i<sizearray(s); i++) // цикл для всего массива
{
if(c==s[i] && d<=20*k-z)messagebox(s[i]);
}
Спасибо за подсказку, просто условий "d<=20*k-z" у меня очень много порядка 100.
(Добавление)
Удалил лишние скобки, результата не дало(