|
我不清楚新版本是怎么修复这个bug的,
但是不知你们想过短路径的情况么?
所以在这里我提供一下我的修复方法!
[e]
.版本 2
.支持库 spec
.子程序 程序_取命令行, , 公开, 本命令可以取出在启动易程序时附加在其可执行文件名后面的所有以空格分隔的命令行文本段
.参数 命令行数组, 文本型, 数组, 存放被取回命令行文本的数组变量,本变量数组内被顺序填入在启动易程序时附加在其可执行文件名后面的以空格分隔的命令行文本段
.局部变量 局_文本, 文本型
.局部变量 i, 整数型
.局部变量 位置, 整数型
.局部变量 路径, 文本型
局_文本 = GetCommandLineA ()
' 因为有短路径名的缘故,所以需要下面这些步骤,
.如果 (是否为调试版 ())
.计次循环首 (文本_取出现次数 (取运行目录 (), “\”) + 3, i)
位置 = 寻找文本 (局_文本, “\”, 位置 + 1, 假)
.计次循环尾 ()
' 我的是win7,调试的时候路径不一致: “程序_取命令行: ” | “C:\Users\Administrator\Desktop” | “C:\Users\ADMINI~1\AppData\Local\Temp\EDV6AE8.tmp 1321 445”
.否则
.计次循环首 (文本_取出现次数 (取运行目录 (), “\”) + 1, i)
位置 = 寻找文本 (局_文本, “\”, 位置 + 1, 假)
.计次循环尾 ()
.如果结束
位置 = 寻找文本 (局_文本, 取执行文件名 (), 位置 + 1, 假) + 取文本长度 (取执行文件名 ()) - 1 ' 这个其实是取出了程序的完整路径
.如果真 (位置 = -1)
' 这里防止未预料到的一些情况发生……(假如 执行文件名也被变成短路径 也会到这一步)
调试输出 (“【精易模块报错】程序_取命令行: ”, 取运行目录 (), 局_文本, 取文本左边 (局_文本, 位置))
.如果真结束
路径 = 取文本左边 (局_文本, 位置)
' . 如果不是因为短路径,那么上面的步骤只需要两句即可:
' 路径 = 取运行目录 () + “\” + 取执行文件名 ()
' 路径 = 取文本左边 (局_文本, 寻找文本 (局_文本, 路径, , 假) + 取文本长度 (路径))
.如果 (寻找文本 (路径, #引号, , 假) = 1)
路径 = 路径 + #引号 + “ ”
.否则
路径 = 路径 + “ ”
.如果结束
局_文本 = 子文本替换 (局_文本, 路径, “”, , 1, 真)
命令行数组 = 分割文本 (局_文本, “ ”, )
[/e]
补充内容 (2014-5-8 12:35):
该代码与模块3.71中的代码的运行效果的对比见10楼 |
评分
-
查看全部评分
|