![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
работа с copy(s,1,2), Delete(s,1,2) и Pos(';',s)
Konus © (2007-04-18 09:05:00)задача такая:
приходит сообщение, надо распознать, кому оно предназначено и показать текст адресатам
нашел пример чата, там реализовано примерно так:
простое сообщение:
if Copy(s,1,2) = '#M' then begin
Delete(s,1,2);
Memo1.Lines.Insert(0,Copy(s,1,Pos(';',s)-1)+'> '+
Copy(s,Pos(';',s)+1,Length(s)-Pos(';',s)));
это, как я понимаю, мы определили что M - message, общее сообщение
далее берем часть строки до ; - имя, добавляем > и текст сообщения от ; до конца
приватное сообщение:
if Copy(s,1,2) = '#P' then begin
Delete(s,1,2);
to_ := Copy(s,1,Pos(';',s)-1);
Delete(s,1,Pos(';',s));
from_ := Copy(s,1,Pos(';',s)-1);
Delete(s,1,Pos(';',s));
то же самое, но мы теперь знаем, что это приват
идем до первого знака ; - кому, до второго - от кого, далее - текст сообщения
мне необходимо отправлять приватные сообщения нескольким адресатам
каким образом можно реализовать?
т.е. понятно, что тем же, но откуда знать, сколько раз прыгать от ; до ; и когда начинается само сообщение?
Kolan (2007-04-19 23:21:00) [1]Предлогаю заветсти класс «Сообщение» где и инкапсулирвать весь этот разбор.
Keni (2007-04-19 23:09:00) [2]а нельзя отправить серверу несколько приваетных сообщений с разными никами.
по-поему - гораздо удобнее и легче в исполнении
Konus (2007-04-19 11:29:00) [3]спасибо
D5 стоит :/
Sha (2007-04-18 10:29:00) [4]Проще всего этих нескольких адресатов разделять запятой.
И еще, начиная с D7, есть PosEx - так что можно обойтись без Delete
Konus (2007-04-18 09:10:00) [5]если я вставлю еще какой-то специальный символ, указывающий на начало текста, как его определить?
сначала цикл добавления имен в список адресатов по такой схеме
пока не нашел специальный символ
Copy(s,1,Pos(';',s)-1);
Delete(s,1,Pos(';',s));
а потом Copy(s,Pos('СПЕЦСИМВОЛ',s)+1, Length(s)-Pos(';',s)) - текст сообщения?
если так, то каким образом сделать цикл до нахождения специального символа?