佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

搜索
查看: 2846|回复: 36

Visual Basic 6.0(VB6) 疑难讨论区

[复制链接]
发表于 13-8-2008 11:08 AM | 显示全部楼层 |阅读模式
由于最近自己在工作上有需要用到Visual Basic 6.0 (注意:不是.NET)。
自己本身多年前曾经接触过,不过时日已久忘了七七八八了,而且之前学的也不深。

目前工作上(Automation)需要用到VB6来建立机械操作平台,
需要其他仪器互相接收与发送信号。
愿意在这里开一个专区让VB6的用户集中讨论所遇见的问题。
当然不是局限在Automation,欢迎一切问题,集思广益。



相关读物:

- Visual Basic 6 身世

更新中。。。


[ 本帖最后由 einsttan 于 13-8-2008 11:35 AM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 13-8-2008 11:09 AM | 显示全部楼层
疑难:1 Declare Function COMMSRead% Lib "mil32dev" (ByVal hController&, ByVal nCOMMSAddress%, ByRef fValue!)

解答:meemee

这是type character,用来代替data type。

$ = string
& = long
! = single
% = integer

Dim hController as String '(可以写成)
Dim hController$

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>


[ 本帖最后由 einsttan 于 14-8-2008 09:59 PM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 13-8-2008 11:13 AM | 显示全部楼层
Declare Function COMMSRead% Lib "mil32dev" (ByVal hController&, ByVal nCOMMSAddress%, ByRef fValue!)

根据VB6,Declaration不能有符号的。但是上面的Function这样写的原因是什么?
例如:Dim hController& as String 就会有错误。应为Variable夹入了“&”符号。
目前为止在网上找不到相关的疑难的答案。

那个朋友可以解释以上的符号?


[ 本帖最后由 einsttan 于 13-8-2008 11:18 AM 编辑 ]
回复

使用道具 举报

发表于 14-8-2008 12:09 AM | 显示全部楼层

回复 3# einsttan 的帖子

这是type character,用来代替data type。

$ = string
& = long
! = single
% = integer

Dim hController as String '(可以写成)
Dim hController$

dim MyLongInteger as long
dim MyLongInteger&

dim MyInteger as integer
Myinteger = &HFFFF%  '(= -1)
Myinteger = &HFFFF&  '  (overflow error)
回复

使用道具 举报

发表于 14-8-2008 09:44 AM | 显示全部楼层

回复 4# meemee 的帖子

看上一樓時我還在blur blur的
看到你的解釋後才想起vb6有這些東東
回复

使用道具 举报

发表于 14-8-2008 05:47 PM | 显示全部楼层
VB 很久米有碰了 ...
差不多也忘到 7788 了 ...
回复

使用道具 举报

Follow Us
发表于 14-8-2008 07:34 PM | 显示全部楼层
原来可以那样,我以前学都没有看到过
回复

使用道具 举报

 楼主| 发表于 14-8-2008 09:53 PM | 显示全部楼层
原帖由 meemee 于 14-8-2008 12:09 AM 发表
这是type character,用来代替data type。

$ = string
& = long
! = single
% = integer

Dim hController as String '(可以写成)
Dim hController$

dim MyLongInteger as long
dim MyLongInteger&
...


咪咪谢谢你。。
原来是这样子的,我还把它当作是没有declare的咚咚,by default会是variant的。
还硬硬要把string往里面塞,一直出现invalid argument datatype mismatch,却不懂什么一回事。

[ 本帖最后由 einsttan 于 14-8-2008 09:55 PM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 27-8-2008 11:21 AM | 显示全部楼层
还有 就是 vb 到底有没有 unsigned long 的?

[ 本帖最后由 tensaix2j 于 27-8-2008 11:34 AM 编辑 ]
回复

使用道具 举报

发表于 27-8-2008 10:44 PM | 显示全部楼层
原帖由 tensaix2j 于 27-8-2008 11:21 AM 发表
还有 就是 vb 到底有没有 unsigned long 的?


vb6没有 unsigned (除了byte),vb.net 就有 unsigned

vb6:
byte = 0 - 255 (unsigned)

integer = -32,768 - +32,767 (signed)
long = -2,147,483,648 - +2,147,483,647 (signed)


vb.net:
byte = 0 - 255 (unsigned)
char = 0 - 65535 (unsigned)

ushort (或uint16) = 0 - 65,535 (unsigned)
uinteger (或uint32) = 0 - 4,294,967,295 (unsigned)
ulong (或uint64) = 0 - 18,446,744,073,709,551,615 (unsigned)

short (或int16) = -32,768 - +32,767 (signed)
integer (或int32) = -2,147,483,648 - +2,147,483,647 (signed)
long (或int64) = -9,223,372,036,854,775,808 - +9,223,372,036,854,775,807 (signed)

还有就是,vb.net 的 integer type (integer, long) 的 byte 长度是 vb6 的 2 倍
回复

使用道具 举报

发表于 28-8-2008 08:58 AM | 显示全部楼层
vb 6 好像连基本的 >>  << bit shift operator 都没有。
回复

使用道具 举报

发表于 28-8-2008 02:34 PM | 显示全部楼层
bit shift operator 不基本了。。
回复

使用道具 举报

发表于 29-8-2008 11:43 AM | 显示全部楼层
再来就是 += 或 ++ 也没有。 

记得第一次用 vb 时差点吐血。。。
回复

使用道具 举报

 楼主| 发表于 29-8-2008 11:31 PM | 显示全部楼层
原帖由 tensaix2j 于 29-8-2008 11:43 AM 发表
再来就是 += 或 ++ 也没有。 

记得第一次用 vb 时差点吐血。。。


呵呵,如果习惯用C,就需要时间去适应VB的syntax。
如果换成一个VB的去C,那么我相信他一定时常忘记放 ;
不过我觉得VB没有 ; 也是不错,起码容易统计line of code,比较准确。

[ 本帖最后由 einsttan 于 29-8-2008 11:35 PM 编辑 ]
回复

使用道具 举报

发表于 11-9-2008 10:20 AM | 显示全部楼层
我有vb的问题想要问问各位。。。

我现在开发着的软件需要用到Timer来不间断的一直call 一个 dll ...
每次我call那个DLL 的 function  都需要用到大概 1s 的时间来process...
这直接造成我的Form 会 lag of responsive.. 因为当vb call 那个 dll 的时候,如果我按button 或切换去别的 form 都必须等它先处理完。。。
有没有什么办法可以解决这个问题?

PS: 我有试过DoEvents,但还是不行。。 因为 call 着 dll 时 vb 并不会执行 DoEvents...

有何高见?
回复

使用道具 举报

发表于 13-9-2008 09:28 PM | 显示全部楼层
看来 multithread 才能解决你的问题咯
回复

使用道具 举报


ADVERTISEMENT

发表于 13-9-2008 09:29 PM | 显示全部楼层
刚刚发现,原来在 vb 可以用 createProcess 的方式来执行shellcode 的。。
回复

使用道具 举报

发表于 15-9-2008 02:05 PM | 显示全部楼层
原帖由 tensaix2j 于 13-9-2008 09:29 PM 发表
刚刚发现,原来在 vb 可以用 createProcess 的方式来执行shellcode 的。。


Multithread 当然可以solve lo.... 但是.. vb 并不能做到Multithread 啊...

你说的createProcess 是什么意思? 可以多一些注解吗?

会不会有帮助到我的情况?

我现在就去找createProcess的参考, 另外希望有你的答复.. 谢了..
回复

使用道具 举报

发表于 15-9-2008 02:30 PM | 显示全部楼层

回复 17# tensaix2j 的帖子

原来createProcess 只是执行shellcode...
帮不上忙...
回复

使用道具 举报

发表于 15-9-2008 03:39 PM | 显示全部楼层
记得以前有看过VB6怎样做Multithread的。
帮妳找找看。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT


本周最热论坛帖子本周最热论坛帖子

ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2026 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 3-5-2026 09:53 PM , Processed in 0.109743 second(s), 13 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表