나는 이것이 간단한 질문이라고 생각하지만 평생 동안 이것을 작동시킬 수는 없습니다.
맥락은 구조에 대한 몇 가지 수준의 대부분(한 행을 제외하고) 중복 항목의 n-튜플을 처리해야 하는 XML 추출기가 있다는 것입니다. 저는 "중복" 항목을 찾고 더 큰 테이블로 가져오기 전에 실제로 중복 항목인지 확인하려고 합니다. 반복 횟수를 확인하고 있지만 중첩된 for/if 루프가 작동하는 데 끔찍한 시간을 보내고 있습니다. 실제로 Eval( Eval Expr(....Expr()))이 잘못된 위치에 중첩되어 있으면 루프가 전체 소프트웨어를 지속적으로 충돌시킵니다. 이것이 왜 그런지 잘 모르겠고, 해당 구성을 사용하는 방법을 오해하고 있는 것인지 궁금합니다.
char()과 concatenate90을 서로 중첩하여 사용하는 경우에도 문제가 될 수 있다고 생각합니다. 하지만 그 이유는 잘 모르겠습니다. 아래에 있는 현재 코드는 소프트웨어와 충돌합니다.
colnames = dt << Get Column Names( String );
show(colnames);
reps = 0;
show(reps);
For( i = 1, i <= N Items( colnames), i++,
reps = Sum( reps, Contains(colnames[i], "Data - Common Counting Time")); show(reps)
);
check = 0;
//Repeats that split columns
colnamecount = "Scan Append Number_4"; //Using a file that only has three of these columns, so show(colnamecount) = *_4 means its not going past that first if statment
If( reps> 1,
For( i = 2, i = reps, i++,
Eval(Eval Expr(colnamecount = Concat("Scan Append Number_", Char(Expr(i))))); //This is the issue
If(dt:{"Scan Append Number_1"}[1] == Column( colnamecount )[1],
check = check + 1,
check = check + 12
)
)
);
show(check);코드는 관계없이 작동하지 않지만 연결된 이름이 있는 열을 n-튜플 열 중 첫 번째 열과 비교하는 명령문을 얻을 수 있을 때까지는 중요하지 않으며 먼저 연결이 작동하도록 해야 합니다. jsl이 충돌하지 않습니다.
누구든지 생각이 있나요? 내가 구문을 멍청하게 말하는 걸까요?
연결의 경우 Eval(Eval Epr(Expr()))이 필요하지 않으며 다음과 같이 줄일 수 있습니다.
for(i=2,i<10,i++,
colname=Concat("Scan Append Number_", Char(i));
Print(colname));@호기 좋은 지적! 그래서 어젯밤 피로 때문에 원래 질문에서 간단한 Char(i) 버전이 작동하지 않았기 때문에 실제로 Eval(Eval Expr(Expr())) 구성을 사용했다는 것을 언급하는 것을 잊어버렸습니다. 소프트웨어 충돌의 원인.
그러나 문제를 발견했습니다. 나는 for 루프의 두 번째 조건을 "until"로 처리하고 반면에 "while" 조건을 처리했습니다. 따라서 불평등이 아니라 평등(i = 담당자)이 있었기 때문에 내 추측으로는 그것이 , 왜냐면 어떤 이유에서인지 한 번의 테스트에서 멈추었고, 나는 137이었고 반복수는 최대 3에 있어야 했습니다.
나는 오늘 뭔가를 배웠습니다.
당신의 도움을 주셔서 감사합니다!