Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.02;
Скачать: CL | DM;

Вниз

Замена   Найти похожие ветки 

 
Ivolg ©   (2006-06-07 14:30) [0]

Здарова всем... У меня есть такой вопрос: Как можно заменить все знаки в тексте $ на #, не прибегая при этом к использованию TReplaceDialog ? Спасибо...


 
Тимофей Юрьевич ©   (2006-06-07 14:38) [1]

pos,posex ?


 
MBo ©   (2006-06-07 14:39) [2]

Что такое "текст" ?


 
Dmitrij_K   (2006-06-07 14:45) [3]

for j:=1 to Length(Text) do
 if Text[j]="$" then Text[j]:="#"

Ж)


 
Игорь Шевченко ©   (2006-06-07 14:51) [4]

StringReplace


 
Ivolg ©   (2006-06-07 16:55) [5]

>Игорь Шевченко
Делаю вот так:
StringReplace(Memo1.Lines.Text,":","#",rfReplaceAll);

Ругается на rfReplaceAll, пишет [Error] Unit1.pas(33): Incompatible types: "TReplaceFlags" and "Enumeration"... Заглянул в SysUtils, там все верно:
type
 TReplaceFlags = set of (rfReplaceAll, rfIgnoreCase);


В чем может быть проблема ?


 
DrPass ©   (2006-06-07 16:57) [6]


> StringReplace(Memo1.Lines.Text,":","#",[rfReplaceAll]);


 
Ivolg ©   (2006-06-07 17:05) [7]

>DrPass

Спасибо...


 
Ivolg ©   (2006-06-07 17:11) [8]

А как можно сделать, чтобы при нахождении символа # выполнялась какая-нибудь процедура, например MyProcedure; ?


 
Сергей М. ©   (2006-06-07 17:25) [9]


> Ivolg ©   (07.06.06 17:11) [8]


Средствами StringReplace() - никак.


 
Desdechado ©   (2006-06-07 17:26) [10]

[3]


 
Ivolg ©   (2006-06-07 19:01) [11]

>Desdechado ©
А есть вариант без использования массива ?


 
isasa ©   (2006-06-07 19:03) [12]

А String - это не массив символов?


 
Dmitrij_K   (2006-06-07 20:02) [13]

String - это массив


 
SergP ©   (2006-06-08 04:43) [14]


> Ivolg ©   (07.06.06 19:01) [11]
> >Desdechado ©
> А есть вариант без использования массива ?


А чем тебе [3] не нравится?
Религиозные убеждения?


 
Ivolg ©   (2006-06-09 13:06) [15]

Вообщем суть проблемы такая: Мне нужно находить в строке такие символы как :), :(, :D и т.п и выполнять процедуру, которая за место этих знаков рисовала смайлики... [3] - мне не подходит, потому что символы ( :), :(, :D ) ведь могут стоять и посередине, и в конце строки...


 
Desdechado ©   (2006-06-09 13:41) [16]

> [3] мне не подходит, потому что символы могут стоять и посередине, и в конце строки...
как будто [3] ищет только в начале
сказал бы сразу, что не можешь организовать поиск комбинации способом [3]


 
Ivolg ©   (2006-06-09 13:55) [17]

>Desdechado ©

Вообщем да...


 
Rater1   (2006-06-09 15:03) [18]

думаю что вариант [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-14 11:04) [19]

>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;

Он работает, но не то что мне нужно :( Например если пишешь " Привет :)", то получается " Привет :изображине смайлика) "...


 
ЮЮ ©   (2006-06-14 12:04) [20]


> то получается " Привет :изображине смайлика) "...

А почему должно быть иначе? В приведенном коде, по крайней мере, не и намека на изменение текста.


 
Ivolg ©   (2006-06-14 12:37) [21]

Вот еще один пример:

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]


 
Ivolg ©   (2006-06-15 16:57) [22]

Скачал исходник одного чата, но не пойму как там реализован поиск тегов :(
:) и т.п... Вот ссылка http://www.delphisources.ru/files/sources/internet/ftp_minichat.zip



Страницы: 1 вся ветка

Текущий архив: 2006.07.02;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.048 c
2-1150270626
Olleg_ator
2006-06-14 11:37
2006.07.02
Исправить структуру dbf таблицы


2-1150311706
STALKER2
2006-06-14 23:01
2006.07.02
TTreeView


3-1146665203
Bless
2006-05-03 18:06
2006.07.02
recordset.sort, похоже, некорректно работает.


3-1146642258
Stanislav
2006-05-03 11:44
2006.07.02
Драйвер для работы с DB и DBF


2-1149764652
Megabyte
2006-06-08 15:04
2006.07.02
Программное создание пользователя в MSSQL