我试图为Trace32 PRACTICE语言创建一个脚本,该脚本从.txt文件读取一些数据,然后将值传递给我需要调试的变量。
我的问题是,一旦.txt到达结尾,我就无法返回到文件的顶部并重新开始。有什么想法吗?
这是我现在所拥有的,它从一开始就进入IF:
OPEN #1 C:/Sandboxes/JLR_ADAS_DC/Trace32Scripts/ListCam_new.txt /Read
PRIVATE &value // declare macro
WHILE TRUE()
(
if FILE.EOFLASTREAD()
(
CLOSE #1
OPEN #1 C:/Sandboxes/JLR_ADAS_DC/Trace32Scripts/ListCam_new.txt /Read
)
else
(
READ #1 %LINE &line
&value=STRing.TRIM(STRing.SPLIT("&line",",",0))
PRINT "&value"
V canConfigInitFlag = &value
)
)
CLOSE #1
ENDDO
谢谢!
答案 0 :(得分:1)
关闭并重新打开文件以返回文件顶部是正确的方法。 (没有搜索命令。)
但是您的脚本中存在错误:
如果最后FILE.EOFLASTREAD()
命令仅返回空数据,则函数READ
返回TRUE(),因为您已到达文件的末尾。在您的代码中,一旦到达文件末尾,您就不再执行READ
命令。因此FILE.EOFLASTREAD()
将继续返回TRUE()。
以下内容可行:
OPEN #1 C:/Sandboxes/JLR_ADAS_DC/Trace32Scripts/ListCam_new.txt /Read PRIVATE &value &line // declare macros WHILE TRUE() ( READ #1 %LINE &line IF FILE.EOFLASTREAD() // Last READ was after the end of the file ( CLOSE #1 OPEN #1 C:/Sandboxes/JLR_ADAS_DC/Trace32Scripts/ListCam_new.txt /Read READ #1 %LINE &line // Read 1st line ) &value=STRing.TRIM(STRing.SPLIT("&line",",",0)) PRINT "&value" Var.set canConfigInitFlag=&value ) CLOSE #1 ENDDO