Главная страница
    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.48 MB
Время: 0.006 c
4-1212106372
San1712
2008-05-30 04:12
2009.06.28
Как произвести чтение/запись в определённый кластер ?


15-1240584679
Кто б сомневался
2009-04-24 18:51
2009.06.28
Даже и не думайте пользоваться функцией Wow64DisableWow64FsRedire


15-1240411267
AlexDan
2009-04-22 18:41
2009.06.28
Задорнов об интернетчиках, любопытно..


15-1240605003
Юрий
2009-04-25 00:30
2009.06.28
С днем рождения ! 25 апреля 2009 суббота


8-1194091269
Рамиль
2007-11-03 15:01
2009.06.28
Аффинное преобразование GDI +





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