Главная страница
    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.46 MB
Время: 0.008 c
1-99578
Anton.
2003-12-17 17:05
2003.12.30
Как в рич едит узнать позицию курсора?


8-99657
MIKL
2003-08-26 14:14
2003.12.30
Потдержка jpeg, gif, и т.д


14-99743
Сатир
2003-12-07 19:30
2003.12.30
Новый взгляд на курение


14-99781
avk02
2003-12-03 04:53
2003.12.30
Корпус Xaser III v2000 Super Tower


3-99469
konst_bsh
2003-12-05 09:04
2003.12.30
Да, плачевная ситуация с компонентами FIBPlus.





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