我覺得這是一個簡單的問題,但我一輩子都無法解決這個問題。
上下文是我有一個 XML 提取器,令人沮喪的是,它必須處理結構中幾個級別的大多數(除了一行)冗餘條目的 n 元組。 我試圖找到那些“重複”條目,並在將它們導入到更大的表中之前檢查它們是否確實重複。 我已經檢查了重複次數,但我在讓嵌套的 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);不管怎樣,程式碼都不起作用,但直到我能得到 If 語句,將具有串聯名稱的列與 n 元組中的第一個列進行比較,這並不重要,首先我需要讓串聯工作並不崩潰jsl。
有人有什麼想法嗎? 我只是在文法方面很愚蠢嗎?
對於連接,您不需要 Eval(Eval Epr(Expr())),您可以將其減少為
for(i=2,i<10,i++,
colname=Concat("Scan Append Number_", Char(i));
Print(colname));@hogi好點子! 因此,在昨晚的疲勞中,我忘記在最初的問題中提及,我實際上專門轉向了Eval(Eval Expr(Expr())) 構造,因為簡單的Char(i) 版本不起作用,並且是我的第一個版本軟體崩潰的根源。
然而,我發現了問題。 我將 for 迴圈的第二個條件視為“until”,而它是“while”條件。 因此,我有一個等式(i = 代表),而不是不等式,所以我的猜測是它只是迭代直到∞,因為由於某種原因它在一次測試中停止了,而 i 是 137,代表次數應該最多為 3。
今天我學到了一些東西。
感謝您的幫忙!