Здравствуйте! Не могу разобраться что творится с метасимволами.
Задача следующая. В строковой переменной myV хранится выражение, сама переменная находится во внешнем файле preference.ini, его содержание:
Дальше речь про любой метасимвол с обратным слэшем, например символ табуляции \t.
Мы считываем эту переменную и записываем ее содержимое в текстовое поле. Допустим мы ввели \t и именно сочетание символов добавится в точку вставки - функция, конечно, совершенно условная. Хотя нужен именно символ табуляции.
Дальше это выражение записывается в настройки. При следующем запуске скрипта в поле выведется символ табуляции (а нужно как раз \t), который дальше благополучно вставится и запишется в настройки. Если ввести в поле \\t, опять же в текст вставятся эти символы \\t, но при следующем запуске в поле будет нужное для отображения значение \t и повторится вышенаписанное. Как же сделать, чтобы в текст вставлялся именно символ табуляции, если я введу \t (хотя это и не обязательно - это выражение в итоге будет в составе строки в changeGrepPreferences.changeTo, и там в такой ситуации все нормально, но для общего развития...), и, что более важно, чтобы при повторном запуске в окошке отображался тот же \t, а не сама табуляция. Ну и в сами настройки тоже постоянно записывалось \t, если не менять текст в поле.
Задача следующая. В строковой переменной myV хранится выражение, сама переменная находится во внешнем файле preference.ini, его содержание:
Код:
var myV = "";
Мы считываем эту переменную и записываем ее содержимое в текстовое поле. Допустим мы ввели \t и именно сочетание символов добавится в точку вставки - функция, конечно, совершенно условная. Хотя нужен именно символ табуляции.
Дальше это выражение записывается в настройки. При следующем запуске скрипта в поле выведется символ табуляции (а нужно как раз \t), который дальше благополучно вставится и запишется в настройки. Если ввести в поле \\t, опять же в текст вставятся эти символы \\t, но при следующем запуске в поле будет нужное для отображения значение \t и повторится вышенаписанное. Как же сделать, чтобы в текст вставлялся именно символ табуляции, если я введу \t (хотя это и не обязательно - это выражение в итоге будет в составе строки в changeGrepPreferences.changeTo, и там в такой ситуации все нормально, но для общего развития...), и, что более важно, чтобы при повторном запуске в окошке отображался тот же \t, а не сама табуляция. Ну и в сами настройки тоже постоянно записывалось \t, если не менять текст в поле.
Код:
// читаем настройки
var myPreference = File (app.activeScript.path + "/preference.ini");
eval ("//@include \"" + myPreference.path + "/" + myPreference.name + "\";");
// выводим диалог
var w = new Window ("dialog");
var myET = w.add ("edittext");
myET.text = myV;
w.add ("button", undefined, "OK");
w.add ("button", undefined, "Cancel");
w.show ();
// что-нибудь делаем
app.activeDocument.selection[0].insertionPoints[0].contents = myET.text;
// запоминаем настройки
myPreference.open("w");
myPreference.write("var myV = \"" + myET.text + "\";\n");
myPreference.close();