飞扬工作室 发表于 2025-4-16 10:54:17

dxp04 发表于 2025-4-14 22:15
如何使用呢?
这个文档不是给你们看的,直接喂给ai,用来创建知识库. 然后基于知识库创建智能体应用.

123456789 发表于 2025-4-16 15:37:26

飞扬工作室 发表于 2025-4-16 10:54
这个文档不是给你们看的,直接喂给ai,用来创建知识库. 然后基于知识库创建智能体应用. ...

搞个其它平台的语法手册,比如安卓跟GO

飞扬工作室 发表于 2025-4-16 16:07:59

123456789 发表于 2025-4-16 15:37
搞个其它平台的语法手册,比如安卓跟GO

都会搞的

htpmcj 发表于 2025-4-18 10:25:37


AI根据手册写的判断语句

jwz 发表于 2025-4-19 02:59:38

试了一下,写个计算器 一直报错;P

jwz 发表于 2025-4-19 03:01:40

jwz 发表于 2025-4-19 02:59
试了一下,写个计算器 一直报错

<火山程序 类型 = "通常" 版本 = 1 />

包 火山.计算器

类 启动类 <公开 基础类 = 窗口程序类>
{
    变量 主窗口对象 <类型 = 计算器窗口类 标题 = "简易计算器">

    方法 启动方法 <公开 类型 = 整数>
    {
      主窗口对象.创建主窗口 ()// 作为程序的主窗口创建并显示所定义窗口
      返回 (1)
    }
}

类 计算器窗口类 <基础类 = 窗口 @视窗.布局 = "client_size = \"300, 450\"" 标题 = "计算器">
{
    // 显示结果的文本框
    变量 文本框_显示 <类型 = 编辑框 @视窗.布局 = "id = 100\r\npos = \"20, 60, 260, 60\"" 只读 = 真>
   
    // 内存和历史按钮
    变量 按钮_MC <类型 = 按钮 @视窗.布局 = "id = 101\r\npos = \"20, 130, 40, 30\"" 标题 = "MC">
    变量 按钮_MR <类型 = 按钮 @视窗.布局 = "id = 102\r\npos = \"70, 130, 40, 30\"" 标题 = "MR">
    变量 按钮_M加 <类型 = 按钮 @视窗.布局 = "id = 103\r\npos = \"120, 130, 40, 30\"" 标题 = "M+">
    变量 按钮_M减 <类型 = 按钮 @视窗.布局 = "id = 104\r\npos = \"170, 130, 40, 30\"" 标题 = "M-">
    变量 按钮_MS <类型 = 按钮 @视窗.布局 = "id = 105\r\npos = \"220, 130, 40, 30\"" 标题 = "MS">
    变量 按钮_M <类型 = 按钮 @视窗.布局 = "id = 106\r\npos = \"270, 130, 40, 30\"" 标题 = "M^">
   
    // 特殊功能按钮
    变量 按钮_百分比 <类型 = 按钮 @视窗.布局 = "id = 107\r\npos = \"20, 170, 60, 50\"" 标题 = "%">
    变量 按钮_CE <类型 = 按钮 @视窗.布局 = "id = 108\r\npos = \"90, 170, 60, 50\"" 标题 = "CE">
    变量 按钮_C <类型 = 按钮 @视窗.布局 = "id = 109\r\npos = \"160, 170, 60, 50\"" 标题 = "C">
    变量 按钮_退格 <类型 = 按钮 @视窗.布局 = "id = 110\r\npos = \"230, 170, 60, 50\"" 标题 = "⌫">
   
    变量 按钮_倒数 <类型 = 按钮 @视窗.布局 = "id = 111\r\npos = \"20, 230, 60, 50\"" 标题 = "¹/ₓ">
    变量 按钮_平方 <类型 = 按钮 @视窗.布局 = "id = 112\r\npos = \"90, 230, 60, 50\"" 标题 = "x²">
    变量 按钮_开方 <类型 = 按钮 @视窗.布局 = "id = 113\r\npos = \"160, 230, 60, 50\"" 标题 = "√x">
    变量 按钮_除 <类型 = 按钮 @视窗.布局 = "id = 114\r\npos = \"230, 230, 60, 50\"" 标题 = "÷">
   
    // 数字按钮
    变量 按钮_7 <类型 = 按钮 @视窗.布局 = "id = 115\r\npos = \"20, 290, 60, 50\"" 标题 = "7">
    变量 按钮_8 <类型 = 按钮 @视窗.布局 = "id = 116\r\npos = \"90, 290, 60, 50\"" 标题 = "8">
    变量 按钮_9 <类型 = 按钮 @视窗.布局 = "id = 117\r\npos = \"160, 290, 60, 50\"" 标题 = "9">
    变量 按钮_乘 <类型 = 按钮 @视窗.布局 = "id = 118\r\npos = \"230, 290, 60, 50\"" 标题 = "×">
   
    变量 按钮_4 <类型 = 按钮 @视窗.布局 = "id = 119\r\npos = \"20, 350, 60, 50\"" 标题 = "4">
    变量 按钮_5 <类型 = 按钮 @视窗.布局 = "id = 120\r\npos = \"90, 350, 60, 50\"" 标题 = "5">
    变量 按钮_6 <类型 = 按钮 @视窗.布局 = "id = 121\r\npos = \"160, 350, 60, 50\"" 标题 = "6">
    变量 按钮_减 <类型 = 按钮 @视窗.布局 = "id = 122\r\npos = \"230, 350, 60, 50\"" 标题 = "-">
   
    变量 按钮_1 <类型 = 按钮 @视窗.布局 = "id = 123\r\npos = \"20, 410, 60, 50\"" 标题 = "1">
    变量 按钮_2 <类型 = 按钮 @视窗.布局 = "id = 124\r\npos = \"90, 410, 60, 50\"" 标题 = "2">
    变量 按钮_3 <类型 = 按钮 @视窗.布局 = "id = 125\r\npos = \"160, 410, 60, 50\"" 标题 = "3">
    变量 按钮_加 <类型 = 按钮 @视窗.布局 = "id = 126\r\npos = \"230, 410, 60, 50\"" 标题 = "+">
   
    变量 按钮_正负号 <类型 = 按钮 @视窗.布局 = "id = 127\r\npos = \"20, 470, 60, 50\"" 标题 = "+/-">
    变量 按钮_0 <类型 = 按钮 @视窗.布局 = "id = 128\r\npos = \"90, 470, 60, 50\"" 标题 = "0">
    变量 按钮_小数点 <类型 = 按钮 @视窗.布局 = "id = 129\r\npos = \"160, 470, 60, 50\"" 标题 = ".">
    变量 按钮_等于 <类型 = 按钮 @视窗.布局 = "id = 130\r\npos = \"230, 470, 60, 50\"" 标题 = "=">
   
    // 存储计算数据的变量
    变量 第一个数 <类型 = 小数>
    变量 第二个数 <类型 = 小数>
    变量 运算符 <类型 = 文本型>
    变量 显示文本 <类型 = 文本型>
    变量 需要清除显示 <类型 = 逻辑型>
    变量 内存值 <类型 = 小数>
   
    方法 窗口_创建 <接收事件 类型 = 整数>
    参数 来源对象 <类型 = 窗口>
    参数 标记值 <类型 = 整数>
    {
      // 初始化计算器
      清除计算 ()
      返回 (0)
    }
   
    方法 按钮_单击 <接收事件 类型 = 整数>
    参数 来源对象 <类型 = 按钮>
    参数 标记值 <类型 = 整数>
    {
      变量 按钮标题 <类型 = 文本型>
      按钮标题 = 来源对象.标题
      
      // 处理数字按钮
      如果 (按钮标题 >= "0" && 按钮标题 <= "9")
      {
            如果 (需要清除显示)
            {
                显示文本 = ""
                需要清除显示 = 假
            }
            显示文本 = 显示文本 + 按钮标题
            文本框_显示.标题 = 显示文本
      }
      // 处理小数点
      否则 如果 (按钮标题 == ".")
      {
            如果 (需要清除显示)
            {
                显示文本 = "0"
                需要清除显示 = 假
            }
            // 检查是否已有小数点
            如果 (文本位置 (显示文本, ".") == 0)
            {
                显示文本 = 显示文本 + "."
            }
            文本框_显示.标题 = 显示文本
      }
      // 处理运算符按钮
      否则 如果 (按钮标题 == "+" || 按钮标题 == "-" || 按钮标题 == "×" || 按钮标题 == "÷")
      {
            第一个数 = 文本到小数 (显示文本)
            如果 (按钮标题 == "×")
            {
                运算符 = "*"
            }
            否则 如果 (按钮标题 == "÷")
            {
                运算符 = "/"
            }
            否则
            {
                运算符 = 按钮标题
            }
            需要清除显示 = 真
      }
      // 处理等于按钮
      否则 如果 (按钮标题 == "=")
      {
            第二个数 = 文本到小数 (显示文本)
            计算结果 ()
      }
      // 处理清除按钮
      否则 如果 (按钮标题 == "C")
      {
            清除计算 ()
      }
      // 处理CE按钮 (只清除当前输入)
      否则 如果 (按钮标题 == "CE")
      {
            显示文本 = "0"
            文本框_显示.标题 = 显示文本
            需要清除显示 = 真
      }
      // 处理退格按钮
      否则 如果 (按钮标题 == "⌫")
      {
            如果 (文本长度 (显示文本) > 1)
            {
                显示文本 = 文本左边 (显示文本, 文本长度 (显示文本) - 1)
            }
            否则
            {
                显示文本 = "0"
                需要清除显示 = 真
            }
            文本框_显示.标题 = 显示文本
      }
      // 处理正负号按钮
      否则 如果 (按钮标题 == "+/-")
      {
            如果 (显示文本 != "0")
            {
                如果 (文本左边 (显示文本, 1) == "-")
                {
                  显示文本 = 文本右边 (显示文本, 文本长度 (显示文本) - 1)
                }
                否则
                {
                  显示文本 = "-" + 显示文本
                }
                文本框_显示.标题 = 显示文本
            }
      }
      // 处理百分比按钮
      否则 如果 (按钮标题 == "%")
      {
            变量 当前值 <类型 = 小数>
            当前值 = 文本到小数 (显示文本)
            当前值 = 当前值 / 100
            显示文本 = 小数到文本 (当前值)
            文本框_显示.标题 = 显示文本
      }
      // 处理平方按钮
      否则 如果 (按钮标题 == "x²")
      {
            变量 当前值 <类型 = 小数>
            当前值 = 文本到小数 (显示文本)
            当前值 = 当前值 * 当前值
            显示文本 = 小数到文本 (当前值)
            文本框_显示.标题 = 显示文本
            需要清除显示 = 真
      }
      // 处理开方按钮
      否则 如果 (按钮标题 == "√x")
      {
            变量 当前值 <类型 = 小数>
            当前值 = 文本到小数 (显示文本)
            如果 (当前值 < 0)
            {
                信息框 ("错误: 不能对负数开平方根!")
            }
            否则
            {
                当前值 = 平方根 (当前值)
                显示文本 = 小数到文本 (当前值)
                文本框_显示.标题 = 显示文本
                需要清除显示 = 真
            }
      }
      // 处理倒数按钮
      否则 如果 (按钮标题 == "¹/ₓ")
      {
            变量 当前值 <类型 = 小数>
            当前值 = 文本到小数 (显示文本)
            如果 (当前值 == 0)
            {
                信息框 ("错误: 不能除以零!")
            }
            否则
            {
                当前值 = 1 / 当前值
                显示文本 = 小数到文本 (当前值)
                文本框_显示.标题 = 显示文本
                需要清除显示 = 真
            }
      }
      // 处理内存按钮
      否则 如果 (按钮标题 == "MC")
      {
            内存值 = 0
      }
      否则 如果 (按钮标题 == "MR")
      {
            显示文本 = 小数到文本 (内存值)
            文本框_显示.标题 = 显示文本
            需要清除显示 = 真
      }
      否则 如果 (按钮标题 == "M+")
      {
            内存值 = 内存值 + 文本到小数 (显示文本)
            需要清除显示 = 真
      }
      否则 如果 (按钮标题 == "M-")
      {
            内存值 = 内存值 - 文本到小数 (显示文本)
            需要清除显示 = 真
      }
      否则 如果 (按钮标题 == "MS")
      {
            内存值 = 文本到小数 (显示文本)
            需要清除显示 = 真
      }
      
      返回 (0)
    }
   
    方法 计算结果 <类型 = 整数>
    {
      变量 结果 <类型 = 小数>
      
      如果 (运算符 == "+")
      {
            结果 = 第一个数 + 第二个数
      }
      否则 如果 (运算符 == "-")
      {
            结果 = 第一个数 - 第二个数
      }
      否则 如果 (运算符 == "*")
      {
            结果 = 第一个数 * 第二个数
      }
      否则 如果 (运算符 == "/")
      {
            // 检查除数是否为0
            如果 (第二个数 == 0)
            {
                信息框 ("错误: 不能除以零!")
                清除计算 ()
                返回 (0)
            }
            结果 = 第一个数 / 第二个数
      }
      否则
      {
            // 如果没有运算符,结果就是当前显示的数字
            结果 = 第二个数
      }
      
      显示文本 = 小数到文本 (结果)
      文本框_显示.标题 = 显示文本
      需要清除显示 = 真
      
      返回 (0)
    }
   
    方法 清除计算 <类型 = 整数>
    {
      第一个数 = 0
      第二个数 = 0
      运算符 = ""
      显示文本 = "0"
      文本框_显示.标题 = 显示文本
      需要清除显示 = 真
      
      返回 (0)
    }
   
    方法 平方根 <类型 = 小数>
    参数 数值 <类型 = 小数>
    {
      // 简单的平方根实现
      返回 (数值 ^ 0.5)
    }
}

jwz 发表于 2025-4-19 03:02:11

jwz 发表于 2025-4-19 03:01
包 火山.计算器

类 启动类


--- 开始编译项目"a222":
<D:\jsq\a222\src\main.v>, 70: 错误: 发现字符处于无效位置
<D:\jsq\a222\src\main.v>, 79: 错误: 发现字符处于无效位置
<D:\jsq\a222\src\main.v>, 83: 错误: 发现字符处于无效位置
<D:\jsq\a222\src\main.v>, 89: 错误: 发现字符处于无效位置
<D:\jsq\a222\src\main.v>, 93: 错误: 发现字符处于无效位置
<D:\jsq\a222\src\main.v>, 96: 错误: 发现字符处于无效位置
<D:\jsq\a222\src\main.v>, 101: 错误: 发现字符处于无效位置
<D:\jsq\a222\src\main.v>, 109: 错误: 发现字符处于无效位置
<D:\jsq\a222\src\main.v>, 117: 错误: 发现字符处于无效位置
<D:\jsq\a222\src\main.v>, 124: 错误: 发现字符处于无效位置
<D:\jsq\a222\src\main.v>, 132: 错误: 发现字符处于无效位置
<D:\jsq\a222\src\main.v>, 143: 错误: 发现字符处于无效位置
<D:\jsq\a222\src\main.v>, 154: 错误: 发现字符处于无效位置
<D:\jsq\a222\src\main.v>, 156: 错误: 发现字符处于无效位置
<D:\jsq\a222\src\main.v>, 160: 错误: 发现字符处于无效位置
<D:\jsq\a222\src\main.v>, 163: 错误: 发现字符处于无效位置
<D:\jsq\a222\src\main.v>, 166: 错误: 发现字符处于无效位置
<D:\jsq\a222\src\main.v>, 176: 错误: 发现字符处于无效位置
<D:\jsq\a222\src\main.v>, 178: 错误: 发现字符处于无效位置
<D:\jsq\a222\src\main.v>, 180: 错误: 发现字符处于无效位置
<D:\jsq\a222\src\main.v>, 208: 错误: 发现字符处于无效位置
<D:\jsq\a222\src\main.v>, 9: 错误: 未找到名为"只读"的可写入属性
<D:\jsq\a222\src\main.v>, 63: 错误: 无法将数据类型"文本型"与数据类型"文本型"进行比较
<D:\jsq\a222\src\main.v>, 75: 错误: 没有找到所指定的方法名称"文本位置"
<D:\jsq\a222\src\main.v>, 85: 错误: "否则"语句必须位于一个"如果"语句或携带有一个参数的另一个"否则"语句后面
<D:\jsq\a222\src\main.v>, 102: 错误: 没有找到所指定的方法名称"文本长度"
<D:\jsq\a222\src\main.v>, 103: 错误: 没有找到所指定的方法名称"文本左边"
<D:\jsq\a222\src\main.v>, 104: 错误: "否则"语句必须位于一个"如果"语句或携带有一个参数的另一个"否则"语句后面
<D:\jsq\a222\src\main.v>, 111: 错误: 没有找到所指定的方法名称"文本左边"
<D:\jsq\a222\src\main.v>, 112: 错误: 没有找到所指定的方法名称"文本右边"
<D:\jsq\a222\src\main.v>, 113: 错误: "否则"语句必须位于一个"如果"语句或携带有一个参数的另一个"否则"语句后面
<D:\jsq\a222\src\main.v>, 121: 错误: 没有找到所指定的方法名称"小数到文本"
<D:\jsq\a222\src\main.v>, 128: 错误: 没有找到所指定的方法名称"小数到文本"
<D:\jsq\a222\src\main.v>, 139: 错误: 没有找到所指定的方法名称"小数到文本"
<D:\jsq\a222\src\main.v>, 150: 错误: 没有找到所指定的方法名称"小数到文本"
<D:\jsq\a222\src\main.v>, 157: 错误: 没有找到所指定的方法名称"小数到文本"
<D:\jsq\a222\src\main.v>, 187: 错误: "否则"语句必须位于一个"如果"语句或携带有一个参数的另一个"否则"语句后面
<D:\jsq\a222\src\main.v>, 191: 错误: 没有找到所指定的方法名称"小数到文本"
<D:\jsq\a222\src\main.v>, 50: 错误: 在对应事件定义类"窗口"中未找到事件"创建"的定义方法
<D:\jsq\a222\src\main.v>, 56: 错误: 在对应事件定义类"按钮"中未找到事件"单击"的定义方法
<D:\jsq\a222\src\main.v>, 205: 错误: "平方根"方法需要返回值,但是其中的代码未返回值或者并非所有代码分支都返回了值.
--- 项目"a222"编译或链接失败. 编译过程中共遇到了 0 个警告, 41 个错误.

xqnh520 发表于 2025-4-19 11:59:52

我也是写一个例子全报错。我个人认为,用AI来帮助我们写火山代码,不如想想如何让AI帮我们封装原生库代码。可以直接拿来就用不需要二次封装。

飞扬工作室 发表于 2025-4-19 13:11:19

jwz 发表于 2025-4-19 03:02
--- 开始编译项目"a222":
, 70: 错误: 发现字符处于无效位置
, 79: 错误: 发现字符处于无效位置


还没有提供类库和例程训练文本,正在整理,加上就好了.

ht725188 发表于 2025-4-19 14:01:41

飞扬工作室 发表于 2025-4-19 13:11
还没有提供类库和例程训练文本,正在整理,加上就好了.

这个很期待,希望尽快提供
页: 1 2 3 [4] 5
查看完整版本: 火山视窗软件开发平台文本程序语法手册Markdown版