열려 있는 파일에 쓰기 시도를 트랩하려면 어떻게 해야 합니까?안녕하세요 - 방금 분석에 의해 생성된 JMP 그래픽 선택 항목을 PowerPoint 프레젠테이션에 직접 저장하라는 메시지를 표시하는 JSL 스크립트가 있습니다.사용자는 결과 슬라이드를 즉시 검사하기를 원할 것이므로 PowerPoint 파일을 자동으로 닫고 싶지는 않습니다. 더 스크립트를 두 번째로 실행하면 다른 프로그램에서 열려 있을 수 있는 파일을 덮어쓰려고 한다는 JMP 경고가 표시됩니다(당연히 열려 있습니다).
Try() 함수로 실패할 수 있는 시도를 트래핑하려고 시도했지만 작동하지 않는 것 같습니다. 어쨌든 오류가 발생합니다. JMP 경고가 사용자에게 문제가 무엇인지 정확하게 알려주지만 프로그램의 흐름을 방해하는 오류 메시지를 정말로 원합니다."Is File Writable()" 기능을 사용하여 미리 확인하면 처리가 될 줄 알았는데 그것도 안되는 것 같습니다. PowerPoint 파일 ~이다 열려 있어도 쓰기 가능한 것으로 간주됩니다.
현재 화면에 메시지를 표시하고 있습니다. 파일이 이미 존재하는 경우(분명히 ~할 수 있다 확인) - 사전에 사용자에게 경고 만약에 열려 있으므로 계속 진행하기 전에 닫아야 합니다. 하지만 이것은 약간 우아하지 않으며 실제로 문제를 해결하지 않습니다.자동으로 (a) 이미 열려 있지 않은지 확인하고 (b) 필요한 경우 닫는 방법이 있습니까?
제도법스크립팅Re: 열린 파일에 쓰려는 시도를 트랩하려면 어떻게 해야 합니까?Jim과 Craige에게 많은 감사를 드립니다. 이제 두 권장 사항을 모두 합친 작업 솔루션을 얻었습니다.JMP Alert가 로그로 전송되지 않았기 때문에 "Batch Interactive" 명령을 사용해야 했지만 logcapture() 명령이 작동하지 않는 반면 << get log()는 필요한 작업을 수행했습니다.
매번 로그를 지워야 합니다. 그렇지 않으면 이후 실행 시마다 동일한 오류 메시지가 나타납니다.기록을 위해 아래에 최종 스크립트의 간략한 버전을 포함했습니다.(두 번째 "Batch Interactive(bi) 용어가 대화형 JMP 경고를 다시 켜는 것 같습니다. 맞습니까?)"
OutputFileName = "$DESKTOP\My Slides.pptx";
if(not(file exists(OutputFileName)),
// No possible problem here;
Text Box("New File - First Page") << save presentation(OutputFileName);
caption("You've just started a new presentation - here it is..."); wait(2); caption(remove);
open(OutputFileName)
,
// The file exists but it might be open - so be wary;
bi = Batch Interactive( 1 );
// If I don't clear the log first, it will tell me there's an error even when there isn't;
clear log();
Text Box("Existing File - Next Page") << save presentation(OutputFileName, append);
Error_List = get log();
if(contains(concat items(Error_List), "Unable to overwrite"),
beep();
caption("You can't write to the file\!rbecause it's open right now.\!rPlease close it, then try again.");
wait(3);
caption(remove);
Batch Interactive(bi)
,
caption("Here's the updated presentation with your latest slide"); wait(2); caption(remove);
open(OutputFileName)
)
);Re: 열린 파일에 쓰려는 시도를 트랩하려면 어떻게 해야 합니까?txt = logcapture(...jsl that might make log messages...)
동일한 접근 방식으로 도움을 줄 수도 있습니다.
편집 : 필요할 수 있습니다 데이터베이스 연결 오류 생성 BatchInteractive()를 사용하여 대화 상자를 표시하지 않고 로그 메시지만 가져오는 방법도 보여줍니다. ...그리고 일괄 대화식에 대해 자세히 알아보기 .
Re: 열린 파일에 쓰려는 시도를 트랩하려면 어떻게 해야 합니까?당신이 사용할 수있는
mylist = get log();
그런 다음 mylist를 분석하여 경고가 발생했는지 확인한 다음, 경고가 발생한 경우 원하는 조치를 취하십시오.