FreeBASIC学习笔记
文章平均质量分 55
rainheart311
这个作者很懒,什么都没留下…
展开
-
FB内嵌汇编探索2
FB中使用汇编的探索学习原创 2023-04-14 09:49:28 · 206 阅读 · 0 评论 -
FB使用入口点函数例子
FB是把代码转成C(GCC编译)或者汇编(GAS编译)后编译的,本身就有一个main函数,所以在程序里其实不需要入口点,直接写就可以顺序执行,而有的小伙伴编译DLL时,想使用DLL入口点函数的参数。如果有需要线程启动和终止消息的,则需要使用这种模式的入口,需要自己复制代码实现,主要原理是通过参数命令-Wl -e增加一个入口点函数_DLLENTRY (在VFB附加编译选项中输入命令:-Wl -e_DLLENTRY,如果使用1.09.0的编译器,也可以使用 #cmdline来设置编译参数)。原创 2023-04-03 12:22:30 · 441 阅读 · 0 评论 -
FB内嵌汇编探索
FB使用内嵌汇编探索原创 2023-04-03 11:18:05 · 275 阅读 · 0 评论 -
FreeBASIC学习笔记——6.2 函数
一个函数定义一些语句或函数调用执行的代码块,并在完成时返回一个值(返回值)。使用函数的几个好处:1、减少程序冗余;2、允许在许多程序中重用代码;3、提高程序的可读性;4、提高程序的可维护性;5、使程序的扩展变得容易。 访问权限:其中Public和Private关键字分别指定公共或内部模块级访问权限。如果没有给定,则该函数默认为公共访问(Public)。调用约定:使用Cdecl原创 2017-12-16 22:33:10 · 869 阅读 · 0 评论 -
FreeBASIC学习笔记——6.4 可变参数
用于代替过程参数来传递可变数量的参数,或用作数组声明中的上限,以表示元素数量将由初始化程序确定。语法: 省略号(三个点,...)用于过程声明和定义以表示可变参数列表。必须始终指定第一个参数,并且必须使用C调用约定Cdecl调用该函数。在过程主体中,va_first,va_arg和va_next用于处理变量参数。va_first用于返回指向变量参数列表中第一个参数的指针原创 2017-12-16 22:37:16 · 598 阅读 · 0 评论 -
FreeBASIC学习笔记——第07章 常用内部函数
这里列举了大部分FreeBASIC的内部函数,和功能说明,主要是为了可以有一个大概的了解,方便使用时可以快速的查找。具体函数参数和使用方式可以查询帮助手册。7.1 时间和日期函数7.1.1 Visual Basic兼容函数 Visual Basic兼容函数需要引用头文件#include Once"vbcompat.bi",否则编译器不能识别这些函数。这里只例举一些常用的时原创 2017-12-16 22:41:18 · 998 阅读 · 0 评论 -
FreeBASIC学习笔记——8.3 指针与数组
数组其实与指向了一个连续的地址单元的指针相同,数组名相当于一个指针,下标相当于指针的偏移,假如有数组a(1),指向该数组的指针p,则a(0)其实就是*p,a(1)就是*(p+1)。指针可以用“[]”下标来引用一个连续单元的内存数据。例如:一维数组例如:二维数组原创 2017-12-18 15:22:13 · 687 阅读 · 0 评论 -
FreeBASIC学习笔记——8.1 指针的概念
指针是一个特殊的变量,它里面存储的是一个地址数据。这个地址直接指向存在电脑存储器中另一个地方的值。由于能够通过地址能找到所需的变量单元,也就是该指针指向的地址指存储该变量,因此将地址形象化的称为“指针”。 指针指向的地址必须是有效的。 所以我们首先要明确,指针是一个变量,在32位程序里,所有类型的指针的值都是一个32位无符号整数,因为32位程序里地址全都是32位长。也就是定义一个原创 2017-12-18 14:53:56 · 703 阅读 · 0 评论 -
FreeBASIC学习笔记——8.2 指针的类型与运算
8.2.1 标准数据类型的指针 我们不能单独定义一个指针变量,指针必须有一个标准的数据类型。在FreeBASIC中,指针有两个名称:Pointer和Ptr,两者完全相同,都是声明指针变量。 指针的运算用操作符@或VarPtr获取变量的地址、StrPtr获取字符串地址,ProcPtr获取函数地址。用操作符 *访问存储在指针指向的内存位置的实际值。原创 2017-12-18 14:56:32 · 596 阅读 · 0 评论 -
FreeBASIC学习笔记——8.4 指针与函数/过程
8.4.1、指针作为函数/过程的参数 指针可以作为函数或过程的参数使用,特别是调用系统的API函数或者其他一些函数库时会发现很多函数的参数都是通过指针来传递数据的。在函数或过程的参数中使用指针时需要注意的是: 1、由于指针本身就是地址数据,所以ByVal和ByRef修饰的结果是一样的,不存在按值传递进函数或者过程中后不会改变原有数据的情况,因为实际函数或者过程中原创 2017-12-18 20:28:51 · 794 阅读 · 0 评论 -
FreeBASIC学习笔记——第09章 预编译
9.1 文件包含 FreeBASIC文件包含有三个指令:#Include,句包含另一个源文件的内容;#IncLib,包含一个库文件;#libpath,将库搜索路径添加到链接器的搜索路径列表中。 #Include在其指令出现的位置插入另一个文件的源代码。这具有从所包含的文件编译源代码的效果,就好像它是包含它的源文件的一部分。一旦编译器到达了include文件的末尾原创 2017-12-18 21:07:44 · 1126 阅读 · 0 评论 -
FreeBASIC学习笔记——FireFly常用控件之窗体(Form)
窗体是我们最常用的控件之一,FireFly编译器不在使用和设置上与Visual Basic的编译器有很多差异。所有了解窗体的设置和使用是十分必要的。11.1.1 窗体的样式设置 窗体的的外观设置在FireFly里需要通过WindowStyles属性来设置。选择窗体Form后,在工作区选择属性选项卡,可以看到窗体的各种属性,我们点击WindowStyles属性后面的按钮,在弹出原创 2017-12-19 08:27:12 · 1627 阅读 · 0 评论 -
FreeBASIC学习笔记——6.1 过程
过程(即子程序)是可以在程序的任何时候调用的代码块。该代码可能需要执行多次,过程就是通过用单个子程序调用来代替这些代码块手段。过程还可以让用户扩展FreeBASIC语言以提供自定义命令。FreeBASIC内置的许多功能只是默认链接到的“运行库”的子程序。 Sub关键字标记过程的开始,其结尾必须使用标有End Sub。Identifier表示过程名。过程的代码与模块中其他程序的代码原创 2017-12-16 16:11:24 · 2135 阅读 · 0 评论 -
FreeBASIC学习笔记——2.3 数据类型
2.3.1 整数型 整数型数据顾名思义就是不带小数的数据,我们通常用十进制数表示这些数据,但FreeBASIC也允许二进制、八进制和十六进制的数据表示方式。1、不同进制的表示方式二进制: 二进制只有0和1,在FreeBASIC中,二进制数据以“&B”开头,后跟二进制数字(0或1)例如:八进制: 在FreeBASIC中原创 2017-12-12 12:05:19 · 1528 阅读 · 0 评论 -
FreeBASIC学习笔记——FireFly常用控件值按钮(Button)和标签(Label)
11.2按钮(Button)和标签(Lable) 按钮和标签是我们设计窗体是最常用的控件,一般来说,按钮需要关注的属性包括按钮名(Name属性)、标题(Caption属性),其他属性根据需要查找,还有就是需要了解按钮的单击(Click)事件。如图11-5所示。图11-5 按钮的属性 标签是一个静态的文本框,我们主要需要了解标签名(Name属性)、原创 2017-12-20 10:27:13 · 960 阅读 · 0 评论 -
FreeBASIC学习笔记——2.4 强制转换
2.4.1 通用转换 在FreeBASIC中将表达式转换为指定的数据类型有多种函数,根据数据类型不同可以选择该类型的函数,也可以使用通用的类型转换函数Cast。语法如下:例如: 将Expression 转换为不同的DataType(数据类型)。这是转换运算符的一般形式,比诸如CInt或CDbl之类的转换更加通用,因为它们可以用于具有C原创 2017-12-12 15:56:08 · 904 阅读 · 0 评论 -
FreeBASIC学习笔记——2.1 常量的声明
常量是定义后不能更改的,比如定义了5就一直5这个数字,不会变成其他数字。在FreeBASIC中,常量定义与使用Const命令修饰的变量是不同的。常量可以在全局使用,这就意味着一旦定义,你可以在程序中的任何地方使用定义的字符来代替常数。在使用Const命令定义后,不能修改常量。如果代码尝试更改常量,则会在代码编译时产生错误消息。 声明不可修改的常量数据,可以是整数或十进制(浮点数)原创 2017-12-11 20:40:31 · 621 阅读 · 0 评论 -
FreeBASIC学习笔记——1.3 第一个工程
在进入FreeBASIC程序设计之前,我们首先了解一下FireFly如何建立、编译一个工程的,因而我们建立第一个工程来了解这个过程。1.3.1 新建工程 双击FireFly快捷方式打开FireFly界面如图1-4所示,默认显示新建工程对话框。如果是第一次打开,则显示【新建】选项,此时可以建立一个新的工程;若已经有编写过工程则显示【最近的】选项,此时可以选择打开原有工程,也可以原创 2017-12-11 16:15:34 · 1691 阅读 · 0 评论 -
FreeBASIC学习笔记——1.2 编译器简介FireFly
由于开源的缘故,FreeBASIC目前有多种编译器:FBedit、WinFBE、poseidonFB、FireFly for FreeBASIC等等。其中WinFBE是一个用FreeBASIC语言写的、完全开源的编译器,用于编写控制台或者SDK编程非常好用,而FireFly for FreeBASIC则是一款类似VB的界面设计工具,是从PowerBasic移植而来,国内由勇芳软件工作室汉化、收集整原创 2017-12-11 15:49:44 · 7623 阅读 · 0 评论 -
FreeBASIC学习笔记——第03章 运算符与表达式
3.1 赋值运算 FreeBASIC的赋值运算除了“=”以外,还有类似C语言的运算后赋值的操作,具体运算符及其说明如表3-1所示。表3-1 赋值运算符及说明运算符说明=为变量赋值一个值&=追加并赋值一个字符串到另一个字符串,s1 &= s2等同于s1 = s1 & s2原创 2017-12-13 12:40:18 · 917 阅读 · 0 评论 -
FreeBASIC学习笔记——4.1 选择语句
4.1.1行If语句 行If语句顾名思义是在一行完成的If语句,在Expression为真时,执行Statement1(s)中的内容,否则执行Statement2(s)中的内容。语法如下:例如:4.1.2 块If语句 块If语句的判断方式比行If更加丰富,可以对Expression进行多次判断,根据判断结果执行Statement (s原创 2017-12-15 16:21:54 · 529 阅读 · 0 评论 -
FreeBASIC学习笔记——4.2 循环语句
4.2.1 While…Wend While语句在Condition条件为真时,Statement Blocks块中的数据将循环执行,直到Condition条件为假。如果在Statement Blocks块中遇到Exit While语句时,循环终止;如果在Statement Blocks块中遇到Continue While时,跳过Statement Blocks块后面的语句回到W原创 2017-12-15 19:17:57 · 630 阅读 · 0 评论 -
FreeBASIC学习笔记——4.3 转移语句
4.3.1 Goto 将代码执行跳转到标签行。为了源代码可读性,应尽量避免使用Goto,而应该用过程(Sub)或函数(Function)来进行结构性的程序设计。语法:例如:4.3.2 On Goto语法: 根据Expression 的值赋值到不同的标签。表达式值为1将分支到第一个标签,值为2到第二个等。如果Expres原创 2017-12-15 19:29:17 · 441 阅读 · 0 评论 -
FreeBASIC学习笔记——第05章 数组
数组是变量的特殊类型,作为多个值的容器或元素。数组可以存储任何类型的元素,并且其所有元素共享相同的类型。这些元素通过数组中的位置来读取或写入。数组有大小,它们等于在任何给定时间存储的元素的数量。静态在其整个生命周期内具有不变的大小,而动态数组的大小可以动态更改。数组使用操作符“()”来访问数组中的各个元素。5.1 静态数组的定义 静态数组一旦定义后就不能改变范围,可以使用Ex原创 2017-12-16 09:44:58 · 825 阅读 · 0 评论 -
FreeBASIC学习笔记——2.2 变量的声明
变量其实就是对某一内存定义名称并加以操纵。变量名必须是由字母、数字和字符“_”(下划线)组成,不能包含其他字符或者空格,且这些变量名不能与FreeBASIC的关键字相同,因为关键字属于FreeBASIC语言的一部分。FreeBASIC的变量名称是不区分大小写的,即TEXT和text编译器会认为是同一个变量,这点必须注意。 在-lang fb语言规则中,变量必须声明才能使用,Fir原创 2017-12-11 20:52:26 · 1351 阅读 · 0 评论 -
FreeBASIC学习笔记——1.5 词法约定
1.5.1 注释 注释是编译器将注释符所标识的文本区域内容进行忽略,主要是用来给程序员标识一些有用的信息。唯一的例外就是可能出现在某些类型的元命令(见第5点)。1、单行注释 单引号“’”(必须英文状态下的单引号)用于标识单行注释。在源程序语句行后添加单引号,单引号后的文本内容都被视为注释,不参与编译。例如:2、注释声明:Rem原创 2017-12-11 18:05:05 · 815 阅读 · 0 评论