| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2856 人关注过本帖
标题:如何选择多个文件?
只看楼主 加入收藏
曾震
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2011-9-8
收藏
得分:0 
我系统的看了!而且看了很多遍,但是一本正版的书还有很多错误,真的不知道现在编书的怎么了?你给推荐一本吧?没有好的教材看着也费劲,还学不会!
2011-09-12 09:33
曾震
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2011-9-8
收藏
得分:0 
我系统的看了,而且看了很多遍。苦于没有好的教材,一本正版书还有很多最基本的错误,版主有好的书给推荐一下吧?没有好书学起来费劲而且还学不会!
2011-09-12 09:34
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
坊间没有这类书籍,起码大陆上没有。其实,如果你已经系统的学习过那些基础知识,而不会做这样简单的东西,多数是没人带你入好门,不好听的用词是食古不化。这些东西是靠自己悟出来的,没人可以教你全部。

[ 本帖最后由 TonyDeng 于 2011-9-12 10:23 编辑 ]

授人以渔,不授人以鱼。
2011-09-12 10:17
曾震
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2011-9-8
收藏
得分:0 
现在不正在悟吗?有些东西是可以自己动手试的,只是感觉你们给我讲解的这些东西对你们来说都是信手拈来,可是对我来说真的很难。也着急提高啊!而且这些东西全凭自学,没有拜过师!我自己对一本书能反反复复咀嚼好几遍,但是书中有很多例子都是错误的!根本实现不了!所以到头来也是很迷糊,找不到好的教材!谁曾经读过一些好的教材的话可以给推荐一个名字!不好买的话可以网上买!

[ 本帖最后由 曾震 于 2011-9-12 10:29 编辑 ]
2011-09-12 10:27
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
根本之途是自己多实践,别人也是这样来的。看书不要看别人的代码,无论人家写的多好,终归不是出于你的大脑,就不属于你的,杂七杂八的代码看多了,就如段誉北冥神功乱吸别人内力但无法转化为自身所用反害其身那样危险。

从你的帖子看,你一开始声明这个问题不要用ADIR()考虑,说明你不知道事实上列表控件就是用ADIR()读入列表项目的(你自己不妨想一下,列表框控件能有什么途径读取操作系统的文件目录呢?唯一的办法就是向操作系统请求,那就是ADIR()所做的事,ADIR()实际上是API,是直接使用操作系统功能的最低层函数,也是最基本的东西,高级函数必然调用的),你这个声明,宣布了宁愿曲折用列表框使用ADIR(),也不愿直接使用,舍近就远,就是没入门的表现。这个道理是没有任何商业化的书籍会告诉你的!

授人以渔,不授人以鱼。
2011-09-12 10:38
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
读入文件列表必然用到ADIR(),这是无可置疑的,得到文件清单之后,如何使用,就是考验你灵性的地方。不用列表框(如果列表框无法多项选取呢?),也可以用Label加CheckBox,清单选取布局由你自己喜欢,列表框只能一行一行,但你可以用数组多列布局,把尽可能多的文件在一屏中显示出来,如何美化自由把握,这是列表框无法给你的自由。事实是你从来没想过要这样的自由,总想用现成的,受制于人,这样,也在价值观上束缚了你跳出条条框框考虑问题的可能性,如何能悟出新东西。

学东西要学散打,不要学套路,重点在基本招式,如何组合才是真功夫,用人家组合好的套路,一旦临场不对路,必然失败。列表框之类是高级控件,就是套路,Label、TextBox、CommandButton、CheckBox、OptionButton这样的,才是基本招式。要得到最大的自由度,就要向最基本的方向靠拢(这就是人家说C威力强大的原因,因为它是最贴近底层的“高级”语言)。VFP是数据库语言之中的C,强大之处是拥有类似的低级功能,那是SQL Server没有的。


[ 本帖最后由 TonyDeng 于 2011-9-12 11:00 编辑 ]

授人以渔,不授人以鱼。
2011-09-12 10:48
曾震
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2011-9-8
收藏
得分:0 
谢谢指导,我不是计算机专业的,所以还请你们多多指导!
2011-09-12 11:11
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
用VFP编程的没几个是计算机专业的,那个专业的都学坏脑,追主流去了,不懂、不屑VFP的。

授人以渔,不授人以鱼。
2011-09-12 11:30
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
再给你一个思路,以后多想想我今天所说的,带得进就入门了。

想过用Grid没有?

授人以渔,不授人以鱼。
2011-09-12 11:39
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
针对“现成”的问题再说几句:

有人觉得,VFP中关于DateTime数据类型的DTOC()或DTOS()函数很好用了,现成的,要把日期{^2011.09.12}转换为字符型"2011-09-12",先DTOC()成"2011.09.12",再用CHRTRAN()把句号.换成减号-,两条语句很高效了。事实真是这样吗?

其实,熟悉CHRTRAN()查找-替换算法的人,都知道要在字符串"2011.09.12"中找到"."的位置,是从头开始逐个字符比较,如果它是".",就删掉(此时要移动后面一串字符),然后再把替换的字符"-"插入原先"."的位置(又把后面的一串字符移动一次),这个搬动字符的过程是不可免的,因为CHRTRAN()函数设计的时候,并不是要等长替换,即一个字符"."换一个字符"-",而是可以一个字符"."换一串字符如"$$$"(或者多换少)等等,所以它无法事先知道该保留多少空隙不移,则只能密合了之后再分开,以保证不会出错。这是一个复杂的动作,何况现在所需要的不是只做一次替换就完了,而是要不断地找,直到再没有"."符号为止。

再看VFP的DateTime数据类型实际格式,它其实是C中的结构struct,与操作系统的内部格式相同,即类似如下的结构:
struct DateTime
{
    int Year;
    int Month;
    int Day;
    int Week;
    int Hour;
    int Minute;
    int Second;
};
这样的数据结构,才能很方便地计算日期,比如Excel中那个计算日期差的函数,就是用这样的数据计算的,所以能够很方便地得到年差、月差、日差之类的结果(很简单,用年减之后乘12就有月差了,再加一下就成,没有复杂的运算)。所以,VFP中的YEAR()函数其实非常简单,就是把上面结构中的Year值提取出来而已。而恐怕很多人不知道的地方,是VFP的数值存储形式,其实全部是字符型(即使是双精度浮点数也是如此,即DateTime也是一串数字型字符而已,本来就是DTOS()那样的"20110912"格式,DTOC()反而复杂了),因此,YEAR()的操作,完全是不费吹灰之力,连数据类型转换都不用(所谓数据类型转换,其实是语言表面上的东西,让程序员写程序时逻辑清晰的,事实上VFP没做那种动作)。明白这个原理,也就知道VFP那一大堆SET DATE TO格式指令没有任何神秘之处。

也就是说,我们要达到目的,用STR(YEAR(d),4)+"-"+PADL(MONTH(d),2,'0')+"-"+PADL(DAY(d),2,'0')其实是最高效的,因为就是若干字符串相加而已,没有搜索、没有替换、没有挪移、没有……这个就是DTOC()函数的内部行为。

现成,优越得到哪去!不要以为走过头了再返回来修修补补,表面代码少了,就事实上也高效。微软指南:优秀的程序员应该反复提醒自己,“少的源代码未必产生高效的机器码!”

[ 本帖最后由 TonyDeng 于 2011-9-12 13:19 编辑 ]

授人以渔,不授人以鱼。
2011-09-12 12:56
快速回复:如何选择多个文件?
数据加载中...
 
   



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

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