Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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 не сравнить, спасибо!



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

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

Наверх





Память: 0.46 MB
Время: 0.005 c
1-46358
iva
2002-04-04 14:04
2002.04.15
как получить позицию нового окна?


1-46431
Babka-Tapka
2002-04-02 23:32
2002.04.15
Как мне в свою прогу вставить цветной курсор из файла?


1-46446
skiph
2002-04-03 10:37
2002.04.15
Свой курсор


14-46505
Alx2
2002-03-07 16:35
2002.04.15
Напилася я пьяна... не дойти мне до дому...


3-46230
h1ma
2002-03-24 07:47
2002.04.15
как сложить значения полей в столбце?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский