ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

19.02.2009, 19:40
|
|
Познающий
Регистрация: 20.12.2008
Сообщений: 76
Провел на форуме: 432982
Репутация:
6
|
|
Я новичек в делфи, поэтому просьба не пинать. Как сделать так чтоб этот кусок кода выполнялся 10 раз и останавливался?
Код:
ICQclient1.SendMessage(StrToInt(target.Text),edit.text);
Sleep(200);
ICQclient2.SendMessage(StrToInt(target.Text),edit.text);
Sleep(200);
ICQclient3.SendMessage(StrToInt(target.Text),edit.text);
И вот еще при ипользовании оператора Sleep программа немного подвисает, как сделать чтоб клиенты по очереди слали сообщения с определенным промежутком времени. Тоесть мне надо например при нажатии на кнопку 3 этих ICQClient'а будут слать сообщения с имтервалом 200мс 10 раз, тоесть с итоге должно получится 30 сообщний
|
|
|

19.02.2009, 19:58
|
|
Познающий
Регистрация: 01.03.2008
Сообщений: 99
Провел на форуме: 613745
Репутация:
51
|
|
Эм, циклом?
Код:
For x:=1 to 10 do begin
ICQclient1.SendMessage(StrToInt(target.Text),edit. text);
Sleep(200);
ICQclient2.SendMessage(StrToInt(target.Text),edit. text);
Sleep(200);
ICQclient3.SendMessage(StrToInt(target.Text),edit. text);
end;
А от зависаний я пользовался Аpplication.ProcessMessages(), но при сложных расчётах, как со слипом будет работать - не скажу. Ну либо компонентом TIdAntiFreeze
Последний раз редактировалось lll6; 19.02.2009 в 20:02..
|
|
|

19.02.2009, 20:24
|
|
Участник форума
Регистрация: 06.06.2008
Сообщений: 171
Провел на форуме: 1085601
Репутация:
110
|
|
чтоб не зависало тут или в отдельном потоке или
Код:
procedure sleep(ms:cardinal);
var
tc:cardinal;
begin
tc:=GetTickCount;
repeat
Application.ProcessMessages;
until GetTickCount-tc > ms;
end;
|
|
|

19.02.2009, 23:22
|
|
Участник форума
Регистрация: 01.08.2008
Сообщений: 239
Провел на форуме: 448388
Репутация:
31
|
|
Всем привет!
Есть задача подсчитать кол-во предложений в тексте.
1. Есть ли что-то готовое на этот счёт?
2. Начала реализовывать вот так:
clrscr;
assign(text, 'text.txt');
reset(text);
while not EOF(text) do
begin
read(text, simb);
write(simb);
if (simb='.')or(simb='!')or(simb='?') then inc(kol);
end;
writeln;
writeln ('Текст состоит из ',kol,' предложений');
readln;
close(text);
Но получается что для более точного подсчёта предложений мне нужно знать что находится перед символами "." "!" "?", а использовать стандартные функции работы с текстом нельзя и массивы тоже.
Подскажите пожалуйста как выйти из данной ситуации?
|
|
|

20.02.2009, 00:39
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
Примерно так делай. Определит все предлложения кроме незаконченных символами . ? !
Код:
var
s,tmp:string;
x,len,cnt:integer;
f:text;
begin
cnt:=0;
assign(f,'input.txt');
reset(f);
while not eof(f) do
begin
readln(f,s);
len:=length(s);
for x:=1 to len-1 do // перебираем все символы кроме последнего
begin
// 1 - Eсли удовлетваряет услови.
// 2 - чтобы исключить ... .? !? итд
if (s[x] in ['!','?','.']) and (s[x+1] in ['!','?','.']=false) then inc(cnt);
end;
if (s[len] in ['!','?','.']) then inc(cnt);
end;
вывод cnt
Последний раз редактировалось slesh; 20.02.2009 в 00:45..
|
|
|

20.02.2009, 00:54
|
|
Участник форума
Регистрация: 01.08.2008
Сообщений: 239
Провел на форуме: 448388
Репутация:
31
|
|
Сообщение от slesh
Примерно так делай. Определит все предлложения кроме незаконченных символами . ? !
Код:
var
s,tmp:string;
x,len,cnt:integer;
f:text;
begin
cnt:=0;
assign(f,'input.txt');
reset(f);
while not eof(f) do
begin
readln(f,s);
len:=length(s);
for x:=1 to len-1 do // перебираем все символы кроме последнего
begin
// 1 - Eсли удовлетваряет услови.
// 2 - чтобы исключить ... .? !? итд
if (s[x] in ['!','?','.']) and (s[x+1] in ['!','?','.']=false) then inc(cnt);
end;
if (s[len] in ['!','?','.']) then inc(cnt);
end;
вывод cnt
Спасибо тебе конечно, но переменными типа string пользоваться нельзя, так же как и массивами 
|
|
|

20.02.2009, 01:05
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
тогда идем так:
Код:
var
c,last_c:char;
cnt:integer;
f:text;
begin
cnt:=0;
last_c:=' ';
assign(f,'input.txt');
reset(f);
while not eof(f) do
begin
read(f,c);
if (c in ['!','?','.']) and (last_c in ['!','?','.']=false) then inc(cnt);
last_c:=c;
end;
close(f);
вывод cnt
|
|
|

20.02.2009, 01:12
|
|
Участник форума
Регистрация: 01.08.2008
Сообщений: 239
Провел на форуме: 448388
Репутация:
31
|
|
Странно, всё нормально но выдаёт 0.
Ни разу не видел такой синтаксис:
(last_c in ['!','?','.']=false)
Но суть понятна: если прошлвый символ <> ни одному элементу этого массива то...
//Всё окей, прошу прощения, мои глюкю
((last_c in ['!','?','.'])=false)
slesh Спасибо что не оставил без внимания! 
Последний раз редактировалось OnArs; 20.02.2009 в 01:18..
|
|
|

20.02.2009, 23:22
|
|
Познавший АНТИЧАТ
Регистрация: 29.04.2007
Сообщений: 1,189
Провел на форуме: 5749763
Репутация:
1680
|
|
Есть ли способ проверить текст в memo на наличии DOS кодировки, есть ли она там или нет ?
|
|
|

20.02.2009, 23:43
|
|
Banned
Регистрация: 06.01.2008
Сообщений: 904
Провел на форуме: 4037638
Репутация:
1821
|
|
Сообщение от slesh
тогда идем так:
Код:
var
c,last_c:char;
cnt:integer;
f:text;
begin
cnt:=0;
last_c:=' ';
assign(f,'input.txt');
reset(f);
while not eof(f) do
begin
read(f,c);
if (c in ['!','?','.']) and (last_c in ['!','?','.']=false) then inc(cnt);
last_c:=c;
end;
close(f);
вывод cnt
Slesh Есть недочеты в коде:
Вот пофикси.
Код:
assignfile(f,'input.txt');
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|