VisualFreeBasic的编程文档和教程
论坛的首页 勇芳的软件
教程和帮助
  • VisualFreeBasic编程文档
  • 勇芳系列软件帮助说明教程
  • 留言或交流 登录
    登录
    侧边栏壁纸
    博主头像
    勇芳

    • 累计撰写 330 篇文章
    • 累计收到 0 条评论
    • 首页
    • 栏目
      • 论坛的首页
      • 勇芳的软件
      • 教程和帮助
        • VisualFreeBasic编程文档
        • 勇芳系列软件帮助说明教程
      • 留言或交流
      • 登录
    VisualFreeBasic编程文档
    • VisualFreeBasic代码_字符转换 2026-1-21
      VisualFreeBasic代码_字符转换 Chr 从一个或多个ASCII整数值返回一串字符 Print "97的ASCII码是:", Chr(97) Print Chr(97, 98, 99) '打印abc Dim s As String = Chr(97, 98, 99) Print s Asc 返回字符的相应ASCII或Unicode整数表示形式 Print "'a'的ascii代码是:", Asc("a") Print "'b'的ascii代码是:", Asc("ABC", 2) 将产生输出: a'的ascii代码是:: 97 B'的ascii代码是:: 98 WChr 返回包含一个或多个Unicode字符的宽字符字符串 Print "20013的UNICODE代码代表的字符是:", WChr(20013) Print "多个UNICODE字符:", WChr(20013, 25991, 32534,31243) 将产生输出: 934的UNICODE代码代表的字符是:中; 多个UNICODE字符:中文编程
      • 2026年-1月-21日
      • 46 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic代码_字符串转换为数字 2026-1-21
      VisualFreeBasic代码_字符串转换为数字 Val 将字符串转换为浮点数 Dim a As String, b As Double a = "2.1E+30xa211" b = Val(a) Print a, b 输出:2.1E+30xa211 2.1e+030 ValInt 将字符串转换为整数 Dim a As String, b As Integer a = "20xa211" b = ValInt(a) Print a, b 输出:20xa211 20 ValLng 将字符串转换为长整数 Dim a As String, b As LongInt a = "20xa211" b = ValLng(a) Print a, b 输出:20xa211 20 ValUInt 将字符串转换为无符号整数 Dim a As String, b As UInteger a = "20xa211" b = ValUInt(a) Print a, b 输出:20xa211 20 ValULng 将字符串转换为无符号长整数 Dim a As String, b As ULongInt a = "20xa211" b = ValULng(a) Print a, b 输出:20xa211 20
      • 2026年-1月-21日
      • 58 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic代码_创建字符串 2026-1-21
      VisualFreeBasic代码_创建字符串 ZString 标准数据类型:8位字符串 (固定长度) 遇到 0 就截断的定长字符,假如第1个字符为 0 那么不管后面有无内容,本字符为空 Dim a As zString * 10 *10 表示空间为10个字符,最后1个保留为0 ,因此最多储存 9个字符,你给它赋值100个字符,多余的将会被丢弃。 String 标准数据类型:8位字符串 (可变长度) 可以包含 0 编码字符的类型,字符串长度可变 Dim a As String 你可以随意赋值任意长度的文字,但受内存限制,一般不能超过1G WString 标准数据类型:16位字符串(固定长度) 遇到 0 就截断的定长字符,假如第1个字符为 0 那么不管后面有无内容,本字符为空 Dim a As wString * 10 *10 表示空间为10个字符,最后1个保留为0 ,因此最多储存 9个字符 StringW 标准数据类型:16位字符串 (可变长度) 可以包含 0 编码字符的类型,字符串长度可变 Dim a As StringW 你可以随意赋值任意长度的文字,但受内存限制,一般不能超过1G Len 返回表达式或数据类型的长度 Dim a As zString ="aa中文" Dim b As wString ="aa中文" print len(a) 输出:6 一个中文占2个 print len(b) 输出:4 每个文字占1个 Print Len(Integer) '返回4 Space 创建一个填充空格的给定长度的字符串(" ") 就是生成几个空格的字符串 Dim a As String a = "x" + Space(3) + "x" Print a '打印:x x WSpace 创建一个填充空格(" ")的给定长度的WString Dim a As WString * 10 a = "x" + WSpace(3) + "x" Print a '打印:x x String (函数) 用特定字符创建并填充一定长度的字符串 Print String( 4, 69 ) '打印:“EEEE” Print String( 5, "确实" ) '打印:“确实确实确实确实确实” Wstring (函数) 填写一定长度的WString,具有一定的宽字符 Print WString( 4, 934 ) Print WString( 5, WStr("确实") )
      • 2026年-1月-21日
      • 39 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic代码_字符串类型分类 2026-1-21
      VisualFreeBasic代码_字符串类型分类 在VB6 中,字符串就一种类型,而在 VFB 里,就有2中类型 一、ASCII编码字符串 (8位,1个字节内存大小) 电脑中的内存和文件,最小单位就是字节,1个字节是8位的2进制,因此称为 8位或1字节。1个字节的数字从 0 到 255 ,可以表示 256个字符。当然 0 表示无字符,字符就 255个。 ASCII编码字符串 以1个字节为1个文字,详细点击此链接查看 为了更好的理解它,我们称它为英文字符,后来为了可以使用中文,就搞了1个中文占用2个英文字来记录常用字,其它不常用和特殊文字,比方火星文等都会变成“?”(问号)造成文字永久丢失。 编程中代码类型 Dim a As ZString *100 =“abc中文” Dim b As String =“abc中文” print len(a),len(b) '打印字符个数 打印结果:7 , 7 常用字符函数:Len Mid Left Right InStr Trim LCase UCase 二、Unicode编码字符串 (16位,2个字节内存大小) 为了更好的使用中文,以及支持全部中文字,衍生出了Unicode编码字符串,我们可以理解为中文字符,不管中文或英文,都占用2个字节内存,可以储存火星文等全系列中文。处理中文一般都推荐这个类型。 编程中代码类型(VB6使用的字符串类型,就是这个) Dim a As WString *100 ="abc中文" Dim b As StringW ="abc中文" print len(a),len(b) '打印字符个数 打印结果:5 , 5 常用字符函数:LenW MidW LeftW RightW InStrW TrimW LCaseW UCaseW 三、固定长度和可变长度 固定长度的字符串类型,就是先申请内存,可以最大装载多少文字。 Dim a As ZString *100 Dim a As WString *100 其中,100 表示可以最多容纳 100个文字,但是最后 FB语言会处理成 0编码字符,表示字符结束,因此,100 就是最多可以容纳 99个文字,你给它超过 99个文字,那么超出部分就丢弃掉。 此时内存占用空间,永远都是 100 个,不管你装载几个文字都不影响内存占用。 注: 英文类型占内存是1个文字1个字节, 中文类型占内存1个文字2个字节 可变长度的字符串类型,就是字符有几个,就申请多少内存。 Dim b As String Dim b As StringW 此时最大装载文字个数,受内存限制,一般最大 1G 内存大小。 二者优点和缺点 固定长度的处理速度快,浪费内存空间 可变长度的处理速度慢,不浪费内存空间 比方字符拼贴:你会发现速度真的无法比。所以,可以根据自己代码需求来使用字符变量类型。 Dim i As Long Dim b As ZString * 100005 for i=0 To 100000 b = b & "a" next Dim a As String for i=0 To 100000 a = a & "a" next Dim bw As WString * 100005 for i=0 To 100000 bw = bw & "a" next Dim aw As Stringw for i=0 To 100000 aw = aw & "a" next 四、字符串类型特殊用法 字符串中某个文字的字符编码 我们可以用以下函数 Dim a As String ="abc" ,b As StringW ="中文字" Print Asc(a,1),AscW(b,1) 其中数字 1 是第几个字符 还有一个效率高的方法,用的是 中括号 [] 不是圆括号 Dim a As String ="abc" ,b As StringW ="中文字" Print a[0],b[0] 数字 0 表示第1个字符,以此类推。 注意 Asc(a,1),AscW(b,1) 属于安全操作,超过字符就返回 0 , a[0],b[0] 是不安全操作,不可以乱来,超过字符长度,软件会崩溃。 String 类型不只是ASCII编码字符串 由于 String 类型 支持 0 字符串,其它字符类型不支持,它就可以装载任何数据,而不单单是文字。String类型可以直接等同于字节数组类型 Dim a As String Dim b() As UByte 很多时候,使用字节数组类型,写代码比较麻烦,那么使用 a As String 就方便多了。 比方函数返回,不支持数组返回,需要返回时就必须使用 a As String : Function Myaaa() As String '支持返回 End Function Function Myaaa() As UByte() '不支持数组返回,编译错 End Function 还有一个字符编码,常用于网页:UTF8 字符编码,那么也是用 a As String 和UTF8 相互转换函数: Utf8toStr StrToUtf8 StringWtoUtf8 Utf8toStringW
      • 2026年-1月-21日
      • 55 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic代码_字符串 2026-1-21
      VisualFreeBasic代码_字符串 字符串,通俗来说,就是一串文本数据。 需要先了解以下几个基础知识 字符串编码,分 ASCII 和 Unicode 。变量类型分别是 ZString 和 WString 可以理解为,英文字符串和中文字符串 当 ZString 和 WString 相遇,不需要我们任何操作,FB语言内部会做编码统一操作。 Dim a As ZString * 10 = "中文" Dim b As WString * 10 = "中文" If a=b Then Print "正确" ZString 和 WString 遇到数据为0 就截断字符,String 可以包含 0 。 String 和 StringW 类型是变长字符串,不需要指定长度。 字符串即时值,就是引号中的文字编码,默认为 ASCII 赋值给 WString 类型时,FB语言内部会自动转换编码后赋值。 当工程属性中,选中 Unicode 模式,此时引号中的文字编码为 Unicode 赋值给 ZString 类型时,FB内部会自动转换编码后赋值。 为了避免这样的编码转换,可以使用 Dim a As ZString * 10 = Str("中文") Dim b As WString * 10 = WStr("中文") 在英文系统中,我们写的中文字会乱码(工程默认是 ASCII 模式) Dim a As ZString * 10 = "中文" Dim b As WString * 10 = "中文" 此时打印 a和b 变量会显示乱码 因此需要下列代码,打印中文才正常显示。 Dim a As zString * 10 = WStr("中文") Dim b As WString * 10 = WStr("中文") 自从有浏览器以后,越来越多字符串编码使用 UTF8 ,此编码用 zString 类型使用。遇到要显示时,才用转换编码函数转换 ASCII 或 Unicode 来使用。没遇到显示,就 zString 类型处理。
      • 2026年-1月-21日
      • 79 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic代码_内存 2026-1-21
      VisualFreeBasic代码_内存 在编程过程中,需要经常和内存打交道,所有的变量,所有的操作,都在内存中进行。 当然我们也可以直接对内存管理。 使用动态内存 Deallocate 释放以前赋值的内存 Allocate 从空闲存储器赋值一块内存 CAllocate 从空闲存储器为一定数量的元素赋值内存,并清除内容 Reallocate 为现有的预留内存块重新赋值存储空间 操作例题: 申请 10个字节大小的内存 Dim p As any Ptr = CAllocate(10) 使用完成后,需要回收内存,不然会发生内存泄漏问题,软件会越占内存越多。 Deallocate p Allocate和CAllocate的区别 Allocate一个获取内存后,内存中原来有什么数据,就什么数据,你永远无法确定是什么内容,而CAllocate,获取内存后,多了一步清空数据操作。 其它内存操作 Clear 清除或初始化一些内存 '创建一个包含100个元素的数组 Dim array(0 To 99) As Integer '将数组的内容清除为0,从第一个元素开始 Clear array(0), , 100 * SizeOf(Integer) '赋值20个字节的内存 Dim As Byte Ptr p = Allocate(20) '将前十个字节中的每一个设置为0 Clear *p, 0, 10 '将接下来的十个字节中的每一个设置为42 Clear p[10], 42, 10 '检查赋值的字节的值 For i As Integer = 0 To 19 Print i, p[i] Next '释放内存 Deallocate p Swap 交换两个变量的值(直接交换指针,不交换数据,速度快) '使用交换命令2个数字: Dim a As Integer, b As Integer Input "输入一个数字:"; a Input "输入另一个数字:"; b If a > b Then Swap a, b Print "数字按升序排列:" Print a, b Poke 将值赋值给内存中的位置。(写入内存) Dim i As Integer, p As Integer Ptr p = @i Poke Integer, p, 420 Print Peek(Integer, p) 会产生输出: 420 Peek 在内存中的地址获取任意类型的值(读取内存) Dim i As Integer, p As Integer Ptr p = @i Poke Integer, p, 420 Print Peek(Integer, p) 将产生输出: 420 SAdd 返回一个指向字符串变量数据的指针 Dim s As String Print SAdd(s) s = "你好" Print SAdd(s) s = "abcdefg,1234567,54321" Print SAdd(s) 远程内存读写 就是读写其它软件(不是自己进程)的内存 读进程内存 Dim by(1023) as ubyte MEM_Get_ANY(进程ID,读地址,@by(0),1024 ) 写进程内存 Dim by(1023) as ubyte MEM_Write(进程ID,地址,@by(0),1024)
      • 2026年-1月-21日
      • 58 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic代码_数组 2026-1-21
      VisualFreeBasic代码_数组 数组是一种基础而强大的数据结构,它允许你存储一系列相同类型的值。在编程中,数组的使用非常广泛,可以用来实现各种算法和数据处理任务。这里我将为你提供一个基本的数组编程教程,涵盖数组的基本概念、声明、初始化、访问、遍历以及一些常见操作。 1. 数组的基本概念 数组是一种线性数据结构,它允许你以索引(通常是整数)访问元素。数组中的每个元素可以通过计算偏移量来快速访问,这使得数组成为处理大量数据时的理想选择。 2. 数组的声明与初始化 静态数组 在大多数编程语言中,你可以在声明数组时指定数组的大小(即数组可以存储的元素数量)。 Dim 数组(99) As Long 从 0 开始到 99 可以保存 100个数据 Dim 数组(10 to 20) As Long 从 10 开始到 20 可以保存 11 个数据 动态数组 即数组的大小可以随着元素的增加或删除而自动调整。 Dim 数组() As Long 刚声明的数组是未初始化状态,然后需要使用数组时,随时改变大小,此时原来有数据将会全部清空 ReDim 数组(99) 要想保留原来数组的内容,需要 ReDim Preserve 数组(99) 让初始化的动态数组为未初始化状态 Erase 数组 数组初始化赋值 就是声明数组同时给数组赋值,都是静态数组,动态不可以。 如果没搞初始化赋值,数组的值,字符为空,数组为0 Dim 字符数组(4) As String={"11","22","33","44","55"} Dim 数值数组(4) As Long = {11, 22, 33, 44, 55} Dim 根据参数来定大小数组(...) As Long = {11, 22, 33, 44, 55,66} 3. 访问数组元素 通过索引来访问数组元素。索引通常是从0开始的。 dim aa as long = 数组(1) 数组(1) =aa 4. 遍历数组 遍历数组意味着按顺序访问数组中的每个元素。这通常通过循环来实现。 Dim 数组(99) As Long, i As Long For i = 0 To 99 数组(i) = Rnd *100 Next For i = 0 To 99 Print i, 数组(i) Next 4. 检索数组大小 LBound 返回数组维度的下限 UBound 返回数组维度的上限 Dim 数组(10 To 20) As Long Print LBound(数组),UBound(数组) 打印结果: 10,20 假如动态数组未初始化,返回 -1 Dim 数组() As Long Print LBound(数组),UBound(数组) 打印结果: -1,-1 4. 遍历数组 4. 遍历数组 5. 数组的常见操作 插入元素:在数组中添加新元素可能需要移动其他元素以为新元素腾出空间,通常用于动态数组。 Dim 数组() As Long, i As Long, u As Long ReDim 数组(100) u=UBound(数组) '获取数组下标 ReDim Preserve 数组(u+1) '增加一个数组并保留原来数据 '假如在50索引插入数组 '腾出50索引空间 For i = u To 50 setp -1 Swap 数组(i),数组(i+1) Next 数组(50) =999 删除元素:从数组中移除元素,并可能需要重新排列剩余元素。 Dim 数组() As Long, i As Long, u As Long, x as long ReDim 数组(100) '假如要删除50索引 x =50 u = UBound(数组) '获取数组下标 If x < 50 Then For i = x To u -1 Swap 数组(i),数组(i+1) Next End If If u = 0 Then Erase 数组 '没数组了 Else ReDim Preserve 数组(u-1) '删除一个数组并保留原来数据 End If 搜索元素:在数组中查找特定元素的索引或是否存在该元素。 Dim 数组(100) As Long, i As Long For i = 0 To UBound(数组) If 数组(i) = 99 Then '找到数据,退出循环 Exit For End If Next 排序:将数组中的元素按照一定顺序排列。 数值类型排序 Dim 数组(100) As Long QuickSortLong(数组(), LCase(数组), UBound(数组)) 字符串类型排序 Dim 数组(100) As String QuickSortStr(数组(), LCase(数组), UBound(数组)) 其它类型排序,需要自己写算法了,反正不存在通用的排序 超范围使用数组 超过声明的数组范围,软件将会崩溃 Dim 数组(1) As Long Print 数组(2) ******软件会崩溃***** 当你的软件发生崩溃时,大多数原因,就是数组超范围使用了。
      • 2026年-1月-21日
      • 63 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic代码_数学 2026-1-21
      VisualFreeBasic代码_数学 都是用来参与数学计算的函数,了解函数名和功能即可,有需要就拿来用,不需要也不用死记硬背。 代数函数 函数名 说明 [Int] 返回数值的整数部分 [Fix] 返回一个数字的整数部分,向零舍入 [Sgn] 返回数字的符号部分 [Abs] 计算一个数字的绝对值 [Frac] 返回数字的小数部分 [Exp] 返回 e 的给定数值表示多少次幂。 [Log] 返回给定数字的自然对数 [Sqr] 返回数字的平方根 几何函数 函数名 说明 [Sin] 返回一个角度的正弦 [Asin] 找出数字的反正弦 [Cos] 返回角度的余弦值 [Acos] 取回一个角的反余弦 [Tan] 返回角度的切线 [Atn] 返回数字的反正切 [Atan2] 返回比例的反正切 其它 函数名 说明 [Randomize] 种子随机数发生器 [Rnd] 返回一个随机的 Double 数值,范围在 [0, 1]之间
      • 2026年-1月-21日
      • 57 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic代码_运算符 2026-1-21
      VisualFreeBasic代码_运算符 运算符是用于执行程序代码运算的符号,它们会针对一个或多个操作数进行运算。运算符的种类繁多,包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符等。下面将详细介绍这些运算符的基本概念和用法。 1. 算术运算符 算术运算符用于执行基本的数学运算,包括加(+)、减(-)、乘(*)、除(/)和取模(%)。 加(+):将两个操作数相加。 dim aa as long = 1+2 ,bb as long = 3+4 aa += bb print aa ,aa+bb 减(-):从第一个操作数中减去第二个操作数。 dim aa as long = 1-2 ,bb as long = 3-4 aa -= bb print aa,aa-bb 乘(*):将两个操作数相乘。 dim aa as long = 1*2 ,bb as long = 3*4 aa *= bb print aa,aa*bb 除(/):当两个操作数都是整数时,执行整数除法,结果也是整数,小数部分被丢弃;当操作数中包含浮点数时,执行浮点数除法,结果保留小数部分。 dim aa as long = 1/2 ,bb as long = 3/4 aa /= bb print aa,aa/bb 取模(Mod):返回两个整数相除的余数。注意,负数取模的规则是结果的正负号由第一个操作数的正负号决定。 dim aa as long = 1 mod 2 ,bb as long = 3 mod 4 aa Mod= bb print aa,aa mod bb 次方(^):计算数的指数次方 dim aa as long = 1 ^ 2 ,bb as long = 3 ^ 4 aa ^= bb print aa,aa ^ bb 2. 关系运算符 关系运算符用于比较两个操作数的大小关系,包括大于(>)、小于(<)、等于(=)、不等于(<>)、大于等于(>=)和小于等于(<=)。 这些运算符返回的结果是布尔值(true或false),用于条件判断。 if 11<>22 or 3>6 then ....... aa = 11= 22 '前面等号是 赋值,后面等号是关系运算 3. 逻辑运算符 逻辑运算符用于执行布尔逻辑运算,包括逻辑与(And)、逻辑或(OR)和逻辑非(Not)。 逻辑与(And):当且仅当两个操作数都为真时,结果才为真。 a = 0 : b = 0 :print (a And b) '输出为 0 a = 1 : b = 0 :print (a And b) '输出为 0 a = 0 : b = 1 :print (a And b) '输出为 0 a = 1 : b = 1 :print (a And b) '输出为 1 逻辑或(Or):当至少有一个操作数为真时,结果就为真。 a = 0 : b = 0 :print (a Or b) '输出为 0 a = 1 : b = 0 :print (a Or b) '输出为 1 a = 0 : b = 1 :print (a Or b) '输出为 1 a = 1 : b = 1 :print (a Or b) '输出为 1 逻辑非(Not):将操作数的布尔值取反。 a = 0 : print Not(a) '输出为 1 a = 1 : print Not(a) '输出为 0 逻辑与或(Eqv) a = 0 : b = 0 :print (a Eqv b) '输出为 1 a = 1 : b = 0 :print (a Eqv b) '输出为 0 a = 0 : b = 1 :print (a Eqv b) '输出为 0 a = 1 : b = 1 :print (a Eqv b) '输出为 1 逻辑蕴含(Imp) a = 0 : b = 0 :print (a Imp b) '输出为 1 a = 1 : b = 0 :print (a Imp b) '输出为 0 a = 0 : b = 1 :print (a Imp b) '输出为 1 a = 1 : b = 1 :print (a Imp b) '输出为 1 逻辑异或(Xor) a = 0 : b = 0 :print (a Xor b) '输出为 0 a = 1 : b = 0 :print (a Xor b) '输出为 1 a = 0 : b = 1 :print (a Xor b) '输出为 1 a = 1 : b = 1 :print (a Xor b) '输出为 0 4. 位运算符 位运算符用于对整数类型的二进制位进行操作,包括按位与(And)、按位或(Or)、按位异或(Xor)、按位取反(Not)、左移(Shl)和右移(Shr)。 按位与(And):对两个操作数的每一位执行逻辑与操作,如果两个对应位都是1,则结果位为1,否则为0。 按位或(Or):对两个操作数的每一位执行逻辑或操作,如果两个对应位至少有一个是1,则结果位为1,否则为0。 按位异或(Xor):对两个操作数的每一位执行逻辑异或操作,如果两个对应位不同,则结果位为1,如果相同,则结果位为0。 按位取反(Not):对操作数的每一位执行逻辑取反操作,将1变为0,将0变为1。 左移(Shl):将操作数的二进制位向左移动指定的位数,左边抛弃,右边补0。 右移(Shr):将操作数的二进制位向右移动指定的位数,具体是算数右移还是逻辑右移取决于编译器,算数右移左边用原来的符号位填充,逻辑右移左边用0填充。 5. 赋值运算符 赋值运算符用于将右侧操作数的值赋给左侧的变量,包括简单赋值(=)和复合赋值运算符(如+=、-=、*=、/=等)。 简单赋值(=):将右侧操作数的值赋给左侧的变量。 复合赋值:在赋值的同时进行算术或位运算,如a+=b等价于a=a+b。 6. 条件运算符(三目运算符) 条件运算符是唯一的三元运算符,格式为 aa = iif(条件表达式, 表达式1 , 表达式2) 如果条件表达式的值为真(非零),则整个条件表达式的值为表达式1的值;如果为假(零),则值为表达式2的值。 7. 其他运算符 除了上述运算符外,还有指针运算符(@和*)、求字节数运算符(sizeof)、强制类型转换运算符((类型))等,它们在特定场景下用于执行特定的操作。 运算符的优先级 不同运算符在表达式中的优先级不同,通常按照算术运算符、关系运算符、逻辑运算符的顺序从高到低排列。在复杂的表达式中,可以使用括号()来改变运算符的默认优先级。 操作者 描述 关联性 CAST 类型转换 N/A PROCPTR 程序指针 N/A STRPTR 字符串指针 N/A VARPTR 变量指针 N/A       [] 字符串索引 Left-to-Right [] 指针索引 Left-to-Right () 数组索引 Left-to-Right () 函数调用 Left-to-Right . 成员访问 Left-to-Right -> 指向成员访问 Left-to-Right       @ 的地址 Right-to-Left * 取数据值 Right-to-Left New 赋值内存 Right-to-Left Delete 取消赋值内存 Right-to-Left       ^ 取幂 Left-to-Right       - 求反 Right-to-Left       * 乘 Left-to-Right / 除以 Left-to-Right       \ 整数除法 Left-to-Right       MOD 余数 Left-to-Right       SHL 位左移 Left-to-Right SHR 位右移 Left-to-Right       + 加 Left-to-Right - 减去 Left-to-Right       & 字符串连接 Left-to-Right       Is 运行时类型信息检查 N/A       = 等于 Left-to-Right <> 不平等 Left-to-Right < 少于 Left-to-Right <= 小于或等于 Left-to-Right >= 大于或等于 Left-to-Right > 大于 Left-to-Right       NOT 求位反码 Right-to-Left       AND 位逻辑与 Left-to-Right       OR 位逻辑或 Left-to-Right       EQV 等价 Left-to-Right IMP 意义 Left-to-Right XOR 位异或 Left-to-Right       ANDALSO 短路逻辑与 Left-to-Right ORELSE 短路逻辑或 Left-to-Right       = 赋值 N/A &= 连接和赋值 N/A += 添加和赋值 N/A -= 减去和赋值 N/A *= 乘法和赋值 N/A /= 除以和赋值 N/A \= 整数分割和赋值 N/A ^= 指数和赋值 N/A MOD= 模数和赋值 N/A AND= 连接和赋值 N/A EQV= 等同和赋值 N/A IMP= 含义和赋值 N/A OR= 位或和赋值 N/A XOR= 位异或和赋值 N/A SHL= 向左移动并赋值 N/A SHR= 向右移动并赋值 N/A LET 赋值 N/A       LET() 赋值 N/A 注意事项 在使用运算符时,需要注意操作数的类型和范围,以避免数据溢出或类型不匹配的问题。 逻辑运算符和关系运算符的结果为布尔值,但在FB语言中通常用整数0表示假,非0值表示真。 在编写代码时,应注意运算符的优先级
      • 2026年-1月-21日
      • 61 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • VisualFreeBasic代码_程序执行流程 2026-1-21
      VisualFreeBasic代码_程序执行流程 执行代码时,是从 第1行执行到最后1行,这就是程序,按照顺序执行,而下面的语句可以改变代码执行的位置,才使程序有了灵魂,好像有“智能”一样,虽然这个“智能”是代码设定好的,但也让大家把计算机称为电脑。 if ... Then 条件分支语句 根据条件判断,然后执行相关代码 Dim aa As Long = 100 If aa = 100 Then Print "aa=100" Else Print "aa<>100" End If 如果执行的代码就一行的,我们可以用单行模式 Dim aa As Long = 100 If aa = 100 Then Print "aa=100" Else Print "aa<>100" 还可以多个条件判断 Dim aa As Long = 100 If aa = 100 Then Print "aa=100" ElseIf aa = 50 Then Print "aa=50" ElseIf aa = 60 Then Print "aa=60" Else Print "其它情况" End If 还有多条件判断 Dim aa As Long = 100, bb As Long = 50 If aa = 100 Or bb = 50 Then Print "aa=100 或者 bb=50" If ... Then 之间,属于条件判断,也可以进行逻辑判断,还可以写复杂的表达式 If 123*58+55= 33 And 1/55<>rnd Then **** 其中涉及到的 +-*/ 算术运算符,And Or 等逻辑运算符,请参考运算符篇 多条件选择 Select 某些特殊的多条件,使用 if ... Then 的代码比较麻烦,因此在这个基础上扩展出 Select 语句 'If...Then 的写法 If aa = 1 Then Print 1 ElseIf aa = 2 Then Print 2 ElseIf aa = 3 Then Print 3 Else Print 4 End If 'Select 的写法,和 If...Then 功能相同,但Select人类看代码比较舒服。 Select Case aa Case 1 Print 1 Case 2 Print 2 Case 3 Print 3 Case Else Print 4 End Select 还有特殊写法 Select Case aa Case 1, 3, 4 '多个条件写法 Print 1 Case 2 : Print 2 '单行写法 Case 3 To 10 '范围写法 Print 3 End Select For..Next 范围循环 有些代码,需要重复执行,就会用到循环语句 Dim i As Long For i = 1 To 10 '表示 i 从 1 开始 ,循环到 10 ,i 值每循环1次增加 1 Print i '循环执行的代码 Next 循环还可以指定每次增加的量 Dim i As Long For i = 1 To 10 Step 2 '表示 i 从 1 开始 ,循环到 10 ,i 值每循环1次增加 2 Print i '循环执行的代码 Next 结果:1,3,5,7,9 还可以从大到小循环 Dim i As Long For i = 10 To 1 Step -1 '从10开始,循环到1,每次 -1 Print i Next 循环变量,可以直接写在循环语句里,不需要Dim 定义 For i As Long = 10 To 1 Step -1 Print i Next 有时候需要根据条件,直接退出循环 For i As Long = 10 To 1 Step -1 If i = 5 Then Exit For '条件成立,跳出循环,跳到 Next 的下一行执行 Print i Next 假如有多循环嵌套,退出循环还可以跳出N层循环 For y As Long = 1 To 5 For x As Long = 1 To 3 If x = 3 And y = 3 Then Exit For, For '条件成立,跳出多层嵌套循环 Print x,y Next Next 有时候,还可以根据条件,直接进入下一个循环 For i As Long = 10 To 1 Step -1 If i = 5 Then Continue For '条件成立,跳到循环头 For 执行 Print i Next Do..Loop 无限循环 这是无限循环,循环到天荒地老,表现为软件无反应,CPU占用高 Dim i as long Do i += 1 '无限执行到天荒地老 Loop 因此,我们必须搞个条件,达到条件退出循环,但你必须要预计到,条件肯定有成立的时候,不然永不成立,就变成无限循环了,执行到天荒地老 Dim i As Long Do i += 1 If i > 100 Then Exit Do '超过100就退出 Loop 条件可以直接和 Do 结合,条件成立退出循环 Dim i As Long Do Until i>10 '条件成立就10退出循环 i += 1 Loop 条件可以直接和 Do 结合,条件成立,执行循环,条件不成立,退出循环 Dim i As Long Do While i < 10 '条件成立执行循环,条件不成立退出循环 i += 1 Print i Loop 以上是先判断条件,还有和 Loop 结合,先循环后条件。 Dim i As Long Do i += 1 Loop Until i > 10 '条件成立退出循环 Do i += 1 Loop While i < 10 '条件成立执行循环,条件不成立退出循环 本循环,也有跳过本循环语句 Dim i As Long Do i += 1 If i=5 Then Continue Do '跳到DO头执行 Loop Until i > 10 '条件成立退出循环 还有,多嵌套DO循环时,退出N个 DO 循环 Dim i As Long Do Do Do i += 1 If i = 5 Then Exit Do, Do, Do '跳到多个do循环 Loop loop Loop While..Wend 条件循环 本循环和 Do While 语句一样功能,看自己喜欢用什么语句就用什么 Dim i As Long While i < 5 i+=1 Wend 当然该循环也有退出循环和跳到循环头的语句 Exit While '退出循环 Continue While '跳到循环头 子程序 当代码越写越多,就会让整体代码越难阅读和管理,我们需要有章有节,那样条理分明。 编程中的子程序(Subroutine)或函数(Function)是编程中非常重要的一部分,它们帮助你将代码分割成可管理、可重用的部分。这不仅能提高代码的可读性,还能减少代码冗余,使得程序更容易维护和修改。下面我将通过一些基本的概念和示例来介绍子程序的概念和使用。 1. 子程序的基本概念 函数(Function):一个具有特定功能的代码块,可以接收输入参数,执行一系列操作,并返回一个值给调用者。 子程序(Subroutine)或过程(Procedure):与函数类似,但它不返回任何值给调用者。主要用于执行一系列操作。 2. 为什么要使用子程序 模块化:将复杂的问题分解为较小的、易于管理的部分。 重用性:避免重复编写相同的代码。 可读性:使得代码更易于理解和维护。 易于调试:当出现问题时,可以更容易地定位到特定的子程序。 3. 编写子程序的基本步骤 3.1 定义子程序 函数:通常包括返回类型、函数名、参数列表(可选)和函数体。 子程序:包括子程序名、参数列表(可选)和子程序体。 3.2 编写子程序体 在子程序体内,你可以编写执行特定任务的代码。对于函数,你需要确保最后有一个返回语句,以返回适当类型的值。 3.3 调用子程序 在程序的其他部分,你可以通过指定子程序名(和必要的参数)来调用它。 4. 示例 Sub 我的子程序() ’ 这是子程序头 Print "执行子程序" End Sub '这是子程序尾 我的子程序() ‘ 直接写 子程序的名称来调用执行子程序 子程序可以设置参数,我们调用时传递参数给子程序 Sub 我的子程序(参数1 As Long ) Print "执行子程序",参数1 End Sub 我的子程序(99) 子程序可以提前结束,用 Return 直接返回 Sub 我的子程序(参数1 As Long) If 参数1 = 99 Then Return Print "执行子程序", 参数1 End Sub 我的子程序(99) 当子程序要返回数据时,就称为“函数”,和普通子程序不同于,它会返回数据 Function 我的子程序函数() As Long Return 10 End Function Print 我的子程序函数() 下面我们写一个加法函数 Function 我的加法函数(aa As Long ,bb As Long ) As Long Return aa+bb End Function Print 我的加法函数(5,10) 当传递的参数,在子程序中被修改,影响到调用者 Sub 我的子程序(数值参数 As Long,文字参数 As String ) 数值参数 = 100 文字参数 ="1111" End Sub Dim aa As Long=11, bb As String ="内容" 我的子程序(aa, bb) Print aa,bb '打印后会发现,数值内容没变,文字内容变了, 当你需要明确,修改变量后不影响调用的变量,和一定要影响 ByRef 影响调用者 ByVal 不影响调用者 Sub 我的子程序(ByRef 数值参数 As Long,ByVal 文字参数 As String ) 数值参数 = 100 文字参数 ="1111" End Sub Dim aa As Long=11, bb As String ="内容" 我的子程序(aa, bb) Print aa,bb 传递数组时,必须写上 () 来表示数组,数组必然影响调用者,无法使用不影响的 Sub 我的子程序(数组参数() As Long) Print 数组参数(0) End Sub Dim aa(100) As Long 数组参数(0)=99 我的子程序(aa())
      • 2026年-1月-21日
      • 66 阅读
      • 0 评论
      VisualFreeBasic编程文档
    • 20
    • 21
    • 22
    • 23
    • 24
    博主栏壁纸
    博主头像 勇芳

    330 文章数
    0 评论量
    • QQ游戏大厅多开版_旧版_2012到2025版
    • 使用Sandboxie沙盒多开QQ游戏大厅
    • Sandboxie沙盒(隔离软件)
    人生倒计时
    最新评论
    链接
    • 公益·寻亲,让爱回家
    • Visual Basic6 语言和控件手册
    • CWindow类库帮助FreeBasic版
    • FreeBASIC 帮助文档中文版
    • Windows GDI 编程手册
    • Windows GDI+ 编程手册
    • SQLite3数据库API手册
    • WebBrowser控件编程手册
    • Win32API参考手册
    • Windows 编程宝典
    • WinHttp参考资料
    • WMI编程手册
    • VisualFreeBasic编程文档
    舔狗日记
    载入天数...载入时分秒...

    © 2025 勇芳软件工作室 版权所有

    ICP备案图标 浙ICP备11006222号-1 | 公安备案图标 33100402331731号

    powered by emlog 浙ICP备11006222号-1