VB 调试之初识 VB

初识简单了解一下 VB,相信随着深入的学习,对它的了解会更多,理解会更深;

P-Code Packed Code 压缩代码

  • 4.0 以前
  • 运行时,动态链接库(DLL)将翻译或解释执行程序中的指令;
  • 解释器 MSVBVM50.DLL 和 MSVBVM60.DLL

N-Code Native Code 本机代码

  • 5.0 以后
  • 改善 VB 的运行速度
  • 但还是需要 MSVBVM60.DLL,因为许多函数本体放在 MSVBVM60.DLL 里面,需要不断地 CALL 其中的函数,不过,这时候的 MSVBVM60.DLL 就不承担解释执行的任务了,只是充当一般的 DLL;

编译器技术

  • 编译器的编译技术可以分为 native-compile(自然编译)与 pcode-compile(伪编译)两种;
  • 自然编译是编译器将高级语言转换为汇编代码,并经链接生成 EXE 程序的过程;
  • 伪编译是编译器将高级语言转换为某种编码后,将能解释、执行此编码的一段程序一同链接,生成 EXE 程序;
  • 伪代码 p-code,最早应该叫做 Pascal-Code,其名称起源于一个 pascal 编译器使用的“中间代码”编译技术。现在一般作为 pseudo-code(伪代码),或 packed-code(压缩代码)简称,此项编译技术的出现,最终导致了“虚拟机”的出现。而微软在其编程工具 basic、c、vb 中都使用了类似的编译技术;
  • 所谓伪代码,其基本工作原理是编译器先把执行程序编译为比 80X86 机器码紧凑得多的中间代码形式,然后在链接时把一个小工作引擎嵌入执行程序中,最后在运行时由此工作引擎把 P-Code 解释为本地机器码实际执行,所以叫做 packed-code;同时又由于此代码并不是最终的机器码形式,实际上是“变形的源代码”,所以也被称为 pseudo-code。依靠 P-code 编译技术,使得编程语言不依赖于机器或操作平台成为可能;

VB 的主要数据类型

在函数中的缩写形式数据类型
bool布尔型
str字符串型
i2双字节整型
ui2无符号双字节整型
i4长整型
r4单精度浮点型
r8双精度浮点型
cy货币型
var变体类型
fp浮点型
cmp比较
comp比较

VB 常用 API 函数

数据类型转换类函数:

API 函数含义
__vbaI2Str将一个字符串转化为整型
__vbaI4Str将一个字符串转化为长整型
__vbar4Str将一个字符串转化为单精度浮点型
__vbar8Str将一个字符串转化为双精度浮点型
VarCyFromStr将字符串转化为货币类型
VarBstrFromI2将整型数据转化为字符串

数据移动:

API 函数含义
__vbaStrCopy将一个字符串拷贝至指定内存单元中
__vbaStrMove将一个字符串移动到指定内存单元中
__vbaVarCopy将一个变量的值拷贝至指定内存单元中
__vbaVarMove将一个变量的值移动到指定内存单元中

数学运算:

API 函数含义
__vbavaradd两个变量值相加
__vbavarsub第一个变量减去第二个变量
__vbavarmul两个变量值相乘
__vbavaridiv第一个变量除以第二个变量,得到一个整数商
__vbavarxor两个变量值做异或
__vbavardiv
__vbavarmod求余
__vbavarneg取负
__vbavarpow指数

程序设计杂项:

API 函数含义
__vbavarfornext这是 VB 程序里的循环结构,For…Next…(Loop)
__vbafreestr释放掉指定字符串所占的内存,也就是把指定内存单元中字符串抹掉
__vbafreeobj释放 VB 的一个对象(一个窗口或者一个对话框)所占的内存,也就是把指定内存中窗口或者对话框对象抹掉
__vbastrvarval获取字符串指定的子串
multibytetowidechar将多字节字符串转化为宽字节字符串
rtcMsgBox弹出一个消息框,类似于 WINDOWS API 中的 MessageBoxA/MessageBoxExA 函数
__vbavarcat将两个变量值相连,如果是两个字符串,就直接连接在一起
__vbafreevar释放变量所占的内存空间,也就是把指定内存中的变量值抹掉
__vbaobjset给对象赋值或者实例化
__vbaLenBstr获取一个字符串的长度,注意:VB 中一个汉字的长度也是 1 个字节
rtcInputBox显示一个 VB 标准的输入窗口,类似于 WINDOWS API 函数 GetWindowTextA/GetDlgItemTextA
__vbaNew显示一个对话框,类似于 WINDOWS API 函数 DialogBox
__vbaNew2显示一个对话框,类似于 WINDOWS API 函数 DialogBoxParamA
rtcTrimBstr将字符串左右两边的空格去掉
__vbaEnd结束进程
__vbaLenVar获取一个变量的大小
rtcMidCharVar从字符串中间获取相应的字符,VB 中的 MID 函数,用法 MID(“字符串”,“开始的位置”,“取几个字符”)
rtcLeftCharVar从字符串左边取相应字符,VB 中的用法:Left(“字符串”,”从左边开始取几个字符”)
rtcRightCharVar从字符串右边取相应字符,VB 中的用法:Right(“字符串”,”从右边开始取几个字符”)
rtcDir获取当前路径
__vbaFileOpen打开文件

比较函数:

API 函数含义
__vbastrcomp比较两个字符串,类似于 WINDOWS API 函数 lstrcmp
__vbastrcmp比较两个字符串,类似于 WINDOWS API 函数 lstrcmp
__vbaFpCmpCy浮点变量值与货币变量值进行比较
__vbavartsteq比较两个变量值是否相等
__vbavartstNe判断两个变量值是否不相等
__vbavartstGe大于等于
__vbavartstGt大于
__vbavartstLe小于等于
__vbavartstLt小于