Форум: "Основная";
Текущий архив: 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