여러분 안녕하세요.
나는 인생을 더 쉽게하기 위해 스크립트에서 일부 기능을 구현하려고 시도했으며 저장 / 저장되지 않은 데이터 테이블의 경로 검색과 관련된 버그를 발견했을 수 있습니다. 이 동작이 다른 사용자에게 알려 졌거나 보 였는지 또는 내 코드 조각으로 인해 발생할 수 있는지 알고 싶습니다 (그렇다면 솔루션은 물론 높이 평가할 것입니다 :-)).
실제 대시 보드 내에서 버튼 스크립트를 통해 구성된 대시 보드 및 해당 데이터 테이블을 저장하는 것을 목표로하고있었습니다. 다음은 스크립트에서 발췌 한 내용입니다.
//set root path to nothing
rootpath = "";
// create link to the "parent data table"
cw = current window ();
ListBivar = (cw << xpath("//OutlineBox[@helpKey='FitGroup']"));
script = ListBivar[1] << get scriptable object;
dat = script << get data table;
DashName = dat << get window title;
show (dat);
// retrieve file path of "parent data table"
rootpath = dat << get path;
show (rootpath);
Bool = Contains (rootpath, "discrete file path" );
show (Bool);
If (Bool == 1, startpath = rootpath,
Bool == 0, startpath = "discrete file path",
);
path = Pick file ("choose directory to save...", startpath, {"JMP/HTML files|jmp;jsl;jrn;html", "All files|*"}, 1, 1, DashName);
show (path);
If ( path == "", Throw (1) ,
If(Right(path, 4) != ".jmp",
path = path||".jmp";
dat << save (path),
dat << save (path)
)
);규칙적인 조건에서 이것은 잘 작동합니다. 이 대화 상자를 통해 이미 존재하는 파일을 대체하려고 할 때 문제가 발생하지만 이전 파일은 여전히 열려 있습니다. 물론 오류 메시지가 나타납니다. 이제 이전 파일을 닫고 파일 교체를 다시 시도해도 여전히 스크립트에 대한 오류 메시지가 표시됩니다. 보이는 것처럼 (cp. 아래), 두 번째 실행에서 상위 데이터 테이블의 파일 경로를 검색하면 데이터 테이블이 저장된 것처럼 이산 파일 경로가 반환됩니다. 나는 또한 약간의 애매하고 추가적인 설명과 함께 로그에서 각각의 발췌 부분을 복사했습니다.
첫 번째 실행 :
dat = DataTable ( "XXX");
rootpath = "XXX.jmp"; <-저장되지 않은 데이터 테이블의 이름!
부울 = 0;
경로 = 이산 파일 경로 ";
파일을 저장할 수 없습니다.
2 차 :
dat = DataTable ( "XXX");
rootpath = "이산 파일 경로"; <-데이터 테이블이 저장된 것처럼 이산 파일 경로
부울 = 1;
Pick File의 잘못된 인수 : 'Pick File'액세스 또는 평가에서 디렉토리 "이산 파일 경로"를 찾을 수 없음, File // #### * / ( "저장할 디렉토리 선택 ...", startpath,
{ "JMP / HTML 파일 | jmp; jsl; jrn; html", "모든 파일 | *"}, 1, 1, DashName) <-전송 된 "rootpath"가 존재하지 않기 때문에 오류가 발생했습니다.
누구든지 이와 같은 것을 보았거나 코드 에서이 동작을 설명 할 수있는 결함을 보았습니까?
친애하는,
몰타
당신이 말하는 것을 보여주기 위해 스크립트를 만들 수 있다면 큰 클래스 나 무언가를 사용하십시오.
그것의 모양에서, 당신은 나에게 경로처럼 보이지 않는 "이산 파일 경로"경로를 사용하려고합니다. 두 번째 인수는 경로 여야합니다.