Главная страница
    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.004 c
14-46517
Black_Angel
2002-03-02 22:41
2002.04.15
Прикол, смотри внимательней! :)))


3-46246
Sewix
2002-03-25 14:33
2002.04.15
Добавить столбец в Access


1-46432
Иван
2002-04-02 21:51
2002.04.15
отправка email


1-46323
dymka
2002-04-03 08:06
2002.04.15
Нужен совет по проектированию компонент


3-46231
Giga-Byte
2002-03-23 13:24
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский