2014-09-05 1 views
1

Я пытаюсь написать макрос, чтобы сохранить настройки и прочитать их после закрытия и повторного открытия ImageJ.проблемы с prefs.get и set ImageJ Macro

Сохранение работает, но макрос не читает файл. Более того, когда я пытаюсь использовать одну из этих двух строк, возникает ошибка, когда переменная «Prefs» неизвестна.

int myNumber = Prefs.get("my.persistent.number", 0); 

Prefs.savePreferences(); 

Что я делаю неправильно? помогите мне :-)

+0

Вы уверены, что говорите о [макроязыке ImageJ] (http://imagej.nih.gov/ij/developer/macro/functions.html)? Ваш код больше похож на Java-код. –

+0

Да, я уверен, нашел его в учебнике и следующих ссылках http://imagej.1557.x6.nabble.com/Making-a-panel-of-buttons-in-a-macro-plugin-td3692757.html http://imagej.1557.x6.nabble.com/Re-How-to-save-macro-variables-values-in-a-text-file-td5001804.html, и, как я сказал, сохранение настроек работает, но не при получении. Даже когда я пытаюсь позвонить («ij.Prefs.get», «myVariableKey», «defaultValue»); – Nathalie

+0

Что вы подразумеваете под «сохранением настроек настроек»? Как вы это подтвердили? –

ответ

3

Сам макрос ImageJ не поддерживает сохранение пользовательских настроек. (Только набор встроенных опций (доступный через Редактирование> Параметры в меню) может быть saved, restored и adjusted.) Вам нужно прибегнуть к вызову класса Java через call("ij.Prefs.get", "my.persistent.number", "0");.

  • Следующего ImageJ макрос работает в уточненных установках Фиджи/ImageJ:
myNumber = call("ij.Prefs.get", "my.persistent.number", "0"); 
print(myNumber); 
call("ij.Prefs.set", "my.persistent.number", 3); 

В первом запуске, он печатает 0; каждый следующий прогон будет печатать 3; после перезагрузки Фиджи он снова напечатает 3. Если он не работает для вас даже после обновления до последней версии, сообщите об ошибке через Справка> Сообщить об ошибке, в которой также будут представлены важные сведения об установке для разработчиков, чтобы помочь им исправить эту проблему.

  • Используя один из многих scripting languages однако, вы можете получить доступ к классу ij.Prefs Java напрямую, как вы пытаетесь это сделать. Только не забудьте импортировать класс перед его использованием. Это пример Javascript:
importClass(Packages.ij.Prefs); 

myNumber = Prefs.get("my.persistent.number", 0); 
Prefs.set("my.persistent.number", myNumber); 

Надежда, что помогает.

+0

спасибо, скопировал класс импорта, мой был неправ. importClass - udefined identifier .... и «prefs» все еще неизвестная переменная. – Nathalie

+0

Я отредактировал свой ответ, чтобы прояснить ситуацию, используете ли вы язык макросов (первый вариант) или Javascript (второй вариант). –

+0

спасибо, что это работает сейчас :-) – Nathalie