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

Вниз

str(255) в строку нужно различать содержание её внутренних тегов.   Найти похожие ветки 

 
Officeman   (2003-12-16 11:07) [0]

Доброе время суток, уважаемые мною друзья!
Существует некоторая строка str(255)
Нужно различать содержание её внутренних тегов. пример:
str:="[sys]www=1;admin=1[/sys] [pic]путь к картинке[/pic] [txt]некоторая строка[/txt]";
// Различаем и получаем: "Button1OnClick"
substr1:="www=1;admin=1";
substr2:="путь к картинке";
substr3:="некоторая строка";

Примерно также работает html (ГиперТекст)
Как наиболее корректно это сделать?
Прошу помочь с листнгом кода.


 
Ega23   (2003-12-16 11:12) [1]

А str у тебя константа, или меняться будет? Это я к тому, что если будет меняться, то в 255 может и не влезть...


 
bushmen   (2003-12-16 11:12) [2]

Наверное, что-нить подобное:

i := InStr(str, "]");
str1 := copy(str, i+1, length(str)-i);
i := InStr(str, "[");
substr1 := copy(str1, 1, i-1);

и т.д...


 
Officeman   (2003-12-16 15:19) [3]

? зятрудняюсь! пожалуйста опишите поподробнее.

да строка имеет разные размеры(длину), когда сказал 255, я имел виду что будут символы и цифры и др.спец.знаки.

я незнаю как это реализовать. мжет у кого была похожая задача?
пишите. может исходник есть? zeram@hotmail.ru

с Уважением, ОфисМен


 
Ega23   (2003-12-16 15:33) [4]

Тэги идут подряд, или могут быть вложенными?
Т.е. на примере скобок

(abc){def}[ghi] или может быть ({abc} [def])


 
Polevi   (2003-12-16 16:02) [5]

напоминает xml
меняем
[ на <
] на >
далее любым xml парсером
только рутовый тег нужно добавить


 
Officeman   (2003-12-17 00:25) [6]

toEga23
Да как удобно. влоджение необязательно. как проще. просто нужно параметры передавать. с тегами удобнее тем, что можно писать их в разной последовательности.

to Polevi
ээээ... =)

с Уважением, надеюсь и верю, ОфисМен


 
Palladin   (2003-12-17 00:31) [7]

напоминает ini
убираем элементы [/]
добавляем имена к неименованным параметрам
делаем перенос строк где надо
далее любым объектом TIniFile
только в файл сохранить надо
:))


 
Slym   (2003-12-17 07:39) [8]


function GetValue(Tag,Source:String):string;
var
bs,es:string;
b,e:integer;
begin
result:="";
bs:="["+Tag+"]";
es:="[/"+Tag+"]"
while Length(Source)>0 do
begin
b:=Pos(bs,Source);
if b=0 then break;
e:=Pos(es,Source);
if e=0 then break;
if b>e then break;
result:=result+copy(Source,b+Length(es),e-b-Length(es));
Delete(Source,1,e);
end;
end;

Usage

const s="[sys]www=1;admin=1[/sys] [pic]путь к картинке[/pic] [txt]некоторая строка[/txt] [sys]www2=2;admin2=1[/sys]";
var r:string;
begin
r:=GetValue("sys",s);

r="www=1;admin=1www2=2;admin2=1"

Код не проверял


 
Slym   (2003-12-17 07:45) [9]

И где гарантия что в [txt]некоторая строка[/txt] не будет такая
[txt]"некоторая [/txt] строка"[/txt]


 
Officeman   (2003-12-17 08:25) [10]

Благодарствую, только код проверить нужно на корректность.

to Slym
всё будет по правилам. тег открылся - тег закрылся.
надеюсь твой код работает.


 
Officeman   (2003-12-17 08:30) [11]

Проект. Интренет Магазин - пишу на дельфи. в зависимости от настроек - профиля пользователя буду передавать различные параметры одной строкой. поэтому хотел использовать теги, котому как парамерт может передаваться один, а может 50 штук. с тегами в этом случае удобно работать - дают гибкость сожержания параметров. ini - меня неустраивает.

с Уважением, ОфисМен



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

Форум: "Основная";
Текущий архив: 2003.12.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
8-99656
arous
2003-08-30 18:57
2003.12.30
TColor


6-99676
AlexandrKu
2003-10-31 15:00
2003.12.30
сети,режим promise


1-99605
Alex_x
2003-12-17 12:20
2003.12.30
Принтера


14-99780
ИдиотЪ
2003-12-05 16:01
2003.12.30
что такое совесть ?


14-99774
kaif
2003-12-05 17:15
2003.12.30
Совершенная модель демократии





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