| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1395 人关注过本帖
标题:谢谢大家,关于变量的问题
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
现在的操作系统是允许长文件名的,空格是合法字符,不能屏蔽的,而且编程时也应该注意会碰到这样的文件名。

授人以渔,不授人以鱼。
2013-07-15 22:09
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
以下是引用TonyDeng在2013-7-15 22:09:16的发言:

现在的操作系统是允许长文件名的,空格是合法字符,不能屏蔽的,而且编程时也应该注意会碰到这样的文件名。
对,自Windows '95开始就支持带空格的长文件名了。不过,我认为自己编程还是应该尽量避免文件名有特殊字符,否则后面可能会惹来麻烦。
2013-07-16 08:24
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
既然是合法的字符,就无权禁止用户使用。改变编程的习惯而已,固守8.3规则是无理的。

授人以渔,不授人以鱼。
2013-07-16 22:30
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
以下是引用TonyDeng在2013-7-16 22:30:51的发言:

既然是合法的字符,就无权禁止用户使用。改变编程的习惯而已,固守8.3规则是无理的。
不是我不能改变编程的习惯,对我而言,编程考虑的问题越少,代码越简单,人也越轻松。关键是最终用户是不懂电脑知识的,只知道用。如果长文件名中嵌了空格,天知道会发生什么问题。凭我多年的经验,我觉得不能以我们的眼光去看待用户的行为,有时候用户的行为是非常让人费解的。比如,曾经,我叫一个同事鼠标右单击弹出快捷菜单,她愣不知道什么叫右单击,还说自己是用右手击鼠标的,只是不知道该击哪里。你觉得这样的用户你还能怎么交流?即使现在,我跟有些同事提到“右单击”,还不是人人都能立刻反应得过来。
2013-07-16 23:25
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
正是因为用户需要使用长文件名,操作系统才响应要求做到能夠支持长文件名。用户要制作带空格的文件名是很自然的事,不允许带空格就等于限制,这是加强了制约而不是更宽松,与你说的正好相反。其实你最后写出的代码就是我前面给出的那种,只是没使用中间变量而已,在一个大字符串中夹杂宏的可读性不见得比直接宏一个字符串来得更简单。

写程序,除了考虑用户的感受,还要考虑阅读代码者的感受。用str="abc.xls"再"&str",比str="abc"再"&str..xls"更好,前者一看上去就知道宏的内容在哪里,而且也方便调试,MESSAGEBOX(str)检查语法是否错误,后者要调试者自己把.xls加上去,若错误发生在不能加上后缀字符串上(比如扩展名也是一个变量),则难以直接观察出来。我发觉很多人写代码爱把本来简单的一条语句整成一大串复杂的表达式,其实像SELECT FROM WHERE xxx .AND. yyy之类WHERE条件,当表达式稍微复杂一点的时候,最好把表达式提炼到外面去以方便调试,同时维护SELECT FROM语句的原始简单形式,如SELECT FROM WHERE &condition,这样就不至于被复杂的表达式迷惑致看不出语句的各个部件(甚至有人因写出太复杂的表达式而导致非法命令之类错误的,原因无非是括号不匹配之类最简单的错误),我也极度怀疑一条语句写成十行有何优越性。

[ 本帖最后由 TonyDeng 于 2013-7-16 23:50 编辑 ]

授人以渔,不授人以鱼。
2013-07-16 23:30
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
以下是引用TonyDeng在2013-7-16 23:30:17的发言:

正是因为用户需要使用长文件名,操作系统才响应要求做到能夠支持长文件名。用户要制作带空格的文件名是很自然的事,不允许带空格就等于限制,这是加强了制约而不是更宽松,与你说的正好相反。其实你最后写出的代码就是我前面给出的那种,只是没使用中间变量而已,在一个大字符串中夹杂宏的可读性不见得比直接宏一个字符串来得更简单。

写程序,除了考虑用户的感受,还要考虑阅读代码者的感受。用str="abc.xls"再"&str",比str="abc"再"&str..xls"更好,前者一看上去就知道宏的内容在哪里,而且也方便调试,MESSAGEBOX(str)检查语法是否错误,后者要调试者自己把.xls加上去,若错误发生在不能加上后缀字符串上(比如扩展名也是一个变量),则难以直接观察出来。我发觉很多人写代码爱把本来简单的一条语句整成一大串复杂的表达式,其实像SELECT FROM WHERE xxx .AND. yyy之类WHERE条件,当表达式稍微复杂一点的时候,最好把表达式提炼到外面去以方便调试,同时维护SELECT FROM语句的原始简单形式,如SELECT FROM WHERE &condition,这样就不至于被复杂的表达式迷惑致看不出语句的各个部件(甚至有人因写出太复杂的表达式而导致非法命令之类错误的,原因无非是括号不匹配之类最简单的错误),我也极度怀疑一条语句写成十行有何优越性。
你说得没错,但需要长文件名的用户绝不是我身边的这些用户。 至少我发现,对电脑知识不很熟悉的人一般不太喜欢文件名中夹杂空格和其它字符(名字长一点没关系),尤其是女生,她们会认为文件名中出现中文、英文、数字以外的字符很烦。现在的用户都是浮躁的,他们不会想去多学习点东西,所以,交到他们手上的东西越简单越好。最好是上手就会,随他们如何摆弄都不出错。
2013-07-17 08:31
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
各有各喜好吧

授人以渔,不授人以鱼。
2013-07-18 00:07
pzlpdy
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2013-7-18
收藏
得分:0 
copy to d:\&a1.xls type xl5
末尾应该是“xls” 不是 “xl5”
这运行肯定不通过的
2013-07-18 08:39
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
C:\Program Files (x86)\Microsoft Visual FoxPro 9
这个目录就是带空格的,无论是设置搜索路径、默认目录,或是获取VFP系统内置文件,都会不可避免地遇到空格。在SET PATH TO或SET DEFAULT TO之类指令中,不把整个字符串用引号括住,就会出错。Windows中很多目录和文件名都带空格,其实是很常见的,不光是自己会生成,別人也会生成,哪有不遇到之理。把编程安全性寄托在自己的独特环境下是不可靠的。

授人以渔,不授人以鱼。
2013-07-18 12:40
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
以下是引用pzlpdy在2013-7-18 08:39:19的发言:

copy to d:\&a1.xls type xl5
末尾应该是“xls” 不是 “xl5”
这运行肯定不通过的

9.0版生成Excel有两种格式:XLS和XL5。后者用于生成Excel 5.0版本的工作簿。不知道你实际运行过没有,就说运行通不过?
2013-07-18 13:41
快速回复:谢谢大家,关于变量的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017916 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved