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

Вниз

Подскажите, как в полезную ф-ю commatext добавить др. разграничит   Найти похожие ветки 

 
Yuraz ©   (2002-04-01 11:06) [0]

на скобки, кавычки, апострофы, или ещё лучше на всё кроме букв, а то по умолчанию она только на пробелы слова различает. Делал и так (где то здесь встретил, но всё равно точку не отделяет)

slist.text:=StringReplace(slist.text, "." , "," , [rfReplaceAll]);

Заранее спасибо.


 
MBo ©   (2002-04-01 11:11) [1]

а у меня отделяет



 
Nikolay M. ©   (2002-04-01 11:35) [2]

Посмотри ExtractWord из RX.


 
Yuraz ©   (2002-04-01 13:23) [3]

MBo, подскажи как у тебя отделяет commatext все символы, кроме букв, я делаю так, с массивом не работает, без него работает, но тогда удаляется только точка.
slist.text:=StringReplace(slist.text, ".", "" ,[rfReplaceAll]);

а это с масивом
procedure TForm1.word1Click(Sender: TObject);
var i:integer;
slist:tstrings;
const
del_element:array [0..1] of char = (",",".");
begin
slist:=tstringlist.create;
slist.commatext:=memo1.Text;
slist.text:=StringReplace(slist.text, del_element, "" ,[rfReplaceAll]);



 
MBo ©   (2002-04-01 13:37) [4]

ты объясни, что конкретно нужно сделать?

del_element:array [0..1] of char = (",",".");
это ты pchar объявил, он преобразуется в string ",."
откуда така последовательность возьмется?


 
Alx2 ©   (2002-04-01 13:49) [5]

А если свое сделать:

Var S : String;
k : Integer;
begin
for k := 1 to Length(S) do
if not (S[k] in ["a".."z","A".."Z","а".."я","А".."Я"])
then S[k] := " ";
end;



 
Yuraz ©   (2002-04-01 13:52) [6]

В общем нужно получить только слова (только слова, без знаков препинания) из Memo1, и перенести их в Memo2. Это уже сделал с помощью commatext, до этого делал в цикле, искал пробелы, после искомое очищал от кавычек, скобок и т.д. Может с commatext это красивее, но он не очищает от ненужных символов.


 
MBo ©   (2002-04-01 14:09) [7]

вечный вопрос - что такое слова, какие могут быть знаки препинания и что считать разделителем слов.
Используй функцию Alx2,если надо, добавив цифры,
потом Commatext.


 
Alx2 ©   (2002-04-01 14:25) [8]

Собственно и без CommaText код особо не загромождается:

Const ValidSet = ["a".."z", "A".."Z", "а".."я", "А".."Я"];
Var S: String;
K, len, Start: Integer;
Begin
S := Memo1.Text;
len := Length(S);
K := 1;
While K <= len Do
Begin
While (K <= len) And (Not (S[K] In ValidSet)) Do inc(K);
Start := K;
If Start > len Then break;
inc(K);
While (K <= len) And (S[K] In ValidSet) Do inc(K);
Memo2.Lines.Add(Copy(S, Start, K - Start));
End;
End;



 
Yuraz ©   (2002-04-01 16:33) [9]

Алекс, работает супер, с моими for не сравнить, спасибо!



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

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

Наверх




Память: 0.49 MB
Время: 0.014 c
14-46503
Keith
2002-03-02 22:31
2002.04.15
как тут все... того...


4-46542
slym
2002-02-12 17:23
2002.04.15
Как из массива байтов сделать битмап?


6-46460
Diablo
2002-01-31 17:10
2002.04.15
вопрос по UDP


4-46553
slydiman
2002-02-08 23:56
2002.04.15
C++Builder & ExcelApplication


3-46287
gimbat
2002-03-25 22:47
2002.04.15
D5, MS SQL7