Форум: "Основная";
Текущий архив: 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