Skip to content

本章列出了构成twinBASIC语言核心的全局语句和过程。

分类列表

编译器控制

声明和定义

  • Class, Module - 定义类或模块
  • Interface, CoClass - (twinBASIC) 使用twinBASIC语法定义COM接口或组件类
  • Sub - 定义过程
  • Function - 定义函数
  • Property - 定义属性
  • ParamArray - 将过程的最后一个参数声明为可变参数列表
  • Enum - 定义具有关联常量的枚举类型
  • Type - 声明用户自定义数据类型(UDT)/结构体
  • Declare - 声明外部/库过程或函数
  • Event - 声明事件
  • Implements - 指定类实现给定接口
  • End - 终止执行,结束Function、Sub、Property或Enum定义,结束Type声明,结束Class或Module,结束If、Select或With块

流程控制

语句:

内联条件函数 --- 上述If...Then...ElseSelect Case语句在表达式级别的替代方案:

  • If - 计算表达式并返回两个值之一;仅计算所选分支(twinBASIC新增)
  • IIf - 计算表达式并返回两个值之一;两个分支始终都会被计算
  • Choose - 根据1起始索引从列表中返回一个值
  • Switch - 在(条件, 值)对列表中返回第一个True条件对应的值

另见:

错误处理

语句:

  • On Error - 指定发生错误时的处理方式
  • Resume - 在捕获错误后恢复执行
  • Error 语句 - 模拟错误的发生(旧式;建议使用Err.Raise

过程:

  • Err - 返回描述当前运行时错误状态的ErrObject
  • Erl - 返回最近运行时错误发生的行号
  • Error$, Error 函数 - 返回与给定错误号对应的错误消息
  • CVErr - 将数值表达式包装为Error子类型的Variant
  • SetThreadGlobalErrorTrap - 注册一个回调,当未处理的运行时错误逃逸调用线程上的活动错误处理链时触发

变量声明

语句:

  • Dim - 声明类型化标量或数组变量
  • Const - 声明常量
  • Public - 在类或模块中声明公共变量
  • Private - 在类或模块中声明私有变量
  • Protected - (twinBASIC) 声明可在类及其派生类中访问的类成员
  • Static - 声明静态持续期的变量

变量赋值和修改

语句:

  • Let - 设置变量的值
  • Set - 更改变量引用的对象
  • New - 创建类的新实例
  • LSet - 赋值用户自定义类型,或左对齐字符串
  • RSet - 右对齐字符串

运算符:

  • Is - 比较两个对象引用是否同一
  • IsNot - (twinBASIC) Is的逻辑反运算

数组

语句:

  • ReDim - 分配或更改动态数组的大小
  • Erase - 用默认值填充固定大小数组,或使动态数组无效

过程:

另见:

文件I/O

语句:

  • Open, Close - 打开/关闭文件进行I/O操作
  • Get, Put - 从打开的随机访问文件读取/写入数据
  • Line Input, Print - 从/向打开的文本文件读取/写入一行
  • Input, Write - 从/向打开的顺序访问文件读取/写入数据
  • Seek - 更改打开文件中的当前访问位置
  • Lock, Unlock - 锁定/解锁打开文件中的记录范围

过程:

  • Reset - 关闭所有打开的磁盘文件
  • Width - 设置打印时的行长度限制
  • Input, Input$ - 从顺序文件读取固定数量的字符
  • InputB, InputB$ - 从顺序文件读取固定数量的字节
  • ChDir, ChDrive - 更改当前工作目录和磁盘驱动器
  • MkDir, RmDir - 创建/删除磁盘上的目录
  • Name - 重命名磁盘上的文件或目录
  • SetAttr - 设置磁盘文件的属性
  • FileCopy - 复制磁盘上的文件
  • Kill - 从磁盘删除文件
  • SavePicture - 将PictureImage写入磁盘文件
  • MacID - 转换4字符Mac文件类型代码(旧式)

状态管理

过程:

事件

语句:

  • RaiseEvent - 引发可由事件处理器处理的事件

过程:

  • RaiseEventByName - 按名称在对象上引发事件,以Variant数组形式接收参数
  • RaiseEventByName2 - 按名称在对象上引发事件,以可变长度参数列表接收参数
  • RuntimeCreateGetMessageHook - 创建IGetMessageHook用于过滤发往窗口(及其后代,可选)的Windows消息

另见

用户对话框

过程:

  • MsgBox - 显示模态消息对话框并返回用户点击的按钮
  • InputBox - 提示用户输入一行文本并返回所输入的内容
  • Beep - 发出系统提示音

进程控制

过程:

  • Shell - 异步运行另一个程序并返回其任务ID
  • AppActivate - 将焦点切换到命名窗口或激活该窗口
  • SendKeys - 向活动窗口发送按键
  • DoEvents - 让出控制权到消息循环,以便处理挂起的事件

COM和自动化

过程:

  • CreateObject - 创建COM/Automation对象的新实例
  • GetObject - 获取从文件加载或正在运行的Automation对象的引用
  • CallByName - 按名称动态调用对象的方法或属性
  • CallByDispId - 按 IDispatch 调度ID动态调用对象的方法或属性(twinBASIC新增)
  • CreateGUID - 生成新的GUID并以注册表格式字符串返回
  • vbaCastObj - 将对象重新解释为另一个COM接口(类型化的QueryInterface
  • vbaObjSet, vbaObjSetAddref - 将原始对象指针赋值给Object变量,可选是否增加引用计数
  • vbaObjAddref - 递增给定地址处对象的COM引用计数

另见:

命令行和环境

过程:

颜色

过程:

  • RGB - 从红、绿、蓝分量构建RGB颜色值
  • RGBA - 从红、绿、蓝和Alpha分量构建RGBA颜色值
  • RGB_R, RGB_G, RGB_B, RGBA_A - 提取各个颜色分量
  • QBColor - 返回QuickBASIC颜色索引对应的RGB颜色值
  • TranslateColor - 将OLE颜色值转换为普通RGB颜色值

数学

过程:

  • Atn, Cos, Sin, Tan - 三角函数
  • Sqr - 求平方根
  • Exp - 计算以$e$为底的指数
  • Log - 计算数的自然(以$e$为底)对数
  • Sgn - 返回数的符号
  • Abs - 返回数的绝对值
  • Round - 将数舍入到指定小数位数
  • Rnd - 生成[0.0, 1.0)范围内的随机数
  • Randomize - 为随机数生成器设置种子
  • Partition - 返回字符串标签,标识值落入哪个等宽数值范围(直方图式分桶)

另见:

类型转换

将表达式强制转换为特定类型的过程:

在数值和字符串之间转换的过程:

  • Hex$, Hex - 数值的十六进制字符串表示
  • Oct$, Oct - 数值的八进制字符串表示
  • Str$, Str - 数值的十进制字符串表示
  • Val - 将字符串解析为Double
  • ValDec - 将字符串解析为Decimal

提取数的整数部分的过程:

  • Fix - 向零截断
  • Int - 向负无穷舍入

其他:

  • Nz - 用默认值替换Null

另见:

类型检查

命名或标识变量子类型的过程:

  • VarType - 返回标识变量子类型的VbVarType代码
  • TypeName - 以String形式返回变量数据类型的名称

测试值状态或子类型的过程:

  • IsDate - 返回表达式是否可作为日期计算
  • IsEmpty - 返回Variant是否未初始化
  • IsError - 返回表达式是否为错误子类型
  • IsMissing - 返回可选参数是否已提供
  • IsNull - 返回变量是否包含Null
  • IsNumeric - 返回表达式是否可作为数值计算
  • IsObject - 返回变量是否引用对象

另见:

字符串处理

修改字符串的语句:

  • Mid =, MidB = - 赋值或替换字符或宽/窄字符串段

检查字符串属性的过程:

创建字符串的过程:

返回修改后字符串的过程:

在数值和字符串之间转换的过程:

  • CStr - 将值强制转换为String(识别区域设置)
  • Hex$, Hex - 数值的十六进制字符串表示
  • Oct$, Oct - 数值的八进制字符串表示
  • Str$, Str - 数值的十进制字符串表示
  • Val - 将字符串解析为Double
  • ValDec - 将字符串解析为Decimal

另见:

日期和时间

过程:

另见:

  • CDate, CVDate - 将表达式强制转换为DateVariant(子类型Date

自省

过程:

另见:

  • IMEStatus - 当前输入法编辑器模式(仅限东亚Windows)

内存和指针

过程:

另见:

线程和原子操作

过程:

另见:

内联汇编和代码生成

过程:

  • Emit - 将自定义Byte值注入到所在过程的代码生成中
  • EmitAny - 将自定义类型化值注入到所在过程的代码生成中(大小从每个值的数据类型推断)
  • StackOffset - 返回变量的栈帧偏移量,在编译时解析
  • StackArgsSize - 返回所在过程的栈传参数总大小
  • UnprotectedAccess - 返回绕过私有成员访问检查的对象引用

另见:

表达式求值

过程:

  • Eval - 编译并求值以字符串形式提供的twinBASIC表达式

另见:

财务

过程:

  • DDB - 使用双倍余额递减法计算资产折旧
  • FV - 具有恒定存款和利率的投资的未来值
  • Pmt - 具有恒定付款和利率的贷款的每期付款额
  • IPmt - 具有恒定付款和利率的贷款的每期利息付款额
  • PPmt - 具有恒定付款和利率的贷款的每期本金付款额
  • SYD - 年数总和法计算资产折旧
  • SLN - 在一个期间内的直线折旧
  • PV - 投资的现值
  • IRR - 一系列现金流的内部收益率
  • MIRR - 一系列现金流的修正内部收益率
  • Rate - 年金的每期利率
  • NPV - 投资的净现值
  • NPer - 具有恒定存款和利率的投资的期数
  • FormatCurrency - 将表达式格式化为货币字符串

单元测试

Assert包的模块:

  • Exact - 最严格的比较语义;数据类型必须匹配且不进行隐式转换
  • Strict - 区分大小写的字符串比较,否则使用标准twinBASIC相等比较
  • Permissive - 不区分大小写的字符串比较,否则使用标准twinBASIC相等比较

每个模块公开相同的十五个断言:SucceedFailInconclusiveAreEqual / AreNotEqualAreSame / AreNotSameIsTrue / IsFalseIsNothing / IsNotNothingIsNull / IsNotNullSequenceEquals / NotSequenceEquals。所有断言均标记[DebugOnly(True)],在发布版本中不编译。

已弃用

语句:

twinBASIC及其LOGO版权为作者"韦恩"所有