论坛的首页
勇芳的软件
教程和帮助
VisualFreeBasic编程文档
勇芳系列软件帮助说明教程
留言或交流
登录
搜索
登录
搜索
勇芳
累计撰写
330
篇文章
累计收到
0
条评论
首页
栏目
论坛的首页
勇芳的软件
教程和帮助
VisualFreeBasic编程文档
勇芳系列软件帮助说明教程
留言或交流
登录
自定义幻灯片
最新文章
2026-1-21
VisualFreeBasic代码_变量指针
普通变量类型指针 以Long类型做例题,其它类型用法相同 Dim 变量 As Long Dim 指针 As Long Ptr '指针指向实体变量 指针 = @变量 '使用变量,在指针前面加 "*" 那和普通变量无区别使用 '此时 “*指针” 和 “变量” 是同一个变量 *指针 = 1 Print 变量 变量 = 2 Print *指针 数组变量指针 Dim 数组变量(100) As Long Dim 指针 As Long Ptr '指针指向实体变量 指针 = @变量(0) '此时 “*指针[n]” 和 “变量(n)” 是同一个变量 指针[0] = 1 Print 变量(0) 变量(3) = 3 Print 指针[3] 用户定义类型变量指针 Type 用户类型 aa As Long bb as long End Type Dim 变量 As 用户类型 Dim 指针 As 用户类型 Ptr '指针指向实体变量 指针 = @变量 '此时 “指针->” 和 “变量.” 是同一个变量 指针->aa = 1 Print 变量.aa 变量.bb = 3 Print 指针->bb 构造变量指针 向操作系统申请内存,然后构造出一个变量实体(和真实变量声明一样,构造出后,会初始化操作,数值会默认0,字符为空),但这变量实体并没有变量名,构造出的变量实体,不使用后,需要自己写代码销毁。 构造普通变量 Dim 指针 As Long Ptr =New Long *指针 = 1 Print *指针 Delete 指针 '销毁构造变量,不销毁会内存泄漏 “销毁” 这词是不恰当的,但是我习惯用这个词汇,也有地方我写的教程,写“释放”,是同一个意思,这个意思就是向操作系统申请来内存使用,用后交还给操作系统管理,不然谁都用了不还,系统内存没得用了。“销毁”意思是把这个指针销毁了,后面代码就无法使用此指针,一用软件就崩溃。 构造数组变量 Dim 指针 As Long Ptr =New Long[100] 指针[1] = 1 Print 指针[1] Delete[] 指针 '销毁构造的数组变量,不销毁会内存泄漏 构造用户类型 Type 用户类型 aa As Long bb As Long End Type Dim 指针 As 用户类型 Ptr = New 用户类型 指针->aa = 1 Print 变量->aa Delete 指针 '销毁构造变量,不销毁会内存泄漏 申请内存用于指针 普通变量 Dim 指针 As Long Ptr =CAllocate(SizeOf(Long)) *指针 = 1 Print *指针 Deallocate 指针 '销毁内存,不销毁会内存泄漏 数组变量 Dim 指针 As Long Ptr =CAllocate(SizeOf(Long)*100) 指针[1] = 1 Print 指针[1] Deallocate 指针 '销毁内存,不销毁会内存泄漏 用户类型 Type 用户类型 aa As Long bb As Long End Type Dim 指针 As 用户类型 Ptr =CAllocate(SizeOf(用户类型)) 指针->aa = 1 Print 变量->aa Deallocate 指针 '销毁内存,不销毁会内存泄漏 指针的指针,多级指针 过于烧脑,功力没到,就不要使用。 Dim 变量 As Long Dim 指针1级 As Long Ptr Dim 指针2级 As Long Ptr Ptr Dim 指针3级 As Long Ptr Ptr Ptr '....套娃模式,不知道能套多少级.... 指针1级 = @变量 指针2级 = @指针1级 指针3级 = @指针2级 变量 = 1 Print *指针1级,**指针2级 ,**指针3级 *指针1级 = 2 **指针2级 = 3 ***指针3级 = 4 不知道类型的指针 有些指针,我们并不知道是什么类型,就知道这个是个指针 Dim 未知指针 As Any Ptr 未知指针 = CAllocate(100) Deallocate 未知指针 未知指针,指定为某类型指针使用 Dim 未知指针 As Any Ptr 未知指针 = CAllocate(100) *CPtr(Long Ptr, 未知指针) = 100 Print *CPtr(Long Ptr, 未知指针) Deallocate 未知指针 当然,其它指针也可以转自己需要的类型指针使用 Dim 变量 As Single =100 Dim 指针 As Single Ptr =@变量 Dim 未知指针 As Any Ptr =@变量 Print *CPtr(Long Ptr, 指针), *CPtr(Long Ptr, 未知指针)
2026年-1月-21日
49 阅读
0 评论
VisualFreeBasic编程文档
2026-1-21
VisualFreeBasic代码_指针
指针是编程中一个非常基础且重要的概念。指针是一个变量,其存储的是另一个变量的内存地址,而不是数据本身。通过指针,程序可以直接访问和操作内存中的数据。 指针的基本概念 内存地址:在计算机内存中,每个字节都有一个唯一的编号,这个编号就是该字节的内存地址。 指针变量:指针变量是一种特殊的变量,它存储的是另一个变量的内存地址。 解引用:通过指针访问其所指向的内存地址中的数据的过程称为解引用。 指针的作用 直接访问内存:指针允许程序直接访问和操作内存中的数据,这在进行底层编程和系统级编程时非常有用。 动态内存分配:指针经常用于动态内存分配(如使用malloc和new操作符),以在运行时分配内存空间。 数组和字符串操作:数组名本质上是指向数组首元素的指针,字符串也通常以字符数组的形式存储,并通过指针操作。 函数参数传递:通过指针,函数可以接收和返回数据结构的引用,而不仅仅是数据的副本。 链表和树等数据结构:在链表、树等复杂数据结构的实现中,指针用于建立节点之间的连接。 指针的注意事项 野指针:未初始化的指针或已被释放的内存的指针被称为野指针,它们可能导致程序崩溃或安全漏洞。 内存泄漏:如果动态分配的内存没有被正确释放,就会导致内存泄漏,影响程序的性能和稳定性。 越界访问:指针访问其指向的内存区域之外的数据是未定义行为,可能导致程序崩溃或数据损坏。 指针用法 指针分为两大类,1:变量指针 2:函数指针 。用法不同,分开来说。 使用指针时,因为指针是指向别的变量或函数,因此必须一个实体变量或函数,不然一用指针软件就崩溃。 1.变量指针 每一个变量类型,都有指针,就是变量类型后面加一个 Ptr Dim 变量 As Long Dim 指针 As Long Ptr 使用: 指针 = @变量 ‘指针指向实体变量 Print *指针 '使用变量,在指针前面加 "*" 那和普通变量无区别使用 2.函数指针 Dim 过程指针 As Sub(aa As Long, bb As Long) Dim 函数指针 As Function(aa As Long, bb As Long) As Long 函数实体 Sub 过程实体(aa As Long, bb As Long) End Sub Function 函数实体(aa As Long, bb As Long) As Long End Function 指针绑定实体 过程指针=@过程实体 函数指针=@函数实体 调用函数,和普通函数使用一样 过程指针(11,22) 返回=函数指针(11,22) 指针的优点 如同葵花宝典一样的神功,用好了天下无敌,用不好伤身伤神。 直接访问内存:指针允许程序员直接访问和操作内存地址,这提供了对程序内存的直接控制。这种直接性可以带来性能上的优势,特别是在需要高效处理大量数据或需要直接与硬件交互的场合。 动态内存管理:通过指针,可以动态地在堆上分配和释放内存,这在处理大小不确定的数据结构时非常有用。相比于栈上的自动分配,动态内存分配提供了更大的灵活性和可扩展性。 函数参数传递:默认情况下,函数参数是通过值传递的。这意味着在函数内部对参数的修改不会影响到原始数据。然而,通过传递指针,可以实现对原始数据的直接修改,这在需要函数输出多个值或修改传入参数时非常有用。 数据结构:指针是实现链表、树、图等复杂数据结构的关键。这些数据结构中的节点通常通过指针相互连接,以形成所需的逻辑结构。 提高代码效率:在某些情况下,使用指针可以减少数据复制的开销,因为可以直接操作数据的内存地址而不是数据的副本。 指针的缺点 非指针方法能写的代码,就不要用指针的方法写,尽量减少指针用法。 复杂性:指针的使用增加了编程的复杂性。程序员需要小心管理指针的生命周期和指向的内存,以避免内存泄漏、野指针和空指针解引用等错误。 安全性问题:指针直接操作内存地址,这可能导致安全漏洞。例如,缓冲区溢出、指针越界等错误可以被恶意利用来执行未授权的代码或访问敏感数据。 可移植性问题:指针的大小和布局可能因编译器和操作系统的不同而有所差异。这可能导致在不同平台上编写的代码无法直接移植或需要额外的适配工作。 可读性:对于不熟悉指针的程序员来说,使用指针的代码可能难以理解和维护。指针的间接性和灵活性可能导致代码逻辑变得复杂和难以追踪。 调试难度:由于指针可以指向任意内存地址,并且可能由于各种原因(如内存损坏、野指针等)而指向无效地址,因此使用指针的程序在调试时可能更加困难。
2026年-1月-21日
49 阅读
0 评论
VisualFreeBasic编程文档
2026-1-21
VisualFreeBasic代码_多线程
当开启一个软件后,系统分配给一个线程给软件执行,就是说,你的软件只是执行一个程序。然后有多线程,在同一时间,可以同时执行多个程序。 创建一个多线程 执行多线程,FB语言中,有2种创建方法。 指针方式,稳定高效,推荐使用 多线程过程,和普通过程一样,但过程参数必须是1个,而且是指针。 Threaddetach ThreadCreate(Cast(Any Ptr,@多线程过程),Cast(any ptr,参数)) Sub 多线程过程(参数 As Any Ptr) ......这里是代码.....过程结束,那么这个线程就结束 End Sub 调用方式,支持多个参数,0个或n个参数。 Threaddetach Threadcall 多线程过程(11,22,33) Sub 多线程过程(参数1 As Long,参数2 As Long ,参数3 As Long ) '......这里是代码.....过程结束,那么这个线程就结束 End Sub 注意: 调用多线程的参数,必须传值给它,要是传变量给它,因为调用方的函数结束,变量会被释放,造成多线程使用这个变量发生错误,甚至软件崩溃。因为它们是同时执行的。 等待多线程完成 创建多线程后,返回一个多线程句柄 Dim aa As Any Ptr =ThreadCreate(Cast(Any Ptr,@多线程过程),参数) Dim aa As Any Ptr =Threadcall 多线程过程(参数) 假如你不需要控制多线程,可以直接释放句柄,不释放就会产生内存泄漏。 Threaddetach aa 等待线程完成执行并释放线程句柄(会一直等待多线程完成才会返回,这和单线程有何区别?不是我们想要的方式) ThreadWait aa 循环判断多线程是否完成 While IsThreadAlive( *aa) DoEventsEX(100) Wend Threaddetach aa 多线程使用全局变量 假如有多个线程,同时对全局变量赋值或读取,将会造成不同步现象,特别是字符串,可能会造成软件崩溃。下面语句是专门为了解决这个问题的。 MutexLock 获取互斥体 MutexUnlock 释放互斥锁 MutexDestroy 销毁互斥 MutexCreate 创建用于同步线程执行的互斥体 声明一个全局变量 Dim Shared 多线程锁 As Any Ptr = MutexCreate() 在不需要使用后,需要销毁,避免内存泄漏 MutexDestroy 多线程锁 多线程中在需要读写全局内存 MutexLock 多线程锁 ...... 一些读写全局内存 ......... MutexUnlock 多线程锁 注意: “多线程锁”同一时间只能一个线程执行,其它的线程挂起,暂停执行。 过于频繁使用“多线程锁”,严重影响多线程执行效率,还不如单线程效率高。因此在设计多线程的程序框架时,必须考虑效率问题。 多线程中窗口问题 当在多线程中,启动了一个窗口,当多线程过程结束,窗口会被强制关闭,因此在多线程中,请勿启动窗口,会发生很多问题。 Form2.Show 多线程中请勿执行启动窗口 一定要启动窗口,可以对主窗口发自定义消息,实现在主线程中启动窗口。 PostMessage( form1.hWnd ,WM_USER+ &H1001 , 0 , 0 ) 然后在主窗口的自定义消息事件中 Function Form1_Custom(hWndForm As hWnd, wMsg As UInteger, wParam As wParam, lParam As lParam) As LResult Select Case wMsg Case WM_USER+ &H1001 Form2.Show End Select Function = FALSE ' 若不想系统继续处理此消息,则应返回 TRUE (俗称吃掉消息)。 End Function 控件属性,虽然大多数支持在多线程中设置,但是有小部分一些特殊的,不支持多线程操作。 为了绝对的安全,一般不建议在多线程中,设置控件属性。可以想象,有多个线程同时设置控件属性会发生什么事情?很难预料。
2026年-1月-21日
50 阅读
0 评论
VisualFreeBasic编程文档
2026-1-21
VisualFreeBasic代码_日期和时间
Now 获取当前系统时间为日期序列号 Dim a As Double = Now() Print Format(a, "yyyy-mm-dd hh:mm:ss") Date 以字符串形式返回当前系统日期 Print Date '打印当前日期 Time 以字符串形式返回当前系统时间 Print "目前的时间是:"; Time Timer 返回电脑开机时间,单位秒 Print "电脑开机了:" & Timer & "秒" SetDate 设置当前的系统日期 SetDate “2099-1-1” SetTime 设置当前系统时间 SetDate “1:2:3” 从日期序列中提取信息 Year 从日期序列号获得一年 Month 从日期序列号获得一年中的月份 Weekday 从日期序列号获取星期几 Day 从日期序列号获取一个月的日子 Hour 从日期序列号获取一天中的小时 Minute 从日期序列号获取分钟。 Second 从日期序列号获取秒数 DatePart 从日期序列获取日期的单独部分,比如年、月、日等 创建日期序列 DateValue 从字符串返回日期序列号 TimeSerial 获取日期序列号指定的小时、分钟、和秒 DateSerial 创建日期序列号 TimeValue 从时间字符串获取日期序列号 计算日期时间差 DateAdd 以指定的间隔偏移日期 Dim d As Double d = Now() Print "1小时后时间", Format( DateAdd( "h", 1, d ), "yyyy-mm-dd hh:mm:ss") Print "1天后时间", Format( DateAdd( "d", 1, d ), "yyyy-mm-dd hh:mm:ss") Print "1周后时间", Format( DateAdd( "ww", 1, d ), "yyyy-mm-dd hh:mm:ss") Print "1个月后时间", Format( DateAdd( "m", 1, d ), "yyyy-mm-dd hh:mm:ss") DateDiff 获取以指定间隔测量的两个日期的差额 Dim ds As Double = DateSerial(2005, 11, 28) + TimeSerial(7, 30, 50) Dim ts As Double = DateSerial(2006, 1, 3) + TimeSerial(9, 10, 33) Print "2个日期相差:" & DateDiff("YYYY", ds, ts) & "年" Print "2个日期相差:" & DateDiff("d", ds, ts) & "天" Print "2个日期相差:" & DateDiff("s", ds, ts) & "秒"
2026年-1月-21日
55 阅读
0 评论
VisualFreeBasic编程文档
2026-1-21
VisualFreeBasic代码_数值转换为字符串
Bin 返回一个整数的二进制,字符串表示形式 Print Bin(54321) Print Bin(54321, 5) Print Bin(54321, 20) 将产生输出: 1101010000110001 10001 00001101010000110001 Oct 将数字转换为八进制,字符串表示形式 Print Oct(54321) Print Oct(54321, 4) Print Oct(54321, 8) 将产生输出: 152061 2061 00152061 Hex 将数字转换为十六进制,字符串表示形式 Print Hex(54321) Print Hex(54321, 2) Print Hex(54321, 5) 将产生输出: D431 31 0D431 Str 返回一个文本类型的数值或 Unicode 字符的文本 Dim a As Integer Dim b As String a = 8421 b = Str(a) Print a, b WStr 返回数字或ASCII字符串的宽字符字符串表示形式 Dim zs As ZString * 20 Dim ws As WString * 20 zs = "你好,世界" ws = WStr(zs) Print ws Format 格式化指定格式的数字,返回 字符串 数字格式 Print Format(99100.123456, "#,##0.##") 输出:99,100.12 print format(12, "0000") 输出:0012 日期时间格式 Format(Now, "yyyy年mm月dd日 hh时mm分ss秒") 输出:2024年09月01日 01时01分01秒 WBin 返回一个数字的二进制WString(Unicode)表示 WOct 返回一个数字的八进制WString(Unicode)表示 WHex 返回一个数字的十六进制WString(Unicode)表示
2026年-1月-21日
41 阅读
0 评论
VisualFreeBasic编程文档
2026-1-21
VisualFreeBasic代码_数值数据序列
MKShort 从Short变量转换成String的二进制数据,将其长度为2字节 Dim a As Short, b As String a = 4534 b = MKShort(a) Print a, CVShort(b) MKL 从Long变量转换成String的二进制数据,将其长度为4字节 Dim a As Long, b As String a = 4534 b = MKL(a) Print a, CVL(b) MKI 从整数变量到与输入变量的大小相同长度的String的二进制复制 32位软件是 4字节,64位软件是8字节 Dim a As Integer, b As String a=4534 b=MKI(a) Print a, CVI(b) MKLongInt 从LongInt变量转换成String的二进制数据,将其长度为8字节 Dim a As LongInt, b As String a = 4534 b = MKLongInt(a) Print a, CVLongInt(b) MKS 从Single变量转换成String的二进制数据,将其长度为4字节 Dim n As Single, e As String n = 1.2345 e = MKS(n) Print n, CVS(e) MKD 将Double变量转换成String的二进制数据,将其长度为8字节 Dim n As Double, e As String n = 1.2345 e = MKD(n) Print n, CVD(e) CVShort 将一个2个字节String转换为Short整数变量 Dim si As Short, s As String s = "AB" si = CVShort(s) CVL 将Single数或4个字节String转换为整数(Long)变量 Dim l As Long, s As String s = "ABCD" l = CVL(s) CVI 转换成整数,32位软件和64位软件不相同。 Dim i As Integer, s As String s = "ABCD" i = CVI(s) CVLongInt 将Double数或8个字节String转换为LongInt变量 Dim ll As LongInt, s As String s = "ABCDEFGH" ll = CVLongInt(ll) CVS 将32位整数或4个字节String转换为Single变量 Dim f As Single, i As Integer f = 1.125 i = CVI(f) CVD 将64位整数或8个字节String转换为Double Dim d As Double, l As LongInt d = 1.125 l = CVLongInt(d) Print Using "l = _&H&"; Hex(l) Print Using "cvd(i)= &"; CVD(l)
2026年-1月-21日
57 阅读
0 评论
VisualFreeBasic编程文档
2026-1-21
VisualFreeBasic代码_操作字符串部分文本
LCase 返回字符串的小写副本 Print LCase("AbCdEfG") 输出:abcdefg UCase 返回字符串的大写副本 Print UCase("AbCdEfG") 将产生输出:ABCDEFG InStr 查找字符串中第一个出现的子字符串或字符 从第1个字符查到最后1个字符 '它会返回4 Print InStr("abcdefg", "de") '它将返回0 Print InStr("ABCDEFG", "h") '它将搜索任何字符“f”,“b”,“c”,并返回2,首先遇到“b” Print InStr("ABCDEFG", Any "FBCen") InStrRev 查找字符串中子字符串或字符的最后一次出现 从最后1个字符反向查到第1个字符 '它会返回4 Print InStrRev("ABCdeFG", "de") '它将返回0 Print InStrRev("ABCDEFG", "h") Left 返回字符串的最左边的子串 Dim text As String = "你好,世界" Print Left(text, 4) 将产生输出:你好 Dim text As wString *20 = "你好,世界" Print Left(text, 4) 将产生输出:你好,世 Right 返回字符串的最右边的子串 Dim text As String = "你好,世界" Print Right(text, 4) 将产生输出: 世界 Dim text as wstring * 20="你好,世界" Print Right(text,4) '显示“好,世界” Mid (函数) 返回字符串的子字符串 Print Mid("ABCDEFG", 3, 2) '从第3个字符开始,返回2个字符 Print Mid("ABCDEFG", 3) '从第3个字符开始,一直到最后的字符 将产生输出: CD CDEFG Mid (语句)用另一个字符串覆盖一个字符串的子字符串 Dim text As String text = "abc 123" Print text '显示“abc 123” '用另一个字符串替换文本的一部分 Mid(text, 5, 3) = "456" Print text '显示“abc 456” LSet 左对齐字符串 Dim buffer As String buffer = Space(10) LSet buffer, "91.5" Print "-[" & buffer & "]-" RSet 右对齐字符串 Dim buffer As String buffer = Space(10) RSet buffer, "91.5" Print "-[" & buffer & "]-" Trim 删除字符串左侧和右侧的周围的子字符串或字符 删除前后空格字符 Dim s1 As String = " 卡在中间 " Print Trim(s1) '得到一个前后没空格的字符 删除前后指定字符 Dim s1 As String = "...卡在中间 ..." Print "'" + Trim(s1, Any ".") + "'" Dim s2 As String = "BaaBaaaaB随着你aaBBaaBaa" Print "'" + Trim(s2, "Ba") + "'" Print "'" + Trim(s2, Any "aB") + "'" LTrim 删除一个文本左边连续的子文本或字符 删除前面空格字符 Dim s1 As String = " 卡在中间 " Print LTrim(s1) '无前面空格的字符 删除指定字符 Dim s1 As String = "101事情要做" Print "'" + LTrim(s1) + "'" Print "'" + LTrim(s1, "01") + "'" Print "'" + LTrim(s1, Any "01") + "'" RTrim 删除字符串右侧的周围的子字符串或字符 删除后面空格字符 Dim s1 As String = " 卡在中间 " Print RTrim(s1) '无后面空格的字符 删除指定字符 Dim s1 As String = "文字10101" Print "'" + RTrim(s1) + "'" Print "'" + RTrim(s1, "01") + "'" Print "'" + RTrim(s1, Any "10") + "'"
2026年-1月-21日
54 阅读
0 评论
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编程文档
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编程文档
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编程文档
20
21
22
23
24