论坛的首页
勇芳的软件
教程和帮助
VisualFreeBasic编程文档
勇芳系列软件帮助说明教程
留言或交流
登录
搜索
登录
搜索
勇芳
累计撰写
330
篇文章
累计收到
0
条评论
首页
栏目
论坛的首页
勇芳的软件
教程和帮助
VisualFreeBasic编程文档
勇芳系列软件帮助说明教程
留言或交流
登录
包含标签 【编程】 的文章
2026-1-21
VisualFreeBasic代码_其它系统相关函数
函数 功能 [CpuID] 获取 CpuID [WindowMessagePass] 设置低权限软件向自己进程窗口发送消息。 [Cpu_Info] Case 0 'CPU个数 [CPU_UseRate] 获取CPU使用率 [DwmIsEnabled] 获取系统是否启动 Aero ,从Windows 8开始,始终启用DWM [FF_ClipboardGetText] 从 Windows 剪贴板中检索文本字符串。 [FF_ClipboardSetText] 存储到 Windows 剪贴板中的文本字符串。 [GetSys_Bits] 获取系统位数 [IsVista] 是不是VISTA 或以上 [Mem_Info] 内存的相关信息 [PowerOff] 关闭计算机 [WinErrorMsg] WinErrorMsg(GetLastError) '显示API错误 [WriteClipboard] 写入剪切板 [GetTickCount] 获取开机时间 AfxClearClipboard 清除剪贴板的内容. AfxGetClipboardData 以指定格式从剪贴板检索数据。 AfxGetClipboardText 从剪贴板返回文本字符串。 AfxComCtlVersion 返回commctl32.dll版本 AfxGetUserName 检索与当前线程相关联的用户的名称。 AfxGetWinErrMsg 检索指定的Windows错误代码的本地化描述。 AfxIsDPIResolutionAtLeast 确定屏幕分辨率是否满足相对像素的最低要求, AfxIsPlatformNT 如果Windows平台为NT,则返回TRUE;假,否则。 AfxIsSystemFile 如果指定的路径是系统文件,则返回True;如果不是,则为假。 AfxGetComputerName 检索本地计算机的NetBIOS名称。系统从系统启动时,系统从注册表读取该名称。
2026年-1月-21日
58 阅读
0 评论
VisualFreeBasic编程文档
2026-1-21
VisualFreeBasic代码_注册表
对系统注册标进行读写操作 从 Windows 注册表返回一个 DWord 值 Function FF_GetRegistryDWord(ByVal hLocation as HANDLE, sSubKeys as CWSTR, sValueName as CWSTR, ByVal lDefault as DWord) as DWord hLocation HKEY_CLASSES_ROOT HKEY_CURRENT_USER HKEY_LOCAL_MACHINE HKEY_USERS sSubKeys 键 sValueName 值 lDefault 默认值 从 Windows 注册表中返回一个字符串。 Function FF_GetRegistryString(ByVal hLocation As HANDLE, sSubKeys As CWSTR , sValueName As CWSTR , sDefault As CWSTR ) As CWSTR hLocation HKEY_CLASSES_ROOT HKEY_CURRENT_USER HKEY_LOCAL_MACHINE HKEY_USERS sSubKeys 子项的名称 sValueName 值 lDefault 默认值 其它操作 FF_SetRegistryDWord 将一个 DWord 值设置为 Windows 注册表中。 FF_SetRegistryString 将一个字符串值设置为 Windows 注册表中。 FF_DeleteRegistryKey 从注册表中删除一个值或键。
2026年-1月-21日
59 阅读
0 评论
VisualFreeBasic编程文档
2026-1-21
VisualFreeBasic代码_GetSystemMetrics 系统环境有关信息
这是系统提供的API,获取系统里的各种信息 使用例题: '要取得屏幕大小,可以用下面几个函数: Dim As int cx = GetSystemMetrics(SM_CXFULLSCREEN) Dim As int cy = GetSystemMetrics(SM_CYFULLSCREEN) '通过上边两个函数获取的是 显示屏幕的大小,但不包括任务栏等区域。 Dim As int cx = GetSystemMetrics(SM_CXSCREEN) Dim As int cy = GetSystemMetrics(SM_CYSCREEN) 更多参数和功能 SM_ARRANGE 设置windows如何排列最小化窗口的一个标志。参考api32.txt中的ARW常数 SM_CLEANBOOT 指定启动模式。0=普通模式;1=带网络支持的安全模式 SM_CMETRICS 可用系统环境的数量 SM_CMOUSEBUTTON 鼠标按钮(按键)的数量。如没有鼠标,就为零 SM_CXBORDER, SM_CYBORDER 尺寸不可变边框的大小 SM_CXCURSOR, SM_CYCURSOR 标准指针大小 SM_CXDLGFRAME, SM_CYDLGFRAME 对话框边框的大小 SM_CXDOUBLECLK, SM_CYDOUBLECLK 双击区域的大小(参考注解) SM_CXFRAME, SM_CYFRAME 尺寸可变边框的大小(在win95和nt 4.0中使用SM_C?FIXEDFRAME) SM_CXFULLSCREEN, SM_CYFULLSCREEN 最大化窗口客户区的大小 SM_CXHSCROLL, SM_CYHSCROLL 水平滚动条上的箭头大小 SM_CXHTHUMB, SM_CYHTHUMB 滚动块在水平滚动条上的大小 SM_CXICON, SM_CYICON 标准图标的大小 SM_CXICONSPACING, SM_CYICONSPACING 桌面图标之间的间隔距离。在win95和nt 4.0中是指大图标的间距 SM_CXMAXIMIZED, SM_CYMAXIMIZED 最大化窗口的默认尺寸 SM_CXMAXTRACK, SM_CYMAXTRACK 改变窗口大小时,最大的轨迹宽度 SM_CXMENUCHECK, SM_CYMENUCHECK 菜单复选号位图的大小 SM_CXMENUSIZE, SM_CYMENUSIZE 菜单栏上的按钮大小 SM_CXMIN, SM_CYMIN 窗口的最小尺寸 SM_CXMINIMIZED, SM_CYMINIMIZED 最小化的窗口必须填充进去的一个矩形小于或等于SM_C?ICONSPACING SM_CXMINTRACK, SM_CYMINTRACK 窗口的最小轨迹宽度 SM_CXSCREEN, SM_CYSCREEN 屏幕大小 SM_CXSIZE, SM_CYSIZE 标题栏位图的大小 SM_CXSIZEFRAME, SM_CYSIZEFRAME 具有WS_THICKFRAME样式的窗口的大小 SM_CXSMICON, SM_CYSMICON 小图标的大小 SM_CXSMSIZE, SM_CYSMSIZE 小标题按钮的大小 SM_CXVSCROLL, SM_CYVSCROLL 垂直滚动条中的箭头按钮的大小 SM_CYCAPTION 窗口标题的高度 SM_CYKANJIWINDOW Kanji窗口的大小(Height of Kanji window) SM_CYMENU 菜单高度 SM_CYSMCAPTION 小标题的高度 SM_CYVTHUMB 垂直滚动条上滚动块的高度 SM_DBCSENABLED 如支持双字节则为TRUE SM_DEBUG 如windows的调试版正在运行,则为TRUE SM_MENUDROPALIGNMENT 如弹出式菜单对齐菜单栏项目的左侧,则为零 SM_MIDEASTENABLED 允许了希伯来和阿拉伯语 SM_MOUSEPRESENT 如安装了鼠标则为TRUE SM_MOUSEWHEELPRESENT 如安装了带轮鼠标则为TRUE;只适用于nt 4.0 SM_NETWORK 如安装了网络,则设置位0。其他位保留未用 SM_PENWINDOWS 如装载了支持笔窗口的DLL,则表示笔窗口的句柄 SM_SECURE 如安装了安全(保密)机制,则为TRUE SM_SHOWSOUNDS 强制视觉提示播放声音 SM_SLOWMACHINE 系统速度太慢,但仍在运行中(System is too slow for effective use but is being run anyway) SM_SWAPBUTTON 如左右鼠标键已经交换,则为TRUE
2026年-1月-21日
42 阅读
0 评论
VisualFreeBasic编程文档
2026-1-21
VisualFreeBasic代码_Environ 系统环境变量
Environ 语句是FB语言的语句,用来获取操作系统里的系统环境变量 result = Environ( varname ) varname 参数,和返回什么,看下面列表 WIN7 系统 系统不同,内容不同 1 ALLUSERSPROFILE=C:\ProgramData 2 APPDATA=C:\Users\Administrator\AppData\Roaming 3 CommonProgramFiles=C:\Program Files (x86)\Common Files 4 CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files 5 CommonProgramW6432=C:\Program Files\Common Files 6 COMPUTERNAME=YONGFANG 7 ComSpec=C:\Windows\system32\cmd.exe 8 DEVMGR_SHOW_DETAILS=1 9 FP_NO_HOST_CHECK=NO 10 HOMEDRIVE=C: 11 HOMEPATH=\Users\Administrator 12 LOCALAPPDATA=C:\Users\Administrator\AppData\Local 13 LOGONSERVER=\\YONGFANG 14 NUMBER_OF_PROCESSORS=8 15 OS=Windows_NT 16 Path=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\ 17 PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC 18 PROCESSOR_ARCHITECTURE=x86 19 PROCESSOR_ARCHITEW6432=AMD64 20 PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 42 Stepping 7, GenuineIntel 21 PROCESSOR_LEVEL=6 22 PROCESSOR_REVISION=2a07 23 ProgramData=C:\ProgramData 24 ProgramFiles=C:\Program Files (x86) 25 ProgramFiles(x86)=C:\Program Files (x86) 26 ProgramW6432=C:\Program Files 27 PSModulePath=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\ 28 PUBLIC=C:\Users\Public 29 SESSIONNAME=Console 30 SystemDrive=C: 31 SystemRoot=C:\Windows 32 TEMP=S:\ 33 TMP=S:\ 34 USERDOMAIN=YONGFANG 35 USERNAME=Administrator 36 USERPROFILE=C:\Users\Administrator 37 windir=C:\Windows 38 windows_tracing_flags=3 39 windows_tracing_logfile=C:\BVTBin\Tests\installpackage\csilogfile.log XP系统 1 ALLUSERSPROFILE=C:\Documents and Settings\All Users 2 APPDATA=C:\Documents and Settings\Administrator\Application Data 3 CLIENTNAME=Console 4 CommonProgramFiles=C:\Program Files\Common Files 5 COMPUTERNAME=PC-20141206HRKK 6 ComSpec=C:\WINDOWS\system32\cmd.exe 7 FP_NO_HOST_CHECK=NO 8 HOMEDRIVE=C: 9 HOMEPATH=\Documents and Settings\Administrator 10 LOGONSERVER=\\PC-20141206HRKK 11 NUMBER_OF_PROCESSORS=2 12 OS=Windows_NT 13 Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem 14 PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH 15 PROCESSOR_ARCHITECTURE=x86 16 PROCESSOR_IDENTIFIER=x86 Family 6 Model 42 Stepping 7, GenuineIntel 17 PROCESSOR_LEVEL=6 18 PROCESSOR_REVISION=2a07 19 ProgramFiles=C:\Program Files 20 SESSIONNAME=Console 21 SystemDrive=C: 22 SystemRoot=C:\WINDOWS 23 TEMP=C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp 24 TMP=C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp 25 USERDOMAIN=PC-20141206HRKK 26 USERNAME=Administrator 27 USERPROFILE=C:\Documents and Settings\Administrator 28 windir=C:\WINDOWS 29 _DFX_INSTALL_UNSIGNED_DRIVER=1 WIN10系统 1 ALLUSERSPROFILE=C:\ProgramData 2 APPDATA=C:\Users\w10\AppData\Roaming 3 CommonProgramFiles=C:\Program Files\Common Files 4 COMPUTERNAME=WIN-5VHV9G20U4C 5 ComSpec=C:\Windows\system32\cmd.exe 6 FPS_BROWSER_APP_PROFILE_STRING=Internet Explorer 7 FPS_BROWSER_USER_PROFILE_STRING=Default 8 HOMEDRIVE=C: 9 HOMEPATH=\Users\w10 10 LOCALAPPDATA=C:\Users\w10\AppData\Local 11 LOGONSERVER=\\WIN-5VHV9G20U4C 12 NUMBER_OF_PROCESSORS=2 13 OS=Windows_NT 14 Path=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\ 15 PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC 16 PROCESSOR_ARCHITECTURE=x86 17 PROCESSOR_IDENTIFIER=x86 Family 6 Model 42 Stepping 7, GenuineIntel 18 PROCESSOR_LEVEL=6 19 PROCESSOR_REVISION=2a07 20 ProgramData=C:\ProgramData 21 ProgramFiles=C:\Program Files 22 PSModulePath=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\ 23 PUBLIC=C:\Users\Public 24 SESSIONNAME=Console 25 SystemDrive=C: 26 SystemRoot=C:\Windows 27 TEMP=C:\Users\w10\AppData\Local\Temp 28 TMP=C:\Users\w10\AppData\Local\Temp 29 USERDOMAIN=WIN-5VHV9G20U4C 30 USERDOMAIN_ROAMINGPROFILE=WIN-5VHV9G20U4C 31 USERNAME=w10 32 USERPROFILE=C:\Users\w10 33 windir=C:\Windows 34 __COMPAT_LAYER=DetectorsWin8
2026年-1月-21日
50 阅读
0 评论
VisualFreeBasic编程文档
2026-1-21
VisualFreeBasic代码_操作系统
一、操作系统的基本概念 操作系统(Operating System,简称OS)是管理计算机硬件和软件资源的计算机程序,它是计算机系统的核心和基础。操作系统负责配置内存、决定资源供需顺序、控制输入输出设备等,为用户和计算机硬件之间提供了一个交互的界面。 二、操作系统的功能 资源管理:操作系统统一管理计算机的处理器资源、存储器资源、IO设备资源和文件资源等。它通过合理的调度和分配,确保这些资源能够被高效、有序地使用。 提供用户接口:操作系统提供了用户和计算机之间的接口,如图像窗口形式、命令行形式和系统调用形式等,使得用户能够方便地与计算机进行交互。 程序控制:操作系统能够控制程序的执行,包括进程的创建、调度、同步和通信等,确保程序能够正确、有序地运行。 系统安全:操作系统提供了多种安全机制,如访问控制、加密解密、病毒防护等,以保护计算机系统和用户数据的安全。 三、操作系统的种类 操作系统的种类是多种多样的,不局限于计算机。常见的操作系统包括Windows、Linux、MacOS、Android等。每种操作系统都有其独特的特点和适用场景,如Windows操作系统适用于个人计算机和服务器,Linux操作系统则因其开源性和稳定性而广泛应用于服务器、嵌入式系统等领域。 四、操作系统的关键技术 并发性:操作系统能够支持多个程序或进程同时运行,以提高计算机的利用率和响应速度。 共享性:多个程序可以同时使用主存资源,资源共享根据属性分为互斥共享和同时访问两种形式。 虚拟性:操作系统通过虚拟技术将一个物理实体转化为多个逻辑实体,以提高资源的利用率和编程效率。常见的虚拟技术包括虚拟处理器技术、虚拟设备技术和虚拟内存技术等。 五、操作系统的编程接口 操作系统为程序员提供了多种编程接口,以便他们能够在操作系统上进行应用程序的开发。这些接口包括系统调用、库函数和API等。程序员可以通过这些接口来访问操作系统的各种资源和服务,如文件操作、网络通信、进程管理等。
2026年-1月-21日
56 阅读
0 评论
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编程文档
11
12
13
14
15