for i=0 to num,而num这时等于5,那么只能循环6次,而如果在循环中把num值改为2,它同样会循环6次。而我的程序之所以会出错,就是我在循环中用了这个类似num变量。
//不明白你为什么要用这个方法循环,应该有其他方法!比如跳出循环 exit for
//至于循环次数固定,这个和VB的for循环机制有关!你换成while或者do...loop循环应该也可以!
//不明白你为什么要用这个方法循环,应该有其他方法!比如跳出循环 exit for
//至于循环次数固定,这个和VB的for循环机制有关!你换成while或者do...loop循环应该也可以!
解决方案 »
- 当鼠标移动到窗体外,判断不了鼠标的形状.
- 问vb简单文本查找
- 如何给vb工程加密?
- 怎么将word的预览功能嵌入到自己程序里?
- 50分急求!!!如何在生成EXE文件时,把DLL,OCX文件也集成在EXE里面~~谢谢
- 自动化错误怎么解决?
- 用代码从datagrid控件中删除一行,其它行依次上移,(考虑到是最后一条记录情况)
- VB编程中rpt文件怎样生成望各位大虾指教万分感谢
- VB能执行create table 等DDL数据定义语言吗?如果行,怎样实现呢??
- 急急急!有没有办法通过编程将一个SQL语句保存成一个查询,便于下次调用???
- 大虾帮忙,为什么我们的exe 用 end 结束程序会留在内存中退出不去 ????????
- 關於Msgbox 的焦點問題.."是"/"否"..默認為"是",如何認它為"否"?
还有,如果VB不允许循环的数是变量,那么也可以呀,以后for i=0 to num就出错,只能
for i=0 to 5。这样也可以呀,以后我不就用do while了吗?
如果这个问题是我自己代码有问题,那和VB是面向什么人群的,不是说容错能力强吗?
这怎么解释!回复人: lxcc(虫子|专注于抢分 说的还在理!至少说出了一些问题。
而 回复人: tztz520(午夜逛街) 直接下这种结论,是不是说我的水平不行,我水平本来就不高,
所以才用VB,这也是所有人都知道的,那么VB存在的问题是怎么回事????你能解释一下吗?
我很想知道这是为什么,我对编译原理也不是很了解,但我觉得编译器在处理这方面的问题时不是很困难吧,还是微软出于什么考虑的呢?
至少让我费了这么大劲,我得知道为什么吧!
楼主吸取教训好了这不是VB的bug,是你对这个VB写法的错误其他语言我不清楚,因为我忘了,但是如果你学习过MS的设计实务就知道,这样的事情要尽量避免
//
我以前在tw工作,tw是有MS的特定出版社。里面有本书叫《VB设计实务》。那是MS对VB编程最基本的要求。相对看下,国内从来都没有强调过打好基础,什么所谓21天学会XX你觉得可能吗?MS不是没说过,是咱们自己不去重视。
'i的值是用来读的,不是用来写的。
Dim i As Long
Dim str As String
Dim arr() As String
str = "abc 123 xyz 000"
arr = Split(str, " ")
For i = LBound(arr) To UBound(arr)
Me.Print arr(i)
Next
End Sub
我也没有说是微软的BUG,我只说是我找到BUG了,
我用C语言写了也有五年程序了,
我也不是什么成就也没有,
我也曾经获过全军二等奖,三等奖。
我只是奇怪为什么微软会做出这样的动态性能不好的语言
C++B和VC中还可以在判断中赋值呢,
if(a=b)
但在VB里就不可以,
if a=b就只是判断,相当于if(a==b)
在Java里if(a=b)编译会报错的
但是你拿到C#,拿到java中间试下C语言有C语言的写法,VB有VB的写法,你不能拿自己写法的错误来说是VB的bug啊^^难道我做习惯VB,我习惯大小写不分,我明天去写java,写c#发现要分大小写了我立刻说:看,这是C#的问题,这是JAVA的问题???!1
我要是查出了 Bug,绝不会把责任推到别人身上,即使是工具的Bug。因为,即使是 Bug,等你遇到了,必然已经是“已知”的了。网上到处都可以查到这些资料。因为我会用 C,所以 VB 就不可以这样那样。还更多 VB 允许而 C 不允许的呢,你又怎么办?
因为你得过 PLA 的奖,所以就一定是微软的错?这也太可笑了。
再问一句,骂娘之前,先手拍胸脯想想,你用的是正版吗?再说了,你完全可以选择不用,没人强迫你。
我们大家可以等待你写出动态性更好的 VB 吗?
反正是学通又不是学精,我最喜欢搞快速点的,要我21月学精.net是要我命,以后可以慢慢精的。现在又在看asp.net,幸好有点源码,copy一写还不错,边做边学吧。
这是楼主的代码问题,怎么会推到VB身上呢.这不是第二个人和我这么说了,但是请问,是我哪做错了?
没有理由的说我错了,仅仅对方是微软吗?
我也说过了,我在其它语言下写,是没有问题的呀!
即便是你在循环中改了循环的次数,但是也不能发生益出啊,还有就是为什么不用LONG类型,别说这是VB的错.
我在禁区只不过是用手碰一下球,为什么要判点球呢,我打篮球的时候也用手呀.
反正都是球,为什么呢. 黑哨呀
--------------------------------------------
经典!!!!!
那么我门做的程序因为自己没有严禁的语法概念自己不小心用错了一个变量
程序出错了也能怪别人,
还是把基本功打好在说吧!
我觉得楼主换个角度想想,可能就不会怪VB了。甚至应该感谢它。可不可以请楼主告诉我,while 和 for 的区别在哪里?我记得我看过一本书,上面告诉我说,如果事先知道循环的次数,请使用for ... next循环,因为它的效率会更高。
for在内部维护着一个记数器,并且它在循环的开始就记录了循环的次数,它并不是在每次循环时都检查终值的大小。试想,如果VB中的for真的象C、java中的for一样,那么它就同样可以用while来代替了,如果while可以完全代替for,包括在内部效率上也相同,那么for的存在也就没太多的意义了。因此,我们可以把VB的这个特性理解为对传统的for ... next的一次改良。
其实正象楼上几位仁兄说的,你在循环内修改终值来使循环终止,我个人认为这本身就不是一个好的习惯。它会使源代码的可读性大大降低。你可以使用exit for来退出的。甚至你可以用while来代替for也许是一个更好的选择。但是你千万不要更改循环变量(for i=star to end中的i)的值,因为它有一个内部的计数器,如果你修改它,则更不是好的习惯。因为它“不仅降低了程序的可读性,更重要的是它会使程序更加难以调试”,这句可不是我说的啊,这是MSDN中的劝告!我不得不佩服楼主在编程方面的成就,但我认为不能因为自己有了成就就认为自己总是对的。这方便的话我就不多说了,总之我不认为这是MS或者说是VB的BUG。
各种语言都有自己的规范,没有理由要求VB和其他语言一样。
既然提供了exit for,就应该利用。
等到你用c++的时候,只要规范允许,无论你愿意写多么诡异的循环都可以。
当然是不是容易出错,别人是不是容易看得懂,楼主肯定不会去考虑。
楼主能不能认同这一点。
如果没有搂主的以身试法,我还不知道 会有这样的结果,因为我从来没有像楼主这么用过,但是我在学习入门的时候,老师就说了for和while的区别
也许是大家是对vb都有很深的感情才会这样的,楼主页不要见怪,(你不能用着人家的东西说人家不好)
想当年学 C(Trubo C,离 Visual C 还早呢)时老是把 & 和 && 搞混。VB 上手快,精通慢,不要急。
开发环境没有说在循体内不能修改上限的值,而在改了之后又不认可,BUG啊,楼主真的强这样的BUG也样你找得到佩服佩服.我正想用VB开发个系统这下可让我好好的吸取一下教训不要发生内似的错误了.
不过说真的,在循环体内修改循还变量上限的值不是很好的编程风格.为什么不改i的值为4呢一样可以达到效果啊
有的时候习惯性的思路往往会把人带上歧路。或许换个没有接触过其他语言的人反倒以为是正常的啦。
就象楼主遇到的问题,我在学C的时候,书上说的确实是和楼主的一样,循环一次,判断一次。
而VB则因为最终无法生成机器代码在运行速度上相对其他语言要慢,所以就在编译器上下了很大的功夫优化,包括楼主所遇到的这个问题其实也就是VB用于速度优化的一个表现,当然,只是因为楼主以前用C什么的,先入为主,才会遇到这个麻烦。
不过话又说回来,虽然C,C++等语言可以在循环中改变循环终值,但是也不会有一个计算机老师推荐你在循环中去改变它们,因为从编程风格和逻辑方面来说,这都算不上是一个什么好习惯。
没有要说楼主坏话的意思,只是就事论事而已。
传递参数。
是i先自增呢还是先于j相加呢?
楼上的各位说得都很中肯,重视代码规范很重要的
什么时候才能自己写呢!··
a=a+1
if a>10000 then exit sub
next i如果照你所说的,a岂不是要循环一万次?a=1000for i=0 to a
a=a*rnd*100
next i这个要循环几次那?
Delphi中如果改了循环终值会在编译时报错,VB不报错,掩盖了错误,算是设计上的不完善,没必要追究到底算不算 Bug 。
//
一本MS出的书,国内没有,我看的是台湾的书,台湾有专门的MS的出版社。
象MS的出,国内也有翻译比如我现在正在看的《net框架程序设计-VBNET描述》就是李建忠老师翻译
可惜啊,国外的好书到国内翻译了,总是差点什么,虽然说李老师是有名的翻译者发现有个特点,在国内相大大的比例根本没有去从基础抓起,比如常常说如何学习vb,属性,方法,事件,真的掌握了就大的问题没有了,常常看某些问题都是事件,属性不清楚。基础不好台湾的好书还是比较多,就是太贵了,买不起,ft....