Главная страница
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.013 c
3-46236
Malder
2002-03-18 20:43
2002.04.15
Добавление информации к Blob полю


3-46247
.victor
2002-03-25 13:49
2002.04.15
Хранение изображений в БД


7-46527
Fellomena
2002-01-18 14:06
2002.04.15
API, System resources and ******* (inside)


1-46339
Andrey__
2002-04-03 21:08
2002.04.15
Delphi 5 --> Delphi 6. Проблема...


3-46232
Cyber
2002-03-22 23:35
2002.04.15
Blob-поле