精易论坛

标题: 在通用对话框点击取消,数据源也能读入数据? [打印本页]

作者: 精易1    时间: 2014-6-25 22:26
标题: 在通用对话框点击取消,数据源也能读入数据?
数据源存到文件之后,从文件读,如果通用对话框的文件名栏里有了文件名,在通用对话框点击“取消”,也可以读成功,因为通用对话框一般情况是点击“打开”才返回真,所以难免产生困惑,本人是学员兼菜鸟,诚心求解惑。附上源码
.版本 2

.子程序 _按钮_存到文件_被单击
.局部变量 局_逻辑, 逻辑型

通用对话框1.过滤器 = “所有文件 *.*|*.*”
通用对话框1.类型 = 1
通用对话框1.打开 ()
局_逻辑 = 数据源.存到文件 (通用对话框1.文件名)
.如果 (局_逻辑 = 真)
    信息框 (“保存文件成功。” + #换行符 + “文件名:” + 通用对话框1.文件名, 0, )
    数据源.清除 (1, 1, 数据源.取行数 (), 数据源.取列数 ())
.否则
    信息框 (“保存文件失败。”, #错误图标, )

.如果结束


.子程序 _按钮_从文件读_被单击
.局部变量 局_逻辑, 逻辑型

通用对话框1.过滤器 = “所有文件 *.*|*.*”
通用对话框1.类型 = 0
通用对话框1.打开 ()
局_逻辑 = 数据源.从文件读 (通用对话框1.文件名)
.如果 (局_逻辑 = 真)
    信息框 (“从文件读取成功。”, 0, )

.否则
    信息框 (“读取文件失败。”, #错误图标, )




作者: 宇智波·晓易    时间: 2014-6-25 22:26
精易1 发表于 2014-6-25 22:56
不要这样那样,存到文件之后从文件读,在通用对话框点“点消”就读入了

直接要结果是吧。
把你所有 通用对话框1.打开 () 这行代码换为下面两行。

.如果真 (通用对话框1.打开 () = 假)
    返回 ()

作者: 臭臭臭臭臭Bitch    时间: 2014-6-25 22:30
应该不会读入的
作者: Arbitrary    时间: 2014-6-25 22:34
在通用对话框.打开 的后面加上
如果真(通用对话框.文件名="")
返回
作者: 精易1    时间: 2014-6-25 22:35
ˋ物似人非 发表于 2014-6-25 22:30
应该不会读入的

亲,试试看,我试了N遍了
作者: 精易1    时间: 2014-6-25 22:42
Arbitrary 发表于 2014-6-25 22:34
在通用对话框.打开 的后面加上
如果真(通用对话框.文件名="")
返回

情况是这样:首先存到文件,然后从文件读,不管通用对话框的文件名栏里有没有文件名,点击“取消”都可以读入刚才保存的文件的数据
作者: 精易1    时间: 2014-6-25 22:42
情况是这样:首先存到文件,然后从文件读,不管通用对话框的文件名栏里有没有文件名,点击“取消”都可以读入刚才保存的文件的数据
作者: Arbitrary    时间: 2014-6-25 22:49
精易1 发表于 2014-6-25 22:42
情况是这样:首先存到文件,然后从文件读,不管通用对话框的文件名栏里有没有文件名,点击“取消”都可以读 ...

那就将通用对话框保存的路径用变量存放起来
作者: 精易1    时间: 2014-6-25 22:50
如果找不出合适的答案,希望精易论坛的老师、版主和精易学院的老师答疑解惑
作者: 宇智波·晓易    时间: 2014-6-25 22:51
利用一下 通用对话框1.打开 ()  的返回值就好。
作者: 精易1    时间: 2014-6-25 22:56
宇智波·晓易 发表于 2014-6-25 22:51
利用一下 通用对话框1.打开 ()  的返回值就好。

不要这样那样,存到文件之后从文件读,在通用对话框点“点消”就读入了
作者: 精易1    时间: 2014-6-25 22:59
精易1 发表于 2014-6-25 22:56
不要这样那样,存到文件之后从文件读,在通用对话框点“点消”就读入了

在通用对话框点击“取消”就读入了
作者: 精易1    时间: 2014-6-25 23:23
宇智波·晓易 发表于 2014-6-25 23:07
直接要结果是吧。
把你所有 通用对话框1.打开 () 这行代码换为下面两行。

加上这两行代码,可以避免在通用对话框点击“取消”也能读入数据的情况;

不加上这两行代码点击“取消”也能读入数据,易语言本来就是这样的?
作者: luoke    时间: 2014-7-7 18:25
不清楚,同求
作者: 凌木    时间: 2014-7-8 13:19
你代码位置写错了
局_逻辑 = 数据源.存到文件 (通用对话框1.文件名)
这一句写到如果里边就对了
作者: 精易1    时间: 2014-7-8 20:24
凌木 发表于 2014-7-8 13:19
你代码位置写错了
局_逻辑 = 数据源.存到文件 (通用对话框1.文件名)
这一句写到如果里边就对了

感谢回答,您的回答貌似解决不了问题
作者: 秋风萧瑟    时间: 2014-7-17 11:58
  
窗口程序集名保 留  保 留备 注
窗口程序集1   
子程序名返回值类型公开备 注
_按钮_存到文件_被单击  
变量名类 型静态数组备 注
局_逻辑逻辑型 
通用对话框1.过滤器 = “所有文件 *.*|*.*”
通用对话框1.类型 = 1
如果真 (通用对话框1.打开 ()) ' 打开通用对话框要判断的
局_逻辑 = 数据源.存到文件 (通用对话框1.文件名)
如果 (局_逻辑 = )
信息框 (“保存文件成功。”#换行符“文件名:” + 通用对话框1.文件名, 0, )
数据源.清除 (1, 1, 数据源.取行数 (), 数据源.取列数 ())
信息框 (“保存文件失败。”, #错误图标, )


子程序名返回值类型公开备 注
_按钮_从文件读_被单击  
变量名类 型静态数组备 注
局_逻辑逻辑型 
通用对话框1.过滤器 = “所有文件 *.*|*.*”
通用对话框1.类型 = 0
如果真 (通用对话框1.打开 ())
局_逻辑 = 数据源.从文件读 (通用对话框1.文件名)
如果 (局_逻辑 = )
信息框 (“从文件读取成功。”, 0, )
信息框 (“读取文件失败。”, #错误图标, )



帮你修改了一下,自己直接复制代码吧!


作者: 剩下我de孩子气    时间: 2014-7-18 08:42
加个如果 判断    取消直接返回()
作者: 清风渐微    时间: 2014-7-19 23:12

是这样吗

如果真 (通用对话框1.打开 ())

1.zip (1.4 KB, 下载次数: 1)

作者: 潇逸仙    时间: 2014-7-22 00:22
判断通用对话框.文件名啊
作者: 精易1    时间: 2014-8-5 16:02
秋风萧瑟 发表于 2014-7-17 11:58
[e=0].版本 2

.程序集 窗口程序集1

感谢您热心、用心的回答

请教:在编写易语言程序进行调试运行的时候,常常发现易语言的通用对话框,有的时候如果打开通用对话框的逻辑值为真,程序才会执行后面的代码,但有的时候,打开通用对话框的逻辑值为假,程序也会继续执行后面的代码,比如我在此帖一楼提出的这个问题,就是如果不设定打开通用对话框的逻辑值为真,数据源也能读入文件

不知这个问题算不算是易语言的bug?
作者: 精易1    时间: 2014-8-5 16:02
宇智波·晓易 发表于 2014-6-25 23:07
直接要结果是吧。
把你所有 通用对话框1.打开 () 这行代码换为下面两行。

感谢您热心、用心的回答

请教:在编写易语言程序进行调试运行的时候,常常发现易语言的通用对话框,有的时候如果打开通用对话框的逻辑值为真,程序才会执行后面的代码,但有的时候,打开通用对话框的逻辑值为假,程序也会继续执行后面的代码,比如我在此帖一楼提出的这个问题,就是如果不设定打开通用对话框的逻辑值为真,数据源也能读入文件

不知这个问题算不算是易语言的bug?
作者: 秋风萧瑟    时间: 2014-8-6 08:36
精易1 发表于 2014-8-5 16:02
感谢您热心、用心的回答

请教:在编写易语言程序进行调试运行的时候,常常发现易语言的通用对话框,有 ...

通用对话框.打开()命令这个命令是一个无参数的命令!你说的真和假都是这个命令的返回值!当你调用这个命令时程序会打开一个对话窗口让你选择需要打开的文件!当你点击对话窗口上的 打开 按钮时这个命令就会返回真,当你点击 取消 按钮或点击窗口右上角的关闭的时候这个命令返回假!返回假的意思就是取消操作,所以用判断语句判断一下用户是否取消操作,返回假时就不执行后面的代码,返回真时就执行后面的代码!
作者: 精易1    时间: 2014-8-6 13:16
本帖最后由 精易1 于 2014-8-6 13:18 编辑
秋风萧瑟 发表于 2014-8-6 08:36
通用对话框.打开()命令这个命令是一个无参数的命令!你说的真和假都是这个命令的返回值!当你调用这个 ...

这就回到我的问题了:既然取消操作就不执行后面的代码,就没有必要加入“如果真 (通用对话框1.打开 ()) ”,”直接点“打开”或“取消”让程序根据返回值决定是否执行后面的代码
作者: 精易1    时间: 2014-8-6 13:28
秋风萧瑟 发表于 2014-8-6 08:36
通用对话框.打开()命令这个命令是一个无参数的命令!你说的真和假都是这个命令的返回值!当你调用这个 ...

我的问题是这样,用易语言编写程序,有的时候不需要加入判断语句,程序会根据通用对话框的返回值决定是否执行后面的代码,而有的时候必须要加入判断语句,我在此帖说的现象就是必须要加入判断语句,到底什么情况下要加入判断语句,什么情况下不要加入判断语句呢?貌似无规律可言
作者: 秋风萧瑟    时间: 2014-8-7 08:49
精易1 发表于 2014-8-6 13:28
我的问题是这样,用易语言编写程序,有的时候不需要加入判断语句,程序会根据通用对话框的返回值决定是否 ...

我实在是不知道怎么说了,强烈建议你先在论坛下载一下基础教程看吧!否则你这样学易语言一辈子也学不会!(夸张了点  

命令的返回值只是告诉你你的操作行为!但是你要根据这个行为去执行一些操作是不是要进行判断呢?
那些地方需要判断这是根据你功能要求来写代码,不是说判断固定在那个地方写的!如果你连这个都分不清想不明白的话你根本就写不了一个正常运行的程序来!

最后说一下,你知道为什么没有什么人回复你的提问吗,或者回复了一次就不回复了吗,就是因为你这些问题都是一些很基础很基础的问题,别人说得再清楚你也是搞不懂!所以别人都懒得回复你了!

说句实话,楼主你的电脑基础和逻辑思维真心的很低!
作者: 精易1    时间: 2014-8-7 20:36
秋风萧瑟 发表于 2014-8-7 08:49
我实在是不知道怎么说了,强烈建议你先在论坛下载一下基础教程看吧!否则你这样学易语言一辈子也学不会! ...

我的问题就是这样:有的情况下是不需要加入通用对话框判断语句的,这个情况是存在的

我们讨论问题还是对事不对人比较好




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4