Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > ICQClient + отправка сообщений нескольким уинам


Автор: S1nt3z 21.12.2009, 11:44
Здравствуйте уважаемые форумчане! У меня такой вопрос:
Есть компонент TICQClient и есть Edit1. В Edit1 допустим записаны уины с символом-разделителем ";"(Например 4214152;323123;5355646;232312) . Вопрос: Как сделать так, чтобы ICQClient отправил сообщения всем клиентам по отдельности проигнорировав знак ";". Не могу понять как сделать цикл. Помогите пожалуйста с циклом, а с парсингом строки уже сам разберусь smile Спасибо за внимание! 

Автор: Frees 21.12.2009, 11:49
спам хочешь рассылать?

Автор: S1nt3z 21.12.2009, 11:55
Цитата(Frees @  21.12.2009,  11:49 Найти цитируемый пост)
спам хочешь рассылать? 

Нет, вы не так поняли. У меня на работе стоит программа которой пользуются 4 человека (типа блокнота в котором работники оставляю свои заметки и отчеты). Суть в том, что я хочу реализовать ещё и отправку в ICQ сообщений которые оставляют там. Ну что-то типа рассылки, если человек введет свой уин в Edit1 то ему будет приходить в аську всё что там пишут, если уберет - то соответственно не будет smile

Автор: Данкинг 21.12.2009, 12:07
Код

function getwordnum(slovo,razd,nomer: string): string;
var i,c,int1,int2:integer;
res,ss:string;
begin
result:=slovo;
if (length(trim(slovo))=0) or (length(trim(razd))<>1)then exit;
slovo:=trim(razd)+trim(slovo)+trim(razd);
c:=0;
int1:=0;
int2:=0;
for i:=1 to length(slovo) do
 begin
  ss:=copy(slovo,i,1);
  if ss=razd then
    begin
     inc(c);
     if c=strtoint(nomer) then int1:=i;
     if c=strtoint(nomer)+1 then int2:=i;
    end;
 end;
result:=copy(slovo,int1+1,int2-int1-1);
end;
....

var i:integer;
sss:string;
begin
for i:=1 to 3 do// 3 - число УИНов
 sss:=getwordnum(edit1.text,';',inttostr(i));
end;



Автор: S1nt3z 21.12.2009, 12:28
Данкинг, большое спасибо! Помогло!

Автор: Данкинг 21.12.2009, 12:43
S1nt3z, если нужно будет узнать, сколько именно УИНов в строке, то, соответственно, посчитаешь число ";" . smile 

Автор: Qu1nt 21.12.2009, 14:08
Код

procedure SuperPuperSpam(const Source: string);
var
  i: Integer;
begin
  with TStringList.Create do
  try
    Text := StringReplace(Source, ';', sLineBreak, [rfReplaceAll]);
    for i := 0 to Count - 1 do
      // Send(Strings[i])
  finally
    Free;
  end;
end;

Автор: Демо 21.12.2009, 14:50
Qu1nt, 

Проще использовать 
Код

TStringList.Delimiter 
TStringList.DelimitedText

Автор: S1nt3z 21.12.2009, 14:57
Пасиб, ребята  smile 


Цитата(Qu1nt @  21.12.2009,  14:08 Найти цитируемый пост)
procedure SuperPuperSpam(const Source: string);

 smile 

Автор: Qu1nt 21.12.2009, 14:57
Демо,
Две строчки, против одной smile Плюс, если последний символ строки - разделитель, Ваш способ добавит пустой элемент, а мой - нет. Следовательно не нужна дополнительная проверка. 
Может быть логичней, но не проще = )

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)