doScript в ScriptUI

  • Автор темы Автор темы LeshikSan
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

LeshikSan

Топикстартер
15 лет на форуме
Сообщения
266
Реакции
185
Можно ли запустить doScript из под функций типа .onClick, .onChange и т.п.
Или может есть какие другие способы считки данных со скриптовых файлов (данных, а не просто текста)?
Спасибо!
 
Ответ: doScript в ScriptUI

выходит, что никак
 
Ответ: doScript в ScriptUI

Ну да, в модальном диалоге никак, а в окне, наверное, можно.

AirGraph.
 
Ответ: doScript в ScriptUI

Это было бы очень хорошо :)
 
Ответ: doScript в ScriptUI

тогда может посоветуете, как оптимально организовать получение данных из внешнего текстового файла-библиотеки через open("r"), и как лучше организовать сам этот файл, если, например, в нем нужно хранить большой array со string,boolean,nember-данными в виде вложенных array.
 
Ответ: doScript в ScriptUI

Я так думаю, что если файл текстовый и содержит много разнотипных данных в виде вложенных массивов, то стоит обратить внимание на структуру организации ресурсных файлов.

AirGraph.
 
Ответ: doScript в ScriptUI

наверно, ресурсные файлы это уже из области высшего програмирования..
собственно, озадачивает тот момент, что при чтении файла мы получаем, естественно, только string, и чтоб потом часть полученого текста преобразовать в boolean/number придется выплясывать коленцами. и то, при условии, что размер и стр-ра массива данных заведомо известны
 
Ответ: doScript в ScriptUI

imho намного проще будет на .net (с# или vb - что роднее) это написать и с InDesign через Interop работать (на PC же?)

и - файлы откуда идут? можно их в XML может оттуда выгружать и без скриптов в InDesign помещать? (или даже из того что есть XML сделать).. ну это как вариант для размышления.

вложенные массивы.. пахнет реляционной базой данных... хм
 
Ответ: doScript в ScriptUI

В JS существуют функции, преобразовывающие текстовые списки с разделителем в массивы данных. На мой взгляд очень удобно, на входе текстовая строка и разделитель, на выходе - массив данных. То, что заранее известен размер массивов ничего не меняет, а вот то, что они разнотипные и, мало того, вложенные, наводит на мысль о ресурсной организации. Да, а зачем они вложенные? Может быть это просто 3 массива?

AirGraph.
 
Ответ: doScript в ScriptUI

Вложеные, потому что как раз размер массива непостоянен (содержание - наборы пользовательских предустановок), потому проще иметь дело с одной переменной.
Вариант с разделителем, конечно, хорош, но, не в данном случае. Тут ведь какая ситуация: есть внешние файлы библиотек, дланные из которых используются в скрипте на двух этапах: до модального диалога и при модальном диалоге. В первом случае все замечательно дускриптится, во втором случае уже приходится просто тупо считывать файл библиотеки и как-то переваривать его содержание.
Пока что остановился на RegExp.exec().
Skvoznyak, не пойму, какие пареимущества дает вариант с XML?
 
Ответ: doScript в ScriptUI

Skvoznyak, не пойму, какие пареимущества дает вариант с XML?

я только предположил, я же не знаю, что там за данные и зачем ) если они помещаются в верстку, то XML бы многое упростил.
 
Ответ: doScript в ScriptUI

Тогда я совсем не понял. Зачем диалог именно модальный? Чем не нравится выполнять doScript из плавающей панели? Далее. Самый старший массив состоит из объектов, каждый из которых представляет собой набор пользовательских установок, так? Набор установок состоит из нескольких массивов разного типа и длины, но при этом количество этих массивов строго фиксировано, например N, так? Тогда все очень просто. Набор установок - это N строк. Каждая строка содержит значения элементов соответствующего массива через разделитель. Читая последовательно эти N строк мы создаем массивы разных данных. Прочитав все N - создаем объект, содержащий все эти массивы данных и запихиваем его в массив объектов. Читаем следующие N строк, все. Таким образом наш текстовый файл содержит произвольное количество наборов по N строк, а каждая строка из этих N содержит произвольное количество данных определенного типа.

AirGraph.
 
Ответ: doScript в ScriptUI

Все верно. Так бы и сделал, если бы все данные были одного типа. Но они разнотипные, и в этом, как я уже говорил, трудность, не так-то просто это все потом конвертить, а главное - это значительно отяжеляет сам скрипт, много вобщем-то лишней работы получается, подгрузка такого массива данных превращается в целую эпопею.
 
Ответ: doScript в ScriptUI

Это вот это не так то просто? ;-)

function ConvertStringArrayToBooleanArray(stringArray) {

var booleanArray = new Array();

for(var i = 0; i < stringArray.length; i++) booleanArray.push(Boolean(stringArray));

return booleanArray;

}

Аналогично для Number и т.п. Раз спрашиваешь про структуру текстового файла, значит данные в него пишешь сам, что исключает ошибки при его чтении. Рекомендую. ;-)

AirGraph.
 
Ответ: doScript в ScriptUI

".push(Boolean())" - здорово, не знал что так можно, спасибо.

Но принципиально ситуацию это не меняет.
 
Ответ: doScript в ScriptUI

кстати, а в чем различие между doScript и eval?
 
Статус
Закрыто для дальнейших ответов.