У меня есть два разных обработчика, один из которых получает имена (такие как «1.0» и «1.1») из папок в папке, затем преобразует их в список приложений. Затем он передает этот список другому обработчику, который оценивает список и предположительно идентифицирует наибольшее число (я получил его от http://www.macosxautomation.com/applescript/sbrt/sbrt-03.html).Applescript: Получение списка пронумерованных папок из сценария оболочки и идентификация самого высокого значения
on set_values(project_path)
do shell script "ls " & project_path
get words of result
set allvalues to (result)
return allvalues
end set_values
Затем я перехожу результат в переменную для следующего обработчика:
set values_list to result
И это обработчик получить наибольшее число из списка, любезно macosxautomation:
on highnum(values_list)
set the high_amount to ""
repeat with i from 1 to the count of the values_list
set this_item to item i of the values_list
set the item_class to the class of this_item
if the item_class is in {integer, real} then
if the high_amount is "" then
set the high_amount to this_item
else if this_item is greater than the high_amount then
set the high_amount to item i of the values_list
end if
else if the item_class is list then
set the high_value to highnum(this_item)
if the the high_value is greater than the high_amount then ¬
set the high_amount to the high_value
end if
end repeat
return high_amount
end highnum
Проблема в том, что второй обработчик только когда-либо выдаёт нулевой ответ, и я не могу понять, почему. Любая помощь оценивается.
Цель приложения - упростить создание других приложений, позволяя создавать новые «проекты», импортировать существующие приложения в новый «проект» и легко разрешать редактирование «проекта». В случае, если вы решите отредактировать проект, вы можете выбрать «незначительное обновление» (эффективно добавив «0.0.1» к своей последней версии) или ряд других параметров, которые я уже закончил. Мульти-десятичное сложение можно решить, используя текстовый элемент разделители, но я не уверен, как получить мульти-десятичное число от highnum() обработчика, который является важной частью процесса
Это работает очень хорошо, единственная проблема заключается в том, что он оценивает не-номер папки, а также и возвращает имя папки «последней» вместо «2,9», так что я добавил 'если Avalue не целое число, то \t \t \t если Avalue> high_amount затем установите high_amount к содержанию Avalue конца if' \t \t \t \t \t Я задавался вопросом, есть ли пересмотренная версия моего номера проверки части, которая будет ограничивать его только «3,0», а не включают только названные «3»? – DJpotato
Я обновил сообщение, чтобы рассмотреть только значения, которые содержат точку, и конвертируются в число с плавающей запятой. – vadian
Спасибо, что полностью решает мою проблему. – DJpotato