问一个文本文件读取的问题
时间:10-02
整理:3721RD
点击:
首先编写了一个文本读取的子VI,文本用的是相对路径
现在在一个程序中调用该子VI,且没有问题
下面就是问题所在了
我将程序打包exe可执行文件,就没法进行读取了,就算在exe再建文本文件也无法读取
个人怀疑是路径问题,可又无从下手
所以请大家帮帮忙
而现在下面的就是打包好的路径
真奇怪,在exe下一菜单,无语
应用实例:USB高速数据实时传输与显示存储系统 中的4、DRAM数据传输与数据存储程序框图用到了该函数。
就算不是子VI按照上面路径的截图,它也在exe这个可执行程序目录下面
可exe又不是文件夹,哪来的子目录
2、测试程序MathPathTest.vi框图
3、在项目编辑环境(D:\PathTest)下直接运行“MainPathTest.vi”后的输出结果
4、运行D:\PathTest路径下的MainPathTest.exe后的输出结果
5、运行D:\PathTest路径下MainPathTest.vi和MainPathTest.exe后的输出结果对比。
6.一些小成果
(1)应用程序目录函数、默认数据目录和临时目录函数在编辑和编译两种状态下的输出结果非常一致,而其它函数的输出结果差异性较大。
(2)临时目录是windows系统环境变量TEMP=%SystemRoot%\TEMP定义的,该变量在XP、VISTA及后续版本的定义不一样,该路径不适合作为测试测量系统采集数据的存储目录。默认数据目录函数也和windows版本有关,对于不同的windows7用户,会涉及存储权限问题。
(3)"应用程序目录函数"的输出在VI和EXE两种状态下最为一致,可作为起始路径使用,但该函数在高版本LabVIEW中才有。
(4)从对比结果来看,次优的选择是“当前VI路径”函数,使用时在VI状态下需要一次拆分路径,而在exe状态下需要两次拆分路径函数,才能获得文件所在的路径。这也许就是为什么在高版本LabVIEW中引入“应用程序目录函数”的原因吧。
现在在一个程序中调用该子VI,且没有问题
下面就是问题所在了
我将程序打包exe可执行文件,就没法进行读取了,就算在exe再建文本文件也无法读取
个人怀疑是路径问题,可又无从下手
所以请大家帮帮忙
用绝对路径就没事了,试试看吧
绝对路径局限性太大,都生成exe了还用绝对路径
下面面一张是没打包的路径
而现在下面的就是打包好的路径
真奇怪,在exe下一菜单,无语
从来都是绝对路径 玩的
可以用“当前VI路径”函数。在VI编辑和生成exe状态返回的路径具有一致性。详细说明可以参考帮助。
应用实例:USB高速数据实时传输与显示存储系统 中的4、DRAM数据传输与数据存储程序框图用到了该函数。
对啊,我用的就是当前VI函数啊,我的读取函数是个子VI
就算不是子VI按照上面路径的截图,它也在exe这个可执行程序目录下面
可exe又不是文件夹,哪来的子目录
1、文件路径函数测试目录:D:\PathTest
2、测试程序MathPathTest.vi框图
3、在项目编辑环境(D:\PathTest)下直接运行“MainPathTest.vi”后的输出结果
4、运行D:\PathTest路径下的MainPathTest.exe后的输出结果
5、运行D:\PathTest路径下MainPathTest.vi和MainPathTest.exe后的输出结果对比。
6.一些小成果
(1)应用程序目录函数、默认数据目录和临时目录函数在编辑和编译两种状态下的输出结果非常一致,而其它函数的输出结果差异性较大。
(2)临时目录是windows系统环境变量TEMP=%SystemRoot%\TEMP定义的,该变量在XP、VISTA及后续版本的定义不一样,该路径不适合作为测试测量系统采集数据的存储目录。默认数据目录函数也和windows版本有关,对于不同的windows7用户,会涉及存储权限问题。
(3)"应用程序目录函数"的输出在VI和EXE两种状态下最为一致,可作为起始路径使用,但该函数在高版本LabVIEW中才有。
(4)从对比结果来看,次优的选择是“当前VI路径”函数,使用时在VI状态下需要一次拆分路径,而在exe状态下需要两次拆分路径函数,才能获得文件所在的路径。这也许就是为什么在高版本LabVIEW中引入“应用程序目录函数”的原因吧。
应用程序目录是可以解决路径问题,也是一种比较实用的方法
可是用当前VI路径拆分然后构建路径,造成的错误,是调试与现实不一致
按道理来说这种错误是不该出现的
不过我找到了造成这错误根本原因的地方
是构建项目与生成可执行文件的问题
待我整理整理,新建个帖子把原因发出来
非常期待您精彩的作品。
http://bbs.elecfans.com/forum.ph ... ypeid%26typeid%3D25