| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 479 人关注过本帖
标题:Class天杀的那2行~这个范例救了我~
只看楼主 加入收藏
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
结帖率:97.66%
收藏
 问题点数:0 回复次数:8 
Class天杀的那2行~这个范例救了我~
只需1行~TMD1行~想了我几个礼拜~问了多少人~没人愿意说~都要我改用属性写~
但是要改成属性写~我原本的代码要大翻修~实在是艰辛~其实说穿了~就只加1行~1行阿
...............................天阿~天杀的那1行~其他我都写了~差那1行就是不会动~

贴个范例~
程序代码:
类别1里的代码:
Option Explicit

Public Event MyMessageBox(ByVal Today As String)

Public Function AskToday()
  RaiseEvent MyMessageBox("Today is " & Date)
End Function


Form1上有个按钮
程序代码:
Option Explicit
Private WithEvents oClass1 As Class1

Private Sub Command1_Click()
  oClass1.AskToday
End Sub

Private Sub Form_Load()
  Set oClass1 = New Class1
End Sub

Private Sub Form_Unload(Cancel As Integer)
  Set oClass1 = Nothing
End Sub

Private Sub oClass1_MyMessageBox(ByVal Today As String)    '就是这一行~
  MsgBox Today, vbInformation, "Message"
End Sub


[ 本帖最后由 wube 于 2011-5-12 19:45 编辑 ]
2011-05-12 19:44
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4940
专家分:30047
注 册:2008-10-15
收藏
得分:0 
以前从来没用过 复杂的类,
虽然知道类,但没使用过。

而我用的类,都是 使用的 BAS + CLASS 的形式存在,如果有变量专不出来,我都是直接用全局变量传递或属性传递。
没有遇到过你这种情况。

你现在用的方法,我也看了半天才看懂。
引发事件传递数据出来。这个方法能理解,但作用,我也没太懂性。


授人于鱼,不如授人于渔
早已停用QQ了
2011-05-13 09:50
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
以下是引用风吹过b在2011-5-13 09:50:00的发言:

以前从来没用过 复杂的类,
虽然知道类,但没使用过。

而我用的类,都是 使用的 BAS + CLASS 的形式存在,如果有变量专不出来,我都是直接用全局变量传递或属性传递。
没有遇到过你这种情况。

你现在用的方法,我也看了半天才看懂。
引发事件传递数据出来。这个方法能理解,但作用,我也没太懂性。


其实我说了我是用它的方法去实现我要的功能~我的班是阶层式的~虽然很难完整跟你说明~你就当作是在分解<HTML>文字档~最外层有<标题>和的<HEAD>~然后主结构被包起来的<Body>~然后的<Body> </Body>里面有分各种<P> </ P>~每个<P> </ P>中间又有各种不同的<Table> </Table>~最后要分解每种的<TABLE>内含的值取出到结构以便取用~重点是对我来说不是只有一个~的<Body>~最少都超过500个以上~加一加档案总量可达GB或以上~

而我要的功能就是让一个的<Body>读取完毕后再读第二个的<Body>前~开始处理第一个已经存到内存的的<Body>资料~而CALSS事件的功用是让第一个<Body>分析处理完毕后~把程式控制权交给模块或页面去把结构做重新排版或汇整存到数组中~到一定大小后输出到档案~依此类推~而因为的<Body>里的资料存到结构中的量大到无法一次处理完再整理~只好每个的<Body>处理完毕就传回~两边跳来跳去最后完成整个程序~不这么做内存铁定要爆掉~

举例来说~60MB的的档案我可以汇整出12万行以上的数组~因此我又发现一维数组超过9万行就会爆掉~所以我又分数组的index超过一个数量就输出一次~

P.S VB6很怪的地方是~一维数组最大不能超过9万8千多~但是改成二维就行~可以二维太复杂~我就是把二维合并成一维才遇上这问题~

其他我早就都完成了~只是改写成类之后~遇上无法执行到一半将控制权转移的问题~先前发问关于撷取鼠标讯息写程控制项的新滚轮事件时~版主给我类钩子的时候有类似事件的用法~可惜小弟资质驽钝~无法体会并应用~加上表达能力也不好问不出个所以然~只好一直卡~又加上我身上不只卡这个案例~所以就一直拖了~

昨晚无意中才发现原来这么简单~其实都写好了~只差一行~加了那行就行了~所以心情真的是百感交集阿~更回想起之前到处求人问解答~而别人一定都回答不是我要的答案~要不就是要我全部重写~不然就是态度很差~唉.......写程式要靠自己~这就是活生生血淋淋的实例~

公司就是这样~写的出来是主管领导有方~写不出来是你资质驽钝~花时间精神的是你~但是功劳是老板的~你只得到了成就感(自我安慰)~

不要選我當版主
2011-05-13 14:42
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4940
专家分:30047
注 册:2008-10-15
收藏
得分:0 
P.S VB6很怪的地方是~一维数组最大不能超过9万8千多~但是改成二维就行~可以二维太复杂~我就是把二维合并成一维才遇上这问题~

1维数组,好像是 占用内存不得超过 64K 的内存。就跟定长字符串的长度不能超过 64K 一样。
不记得是不是这样,但的确是有一个规定,而2维数组,好像是多个内存块联合使用。
------------------------------
12万行以上的数组,占用内存是可想而知,这种情况下,我就建议使用数据库,
CLASS 导出来的数据,直接写临时数据库,然后程序里再使用这个数据库。虽然慢一点,但内存可以占用少一些。
数据库,相对来说,占用内存比数组要小的多,当然,速度是比不上。但数据库有一个很大的优点:伸缩性极大。这点是数组无法比拟的。

如果你们是有大量不同格式的文档需要分析,对么针对每一种文档均有一个 模块(或 CLASS ) 用分析的话,最后的结果,
放数据库,可能比数组要方便一些,调用,显示也方便。
------------------
前面一段时间,都没怎么关注论坛,到今天才仔细看看。

授人于鱼,不如授人于渔
早已停用QQ了
2011-05-13 16:24
bczgvip
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:66
帖 子:1310
专家分:5312
注 册:2009-2-26
收藏
得分:0 
怨念还真大呀!
是要分析HTML 还是 XML ?
2011-05-14 12:26
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
正确的说是分析类似的HTML架构的资料~~不是分析HTML
世上没有的HTML或XML的会产生国标以上的资料量吧~
只是形容~

不要選我當版主
2011-05-14 12:53
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
以下是引用风吹过b在2011-5-13 16:24:01的发言:

P.S VB6很怪的地方是~一维数组最大不能超过9万8千多~但是改成二维就行~可以二维太复杂~我就是把二维合并成一维才遇上这问题~

1维数组,好像是 占用内存不得超过 64K 的内存。就跟定长字符串的长度不能超过 64K 一样。
不记得是不是这样,但的确是有一个规定,而2维数组,好像是多个内存块联合使用。
------------------------------
12万行以上的数组,占用内存是可想而知,这种情况下,我就建议使用数据库,
CLASS 导出来的数据,直接写临时数据库,然后程序里再使用这个数据库。虽然慢一点,但内存可以占用少一些。
数据库,相对来说,占用内存比数组要小的多,当然,速度是比不上。但数据库有一个很大的优点:伸缩性极大。这点是数组无法比拟的。

如果你们是有大量不同格式的文档需要分析,对么针对每一种文档均有一个 模块(或 CLASS ) 用分析的话,最后的结果,
放数据库,可能比数组要方便一些,调用,显示也方便。
------------------
前面一段时间,都没怎么关注论坛,到今天才仔细看看。


谢谢~我也想过用数据库~也想学可是都还学校了~数据库不是人家写好来给我用~要自行分析资料定义后设计~话说以前学校还教导要做五段正规化~这些都又是另一们高深的学问~数据库不是只要会下SQL语法就算会了~

要先有机器~再有服务器版软件~再建数据库服务器~定义使用权限~定义表定义栏位型态~做五段正规化~牵relation~然后最后在写VB6的写代码连上~再连上XP数据库的ODBC Driver~最后才学的SQL语法去对数据库做需求的动作~

想到这些我就干脆还是用类来写比较快点~不然等学好做出来~又不知道是何年何月了~当然还是有机会~会学习一下~

顺便感谢大侠解释了我对数组的疑问~话说我对C语言双指标使用上也有疑问说~有机会在过去找找~

[ 本帖最后由 wube 于 2011-5-14 13:10 编辑 ]

不要選我當版主
2011-05-14 13:07
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4940
专家分:30047
注 册:2008-10-15
收藏
得分:0 
你这里理解错了我一个意思。

我所说的 写临时数据库,是说使用 mdb 这种文件型的数据库,把分析结果写到这里面。而不是使用 SQL SERVER 那个,针对大型任务、共享型任务需要用。
这种临时数据保存,使用 mdb 数据库够用了。

只需要懂点 SQL 语法,连接 MDB 就可以了。

你可以先建立一个有几个表的 MDB ,然后每次使用时,复制一个新的,然后到这里写数据,读数据就是了。
甚至可以建一个表,把某个文件的分析结果与某临时库对应起来,而达到一次分析,多次使用。

授人于鱼,不如授人于渔
早已停用QQ了
2011-05-14 13:40
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
以下是引用风吹过b在2011-5-14 13:40:43的发言:

你这里理解错了我一个意思。

我所说的 写临时数据库,是说使用 mdb 这种文件型的数据库,把分析结果写到这里面。而不是使用 SQL SERVER 那个,针对大型任务、共享型任务需要用。
这种临时数据保存,使用 mdb 数据库够用了。

只需要懂点 SQL 语法,连接 MDB 就可以了。

你可以先建立一个有几个表的 MDB ,然后每次使用时,复制一个新的,然后到这里写数据,读数据就是了。
甚至可以建一个表,把某个文件的分析结果与某临时库对应起来,而达到一次分析,多次使用。



我的理解~临时资料库~类似资料暂存器~我隔壁的高手同事也建议过我用暂存档文件~类似Temp File~应该跟你这次说的类似吧~就像实体内存和分页内存的关系一样~这我有一直在考虑~
可是我程序不部是写的出来就算数~客户会要求执行效率~CPU负载~~内存使用量甚至程序开发所需时间~所以我只能利用私下的时间去学我不会的东西~老实说我对数据库存取不是很熟析~还在学习中
(所以板上关于数据库的相关问题我都不大敢回答)~临时资料库~这我需要点时间研究一下再回你~
对了突然想到~之前我也发过一次文~问说是用数据库或直接处理较好的那篇~我自己也已经知道答案了~所以答案已经很明显了~只是我自己突破不了~真是抱歉了~

顺便分享~里面三组代码~一组是的MSDN上的~另外是网上高手的研究EXCEL中的~这效率超高~呵呵呵~
Sample.rar (227.42 KB)

Access的我再找找~有地方可以抓到各式代码的网站~示例代码~其实有~只是看不懂~还在研究中~

不要選我當版主
2011-05-14 14:38
快速回复:Class天杀的那2行~这个范例救了我~
数据加载中...
 
   



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

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