Перейти к содержимому

Фотография

Как распарсить строчку


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 Ul_Svetlana

Ul_Svetlana

    Новый участник

  • Members
  • Pip
  • 22 сообщений
  • ФИО:Лебедева Светлана Сергеевна

Отправлено 10 января 2008 - 09:05

Добрый день!
Подскажите, пожалуйста, есть ли способ решить такую проблему: из ini-файла читается строка
[codebox]"c:\{WorkingFolder}\Input"[/codebox]
как сделать так, чтобы при работе скрипта в строку вместо {WorkingFolder} было вставлено значение этой переменной?
Большое спасибо
  • 0

#2 Dmitry_NS

Dmitry_NS

    Активный участник

  • Members
  • PipPip
  • 134 сообщений
  • ФИО:Дима
  • Город:Елизово

Отправлено 10 января 2008 - 09:32

Добрый день!
Подскажите, пожалуйста, есть ли способ решить такую проблему: из ini-файла читается строка

"c:\{WorkingFolder}\Input"
как сделать так, чтобы при работе скрипта в строку вместо {WorkingFolder} было вставлено значение этой переменной?
Большое спасибо


STRING sValue = "c:\{{WorkingFolder}\Input"

STRING sWorkingFolder = "Work"

sValue = StrTran( sValue , "{{WorkingFolder}" , sWorkingFolder )

Двойные фигурные скобки здесь только потому, чтобы замаскировать специальный символ {. Из ини-файла фигурная скобка считывается как есть.
  • 0
Основной принцип моего существования — служение гуманистическим идеалам человечества.

#3 Ul_Svetlana

Ul_Svetlana

    Новый участник

  • Members
  • Pip
  • 22 сообщений
  • ФИО:Лебедева Светлана Сергеевна

Отправлено 10 января 2008 - 09:51

Добрый день!
Подскажите, пожалуйста, есть ли способ решить такую проблему: из ini-файла читается строка

"c:\{WorkingFolder}\Input"
как сделать так, чтобы при работе скрипта в строку вместо {WorkingFolder} было вставлено значение этой переменной?
Большое спасибо


STRING sValue = "c:\{{WorkingFolder}\Input"

STRING sWorkingFolder = "Work"

sValue = StrTran( sValue , "{{WorkingFolder}" , sWorkingFolder )

Двойные фигурные скобки здесь только потому, чтобы замаскировать специальный символ {. Из ини-файла фигурная скобка считывается как есть.


К сожалению, этот код у меня не работает, пишет синтаксическую ошибку на месте "{{WorkingFolder}"
  • 0

#4 vass

vass

    Опытный участник

  • Members
  • PipPipPipPip
  • 298 сообщений
  • ФИО:Василий

Отправлено 10 января 2008 - 10:20

вот так надо ;)
STRING sValue = "c:\"{WorkingFolder}\Input"
STRING sWorkingFolder = "Work"
sValue = StrTran( sValue , ""{WorkingFolder}" , sWorkingFolder )
еще можно (но это для адвансед юзеров :smile: и вообще не гарантируется корректная работа ;) )
STRING sValue = "c:\"{WorkingFolder}\Input"
sValue = EvaluateString ("""{sValue}""")
а вот вариант попроще но cработает не только для WorkingFolder :
STRING sValue = "c:\"{WorkingFolder}\Input"
STRING sSubs = GetField(GetField(sValue, ""{", 2), "}", 1)
sValue = StrTran (sValue, ""{{sSubs}}", @sSubs)

  • 0

#5 Dmitry_NS

Dmitry_NS

    Активный участник

  • Members
  • PipPip
  • 134 сообщений
  • ФИО:Дима
  • Город:Елизово

Отправлено 10 января 2008 - 10:29

вот так надо ;)


опередил :)

ну на всякий случай приведу и свой пример с вычиткой из ини-файла
[ ] STRING sWorkingFolder = "temp"
	[ ] 
	[ ] HINIFILE hIni = IniFileOpen ("C:\test.ini")
	[ ] STRING sINIVal = IniFileGetValue (hIni, "section", "val")
	[ ] STRING sNewValue = StrTran (sINIVal, ""{WorkingFolder}", sWorkingFolder)
	[ ] IniFileClose (hIni)
	[ ] 
	[ ] Print(sNewValue)

тут надо заметить, что если необходимо работать со строкой, в которой встречается открывающая фигурная скобка, то ее надо экранировать двойной кавычкой. А в первом сообщении я просто опечатался, прошу прощения :)
  • 0
Основной принцип моего существования — служение гуманистическим идеалам человечества.

#6 Ul_Svetlana

Ul_Svetlana

    Новый участник

  • Members
  • Pip
  • 22 сообщений
  • ФИО:Лебедева Светлана Сергеевна

Отправлено 10 января 2008 - 12:11

Всем огромное спасибо! Все работает отлично!
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных