Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.06.28;
Скачать: [xml.tar.bz2];

Вниз

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

 
Овотог   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.006 c
2-1242109990
novai
2009-05-12 10:33
2009.06.28
ошибка загрузки изображения из TMemoryStream


15-1240248508
Маэстро
2009-04-20 21:28
2009.06.28
Никто не сталкивался с такой проблемой в WebMoney Keeper?


2-1242068353
Wind
2009-05-11 22:59
2009.06.28
Сравнить содержимое двух потоков TMemoryStream


3-1223084788
wardoc
2008-10-04 05:46
2009.06.28
Доступ к защищенной БД с помощью компонентов ADO


15-1240591691
Kolan
2009-04-24 20:48
2009.06.28
«Интерфейс пользователя» &amp;#8594; Интерфейсная справка





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский