![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Замена [D6, D7, XP, 2003]
Ivolg © (2006-06-07 14:30:00)Здарова всем... У меня есть такой вопрос: Как можно заменить все знаки в тексте $ на #, не прибегая при этом к использованию TReplaceDialog ? Спасибо...
Ivolg (2006-06-15 16:57:00) [1]Скачал исходник одного чата, но не пойму как там реализован поиск тегов :(
:) и т.п... Вот ссылка http://www.delphisources.ru/files/sources/internet/ftp_minichat.zip
Ivolg (2006-06-14 12:37:00) [2]Вот еще один пример:
var
n,s,fs:string;
begin
s:=edit2.Text;
fs:=copy(s,1,Pos(':)',s)-1);
Delete(s,1,Pos(':)',s)-1);
for g:=0 to Length(Edit2.Text) do begin
n:=copy(s,1,Pos(':)',s)+1);
if n=':)' then begin
Delete(s,1,Pos(':)',s)+1);
Delete(s,1,1);
Edit2.Text:=s;
RichEdit1.Text:=fs;
RichEdit1.SelStart:=Pos(':)',s);
Smiley(':)');
end;
end;
end;
Можете помочь доработать этот код, чтобы он работал как в описании [15]
ЮЮ (2006-06-14 12:04:00) [3]
> то получается " Привет :изображине смайлика) "...
А почему должно быть иначе? В приведенном коде, по крайней мере, не и намека на изменение текста.
Ivolg (2006-06-14 11:04:00) [4]>Rater1
Спасибо конечно, но твой вариант тоже не работает :( ...
Я пробовал делать так:
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
begin
s:=RichEdit1.Text;
while Pos(':)',s)>0 do begin
RichEdit1.SelStart:=Pos(':)',s);
RichEdit1.Text:=s;
Smiley(':)');
exit;
end;
end;
Он работает, но не то что мне нужно :( Например если пишешь " Привет :)", то получается " Привет :изображине смайлика) "...
Rater1 (2006-06-09 15:03:00) [5]думаю что вариант [3] и здесь подходит просто несколько усложненный:
for j:=1 to Length(Text) do
if (Text[j]=':') and (Text[j+1]=')') then
begin
//Draw Smile
inc(j); //увеличиваем на длинну смайлика
end else
if (Text[j]=':') and (Text[j+1]='-') and (Text[j+1]=')') then
begin
//Draw Smile
inc(j); //увеличиваем на длинну смайлика
end else
либо
for j:=1 to Length(Text) do
begin
tempstring := copy(text[j],j,2) //данный вариант будет работать только с длинной символьного смайлика = 2
if tempstring = ':)' then begin //Draw Smile1 inc(j); end else
if tempstring = ':(' then begin //Draw Smile2 inc(j); end else
if tempstring = ':/' then begin //Draw Smile3 inc(j); end;
end
Ivolg (2006-06-09 13:55:00) [6]>Desdechado ©
Вообщем да...
Desdechado (2006-06-09 13:41:00) [7]> [3] мне не подходит, потому что символы могут стоять и посередине, и в конце строки...
как будто [3] ищет только в начале
сказал бы сразу, что не можешь организовать поиск комбинации способом [3]
Ivolg (2006-06-09 13:06:00) [8]Вообщем суть проблемы такая: Мне нужно находить в строке такие символы как :), :(, :D и т.п и выполнять процедуру, которая за место этих знаков рисовала смайлики... [3] - мне не подходит, потому что символы ( :), :(, :D ) ведь могут стоять и посередине, и в конце строки...
SergP (2006-06-08 04:43:00) [9]
> Ivolg © (07.06.06 19:01) [11]
> >Desdechado ©
> А есть вариант без использования массива ?
А чем тебе [3] не нравится?
Религиозные убеждения?
Dmitrij_K (2006-06-07 20:02:00) [10]String - это массив
isasa (2006-06-07 19:03:00) [11]А String - это не массив символов?
Ivolg (2006-06-07 19:01:00) [12]>Desdechado ©
А есть вариант без использования массива ?
Desdechado (2006-06-07 17:26:00) [13][3]
Сергей М. (2006-06-07 17:25:00) [14]
> Ivolg © (07.06.06 17:11) [8]
Средствами StringReplace() - никак.
Ivolg (2006-06-07 17:11:00) [15]А как можно сделать, чтобы при нахождении символа # выполнялась какая-нибудь процедура, например MyProcedure; ?
Ivolg (2006-06-07 17:05:00) [16]>DrPass
Спасибо...
DrPass (2006-06-07 16:57:00) [17]
> StringReplace(Memo1.Lines.Text,':','#',[rfReplaceAll]);
Ivolg (2006-06-07 16:55:00) [18]>Игорь Шевченко
Делаю вот так:
StringReplace(Memo1.Lines.Text,':','#',rfReplaceAll);
Ругается на rfReplaceAll, пишет [Error] Unit1.pas(33): Incompatible types: 'TReplaceFlags' and 'Enumeration'... Заглянул в SysUtils, там все верно:
type
TReplaceFlags = set of (rfReplaceAll, rfIgnoreCase);
В чем может быть проблема ?
Игорь Шевченко (2006-06-07 14:51:00) [19]StringReplace
Dmitrij_K (2006-06-07 14:45:00) [20]
for j:=1 to Length(Text) do
if Text[j]='$' then Text[j]:='#'
Ж)