在論壇上有幾個朋友一塊討論。現在整理如下:
在LR中,C的變量和LR的參數是不一樣的。
任何C的變量都不能被LR的函數直接調用。
應該用lr_eval_string來取值。
比如{NewParam}(LR中參數化的變量)直接用這個引用是沒有問題的。
但是如果如下:
Action()
{
char a[10];
strcpy(a,"{NewParam}");
lr_message(a);
return 0;
}
這就不對了。
lr_message(a);就會報錯。
但是寫成lr_message(lr_eval_string(a));就可以。
因爲這裏的值已經取出來了。
再看另一個問題:一個網友說:
Action()
{
char a[10];
strcpy(a,"{NewParam}");
lr_message(lr_eval_string(a));
if (lr_eval_string(a)[0] == 11) {
lr_message ("a=%d",a);
}
return 0;
}
中的 if (lr_eval_string(a)[0] == 11)不應該通過語法檢查。
其中{NewParam}是參數化的。內容:11.
那下面我來用lr_message ("a=d",lr_eval_string(a)[0]);在if前面打出來看看是什麼。結果打出來是:49(數字1的ascii碼).
也就是說if (lr_eval_string(a)[0] == 11)是判斷1的ascii碼是否等於11.顯示是不相等的。於是這裏的 lr_message ("a=%d",a);就不會執行。
下面我們用另一段代碼來看看:
char *str2="T";
char a[10];
strcpy(a,lr_eval_string("{NewParam}"));
lr_message ("a=%d",lr_eval_string(a)[0]);
lr_message(lr_eval_string(a));
if (lr_eval_string(a)[0]== *str2) {
lr_message ("a=%s",a);
lr_message ("執行這句!");
}
結果如下:
Starting action Action.
a=84
T
a=T
執行這句!
Ending action Action.
這裏我的參數是一個大寫的“T”。
我們看到lr_eval_string(a)[0]取到的是大寫字母“T”的ascii碼。