2017-01-19 17 views
-1

Я пытаюсь сделать программу, которая требует от человека выбора файла и я пытаюсь его подтвердить. Я столкнулся с проблемой, когда попытался добавить повторение в блок if. Есть ли какое-либо обходное решение для этого, потому что это невероятно расстраивает. Заранее спасибо! :)Повторите в блоке if?

display dialog "Select the program" 

tell application "Finder" 

set filePath to POSIX path of (choose file) 

end tell 

display dialog "Are you sure this is the program that you have selected?" 

buttons {"Yes", "No"} 

if the button returned is "No" then 

end repeat 

else 

ответ

-1

Даже если это может привести к моей смерти, я отвечу. Исследование это:

set correctChoice to false 

repeat until correctChoice is true -- "is true" is actually unnecessary 

    --I took this next line out because it's unnecessary - you can put this text in the prompt of the choose file, below 
    -- display dialog "Select the program" 

    -- this doesn't need to be (and shouldn't be) in a Finder tell block, so I took that out, too: 
    set filePath to POSIX path of (choose file with prompt "Select the program") 
    set myQuery to display dialog "Are you sure this is the program that you have selected?" buttons {"Yes", "No"} 

    if the button returned of myQuery is "No" then 
     --there is no repeat loop! Where do you want it? I assume you want the repeat outside of this process 
     --end repeat 
    else 
     set correctChoice to true 
    end if 
end repeat 
--maybe do other stuff 

Делать то, что я предполагаю, что вы пытались средства положить все это внутри цикла повтора, который останавливается, когда булева переменная установлена ​​истина. Значение if/then либо сохраняет исходное ложное значение логического значения, либо устанавливает его значение true, что позволяет нам оставить цикл повторения. «Обходной путь» - это термин для чего-то, что необходимо для работы с ограничениями или ошибкой на языке. Вам не нужен обходной путь - вам нужно правильно получить код. Начните с простого (!!) и узнайте, как работают различные блоки, прежде чем пытаться заставить код делать то, что вы думаете, что он должен делать.

+0

Спасибо за помощь. У меня есть код, который работает сейчас, и он полностью понимает, что я сделал неправильно. Спасибо, что указали! :) – user7439349

+0

Добро пожаловать. С http://stackoverflow.com/help/someone-answers: «Чтобы отметить ответ как принятый, нажмите галочку рядом с ответом, чтобы переключить его с серых на заполненные». – CRGreen

 Смежные вопросы

  • Нет связанных вопросов^_^