А зачем делать пробел разделителем?
Он должен быть редким символом.
61. Kibor - 08 Декабря, 2017 - 03:30:52 - перейти к сообщению
62. 007wan - 08 Декабря, 2017 - 04:58:45 - перейти к сообщению
CODE:
if (size_char>15 || size_char<5 || a[0]==' ' || a[1]==' '|| a[2]==' '|| a[3]==' '|| a[4]==' '|| a[5]==' '|| a[6]==' '|| a[7]==' '|| a[8]==' '|| a[9]==' '|| a[10]==' '|| a[11]==' '|| a[11]==' '|| a[12]==' '|| a[13]==' '|| a[14]==' ')
{
external(INT, "my_message", "MessageBoxA", "user32.dll");
my_message(0, "Íèê äîëæåí èìåòü > 5 ñèìâîëîâ èëè < 15 è íåëüçÿ èñïîëüçîâàòü ÏÐÎÁÅË", "Îãðàíè÷åíèå", 0);
}
{
external(INT, "my_message", "MessageBoxA", "user32.dll");
my_message(0, "Íèê äîëæåí èìåòü > 5 ñèìâîëîâ èëè < 15 è íåëüçÿ èñïîëüçîâàòü ÏÐÎÁÅË", "Îãðàíè÷åíèå", 0);
}
(Добавление)
Kibor , Ну хорошо, тогда не пробел, как это сделать?
(Добавление)
Как упростить выше код, не используя метки гото, потому что наверняка понадобится переменная, которая будет прибавлять n++; ,а без метки никак.
(Добавление)
А не, я for поставлю
(Добавление)
CODE:
char a[256];
string b=text_edit0[0];
strcpy(#a[0], b);
int size_char=size(#a[0]);
for (int d=0; n<15; d++)
{
if (size_char>15 || size_char<5 || a[d]==' ')
{
external(INT, "my_message", "MessageBoxA", "user32.dll");
my_message(0, "Ник должен иметь > 5 символов или < 15 и нельзя использовать ПРОБЕЛ", "Ограничение", 0);
}
}
else
{
Выбрать_ник();
}
string b=text_edit0[0];
strcpy(#a[0], b);
int size_char=size(#a[0]);
for (int d=0; n<15; d++)
{
if (size_char>15 || size_char<5 || a[d]==' ')
{
external(INT, "my_message", "MessageBoxA", "user32.dll");
my_message(0, "Ник должен иметь > 5 символов или < 15 и нельзя использовать ПРОБЕЛ", "Ограничение", 0);
}
}
else
{
Выбрать_ник();
}
Ну так вообще не то... он зацикливает
(Добавление)
Ой, только не пробел, забыл исправить))
63. Kibor - 08 Декабря, 2017 - 05:34:15 - перейти к сообщению
CODE:
string nic="наш корявый ник";
if (проверить(nic)==-1)messagebox ("ник не правильный");
function проверить(string t)
{
char cnic[20];
int aw=size(t);
if (aw<5 || aw>15)return -1;
strcpy(#cnic[0], t);
for (int n=0; n<aw; n++)
{
if (cnic[n]==' ')return -1;
}
return 1;
}
if (проверить(nic)==-1)messagebox ("ник не правильный");
function проверить(string t)
{
char cnic[20];
int aw=size(t);
if (aw<5 || aw>15)return -1;
strcpy(#cnic[0], t);
for (int n=0; n<aw; n++)
{
if (cnic[n]==' ')return -1;
}
return 1;
}
64. 007wan - 08 Декабря, 2017 - 05:37:51 - перейти к сообщению
Kibor , Спасибо, вроде понятно всё, а вот работать должно)
65. 007wan - 16 Декабря, 2017 - 09:10:28 - перейти к сообщению
В чем ошибка? С логикой вроде в порядке:
(Добавление)
CODE:
//...Куча скриптов
//Для сервера:loop()
{
mu_pause (1000);
if (flag_button20[0]==1 && text_button20[0]=="Отправить")
{
if (text_edit20[0]!="")
{
text_static20[0]="[]" + text_edit0[0]+": "+text_edit20[0]+perevod+text_static20[0];
text_edit20[0]="";
strcpy(#sends[0], text_static20[0]);//заполним массив передачи текстом с второго edit
sendport (#sends[0], size(#sends[0]));//отправим
}
else
{
flag_button20[0]=0;
}
}
}
/////////////////////////////
function mu_pause(int p)//реализация паузы что бы не зависал на время ее скрипт
{
for (int t=gettime(); gettime()-t<p; sleep(10)){}
}
//////////////////////////
CREATE_TIMER(0, 50)
{
if (flag_recv==1)//если тут 1 - пришло сообщение
{
flag_recv=0;//обнулим
text_static20[0]=format(#recvs[0]);//запишем это сообщение
}
recvport (#recvs[0], 256, #flag_recv); // опять слушаем
}
//Для сервера:loop()
{
mu_pause (1000);
if (flag_button20[0]==1 && text_button20[0]=="Отправить")
{
if (text_edit20[0]!="")
{
text_static20[0]="[]" + text_edit0[0]+": "+text_edit20[0]+perevod+text_static20[0];
text_edit20[0]="";
strcpy(#sends[0], text_static20[0]);//заполним массив передачи текстом с второго edit
sendport (#sends[0], size(#sends[0]));//отправим
}
else
{
flag_button20[0]=0;
}
}
}
/////////////////////////////
function mu_pause(int p)//реализация паузы что бы не зависал на время ее скрипт
{
for (int t=gettime(); gettime()-t<p; sleep(10)){}
}
//////////////////////////
CREATE_TIMER(0, 50)
{
if (flag_recv==1)//если тут 1 - пришло сообщение
{
flag_recv=0;//обнулим
text_static20[0]=format(#recvs[0]);//запишем это сообщение
}
recvport (#recvs[0], 256, #flag_recv); // опять слушаем
}
(Добавление)
CODE:
//для клиента:
//куча скриптов...
//////////////////
function mu_pause(int pu)//реализация паузы что бы не зависал на время ее скрипт
{
for (int ty=gettime(); gettime()-ty<pu; sleep(10)){}
}
/////////////////////
loop()
{
textout(0, 0, 0, format(nh), 0);
nh++;
mu_pause (500);
}
/////////////////////
CREATE_TIMER(3, 50)
{
if (flag_button20[0]>0 && text_button20[0]=="Отправить")//если нажата кнопка
{
if (text_edit20[0]!="")//если поле не пустое
{
if (count==10)//если время вышло(паузка после отправки)
{
text_static20[0]=status+text_edit0[0]+": "+text_edit20[0]+perevod+text_static20[0];
text_edit20[0]="";
strcpy(#sends[0], text_static20[0]);//заполним массив передачи текстом с второго edit
sendhtml(#sends[0], size(#sends[0]))>0;
enabletimer(1);
}
}
else
{
flag_button20[0]=0;
}
if (opensocket ("127.0.0.1", 10005)==1)//откроем сокет на 10005 порту сервера (самому выбирать)
{
if (recvhtml(#recvs[0], 256)>0) text_static20[0]=format(#recvs[0]);//когда примем ответ запишем ответ в edit
}
closesocket ();//Закрываем сокет
}
}
//куча скриптов...
//////////////////
function mu_pause(int pu)//реализация паузы что бы не зависал на время ее скрипт
{
for (int ty=gettime(); gettime()-ty<pu; sleep(10)){}
}
/////////////////////
loop()
{
textout(0, 0, 0, format(nh), 0);
nh++;
mu_pause (500);
}
/////////////////////
CREATE_TIMER(3, 50)
{
if (flag_button20[0]>0 && text_button20[0]=="Отправить")//если нажата кнопка
{
if (text_edit20[0]!="")//если поле не пустое
{
if (count==10)//если время вышло(паузка после отправки)
{
text_static20[0]=status+text_edit0[0]+": "+text_edit20[0]+perevod+text_static20[0];
text_edit20[0]="";
strcpy(#sends[0], text_static20[0]);//заполним массив передачи текстом с второго edit
sendhtml(#sends[0], size(#sends[0]))>0;
enabletimer(1);
}
}
else
{
flag_button20[0]=0;
}
if (opensocket ("127.0.0.1", 10005)==1)//откроем сокет на 10005 порту сервера (самому выбирать)
{
if (recvhtml(#recvs[0], 256)>0) text_static20[0]=format(#recvs[0]);//когда примем ответ запишем ответ в edit
}
closesocket ();//Закрываем сокет
}
}
66. Zireael - 16 Декабря, 2017 - 09:30:25 - перейти к сообщению
Цитата:
//Для сервера:loop()
Может:
CODE:
//Для сервера:
loop()
loop()
67. 007wan - 16 Декабря, 2017 - 10:40:41 - перейти к сообщению
Zireael пишет:
Цитата:
//Для сервера:loop()
Может:
CODE:
//Для сервера:
loop()
loop()
без разницы. так просто получилось. проблема в логике и работе этого скрипта. а тут всё верно
(Добавление)
А не все работает просто таймер не активировал
(Добавление)
Как сделать ,что бы работало по принципу чата обе сборки? я знаю что там нужен сервер, просто очень надо. У меня вообще такой принцип действия: я отправил из сервера клиенту, он завис, что бы отвис мне пришлось отправлять из клиента серверу, короче это долг ои принцип просто галимый)))