论坛的首页
勇芳的软件
教程和帮助
VisualFreeBasic编程文档
勇芳系列软件帮助说明教程
留言或交流
登录
搜索
登录
搜索
勇芳
累计撰写
330
篇文章
累计收到
0
条评论
首页
栏目
论坛的首页
勇芳的软件
教程和帮助
VisualFreeBasic编程文档
勇芳系列软件帮助说明教程
留言或交流
登录
VisualFreeBasic编程文档
2026-1-21
VisualFreeBasic代码_算法
算法是编程中非常重要的一部分,它是一系列解决问题的明确指令,这些指令能够被计算机理解并执行。算法不仅帮助程序员高效地解决问题,还是计算机科学和软件工程领域的基础。下面,我将通过一个简单的算法教程来介绍算法的基本概念、设计步骤以及一些常见的算法示例。 算法的基本概念 输入:算法接收的初始数据。 输出:算法经过处理后的结果。 确定性:算法的每个步骤都必须明确定义,无歧义。 有限性:算法必须在有限步骤内完成。 可行性:算法的每个步骤都必须是可行的,即能在一定的时间内完成。 算法设计步骤 问题定义:明确问题的输入和输出,以及需要解决的问题。 数据结构设计:设计适合问题的数据结构,如数组、链表、树、图等。 算法设计: 选择算法策略:如贪心算法、分治法、动态规划、回溯法等。 设计算法步骤:详细列出算法的执行步骤。 算法实现:用编程语言实现算法。 测试:通过不同的输入数据测试算法的正确性和效率。 优化:如果算法效率不高,尝试优化算法以提高性能。 常见的算法示例 1. 冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复进行的,直到没有再需要交换的元素为止。 Sub 冒泡排序(数组() As Long) Dim u As Long = UBound(数组) '数组下标 Dim l As Long = LBound(数组) '数组上标 If u = -1 Then Return '数组没初始化 If u - l < 1 Then Return '只有一个 Dim i As Long, j As Long For i = l To u -1 For j = i To u -1 If 数组(j) > 数组(j + 1) Then Swap 数组(j), 数组(j + 1) '把数字比较大的,向后移动,产生从小到大排序。 Next Next End Sub 2. 快速排序(Quick Sort) 快速排序是一种分而治之的算法。它选择一个“基准”元素,通过一趟排序将待排记录分隔成独立的两部分,其中一部分的所有记录均比另一部分的所有记录小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。 VFB内置算法 Base64_Decode Base64解码 Base64_Encode Base64编码 CRC32Encode CRC值 (不支持64位,因为没64位库) LzmaDecode LZMA 解码,解压缩 LzmaEncode LZMA 编码,压缩 MD5 Function MD5_FromFile(filename As String) As String RC4 RC4 加密解密(调用它一次加密,再次用相同的密钥来解密) SHA1 SHA1算法 SHA256 SHA256算法 LzmaEncodeStr 压缩字符串,此字符串指的是任意数据,而不是纯粹的文本 LzmaDecodeStr 解压字符串,此字符串指的是任意数据,而不是纯粹的文本 zUnCompress z解压,返回解压后的字符串,不是压缩字符串或其它错误,返回空,此字符串指的是任意数据,而不是纯粹的文本 zCompress2 z压缩,返回被压缩后的字符串,此字符串指的是任意数据,而不是纯粹的文本 Crc32Str 计算源字符串32位校验和,此字符串指的是任意数据,而不是纯粹的文本 Adler32Str 计算源字符串Adler的32位校验和,计算速度比CRC要快得多,此字符串指的是任意数据,而不是纯粹的文本 FileZip 压缩文件为ZIP(注:不支持火星文的文件名) FileUnZip 解压zip文件(注:不支持火星文的文件名) LzmaComprString 压缩字符串,level是压缩级别,0--9,此字符串指的是任意数据,而不是纯粹的文本 LzmaUnComprString 解压由LzmaComprString压缩的数据,此字符串指的是任意数据,而不是纯粹的文本,必须配套使用。 zCompress z压缩,返回被压缩后的字符串,此字符串指的是任意数据,而不是纯粹的文本
2026年-1月-21日
42 阅读
0 评论
VisualFreeBasic编程文档
2026-1-21
VisualFreeBasic代码_内置绘图库
FreeBasic语言 内置的图形处理语句,只支持控制台,且不支持中文,更加不能用于 WIn系统的窗口,但国外FB网站有很多用此编写的游戏例题,都是用此方式编写。 我们写的软件,都是窗口和控件,因此无法使用内置图形语句绘画。 那我们绘画,使用其它方法。 注意:已经被弃用
2026年-1月-21日
65 阅读
0 评论
VisualFreeBasic编程文档
2026-1-21
VisualFreeBasic代码_函数指针
函数指针基础用法 函数指针定义的参数必须和实体函数参数一样,如果有错,调用函数就软件崩溃 声明指针 ---------------- 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) 动态加载DLL,使用DLL中函数 函数指针定义的参数必须和DLL中一样,如果有错,调用函数就软件崩溃 Dim DLL模块句柄 As Any Ptr = DyLibLoad("DLL文件.dll") If DLL模块句柄 Then Dim DLL函数指针 As Function(aa As Long, bb As Long) As Long DLL函数指针 = DyLibSymbol(DLL模块句柄, "函数名") If DLL函数指针 Then Dim 返回 As Long = DLL函数指针(11, 22) End If End If 执行内存中的汇编 为了安全考虑,WIn服务器版系统,不允许执行变量区内存执行代码,因此下面代码一调用就崩溃,需要你自己用API申请内存为执行代码属性的内存,才可以,汇编都会写,这申请内存的事情应该也会办,不会的就网上搜索吧。 Dim 函数指针 As Function(aa As Long, bb As Long) As Long 函数指针 = CAllocate(500) ''''在内存中写入汇编代码 ‘’‘’‘’‘’ Dim 返回 As Long = DLL函数指针(11, 22) 当然,你只要知道内存中函数地址在那里,都可以随意去
2026年-1月-21日
54 阅读
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编程文档
19
20
21
22
23