| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4460 人关注过本帖
标题:给各位狐友的马年大礼
只看楼主 加入收藏
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:649
专家分:2156
注 册:2014-2-7
收藏
得分:0 
以下是引用TonyDeng在2014-2-21 09:29:12的发言:

哪來的7423,微軟官方下載的就是5815。

微软在发布SP2后,又放出了一个补丁 VFP90SP2-KB968409,安装该补丁后版本号由5815变为7423

泉城飞狐
2014-02-21 09:39
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 

授人以渔,不授人以鱼。
2014-02-21 09:49
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
以下是引用liuxingang28在2014-2-21 09:01:03的发言:


我用的版本的VFP 9.0 SP2 7423 英文版。不建议用户采用汉化版,汉化版有很多问题。

以下是帮助文件中关于 DIMENSION 命令的解释:

If the number of elements in an array is increased, the contents of all the elements in the original array are copied to the newly redimensioned array. The additional array elements are initialized to False (.F.).
译文:如果数组中元素的数目增加了,就将原数组中所有元素内容复制到维数重新调整过的数组中,增加的数组元素初始化为“假”(.F.)。
我不是很喜欢英文版,没有汉化版的没办法。作为中国人,还是看中文习惯。这也不是什么大不了的事,借用一下临时数组也可解决。话说,你在英文版中亲身测试过这种情况吗?还是只看了帮助说明?
2014-02-21 10:49
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
數組重定義和調整尺寸是不會重置數據的,這種方法我常用,有問題早完蛋了。你的測試結果,原因在於你用public來試驗,帶public的語句,都是帶初始化的執行語句,不像private和local那樣僅僅是聲明,在後者的環境,dimension一個數組,數據是保存的。

授人以渔,不授人以鱼。
2014-02-21 10:54
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
動態伸縮數組的代碼,其實我貼過很多次,特別是使用自定義函數修改數組(用參數形式)内容的時候,就是在函數内部不斷地dimension數組,遞進增加數據,如果數組每次都被重置,這種用法早就用不上了。

授人以渔,不授人以鱼。
2014-02-21 11:33
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
以下是引用TonyDeng在2014-2-21 10:54:29的发言:

數組重定義和調整尺寸是不會重置數據的,這種方法我常用,有問題早完蛋了。你的測試結果,原因在於你用public來試驗,帶public的語句,都是帶初始化的執行語句,不像private和local那樣僅僅是聲明,在後者的環境,dimension一個數組,數據是保存的。
因为有时候在表单中定义的数组要跨着用,只能设为PUBLIC。我写了一段测试程序,分别用PUBLIC、DIMENSION、LOCAL、PRIVATE定义数组。实验证明:前三种定义数组的方式都无法在对原数组扩容后保留原值,而PRIVATE干脆就不能定义数组。从实验输出的结果来看,私有型数组必须用DIMENSION来定义。
以下是代码,谁有兴趣,可以复制到VFP9中运行一下,看看结果:
CLEAR
PUBLIC abc(3)
abc(1)=[row1]
abc(2)=[row2]
abc(3)=[row3]
LIST MEMORY LIKE abc
PUBLIC abc(4)
LIST MEMORY LIKE abc
CLEAR MEMORY
DIMENSION abc(3)
abc(1)=[row1]
abc(2)=[row2]
abc(3)=[row3]
LIST MEMORY LIKE abc
DIMENSION abc(4)
LIST MEMORY LIKE abc
CLEAR MEMORY
LOCAL abc(3)
abc(1)=[row1]
abc(2)=[row2]
abc(3)=[row3]
LIST MEMORY LIKE abc
LOCAL abc(4)
LIST MEMORY LIKE abc
CLEAR MEMORY
DO SZ
RETURN
PROCEDURE SZ
   PRIVATE abc(3)
   abc(1)=[row1]
   abc(2)=[row2]
   abc(3)=[row3]
   LIST MEMORY LIKE abc
   PRIVATE abc(4)
   LIST MEMORY LIKE abc
   CLEAR MEMORY
   RETURN
ENDPROC
运行结果截图:
图片附件: 游客没有浏览图片的权限,请 登录注册

从实验结果来看,应该不是你说的这个原因。我现在最想这里有人拿上面的代码在英文原版的VFP9上运行一下,看看什么结果。从程序本身的角度来讲,我觉得现在的结果是合理的。因为数组定义语句的原理就是重新定义一片连续的内存地址给这个数组,不会因为数组的名称是否相同就会保留原来的值。学过汇编语言的人应该知道,同一数组中的各元素在内存中是占据一片连续地址的,变量名只是为了高级语言使用内存地址方便而采取的一种措施。值是否保留其实不是看表面的变量名,而应该看重新定义了数组后是否还是原来的那片地址。显然,VFP9不是,它在执行数组定义命令后,是另寻一片连续的未用过的地址给程序的。当然,我这个结论也有待英文原版的VFP9去验证。


[ 本帖最后由 taifu945 于 2014-2-21 12:22 编辑 ]
2014-02-21 12:15
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:649
专家分:2156
注 册:2014-2-7
收藏
得分:0 
以下是引用taifu945在2014-2-21 10:49:16的发言:

我不是很喜欢英文版,没有汉化版的没办法。作为中国人,还是看中文习惯。这也不是什么大不了的事,借用一下临时数组也可解决。话说,你在英文版中亲身测试过这种情况吗?还是只看了帮助说明?

我的贴子均是在本人机器上测试后才回复的。如果用VFP开发正式的应用系统,VFP的稳定性十分重要,使用汉化版玩一下还可以,若用它开发应用程序肯定不行!
写书是一项十分严肃的事情,写中的一句话或一行代码对初学者来说影响很大,应该值得推敲才行。出书前,应该先看看谭浩强先生编写的Basic教程,那可是经典中的经典。


[ 本帖最后由 liuxingang28 于 2014-2-21 12:34 编辑 ]

泉城飞狐
2014-02-21 12:17
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:649
专家分:2156
注 册:2014-2-7
收藏
得分:0 
请看在我的机器上的运行结果:
图片附件: 游客没有浏览图片的权限,请 登录注册


泉城飞狐
2014-02-21 12:22
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:649
专家分:2156
注 册:2014-2-7
收藏
得分:0 
以下是引用TonyDeng在2014-2-21 10:54:29的发言:

數組重定義和調整尺寸是不會重置數據的,這種方法我常用,有問題早完蛋了。你的測試結果,原因在於你用public來試驗,帶public的語句,都是帶初始化的執行語句,不像private和local那樣僅僅是聲明,在後者的環境,dimension一個數組,數據是保存的。

public,local,dimension,declare 定义的数组都是一样的:不会重置数组值为.f.

泉城飞狐
2014-02-21 12:25
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
以下是引用liuxingang28在2014-2-21 12:17:34的发言:


我的贴子均是在本人机器上测试后才回复的。如果用VFP开发正式的应用系统,VFP的稳定性十分重要,使用汉化版玩一下还可以,若用它开发应用程序肯定不行!

我没觉得不行,我以前毕业设计时做的学生管理系统,几万行代码也是用的汉化版VFP,稳定使用了好几年,直到用户单位提出用网络管理学生后才终止使用的。前阵子我又用这个汉化版为该用户单位做了一个创新实践的系统,目前还在其XP系统上稳定地运行,而我这套系统是在家里Windows 7 x64位上开发的。哪里肯定不行?
我相信你的帖子不会信口开河,但微软的帮助文件也不是完全没有错误。你可以拿我上面的一段代码到你的原版VFP9去运行试试,然后把运行结果截图上来看看。我也很想知道数组的这个问题到底是汉化版独有的,还是VFP9原生就是这样处理的。
2014-02-21 12:28
快速回复:给各位狐友的马年大礼
数据加载中...
 
   



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

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