Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Замена [D6, D7, XP, 2003]


Страницы:   1 2

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]:='#'

Ж)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо