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

Вниз

разбор строки   Найти похожие ветки 

 
ded_di   (2002-04-12 12:11) [0]

Мастера. Ищу хорошую компоненту по разбору строк типа параметр=значение ... параметр=значение и др. Если кто-то занимался и имеет свое мнение, я бы хотел его знать. Спасибо.


 
IMHO   (2002-04-12 12:12) [1]

TIniFile не подойдет ?


 
Виктор Щербаков   (2002-04-12 12:13) [2]

А нужна ли компонента для этого?
Проще функцией.


 
Игорь Шевченко   (2002-04-12 12:15) [3]

День добрый,

Компонент называется TStringList

С уважением,


 
Александр С..   (2002-04-12 12:16) [4]

У TStrings все это имеется


 
ded_di   (2002-04-12 12:26) [5]

Уважаемые мастера видимо не поняли моей идеи (или я туговат). Положим есть строка

Параметр1=значение1 парамеТР2=значение2 Параметр3=
значение3 параметр4
=
зна чение 4 параметр5 = "значение5"

Как мне ее разобрать и получать значение по указанию имени параметра? И все таки СПАСИБО.


 
DieHard   (2002-04-12 12:32) [6]

замени пробелы на переводы строки и загони в TStringList


 
Игорь Шевченко   (2002-04-12 12:32) [7]

День добрый,

Превратить эту строку в список строк вида

Параметр1=значение1
парамеТР2=значение2
Параметр3=значение3
параметр4=значение4
параметр5=значение5

Далее использовать методы TStrings, TStringList

С уважением,




 
Андрей Сенченко   (2002-04-12 12:40) [8]

>> DieHard © (12.04.02 12:32)
>> Игорь Шевченко © (12.04.02 12:32)

Идеи не совсем проходят для представленного куска текста.

>> ded_di (12.04.02 12:26)

Если исходный текст выгядит так, как Ты его описал Выше ( то есть пробелы и переносы строки могут быть в любом месте текста, а имена параметров не имеют общего начала ), то ... тяжеловато будет


 
ded_di   (2002-04-12 12:41) [9]

Секунду значение 4 параметра равно зна чение 4. Именно так и никак иначе.


 
Андрей Сенченко   (2002-04-12 12:48) [10]

Тогда ( на мой взгляд ) эта задача за пределами машинной логики. В приведенном Тобой тексте НЕТ ни одного реального разделителя блоков Параметр=Значение. Нельзя же машине объяснить, что "здесь играть, здесь не играть, а здесь я рыбу заворачивал"


 
Anatoly Podgoretsky   (2002-04-12 12:49) [11]

У тебя нет ни одной логической зацепки, что бы подобное реализовать, нужны разделители


 
Виктор Щербаков   (2002-04-12 12:49) [12]

Сначала нужно лексику и синтаксис определить, а потом писать простенький (или не очень) парсер.


 
ded_di   (2002-04-12 12:58) [13]

Мастера. Еще раз обращаюсь. В примере можно сделать так

Параметр1="значение1" парамеТР2="значение2" Параметр3="
значение3" параметр4
="
зна чение 4" параметр5 = "значение5"

Это можно, потому что после имени параметра идет "=", но такой поиск и последующая замена пробелов переводами строки, если они не в кавычках задача долгая. Я ищу, что-нибудь что будет работать быстро. Кстати имена параметров регистронезависимые.


 
Игорь Шевченко   (2002-04-12 13:11) [14]

День добрый,

По-моему, быстрее будет парсер написать, чем спрашивать :-)
Тем более, если можно каждое значение заключить в кавычки и по условию задачи пробелов и кавычек в значениях (по смыслу) быть не должно.
Первым шагом убрать ВСЕ пробелы и переводы строки, после этого каждая четная кавычка будет означать окончание пары Параметр="Значение".

С уважением,


 
Андрей Сенченко   (2002-04-12 13:15) [15]

>> ded_di (12.04.02 12:58)
>> задача долгая

Ты уверен ? Я - нет.

Алгоритм в этом случае вырисовывется достаточно простой.

Repeat

1. Ищешь вхождение 1-го " = " в строке
2. Убиваешь после него все пробелы до достижения 1-го " " "
3. Ищешь входждение 1-го " " " начиная с того, что за " = "
4. Сносишь все, что за этими кавычками переносом строки.
5. объявляещь строкой под обработку то, что осталось.

Until EOF


 
Виктор Щербаков   (2002-04-12 13:20) [16]

Лексемы у тебя такие: строка, параметр, равно.
Далее синтаксис:
"Программа":
"Выражение" "Программа"
"Выражение":
параметр равно выражение.
Вот и всё. Писать полчаса максимум.


 
Виктор Щербаков   (2002-04-12 13:21) [17]

Извиняюсь:
"Программа":
"Выражение" "Программа"
"Выражение":
параметр равно строка.



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

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

Наверх




Память: 0.48 MB
Время: 0.005 c
4-81109
SuperBizon
2002-02-20 17:36
2002.04.25
Bitmap


1-80908
Ivan Kohut
2002-04-14 21:12
2002.04.25
Проблема с TFileStream


7-81089
SoftOne
2002-01-30 02:11
2002.04.25
I/O error, 32


6-81020
avk
2002-02-07 11:03
2002.04.25
Нужно напистать....


14-81061
spb
2002-03-20 11:21
2002.04.25
ИМХО?.. Что такое ИМХО?





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