EvilBeaver писал(а):
В качестве инструмента разработки плагинов к Снегопату сам собой напрашивается Конфигуратор. Для разработки standalone скриптов я использую Notepad++.
Проблемы в написании кода как такового нет, а вот с отладкой? В конфигураторе ещё более менее можно оттестировать часть функционала. В моем случае
EvilBeaver писал(а):
Я не совсем понял, все-таки, какой валидный код не работает в testapp?
Например такой:
Код:
Array = New Array();
Stop = False;
For Each String In Array Do
If Not String = "stop" Then
Stop = True;
EndIf;
EndDo;
EvilBeaver писал(а):
Теперь попробуем разобраться с кавычками и RunApp. Когда вы вводите в консоли командную строку, то параметры, содержащие пробелы экранируете кавычками.
При этом, сами символы кавычек не должны попасть в приложение, я правильно понял?
Это определяет разработчик стороннего приложения. В частности, если путь должен быть экранирован кавычками, то путь должен попадать вместе с кавычками.
EvilBeaver писал(а):
Код:
RunApp("fossil.exe dosmth ""какой-то путь с пробелами""");
правильно?
Да.
EvilBeaver писал(а):
Так вот, само приложение должно получить на входе параметр без кавычек. Именно это и происходит.
Не должно. Они должно получить параметр с кавычками. Т.е. для стороннего приложения параметр равен ["какой-то путь с пробелами"], а не [какой-то путь с пробелами].
EvilBeaver писал(а):
Или я чего-то не понимаю, тогда извиняюсь за недогадливость и прошу еще раз пояснить доходчивым примером, что не получается сделать?
Пример:
Код:
cmdLine = """C:\Snegopat 20\fossil.exe"" clone http://snegopat.ru:9004 ""C:\Snegopat 20\repo\core.fossil""";
Message(cmdLine);
RunApp(cmdLine);
Если скопировать вывод message() в командную строку, то commandLine процесса будет равен ["C:\Snegopat 20\fossil.exe" clone
http://snegopat.ru:9004 "C:\Snegopat 20\core.fossil"], а при вызове RunApp имеем ["C:\Snegopat 20\fossil.exe" clone
http://snegopat.ru:9004 C:\Snegopat 20\core.fossil], и fossil, впрочем как и onescript, и много других приложений будет считать последний вариант как набор параметров [clone],[C:\Snegopat],[20\core.fossil], а не [clone],[C:\Snegopat 20\repo\core.fossil]
Пример для OneScript:
Код:
Сообщить("-Старт-");
Для каждого Параметр из АргументыКоманднойСтроки Цикл
Сообщить(Параметр);
КонецЦикла;
Сообщить("-Конец-");
Сравните:
Код:
oscript.exe test.os раз два три
-Старт-
раз
два
три
-Конец-
oscript.exe test.os раз "два три"
-Старт-
раз
два три
-Конец-