关于从易语言到火山视窗入门教程_火山软件开发平台

关于本教程

作者：创世魂

概述：本篇教程主要以火山视窗为视角、少量易语言视角，来介绍火山视窗软件开发平台基本语法和基本操作，从而能够快速的从易语言软件开发转换到火山视窗软件开发。

在阅读本教程之前，强烈建议首先观看一下《火山新手入门教程》，以便于快速理解本教程内容。

点击开始阅读

关于火山软件开发平台

火山软件开发平台是一种目的硬件设备无关、目的软件环境无关、易学易用实用、完全本地化的软件快速开发平台。

火山平台采用独创的“语言之上的语言”（LOL）技术，成功屏蔽了火山程序对特定目标环境的依赖。用户只需要学习掌握火山程序语言，就可以针对各种目的环境进行软件开发。同时由于火山程序编译器所编译出来的是目标语言的源代码，因此能够最大限度地提升火山程序员与第三方的合作和资源共享效率， 以及所开发火山程序被社会的认可程度。

以下为火山软件开发平台的架构图：

火山平台用户源程序
支持对应目标环境的火山类库
支持对应目标环境的火山编译器
Assembly / C / C++ / C# ...... | Java | Objective C / Swift | HTML5 + JavaScript + CSS | PHP | 其它 .....
本地语言编译器 | 本地语言编译器 | 本地语言编译器 | 本地语言解释器 | 本地语言解释器
Windows桌面、Linux/Unix服务器端、嵌入式设备、单片机 ...... | 安卓移动端、安卓嵌入式设备、服务器 ...... | ios应用 | 网站前端展示、HTML5跨平台应用。 | WEB服务器端


第一章 火山概述及常用操作差异

一、为什么要使用火山视窗？

二、编译环境差异

三、项目结构差异

1. 项目差异

2. 支持库差异

3. 模块差异

4. 部件DLL

四、基本编辑环境差异

1. 输入方式差异

2. 代码结构差异

五、帮助系统差异

1. 即时帮助差异

2. 参数提示差异

3. 书签差异

4. 例程打开方式差异


为什么要使用火山视窗_火山平台语法手册

[下一章]

一、为什么要使用火山视窗？

1、基本介绍

火山软件开发平台是完全拥有自主知识产权、一种目的硬件设备无关、目的软件环境无关、易学易用实用、完全本地化的中文软件快速开发平台。

火山平台采用独创的“语言之上的语言”（LOL）技术，成功屏蔽了火山程序对特定目标环境的依赖。用户只需要学习掌握火山程序语言，就可以针对各种目的环境进行软件开发。同时由于火山程序编译器所编译出来的是目标语言的源代码，因此能够最大限度地提升火山程序员与第三方的合作和资源共享效率， 以及所开发火山程序被社会的认可程度。

本地化编程语言具有极其重要的价值及社会意义。

以下为火山软件开发平台的架构图：

火山平台用户源程序
支持对应目标环境的火山类库
支持对应目标环境的火山编译器
Assembly / C / C++ / C# ...... | Java | Objective C / Swift | HTML5 + JavaScript + CSS | PHP | 其它 .....
本地语言编译器 | 本地语言编译器 | 本地语言编译器 | 本地语言解释器 | 本地语言解释器
Windows桌面、Linux/Unix服务器端、嵌入式设备、单片机 ...... | 安卓移动端、安卓嵌入式设备、服务器 ...... | ios应用 | 网站前端展示、HTML5跨平台应用。 | WEB服务器端

而易语言相对火山就比较单薄，虽然易语言支持跨平台，但其程序对linux和unix的支持相对较弱，大部分库也不支持在linux和unix运行。

2、全面支持Unicode(统一码）字符集：

利用Unicode字符集可以非常方便的开发多国语言程序，可以使用Unicode字符串或者直接输入目标语言文本就可以显示出来，这是易语言所不能办到的。

运行效果如下图：

易语言不支持Unicode字符串显示目标语言，也不支持直接输入目标语言，其运行效果如下：

3、支持32/64位程序开发：

易语言因为历史遗留问题导致无法支持64位程序设计，不支持64位也就意味着无法申请更大的内存空间，无法开发一些对于内存要求非常高的大型软件。

而这一问题在火山视窗上不复存在，火山视窗支持编译32/64位程序，可以根据需求选择。

右键项目找到“属性”菜单。

找到“目标平台”，就可以根据需求选择程序位数（默认为64位）。

4、系统核心库全部开源：

系统核心类库全部开源可自行随意更改。

因为火山视窗是源码级编译，所以不会存在像易语言一样大规模的误报问题，即便是发生了误报也可以通过修改源码或者更换编译器解决误报问题。

展开“模块”可以查看核心库源码。

在易语言中不支持查看源码，只能通过类库查看帮助信息。

5、支持使用一系列不同的本地编译器：

在火山中，点击“工具->选项”菜单可以打开系统设置。

点击左侧“视窗项目管理器”，右侧“本地编译器”就可以修改编译器（需要自行下载对应编译器），此处可以下拉选择也可以直接设置编译器安装路径。

在易语言中虽然普通编译不需要设置编译器，但如果想要静态编译只能手动修改“tools\link.ini”文件中的相关配置项，非常不友好。

在link.ini文件中找到“linker”配置项，然后设置链接器路径。

6、程序代码支持嵌入C，C++：

易语言代码中只能使用易语言支持库或模块来编写程序，如果缺少一些小功能还需要额外封装支持库或模块，使用起来极其不便。

在火上视窗中可以通过阅读封装手册，直接在火山源码中嵌入c、c++代码实现功能，无需额外封装类库。

7、C++源码编译：

用火山视窗写程序，虽然表面上是中文的，但是实际上生成的是C++程序，具有和C++一样的运行速度，而且可以与其它C++程序员协同开发。

在程序编译或调试后会在解决方案所处目录生成一个“_int”文件夹，在此文件夹中就可以找到输出的C++源码。

c++源码详细输出位置如下：

调试版程序默认输出在：“_int\项目文件名\debug\x64(或win32)\project”目录中。

发布版程序默认输出在：“_int\项目文件名\release\x64(或win32)\project”目录中。

注：x64指64位程序，win32指32位程序。

8、程序代码即类库：

火山平台支持用火山代码直接封装火山类库，这是易语言所不具备的功能。

关于火山类库封装可以看：部件DLL一文中的介绍。

9、跨平台实现语法统一：

由下图可知，即使是开发平台不同，但程序语法几乎是一致的。

最终可以达到，学会火上视窗平台后也能轻松掌握安卓程序开发，实现软件开发一通百通。

火山视窗部分演示代码：

火山安卓部分演示代码：

[下一章]


火山视窗和易语言编译环境差异_火山平台语法手册

二、火山视窗和易语言编译环境差异

在易语言中编译模式共分为三种：

1、普通编译：发布时必须带上支持库(fne、fnr)才能运行。

2、独立编译：把支持库(fne、fnr)打包进EXE，运行时释放到临时目录(接近自解压的RAR)；

3、静态编译：把静态支持库(LIB)编译进EXE，直接成为一体,不再释放(和VC一样)。

在火山视窗中有两种编译模式：

1、普通编译：如果软件所使用的类库需要依赖DLL文件才可以运行，则发布时必须带上DLL才能运行。

2、静态编译：可以将类库所使用的的静态库文件(lib)编译进exe文件中、无需dll即可运行。

火山视窗编译注意事项：

1、无论是普通编译还是静态编译都需要vs编译器才可以编译。

2、并非所有类库都支持静态编译，如果设置静态编译后依然有dll文件输出，就证明软件所使用的类库并不支持静态编译。

3、火山默认提供的vs编译器是2019版本，所编译的程序不支持在xp系统运行，想要支持在xp系统中运行，需要自行下载vs2017（包含及以下版本）。

易语言编译环境配置：

在易语言中普通编译和独立编译不需要vc链接器就可以进行编译，而静态编译则需要vc链接器才可以编译，具体可看易语言新手用户手册。

火山视窗编译环境配置：

在官网中，可以看到“相关附属资源下载”栏目，此栏目中提供了火山视窗编译所需要的sdk包，下载自己所需要的即可。

如下图为64位sdk下载后：

打开下载好的sdk压缩包后，会看到一个“vs_sdk.rar”的压缩包，继续打开此压缩包会看到一个“plugins”文件夹，将这个文件夹解压到火山平台的安装路径即可。

如果是自行下载的vs编译器，点击“工具->选项”菜单进入系统设置，选择“视窗项目管理器”，设置“本地编译器”版本，如果未能识别到，可以直接提供VS编译器路径。

点击可查看《VS2019生成工具使用教程》，推荐自行下载生成工具进行编译程序。

程序调试：

火山视窗的程序调试和易语言一致，按快捷键F5或点击下图中的三角按钮即可调试程序。

易语言程序调试：

火山程序调试：

注：调试程序也需要配置好编译环境后才可以调试。如果遇到程序无法调试的问题，可以尝试点击菜单“生成->清理解决方案”清理后重新调试。

普通编译：

易语言普通编译：

通过菜单“编译->编译”进行普通编译。

易语言进行普通编译后会依赖易支持库文件，不同的功能会输出不同的库文件。

火山视窗普通编译：

因为火山软件开发平台是多项目管理模式，因此在编译之前要确定当前项目是否为活动项目。

最简单的办法可以通过项目颜色来区分，如果要编译的项目文本颜色为蓝色，则证明当前项目为活动项目。

确认要编译的项目是活动项目后，通过“生成-生成活动项目”菜单即可完成普通编译。

编译完成后在程序输出栏可以看到程序输出位置，双击可以跳转。

如果所编写的程序需要依赖DLL文件，会在程序输出位置看到这些DLL文件，除了“out”文件夹之外，其它的所有文件都是发布程序所需要的文件。

静态编译：

易语言静态编译：

在易语言中使用静态编译需要使用vc链接器，推荐使用vc6版本。

下载后手动修改易语言安装路径下“tools\link.ini”文件中的相关配置项。

在link.ini文件中找到“linker”配置项，然后设置链接器路径。

火山视窗静态编译：

鼠标右键项目，选择“属性”。

找到“火山模块链接方式”选择“静态”即可，如果所使用的火山模块(类库)支持静态编译，最终“生成活动项目”时就会进行静态编译操作，如果不支持静态编译并且依赖了DLL动态链接库、编译完成后会输出DLL文件。


三、项目结构差异

三、火山视窗和易语言项目结构差异

1、项目差异

1.1 项目概述

1.1.1 易语言项目概述

易语言采用的是单文件单项目的管理模式，项目文件后缀名为“.e”，一个易语言源码文件就代表一个易语言项目，源码中所引用的图标资源，声音资源等资源文件都会打包到易语言源码中，无需额外管理。

1.1.2 火山项目概述

火山视窗的项目管理模式和易语言完全相反，火山采用的是多项目多文件的管理模式，并且火山所引用的任何资源文件也不会打包到源码文件中，减少源码文件负担。

多个项目建立在一起的集合被称为解决方案，一个解决方案内可以放N个项目，一个项目内可以有N个火山源码文件，源码后缀文件为“.v”。

这样的模式有很多好处，譬如：开发一款软件要升级多个版本，想保留历史版本的源代码，那么就可以都把这些历史版本的源代码放在一个解决方案中便于后期维护和管理，想要查看历史版本源码也非常方便，不需要额外打开一个新的火山窗口，而在易语言中你必须要打开一个新的易语言窗口才能查看旧版源码。

1.2 项目创建差异

1.2.1 易语言项目创建

在易语言中可以创建“Windows空白程序”项目以及“Linux空白程序”项目。

Windows空白程序提供了四个项目模板，分别为：Windows窗口程序、Windows控制台程序、Windows动态链接库以及Windows易语言模块。

Linux空白程序提供了两个项目模板，分别为：Linux控制台程序和Linux易语言模块。

1.2.2 火山视窗项目创建

创建一个新的项目时会自动依赖一个解决方案，如下图所示进行创建：

(1) 可通过“文件 -> 新建 -> 项目”或直接点击欢迎页中的“新建项目”都可以实现创建项目。

(2) 根据自己的需求选择平台及目标平台的项目模板，并依次填写项目名称、选择所处(保存)位置、解决方案名称，最后点击确定即可。

注1：因火山视窗只针对Windows程序开发，因此新建项目的时候无法在视窗平台中创建并使用Linux项目。

注2：除此之外窗口程序、控制台程序、动态链接库都可以进行创建并使用，额外还提供了Windows服务程序等多个不同类型的模板。

(3) 如果“所处位置”不存在会提示进行创建，点击“是”进行创建即可。

(4) 最后创建成功后如下图，其中解决方案/项目/源文件名称都可以通过双击进行修改。

1.3 火山项目详细介绍

1.3.1 解决方案目录结构概述

在创建了一个项目后，会在“所处位置”目录中生成“解决方案文件”和“项目文件夹”。

注：这些生成的项目文件或文件夹不允许随意修改其名称，否则会导致项目无法打开。

(1) 解决方法文件后缀名为“vsln”，启动火山视窗项目时，双击此文件即可打开。

(2) 项目文件夹中存储有当前项目源码数据。

打开项目文件夹，可以看到一个“src”的文件夹和后缀名为“vprj”的项目配置文件。

(1) 项目配置文件中存储有当前项目所有配置信息。

(2) 自动生成的主程序模板文件，位于src文件夹中。

打开src文件夹就可以看到自动生成的主程序模板文件。

当程序进行调试或编译发布版时，会自动在解决方案所处目录中，生成一个“_int”文件夹，用于输出C++源码文件和项目程序文件。

程序文件默认输出路径如下：

调试版程序默认输出在：“_int\项目文件名\debug\x64(或win32)\linker”目录中。

发布版程序默认输出在：“_int\项目文件名\release\x64(或win32)\linker”目录中。

注：x64指64位程序，win32指32位程序。

“_int”文件夹可以自定义其保存位置，通过右键解决方案选择属性菜单，通过设置“编译中间数据目录”即可自定义位置。

1.3.2 多文件管理

如果软件中有多个窗口，可以建立多个火山源码文件，一个文件中存放一个窗口类，可便于后期软件维护。

(1) 鼠标右键项目选择“添加 -> 新建文件”。

(2) 在新建文档窗口中，填写文件名，选择所处位置(默认为当前项目目录，建议保持原样)。

(3) 文件创建完毕后如下图：

(4) 如果软件有多个功能模块或窗口，可以创建多个源码文件来管理。

(5) 创建完毕后的火山源码文件会出现在“所处位置”的目录中。

(6) 如果项目文件过多，还可以通过建立筛选器来进行二次分类。

右键项目选择“添加 -> 新建筛选器”。

(7) 建立后可以通过右键进行重命名。

(8) 筛选器建立完成后，可以通过点击鼠标左键拖拽火山源码文件到目标筛选器中。

1.3.3 多项目管理

火山视窗支持在解决方案中建立多个项目进行管理，不同平台之间也可以混合建立。

如下所示：

(1) 右键解决方案选择“添加 -> 新建项目”，就可以进行项目建立。

(2) 在新建项目窗口中，此处可以选择其它平台的项目进行创建。

注：所处位置默认会填写当前解决方案路径，建议保持原样即可。

(3) 项目建立成功后，会自动设置新项目为活动项目。

活动项目：即当前操作项目。

(4) 切换活动项目，通过项目的右键菜单中可以直接切换。

注：活动项目切换后，项目文本颜色会发生变化。

如果打开了很多火山源文件，也可以通过文件名右键设置活动项目，如下所示：

(5) 项目建立后，可在“所处位置”指定的路径中看到新项目文件夹，每个项目都会依赖一个文件夹。

2、支持库差异

2.1 概述

易语言中提供了支持库用于程序开发，在火山中叫“类库”或“模块”。

2.2 支持库安装

易语言演示：

点击“工具->安装新的支持库”。

点击后会弹出支持库安装包管理工具，点击“安装支持库”就可以选择支持库安装文件进行安装。

火山视窗演示：

易语言支持库在火山平台中名叫类库或模块，火山平台模块的后缀名为vcip，模块安装时火山平台会自动识别安装到视窗模块中还是安卓模块中，安装后将会出现在类库夹中。

模块安装方式如下：

双击模块文件即可安装。

也可以通过“工具->安装模块”进行模块安装。

2.3 支持库配置

易语言演示：

在易语言中支持库配置为全局配置，针对所有易语言项目有效。

点击“工具->支持库配置”。

点击后会弹出支持库配置窗口，勾选所需要的支持库点击“确认”即可。

火山演示：

在火山中每个项目都可以独立配置进行模块(类库)配置，模块不可以跨平台配置，例如：视窗项目无法配置安卓模块。

模块配置方法如下：

(1) 右键项目配置

如果某项目想要配置模块，可通过右键此项目进行配置模块。

在弹出的模块配置窗口中，勾选要配置的模块点击“确定”即可。

注：如果想要删除某些模块，取消勾选即可。

会提示正在添加哪些模块，确认无误后直接点击“确定”即可。

添加成功后，可在项目的“模块”分类下看到被添加的模块。

(2) 类库夹中右键配置

右键要配置的模块，选择“将此模块加入项目XX”，这里会自动选择当前活动项目进行模块配置。

配置成功后可以在当前活动项目中看到此模块。

(3) 在帮助页中配置

例如：在进行类库功能搜索时，双击搜索结果打开帮助页，可以在帮助页中将此类所处的模块添加到当前活动项目中。

添加成功后可以在项目中看到此模块。

删除模块配置方法如下：

右键要删除的模块，选择“删除”即可。

2.4 支持库卸载

易语言演示：

点击“工具->支持库配置”菜单，进入支持库管理窗口，选中要卸载的支持库，点击删除即可卸载。

火山演示：

选择“工具-卸载模块”即可卸载第三方模块。

(1) 选择要卸载的平台。

(2) 勾选要卸载的模块，点击“卸载”即可。

2.5 支持库封装

易语言封装：

易语言支持库封装只能使用c、c++利用第三方c++开发工具来编写，比较复杂且需要非常熟悉c++。

火山视窗类库封装：

相对易语言来说，火山就简单很多。火山中的类库支持用火山源码文件来进行封装，可以通过嵌入c++代码也可以使用中文代码来封装。

创建部件DLL项目可以进行类库封装，具体看第4小节中的介绍。

3、模块差异

3.1 概述

易语言模块是易语言中非常重要的一个功能，用于程序功能分享，并且他人无法看到易模块源码。在火山中提供了“部件/部件DLL”用于实现类似易模块的功能。

解释如下：

名称 注释
部件

类似易模块，部件程序在分享后他人无法查看火山源码，但是在程序编译后可以看到输出的C++源码，安全性较差。
部件DLL

部件DLL为部件的升级版，编译部件DLL时，其关键代码会编译为DLL动态链接库，并自动生成火山接口文件。

相对于部件程序，部件DLL安全性是绝对有保证的，可广泛应用于多人协作或闭源项目中。

部件DLL在第4小节中单独进行介绍。
3.2 模块制作

易语言演示：

点击“程序->新建”菜单，可以创建易模块项目。

创建后编写一个易模块方法，需要公开后才可以被访问到。

点击“程序->配置”菜单，可以配置易模块项目属性，除了程序名称必须提供外，其它的根据需求进行填写。

最后点击“编译->编译”菜单进行易模块编译即可，易模块后缀名为“.ec”。

火山演示：

易语言模块在火山中名叫“部件”，随便新建一个项目都可以生成部件程序，相对易语言来说简单很多。

在项目中编写了方法后，右键要生成部件的文件，选择“生成部件程序”或者使用快捷键“Ctrl+Q”。

填写部件程序名称，点击保存即可。

部件程序生成后会自动打开部件程序，可以看到部件程序中只能看到被公开的类和方法信息。

如果整个项目中的所有火山源文件都需要生成部件程序，可以点击“生成->生成项目部件程序”菜单进行操作。

如果只需要特定的几个火山源文件生成布局程序可以按下“Ctrl”键进行多选，选择后生成。

选中后右键点击生成。

会弹出一个部件程序生成窗口，在此窗口中可以选择要生成的部件源码，也可以进行合并生成。

选择合并生成后，两个部件的代码会整合到一起。

注：合并生成务必保证其火山源码文件的包名一致。

如果某筛选器下，所有的火山源码都需要生成部件，可以右键筛选器进行生成。

3.3 模块配置

易语言演示：

在易语言项目中，右键“模块引用表”选择“添加模块引用”即可进行模块配置。

添加模块后如下图所示：

双击模块可以查看模块信息（未公开的子程序、变量、常量等不会显示）。

引用模块后就可以调用模块中公开的所有数据。

火山演示：

右键需要配置部件的项目，选择“添加->现有文件/模块”。

选择要配置的部件程序。

配置后效果如下：

引用部件后就可以调用部件中公开的所有数据。

3.3 模块删除

易语言演示：

右键要删除的模块选择“删除模块引用”即可删除。

火山演示：

右键要删除的部件，选择“删除”即可。

4、部件DLL

4.1 概述

“部件DLL动态链接库”和普通的“DLL动态链接库”没有本质的区别，都是动态链接库。只是前者在编译DLL时会自动生成其火山接口程序，方便他人使用其DLL中的功能，并且由于相关实现代码位于编译后的DLL中，因此安全性是绝对有保证的，可广泛应用于多人协作或闭源项目中。

同时系统在编译部件DLL程序时自动打包生成对应的火山模块，使用方将该模块安装到其火山系统中即可使用其中的功能。

部件DLL中的以下内容会被自动输出到所生成的接口程序中：

(1) 所有公开类及其中的公开成员常量和公开成员方法(不会包含具体功能实现代码)。

以下类不会被输出到所生成的接口程序中(即使满足前面的条件)：

(1) 系统类(其所处源文件位于当前所运行火山系统安装目录下的);

(2) 模板基础类,其所有模板实现类将被自动展开后输出;

(3) 启动类;

(4) 窗口组件类;

(5) 所有设置了值为假的“@输出到部件”属性的类(初级用户无需了解)。

以下方法不会被输出到所生成的接口程序中(即使满足前面的条件)：

(1) 嵌入式方法;

(2) 虚拟方法;

(3) 类的初始化和清理方法;

(4) 事件接收方法;

(5) 所有设置了值为假的“@输出到部件”属性的方法(初级用户无需了解)。

以下常量不会被输出到所生成的接口程序中(即使满足前面的条件)：

(1) 所有设置了值为假的“@输出到部件”属性的常量(初级用户无需了解).

系统在编译部件DLL程序时会自动处理该DLL程序中指定的所有附属文件(通过"视窗.附属文件"属性)，并会将其复制到所生成的接口数据目录中(部件DLL项目属性中可进行先关设置)。

4.2 项目创建

通过“文件->新建->项目”菜单，选择“部件动态链接库”进行项目创建。

创建后会有一个启动类和一个自定义的输出类，其中启动类在编译部件时并不会输出到部件中展示。

4.3 代码编写

定义一个测试类，用于测试部件程序输出情况。

4.4 属性设置

使用快捷键“Alt + Enter”打开项目属性。

程序：

此分类下用于设置DLL程序信息，同时也会将其内容自动输出到火山模块配置文件中，用于打包模块使用。

编译：

务必将“编译结果类型”设置为“部件DLL动态链接库”否则将无法编译部件程序，其它设置根据需求调整。

部件DLL编译：

用于设置部件DLL的相关编译信息，通过“自动生成模块安装包”的设置项可以自动打包成火山模块供他人使用。

4.5 编译发布版

部件DLL编译与普通DLL编译流程一样，右键项目选择“编译发布版本”即可。

编译后会输出一些路径信息，其中有DLL输出路径、部件数据路径、模块安装包路径等。

打开部件数据路径会看到火山模块配置文件，以及一个src文件夹，此文件夹内存储有部件程序文件和dll文件。

打开src路径会看到定义的dll文件夹和部件程序文件，在火山中引用部件程序就会自动调用dll中的内容，无需手动编写dll引用代码。

在dll文件夹中，除了存放有dll文件外，还存放有“@视窗.附属文件”所引用的附属文件。

4.6 部件引用

(1) 引用部件和引用普通文件一致，右键项目选择“添加->现有文件/模块”即可。

(2) 部件后缀名为wcv，选择要引用的部件文件即可。

(3) 引用部件后双击可打开查看部件DLL接口，会发现变量和未公开的信息并不会输出到部件DLL接口中。

(4) 引用后就可以在程序中调用部件DLL中的方法。

(5) 部件DLL中的信息框被弹出。

4.7 部件模块

部件dll模块和普通模块使用方式一致，通过“工具->安装模块”菜单就可以进行模块安装。

关于火山模块安装引用卸载操作可以看“支持库差异”中的介绍。


火山视窗和易语言基本编辑环境差异_火山平台语法手册

四、火山视窗和易语言基本编辑环境差异

1、代码输入方式差异

易语言支持首拼、全拼、汉字、双拼，同时也支持汉字与拼音混输的智能输入方式。

在火山平台中除了暂不支持双拼外，其余输入方式都支持。并且也可以在按下空格或回车键可将首个提示内容输入到代码编辑框中。

如下所示：

输入方式演示如下：

(1) 首拼输入

易语言输入演示：

如下所示，输入“jbbl”就可以表示“局部变量”。

火山输入演示：

如下所示，输入“jbbl”就可以表示“局部变量”。

(2) 全拼输入

易语言输入演示：

如下所示，输入“jubu”加空格就可以快速输入“局部变量”。

火山输入演示：

如下所示，输入“jubu”加空格就可以快速输入“局部变量”。

(3) 汉字输入

易语言输入演示：

如下所示，输入“局部”也可以将“局部变量”完整的提示并输入。

火山输入演示：

如下所示，输入“局部”也可以将“局部变量”完整的提示并输入。

火山平台暂不支持以下功能：

(1) 在易语言中输入“ bjk1.nr=“” ”，可以将此语句直接转换成“ 编辑框1.内容=“” ”从而实现对编辑框内容的赋值，火山中暂不支持此输入方式，如下所示：

(2) 易语言中当光标离开当前行后会对当前行进行自动整理并预编译，火山中暂时需要依赖“Enter(回车键)”或者“Ctrl+Shift+Enter”对当前语句编译，如下所示：

易语言演示：

火山演示：

注：扳手图标表示当前行被修改且没有进行预编译。

(3) 暂不支持使用中文引号用来表示文本字符串，也同样不支持中英混输的形式来表达字符串，如下所示：

易语言演示：

易语言会自动纠正符号错误。

火山演示：

火山中暂时必须全部使用英文引号才能表达文本字符串。

2、代码结构基本差异

易语言主要使用面向过程编程，额外也提供了类模块实现面向对象程序设计。

而火山平台全部采用面向对象设计，所有代码全部基于类操作。

火山中的代码的表现形式都是一层一层，如下：

可以清晰的看出类位于一层，成员变量和方法位于同一层，方法内的局部变量和方法语句调用，又是一层。

而在易语言中则没有层级关系，演示如下：

在火山中除了类和方法的层级是固定的无法调整外，其它变量、常量、方法语句等都可以进行层级调整。

例如：局部变量也可通过调整层级变为成员变量，也可以重新修改为局部变量。

在易语言中，没有层级操作概念。

如下所示：

选中局部变量右键选择“块操作 -> 向内缩进”或者使用快捷键“ctrl + [”。

就可以将局部变量改为成员变量。

同理使用“向外缩进”或快捷键“ctrl + ]”，可以重新将成员变量改为局部变量。

如果在方法中输入代码时，发现代码为绿色，证明代码输入到了注释层，此时可通过快捷键“ctrl + ]”进行向外缩进，就可以让代码重新恢复正常。

如下所示：

另外还有几个使用较多的快捷键为“Ctrl + Insert”和“Shift + Insert”，用作向前/向后插入行，部分电脑需要配合“Fn”键使用。

其中，在方法的参数/常量/变量定义表格上按下“Shift + Insert”快捷键，将固定在其下方插入一条空白语句行，如图：

在“变量1”的定义行上按下“Shift + Insert”快捷键后的结果如下：

关于火山平台程序结构详细介绍，可看新手入门教程第二章第三节中的介绍。


易语言和火山视窗帮助系统差异_火山平台语法手册

五、易语言和火山视窗帮助系统差异

1、即时帮助差异

1.1 差异

在易语言中光标定位方法或按下快捷键F1，就可以打开易语言的即时帮助，会在“提示”栏显示当前方法的帮助信息。

通过此帮助信息，可以查看方法参数注释信息，以便于理解和使用本方法。

在火山中同样也可以通过F1打开及时帮助，相比于易语言进行了升级，除了支持在输出栏显示方法参数信息外，额外新增了“帮助页”，可用于查看类、方法、变量、常量等数据的帮助信息。

帮助页效果如下，相比易语言简陋的帮助提示，火山的即时帮助信息更加详细。

1.2 帮助页常用功能

如下图为方法帮助页的效果，其它类型的帮助页效果大同小异，只是所显示的数据不同。

下面介绍类库帮助页中最常用的几个功能：

(1) 打开

本功能用于定位源代码，便于在一些方法存在问题时方便自己修改。

(2) 选择

用于在类库夹中定位所处位置。

(3) 例程

用于在火山系统例程库中搜索当前方法是否有对应案例，如果有将会打开“例程查找结果”窗口。

(4) 添加模块到项目

用于配置当前类/方法/变量/常量等数据所处的模块添加到当前活动项目中。

类库帮助页有以下打开方式：

(1) 类库夹中首次打开需要双击，随后可单击进行切换。

(2) 利用类库搜索打开

(3) 光标定位关键词，使用快捷键F1打开，部分电脑可能需要Fn + F1。

1.3 项目帮助

易语言中如果是当前程序想要查看一些帮助信息，只能通过鼠标的悬浮提示来实现。

火山中提供了完整的程序结构查看，可通过右键项目选择“查看程序结构”或使用快捷键“Shift + F1”即可打开当前项目的帮助窗口。

项目帮助窗口效果如下图：

2、参数提示差异

在易语言中当前行代码被预编译后会直接显示所有参数。

点击方法旁边的加号可以展开所有参数提示。

在火山中，使用“Ctrl + Shift + Enter”进行预编译代码后，并不会自动补全所有参数，可通过“工具->选项”菜单打开系统设置后，选择“火山程序管理器->全局”将“自动补全参数表”设置为真即可。

火山参数补全演示：

在火山中，点击方法旁边的加号可以展开所有参数提示，不同之处为火山还可以对展开的参数进行删除，删除后对应的参数提示也不再显示。

除此之外，在火山中输入参数分隔符时，也可以进行参数提示，这是易语言无法办到的。

3、书签差异

易语言书签位于“查看”菜单中。

火山的书签功能位于“编辑 -> 书签”菜单中。

快捷键差异如下：

易语言 | 火山
设置或取消书签（Ctrl + F6） | 加入或删除书签（Alt + F2）
到前书签（Shift + F6） | 到前书签（Shift + F2）
到后书签（F6） | 到后书签（F2）
书签跳转（Ctrl + F7） | 查看所有书签（Ctrl + Shift + F2）
无 | 加入或修改书签（Ctrl + F2）

4、例程打开方式差异

易语言例程位于“程序 -> 新建”菜单中。

火山例程位于“文件 -> 打开 -> 样例解决方案”菜单中。

如果存在多个平台，会进行提示，选择视窗项目点击确定即可。

点击解决方案就可以看到火山自带例程。


从易语言到火山视窗教程目录_火山软件开发平台入门教程目录

一、程序结构差异

1. 基本概述

2. 程序集

3. 注释

4. 类模块

4.1 类的构成差异

4.2 初始化和销毁差异

4.3 启动方式的不同

4.4 自定义类差异

4.5 基本属性表

4.6 注意事项

5. 变量差异

5.1 局部变量

5.2 程序集变量

5.3 全局变量

5.4 变量的初始值

5.5 其它注意事项

6. 常量差异

6.1 易语言常量概述

6.2 火山常量概述

6.2.1 常量的定义

6.2.2 成员常量

6.2.3 局部常量

6.2.4 全局常量

6.2.5 常量的初始值

7. 资源差异

7.1 易语言资源概述

7.2 火山视窗资源概述

8. 子程序差异

8.1 基本概述

8.2 定义通常方法

8.3 定义静态方法

8.4 定义动态方法…

8.5 定义属性方法

8.6 定义事件方法

8.7 定义全局静态方法

8.8 定义虚拟方法

9. 事件差异

10. 自定义数据类型

11. DLL命令

二、符号差异

1. 操作符差异

1.1 符号对比

1.2 点

1.3 方法符小括号

1.4 参数分隔符逗号

1.5 数组符号

1.6 注释符

1.7 双引号

1.8 单引号

1.9 转义符

2. 运算符差异

2.1 运算符号对比

2.2 四则运算符

2.3 取反符

2.4 强制类型转换

2.5 求余符

2.6 关系运算且

2.7 关系运算或

2.8 关系运算小于等于

2.9 关系运算大于等于

2.10 关系运算小于

2.11 关系运算大于

2.12 关系运算不等号

2.13 相等号

2.14 赋值运算符

三、数据类型差异

1. 数据类型对照表

1.1 字节型

1.2 短整数型

1.3 整数型

1.4 长整数型

1.5 小数型

1.6 双精度小数型

1.7 逻辑型

1.8 时间日期型

1.9 子程序指针

1.10 文本型

1.11 字节集

1.12 字符

1.13 模板类型1~8

2. 基本数据类型扩展类与对象类

2.1 基本数据类型包装类

2.2 对象类

四、关键字差异

1. 算数运算关键字

2. 逻辑比较关键字

3. 其它关键字

3.1 返回

3.2 逻辑值

3.3 取反

3.4 选择

3.5 位运算

4. 火山新增关键字

4.1 名称关键字

4.1.1 属于

4.1.2 空对象

4.1.3 父对象

4.1.4 本对象

4.2 方法关键字

4.2.1 挂接事件

4.2.2 取消事件挂接

五、流程控制语句差异

1. 如果差异

2. 如果真差异

3. 判断差异

六、循环结构语句

1. 循环语句对照表

2. 判断循环首差异

3. 循环判断首差异

4. 计次循环首差异

5. 变量循环首差异

6. 到循环尾

7. 跳出循环


火山视窗和易语言程序结构差异_火山平台语法手册

一、程序结构差异

1、基本概述

在易语言中主要使用面向过程进行程序设计，额外提供了类模块实现面向对象程序开发。

而在火山中则全部采用了面向对象进行程序设计，并且火山中的类所提供的功能比易语言的类模块功能更加丰富。

关于火山如何进行面向对象程序设计，可看新手教程中第二章第二节面向对象程序设计。

2、程序集

程序集是易语言子程序的集合，在火山中并无程序集的概念，但是提供了“包”。

包名通常名字为“公司名称+软件名称+功能分类”进行命名。例如：“递归.火山软件.主程序”或者“火山软件.文本操作模块”等，只要方便自己后期维护任何命名都可以，但是包名中必须保证至少有一个小数点。

在易语言中程序集名称随意，无句点要求，如下所示：

在火山程序中每个火山源文件都会有一个包名，无法删除且固定于程序首行位置，并且一个源文件只能存在一个包名。

注：调试版可以忽略包名不写，编译发布版必须提供包名。

在易语言中每个程序集都需要提供一个程序集名称，也可以忽略：

不同源文件的包名可重复，程序会自动将两个文件归位一个包内，相同包名的文件即使不公开类也可以实现跨文件调用。

易语言中的程序集即便是程序集名称不同，子程序不进行公开也可以实现跨程序集访问子程序。

但是在火山中，如果两个火山源文件的包名不一致，则需要公开类才能被其它包的程序访问。

3、注释

易语言的程序集、子程序、参数的注释都位于备注栏，不支持换行。

语句注释需要使用单引号进行注释。

火山的注释有以下几种形式：

3.1 以双斜杠“ //”字符串引导，说明其处于被注释状态，其以及其中的所有内容(包括直接/间接子成员)在编译时都将被忽略。

3.2 在类外部的程序行，被称为文档注释行。文档注释行的添加，只需要光标定位类名一栏，然后按键盘上的“ins/insert”键就可以插入文档注释行，部分电脑需要按下组合键“Fn+ins”键才可以插入。

3.3 在类内部但是在类方法外部的程序行，被称为类注释行。类注释行的添加同文档注释行一致，光标定位方法名按“ins”键即可。

3.4 在火山代码表格的备注栏输入，也属于注释文本，此注释文本可以在火山代码中被悬浮提示。除了类备注外，方法/变量/常量等备注信息都可以通过提示框显示出来。

3.5 在注释文本中如果以一个或多个减号/等号字符结束，火山将会自动在其后绘制对应长度的单/双分隔线，如下图所示：

3.6 火山中的注释支持多行，如下图所示：

4、类模块

4.1 类的构成差异

易语言类模块是单独存在的，用于扩展易语言面向对象程序设计，其各个子成员如下：

1. 类名。

2. 私有成员变量。

3. 方法。

在火山中的类相比易语言强大很多，提供了更加丰富的子成员，其成员变量也支持公开，以便于其它类访问使用，如下所示：

火山视窗程序结构:

1. 包定义

1. 文档嵌入行(知道即可无需了解)

2. 文档注释行

3. 类定义

1. 类嵌入行(知道即可无需了解)

2. 类注释行

3. 类成员常量

4. 类成员变量

5. 类成员方法

1. 方法参数

2. 方法局部常量

3. 方法局部变量

4. 语句注释行

5. 语句行

6. 语句嵌入行(知道即可无需了解)

火山视窗程序结构演示：

4.2 初始化和销毁差异

在易语言中添加类模块会自动添加类的“_初始化”和“_销毁”方法，用于创建对象时初始化数据或销毁数据。

在火山中，需要通过“Ctrl + I”打开插入特定内容窗口，手动插入“类_初始化”和“类_清理”。

使用效果如下图：

4.3 启动方式的不同

火山中名叫“启动类”的类被用作指定用户程序的启动入口类，和易语言中“_启动窗口”或“_启动子程序”作用一致，用户程序将从此处开始执行，并且启动类在整个用户程序中只能存在一个且不允许修改其名称。

不同火山程序的启动类的样式不同，并不是固定的，是由新建项目时模板程序自动生成的，如下所示：

创建火山视窗“MFC窗口程序”项目时：

会自动生成“启动类”和对应的“主窗口”类，用于视窗程序的启动。

4.4 自定义类差异

在易语言中需要通过右键“程序数据”进行插入类模块。

插入后的类模块都是独立存在的，互不干扰。

火山中定义类需使用“ctrl+D”快捷键进行定义，或者鼠标右键选择“插入->插入新类”进行定义类操作。

相对于易语言固定死的类模块，火山中更加自由，每个火山源码文件可以创建N个类，在创建类时可以将相关类创建到一个火山源码文件中，以便于后续的维护和管理。

4.5 基本属性表

(1) 基础类

易语言基础类演示：

火山基础类演示：

相对于易语言中的基础类，火山中的基础类更强大，可以同时访问基础类中的成员变量及方法。

如果在火山中定义了非空基础类，当前类将自动继承所有来自该基础类的内容，如果该基础类还有基础类，将一并继承过来，此时本类称为这些类的“继承类”。

注: 有一些编程语言也称“继承类”为“子类”，“基础类”为“父类”，意思是一样的。

继承类访问其直接/间接基础类中的成员不需要其为公开状态。

(2) 公开

在易语言中类模块的公开仅针对易模块有效，用于当前类是否对外公开，如果在程序中即便此类不进行公开，也可以被程序所访问。

注：如果想要访问类模块中的方法，方法必须公开。

在火山中公开类可以在所处包外部被访问，而非公开类只能在所处包内部被访问。

如下图所示：文件1的包名和文件2的包名不一致，文件1想要使用文件2中的类，必须公开文件2中的类。

而文件2中未公开的类，只能在“火山.软件”的包中使用。

4.6 注意事项

(1) 同一个包中暂时不允许出现相同的类名，如下图所示是错误的。

同项目下，只要包名一致不同文件下也不允许类名重复，如下图所示的写法是错误的。

(2) 类名为单名称(即其中不允许使用小数点)，如下图所示是错误的。

(3) 引用类名时可以直接使用类名称，或者使用“包名.类名”进行引用，此格式被称为类的全名称。

注意：如果调用其它火山源文件的类，注意观察两个源文件包名是否一致，如果不一致要注意公开类才可以被访问到。

5、变量差异

5.1 局部变量

易语言演示：

（1）在易语言中局部变量只能位于子程序和程序语句中间，如果你想要在某个程序语句下方插入一个变量，在易语言中是不支持的。

（2）易语言的局部变量提供了“变量名、类型、静态、数组、备注”五种类型。

火山演示：

（1）在火山中局部变量可以在方法中的任意位置插入，相比易语言来说更加灵活，也方便后期维护和整理。

（2）火山中的局部变量提供了“变量名、类型、静态、参考、初始值、属性名、属性值、备注”八种类型。

注1：在火山视窗中“参考”类型暂不支持操作。

注2：“初始值”只支持基本属性类型设置初始值，对象类型不支持设置初始值。

变量定义：

在火山中变量的定义和易语言一致，都是通过快捷键“Ctrl+L”进行创建，或者使用右键菜单中的“插入->插入新成员/局部变量”来进行定义变量操作。

如果想要新增变量还可以在已有变量的基础上，按“Enter”(回车键)增加新的变量。

5.2 程序集变量

易语言中的程序集变量，就相当于火山中的成员变量。不同之处为，火山的成员变量可以在任意方法的上方或者下方插入而易语言的程序集变量只能在程序集的首部位置插入。

易语言程序集变量演示：

（1）其变量只提供了“变量名、类型、数组、备注”四种类型。

火山成员变量演示：

（1）在火山中插入成员变量的快捷键也是“Ctrl + L”，只要不在方法的子语句体内进行插入，那么插入的变量就是成员变量。

（2）其成员变量提供的类型相对于局部变量多了一个“公开”类型，可用于公开当前变量提供给其它类调用。

5.3 全局变量

易语言全局变量演示：

（1）在易语言中可通过快捷键“Ctrl + G”可创建全局变量。

（2）全局变量为单独的一个表，定义后即便不进行公开也可以在程序任意位置访问。

（3）全局变量共有“变量名、类型、数组、公开、备注”五种类型，其中公开仅对易模块有效。

火山全局变量演示：

在火山中其实没有易语言中全局变量的概念，但是可以通过“类+成员变量”的形式间接实现，如下图所示：

当成员变量勾选公开和静态后，就可以通过“类+成员变量”的形式间接实现易语言中全局变量的效果。

注：如果跨文件调用时，需要注意两个文件的包名是否一致，如果不一致需要同时公开类才可以访问，如下图所示：

5.4 变量的初始值

在易语言中所有的基本数据类型都是具有默认值的，但是如果想要设置其它默认值必须通过赋值的形式实现，如下所示：

在火山中变量的初始值设置大致分为以下三种类型，“基本数据类型”、“类数据类型”和“数组数据类型”，每种类型的初始值都是不同的。

5.4.1 基本数据类型变量

在基本数据类型中，数值型(整数/小数/长整数/短整数)变量的初始值为0，逻辑型变量的初始值为假，文本型变量的初始值为""(即空文本)

如果不想使用默认初始值，也可以如下图所示在表格中设置初始值或者通过代码设置初始值。

变量初始值的设置除了直接使用立即数外，还可以使用“类名.常量名”进行设置。

使用“类名.常量名”，优点是便于记忆防止输入错误。

如果常量在当前类中，也可以省略类名直接输入常量名字，如下图所示：

如果要设置的文本型数据为多行文本，可以打开“初始值编辑器”设置内容。

在打开的初始值编辑器中输入想要设置的内容即可。

火山视窗平台将自动生成“\r\n”对文本数据进行换行。

5.4.2 类数据类型变量

(1) 对于类数据类型的变量，除资源类外其它任何类数据类型都不支持在初始化表格中设置初始数据。

注：火山中所引用的外部资源，火山源文件只是引用其文件路径，因此外部文件不能删除，删除后将无法正常编译通过。当程序编译完成后，引用的文件会打包到程序内部，因此不会再依赖引用的外部文件。

火山视窗平台资源类型演示：

(2) 火山视窗平台，由于暂时不支持定义参考型数据，因此所有非基本数据类型变量均为对应的对象。

5.4.3 数组类型变量

(1) 在易语言中支持直接赋值数组数据，如下所示：

(2) 在火山中不支持等于号赋值，需要在初始值中填写，如下所示：

(3) 如果基本数据类型数组未指定初始值，但指定了成员数(如下图所示)，则数值型数组变量的每个成员初始值为0，逻辑型数组变量的每个成员初始值为假。

(4) 其它所有数据类型数组变量的每个成员初始值，在火山视窗平台为对应的对象实例。

5.5 其它注意事项

在火山视窗中变量根据属性不同，还可以分为“公开变量”、“静态变量”。

5.5.1 公开变量

当变量公开后可以被其它类访问。

注：仅针对成员变量，局部变量无此属性。

而非公开变量只能在本类或者其继承类中访问。

5.5.2 静态变量

静态变量即勾选“静态”后的变量称为静态变量，静态变量又分为成员静态变量和局部静态变量。

如下图所示：

成员静态变量有以下特点：

(1) 静态变量在所处类载入后即保持始终存在，并且未存放在类的对象实例中，而只存放在类信息本身中，所以无论定义多少类对象实例，静态成员变量都只存在一份。

(2) 由于静态成员变量存放在类本身中，所以在其所处类/继承类外部需要以“所处类名.静态成员变量名”的方式访问。

利用成员静态变量的特点可以实现类似全局变量的效果，如下图所示，定义了一个成员静态变量后在其它任何类中都可以访问。

如下图所示，如果定义了“测试类”的实例变量去访问“成员静态变量”，虽然代码能被编译器接受但是会提示警告信息，并且火山编译器会自动替换成对应的类去访问。

除此之外，无论定义了几个“测试类”的对象变量，“测试类”的“静态成员变量”始终只存在一份，因此黄色箭头指向的代码所访问的“静态成员变量”，实际上都是同一个。

(3) 由于静态变量初始化时不存在所处类实例对象，因此所静态的变量如果存在“事件方法”将不会自动挂接其事件到其所处类，需要在必要的时候通过“挂接事件()”方法手动挂接事件。

如下图所示，假设“测试类”中存在事件方法，如果想要触发事件，需要通过“挂接事件()”方法手动挂接事件。

6、常量差异

6.1 易语言常量概述

（1）易语言中的常量是单独的一个常量表并且为全局常量，即使是不公开常量值也可以在程序的任意位置访问。

（2）常量表有“常量名称、常量值、公开和备注”四种类型，其中“公开”仅对易模块有效。

（3）常量的访问通过“#”访问。

6.2 火山常量概述

在火山中常量和变量一致，都可以定义为“局部常量、成员常量以及全局常量”。

常量的“静态”固定为真不可修改，即:常量并未存放在类的对象实例中，而只存放在类信息本身中，所以无论定义多少类对象实例，常量都只存在一份。

6.2.1 常量的定义

易语言常量定义：

在易语言中需要通过右键常量表进行插入。

当存在常量时，可通过常量表按回车键新增。

火山常量定义：

常量的定义可通过组合快捷键“Ctrl+B”进行创建，或者使用右键菜单中的“插入->插入新常量”来进行定义常量操作。

在类中插入的常量为成员常量，在方法中插入的常量为局部常量。

定义常量后输入名称并在“类型”一栏填写自己需要的类型即可。

如下图所示，在常量类中定义了一个类型为“整数”的“成员常量1”。

如果想要新增常量还可以在已有常量的基础上，按“Enter”(回车键)增加新的常量。

6.2.2 成员常量

成员常量可以在当前类的所有方法中调用，包括静态方法。

注：在易语言中无成员常量概念。

6.2.3 局部常量

局部常量只能在当前方法中被调用，其它方法无法使用，并且只能在常量定义表下方被使用。

如下图所示，定义的两个局部常量只能在常量定义表下调用。

注：在易语言中无局部常量概念。

6.2.4 全局常量

火山中的全局常量和全局变量使用方法一致，都是通过“类名+常量名”的形式访问，如下图所示：

6.2.5 常量的初始值

易语言常量值：

在易语言中，常量不需要填写数据类型，直接提供对应立即数即可。

火山常量值：

在火山中，常量的值设置大致分为以下两个类型，“基本数据类型”和“资源数据类型”。

在基本数据类型中，直接在“初始值”一栏提供对应的数据类型即可，如下所示：

如果为资源数据类型，需要提供对应资源的立即数，火山平台会自动处理所引用的资源数据。

如下图所示，火山视窗平台中的“视窗文件资源”需要提供一个文本型的文件相对路径或绝对路径，可直接在初始值输入或者通过下拉按钮浏览选择。

如果要设置的文本型数据为多行文本，和变量一样设置初始值一样，也可以打开“初始值编辑器”设置内容。

在打开的初始值编辑器中输入想要设置的内容即可。

在火山视窗平台将自动生成“\r\n”对文本进行换行。

如果常量是数组类型，其数组符号内可以提供成员数也可以不提供，需要注意的是如果提供了成员数则务必保证初始值设置的数量和提供的成员数一致。

7、资源差异

7.1 易语言资源概述

（1）在易语言中提供了两种资源导入，分别为“声音资源”和“图片资源”都是独立存在的资源表，通过任意资源表也可以导入非声音/图片的资源。

注：导入的资源会打包到源码文件中，导入后外部的文件可以删除。

声音资源如下：

图片资源如下：

（2）在资源被调用时和常量一致，也是通过“#”来引用资源。

声音资源引用演示：

7.2 火山视窗资源概述

（1）在火山视窗中资源并不是单独存在的资源表，而是依赖变量或常量可以在任意位置创建，相比易语言更加灵活，并且提供了多种资源类型。

注：在火山中引用资源并不会打包文件到火山源码中，外部资源文件不可删除。

各种资源引用效果如下：

（2）火山资源的使用方式和变/常量的使用方式一致，如下图所示：

8、子程序差异

8.1 基本概述

在火山视窗中并无子程序的概念，只有方法。

易语言子程序效果：

火山视窗方法效果：

基本差异如下：

（1）火山视窗方法必须依赖类，无法脱离类独立创建。

（2）火山视窗并无“易包”，但提供了部件DLL，其功能类似于易包。

（3）易语言的子程序默认静态，火山视窗需要手动勾选。

（4）易语言基本数据类型参数支持以参考方式传递，火山不支持(文本型除外)，需要通过使用对应的基本数据类型类(譬如"整数类")来间接实现参考传递; 易语言和火山视窗(除文本型外)非基本数据类型参数均自动以参考方式传递;

易语言整数类型参考演示：

火山整数类型参考演示：

（5）可空属性：

易语言可空演示：

火山可空演示：

在火山中，可使用“@默认值”属性来代替易语言中的可空属性。

（6）火山方法属性也可以通过设置一些属性值实现一些功能，如下图所示：

设置“@视窗.附属文件”后，属性值选择的文件/文件夹会在程序调试或编译发布版时，将其输出到程序所在目录。

（7）创建

易语言创建：

易语言需要使用“Ctrl+N”快捷键进行创建，或者使用右键菜单“新子程序”进行定义。

火山创建：

火山视窗需要使用“Ctrl+M”快捷键进行创建，或者使用右键菜单“插入 -> 插入新方法”进行定义。

（8）易语言子程序分为两种，普通子程序和事件子程序，而火山中根据用途不同，分成以下几类：

1. 通常方法

2. 静态方法

3. 支持以动态格式调用的静态方法

4. 属性方法

5. 事件方法

6. 全局静态方法

7. 虚拟方法

8.2 定义通常方法

如下图所示，即表示定义了一个通常方法：

新建一个类，在类中新建一个方法，并且方法的类别选择“通常”，所定义出来的方法就叫通常方法。

调用通常方法代码如下图：

1. 在外部其他类中调用这个方法首先需要公开此方法。

2. 调用方法的时候需要定义变量，例如：在窗口被首次激活的时候定义“测试类”变量并调用这个方法。

运行结果如下图：

最终按下F5键当程序窗口出现后，会显示一个信息框，证明通常方法被调用成功。

8.3 定义静态方法

(1) 静态方法与通常方法的区别在于，设置静态方法后，可以省去定义变量取调用方法的步骤，静态方法只需要通过“类名+方法名”的形式就可以调用。

如下图所示：

凡是勾选静态的方法，都可以称呼为静态方法。

(2) 在静态方法内部，只能访问其所处类或者其所处类的基础类中的成员常量或者静态成员变量。

如下图所示：

8.4 定义支持以动态格式调用的静态方法

本方法其实也是静态方法的一种，如果静态方法所定义的第一个参数是类本身，那么这样的方法就可以称为是“支持以动态格式调用的静态方法”。

本方法有两种调用形式，既可以通过类名去访问这个方法，又可以定义变量访问这个方法。

如下图所示：

在“测试类”中定义了一个名为“动态方法”的静态方法，第一个参数提供了“测试类”自身，那么在程序中调用这个方法时，就会有两种形式。

(1) 第一种方式是标准的静态方法访问方式。

(2) 第二种就是优化后的方式，其第一个参数被移动到方法访问对象上，这种方式在编译时将被自动转换为第一种方式。

8.5 定义属性

在火山中的属性大致分为三个类别：可读属性，可写属性，可读写属性。可读写属性又分为方法属性和变量属性。

8.5.1 定义可读属性

读属性用于读取当前类中的某些数据值进行返回，其格式必须满足以下条件：

(1) 插入的方法必须公开，且类别需要选择“属性读”。

(2) 不能为静态方法(实际上静态方法也可以用作定义属性，通常情况下用不到，知道即可)。

(3) 不可以提供参数。

(4) 必须提供一个返回值。

如下图所示，在“测试类”中定义了一个返回值为“文本型”的读属性方法，并返回了一个成员变量。

需要注意的是“属性读”虽然是以方法的形式定义，但是在调用这个属性的时候不能使用“变量1.属性读()”的形式访问，正确的访问如下图所示，不需要提供括号。

8.5.2 定义可写属性

写属性用于设置当前类中的某些数据，其格式必须满足以下条件：

(1) 插入的方法必须公开，且类别需要选择“属性写”。

(2) 不能为静态方法(实际上静态方法也可以用作定义属性，普通用户无需掌握，知道即可)。

(3) 必须提供一个参数，提供的这个参数被称为属性值。

(4) 不允许提供返回值。

如下图所示，在“测试类”中定义了一个属性值为“文本型”的写属性方法，并将属性值赋值给了一个成员变量。

虽然“属性写”也是以方法来定义，但是在调用这个属性的时候不能使用“变量1.属性写()”的形式访问，正确的访问如下图所示，属性名和属性值之间用等于号连接。

除上述访问方式外，写属性还可以直接在属性表中访问，如下图所示：

写属性除了直接提供对应值外还支持备选列表，可以通过备选列表设置常用属性值。

视窗平台设置如下图所示，在方法的属性栏使用“@列表选择项”属性值可打开编辑器进行设置。

多条备选值用换行分隔，如果属性值为文本型注意需要提供英文状态下的双引号。

最终设置完成后如下所示，会自动添加\r\n换行，双引号也会自动转义。

如果在安卓平台下，设置完成后会自动使用\n分隔。

无论是安卓还是视窗，最终在使用时效果是一样的，可以通过下拉列表选择属性值，如下图所示：

属性表中的备选列表，除了上述的备选列表形式外，还支持“常量类”形式的备选列表。

“常量类”与“@列表选择项”不同之处在于，常量类的内容是固定的，一旦设置常量类将不支持自定义内容（只能去常量类扩充，但软件需要重新编译），而“@列表选择项”不受此限制。

常量类的定义如下图所示：

注：当前类设置“@常量类”属性后，当前类中只能提供常量，不可以提供变量、方法。

常量类的使用：

(1) 写属性中使用常量类也很简单，首先需要将参数类型设置成对应的常量类的类名。

(2) 然后通过参数名来判断是否为指定常量，从而进行相应的代码操作。

(3) 调用本属性的时候就可以在属性栏下拉选择，如果通过代码设置就需要通过“类名+常量名”的形式设置。

8.5.3 定义可读写属性

可读写属性分为“方法读写属性”和“变量读写属性”，这两个的不同之处在于，方法属性可以在方法中编写代码，对属性值进行一些其它操作，而变量属性不支持。

(1) 方法读写属性

方法读写属性其实就是将“属性写”和“属性读”两个方法配合使用，从而实现同一个属性名既可以读又可以写的效果。

如下图所示，当读写属性配套使用时，方法名可以一致。

注意：读写属性配套使用时，两者的名称必须完全一致，而且读属性方法的返回值数据类型必须与写属性方法的参数数据类型一致，如下图所示的写法是错误的：

只要读写属性按照规范编写，就可以如下图所示进行调用：

(1) 在窗口被首次激活时定义“测试类”变量。

(2) 定义后就可以在属性表中调用“属性方法”写属性用于设置属性值。

(3) 写属性设置后就可以通过同名读属性取出设置的属性值。

当程序运行后，设置的属性内容可以被成功读取。

(2) 变量属性

变量属性即通过成员变量来当属性使用，如下图所示，只要在成员变量的属性表中设置“@属性变量”属性值设置为“真”，就可以在此类变量的属性表中使用这个成员变量设置数据。

当程序运行后，设置的属性内容可以被成功读取。

8.6 定义事件方法

在易语言中只有组件存在事件，其它对象事件只能通过子程序回调来实现，效果不直观。在火山中为了解决这个问题，专门提供了事件方法来处理。

8.6.1 定义事件需要满足以下条件：

(1) 插入的方法“类别”必须设置为“定义事件”。

(2) 访问权限必须为公开。

(3) 不允许设置静态。

(4) 必须填写返回值，并且返回值只能是整数。

(5) 方法内不允许有任何代码。

(6) 事件方法的参数没有要求，根据自己的需求决定是否提供。

如下图所示，在“测试类”中定义了一个名为“测试事件”的事件。因为事件不能平白无故触发，必须要有一个条件，因此这里还定义了一个“触发事件”的通常方法来调用这个事件。

8.6.2 自定义事件的调用与触发：

以火山视窗为例，在窗口类中定义“测试类”的成员变量，光标定位“类型”会出现一个小按钮，点击可出现事件列表选择后可添加添加“测试事件”的事件接收方法。

如下图所示，为对应“接收事件”添加完成后的效果。

8.7 定义全局静态方法

所谓全局静态方法就和易语言中的子程序效果一致，此方法调用的时候不需要输入类名，也不用定义类变量，直接输入方法名即可调用，并且可以无视包名，可以随意的跨包调用。

定义方法如下图所示：

(1) 在方法所处类的属性栏设置“@全局类”，属性值设置为“真”。

(2) 插入的方法需要同时勾选公开和静态，对于返回值类型和参数表没有特殊要求，根据自己的需求填写即可。

定义完成后，就可以在火山程序的任何方法下调用（定义事件方法除外），如下图所示：

8.8 定义虚拟方法

8.8.1 什么是虚拟方法？

如果在火山中，某个类中的某个方法不能满足使用需求，但是我们又不想重新定义一个方法来操作，这个时候就可以利用火山的“虚拟方法”来实现对这个方法进行重写，这样的重写操作在火山中就称为虚拟方法。

例如：一家销售公司每个人都有底薪2000元，每个人的业绩不同提成也不同最终得到的工资也不是不同的。那么这个底薪2000元就可以理解为是虚拟方法，员工A和员工B的提成不同，只需要重写这个2000元底薪加上各自的销售业绩就是实际工资，不需要额外建立员工A方法和员工B方法来单独计算。

8.8.2 虚拟方法的定义和调用

(1) 虚拟方法的定义

定义虚拟方法很简单，只需要在一个通常方法的属性名上填写“@虚拟方法”属性值提供“可覆盖”即可。

(2) 虚拟方法的调用

光标定位类名会出现一个按钮，点击可添加基础类的虚拟方法。

添加完成后如下图所示：

8.8.3 虚拟方法实例

下面以火山视窗为例实现一个简单的虚拟方法的实际应用案例：

(1) 假设有一家销售公司，他们公司的工资都是底薪+提成的形式，因此可以首先定义一个“基本工资类”并新增一个虚拟方法，将实际工资计算出来并返回。

(2) 但是某些员工是新员工，假设为“员工A”，他的工资需要在原薪资的结构上单独计算，因此需要继承一下“基本工资类”并添加“基本工资”虚拟方法。

(3) 假设财务忘记扣税，那么此时可以在此方法下重写本方法进行扣税，并返回扣税后的薪资。也可以进行其它操作，譬如员工迟到从提成里面扣除一些工资，这个就需要根据自己的需求来编写代码。

(4) 假设有一个十年的老员工，为“员工B”，老员工的提成为双倍提成，就可以在“基本工资”的虚拟方法下重写工资计算公式。

(5) 最后在窗口中插入一个“工资计算”方法用于计算最终工资，参数提供“基本工资类”和“提成”，并返回实际工资。

(6) 在主窗口创建完毕事件下，对员工A、B的工资进行计算，因为“员工A、B”都继承了基本工资类，因此其对象实例可以填写到“工资计算”方法中。

(7) 最终可以得出两个员工的真正工资。

员工A的实际工资为：1000(底薪) + 100(提成)-100(税) = 1000元

员工B的实际工资为：1000(底薪) + 100*2(提成) - 100(税) = 1100元

以上就是火山视窗中虚拟方法的实际应用案例，视窗虚拟方法例程下载

9、事件差异

在易语言中事件都是单独处理的，如下所示：两个按钮点击后会生成两个子程序，并且互不干扰。

在火山中相同类型的对象事件是统一处理的，如下所示：两个按钮点击后只会生成一个事件方法，需要通过“来源对象”参数来区分是哪个按钮被点击。

通过标记值参数，也可以判断事件来源，如下所示：

注：关于组件布局器相关知识，第三章中会详细介绍。

10、自定义数据类型

易语言中的自定义数据类型（又称结构体），可定义一些结构数据，譬如：定义一个学生信息结构，可以非常方便的设置和取出学生信息。

如下图所示：

在火山视窗中，并没有提供和易语言一样的结构表格，但是利用“类+成员变量”的形式可以实现和“自定义数据类型”一样的效果。

注：此方式不能用于调用第三方库时使用。

如果在调用第三方库或者使用微软API时，遇到结构体需要增加一个“@视窗.结构类”属性，如下所示为一个结构体的实际应用：

注：如果第三方库或微软api的结构体需要使用文本型或字节集类，在火山视窗中并不能直接使用这种类型，需要使用“变整数”走指针来获取对应数据。

11、DLL命令

在易语言中DLL命令是单独的一个表，通过右键“程序数据”可以插入新的DLL命令，用于调用外部库或微软API。

易语言DLL命令演示如下：

易语言调用DLL命令如下：

在火山中DLL命令的定义更加灵活，随便建立一个方法都可以用来表示一个DLL命令。

差别如下：

（1）易语言中的库文件名使用“@视窗.输入”属性来表示。

（2）易语言中库对应的命令名使用“@输出名”属性来表示。

（3）在火山视窗中必须勾选公开静态。

（4）因火山视窗全面采用Unicode编码，因此调用api时需要使用W版本的命令，这里即“CharLowerW”。

（5）如果在易语言中使用DLL命令用到了字节集或文本型，在火山视窗中需要统一使用变整数、用指针来处理。因为火山视窗中的字节集类和文本型是包装类型和易语言中的类型本质上不一致。

调用演示如下：

（1）首先需要取出文本的字节集数据。

（2）取出字节集指针后，放入DLL命令中。

（3）利用“指针到字节集”将结果指针转换成字节集数据。

（4）最后利用“字节集到文本”将结果字节集转换成文本显示。

最终结果：


火山视窗和易语言符号差异_火山平台语法手册

二、火山视窗和易语言符号差异

1、操作符差异

1.1 符号对比

符号名称 易语言 火山 注释
点 . .

用来作为分隔类/类对象与其成员名称。

譬如：编辑框1.内容
方法符小括号 () ()

其作用是提供调用方法时所需要的参数表，无论方法是否有参数都需要输入括号。

譬如：信息框()
参数分隔符 , ,

本符号用于分隔参数表中的各个参数。

譬如：某方法(参数1,参数2,参数3)
数组符号 [] []

用于表示数组类型。

注：火山视窗中数组下标从0开始。
注释符 ' // 用于表达注释信息。
双引号 “ ” " " 用于表达字符串立即数。

注：火山视窗中必须是英文状态下的双引号。
单引号 无 ' ' 用于表达字符立即数
转义符 无 \ 用于转义文本操作

1.2 点

点即〝 . 〞此符号在火山中有两个作用，一是用于建立包/类的全名称，二是用来作为分隔类/类对象与其成员名称。

如下图所示：

在输入句点时会激活火山代码提示，和易语言效果一致。

易语言效果演示：

火山效果演示：

1.3 方法符小括号

方法符即〝 ( ) 〞 ，其作用和易语言中一致，提供调用方法时所需的参数表。

易语言效果演示：

火山效果演示：

1.4 参数分隔符

参数分隔符即〝 , 〞，必须是英文状态下的逗号。本符号用于分隔参数表中的各个参数。

易语言演示：

“子程序1”存在三个参数就需要输入两个逗号。

火山演示：

“通常方法2”存在三个参数就需要输入两个逗号。

参数分隔符也是可以省略的，假如最后一个参数存在默认值，如果你不需要输入这个参数可以省略。

如下图所示：

“通常方法2”的第三个参数存在默认值，如果调用此方法时，不需要输入这个参数，可以省略一个逗号的输入。

需要注意的是，如果被调用的方法是“支持以动态格式调用的静态方法”，那么参数逗号数量则根据调用方式动态选择。

如下图所示：

通过变量调用需要输入三个参数，通过类名调用需要输入四个参数。

如果你不太确定到底需要输入几个逗号来分隔参数，可以如下图所示：

在方法中输入逗号时，注意观察参数名称的颜色变化，当参数名称颜色非白色时，证明当前要输入的参数为此参数，从而可以判定要输入几个逗号。

1.5 数组符号

数组符号即〝 [] 〞，用于表示数组类型，在火山中需要将其填写到类型一栏才可以表示数组。

易语言数组定义演示：

火山数组定义演示：

数组下标（索引）：

在易语言中数组下标从1开始，提供1表示为数组第一个成员，如下所示：

在火山中数组下标从0开始，如下图所示：

“数组变量[0]”最终值将为“1”，如果下标提供1则此数组变量的最终值将返回2，以此类推。

下标除了用于访问成员外还可以替换成员，如下所示：

数组符号中还可以提前设置数组成员数量，如下所示：

多维数组定义及赋值：

注：在火山视窗暂不支持参数和返回值使用数组。

1.6 注释符

在易语言中注释符使用' 表示，并且只能注释代码语句。

在火山中注释符即〝 // 〞用于表达注释信息，想比易语言强大很多，它可用于类名、变量、常量、方法名、参数和方法语句的注释。

如下图所示：

1.7 双引号

在易语言中双引号需要使用中文引号，用于表达字符串立即数。

如下所示：

在火山中，必须是英文状态下的双引号。用于表达字符串立即数，可用于变量、常量的初始值以及变量的赋值中。

如下图所示：

字符串立即数中也支持转义符操作，这是易语言所不具备的功能。

1.8 单引号

单引号即 〝 '' 〞 ，易语言中并无此符号，在火山中用于表达字符立即数，可用于变量、常量的初始值以及变量的赋值中。

如下图所示：

字符立即数中支持转义符操作。

1.9 转义符

转义符即〝 \ 〞，易语言中并无此符号，在火山中用于转义文本操作，例如：“\r\n”可以用来表示文本换行，相当于易语言中的“#换行符”。

如下图所示：

字符串立即数表达需要使用英文状态下的双引号，如果需要在字符串立即数中表达同样的双引号文本就需要进行转义操作，便于程序编译器识别信息。

转义字符表：

转义符 | 解释
\b | 退格符
\f | 换页符
\r | 回车符
\n | 换行符
\t | 水平制表符
\' 单引号
\" 双引号
\\ 反斜杠
\x | 后跟1-3个十六进制字符,为所对应字符的代码值.

2、运算符

2.1 运算符号对比

符号名称 易语言 火山 注释
四则运算 ＋－ × ÷ + - * / 进行数学四则运算
取反符 － - 用作返回将指定数值进行符号翻转后的结果值
强制类型转换符 无 ( ) 用作将数据强行转换到所指定的数据类型
求余运算符 ％ % 用于用于取出一个数和另一个数相除的余数
且 且 && 用于并且逻辑操作，当左侧参数和右侧参数均为逻辑值真时，最终整个表达式的结果返回真。
或 或 || 用于或者逻辑操作，当左侧参数或右侧参数其中任意一个的逻辑值为真，最终整个表达式的结果返回真。
小于等于 ≤ <= 当左侧参数小于等于右侧参数时返回真
大于等于 ≥ >= 当左侧参数大于等于右侧参数时返回真
小于 ＜ < 当左侧参数小于右侧参数时返回真
大于 ＞ > 当左侧参数大于右侧参数时返回真
不等号 ≠ != 当左侧参数不等于右侧参数时返回真
相等号 ＝ == 用于比较左侧参数与右侧参数是否相等
赋值运算符 ＝ = 用于将右侧的参数值赋予给左侧参数内容

2.2 四则运算符

在易语言中对四则运算的乘和除使用的是数学运算的×和÷，在火山中采用了和其它编程语言一致的*表示乘、/表示除。

易语言演示如下：

火山视窗演示如下：

在上述计算中，最终值应当为3 * 3 / 2 = 4.5，但是为什么显示为4呢？这是因为在火山平台中，其最终的计算结果数据类型由表达式中参与运算的各个数值的最大精度决定，譬如计算过程中所有数值均为整数，则最终结果值也将被剪切到整数(不管计算结果是否存在小数)，如果表达式中存在一个是小数类型，则最终结果值将为小数。

因此上述计算公式想要得到正确的结果，只需要将其中任意一个数值声明小数即可。

声明方式有两种分别如下：

可以直接将某个数值改成小数类型。

如果为整数变量，可以采取强制转换的方式，强制转换成小数。

最终正确结果如下：

对于加号符，除了进行数学运算外，还可以用于连接文本数据，如下所示：

最终结果：

注：除文本和数值数据外，其它类型均不支持相加。

2.3 取反运算符

算术取反操作符即〝 - 〞，在火山中和易语言的作用一致，用作返回将指定数值进行符号翻转后的结果值。

易语言演示：

火山演示：

2.4 强制类型转换符

易语言中并无此符号，此符号为火山新增功能。

强制类型转换符即〝 ( ) 〞，用作将数据强行转换到所指定的数据类型。

调用格式为: (欲强行转换到的数据类型)欲转换类型的数据。

允许以下数据类型之间进行强制转换：

(1) “空对象”可以强制转换到任何非常量类的类数据类型或文本型：

(2) 数值数据类型之间可以强行转换。

注意: 当从容量大的数值数据类型强制转换到容量小的数值数据类型时，其中数值精度将会存在被丢失的风险。譬如，将小数数值强行转换到整数数值将丢失所有小数点后面的数值部分。

(3) 常量类可以强制转换到其所对应的基本数据类型(普通用户知道一下即可,无需过多了解)。

(4) 类数据类型只能强制转换到其直接/间接基础类或继承类。

注意: 用户必须确保对象实例的运行时数据类型匹配该被强行转换到的数据类型，否则将导致程序运行时出错。

2.5 求余运算符

求余运算符即〝 % 〞，与易语言效果一致，用于用于取出一个数和另一个数相除的余数。

易语言演示：

火山演示：

2.6 关系运算符且

“&&”和易语言中的“且”作用一致，都是用于并且逻辑操作，当左侧参数和右侧参数均为逻辑值真时，最终整个表达式的结果返回真。

易语言演示：

火山演示：

上述例子的最终运行结果并不会执行信息框，因变量1不等于100并且变量2也不等于20。

输入字：

在火山中除了直接输入字符外，还可以输入“qie”来输入此符号。

2.7 关系运算符或

〝 || 〞和易语言中的“或”作用一致，都是用于或者逻辑操作，当左侧参数或右侧参数其中任意一个的逻辑值为真，最终整个表达式的结果返回真。

易语言演示：

火山演示：

上述例子的最终运行结果并不会执行信息框，因变量1不等于100也不等于20。

输入字：

在火山中除了直接输入字符外，还可以输入“huo”来输入此符号。

2.8 关系运算符小于等于

小于等于和易语言中输入的符号一致，都是输入“<=”，不同之处为易语言会自动转换成“≤”火山会保持原样，其作用都是当左侧参数小于等于右侧参数时返回真。

易语言演示：

火山演示：

上述例子的最终运行结果会执行信息框，因变量1默认值为0，满足小于等于100的条件。

2.9 关系运算符大于等于

大于等于和易语言中输入的符号一致，都是输入“>=”，不同之处为易语言会自动转换成“≥”火山会保持原样，其作用都是当左侧参数大于等于右侧参数时返回真。

易语言演示：

火山演示：

上述例子的最终运行结果不会执行信息框，因变量1默认值为0，不满足大于等于100的条件。

2.10 关系运算符小于

小于和易语言中输入的符号一致，都是输入“<”，不同之处为易语言会自动转换成全角符“＜”火山会保持原样，其作用都是当左侧参数小于右侧参数时返回真。

易语言演示：

火山演示：

上述例子的最终运行结果会执行信息框，因变量1默认值为0，满足小于100的条件。

2.11 关系运算符大于

大于和易语言中输入的符号一致，都是输入“>”，不同之处为易语言会自动转换成全角符“＞”火山会保持原样，其作用都是当左侧参数大于右侧参数时返回真。

易语言演示：

火山演示：

上述例子的最终运行结果不会执行信息框，因变量1默认值为0，不满足大于100的条件。

2.12 关系运算符不等号

在易语言中不等号可以输入“!=”也可以输入“<>”来表示不等于，但是最终都会转换成不等号“≠”。

易语言演示：

在火山中不等号只能输入〝 != 〞并且不会转换成其它符号，其作用和易语言一致，都是当左侧参数不等于右侧参数时返回真。

注意：

(1) 对于数组对象，唯一能够与其进行比较的是“空对象”；

(2) 对于文本数据，将比较两者实际文本内容是否相同(区分字母大小写)，也可以将文本数据与“空对象”进行比较；

(3) 类对象比较仅比较两者是否指向同一个对象实例，而不会去对比两者所指向对象实例中存放的数据内容是否相同(火山安卓平台比较两个对象是否参考到同一对象实例，火山视窗平台比较两个对象的所处内存地址是否相同)。

在火山视窗平台中：

(1) 如欲比较两个对象的数据内容是否相同，可以使用系统类库中所提供的“对象内容是否相同()”全局静态方法；

(2) “字节集类”是一个特例，该类的对象之间进行比较将比较两者的实际数据内容是否相同。

如下图所示：

2.13 相等号

比较左侧参数与右侧参数是否相等，在易语言中使用一个等于号，在火山中需要使用双等号，即〝 == 〞，其使用方式和注意事项与“不等号”相同，将上述图中的“!=”换成“==”即可。

在实际使用时，输入一个等于号即可，火山会自动转换为双等号，如下：

而易语言只需要提供一个等号即可：

2.14 赋值运算符

赋值符和易语言中的符号一致，即〝 = 〞，都是用于将右侧的参数值赋予给左侧参数内容，可用于变量、写属性等。

易语言演示演示：

火山演示：


火山视窗和易语言基本类型差异_火山平台语法手册

三、火山视窗和易语言基本类型差异

1、数据类型对照表

易语言 | 火山 | 注释
字节型 字节

易语言字节有效值范围：0~255；

火山字节有效值范围：-128~127；

占用1个字节空间。
短整数型 | 短整数 | 有效值范围：-32768~32767，占用2个字节空间。
整数型 | 整数 | 有效值范围：-2147483648~2147483647，占用4个字节空间。
长整数型 | 长整数 | 有效值范围：-9223372036854775808~9223372036854775807，占用8个字节空间。
小数型 无

易语言的小数为单精度小数（float），其数值范围为-3.4E38～3.4E38（最长小数点后有6位小数），占用4字节。

火山中暂无此类型。

双精度小数型 小数

有效值范围：2.2250738585072014e-308~1.7976931348623158e+308（最长小数点后15位），占用8个字节空间。

注：火山中的小数为双精度小数（double）。

逻辑型 | 逻辑型 | 有效值为“真”或“假”
日期时间型 | 小数 | 在火山中无日期时间型，改用小数代替。
子程序指针 | 变整数 | 表示指针数据
文本型 | 文本型 | 表示字符串数据
字节集 | 字节集类 | 表示字节集数据
无 字符

宽字符有效值范围从0到65535，占用2个字节空间。

注：火山平台使用Unicode-16(即双字节统一码)字符编码格式。

1.1 字节型

在火山中叫字节（有符号字节），有效值范围从-128到127，占用1个字节空间。

如下图所示写法是错误的：

如果按照上图所写进行调试程序，最终会在火山输出栏提示如下错误：

在易语言中的“到字节()”方法，火山中可使用强制转换来操作。

易语言演示：

火山演示：

1.2 短整数型

在火山中叫短整数，有效值范围从-32768到32767，占用2个字节空间。

如果想要让短整数转换成整数或长整数，直接赋值即可，如下图：

在易语言中的“到短整数()”方法，火山中可使用强制转换或“文本到短整数()”来操作。

易语言演示：

火山演示：

1.3 整数型

在火山中叫整数，有效值范围从-2147483648到2147483647，占用4个字节空间。

整数是处理和存储效率最高的数值数据类型，如果所欲处理的数值不包含小数部分，一般都使用本数据类型。

如果想要让整数转换成短整数需要进行强制转换操作，需要注意整数值的范围是否在短整数的范围之内，如下图所示：

整数想要转换成长整数，直接赋值即可：

在易语言中的“到整数()”方法，火山中可使用强制转换或“文本到整数()”来操作。

易语言演示：

火山演示：

1.4 长整数型

在火山中叫长整数，有效值范围从-9223372036854775808到9223372036854775807，占用8个字节空间。

在软件开发过程中，如果数值超过了整数范围，那就必须使用长整数类型。如果在你不确定数值范围是否会超过整数，例如：两个较大整数的相乘，结果可以使用长整数类型来表达。

长整数转换成整数或短整数需要进行强制转换，且必须保证在目标类型的范围值之内，如下图所示：

在易语言中的“到长整数()”方法，火山中可使用强制转换或“文本到长整数()”来操作。

易语言演示：

火山演示：

1.5 小数型

易语言的小数型为单精度小数（float），在火山中暂无单精度小数类型。

1.6 双精度小数型

在火山中的小数为双精度小数（double），有效值范围从2.2250738585072014e-308到1.7976931348623158e+308（最长小数点后15位），占用8个字节空间。

小数数值也可以通过强制转换，转换成整数、短整数或长整数，但是会丢失精度，如下图所示：

将一个初始值为1.6小数变量强制转换成整数。

最终可以看到结果为1，小数部分的内容会全部丢失。

在易语言中的“到数值()”方法，火山中可使用强制转换或“文本到小数()”来操作。

易语言演示：

火山演示：

1.7 逻辑型

易语言的逻辑型和火山一致，也就是说有效值为“真”或“假”

在火山中，逻辑值也可以转换为文本格式，使用“到文本()”进行转换。

当逻辑值以文本格式展示时：其中“1”表示“真”，“0”表示“假”，如下图所示，使用“到文本()”方法转换：

运行结果：

如果想要重新转换为逻辑值，可以使用“文本到逻辑值()”方法转换。

在“文本到逻辑值()”方法的帮助页中可以看到，只要参数提供“真”、“true”、“1”结果值都会返回真，其它任意文本都会返回假。

因此想要结果返回真，正确的方式就是从如下三个方法中选择其中一个即可。

1.8 时间日期型

在火山中可用小数可代替此类型，易语言和火山视窗对比如下：

易语言如下：

火山视窗如下：

1.9 子程序指针

火山视窗中无此类型，可用变整数代替。

变整数概述：在编译64位程序时等效于长整数类型，编译32位程序时等效于整数类型。在火山视窗中，变整数用来表示指针类数据。

除此之外在易语言中使用“& + 子程序名”来表示子程序指针，在火山视窗中则不需要输入“&”符号。

对比如下图所示：

易语言：

火山视窗：

1.10 文本型

易语言的文本型为多字节编码，火山视窗的文本型编码为Unicode字符编码。虽然编码不同，但是作用都是用作记录一段字符串文本，使用立即数表达时需要在文本的左右两边使用英文双引号括起来。

如下图所示：

文本型中支持\n、\t等转义符操作，例如：在文本中使用“\r\n”可以表示换行，有效等同于易语言中的“#换行符”。

易语言换行符：

火山换行符演示：

如果需要将数值型数据转换成文本型，可以直接使用“到文本()”方法即可，重新转换会目标数值型则需要对应的“文本到XX()”系列方法。

如下图所示：

1.11 字节集

在火山视窗中名叫“字节集类”，其作用和易语言一样，都是“字节”基本数据类型的集合，用于表达二进制数据。

对比演示如下：

易语言：

火山视窗：

注：取运行目录方法会自动添加路径符号，因此引用文件时不需要额外加路径符。

如果将文本数据转换成二进制数据需要注意文本编码问题。

火山视窗中使用“文本到字节集()”转换出来的文本编码是“UTF-16LE”(也就是常说的Unicode编码，万国码)。

而易语言的“到字节集 ()”转换的编码为多字节编码（GBK、ansi等都是多字节编码）。

易语言和火山视窗常用字符集编码转换对照表：

易语言 | 火山 | 注释
文本到UTF8() | 文本到UTF8() | 表示将文本转换成UTF-8编码字节集
文本到UTF16() | 文本到字节集() / 到字节集() | 表示将文本转换成UTF-16编码字节集
到字节集() | 文本到多字节() | 表示将文本转换成多字节编码字节集，常见的GBK，ANSI编码等都是多字节编码。
UTF8到文本() | UTF8到文本() | 表示将UTF-8编码字节集重新转换为文本数据
UTF16到文本() | 字节集到文本() | 表示将UTF-16编码字节集重新转换为文本数据
到文本() | 多字节到文本() | 表示将多字节编码字节集重新转换为文本数据

1.12 字符

字符为火山新增类型，火山中的字符为宽字符，有效值范围从0到65535，占用2个字节空间。字符主要指包括汉字、英文字母、英文数字、标点符号等。

在火山中想要表达立即数字符，需要使用单引号''来操作，例如：'火'、'山'，字符也支持转义符，譬如'\n'。

注：火山平台使用Unicode-16(即双字节统一码)字符编码格式。

1.12.1 字符转整数

在火山视窗中，可以通过强制转换实现将字符转换成对应的整数值。

代码编写如下图：

运行结果如下图：

1.12.2 整数转字符

当字符被转换成整数后，如果想要重新转换成字符也可通过强制转换进行操作。

代码编写如下图：

运行结果如下图：

1.12.3 文本取字符

在火山视窗平台中直接调用“取字符()”方法就可以取出一串文本中指定位置的字符。

帮助文档如下图：

方法中提供了两个参数。

参数1：用于提供要取字符的文本。

参数2：提供索引位置值即可，位置从0开始。

代码编写如下图：

直接调用本方法提供对应参数就可以获取指定位置字符。

运行结果如下图：

最终可以看到指定位置的字符被取出。

1.13 模板类型1~模板类型8

注意: 本类型为火山新增类型，普通用户知道即可，无需深入了解。

模板数据类型，只能在模板基础类中使用。

模板数据类型本身并不是真实存在的数据类型，所对应的真实数据类型需要由模板实现类来提供。

我们举个例子，假设我们需要开发一个数组操作类，用作支持对各种数组类型进行操作，如果不使用模板类型，那么我们需要写很多类似的类：

整数数组操作类、小数数组操作类、文本数组操作类等等……

而这些类的处理代码是完全一样的,唯一不同之处就是其所操作的数据类型不同，使用模板类型，我们可以把所有代码都放到模板基础类里面，然后定义对应的模板实现类即可。 如:

这样能大大减少工作量，也能让程序具有更好的可维护性(只需维护一处即可)。

对于火山普通用户而言，不需要深入了解如何具体定义这些模板类型，掌握如何使用已有模板类型即可。

假设有下面这段代码：

当你右键单击末语句行上的“插入”方法，然后选择查看其帮助菜单项后，看到帮助页面中参数部分为以下内容：

你一定会感到困惑，“模板类型1”和“模板类型2”所对应的真实数据类型到底是什么呢？

很简单，请继续单击该“模板类型1”/“模板类型2”链接，譬如点击前者将看到如下页面：

根据“变量1”的当前数据类型“整数到文本哈希表”，就可以得知，“模板类型1”当前所对应的真实数据类型为“整数”，这就是“插入”方法第一个参数提供的真实数据类型。

利用同样的方法，可以得知“插入”方法的第二个参数的实际类型为“文本型”。

由此可得出如下正确的调用代码：

2、基本数据类型扩展类与对象类

2.1 基本数据类型包装类

所有基本类型包装类如下：

1. 字节类；

2. 短整数类；

3. 整数类；

4. 长整数类；

5. 变整数类；

6. 小数类；

7. 字符类；

8. 逻辑型类；

在火山视窗平台中，由于基本数据类型数据暂不支持以参考的方式传递到方法参数上，从而导致在被调用方法中不能以修改参数值的方式来对外返回基本数据类型数据。

这些包装类的作用就是为了方便上述操作。

如下所示：

打开“整数类”的帮助页，可以看到会存在一个名叫“值”的成员变量，而这个变量的类型就是“整数”。

如果你使用的是“长整数类”，那么这个变量的类型就是长整数。

“Ctrl+D”插入一个方法后，设置一个“整数类”的参数并赋值。

在窗口“创建完毕”事件下调用这个方法，定义“整数类”变量并传参，最后取出整数类中的值。

最终可以看到值被取出，也就间接实现了基本数据类型参数返回数据。

2.2 对象类

对象类是火山中所有类的最底层基础类，无论是自定义的类，还是火山系统库中的类，都会继承对象类。

如下所示：

火山视窗平台：

如果在实际开发过程中，遇到某个方法的参数是“对象类”，并且没有特别的注释，就代表这个参数可以提供任意的对象类数据进去。

例如：在火山视窗平台“对象数组类”的“加入成员()”方法就需要提供对象类的数据，本类为最基本的对象类数组。

如下所示：

如果想从对象数组类中取出对象，取出的数据是对象类，需要使用强制转换操作。

如下所示，必须保证强制转换的类型与添加时的类型一致：


火山视窗和易语言关键字差异_火山平台语法手册

四、火山视窗和易语言关键字差异

1、算数运算关键字

在易语言中提供了一些算数运算的关键字，可用来代替输入数学运算符号，在火山中未提供这些关键字，需要直接输入数学运算符号。

对照表如下：

易语言 | 火山 | 注释
相乘 * 表示乘法运算
相除 / 表示除法运算
整除 | 无 | 火山中无整除运算符
求余数 % 表示求余运算
相加 + 表示加法运算
相减 - 表示减法运算
负 - 表示取负数运算

2、逻辑比较关键字

在易语言中提供了一些逻辑比较的关键字，可用来代替输入逻辑比较符号，在火山中未提供这些关键字，需要直接输入对应的符号。

对照表如下：

易语言 | 火山 | 注释
等于 == 表示左右两边参数相等
不等于 != 表示左右两边参数不相等
小于 < 表示左侧参数小于右侧参数
大于 > 表示左侧参数大于右侧参数
大于或等于 >= 表示左侧参数大于或等于右侧参数
小于或等于 <= 表示左侧参数小于或等于右侧参数
近似等于 | 无 | 表示约等于，火山中无此符号。
并且 && 当左侧参数和右侧参数均为逻辑值真时，最终整个表达式的结果返回真。
或者 || 当左侧参数或右侧参数其中任意一个的逻辑值为真，最终整个表达式的结果返回真。

3、其它关键字

3.1 返回

本关键字与易语言中的关键字作用一致，调用后当前方法会执行结束，并且会返回到调用语句处。如果有返回值，则会返回一个值到执行语句处。

易语言示例如下：

当“子程序1()”被“返回()”方法返回后，会返回到当前方法调用的位置，如果此位置定义了变量来接收返回值，则首先会执行这个赋值操作，然后才会执行下一行的“信息框()”方法。

火山示例如下：

当“测试方法()”被“返回()”方法返回后，会返回到当前方法调用的位置，如果此位置定义了变量来接收返回值，则首先会执行这个赋值操作，然后才会执行下一行的“信息框()”方法。

返回的额外输入字：

除了使用全、首拼输入外，还可以使用“return”来输入。

3.2 逻辑值

本关键字与易语言一致，只有“真”和“假”，主要用于表示逻辑型。

使用方式如下，用于变量、常量、赋值以及条件判断操作。

易语言演示：

火山演示：

真/假的额外输入字：

除了使用全、首拼输入外，“真”还可以使用“ture”来输入，“假”还可以使用“false”来输入。

3.3 取反

本关键字与易语言中的关键字作用一致，可以对逻辑值进行取反操作。

易语言示例如下:

火山示例如下:

本方法的参数可以提供逻辑立即数，变量，方法等，只要其数据类型为逻辑型即可。

3.4 选择

本关键字又称为三目运算，其作用与易语言中的关键字一致，是根据参数1提供的逻辑值，从而决定是返回参数2还是返回参数3。

易语言示例如下：

当逻辑变量为真时，最终返回“文本1”。

火山示例如下：

示例中的“文本变量”其内容最终为“文本1”，因为“选择()”方法的参数1提供的逻辑值为真。

3.5 位运算

位运算对照表如下：

易语言 | 火山 | 注释
位取反 | 位取反 | 将指定数值每一个比特位的值取反后返回
位与 | 位与 | 在火山中，如果要对多个整数值进行位与，可使用“连续位与”方法。
位或 | 位或 | 在火山中，如果要对多个整数值进行位或，可使用“连续位或”方法。
位异或 | 位异或 | 在火山中，如果要对多个整数值进行位异或，可使用“连续位异或”方法。
左移 | 位左移 | 将某整数的数据位左移指定位数，返回移动后的结果。
右移 | 位右移 | 将某整数的数据位右移指定位数，返回移动后的结果。

4、火山新增关键字

4.1 名称关键字

4.1.1 属于

本关键字是一种判断关键字，关键字的左侧参数提供实例对象、右侧参数提供数据类名。用于返回左侧的对象是否为右侧类或者其直接/间接继承类的实例对象。

最终判断结果会返回逻辑型，如果符合返回真，即表示左侧对象能安全转换到右侧类数据类型。

注意: 左侧对象的数据类型必须为类，而且必须与右侧类之间存在继承/被继承关系或者等于右侧类本身才会符合条件。

如下图所示：

利用“属于”来判断“测试2对象”是否属于“测试类1”，此处必然返回真。

因为“测试类2”继承了“测试类1”，既然继承了测试类1，那么必然存在测试类1，因此这个属于条件必然是成立的。

最终结果也证明“测试2对象”是属于“测试类1”的。

除了继承关系相等外，如果类型相等本条件也会返回真。

如下图所示：

用“测试2对象”和“测试类1”进行判断，其结果也必然是会返回真，因为类型是完全一致的。

最终结果也证实了这一点。

全部比较结果如下图：

如果符合条件就可以进行强制转换操作，让左侧对象强制转换为右侧类型。

如下图所示：

属于的额外输入字：

除了使用全、首拼输入外，还可以使用“instanceof”来输入。

4.1.2 空对象

用作代表空对象，可以匹配所有非常量类的类数据类型以及文本型。

需要注意的是，当对象实例为空对象时，这个对象将不能进行任何操作。

如下图所示：

假设某个方法提供了一个“测试类”的参数，并且默认值为空对象，此时如果想要操作这个参数数据，首先需要判断其是否为空对象，然后在执行相应的方法操作。

空对象除了用于判断之外，还可以用于赋值，传参如下图所示：

空对象的额外输入字：

可以使用“null”输入空对象。

4.1.3 父对象

用于表示在类成员方法中代表所处类的父类(基础类)对象。

父对象主要是用作当基础类中存在与本类中相同名称的方法(譬如虚拟方法)时强制调用基础类的方法。

如下图所示：

也可用于调用父类中的通常方法，如下图所示：

在“测试类2”的基础类为“测试类1”，然后就可以通过“父对象”调用“方法1()”。

在窗口被创建完毕时调用“测试类2”的通常方法。

最终会执行“测试类1”中的“方法1”，并弹出一个信息框。

当然在实际开发过程中，“父类”(基础类)的方法支持直接输入调用，可以省略“父对象”的关键词。

如下图所示：

注意: 如果语句所处方法为静态方法，由于此时根本不存在当前类的实例对象，所以不能使用本关键字。

如下图所示：

父对象的额外输入字：

可以使用“super”输入父对象。

4.1.4 本对象

本对象表示当前代码语句所处类的对象本身。

如下图所示：

例如，在“测试类1”中使用本对象就表示是“测试类1”的对象本身。同理，如果有一个类叫“测试类2”，并且在测试类2中使用本对象，那么此时的本对象就表示的是“测试类2”的对象本身。

由此可以得出，如果某个方法的参数是当前类对象的时候就可以提供“本对象”进行传递参数。

如下图所示：

火山视窗的通用对话框的“打开()”方法，需要提供一个“窗口”对象。

在使用这个方法时，如果当前类是“窗口”或者其基础类是“窗口”时都可以使用“本对象”进行进行传递参数。

如果在其它类中调用这个“通用对话框”的“打开()”方法，就不能使用“本对象”进行传递参数。

如下图所示的写法是错误的：

正确的写法如下，可通过传递“窗口”参数来解决，其它类中使用的问题。

需要注意的是，如果在使用本对象时当前方法是静态方法，则不支持使用本对象关键字，因为静态方法中不存在当前对象实例。

本对象的额外输入字：

可以使用“this”输入本对象。

4.2 方法关键字

4.2.1 挂接事件

本方法用于动态挂接指定对象的事件，共有两个参数，如下：

参数1：提供要挂接的对象名称。

参数2：提供整数标记值，当多个类型相同的对象同时挂接时，可以在事件接收方法的“标记值”参数中获取到此标记，从而用于区分对象来源。

1. 如何挂接事件？

如果想要指定对象进行“挂接事件”操作，必须满足以下条件：

(1) 其对象必须拥有“事件定义方法”。

如下图所示的“测试类”想要进行挂接事件的写法是错误的，因为“测试类”中并没有任何事件。

(2) 使用本方法后必须添加指定对象的接收事件方法。

如下图所示，使用“挂接事件()”方法后，必须添加“测试类”的接收事件方法，用于接收事件。

注意：如果存在多个相同数据类型的对象需要挂接事件，可以通过填写挂接事件的参数2，来判断事件来源。

2. 什么时候需要挂接事件？

(1) 在火山视窗中局部变量不可以进行挂接事件，因为其对象实例会立刻销毁，因此如果某类中存在事件应定义为成员变量。

(2) 动态创建对象需要手动挂接事件。

如下图所示，动态创建一个按钮时需要挂接事件：

运行后可看到动态创建的按钮也可以正常点击：

(3) 当对象事件需要发送到其它类中使用时，需要挂接事件。

如下所示“组件布局器”中的按钮组件事件想要在窗口中触发事件，就需要进行挂接事件操作。

4.2.2 取消事件挂接

不再将指定对象所支持的事件挂接到当前类对象中的对应事件接收方法上。

无论是自动挂接事件的类成员对象变量，还是手动调用挂接事件关键字挂接的对象，均可以调用本关键字取消其事件挂接。事件挂接一旦取消，该对象的事件将不会再被接收到，谨慎使用。

如下图所示调用即可取消所有事件：


火山视窗与易语言流程控制语句差异_火山平台语法手册

五、火山视窗与易语言流程控制语句差异

1、如果差异

在易语言中，如果语句满足条件时执行第一个信息框后继续向下执行其它代码。不满足时则执行第二个信息框，然后继续向下执行其它代码。

而在火山中，如果命令和易语言中的如果真类似，只有当参数值满足条件时才会执行子语句体的内容。

不满足条件时，会执行如果语句体外的其它代码。

当然在火山中同样也可以实现易语言中一样的效果，这时需要配合“否则”来使用。

示例如下：

除此之外，如果语句后面可以跟多个否则语句，可用于判断多种可能的情况。

使用时需要注意以下几点：

(1) 如果语句后可以跟N个否则语句，但否则语句不能在如果语句之前。

(2) 一旦其中任意一个语句执行结果为真，将执行其子语句体的内容，剩余的所有“否则”语句将跳过。

示例如下：

如果判断两个相同的条件，则只会执行首次判断成功的条件。

示例如下：

只会执行第一个满足条件的子语句体，其它条件会跳过。

注意：满足条件后执行的代码必须保证是位于子语句体中，如下图所示是错误的。

可通过右键菜单“块操作 -> 向外缩进”，让要执行的代码重新回到子语句体中。

2、如果真差异

本语句同易语言中的“如果真”语句，本语句只能单独使用，无法配合“否则”语句来使用。

易语言演示：

火山演示：

当满足条件后执行子语句体的内容，否则执行“如果真”语句之外的其它代码。

3、判断差异

易语言中的判断和火山中的“如果否则”语句类似。

可以单独使用，如下所示：

也可以合并起来使用，如下所示：

在火山中实际上并“判断”方法，但是提供了“分支判断”。

3.1 分支判断与分支

其作用和判断也不相同，判断是用于判断逻辑值，而分支判断用于判断一个整数值与一系列整数值中某个值是否相等。

这其中要判断的整数值位于“分支判断”语句的参数中，而这一系列整数值则位于“分支”语句的参数中，每个值称为一个分支。

分支判断帮助如下图：

本语句需要提供一个整数类型的数据，用于“欲判断检查的值”，其要判断的值由“分支”语句提供。

注：本方法的子语句体内只能存在分支或默认分支，并且至少包含一个。

分支帮助如下图：

本语句只能位于“分支判断”的子语句体内，用于检查“分支判断”参数中提供的整数数据，是否等于本语句中的参数值。

如果相等，将去执行本语句的子语句体中的代码，并跳过后续所有其它判断检查分支，否则将跳过本语句的子语句体转去检查后续的下一分支是否满足要求。

注：本语句的参数只能提供立即数或常量。

示例如下：

(1) 分支判断语句提供欲判断检查的值。

(2) 分支语句提供欲检查是否相等的值。

如果分支判断语句的值和某个分支中的值相等，则执行对应分支子语句体的代码。

上图中的“变量”的值为1，则最终结果会弹出“满足条件1”的信息框。

3.2 默认分支

本语句需要在“分支判断”的子语句体中使用，用于指定“默认分支”，如果所有的“分支”都不满足时则执行本语句下的子语句体的内容。

示例如下：

最终结果会弹出“默认分支”下的信息框，因整数变量的初始值为0，并不满足前两个分支。

4.3 跳出分支

本语句只能在“分支”或“默认分支”的直接/间接的子语句中使用，用于跳出整个“分支判断”去执行下一条语句。

示例如下：


火山视窗与易语言循环结构语句差异_火山平台语法手册

六、火山视窗与易语言循环结构语句差异

1、循环语句对照表

易语言 火山
判断循环首/尾 判断循环
循环判断首/尾 循环判断首/尾
计次循环首 计次循环
变量循环首 循环
到循环尾 到循环尾
跳出循环 跳出循环

2、判断循环首/尾

在火山中名叫“判断循环”，与易语言相比并无判断循环尾的字样，也不需要输入。

易语言和火山对比如下：

易语言：

火山：

火山视窗应用样例：

在本语句的子语句体内对“计数”变量进行累计+1，并输出计数结果，实现正向计数效果。

最终利用本语句实现了正向计数效果。

同理，也可以实现逆向计数如下所示：

最终实现了逆向计数。

3、循环判断首/尾

本语句与易语言的区别在于，易语言会自动生成语句尾，火山暂时需要手动输入。

易语言和火山对比如下：

易语言：

火山：

火山视窗应用样例：

在本语句的子语句体内对“计数”变量进行累计+1，并输出计数结果，实现正向计数效果。

最终利用本语句实现了正向计数效果。

同理，也可以实现逆向计数如下所示：

最终实现了逆向计数。

4、计次循环首/尾

本语句在火山中名叫“计次循环”，并且只有一个参数，且不需要提供计次循环尾。

帮助页如下图：

在易语言中需要手动定义计数变量，而在火山中则可以省略此步骤，可以利用其内置方法“取循环索引()”代替计数变量。

易语言和火山对比如下：

易语言：

火山：

火山视窗应用样例：

利用本语句循环10次，取出循环索引到编辑框中。

注：在火山中循环索引从0开始，如果需要移植易语言代码到火山，务必注意循环计数问题。

最终循环索引会依次显示在编辑框中。

在火山中额外提供了“逆向计次循环”方法，用于逆向循环，通过“取循环索引()”方法可以直接取出逆向值。

应用样例：

利用本语句逆向循环10次，取出循环索引到编辑框中。

最终循环索引会逆向依次显示在编辑框中。

取循环索引方法的注意事项如下：

1、本方法只能用于“计次循环”或“逆向计次循环”的子语句体中使用，如下图所示为错误的。

2、如果有多层循环嵌套，本方法只能取出最近层循环的索引值，无法取出其它循环层的循环索引。

5、变量循环首/尾

本语句在火山中名叫“循环”，且不需要输入循环结束语句。其参数数量和作用也和易语言中一致，但顺序不同，对照表如下：

注意：在火山中第三个参数和易语言中的第四个参数作用一致，而火山第四个参数则和易语言中第三个参数作用一致。

易语言变量循环首 火山循环 注释
参数1： 变量起始值 变量起始值

在易语言中默认为1。

而火山中如果本参数被忽略默认为0。
参数2： 变量目标值 变量目标值

在易语言中本参数不可忽略。

在火山中如果被忽略默认值为1。
参数3： 变量递增值 循环变量

在易语言中变量递增值的默认为1。

在火山中循环变量如果留空，将使用一个内置的临时变量。
参数4： 循环变量 变量递增值

在易语言中循环变量可以被省略，如果被省略将使用内部临时变量、

在火山中变量递增值，如果被省略默认使用1。

在火山中使用时，除了需要注意参数顺序和默认值之外，还需要注意循环变量参数的问题。

此参数在易语言中是从1开始计数，火山中是从0开始计数。

正向计数对比如下：

易语言示例：

可以看出易语言的计数从1开始。

火山示例：

而在火山中想要实现易语言一样的效果，需要对计数变量进行+1操作。

逆向计数对比如下：

易语言示例：

易语言中的“变量目标值”参数，超过此参数时才会跳出循环。

因此当“变量起始值”为10，“变量目标值”为1，“变量递增值”为-1时就可以实现从10到1的逆向输出。

火山示例：

在火山中想要实现同样的效果，必须将“变量目标值”参数设置为0，因为火山中的规则是，大于等于此值时才会跳出循环。

如果要移植易语言代码到火山，务必要注意这一点问题。

利用其循环变量的特性，还可以实现循环正/逆向取出数组成员内容，如下：

(1) 实现正向遍历数组成员，示例如下：

循环语句的参数1、4忽略、参数2提供数组成员数、参数3提供循环变量，就可实现正向遍历输出数组成员。

最终数组所有成员将被输出到编辑框中显示。

(2) 实现逆向遍历数组成员，示例如下：

循环语句的参数1提供数组成员数、参数2提供0、参数3提供循环变量、参数4提供-1，就可实现逆向遍历输出数组成员。

最终数组所有成员将被逆向输出到编辑框中显示。

8、跳出循环

本关键字的作用和易语言同名关键字一致，用于转移当前程序执行位置到当前所处循环体尾部的下一条语句处，可用于所有循环语句。

如下图所示，当循环索引为5时执行跳出循环。

注：和易语言相比在火山中本关键字不需要输入括号。

最终循环提前结束。

9、到循环尾

本关键字的作用和易语言同名关键字一致，转移当前程序执行位置到当前所处循环体的尾部。

示例：

注：和易语言相比在火山中本关键字不需要输入括号。

因循环体内对“整数变量”进行了一次判断，并执行了一次“到循环尾”相当于跳过了一个循环，所以最终会输出2、3。


从易语言到火山视窗教程目录_火山软件开发平台入门教程目录

一、窗口设计器差异

二、窗口程序差异

1. 窗口事件

2. 窗口属性

3. 创建新窗口

4. 载入窗口

5. 扩展知识“取程序()”

6. 多窗口交互

三、部分组件使用差异

1. 图片框

2. 选择夹

3. 树形框

4. 分组框

5. 通用对话框

6. 菜单

四、数组操作差异

五、文件读写命令操作差异

六、DLL动态链接库差异

1. DLL项目创建

2. DLL方法编写

3. DLL调试

4. DLL编译


火山视窗和易语言窗口设计器差异_火山平台语法手册

一、火山视窗和易语言窗口设计器差异

1、打开设计器

易语言演示：

在易语言中双击想要打开的窗口名称，即可打开窗口设计器。

火山视窗演示：

在火山中打开设计器需要在代码中操作，右键需要打开设计器的窗口类，选择“设计XX的界面布局”或使用快捷键“Ctrl+U”即可打开设计器。

2、设计器布局

易语言演示：

在易语言中设计器的属性在左侧，组件栏在右侧。

火山视窗演示：

在火山中正好相反，其属性在右侧，组件栏在左侧。

相对易语言的界面设计器，在火山中增加了一个“布局内容”，可用于查看布局结构或调整组件焦点。

组件焦点调整演示：

如下所示，按下“Tab”键切换焦点时，组件焦点顺序依次为“编辑框1->编辑框3->编辑框2”。

打开布局内容，鼠标点击拖放编辑框2和编辑框3交换位置，即可调整为正常焦点顺序，

如下所示，焦点顺序切换为正常状态。


火山视窗与易语言窗口程序差异_火山平台语法手册

二、火山视窗与易语言窗口程序操作差异

1、窗口事件

易语言演示：

在易语言中可通过双击设计器添加默认窗口事件。

或者通过属性栏中的组合框，点击选择事件并添加。

火山演示：

在火山中有四种事件添加方式，分别如下：

1. 双击窗口设计器添加默认事件。

2. 点击属性栏下方的组合框添加事件。

3. 从窗口类名添加事件。

4. 从窗口变量添加事件。

注：如果类和窗口变量同时添加事件，那么最终会以类添加的事件为准，变量中添加的事件会被覆盖。

2、窗口属性

易语言窗口属性有两种调用方式，分别如下：

1. 通过属性栏设置属性。

2. 通过代码动态设置。

在火山中则有五种调用方式，分别如下：

1. 通过窗口设计器属性栏设置属性。

2. 通过窗口类属性表设置。

3. 通过变量表设置属性。

需要注意的是，如果变量表和类表格同时存在属性，最终结果会以变量表中的属性为准。

注：并不是类中填写是属性不生效，而是被变量表中的属性覆盖了。

4. 光标定位类表中，按快捷“Alt + Enter”可以打开一个独立的属性表填写窗口，进行属性设置。

注：此操作并非只有窗口可以用，只要定义的变量或类存在属性就可以使用。

5. 通过代码动态设置。

3、创建新窗口

易语言演示：

在易语言中需要右键窗口分类进行插入新窗口。

火山演示：

在火山视窗中就简单很多，使用快捷键“Ctrl+D”新建一个类，基础类填写窗口即可。

4、载入窗口

易语言演示：

在易语言中调用“载入()”方法，将窗口名填入参数1即可。

效果如下：

火山演示：

在火山中载入窗口需要定义一个变量，基础类填写窗口类名，然后通过窗口变量名调用“创建窗口”即可进入新窗口。

注：除对话框窗口外，其余所有类型窗口都需要定义成员变量。

效果如下：

易语言和火山视窗载入窗口方法对照表：

易语言 火山 注释 演示图
载入 (窗口名字, , 真) 窗口变量.创建对话框 ()

以模态对话框的方式创建并显示本窗口。

对话框窗口创建后，鼠标只能控制对话框窗口，关闭后才可以操作其它窗口。
载入 (窗口名字, , 假) 窗口变量.创建窗口 ()

创建一个普通窗口。

在普通窗口模式下，新窗口被创建后依然可以操作其它窗口，并且在操作其它窗口时可以覆盖当前被操作的窗口。
载入 (窗口名字, 父窗口名字, 假) 窗口变量.创建弹出子窗口 (父窗口名字)

创建一个窗口并将其作为其它窗口的弹出风格子窗口。

当新窗口被创建后，依然可以操作原来的窗口，但操作原窗口时不会覆盖新窗口。
无 窗口变量.创建子窗口 (父窗口名字)

创建一个嵌入式的子窗口。

5、火山视窗扩展知识“取程序()”

5.1 在火山新建MFC窗口之后会看到如下代码

代码共有4个区域：

(1) “启动类”整个程序的主要入口，整个程序都是由此进入，并且在程序运行过程中，此类不会被销毁一直存在，可以在此类中放置一些不想被销毁释放的变量。

(2) 主窗口变量，在火山中必须定义变量才能载入。

(3) 启动方法，程序唯一的启动区域，启动主窗口的代码也是在此编写，通过窗口变量名称载入主窗口。

(4) 最后就是软件的主窗口类。

5.2 “取程序()”取的是谁？

1、“取程序”方法，实际上就是取上图中全局唯一的“启动类”对象，这个类在整个软件程序中只有一个，在任何类中都可以调用此方法来获取启动类。

如下图所示：

2、 在“启动类”中定义一个成员变量，勾选公开，设置初始值。

3、在窗口类右键，可以进行界面设计。

4、 找到按钮，设置按钮，设置按钮标题。

5、保存后会看到按钮变量，添加按钮被点击事件。

6、 通过“取程序()”取出启动类对象，然后就可以访问启动类中任何公开的成员变量或常量。

7、运行结果如下。

6、多窗口交互

易语言演示：

在易语言中多窗口交互较为简单，直接通过窗口名称就可以实现。

代码编写如下：

运行效果如下：

火山演示：

因在火山视窗中组件不支持静态，所以无法通过窗口类名直接操作组件，必须通过窗口变量操作。

通过这一点可以结合“取程序”方法，以实现多窗口交互。

操作步骤如下：

(1) 首先公开启动类中的主窗口变量。

(2) 设计主窗口界面，放一个按钮和编辑框组件。

(3) 设计窗口2界面，放一个按钮组件。

(4) 公开主窗口编辑框组件。

(5) 定义第二个窗口变量，以便于创建窗口。

(6) 主窗口创建完毕后载入第二个窗口。

(7) 按钮点击后操作第二个窗口。

(8) 在第二个窗口按钮被点击时，就需要利用“取程序()”首先取出启动类对象，然后获取主窗口对象，通过主窗口对象就可以操作被公开的编辑框组件。

运行效果如下：


火山视窗与易语言部分组件差异_火山平台语法手册

三、火山视窗与易语言部分组件差异

在火山视窗中提供了大量的组件，大部分组件和易语言操作方式一样，部分组件在使用方式上有所差异。

下面介绍部分组件使用上的小差异。

1、图片框

易语言演示：

在易语言中图片框组件设置图片都是通过“图片”属性设置，其类型是字节集。

“图片”属性为可读可写属性，可以取出一个图片框的图片赋值给另外一个图片框显示。

运行效果如下：

火山演示：

在火山中想要实现和易语言一样的效果，稍微有点复杂，因为火山视窗中图片属性的类型为“位图资源”，并且只有写属性，无法取出位图资源。

注：资源类型并不能动态设置，譬如通过文件载入等形式转换成资源。

想要实现设置字节集图片数据，在火山中需要使用“置底图数据()”方法。

如果想要取出图片则需要使用“取底图()”方法。

注：本方法取出的图片为“位图对象类”，并且是通过参数返回。

取出一个图片框的图片赋值给另外一个图片框显示，代码编写如下：

运行效果如下：

2、选择夹

易语言演示：

在易语言中选择夹的使用相对简单，直接可以在设计器中对选择夹的子夹内容进行设计。

如下图所示：

选择夹中组件交互也比较简单，如下所示：

直接输入组件名就可以控制组件。

运行效果如下：

火山演示：

在火山中想要使用选择夹必须依赖“组件布局器”，组件布局器是火山视窗中提供的一种针对局部界面设计的通用窗口容器，它可以像窗口设计器一样进行界面设计，设计后的界面可以在任意窗口或容器中重复使用。

简单演示如下：

“Ctrl+D”新建一个类，基础类填写组件布局器，然后在右键菜单中就可以打开组件布局器的界面设计器。

其界面设计器相对于窗口的设计器少了一个标题栏、除此之外没有任何区别。

界面设计完毕后也会自动生成组件变量。

首先利用组件布局器设计两个界面出来，如下：

设计完成后公开组件，以便于后续选择夹交互操作。

打开主窗口设计器，将选择夹组件放到窗口中。

添加主窗口创建完毕事件，调用“选择夹”组件的“添加子夹()”方法就可以添加选择夹内容。

运行效果如下：

在火山视窗中选择夹的组件交互，如下所示：

(1) 首先定义组件布局器变量。

(2) 利用“取子夹内容组件()”方法取出子夹内容，务必注意子夹索引从0开始。

(3) 利用“挂接事件()”方法挂接组件布局器中的按钮事件。

(4) 在主窗口中添加按钮被单击事件，判读组件布局器中的按钮是否被点击，并执行对应的修改操作。

(5) 最终可以看到，实现了选择夹组件交互效果。

3、树形框(树型框)

树形框组件的差异主要体现在树形框项目上。

易语言演示：

在易语言中名叫“树型框”，其项目内容是字节集，通过“项目”属性可以进行读写操作。

运行效果如下：

火山演示：

在火山视窗中名叫“树形框”，其项目内容是文本数据，如下所示：

在树形框项目设置窗口中，随便添加几个项目。

项目设置完毕后会自动生成文本格式的项目数据，其优点相对易语言更加方便数据存储或传输。

必要时可以自行拼接文本数据自行实现项目效果，每列信息为以'\n'字符分隔的字段，各个字段的意义为：

1. 文本: 名称;

2. 整数: 项目图标索引位置;

3. 整数: 为被选择状态时的图标索引位置,为-1表示与项目图标索引位置相同;

4. 整数: 用户数据;

5. 整数: 是否加粗;

6. 整数: 是否展开子项目;

7. 整数: 状态图标索引位置;

8. 整数: 缩进位置.

火山视窗中的项目属性同为可读写项目，可以非常方便实现不同树形框之间的项目赋值。

运行效果如下：

4、分组框

易语言的分组框和火山视窗的分组框效果一致，并且同样都有一个小问题，嵌套使用时分组框的字体会显示异常。

如下所示：

针对这一问题火山视窗额外提供了高级分组框解决此问题，如下所示：

软件运行后字体也是正常状态：

5、通用对话框

本组件比较特殊，在易语言中属于不可视组件，使用时需要在窗口设计器上绘制出来，但运行时此组件不可见，需要通过调用指定方法才能显示出来。

易语言演示：

在基本组件中可以找到通用对话框，将其画到窗口上就可以使用。

利用通用对话框实现浏览文件功能：

运行效果如下：

在火山视窗中对此组件进行了优化，不需要在窗口上绘制即可操作。

相对易语言，火山视窗中的“打开()”方法需要额外提供一个父窗口参数，如果需要在当前窗口类上弹出填写“本对象”即可，如果是其它窗口就提供对应的窗口对象名称。

利用通用对话框实现浏览文件功能：

运行效果如下：

6、菜单

6.1 窗口菜单显示

易语言演示：

在易语言中可以右键窗口设计器，选择“菜单编辑器”即可打开进行菜单编辑。

其界面效果如下：

菜单编辑完毕后可直接在窗口设计器中查看到菜单效果。

火山视窗演示：

在火山中需要单独定义基础类为“菜单类”的类，右键选择“打开菜单设计器”即可进行菜单编辑。

其界面效果如下，使用方式与易语言基本一致。

火山菜单设计完毕后，会自动生成菜单常量值，后续通过此常量值可操作菜单。

在火山中菜单并不会直接显示在窗口中，需要在窗口中定义菜单变量，调用“置菜单实例()”方法设置菜单。

软件运行后才可以看到菜单效果：

6.2 右键菜单与窗口菜单一致

易语言演示：

在易语言中直接调用“弹出菜单”方法，提供菜单名称就可以弹出指定菜单。

最终可以实现右键菜单与窗口菜单一致。

火山视窗演示：

在火山中想要实现同样的效果，首选需要将窗口菜单复制一份，并修改类名。

打开“右键菜单”的菜单设计器。

如果需要在右键中弹出“程序”菜单，就将其余菜单全部选中并删除。

注意：常量值不要随意修改，否则会导致菜单在使用时出现问题。

在使用时，需要定义菜单变量，并利用“弹出实例菜单()”方法进行弹出。

最终效果如下：

6.3 禁止菜单

易语言演示：

在易语言中直接通过菜单名调用“禁止”属性设置为真，就可以实现禁止菜单。

效果如下：

火山视窗演示：

在火山中需要通过菜单变量调用“允许菜单项()”方法来禁止菜单。

运行效果如下：

6.4 选中菜单

易语言演示：

在易语言中直接通过菜单名调用“选中”属性设置为真，就可以实现选中菜单。

效果如下：

火山视窗演示：

在火山中需要通过菜单变量调用“选中菜单项()”方法来选中菜单。

运行效果如下：

6.5 隐藏菜单

易语言演示：

在易语言中直接通过菜单名调用“可视”属性就可以实现显示或隐藏菜单。

效果如下：

火山视窗演示：

在火山中没有提供现成的可视方法，需要通过“删除菜单项()”和“插入菜单项()”来实现此效果。

运行效果如下：

6.6 菜单标题修改

易语言演示：

在易语言中直接通过菜单名调用“标题”属性就可以实现修改菜单标题。

效果如下：

火山视窗演示：

在火山中需要通过菜单变量调用“置菜单标题()”方法来修改标题。

运行效果如下：

6.7 菜单事件

易语言演示：

在易语言中需要通过窗口设计器，点击菜单项来添加菜单事件。

代码编写如下：

运行效果如下：

火山视窗演示：

在火山中所有菜单事件都是通过窗口的“接收到命令”事件接收，通过“命令代码”参数判断菜单被单击。

运行效果如下：


火山视窗与易语言数组操作差异_火山平台语法手册

四、火山视窗与易语言数组操作差异

1、概述

在易语言中数组操作都是通过“[]”进行，而在火山中主要利用数组对象操作，譬如：文本数组类、整数数组类对象数组类等。虽然火山视窗中也支持数组符号来定义数组，但是暂未提供相关的数组操作方法，因此在日常开发中只能使用数组对象来操作，相对于数组符号数组对象的操作更加灵活。

下面用文本数组来演示易语言和火山视窗之间的操作差异。

2、加入成员

易语言演示：

在易语言中利用“加入成员()”方法添加成员到数组中。

运行结果如下：

火山演示：

在火山中需要定义“文本数组类”变量，调用其“加入成员()”方法来添加成员。

数组对象的循环取出内容，相对易语言来说也简单很多。

运行结果如下：

3、取成员

易语言演示：

易语言取数组成员利用数组下标即可取出，下标索引从1开始。

运行结果如下：

火山演示：

在火山视窗中利用数组对象的“取成员()”方法进行获取成员，成员索引从0开始。

运行结果如下：

4、插入成员

易语言演示：

在易语言中需要通过“插入成员()”方法来插入成员，成员索引从1开始。

运行结果如下：

火山演示：

在火山视窗中也是通过“插入成员()”方法来插入，需要注意的是，其成员索引从0开始。

运行结果如下：

5、替换成员

易语言演示：

在易语言中利用数组下标就可以实现替换成员。

运行结果如下：

火山演示：

在火山视窗中需要利用“置成员值()”方法进行替换成员。

运行结果如下：

6、查找成员是否存在

易语言演示：

在易语言中需要自己封装一个方法，利用循环来处理。

运行结果如下：

火山演示：

在火山视窗中直接使用“所指定值是否存在()”方法进行判断即可。

运行结果如下：

7、删除成员

易语言演示：

在易语言中使用“删除成员()”方法就可以删除成员，成员索引从1开始。

运行结果如下：

火山演示：

在火山中同样使用“删除成员()”方法，其成员索引从0开始。

运行结果如下：

8、清空数组

易语言演示：

在易语言中通过“重定义数组()”方法进行清空数组。

运行结果如下：

火山演示：

在火山视窗中调用“删除所有成员()”方法进行清空。

运行结果如下：

9、扩展知识“对象数组”

在易语言中可以直接通过“加入成员()”来添加对象数据.

在火山中有两种方案。

第一：直接使用对象数组类；

第二：使用对象数组模板类；

前者在操作时需要强制转换，后者则不需要。

对象数组类演示：

注：对象数组进行取成员时，赋值后的对象是一个全新的对象，操作此对象不会影响数组内的对象。

对象数组模板类演示：

首先新建一个类，基础类填写“对象数组模板类”，属性名提供“@模板实现类”属性值提供类名，即可完成对象数组的创建。

使用对象数组模板类创建的数组，在取成员时不需要强制转换即可赋值。


火山视窗与易语言文件读写命令操作差异_火山平台语法手册

五、火山视窗与易语言文件读写命令操作差异

1、概述

易语言和火山视窗的文件读写命令共有两个差异，分别如下：

(1) 易语言使用时无需定义变量即可操作，在火山视窗中需要定义“文件读写类”变量才可以操作。

(2) 易语言中文件读写中文本相关的操作命令，都采用的是多字节编码，而在火山视窗中的对应命令都采用的是Unicode编码。因此如果有易语言项目转火山项目时要额外注意这一点，需要提前将文本文件转换成Unicode编码的才可以使用火山视窗进行文件读写。

下面以文件读写中的文本命令，演示如何使用火山视窗中的文件读写。

2、读入文本

易语言演示：

在易语言中虽然无需创建对象即可使用，但是依然需要一个整数变量来存储文件句柄。

在文件操作完毕后需要调用“关闭文件()”方法手动关闭。

运行效果如下：

火山演示：

在火山中需要定义“文件读写类”变量，在操作文件完毕后可以选择性的决定是否调用“文件.关闭文件()”方法来关闭。

推荐使用完毕后手动关闭文件。

运行效果如下：

注：虽然都是读取10个字节，但火山视窗中实际读取的文本长度较长，这是因为ansi编码和UTF-16LE编码的长度不同导致的。

3、读入一行

易语言演示：

打开文件后调用“读入一行()”就可以读取内容到编辑框中。

运行效果如下：

火山演示：

打开文件后调用“文件.读入一行()”就可以读取一行文本到编辑框中。

运行效果如下：

4、写出文本

易语言演示：

打开文件后调用本方法就可以写出文本内容到文件中。

注：如果想要读入文件内容，必须关闭文件后才可以读取。

运行效果如下：

火山演示：

打开文件后就可以调用“文件.写出文本()”方法写出文本到文件中。

在火山视窗中同样也需要关闭文件后才可以读取内容。

运行效果如下：

5、写文本行

易语言演示：

打开文件后调用“写文本行()”方法就可以写出一行文本到文件中。

运行效果如下：

火山演示：

打开文件后调用“文件.写文本行()”方法就可以写出一行文本到文件中。

运行效果如下：


火山视窗与易语言DLL动态链接库差异_火山平台语法手册

六、火山视窗与易语言DLL动态链接库差异

1、DLL项目创建

易语言演示：

在易语言中点击“程序->新建”菜单，打开新建项目窗口后，选择“Windows动态链接库”即可创建dll项目。

新建易语言dll项目后默认代码如下：

火山演示：

在火山视窗中点击“文件->新建->项目”，打开新建项目窗口后，可以选择“动态链接库”或“MFC动态链接库”。

新建火山视窗DLL项目后默认代码如下：

2、DLL方法编写

易语言演示：

在易语言中新建一个子程序公开即可，编译DLL后就可以在易语言中使用被公开的子程序。

火山演示：

火山中编写DLL方法相对易语言稍微有点复杂，但格式是固定的。

(1) 必须勾选公开和静态。

(2) 提供一个“@输出名”属性，用于输出DLL英文方法名，因为在火山视窗中不支持中文名直接编译DLL。

(3) 必须提供一个“@视窗.输出”，属性值填写真，用来表示此方法为DLL方法。

注：DLL方法返回值只支持非文本型基本数据类型，且和普通方法一样参数也不支持数组。

3、DLL调试

易语言演示：

在易语言中调试较为简单，直接在“_临时子程序”下编写要调试的代码，按“F5”进行调试即可。

火山演示：

(1) 建立dll项目，在DLL方法中提供一个调试输出方法用于测试。

(2) 按F5快捷键，调试当前DLL项目，拿到DLL调试后的路径。

注：此时的DLL项目暂不支持调试会报错，忽略即可，主要是拿到DLL调试后的路径，便于在火山视窗项目中引用DLL。

(3) 打开视窗项目，在视窗项目中引用DLL。

(4) 在主窗口创建完毕后，调用DLL方法。

(5) 右键视窗项目编译发布版。

(6) 发布版编译成功后复制程序路径。

(7) 右键DLL项目，选择属性。

(8) 将复制的exe程序路径，粘贴到“调试->调试命令行”中即可。

(9) 最后就可以在DLL项目中按F5调试DLL。

4、DLL编译

易语言演示：

DLL属性配置：

点击“程序->配置”菜单，即可设置DLL相关属性信息。

DLL编译：

点击“编译->编译/静态编译”菜单即可选择编译发布版。

火山演示：

DLL属性配置：

按下快捷键“Alt+Enter”打开项目属性，即可设置DLL相关信息。

DLL编译：

设置完毕后，选择“生成->生成活动项目”即可编译发布版。


从易语言到火山视窗教程目录_火山软件开发平台入门教程目录

一、流程控制

二、算数运算

三、逻辑比较

四、位运算

五、变量操作

六、数组操作

七、环境存取

八、拼音处理

九、文本操作

十、时间操作

十一、数值转换

十二、字节集操作

十三、磁盘操作

十四、文件读写

十五、系统处理

十六、媒体播放

十七、程序调试

十八、其它

十九、数据库

二十、网络通讯

二十一、控制台操作

二十二、COM对象类

二十三、COM变体型


易语言核心库命令对照表_火山平台语法手册

第四章 易语言核心库命令对照表

基于火山软件开发平台飞扬#20版本后续可能会有变动

一、流程控制

易语言 | 火山 | 注释
如果 | 如果 | 本命令根据提供的逻辑参数的值，来决定是否改变程序的执行位置。
如果真 | 如果真 | 本命令和如果命令相比，没有参数为假时执行的部分。
判断 | 无 | 本命令根据提供的逻辑参数的值，来决定是否改变程序的执行位置。
无 分支判断 / 分支

开始对一个整数参数的值进行分支判断处理。

“分支判断”方法的子语句体中只能存在“分支”或“默认分支”方法的调用语句，并且至少包含一个。
判断循环首 / 尾 | 判断循环 | 根据首方法提供的逻辑参数的值，来决定是否进入循环。
循环判断首 / 尾 | 循环判断首 / 尾 | 根据尾方法提供的逻辑参数的值，来决定是否返回到循环首部继续进行循环。
计次循环首 / 尾 | 计次循环 | 执行本命令将把循环体内的命令重复执行指定的次数。
变量循环首 / 尾 循环

执行本命令将利用变量对循环体内的命令进行循环执行。第一次执行此命令时将使用“变量起始值”参数初始化“循环变量”参数所指定的变量。每次（包括第一次）执行到此命令处都将判断循环变量内的值是否已经超过“变量目标值”参数所指定的值，如已超过，则跳转到对应的“变量循环尾”命令的下一条命令处继续执行，否则顺序执行下一条语句继续进行循环。
到循环尾 | 到循环尾 | 本命令转移当前程序执行位置到当前所处循环体的循环尾语句处。
跳出循环 | 跳出循环 | 本命令转移当前程序执行位置到当前所处循环体循环尾语句的下一条语句处。
返回 | 返回 | 本命令转移当前程序执行位置到调用本子程序语句的下一条语句处,并可根据需要（如果有）返回一个值到子程序调用处。
结束 | 结束 | 本命令结束当前程序的运行。

二、算数运算

易语言 火山 注释
相乘 *

表示乘法运算
相除 /

表示除法运算
整除 无

表示整除，在火山视窗中直接使用强制转换即可。
求余数 %

表示求余数
相加 +

表示加法运算
相减 -

表示减法运算
负 -

表示取负数
取符号 取符号

返回一个整数，如果小于零，表明给定数值为负；如果等于零，表明给定数值为零；如果大于零，表明给定数值为正。
取绝对值

取整数绝对值

取小数绝对值

取长整数绝对值

取一个数值的绝对值。
取整 取整

返回一个小数的整数部分。本命令与“绝对取整”命令不相同之处为：

如果给定小数为负数，则本命令返回小于或等于该小数的第一个负整数，而“绝对取整”命令则会返回大于或等于该小数的第一个负整数。例如，本命令将 -7.8 转换成 -8，而“绝对取整”命令将 -7.8 转换成 -7。
绝对取整 绝对取整

返回一个小数的整数部分。本命令与“取整”命令不相同之处为：

如果给定小数为负数，则本命令返回大于或等于该小数的第一个负整数，而“取整”命令则会返回小于或等于该小数的第一个负整数。例如，本命令将 -7.8 转换成 -7，而“取整”命令将 -7.8 转换成 -8。
四舍五入 四舍五入

返回按照指定的方式进行四舍五入运算的结果数值
求次方 求次方

返回指定数值的指定次方
求平方根 求平方根

返回指定数值的平方根
求正弦 求正弦

返回指定角的正弦值
求余弦 求余弦

返回指定角的余弦值
求正切 求正切

返回指定角的正切值
求反正切 求反正切

返回指定角的反正切值
求自然对数 求自然对数

返回指定参数的自然对数值
求反对数 求反对数

返回 E（自然对数的底）的某次方
是否运算正确 是否运算正确

对乘、除、“求次方”、“求平方根”、“求正弦值”、“求余弦值”、“求正切值”、“求反正切值”、“求自然对数”、“求反对数”等等数学运算命令所计算出来的双精度结果数值进行校验，如果该数值正确有效，返回真。如果该数值是运算错误或运算溢出后的结果，返回假。
置随机数种子 置随机数种子

为随机数生成器初始化一个种子值，不同的种子值将导致“取随机数”命令返回不同的随机数系列。
取随机数 取随机数

返回一个指定范围内的随机数值。

三、逻辑比较

易语言 火山 注释
等于 =

用于将右侧的参数值赋予给左侧参数内容
等于 ==

用于比较左侧参数与右侧参数是否相等
不等于 !=

当左侧参数不等于右侧参数时返回真
小于 <

当左侧参数小于右侧参数时返回真
大于 >

当左侧参数大于右侧参数时返回真
小于或等于 <=

当左侧参数小于等于右侧参数时返回真
大于或等于 >=

当左侧参数大于等于右侧参数时返回真
近似等于 是否以文本开头

返回当前文本是否以所指定文本开头。
并且 &&

用于并且逻辑操作，当左侧参数和右侧参数均为逻辑值真时，最终整个表达式的结果返回真。
或者 ||

用于或者逻辑操作，当左侧参数或右侧参数其中任意一个的逻辑值为真，最终整个表达式的结果返回真。
取反 取反

如果参数值为真则返回假，如果参数值为假则返回真。

四、位运算

易语言 火山 注释
位取反 位取反

将所指定整数值的每一位进行反转，返回反转后的结果。
位与

位与

连续位与

将多个整数值进行位与运算，返回运算后的结果。
位或

位或

连续位或

将多个整数值进行位或运算，返回运算后的结果。
位异或

位异或

连续位异或

将多个整数值进行位异或运算，返回运算后的结果。
左移 位左移

将参数1的每一位向左移动参数2所指定的数目,返回运算后的结果.
右移 位右移

将参数1的每一位向右移动参数2所指定的数目，返回运算后的结果。
合并整数 合并整数

将第一个整数的低16位放置到结果整数的低16位，将第二个整数的低16位放置到结果整数的高16位，以此合并成一个整数，并返回合并后的结果。
合并短整数 合并短整数

将第一个整数的低8位放置到结果短整数的低8位，将第二个整数的低8位放置到结果短整数的高8位，以此合并成一个短整数，并返回合并后的结果。

五、变量操作

易语言 火山 注释
赋值 =

将指定的常数、常数集、常量、资源、对象或者变量赋于到指定的变量或变量数组中去。
连续赋值 连续赋值

将一个值连续赋予到所指定的一系列同类型变量中。

注：在火山视窗中暂不支持对属性进行赋值。

六、数组操作

在火山视窗中的数组操作主要使用XX数组类进行操作，譬如：文本数组类，整数数组类。

易语言 火山 注释
重定义数组 数组变量.重置数组

重置数组中的成员数为所指定的数目
取数组成员数

取数组成员数

整数数组.取成员数

获取数组的成员数量
取数组下标 无

返回指定数组维可用的最大下标（最小下标固定为1）
复制数组 无

将数组数据复制到指定的数组变量，该数组变量内的所有数据和数组维定义信息将被全部覆盖。
加入成员 数组变量.加入成员

将一个所指定类型的成员值加入到数组的尾部
插入成员 数组变量.插入成员

将所指定的成员值插入到所指定的索引位置
删除成员 数组变量.删除成员

删除数组中所指定索引位置处的成员
清除数组 数组变量.删除所有成员

删除指定数组变量中的所有成员
数组排序 数组变量.排序

对数组中的所有成员进行排序
数组清零 数组变量.清零

将数组中的所有成员值清除为零值

七、环境存取

易语言 火山 注释
取命令行 取命令行

本命令可以取出在启动程序时附加在其可执行文件名后面的所有以空格分隔的命令行文本段
取运行目录 取运行目录

取当前被执行的程序文件所处的目录
取执行文件名 取执行文件名

取当前被执行的程序文件的名称
读环境变量 读环境变量

读取系统环境变量
写环境变量 写环境变量

设置系统环境变量

八、拼音处理

易语言 火山 注释
取所有发音 无

返回包含指定汉字所有拼音编码的文本数组（支持多音字），目前仅支持国标汉字。
取发音数目 无

返回指定汉字的发音数目
取拼音 无

返回包含指定汉字的指定拼音编码的文本
取声母 无

返回包含指定汉字指定拼音编码的声母部分文本
取韵母 无

返回包含指定汉字指定拼音编码的韵母部分文本
发音比较 无

比较两段文本的发音，如果发音相同返回真，否则返回假。对于文本中的非国标汉字部分，将仅进行简单的值比较。
输入字比较 无

将一个拼音输入字文本与另外一个普通文本比较，如果两者相符，返回真，否则返回假。

九、文本操作

易语言 火山 注释
取文本长度 取文本长度

返回所指定文本型数据的长度
取文本左边 取文本左边

返回一个文本，其中包含指定文本中从左边算起指定数量的字符。
取文本右边 取文本右边

返回一个文本，其中包含指定文本中从右边算起指定数量的字符。
取文本中间 取文本中间

返回一个文本，其中包含指定文本中从指定位置算起指定数量的字符。
字符

到文本((字符)整数值)

返回一个文本，其中包含有与指定字符代码相关的字符。

火山视窗示例：到文本((字符)66)，最终返回英文字母B。
取代码

(整数)取字符()

返回文本中指定位置处字符的代码。

火山视窗示例：(整数)取字符("B",0)，最终返回66.
寻找文本 寻找文本

查找当前文本中所指定文本的所处索引位置，未找到则返回-1。
倒找文本 倒找文本

逆向查找当前文本中所指定文本的所处索引位置，未找到则返回-1。
到小写 到小写

将当前文本中的所有英文字母转换为小写，返回转换后的结果文本.
到大写 到大写

将文本中的小写英文字母变换为大写，返回变换后的结果文本。
到全角 到全角

将文本中的半角字母、空格或数字变换为全角，返回变换后的结果文本。
到半角 到半角

将文本中的全角字母、空格或数字变换为半角，返回变换后的结果文本。
到文本 到文本

返回指定数据的文本形式
删首空 删首空

删除当前文本首部的所有空白字符，返回删除后的结果文本。
删尾空 删尾空

删除当前文本尾部的所有空白字符，返回删除后的结果文本。
删首尾空 删首尾空

删除当前文本首部和尾部的所有空白字符，返回删除后的结果文本。
删全部空 无

删除指定文本中所有的空白文本。
文本替换 文本替换

将指定文本的某一部分用其它的文本替换
子文本替换 子文本替换

将所指定文本中的指定内容子文本替换为另一个文本。

注：在火山视窗中，是通过参数1直接返回被替换后的内容。
取空白文本 取空白文本

返回具有指定数目半角空格的文本
取重复文本 取重复文本

将所指定文本重复指定次数，返回结果文本。
文本比较 文本比较

比较两个文本，返回比较结果。

如果返回值小于0，表示本文本小于所比较文本;

如果等于0，表示本文本等于所比较文本;

如果大于0，表示本文本大于所比较文本。
分割文本

分割文本

分割子文本

将指定文本进行分割，在火山视窗中是通过参数返回分割后的数组。

注：火山视窗中的“分割文本”，分割的是字符集，遇到任意字符都会进行分割。如果想实现和易语言中同样的效果需使用“分割子文本”即可。
指针到文本 指针到文本

根据指定指针所指向的文本数据建立并返回一个文本
文本到UTF8 文本到UTF8

将当前文本转换到UTF8字符集格式后返回
UTF8到文本 UTF8到文本

将所指定UTF8格式的文本数据转换到文本后返回
文本到UTF16 到字节集

将所指定文本转换到UTF16格式后返回
UTF16到文本 字节集到文本

将所指定的字节集数据转换到文本后返回。

十、时间操作

易语言 火山 注释
到时间 到时间

将指定文本转换为时间并返回。
增减时间 增减时间

返回一个时间，这一时间被加上或减去了一段间隔。如果改变后的时间无效，将自动靠近最近的有效时间。
取时间间隔 取时间间隔

返回一个数值，表示“时间1”减去“时间2”之后的间隔数目。注意：每个星期以星期天为第一天。
取某月天数 取某月天数

返回指定月份所包含的天数。如果给定的月份无效，返回0。
时间到文本 时间到文本

将指定时间转换为文本并返回。
取时间部分 取时间部分

返回一个包含已知时间指定部分的整数。
取年份 取年份

返回一个值为 100 到 9999 之间的整数，表示指定时间中的年份。
取月份 取月份

返回一个值为 1 到 12 之间的整数，表示指定时间中的月份。
取日 取日

返回一个值为 1 到 31 之间的整数，表示一个月中的某一日。
取星期几 取星期几

返回一个值为 1 到 7 之间的整数，表示一个星期中的某一日。星期日为 1，星期一为 2，依此类推。
取小时 取小时

返回一个值为 0 到 23 之间的整数，表示一天中的某一小时。
取分钟 取分钟

返回一个值为 0 到 59 之间的整数，表示一小时中的某一分钟。
取秒 取秒

返回一个值为 0 到 59 之间的整数，表示一分钟中的某一秒。
指定时间 指定时间

返回包含指定年、月、日、小时、分、秒的时间。如果指定了无效时间，将自动使用最相近的有效时间代替。
取现行时间 取现行时间

返回当前系统日期及时间。
置现行时间 置现行时间

设置当前系统日期及时间。
取日期 取日期

返回一个日期时间型数据的日期部分，其小时、分钟、秒被固定设置为0时0分0秒。
取时间 取时间

返回一个日期时间型数据的时间部分，其年、月、日被固定设置为2000年1月1日。

十一、数值转换

易语言 火山 注释
到数值 文本到小数

将所指定文本转换到小数并返回
数值到大写 数值到大写

将数值转换为简体或繁体的大写形式，返回转换后的文本。
数值到金额 无

将数值转换为金额的简体或繁体大写形式，返回转换后的文本。
数值到格式文本 数值到格式文本

返回一个文本，代表指定数值被格式转换后的结果。
取十六进制文本

取十六进制文本

取长整数十六进制文本

返回一个文本，代表指定数值的十六进制形式。
取八进制文本 无

返回一个文本，代表指定数值的八进制形式。
到字节 (字节)欲转换的数据

返回包含于文本内的字节值，文本中是一个适当类型的数值，支持全角书写方式。
到短整数 文本到短整数

将文本转换成短整数并返回
到整数 文本到整数

将文本转换成整数并返回
到长整数 文本到长整数

将文本转换成长整数并返回
到小数 文本到小数

将文本转换成小数并返回
十六进制 无

计算返回所指定十六进制文本常量对应的整数值。
二进制 无

计算返回所指定二进制文本常量对应的整数值。
反转整数字节序 反转整数字节序

将所指定整数的字节序反转，返回反转后的结果值。

十二、字节集操作

易语言 火山 注释
取字节集长度 取字节集长度

取字节集数据的长度
到字节集 到字节集

将指定数据转换为字节集后返回转换结果
取字节集数据 取字节集数据

取出字节集中指定位置指定数据类型的数据
取字节集左边 取字节集左边

返回一个字节集，其中包含指定字节集中从左边算起指定数量的字节。
取字节集右边 取字节集右边

返回一个字节集，其中包含指定字节集中从右边算起指定数量的字节。
取字节集中间 取字节集中间

返回一个字节集，其中包含指定字节集中从指定位置算起指定数量的字节。
寻找字节集 寻找字节集

返回一字节集在另一字节集中最先出现的位置
倒找字节集 倒找字节集

返回一字节集在另一字节集中最后出现的位置
字节集替换 字节集替换

将指定字节集的某一部分用其它的字节集替换，然后返回替换后的结果。
子字节集替换 子字节集替换

返回一个字节集，该字节集中指定的子字节集已被替换成另一子字节集，并且替换发生的次数也是被指定的。
取空白字节集 取空白字节集

返回具有特定数目 0 字节的字节集。
取重复字节集 取重复字节集

返回一个字节集，其中包含指定次数的字节集重复结果。
分割字节集 分割字节集

将指定字节集进行分割，返回分割后的一维字节集数组。
指针到字节集 指针到字节集

返回指定内存指针所指向地址处的一段数据，注意调用本命令前一定要确保所提供的内存地址段真实有效。
指针到整数 无

返回指定内存指针所指向地址处的一个整数(INT)，注意调用本命令前一定要确保所提供的内存地址段真实有效。
指针到小数 无

返回指定内存指针所指向地址处的一个小数(FLOAT)，注意调用本命令前一定要确保所提供的内存地址段真实有效。
指针到双精度小数 无

返回指定内存指针所指向地址处的一个双精度小数(DOUBLE)，注意调用本命令前一定要确保所提供的内存地址段真实有效。
取字节集内整数 无

返回字节集中所指定位置处的整数。
置字节集内整数 无

设置字节集中所指定位置处的整数值。

十三、磁盘操作

易语言 火山 注释
取磁盘总空间 取磁盘总空间

返回以 1024 字节（KB）为单位的指定磁盘全部空间。如果失败，返回-1。
取磁盘剩余空间 取磁盘剩余空间

返回以 1024 字节（KB）为单位的指定磁盘现行剩余空间。如果失败，返回-1。
取磁盘卷标 取磁盘卷标

返回指定磁盘的卷标文本
置磁盘卷标 置磁盘卷标

设置指定磁盘的卷标文本。成功返回真，失败返回假。
改变驱动器 改变驱动器

改变当前的缺省驱动器。成功返回真，失败返回假。
改变目录 改变目录

改变当前的目录，但不会改变缺省驱动器位置。成功返回真，失败返回假。
取当前目录 取当前目录

返回一个文本，用来代表当前的目录。如果失败，返回空文本。
创建目录 创建目录

创建一个新的目录。成功返回真，失败返回假。
取当前目录 取当前目录

返回一个文本，用来代表当前的目录。
删除目录 删除目录

删除一个存在的目录及其中的所有子目录和下属文件，请务必谨慎使用本命令。成功返回真，失败返回假。
复制文件 复制文件

复制一个文件到另外一个位置，成功返回真，失败返回假。
移动文件 移动文件

将文件从一个位置移动到另外一个位置。成功返回真，失败返回假。
删除文件 删除文件

删除一个文件，成功返回真，失败返回假。
文件更名 文件更名

重新命名一个文件或目录。成功返回真，失败返回假。
文件是否存在 文件是否存在

判断指定的磁盘文件是否真实存在。如存在返回真，否则返回假。
寻找文件 文件查找类

用于寻找文件，在火山视窗中需要定义变量才可以使用。
取文件时间 取文件时间

返回指定文件被创建或最后修改后的日期和时间。如果该文件不存在，将返回100年1月1日。
取文件尺寸 取文件尺寸

返回一个文件的长度，单位是字节。如果该文件不存在，将返回 -1。
取文件属性 取文件属性

返回一个文件或目录的属性。
置文件属性 置文件属性

为一个文件设置属性信息。
取临时文件名 取临时文件名

返回一个在指定目录中确定不存在的 .TMP 全路径文件名称。
读入文件 读入文件

返回一个字节集，其中包含指定文件的所有数据。
写到文件 写到文件

本命令用作将一个或数个字节集顺序写到指定文件中，文件原有内容被覆盖。成功返回真，失败返回假。

十四、文件读写

在火山视窗中需要定义“文件读写类”变量才可以使用。

易语言 火山 注释
打开文件 文件读写变量.打开文件

打开一个普通文件，以对文件进行输入或输出。
打开内存文件 无

建立一个内存文件，以计算机内存为存储介质对数据进行文件式的快速输入或输出。
关闭文件 文件读写变量.关闭文件

关闭被打开的文件
关闭所有文件 无

关闭所有现行被打开的文件
锁住文件 文件读写变量.锁住文件

在有若干个进程访问同一个文件的环境中，使用本命令拒绝其它用户对被打开文件中的某个区域进行读写访问。成功返回真，失败返回假。
解锁文件 文件读写变量.解锁文件

解除由“锁住文件”命令对文件所进行的锁定。成功返回真，失败返回假。注意：本命令调用时所提供的参数值必须与调用“锁住文件”命令时所提供的参数值完全一致。
移动读写位置 文件读写变量.移动读写位置

在被打开的文件中，设置下一个读或写操作的位置。成功返回真，失败返回假。
移到文件首 文件读写变量.移到文件首

在被打开的文件中，设置下一个读或写操作的位置到文件首。成功返回真，失败返回假。
移到文件尾 文件读写变量.移到文件尾

在被打开的文件中，设置下一个读或写操作的位置到文件尾。成功返回真，失败返回假。
读入字节集 文件读写变量.读入字节集

从文件中当前读写位置读取并返回一段字节集数据，实际读入长度(即所返回字节集的尺寸)可能会小于欲读入长度。

如果读入失败,将返回一个空字节集并且自动将当前文件读写位置移到文件尾部。
写出字节集 文件读写变量.写出字节集

写出一个字节集数据到文件中当前读写位置处，返回是否成功。
读入文本 文件读写变量.读入文本

从文件中当前读写位置读取并返回一段文本数据，实际读入长度(即返回文本的尺寸)可能会小于欲读入长度。如果该数据中存在字符值0或26(文本结束标志)，将仅返回该字符之前的数据(后续读写将跳过该字符)。如果读入失败，将返回一个空文本并且自动将当前文件读写位置移到文件尾部。

注: 在火山视窗中，文本文件的编码格式必须为UTF-16。
写出文本 文件读写变量.写出文本

本命令用作写出一段文本数据到文件中当前读写位置处。成功返回真，失败返回假。

注：在火山视窗中写出的文本编码为UTF-16。
读入一行 文件读写变量.读入一行

本命令用作从文件中当前读写位置读取并返回一行文本数据，行末的回车及换行符将被抛弃。如果读入失败，将返回一个空文本并且自动将当前文件读写位置移到文件尾部。

注: 在火山视窗中，文本文件的编码格式必须为UTF-16。
写文本行 文件读写变量.写文本行

本命令用作写出一行文本数据到文件中当前读写位置处，每行的尾部将被自动加上回车及换行符。

注：在火山视窗中写出的文本编码为UTF-16。
读入数据 文件读写变量.读入数据

从文件中当前读写位置读取并返回指定类型的数据，如果读入成功，返回真，否则将返回假并且自动将当前文件读写位置移到文件尾部。
写出数据 文件读写变量.写出数据

将所指定数据写出到文件中当前读写位置，返回是否成功。
是否在文件尾 文件读写变量.是否在文件尾

返回当前读写位置是否已经处于文件数据的尾部
取读写位置 文件读写变量.取读写位置

返回指定被打开文件的当前读/写位置，位置值从0开始。失败返回-1。
取文件长度 文件读写变量.取文件长度

返回当前被打开文件的长度，单位为字节。失败返回 -1 。
插入字节集 无

本命令用作插入一段字节集数据到文件中当前读写位置处
插入文本 无

本命令用作插入一段文本数据到文件中当前读写位置处
插入文本行 无

本命令用作插入一段文本行到文件中当前读写位置处
删除数据 无

本命令用作在文件中当前读写位置处删除一段字节数据，文件后面的数据顺序前移。
打开加密文件 无

打开一个以指定密码加密的文件，以对此文件进行快速安全访问，支持大尺寸文件。

十五、系统处理

易语言 火山 注释
运行 运行

本命令运行指定的可执行文件或者外部命令。如果成功，返回真，否则返回假。
取剪辑板文本 取剪辑板文本

返回存放于当前 Windows 系统剪辑板中的文本。如果当前剪辑板中无文本数据，将返回空文本。
置剪辑板文本 置剪辑板文本

将指定文本存放到当前 Windows 系统剪辑板中去，剪辑板中的原有内容被覆盖。成功返回真，失败返回假。
剪辑板中可有文本 剪辑板中可有文本

如果当前 Windows 系统剪辑板中有文本数据，则返回真，否则返回假。
清除剪辑板 清除剪辑板

清除当前 Windows 系统剪辑板中的所有数据
取屏幕宽度 取屏幕宽度

返回屏幕当前显示区域的宽度，单位为像素。
取屏幕高度 取屏幕高度

返回屏幕当前显示区域的高度，单位为像素。
取鼠标水平位置 取鼠标水平位置

返回鼠标指针的当前水平位置，单位为像素。
取鼠标垂直位置 取鼠标垂直位置

返回鼠标指针的当前垂直位置，单位为像素。
取颜色数 取颜色数

返回当前显示方式所提供的最大颜色显示数目
输入框 输入框

在一对话框中显示提示，等待用户输入正文并按下按钮。如果用户在确认输入后（按下“确认输入”按钮或回车键）退出，返回真，否则返回假。/p>

信息框

信息框

全局信息框

显示一个信息框等待用户点击按钮，并返回一个值告诉用户单击哪一个按钮。

如果信息框有“取消”按钮，则按下 ESC 键与单击“取消”按钮的效果相同。

注：火山视窗中的信息框依赖窗口类，全局信息框可以在任意类中调用。
鸣叫 鸣叫

通过计算机媒体设备或者喇叭发出一个声音
取启动时间 取启动时间

返回自 Windows 系统启动后到现在为止所经历过的毫秒数
置等待鼠标 鼠标等待器

本命令设置现行鼠标的形状为沙漏形，用作在即将长时间执行程序前提示操作者。

在火山视窗中需要定义“鼠标等待器”变量才可以使用。
恢复鼠标 鼠标等待器

本命令恢复现行鼠标的原有形状

在火山视窗中，当“鼠标等待器”变量被销毁时，会自动恢复鼠标。
延时 延时

暂停当前程序的运行并等待指定的时间
取文本注册项 取文本注册项

在 Windows 注册表中返回指定的文本类型注册表项值
取数值注册项 取数值注册项

在 Windows 注册表中返回指定的数值类型注册表项值
取字节集注册项 取字节集注册项

在 Windows 注册表中返回指定的字节集类型注册表项值
写注册项

写文本注册项

写数值注册项

写字节集注册项

在 Windows 注册表中保存或建立指定的注册表项
删除注册项 删除注册项

在 Windows 注册表中删除指定注册表项或注册表目录
注册项是否存在 注册项是否存在

如果指定注册表项存在，返回真，否则返回假。
取默认底色 取默认底色

取回Windows系统的默认窗口背景颜色
快照 快照

取回指定窗口或屏幕上所有现有显示内容的图片数据
读配置项 读配置项

读取指定配置文件中指定项目的文本内容
写配置项 写配置项

将指定文本内容写入指定配置项中或者删除指定的配置项或节，如果指定配置文件不存在，将会自动创建。
取配置节名 取配置节名

返回指定配置文件中所有已有节名的文本数组
取操作系统类别 取操作系统类型

返回当前操作系统的版本类型
多文件对话框 无

打开一个多文件选择对话框
取程序名称 无

返回所指定类型的程序名称
交换变量 交换变量

交换两个同类型变量的值
强制交换变量 无

强制交换两个变量内容
取运行时数据类型 无

返回所提供参数的运行时数据类型值
宏 无

在编译程序时，通过提供一系列自定义的常量数据参数来调用系统内置或者外部提供的程序接口，获得其处理结果并将其整合进编译结果中。
类自身 本对象

表示当前类对象
取最后错误 取最后错误

调用操作系统的GetLastError函数，返回该API函数被调用后的返回值。
取统一文本 文本到字节集

返回所指定文本的Unicode格式字节集
取统一文本长度 取文本长度

返回所指定文本转换到Unicode格式文本后的字符数目

十六、媒体播放

易语言 火山 注释
播放音乐 无

可以播放 .WAV、.MID 声音文件或相应格式的字节集声音数据、声音资源。
停止播放 无

停止正在播放的音乐
播放MID 无

可以自动连续播放多个 MIDI 声音文件（注意不支持 WAV ）或相应格式的字节集声音数据、声音资源。
播放MP3 无

可以自动连续播放多个 MP3 音乐文件
同步播放MP3 无

播放一次指定的MP3音乐文件，在播放过程中，会自动给指定标签组件发送反馈事件通知，以同步提供当前播放进度百分比。
暂停播放MP3 无

如果当前正在播放由“播放MP3”或“同步播放MP3”命令所指定的MP3音乐，则将其暂停。
继续播放MP3 无

如果当前由“播放MP3”或“同步播放MP3”命令所播放MP3音乐已经被暂停，则继续播放。
取MP3播放状态 无

返回当前由“播放MP3”或“同步播放MP3”命令所播放MP3音乐的播放状态

十七、程序调试

易语言 火山 注释
输出调试文本

调试输出

调试输出2

调试输出3

调试输出当前语句位置

向系统调试器内输出所指定数据的调试用文本并自动换行
暂停 编译出错

暂停当前程序运行，相当于在程序代码中设置断点。
检查 调试检查

在调试版中，当所提供的参数值为假时，程序将在此处中断执行并报错。
是否为调试版 为调试版

检查当前程序是否为调试版

十八、其它

易语言 火山 注释
载入 (窗口名字, , 真) 窗口变量.创建对话框 ()

以模态对话框的方式创建并显示本窗口。

对话框窗口创建后，鼠标只能控制对话框窗口，关闭后才可以操作其它窗口。
载入 (窗口名字, , 假) 窗口变量.创建窗口 ()

创建一个普通窗口。

在普通窗口模式下，新窗口被创建后依然可以操作其它窗口，并且在操作其它窗口时可以覆盖当前被操作的窗口。
载入 (窗口名字, 父窗口名字, 假) 窗口变量.创建弹出子窗口 (父窗口名字)

创建一个窗口并将其作为其它窗口的弹出风格子窗口。

当新窗口被创建后，依然可以操作原来的窗口，但操作原窗口时不会覆盖新窗口。
选择 选择

根据所提供参数的值，返回两部分中的其中一个。
多项选择 多项选择

从参数列表项目中选择并返回一个值
是否为空 无

返回一个逻辑值，指出在调用子程序时是否为指定参数提供了数据。

注：在火山视窗中参数可提供默认值，可通过“如果”命令直接判断其参数内容即可。
是否已创建 无

如果指定的窗口或窗口组件有效且已经被载入或创建，返回真，否则返回假。
取数据类型尺寸 取数据类型尺寸

取指定数据类型的数据尺寸
取颜色值 取颜色值

将指定的RGB颜色分量组合为颜色值返回
取事件组件 无

在易语言中是用于判断当前事件是何组件产生的。

在火山视窗中可通过事件方法的“来源对象”参数获取。
事件转移 无

在易语言中，设置将第一个组件上产生的所有事件转交由第二个同窗口同类型组件的事件处理子程序去处理，就好象此事件是在第二个组件上实际发生的一样。

在火山视窗中无需处理，因为所有相同类型的组件，都是在同一个事件方法下处理。
复制窗口组件 无

复制创建与指定窗口组件设计状态完全一致的新组件
处理事件 处理事件

暂时转让控制权，以便让 Windows 操作系统有机会处理其它的如用户键盘或鼠标输入等事件。直到操作系统处理并发送完程序队列中的所有事件后，命令才会返回。

载入图片

卸载图片

 无

在火山视窗中统一使用“位图对象类”处理。
取硬盘特征字 无

返回电脑中第一个物理硬盘的物理特征字，该特征字是仅硬件相关的，也就是说与任何软件系统都无关（包括操作系统）。
取系统语言 无

返回当前系统运行时环境所支持的语言版本类型
写到内存 内存填充

将数据写出到指定的内存区域，注意调用本命令前一定要确保所提供的内存区域真实有效。
DLL命令调用转向 无

本命令用来设置下次程序中执行任意一条DLL命令时所使用的DLL库文件名和在DLL库文件中的调用命令名，此设置将覆盖该被调用DLL命令在程序设计时所提供的原始值。
取组件名称 无

返回指定窗口组件的名称
取对象类型 无

如果指定对象的类型为在支持库内定义的数据类型，则返回该数据类型的名称，否则返回空文本。
寻找组件 无

按照指定条件寻找符合要求的窗口组件，成功返回非零寻找句柄，未找到返回零。
取找到组件数目 无

返回“寻找组件”命令所找到的组件数目。
取所找到组件 无

返回“寻找组件”命令所找到的指定索引位置处的组件。
清除组件寻找句柄 无

释放“寻找组件”命令所返回的组件寻找句柄，此句柄以后不能再使用。
置入代码 置入代码

在编译后文件代码段中当前语句位置置入指定的机器指令码数据。

注：在火山视窗中只能32位程序使用。
运行控制台程序 运行控制台程序

运行指定的控制台程序(不会打开控制台窗口)，返回运行结果。
取核心库版本 无

返回核心库的当前版本号
条件宏是否存在 无

返回所指定的编译条件宏是否已经被定义

十九、数据库

火山视窗中暂无EDB数据库操作方法。

二十、网络通讯

易语言 火山 注释
取主机名 无

返回本机的主机名，用作在网络通讯中标志本机地址。
通信测试 无

测试与指定主机是否能够正常通讯。返回被测试主机的通讯响应时间。如果无法通讯或者测试失败，返回 -1。
转换为主机名 无

将指定的 IP 地址转换为其主机名
转换为IP地址 无

将指定的主机名转换为其 IP 地址

二十一、控制台操作

易语言 火山 注释
标准输出 标准输出

在标准输出设备或标准错误设备上输出指定的内容
标准输入 标准输入

在标准输入设备上请求输入最多包含2048个字符的一行文本，返回用户所输入的内容。

二十二、COM对象类

在易语言中需要定义类型为“对象”的变量。

在火山视窗中需要定义类型为“COM对象类”的变量。

易语言 火山 注释
COM变量.创建 COM变量.创建

创建指定类型的 COM 对象，本对象中的原有内容将被释放。
COM变量.获取 COM变量.获取

获取当前操作系统中已经存在的指定类型 COM 对象，本对象中的原有内容将被释放。
COM变量.清除 COM变量.清除

将本对象的内容释放并清空
COM变量.是否为空 COM变量.是否为空

返回本对象的内容是否为空
COM变量.是否相等 COM变量.是否相等

返回本对象的内容是否与指定对象的内容相等

COM变量.读文本属性("属性名",参数N……)

COM变量.读文本属性("属性名")

COM变量.读属性 ("属性名",文本型, 参数N……)

COM变量.读无参数属性 ("属性名",文本型)

读取并返回本对象的指定文本类型属性值，如果失败将返回空文本。

COM变量.读数值属性("属性名",参数N……)

COM变量.读数值属性("属性名")

COM变量.读属性 ("属性名",小数, 参数N……)

COM变量.读无参数属性 ("属性名",小数)

读取并返回本对象的指定数值类型属性值，如果失败将返回数值0。

COM变量.读逻辑属性("属性名",参数N……)

COM变量.读逻辑属性("属性名")

COM变量.读属性 ("属性名",逻辑型, 参数N……)

COM变量.读无参数属性 ("属性名",逻辑型)

读取并返回本对象的指定逻辑型属性值，如果失败将返回假。

COM变量.读日期属性("属性名",参数N……)

COM变量.读日期属性("属性名")

COM变量.读属性 ("属性名",小数, 参数N……)

COM变量.读无参数属性 ("属性名",小数)

在火山视窗中无日期时间型，都是通过小数来处理，直接读小数属性即可。

COM变量.读对象型属性 ("属性名",参数N……)

COM变量.读对象型属性 ("属性名")

COM变量.读对象型属性 ("属性名",COM对象类, 参数N……)

COM变量.读无参数对象型属性 ("属性名",COM对象类)

读取当前对象中的COM对象属性值

COM变量.读属性 ("属性名", 参数N……)

COM变量.读属性 ("属性名")

COM变量.读属性 ("属性名",COM变体型, 参数N……)

COM变量.读无参数属性 ("属性名",COM变体型)

读取当前对象中的COM变体属性值

COM变量.写属性 ("属性名", 参数N……)

COM变量.写属性 ("属性名")

COM变量.写属性 ("属性名", 参数N……)

COM变量.写无参数属性 ("属性名")

设置本对象指定属性的值

COM变量.方法 ("方法名", 参数N……)

COM变量.方法 ("方法名")

COM变量.无返回值方法 ("方法名", 参数N……)

COM变量.无参数及返回值方法 ("方法名")

执行本对象的指定方法并忽略其返回值

COM变量.通用方法 ("方法名", 参数N……)

COM变量.通用方法 ("方法名")

COM变量.方法 ("方法名", COM变体型, 参数N……)

COM变量.无参数方法 ("方法名", COM变体型)

执行本对象的指定方法并返回一个变体型对象值

注：在火山视窗中是通过参数返回。

COM变量.文本方法("方法名",参数N……)

COM变量.文本方法("方法名")

COM变量.方法 ("方法名", 文本型, 参数N……)

COM变量.无参数方法 ("方法名", 文本型)

执行本对象返回文本类型数据的方法，如果失败将返回空文本。

COM变量.数值方法("方法名",参数N……)

COM变量.数值方法("方法名")

COM变量.方法 ("方法名", 小数, 参数N……)

COM变量.无参数方法 ("方法名", 小数)

执行本对象返回数值类型数据的方法，如果失败将返回数值0。

COM变量.逻辑方法("方法名",参数N……)

COM变量.逻辑方法("方法名")

COM变量.方法 ("方法名", 逻辑型, 参数N……)

COM变量.无参数方法 ("方法名", 逻辑型)

执行本对象返回逻辑型数据的方法，如果失败将返回假。

COM变量.日期方法("方法名",参数N……)

COM变量.日期方法("方法名")

COM变量.方法 ("方法名", 小数, 参数N……)

COM变量.无参数方法 ("方法名", 小数)

在火山视窗中无日期时间型，都是通过小数来处理，因此读取小数方法即可。

COM变量.对象型方法("方法名",参数N……)

COM变量.对象型方法("方法名")

COM变量.对象型方法 ("方法名", COM对象类,参数N……)

COM变量.无参数对象型方法 ("方法名", COM对象类)

执行本对象返回对象型数据的方法
COM变量.创建图片对象 COM变量.创建图片对象

为指定图片创建对应的 COM 图片对象并填入本对象中
COM变量.创建字体对象 COM变量.创建字体对象

为指定字体数据创建对应的 COM 字体对象并填入本对象中
COM变量.取回图片 COM变量.取回图片

如果本对象为 COM 图片对象，则取回其具体图片数据。
COM变量.取回字体 COM变量.取回字体

如果本对象为 COM 字体对象，则取回其中的具体字体数据。
COM变量.取错误 COM变量.取错误

当读写对象属性/执行对象方法时，紧跟该语句后执行本方法可以检查其是否执行成功。
COM变量.查看 无

通过对话框的方式查看本对象的调用格式信息，便于编写相关程序。
COM变量.取接口 COM变量.取接口

获取本对象中的指定接口，然后将其填入所指定对象中。

二十三、COM变体型

在易语言中需要定义类型为“变体型”的变量。

在火山视窗中需要定义类型为“COM变体型”的变量。

易语言 火山 注释
变体变量.清除 变体变量.清空

将本对象的内容释放并清空
变体变量.取类型 变体变量.取类型

返回本对象中值的数据类型
变体变量.取数组成员数 变体变量.取数组成员数

如果本对象中存放的是数组数据，执行本方法将返回其成员数目。
变体变量.取文本 (索引) 变体变量.取值 (文本型, 索引)

返回本对象中或本对象数组成员中的文本数据
变体变量.取数值 (索引) 变体变量.取值 (小数, 索引)

返回本对象中或本对象数组成员中的数值数据
变体变量.取逻辑值 (索引) 变体变量.取值 (逻辑型, 索引)

返回本对象中或本对象数组成员中的逻辑值数据
变体变量.取日期 (索引) 变体变量.取值 (小数, 索引)

在火山视窗中无日期时间型，统一采用小数来处理，因此使用小数类型即可。
变体变量.取对象 (索引) 变体变量.取COM对象 (COM结果变量,索引)

返回本对象中或本对象数组成员中的COM对象型数据

注：在火山视窗中是通过参数返回。
变体变量.取变体型 (索引) 变体变量.取变体型 (COM变体结果变量,索引)

返回本对象中或本对象数组成员中的变体型数据类型数据

注：在火山视窗中是通过参数返回。

变体变量.赋值 (基本类型, 索引)

变体变量.赋值 (数组类型, 索引)

变体变量.赋值 (基本类型, 索引)

变体变量.置数组 (基本数组,首索引,成员数)

变体变量.置COM对象数组 (COM对象数组,首索引,成员数)

变体变量.置变体型数组 (变体数组,首索引,成员数)

设置本对象的内容
变体变量.创建数组 变体变量.创建数组

创建指定类型和指定成员数的空白数组
变体变量.置类型 变体变量.置类型

清除当前变体型对象中的原有内容，并改变它的数据类型。
变体变量.取字节集 变体变量.取字节集

返回本对象中或本对象数组成员中的字节集数据，如果当前数据的数据类型不为字节集型，将自动进行转换，如果转换失败将返回空字节集。

注：在火山视窗中是通过参数来返回数据。


从易语言到火山视窗教程目录_火山软件开发平台入门教程目录

一、文件批量更名工具

二、网站密码管理工具

三、扫雷小游戏


火山视窗文件批量更名工具_火山平台语法手册

一、易语言转火山视窗文件批量更名工具

1、基本概述

本篇教程将基于一个易语言程序“文件批量更名工具”，用火山视窗将其进行重写，以学习如何从易语言转移到火山视窗。

易语言例程：点击下载。

2、易语言例程

首先打开易语言例程，对程序进行简单分析：

当前例程只有一个窗口，如下所示：

移植注意事项如下：

(1) 工具条图标组：

在易语言中图片组的使用较为简单，可以直接加入单个图片组合成图片组。

在火山视窗中需要手动将多个图片横向拼接成图片组，如下所示：

(2) 选择夹：

在易语言中选择夹可以直接在界面设计器中添加组件，在火山中则需要依赖组件布局器实现，具体可看第三章中第三节中的选择夹差异演示。

除了窗口外，额外还有窗口程序集，封装程序集和常量表，分别如下：

启动窗口程序集：

程序核心代码均在此程序集下。

封装程序集：

存放了程序的通用子程序，以便于后期维护和扩展。

常量表：

只有三个整数常量，用于表示工具条按钮索引。

总结：

将此程序移植到火山视窗，首先需要保证在火山视窗中的命名尽量和易语言中保持一致，以便于后续的移植操作；其次可以优先考虑移植常量表，因为其内容较少；然后移植封装程序集，最后移植界面编写窗口代码。

3、视窗项目创建

点击“文件->新建->项目”菜单，创建一个MFC窗口程序。

创建后注意窗口的标题属性问题，其属性默认位于变量中：

4、常量表移植

易语言常量表内容如下：

在火山中可以新建一个类来存放，如下所示：

可以选择将类名起名为“工具条常量”，这样就不需要给常量名增加“工具条按钮_”这样的标记头。

5、封装子程序集移植

5.1 “文件_枚举”移植

易语言代码如下：

解析：主要利用“寻找文件()”方法，将某个文件夹下的指定后缀的文件全部枚举出来，放到文本数组中。

移植注意事项：

(1) 文本型数组在火山视窗中需要使用文本数组类。

(2) “寻找文件()”方法，对应火山视窗中的“文件查找类”。

在火山移植后代码如下：

代码编写逻辑和易语言基本一致，只是个别方法使用有所差异。

(1) 新建一个封装类来存放所有的封装代码。

(2) 文本型数组使用文本数组类代替。

(3) 取文本右边判断路径的方法可以使用是否以文本结束方法代替。

(4) 寻找文件方法用文件查找类代替，需要定义变量才可以使用。

5.2 “文件_取文件名扩展名”移植

易语言代码如下：

解析：利用文本操作相关命令实现取出一个文件路径中的文件名和扩展名。

移植注意事项：

(1) 文本型数组需要使用文本数组类代替。

(2) 参数可空属性，在火山中使用@默认值代替。

火山代码如下：

在火山中因提供了“取文件名无路径部分()”现成的方法可以直接取路径文件名，因此移植时可以省去复杂的路径判断。

几行代码即可实现易语言中同样的功能，如下所示：

5.3 “文件_取父目录”移植

易语言代码如下：

解析：利用文本操作相关命令实现取出一个文件路径中的父目录。

火山如下：

在火山视窗中因提供了“取文件名路径 ()”方法，用来获取文件父目录，因此无需额外封装。

其方法帮助页如下：

5.4 “超级列表框_填充文件”移植

易语言代码如下：

解析：利用循环方法将文件路径数组中的内容填充到超级列表框组件上。

移植注意事项：

文本型数组需要使用文本数组类代替。

火山代码如下：

代码编写逻辑和易语言基本一致，只是个别方法使用有所差异。

(1) 因使用了文本数组类，所以在火山视窗中可利用“文件路径数组.枚举循环 () ”直接进入循环。

(2) 利用“文件路径数组.取枚举值 ()”即可代替“文件路径数组 [局_计次]”取出成员内容。

5.5 “超级列表框_删除文件”移植

易语言代码如下：

解析：利用循环方法来逆向删除超级列表框中被选中的项目，包括其对应文件一同删除。

移植注意事项：

整数型数组需要使用整数数组类代替。

火山代码如下：

代码编写逻辑和易语言基本一致，只是个别方法使用有所差异。

(1) “取被选择表项()”方法是通过参数返回被选择的项目索引。

(2) 因在易语言中需要逆向循环，火山视窗中提供了现成的“逆向计次循环”，可用于逆向循环。

(3) “局_被选择的索引.取成员 (取循环索引 ()”可代替易语言中的“局_被选择的索引 [局_逆向成员]”用于表项索引。

6、主窗口设计

6.1 易语言“_启动窗口”分析：

_启动窗口中共有以下几种组件：

(1) 工具条

(2) 选择夹

(3) 分组框

(4) 单选框

(5) 选择框

(6) 编辑框

(7) 超级列表框

(8) 标签

6.2 主窗口属性设置

易语言窗口主要属性如下：

(1) 标题：用于设置窗口标题；

(2) 边框：让窗口具备可调节属性；

(3) 控制按钮：让窗口最大化最小化按钮可正常使用。

将易语言“_启动窗口”中的主要属性在火山视窗“我的主窗口”中复现出来。

注：其中“控制按钮”和“最小化”按钮属性默认为真，无需设置。

最终效果如下，窗口将具备可调节属性：

6.3 工具条设计

6.3.1 工具条属性设置

易语言相关属性如下，主要是“位置”和“图片组”属性。

在火山视窗窗口设计器中，将工具条属性复现出来：

6.3.2 工具条按钮设置

易语言设置：

在易语言中需要在设计器中右键“工具条”选择“设置工具条按钮”菜单，进行设置：

其工具条按钮设置界面效果如下：

火山设置：

在火山中通过“工具条按钮”属性进行设置：

其设置界面效果如下，使用方式也易语言基本一致：

设置完毕后效果如下：

6.4 选择夹设计

6.4.1 概述

在易语言中，支持直接在界面设计器中对选择夹的内容进行实时设计，如下所示：

在火山中则需要使用“组件布局器”实现，具体可看部分组件差异教程。

6.4.2 子夹设计

文件名子夹设计：

易语言文件名子夹内容，使用到的组件分别如下：

(1) 标签

(2) 分组框

(3) 单选框

(4) 编辑框

(5) 选择框

按照易语言中所提供的组件，在火山视窗组件布局器中将其完整的复现出来，最终效果如下：

注：组件名字的设置尽量也和易语言中保持一致，以便于后续代码编写。

设计完毕后代码如下，注意公开当前类和部分组件，以便于后续访问。

扩展名子夹设计：

易语言扩展名子夹内容，使用到的组件分别如下：

(1) 标签

(2) 选择框

(3) 编辑框

按照易语言中所提供的组件，在火山视窗组件布局器中将其完整的复现出来，最终效果如下：

设计完毕后代码如下，注意公开类和部分组件，以便于后续访问。

过滤选项子夹设计：

易语言过滤选项子夹内容，使用到的组件分别如下：

(1) 标签

(2) 编辑框

按照易语言中所提供的组件，在火山视窗中将其完整的复现出来，最终效果如下：

设计完毕后代码如下，注意公开当前类和部分组件，以便于后续访问。

6.4.3 选择夹设计与显示

(1) 打开主窗口设计器，将选择夹组件放到设计器的合适位置。

(2) 定义布局器变量，用于存储布局内容，以便于后续的代码编写。

(3) 调用选择夹的“添加子夹()”方法，动态添加子夹。

(4) 调用选择夹的“取子夹内容组件()”取出子夹内容。

运行效果如下：

6.5 超级列表框设计

6.5.1 组件基本设置

易语言超级列表属性如下：

打开视窗界面设计器，并将超级列表框组件放到合适位置，同时设置相关属性：

6.5.2 组件报表列设置

在易语言中可右键组件选择“设置报表列”进行设置。

其界面效果如下：

在火山中可通过“报表列”属性设置。

将易语言中设置的报表列信息，在火山视窗中完整的复现出来。

运行效果如下：

6.6 窗口尺寸动态调整

至此主窗口所有组件全部放置完毕，但是还有一个问题。

在易语言中软件运行后，窗口内的组件也会跟随窗口的改变而改变。

而在火山视窗中，调整窗口并不会有这样的效果。

因此需要查看易语言中“__启动窗口_尺寸被改变”事件中的代码，将代码在火山视窗中复现出来。

易语言代码如下：

在易语言中只需要调整选择夹和超级列表框。

火山视窗代码实现：

(1) 调整工具条的宽度为用户区宽度。

(2) 在调整选择夹高度时，无需和易语言中一致，根据实际运行效果来决定是否减去一些尺寸。

(3) 调整超级列表框组件尺寸时，也可以根据实际需求来决定是否减去一些尺寸。

运行效果如下，至此主窗口全部设计完毕。

7、主程序代码移植

7.1 “_工具条1_被单击”移植：

易语言事件添加：

需要通过属性栏下方的“组合框”添加。

火山事件添加：

易语言事件代码如下：

移植到火山视窗时，注意事项如下：

(1) 火山中多了一个“来源对象”判断，当存在多个工具条时，用于判断哪个工具条被单击。

(2) 火山中的常量访问不需要输入#号。

(3) 易语言中的“文本型数组”，在火山中需要使用“文本数组类”。

(4) “超级列表框1.取被选择表项 ()”方法在火山中需要通过参数返回，并且需要使用“整数数组类”来代替“整数型数组”。

(5) 信息框方法在火山中不需要提供父窗口，当前所处的窗口即信息框的父窗口。

(6) 信息框的返回值为“返回按钮类型”的常量类，并非整数值。

运行效果演示：

添加文件夹演示：

删除演示：

注：按下ctrl键可以进行多选。

7.2 “开始处理”移植：

易语言代码如下：

移植到火山视窗时，注意事项如下：

(1) 火山中的“取启动时间()”方法返回的为长整数。

(2) 火山中的“计次循环”等于易语言中的“计次循环首/尾”。

(3) 在火山中无需定义计次变量，利用“取循环索引()”方法可代替易语言中的“局_计次”。

(4) 在火山中循环索引从0开始，因此在调用“置/取标题()”方法时，无需进行-1。

(5) 火山中提供了“取文件名路径()”方法可以直接取出指定文件的父目录。

7.3 “选择框”被单击事件移植：

易语言事件添加：

在易语言中通过属性栏下方的组合框添加事件。

易语言事件代码：

在易语言中共有三个选择框事件，分别如下，每个事件都是独立存在的。

火山视窗中复现此代码较为复杂，因为火山的选择夹必须依赖组件布局器才可以创建。

为了便于后续的维护管理，首先需要将组件布局器中选择框的事件挂接到窗口中执行。

操作步骤如下：

(1) 挂接事件

在窗口被创建完毕后，调用“挂接事件()”方法将组件布局器中选择框的事件进行挂接到窗口中操作。

(2) 添加事件

在主窗口中定义一个临时的选择框变量，进行事件添加，添加后将其变量删除即可。

(3) 添加事件后

利用“如果否则”语句，判断选择框点击来源。

移植到火山视窗时，注意事项如下：

(1) 在事件中可使用“来源对象”参数代替当前操作的选择框。

(2) 直接调用“选择框_被单击()”事件方法传递组件参数和标记，即可代替易语言中实现在其它选择框单击事件下处理此选择框组件被单击。

也就是“选择框_被单击 (布局器_文件名.选择框_递增命名, 0) ”代替了“_选择框_递增命名_被单击 () ”。

运行效果如下：

7.4 “预览”移植：

易语言代码如下：

本方法主要用于将文件新名称实时预览到超级列表框中。

移植到火山视窗时，注意事项如下：

(1) 文本型数组需要使用文本数组类代替。

(2) 因使用了文本数组类，可直接利用数组对象的“枚举循环()”方法，进行循环。

(3) 因考虑到火山视窗中需要通过布局器变量来访问编辑框的内容，可以提前将编辑框的内容取出赋值给文本型变量。在后续的代码编写中，直接使用变量即可访问内容，可以提高代码阅读体验。

(4) 调用数组变量的“取枚举值()”方法可代替易语言中“局_文件名数组 [局_计次]”数组的访问。

(5) 易语言中“到整数()”方法中，在火山视窗需要使用“文本到整数()”代替。

(6) 调用数组变量的“取枚举索引()”方法可代替易语言中“局_计次”变量。

(7) 因火山中的循环索引都是从0开始，因此调用列表框“置标题()”方法时，无需对“取枚举索引()”方法进行-1操作。

7.5 “取列表框所有文件名”移植：

易语言代码如下：

本方法主要用于将列表框中显示的所有文件路径加入到文本数组中，以便于新文件名预览。

移植到火山视窗时，注意事项如下：

文本型数组需要使用文本数组类代替，且会自动参考。

7.6 剩余所有组件事件移植：

易语言代码如下：

主要用于实时预览新文件名结果。

因考虑到这些组件都在组件布局器中，如果全部挂接事件到窗口中操作，反而过于复杂。

可以采取以下方式移植：

(1) 公开启动类中的主窗口对象变量，同时公开我的主窗口中预览方法。

(2) 在“文件名布局器”中，随便选择一个编辑框组件，添加其“内容被改变”事件。

(3) 添加事件后会自动生成来源对象的判断，将其删掉后通过“取程序()”方法，访问到启动类后，继续访问主窗口对象，通过主窗口对象访问“预览()”方法。

为什么要删掉自动生成的“来源对象”的判断？

这是因为，在当前类中所有的编辑框组件都需要内容被改变事件，并且都是调用预览方法，因此不需要单独去判断来源对象参数。

(4) 同样的方法在“文件名布局器”中，添加单选框被单击事件，并调用“预览()”方法。

(5) 在“扩展名布局器”中，添加编辑框内容被改变事件并调用“预览()”方法。

8、运行效果如下：

实时预览：

改名效果预览：

9、视窗例程下载

点击下载


火山视窗MySQL网站密码管理工具_火山平台语法手册

二、易语言转火山视窗网站密码管理工具

1、基本概述

本篇教程将基于一个易语言基于MySQL的“网站密码管理工具”，用火山视窗将其进行重写，以学习如何从易语言转移到火山视窗。

易语言例程：点击下载。

2、易语言例程

首先打开易语言例程，进行简单的分析：

当前例程有三个窗口和三个窗口程序集：

移植注意事项如下：

在易语言主窗口中存在菜单，在火山操作菜单时需要单独定义一个菜单类来解决，并且在火山中不支持实时在设计器中预览菜单效果。

3、MySQL数据库搭建

MySQL数据库搭建方式有很多，可以去MySQL官网下载或者直接使用第三方集成环境工具创建，譬如小皮面板或宝塔面板等。

这里采用小皮面板来搭建MySQL数据库：

(1) 下载并安装小皮面板后，点击“软件管理”找到MySQL进行安装，建议安装高版本。

(2) 点击“首页”选择启动mysql数据库。

(3) 数据库启动成功后，点击“数据库”选择“创建数据库”

(4) 输入数据库名称账号和密码，点击“确认”。

(5) 点击“软件管理->工具->数据库工具”选择“HeidiSQL”进行数据库管理，如果未安装会显示“安装”，安装后点击管理。

(6) 进入数据库管理软件后点击“新建”。

(7) 输入账号密码后点击“打开”。

(8) 右键数据库选择“创建新的->表”菜单，进行数据表创建。

(9) 输入表名后，进行字段添加，首个字段务必为“INT”整数型，用于存储唯一ID值。

注：默认一栏无法点击时可双击打开，“AUTO_INCREMENT”表示自增ID，务必勾选后点击“确定”。

(10) 重复添加字段，以便于满足所有存储需求。

注：其余类型为“VARCHAR”表示存储文本。

(11) 右键“id”进行主键设置。

(12) 主键设置后会出现一个小图标，最后点击“保存”即可完成数据库表创建。

4、视窗项目创建

点击“文件->新建->项目”菜单，创建一个MFC窗口程序。

创建后注意“标题”属性问题，其默认位于窗口变量中。

5、“_启动窗口”移植

5.1 易语言界面分析

当前窗口中有以下几种组件：

(1) 菜单

(2) 按钮

(3) 超级列表框

5.2 火山视窗界面设计
5.2.1 界面设计

打开视窗界面设计器，将易语言中所使用的组件在火山视窗中复现出来。

5.2.2 超级列表框报表列设置

在易语言中需要右键组件选择“设置报表列”。

报表列设置界面如下：

在火山中通过“报表列”属性进行设置。

其界面如下，与易语言使用方式基本一致，设置完成后点击“确定”即可。

5.2.3 菜单设计

在易语言中需要在界面设计器中右键选择“菜单编辑框”进行菜单设计。

易语言菜单设计效果如下：

在火山视窗中需要新建一个基础类为“菜单类”的类，右键选择“打开菜单设计器”即可进行菜单设计。

火山视窗菜单设计器如下，其实用方式和易语言基本一致：

在易语言中设计完毕会自动在界面设计器预览，在火山中会生成菜单常量。

添加超级列表框“右键单击表项”事件。

在事件下调用“弹出菜单()”方法进行菜单弹出操作。

火山视窗右键菜单演示效果如下：

6、“窗口_查找”移植

6.1 易语言界面分析

当前窗口中有以下几种组件：

(1) 标签

(2) 组合框

(3) 编辑框

(4) 按钮

6.2 火山视窗界面设计
6.2.1 界面设计

(1) 新建窗口类，同时设置相关属性。

(2) 在火山视窗中将界面复现出来。

6.2.2 组合框列表项目设置

在易语言中需要右键组件选择“设置列表项目”菜单进行设置。

其界面效果如下：

在火山中需要使用“列表项目”属性进行设置。

其界面如下，与易语言使用方式基本一致，设置完成后点击“确定”即可。

列表项目设置完毕后，同时设置一下“现行选中项”属性为0。

最终效果如下：

7、“窗口_添加修改”移植

7.1 易语言界面分析

当前窗口中有以下几种组件：

(1) 标签

(2) 编辑框

(3) 按钮

7.2 火山视窗界面设计

新建一个窗口类，同时设置相关属性。

打开视窗界面设计器，将易语言中所使用的组件在火山视窗中复现出来。

8、启动窗口程序集代码移植

8.1 “__启动窗口_创建完毕”代码移植：

易语言代码如下：

移植到火山后，注意事项如下：

(1) 火山中的数据库操作需要定义“Mysql数据类”的变量，调用“连接”方法连接数据库。

(2) 可调用“置当前字符集()”方法代替易语言中的执行sql语句方法，进行编码设置。

(3) “销毁()”方法使用“关闭窗口()”方法代替。

(4) 新建一个“刷新”方法用于刷新数据库，代替“_按钮_刷新_被单击 ()”事件。

8.2 “_按钮_刷新_被单击”代码移植：

易语言代码如下：

移植到火山后，注意事项如下：

(1) 将易语言中按钮点击执行的刷新代码放到火山视窗的刷新方法中。

(2) 火山视窗中无记录集句柄，需要通过“取记录集()”方法取出“Mysql记录集类”。

(3) 火山中可利用“判断循环”语句，循环的判断“到下一行”不断取出下一行数据，直到全部取出完毕后自动跳出循环。

(4) 在火山中可利用“取当前行文本数据()”方法代替易语言中的“读字段值()”。

注：取出的数据库数据都存储在文本数组类中，数组中的第一个成员为数据库中的第一个字段值，以此类推。

8.3 按钮点击移植

易语言代码如下：

移植到火山后，注意事项如下：

(1) 在火山视窗中同类型的事件都是统一管理，需要通过“来源对象”参数判断事件来源。

(2) “载入标记”成员变量注意勾选公开。

(3) 刷新按钮点击时，直接调用“刷新()”方法即可。

8.4 “删除”菜单事件移植

易语言代码如下：

移植到火山后，注意事项如下：

在火山视窗中菜单事件需要使用窗口的“接收到命令”事件，通过“命令代码”参数来判断是哪个菜单单击。

9、查找窗口程序集代码移植

本程序集下只有一个按钮点击事件，如下所示：

移植到火山时，流程如下：

(1) 首先公开启动类中的主窗口变量。

(2) 公开主窗口中的超级列表框变量。

(3) 公开刷新方法。

(4) 移植后的注意事项如下：

1. 在火山中访问主窗口的超级列表框，需要利用“取程序()”方法一级一级访问，为方便后续操作可以提前将超级列表框组件取出，后续直接使用列表框变量即可操作。

2. 调用主窗口中的刷新方法，也需要利用“取程序()”方法一级一级访问。

3. 易语言中的“销毁()”方法使用“关闭窗口()”代替。

10、添加修改窗口程序集代码移植

10.1 “_窗口_添加修改_创建完毕”代码移植

易语言代码如下：

移植到火山时注意事项如下：

提前利用“取程序()”方法将超级列表框组件和载入标记取出，后续使用时就不需要逐级访问。

10.2 “_按钮_添加修改_被单击”代码移植

易语言代码如下：

移植到火山时注意事项如下：

(1) 首先将主窗口中的“数据库”变量公开。

(2) 在火山中访问数据库时需要利用“取程序()”方法逐级访问。

(3) 易语言中的“销毁()”方法使用“关闭窗口()”代替。

11 运行效果如下

添加演示：

修改演示：

查找演示：

删除演示：

9、视窗例程下载

点击下载


火山视窗扫雷小游戏_火山平台语法手册

[上一章]

三、易语言转火山视窗扫雷小游戏

1、基本概述

本篇教程将基于一个易语言程序“扫雷”小游戏，用火山视窗将其进行重写，以学习如何从易语言转移到火山视窗。

易语言例程：点击下载。

2、易语言例程

首先打开易语言例程，对程序进行简单分析，其内容分别如下：

(1) 1个窗口和1个窗口程序集

移植到火山时，定义1个主窗口类即可。

(2) 图片资源表

移植到火山时，可以直接在主窗口类中直接定义成员常量解决。

3、视窗项目创建

点击“文件->新建->项目”菜单，创建一个MFC窗口程序。

创建后注意标题属性问题，其默认位于窗口变量中。

4、“_启动窗口”移植

4.1 界面设计

易语言界面分析：

在当前窗口中使用了以下组件：

(1) 菜单

(2) 标签

(3) 图形按钮

(4) 画板

移植到火山步骤如下：

(1) 将易语言中的画板底图导出备用，右键底图选择“写到文件”。

(2) 同时将图形按钮的图标导出，依次右键选择“写到文件”即可。

(3) 打开火山视窗设计器，将易语言界面在火山中复现出来。

4.2 菜单设计

易语言菜单设计：

在易语言中需要右键窗口设计器选择“菜单编辑器”。

其界面效果如下：

火山视窗菜单设计：

在火山中需要新建一个基础类为“菜单类”的类，通过右键选择“打开菜单设计器”。

其界面效果如下，使用方式基本和易语言一致：

火山视窗菜单显示：

添加主窗口创建完毕事件，调用“置菜单()”方法就可以将菜单设置到窗口上。

最终效果如下：

5、图片资源表移植

易语言资源导出：

双击要导出的图片，点击“输出到文件”即可导出。

火山视窗图片资源引用：

在主窗口中定义三个成员常量，类型提供“位图资源”后就可以通过“初始值”引用图片。

6、程序集变量和窗口创建完毕事件移植

易语言代码如下：

移植到火山视窗后注意事项如下：

(1) 初始值可以直接在表格中设置，无需使用代码赋值。

(2) 火山中使用“位图对象类.载入位图资源()”方法来载入图片。

(3) 开始游戏可以额外新建一个方法来代替易语言中的“图形按钮被单击”。

(4) 火山中二维数组需要使用整数[16][16]代替。

7、“_图形按钮_重新开始_被单击”移植

易语言代码如下：

移植到火山视窗后，注意事项如下：

(1) 建立一个“开始游戏”方法，将代码移植到此方法中。

(2) 火山视窗中暂无重定义数组方法，需要单独封装，利用“计次循环”实现重定义数组功能。

(3) 在“图形按钮_被单击”事件下直接调用封装好的“开始游戏”方法即可。

8、“菜单单击事件”移植

易语言代码如下：

移植到火山视窗流程如下：

(1) 添加主窗口“接收到命令”事件。

(2) 通过判断“命令代码”参数来确认是哪个菜单单击。

(4) 易语言中的“销毁()”方法在火山视窗中使用“关闭窗口()”代替。

9、“_画板_雷区_鼠标左键被按下”移植

易语言代码如下：

移植到火山视窗时注意事项如下：

(1) 易语言中的整除使用除法运算符代替即可。

(2) 火山中的“且”需要使用“&&”代替。

10、“_画板_雷区_鼠标左键被放开”移植

易语言代码如下：

移植到火山视窗时注意事项如下：

(1) 因火山数组是从0开始，在x、y位置进行计算时不需要+1，否则影响后续的数组操作。

(2) 判断雷区时，也需要稍作修改：

将：如果真 (x ≥ 1 且 x ≤ 横 且 y ≥ 1 且 y ≤ 纵 且 布雷区 [x] [y] ＜ 10)

修改成：如果真 (x >= 0 && x < 横 && y >= 0 && y < 纵 && 布雷区 [x][y] < 10)

(3) 同时绘制图标时也不需要进行-1操作，否则位置会发生偏移。

11、“_画板_雷区_鼠标右键被放开”移植

易语言代码如下：

移植到火山视窗时注意事项如下：

(1) 因火山数组是从0开始，在x、y位置进行计算时不需要+1，否则影响后续的数组操作。

(2) 判断雷区时，也需要稍作修改：

将：如果真 (x ≥ 1 且 x ≤ 横 且 y ≥ 1 且 y ≤ 纵)

修改成：如果真 (x >= 0 && x < 横 && y >= 0 && y < 纵)

(3) 同时绘制图标和定位写出文本时也不需要进行-1操作，否则位置会发生偏移。

(4) 易语言的“判断”方法，在火山中使用“如果否则”语句代替即可。

12、“_画板_雷区_鼠标位置被移动”移植

易语言代码如下：

移植到火山视窗时注意事项如下：

(1) 注意运算符问题“＼”使用“/”,“×”使用“*”。

(2) 因火山中数组索引是从0开始，所以访问数组成员时无需+1。

(3) 易语言中“判断”方法，在火山中使用“如果否则”语句代替即可。

13、“挖完了”移植

易语言代码如下：

移植到火山视窗时注意事项如下：

(1) 易语言中“计次循环首”在火山中使用“循环”语句代替。

(2) 因火山循环从0开始，所以画板绘制图标时x和y坐标无需-1，否则位置会发生偏移。

(2) 易语言中“判断”方法，在火山中使用“如果否则”语句代替即可。

14、“布雷”移植

易语言代码如下：

移植到火山视窗时注意事项如下：

(1) 易语言中的“判断循环首”在火山中使用“判断循环”语句。

(2) 因火山数组从0开始，因此在使用“取随机数”方法是，随机数的起始值应从0开始，横纵坐标也均需要-1。

15、“踩中”移植

易语言代码如下：

移植到火山视窗时注意事项如下：

(1) 易语言中“计次循环首”使用“循环”语句代替。

(2) 因“计次2”变量定义在第一个循环内部，因此在第二个循环结束时，无需对此变量进行重置。

(3) 因火山循环索引从0开始，因此在画板绘制图标时，无需对计次变量进行-1操作。

16、“周围雷数”移植

易语言代码如下：

移植到火山视窗时注意事项如下：

(1) 易语言中的“计次循环首”使用“循环”语句代替。

(2) 因数组索引从0开始，判断雷区时也需要从0开始。

17、“找空白”移植

易语言代码如下：

移植到火山视窗时注意事项如下：

(1) 易语言中的“计次循环首”使用“循环”语句代替。

(2) 因数组索引从0开始，判断雷区时也需要从0开始。

18、“写入”移植

易语言代码如下：

移植到火山视窗时注意事项如下：

因数组索引从0开始，在画板绘制图标时x、y坐标无需进行-1。

19、运行效果演示

扫雷演示：

标记演示：

注：点击鼠标右键可以标记地雷。

20、视窗例程下载

点击下载

[上一章]


从易语言到火山视窗教程目录_火山软件开发平台入门教程目录

    关于本教程

    联系方式


联系火山平台_火山软件开发平台

武汉递归软件开发有限公司

[官方网站] [软件购买] [用户论坛]

官方QQ群①: 496038411

官方QQ群②: 895033329

官方QQ群③: 1147071006

客服QQ: 378821858(请注明事由)

电子邮件: service@voldp.com

微信公众号:

鄂ICP备18029190号