Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.25;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.016 c
3-80739
Студент
2002-04-05 13:19
2002.04.25
Кластеры в : что это такое?


1-80928
Абдурашид
2002-04-11 10:59
2002.04.25
Помогите сделать


1-80853
aleksei
2002-04-13 10:27
2002.04.25
BDE ???


1-80971
jin
2002-04-12 11:30
2002.04.25
Синтаксис языка Object Pascal


1-80868
kopachev
2002-04-12 10:28
2002.04.25
Как программно менять значение Options в StringGride