ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 619|回复: 7

[分享] twinBASIC今年有望发布,目标是与现有的VB6和VBA项目100%向后兼容

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-4-26 16:45 | 显示全部楼层 |阅读模式
本帖最后由 liucqa 于 2024-4-26 16:47 编辑

twinBASIC号称vb7,按照路线图将会在今年十月份发布1.0版,如果一切顺利的话,年底之前我们可以看到一个现代的vb开发工具了。

twinBASIC特点
属性
属性有两个主要功能;它们可以充当编译器的指令,以影响代码的生成方式,或注释元素(表单、模块、类、类型、枚举、声明、子/函数等)。在 VBx 中,属性存在,但未通过代码窗格公开,并且使用难以通过源文件使用的神秘语法。以前在 VBx 中,某些属性(如过程描述、隐藏属性和默认成员)是通过编辑器未显示的隐藏文本设置的,通过“过程属性”对话框或其他位置进行配置。在 tB 中,这些都在代码编辑器中可见。支持 VBx 中的旧属性以实现兼容性,但新属性使用以下语法:
或者
以下许多项目将描述其关联的属性,然后稍后将描述其他属性。[Attribute][Attribute(value)]

64位编译
twinBASIC除了32位之外,还可以编译原生64位可执行文件。语法与 VBA7 兼容:数据类型和标记 API 的要求(在 64 位模式下),例如:LongPtrPtrSafe
Public Declare PtrSafe Sub foo Lib "bar" (ByVal hWnd As LongPtr)

语言语法
新数据类型
接口和协类
定义接口
定义协类
除了接口之外,twinBASIC还允许定义coclasses,即实现一个或多个已定义接口的可创建类。
增强功能Implements,Implements在 twinBASIC 中,继承的接口是允许的——例如,如果你有 ,那么你就在一个类中使用。
如果您有一个接口,可以从多个其他接口扩展,则可以编写多个实现,或者为所有人指定一个实现。
OBJ 和 LIB 文件的静态链接,tB 允许您使用正确编译的 .lib 文件,并使用类似于 DLL 的声明.obj文件作为静态链接库。
类型推断,这仅适用于声明;参数不能是 API 声明中的 OTHER。DimAs Any

新运算符
位移运算符,并对数值变量执行左移和右移运算。请注意,超出可用大小的偏移将导致 0,而不是换行。<<>>
vbNullPtr- 允许将空指针传递给 API/接口的 UDT 成员。VBx 中的等效行为是声明它们,然后在调用站点传递。
短路条件算子和 .通过常规和声明,即使没有必要,也会对双方都进行评估。对于短路操作员,如果条件由第一方解决,则不会评估另一方。因此,如果你有: ,如果 Condition1 是 ,则不会计算,并且它调用的任何代码都不会运行。
短路运算符,语法与传统相同。这还有一个额外的好处,即如果变量是同一类型,则不会将它们转换为变量;
新的赋值运算符:+= -= /= *= ^= &= <<= >>=,这些等价于 。所以是等价的。
IsNotoperator:与 Is 运算符的逻辑相反,用于测试对象等价性。
新的文字表示法,除了十六进制文字和八进制表示法之外,twinBASIC还提供二进制表示法。
参数化类构造函数。
Private/Public模块和类的修饰符,私有模块或类不会将其成员输入到 ActiveX 项目的类型库中。
ReadOnly变量
导出的函数和变量

项目配置
内置支持制作标准 DLL
内置支持制作控制台应用程序
内置支持制作内核模式驱动程序。
内置对覆盖入口点的支持。
将 API 声明放在 IAT 中
内置支持,可标记项目 DEP 感知
在构建时注册是可选的
tB 提供“项目:生成后注册 DLL”选项,以便您可以禁用自动注册,例如,如果要先移动文件。

标准库增强功能
Unicode 支持
采用字符串参数的本机函数,例如 和 FileSystem 函数(例如 、 、 、 和 )现在支持 Unicode。此外,.twin 文件使其易于使用,因为编辑器也支持 Unicode。因此,您可以在编辑器中粘贴 Unicode 字符串,看到它正确显示,然后由 tB 函数和控件正确显示相同的字符串。MsgBoxOpenDirMkdirKillRmDir

新的内置功能:
除了已经描述过的新数据类型相关函数和组件名称函数外,标准内置库函数还包括:VBA

IsArrayInitialized(variable)- 确定数组是否初始化。注意:声明为空数组的 将返回 。VariantArray()True
RGBA(r, g, b, a)- 与函数一样,仅包括 Alpha 通道。RBG()
RBG_R(rgba)、 、 和 - 获取各个通道的值。RGB_B(rgba)RBG_G(rgba)RGBA_A(rgba)
TranslateColor(ColorValue, Optional Palette)- 将 OLE 颜色值转换为 RGB 颜色。
ProcessorArchitecture()- 返回 或 ,具体取决于应用程序位数。vbArchWin32vbArchWin64
CallByDispId(Object, DispId, CallType, Arguments)- 与 类似,但使用 dispatch ID 而不是方法名称。CallByName()
RaiseEventByName(Object, Name, Args)- 使用指定为包含数组的单个参数调用类上的事件。Variant
RaiseEventByName2(Object, Name, Arg1, Arg2, ...)- 使用指定为 ParamArray 的参数调用类上的事件。
PictureToByteArray(StdPicture)- 将图片转换为字节数组;Globals.LoadPicture 支持从字节数组加载。
CreateGUID()- 返回具有新生成的 GUID 的字符串。
AllocMem(size)以及 - 从进程堆中分配和释放内存。FreeMem
Int3Breakpoint- 插入对附加的外部调试器有用的真正断点。
msvbvm60 的内置运行时函数
tB 内置了对一些最常用的运行时函数的支持,以实现兼容性。这些都支持 32 位和 64 位。

内存函数:、、、GetMem1GetMem2GetMem4GetMem8PutMem1PutMem2PutMem4PutMem8GetMemPtrPutMemPtr
vbaObjSet、 ,以及用于通过指针操作对象赋值。vbaObjSetAddrefvbaObjAddref
vbaCopyBytes和vbaCopyBytesZero
__vbaAryMove和(目前只有声明)。__vbaRefVarAryDeclare
GUI 组件
支持现代图像格式,您不再面临 tB Forms and Controls 中图像的格式选择非常有限;位图和图标格式不仅支持这些格式的所有格式,您还可以加载 PNG 图像、JPEG 图像、图元文件 (.emf/.wmf) 和 SVG 矢量图形 (.svg)。

改进LoadPicture
此外,可以直接从字节数组加载所有映像类型,而不需要磁盘上的文件。您可以使用它从资源文件或其他源加载图像。请注意,如果您的项目引用了 stdole2.tlb(大多数都引用了),则目前您必须将其限定为获取支持字节数组的 tB 自定义绑定。LoadPictureGlobal.LoadPicture

表单上的透明度和 Alpha 混合
表单.TransparencyKey
此新属性指定一种颜色,该颜色将按 z 顺序(所有窗口,而不仅仅是项目中的窗口)对其下方的窗口透明。设置此属性将导致指定的颜色为 100% 透明。带有实心的 Shape 控件是用键色为窗体区域着色的有用工具。FillStyle

Form.Opacity
这将为整个窗体设置一个 alpha 混合级别。就像透明度一样,这是针对紧挨着它的所有窗口。请注意,颜色覆盖的任何区域都将保持 100% 透明。TransparencyKey

Unicode 支持
所有 tB 实现的控件都支持 Unicode,无论是在代码编辑器中还是在显示时。

控制现代化
tB 最终将取代您习惯的所有内置控件,目前可用的控件有:CommandButton、TextBox、ComboBox、CheckBox、OptionButton、Label、Frame、PictureBox、Line、Shape、VScrollBar、HScrollBar、Timer、DriveListBox、DirListBox、FileListBox、Image 和基本集中的数据;然后,从公共控件中获取 ListView、TreeView、ProgressBar、DTPicker、MonthView、Slider 和 UpDown。

控件支持 x64:每个控件都可以编译为 32 位和 64 位,而无需更改任何内容。
控件可识别 DPI:当为应用启用 DPI 感知时,它们将自动调整正确的大小。
控件支持每个控件的视觉样式:Comctl6 样式可以与属性一起在逐个控件的基础上应用,也可以不应用。.VisualStyles
未实施控制措施的替代方法
最好的选择是 Krool 的 VBCCR 和 VBFlexGrid 项目。现在,它们以 x64 兼容的形式从包服务器获得,并且还具有 DPI 感知能力并支持视觉样式。

此外,Microsoft 提供的原始 OCX 控件将正常工作;但是,它们大多仅是 32 位。x64 版本不随 Windows 一起提供,在法律上不可再分发,但如果你有 Office 64 位,它可以在 tB 中工作。MSComCtl.ocx

设计经验和编译器功能
自定义 COM 初始化
您可以使用以下选项指定隐藏入口点使用的调用:、、。如果您不知道其中的区别,请不要将其从默认值更改。CoInitialize STACoInitializeEx MTAOleInitialize STA

自定义符号表参数
您可以调整以下参数:最大原始大小、最大大小查找和数据类型查找。这些选项允许编译非常大的项目,否则这些项目会出现问题,如果需要增加这些值,编译器将通知您。

清理布尔类型
在引擎盖下,布尔值是 2 字节类型。使用内存 API,或者从外部代码接收这些 API 时,可以存储表示 和 的值以外的值。此选项验证来自外部源(e.g. COM对象和 API)的布尔值,以确保仅存储两个受支持的值。TrueFalse

过时/悬空的指针检测
Bug 是在释放字符串和变体后使用它们而产生的。如果内存没有被覆盖,它可能不会立即被注意到,但有时很难检测到,并且可能会导致字符串显示其以前的值或垃圾等问题。此调试选项检测释放后使用,并将数据替换为指示问题的特殊符号。下面显示了一个示例,其中 ListView ColumnHeader 文本已由以前释放的字符串设置并由此功能检测:

现代 IDE 功能
虽然twinBASIC IDE还有很多工作要做,但它已经包含了许多功能,这些功能使其他现代IDE中的生活变得更加容易,但古代VBx IDE却没有,包括:
代码折叠,通过块具有可折叠的自定义区域。#Region "name" ... #End Region
完全可定制的键盘快捷键,涵盖所有命令,能够保存和在不同组之间切换。
粘性滚动,将上下文行保持在顶部,显示代码的主要部分,如模块、区域、方法、块等。With
缩进参考线,沿着常见的缩进点绘制的线条,以帮助正确排列。
粘贴时自动缩进。
粘贴为注释。
.twin 文件中完全支持 Unicode,因此您可以在注释和字符串中使用字体的完整 Unicode 范围。
内联代码提示,在块的末尾提供块是什么的注释(见图)。
代码小地图,在滚动条旁边显示代码结构的图形概述,有助于指导您的滚动。
高级信息弹出窗口,显示 UDT 成员的偏移量、通过加号的总大小以及它们的对齐方式;接口和类的 V 表条目偏移量,以及它们的继承链。
括号和括号的颜色匹配。
包含最近修改的方法列表的“历史记录”面板。
具有可选类别的“大纲”面板。
“问题”面板提供所有当前错误和警告的列表(您可以过滤以仅显示其中一个)。
在窗体设计器上,“带有”的控件将淡入淡出以直观地指示这一点。此外,按住 Control 键会显示每个制表位的制表符索引。Visible = False

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-26 16:46 | 显示全部楼层
本帖最后由 liucqa 于 2024-4-26 17:00 编辑

https://github.com/twinbasic/documentation/wiki
twinBASIC



twinBASIC 路线图
给出的日期是暂定的,可能会有变化。此处仅列出主要问题。较小的功能请求将在最合适的时候实现(通常是当我们已经触及代码库同一区域的某些内容时)。

2024-第二季度(4月至6月)
完成 UserContol / ActiveX 支持
添加 MDI 表单支持
完成所有剩余的基本控件 (所有缺失/未实现的内在控制属性和方法列表 #1188)
完成缺少的 App 对象方法 (不支持 VB6 应用对象 #143)
添加打印机/打印机支持 (缺少 Printer 和 Printers 对象 #893)
将缺少的功能添加到新的 IDE 中,例如重命名重构和测试资源管理器

2024-第三季度(7月-9月)
完成 LLVM 支持,用于优化构建(仅适用于付费订阅者)
在此期间提供 v1 候选版本版本

版本 1 发布
暂定发布日期:2024 年 10 月 1 日

2024-Q4 (10月-12月)
启动分析扩展 API (分析扩展 API #51)
支持完全继承 (#73)
添加完整的 vbWatchdog 支持
添加多线程语法支持
开始对 x86/x64 Linux/Mac 的跨平台支持(仅适用于付费终极版订阅者))

2025-Q1 (1-3月)
开始对 ARM Linux/Mac/Android 的跨平台支持(仅适用于付费终极版订阅者))
开始重新实现所有剩余的 VB6 附带控件,例如 Winsock、MAPI、Adodc、DataGrid、MSCOMM 等
使用代理进程(例如,使用 32 位 ActiveX 控件的 64 位应用程序)在具有无与伦比的位数的 tB 窗体上支持 ActiveX 控件


TA的精华主题

TA的得分主题

发表于 2024-4-27 01:12 | 显示全部楼层
这是给VB6.0 续命了  不知道VBA什么时候!

TA的精华主题

TA的得分主题

发表于 2024-5-3 22:00 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-5-3 23:06 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-5-4 08:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
刚在网上搜了一下,如果要生成64位的程序,是要收费的,还是按月收费

TA的精华主题

TA的得分主题

发表于 2024-5-4 10:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
兰色的回忆 发表于 2024-5-4 08:53
刚在网上搜了一下,如果要生成64位的程序,是要收费的,还是按月收费

正常  放gitbub 没有开源倒是没想到的
应该就是个ai代码辅助器罢了  还是用gpt4 或 4.5 自己修复兼容bug吧

33.png
33.png

TA的精华主题

TA的得分主题

发表于 2024-5-4 10:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
看着 很强
44.png
55.png
66.png
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-9-25 05:22 , Processed in 0.041793 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表