|

之前其实我也和精易反馈过这个问题,但是呢,却一直没有收到结果。问题很简单:就是运行 程序_标准输入 后不管你怎么填它都是直接退出。
现在我把代码发给你们,你们运行后看看是否存在类似的问题。
我先给大家把它的源码放出来:
.版本 2
.子程序 程序_标准输入, 逻辑型, 公开
.参数 数据, 字节集, 参考 可空, 该参数值为返回值
.局部变量 handle, 整数型
.局部变量 max, 整数型
.局部变量 size, 整数型
handle = GetStdHandle (#STD_INPUT_HANDLE)
.如果真 (handle ≠ 0)
.如果真 (PeekNamedPipe_字节集 (handle, 数据, 0, 0, size, 0))
数据 = 取空白字节集 (size)
.如果真 (size > 0)
ReadFile_字节集 (handle, 数据, size, 0, 0)
.如果真结束
返回 (真)
.如果真结束
.如果真结束
返回 (假)
这里我建议精易不要使用PeekNamedPipe,因为这个函数主要是针对管道的,而不是控制台(否则可能失败);还有,GetStuHandle失败时返回的是INVALID_VALUNE_HANDLE(-1),不是NULL(0),只有当应用程序没有关联的标准句柄,并且尚未重定向这些句柄时函数才会返回NULL;此外,ReadFile的参数lpNumberOfBytesRead只有当lpOverlapped不为NULL时此参数才能为NULL,否则就不行,换句话说就是参数lpNumberOfBytesRead和lpOverlapped不能同时为NULL,这段代码已经被我找出3个问题了,建议精易将这段代码改为:
.版本 2
.子程序 程序_标准输入, 逻辑型, 公开
.参数 数据, 字节集, 参考 可空, 该参数值为返回值
.局部变量 handle, 整数型
.局部变量 int, 整数型
handle = GetStdHandle (#STD_INPUT_HANDLE)
.如果真 (handle ≠ -1)
数据 = 取空白字节集 (4096)
返回(ReadFile_字节集 (handle, 数据, 4096, int, 0)
.如果真结束
返回 (假)
最后,希望精易模块不要停更!
|
-
-
精易bug.e
955.44 KB, 下载次数: 0, 下载积分: 精币 -2 枚
|