Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.15;
Скачать: [xml.tar.bz2];




Вниз

Подскажите, как в полезную ф-ю 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 не сравнить, спасибо!




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.15;
Скачать: [xml.tar.bz2];




Наверх






Память: 0.76 MB
Время: 0.02 c
14-46511          erwin                 2002-03-08 15:25  2002.04.15  
как?


14-46489          Shaman_Naydak         2002-03-06 13:09  2002.04.15  
Еще про объекты


3-46229           Octav                 2002-03-23 16:05  2002.04.15  
Insert Blob in the table


14-46508          Song                  2002-03-03 11:00  2002.04.15  
Про


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