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 | 小于 |