Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.06.28;
Скачать: CL | DM;

Вниз

Скопировать участки текста до разделителя   Найти похожие ветки 

 
Овотог   (2009-05-09 15:37) [0]

Добрый день. Помогите есть задача скопировать участки текста до разделителя. Скажем есть текст в нем есть макрос-разделитель. Нужно этот текст разбить на части в соответствии с этим разделителем.


 
Сергей М. ©   (2009-05-09 15:51) [1]

см. TRegExpr


 
Овотог   (2009-05-09 16:15) [2]

А что то попроще тесть? Я вот отсюда взял функцию http://www.delphiworld.narod.ru/base/str_sep4.html но что то она не работает


 
Овотог   (2009-05-09 16:22) [3]

То есть если в качестве разделителя взять что то типа "#" то нормально работает а если например "{some_word}" то фигня получается


 
Овотог   (2009-05-09 16:22) [4]

вот сама функция

function Tokenize(Str: WideString; Delimiter: string): TStringList;
var
 tmpStrList: TStringList;
 tmpString, tmpVal: WideString;
 DelimPos: LongInt;
begin
 tmpStrList := TStringList.Create;
 TmpString := Str;
 DelimPos := 1;
 while DelimPos > 0 do
 begin
   DelimPos := LastDelimiter(Delimiter, TmpString);
   tmpVal := Copy(TmpString, DelimPos + 1, Length(TmpString));
   if tmpVal <> "" then
     tmpStrList.Add(UpperCase(tmpVal));
   Delete(TmpString, DelimPos, Length(TmpString));
 end;
 Tokenize := tmpStrList;
end;
Пример использования:

function TForm1.GetDirNames(FullPath: string): TStringList;
begin
 GetDirNames := Tokenize(FullPath, "\");
end;


 
Amoeba ©   (2009-05-09 16:38) [5]

Скачай библиотеку QStrings (бесплатно, в исходниках).
http://www.torry.net/vcl/vcltools/text/adqstrings.zip

function Q_StrTok1(var S: string; const Delimiters: string): string; overload;

{ Q_StrTok1 возвращает очередной фрагмент строки S, одновременно удаляя его
 из исходной строки и удаляя следующий за ним символ-разделитель. Q_StrTok1
 рассматривает строку S как последовательность из нуля или более текстовых
 фрагментов, отделенных друг от друга единичным символом-разделителем из
 строки Delimiters. Если в строке S подряд идет несколько разделителей, то
 функция будет возвращать пустую строку для каждого такого символа, если
 перед ним отсутствует текстовый фрагмент. В параметре Delimiters передается
 строка, которая состоит из символов, которые рассматриваются как разделители
 для строки S. Сами разделители не включаются во фрагмент, возвращаемый
 функцией Q_StrTok1. Если Delimiters - пустая строке, используются символы,
 которые были заданы в ходе предыдущего вызова одной из следующих функций:
 Q_StrTok, Q_StrSpn, Q_StrCSpn, Q_ProperCase, Q_WordAtPos, Q_SetDelimiters,
 Q_GetWordN, Q_ProperCaseInPlace, Q_CountOfWords. Если разделители передаются
 в виде множества, они не запоминаются для последующих вызовов функций. }


 
Овотог   (2009-05-09 17:04) [6]

Спасибо конечно за варианты но если честно нет времени качать и устанавливать какие то новые компоненты.

Мне вот не понятно вот есть функция эта Tokenize я взял вставил в текст разделитель например

text2:=Tokenize(text.Text,"{#}"); функция нормально разбила на три части (я два разделителя вставил) а если сделать так
text2:=Tokenize(text.Text,"{new_page}"); то разделяет на 44 части

В чем причина? Что делать?


 
Овотог   (2009-05-09 18:07) [7]

что никто не может подсказать?


 
turbouser ©   (2009-05-09 18:32) [8]

Овотог
TStrings - delimiter +
TStrings - delimetedtext
подойдет?


 
Овотог   (2009-05-09 18:56) [9]

turbouser, спасибо а можешь пример привести как это использовать? то есть текст загнать в тестринглист а дальше как?


 
antonn ©   (2009-05-09 19:21) [10]

т.е. разделить текст на подстроки?
Велосипед от Игоря Шевченко: http://desksoft.ru/index.php?drkb=26&w&id=158&str_path=0|12|24|26
:)


 
Овотог   (2009-05-09 23:20) [11]

Антон, спасибо! Работает!



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

Текущий архив: 2009.06.28;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.009 c
2-1241842827
masv
2009-05-09 08:20
2009.06.28
печать DBGridEh


3-1222688341
Kostafey
2008-09-29 15:39
2009.06.28
Помогите с SQL запросом поиска совпадений


4-1212106372
San1712
2008-05-30 04:12
2009.06.28
Как произвести чтение/запись в определённый кластер ?


15-1240058056
Andy BitOff
2009-04-18 16:34
2009.06.28
Чем пахнут профессии...


9-1180224380
TTerrain
2007-05-27 04:06
2009.06.28
Сфероид на поверхности Как его разместить равноудалённым от конта