news 2026/5/7 8:12:34

twinBASIC 更新:2026年5月5日/替代VB6,VB7继任者

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
twinBASIC 更新:2026年5月5日/替代VB6,VB7继任者

📢 前言

2021 年 4 月 23 日,我与 Wayne Phillips 在维也纳 Access 开发者大会上,向全球首次介绍了twinBASIC。当时我大胆预测:到 2025 年,twinBASIC(搭配 Monaco 编辑器)将取代 VBA 及其老旧开发环境。

为实现这一目标,我推出这份每周更新,持续向 VBA 开发者社区同步项目动态、分享相关文章、提升社区参与度。更新时间:每周一(原每周日)

🔗 参与项目渠道

  • 定制 twinBASIC IDE 安装指南
  • twinBASIC Discord 服务器(项目交流)
  • twinBASIC Wiki(VBx 不具备的新特性清单)
  • GitHub 问题跟踪器(提交 Bug)
  • twinBASIC/VBx LinkedIn 群组

✨ 本周亮点

1. 🎥 DevCon 2026 twinBASIC 演讲视频公开

维也纳 Access 开发者大会是全球最大的英语区 Microsoft Access 开发者会议。自 2021 年 twinBASIC 发布以来,我每年都在此发表专属技术演讲。本次大会组委会免费公开了我的 twinBASIC 专场录像,完整版已上线 YouTube

2. 📄 twinBASIC 订阅许可模式重磅澄清

本周 Discord 社区关于订阅机制的问答,颠覆了许多老用户的认知:

  • 用户疑问:取消订阅后,能否继续使用订阅期内的版本编译?还是完全无法编译?
  • 官方回复(WaynePhillipsEA)
    1. 订阅取消后,可永久使用订阅期内最新版本,不受影响
    2. 订阅到期后发布的新版本,将拒绝你的许可证密钥
    3. 不会自动回退到社区版,只是失去后续更新与官方支持
  • 核心结论:订阅≈订阅期内版本的永久授权

🧩 Discord 社区聊天摘要

1. 控制台应用与进程间通信 🖥️

  • alaskandruid 在外部调用 tB 控制台程序捕获 stdout 时遇到运行时错误 5
  • fafalone 提供修复方案:通过GetConsoleMode检测管道重定向,用WriteFile替代WriteConsole
  • deletedewd 推荐使用运行对象表(ROT)实现 tB 与 C# 进程间通信

2. 高精度基准测试 ⏱️

  • wqweto 分享TimerEx辅助函数,基于QueryPerformanceCounter实现比内置Timer更精准的计时

3. CTGUI/SFML DLL 绑定移植 🧬

  • alaskandruid 完成 CTGUI(TGUI 的 C 绑定)与 CSFML API 向 twinBASIC 的移植
  • 解决UTF-32 字符串参数传递难题:Wayne 提供StringToUTF32转换方案
  • 确认AddressOf函数回调可正常工作,计划将完整绑定发布到 GitHub 并提交为 twinpack

4. 二进制文件 I/O 与 UDT 处理 📂

  • 问题:使用Put写入固定字符串 UDT 数组时记录数异常
  • 结论:二进制 I/O 中应使用 **Len(磁盘大小)**,而非LenB(内存字节大小)

🐛 已报告 Bug

  1. 多继承 Bug:同时继承两个基类并重写共享方法时,调用会导致运行时崩溃(已确认)
  2. twinpack 导出路径问题:IDE 会自动在配置路径后追加项目名,EXE 项目无此问题(已提交)

🧾 许可与订阅模式说明

  • 订阅用户:保留订阅期内最新版本永久使用权,无后续更新与支持
  • 社区版:无许可证也可使用编译器,但不支持 LLVM 优化、64 位无启动画面、跨平台等付费特性

🚀 开发进度与社区动态

  • 社区反馈:近期发布节奏放缓,属于项目成熟化的正常现象
  • 官方回应:新版本即将发布,对项目方向充满信心

🌐 周边工具更新

🛡️ ZoneStripper Shell 扩展:新增文件夹支持

fafalone 更新了用于移除文件 “网页标记(Mark of the Web)” 的右键工具:

  • 新增:支持文件夹批量移除
  • 修复:注册表文件问题,无需重新编译 DLL,直接合并新.reg 文件即可
  • 项目地址:GitHub fafalone/ZoneStripperExt
原文:https://nolongerset.com/twinbasic-update-may-5-2026/

亮点包括在YouTube上公开发布我的DevCon 2026 twinBASIC演讲,对tB许可条款的意外澄清,以及更新fafalone的MotW实用工具。
2026年5月5日 •7分钟阅读

2021年4月23日,我帮助Wayne PhillipsVienna Access DevCon会议上向世界介绍了twinBASIC。我大胆预测,到2025年,twinBASIC(以及Monaco编辑器)将取代VBA及其过时的开发环境。为了实现这一目标,这份每周更新是我试图让VBA开发社区保持对这个项目的记忆。

每周周日周一,我将提供项目状态的更新,链接到讨论 twinBASIC 的新文章,并 generally 尝试增加对项目的参与度。如果您遇到应包含在此处的项目,请在下面留言。

以下是参与该项目的链接:

  • 定制双BASIC IDE安装指南
  • twinBASIC Discord 服务器(讨论该项目)
  • twinBASIC 维基(新功能列表不在 VBx 中)
  • GitHub 问题跟踪器(报告错误)
  • twinBASIC/VBx LinkedIn Group
亮点
DevCon 2026 twinBASIC 在 YouTube 上的展示

Access DevCon 维也纳是世界上最大的英语微软Access开发人员会议。自2021年twinsBASIC首次亮相以来,我每年都荣幸地参加,我为这个Access开发人员群体提供了一个专门关于twinsBASIC的会议。

再次感谢Karl Donaubauer和其它DevCon会议组织者,他们慷慨地将我的twinBASIC演讲作为三个在会议付费墙外分享的会议之一发布。完整的录像可以在YouTube上观看:

订阅许可模型澄清

在本周的Discord聊天中,有人问了一个问题,官方答案让许多长期成员感到惊讶:

[bigriverguy]:如果你可以取消订阅,那么订阅将会如何运作?你会仍然可以访问取消订阅时的当前所有内容吗?我们是否需要继续订阅才能使用产品。

[bigriverguy]:有两种订阅方式:1)在你离开时,可以继续使用你离开时的最新版本编译;2)在你离开后,你将无法重新编译程序。似乎TwinBasic将使用#2。这令人难过,因为我拒绝使用任何让我继续订阅才能使用的软件。我因为这个原因离开了WinDev开发。我希望TwinBasic是一个替代方案。(例如,尽管Xojo和Lianja是订阅制的,但在你离开时,你仍然可以使用你离开时的最新版本的功能)。

[WaynePhillipsEA]:是的,你可以在订阅有效期内继续使用当时可用的版本。
之后发布的版本将拒绝你的许可证密钥。

[阿拉斯加德鲁伊]:等等……等等……这是最近才有的变化吗?我之前的印象(在今年十月左右),是取消订阅后,IDE/编译器会恢复到社区版?

[WaynePhillipsEA]:不,这不是最近的变化。你将失去对未来更新的访问权限,即未来的更新将恢复到社区版

[fafalone]:那这不意味着任何订阅都只是在订阅到期前的版本的永久许可证吗

[WaynePhillipsEA]:是的,基本上是这样,但没有官方支持或更新。

这与我一直以来的假设有很大的不同。坦率地说,我同意bigriverguy的看法,即一旦你的订阅到期,你将无法使用付费功能(如LLVM优化、无启动画面的64位支持等)来编译构建。

这是一个重要的澄清,因为我确信bigriverguy并不是唯一一个“拒绝使用任何将他们锁定在持续订阅中的产品”的开发人员。

Discord 聊天摘要

*由Claude-Sonnet-4.5自动生成

概述

本周的综合频道主要由alaskandruid的实践工作推动,他将CTGUI/SFML动态链接库绑定移植到twinBASIC,围绕进程间通信、UTF-32字符串处理和二进制文件输入输出产生了一系列富有成效的技术讨论。waynephillipsea分享了一篇备受好评的Access DevCon 2026演示文稿,介绍了实用的twinBASIC使用案例,社区也一起探讨了订阅和许可模式的相关问题。还发现并报告了一个多重继承错误和一个twinpack导出路径的不一致性。

访问 DevCon 2026
  • waynephillipsea 分享了 Access MVP Mike Wolfe 在 Access DevCon 2026 上的演讲记录 "Practical twinBASIC",展示了 Access 开发人员的现实世界 twinBASIC 使用案例;幻灯片和项目文件可以在 nolongerset.com/devcon-2026 上找到。
  • 该展示引起了社区的强烈积极反应,并激发了希望在基于访问的工作流程中应用twinBASIC的成员的兴趣。

控制台应用程序 & 进程间通信
  • alaskandruid在尝试从由外部进程启动的tB控制台应用程序捕获stdout时遇到了运行时错误5;fafalone进行了调查并提供了一个概念验证修复方案,该方案通过GetConsoleMode检测管道重定向,并在检测到管道时用WriteFile替换WriteConsole
  • deletedewd 提出了 Running Object Table (RegisterActiveObject/GetActiveObject) 作为 tB 和 C# 应用程序之间进程间通信的更清洁的替代方案,完全避免了控制台重定向。
  • 对于高精度基准测试,wqweto 分享了一个TimerEx帮手包装QueryPerformanceCounterQueryPerformanceFrequency作为内置Timer的更精确替代品。

CTGUI/SFML 动态链接库绑定
  • alaskandruid在将CTGUI(TGUI的C绑定)和CSFML DLL API移植到twinBASIC上取得了重大进展,fafallone和waynephillipsea在传递UTF-32字符串参数的关键挑战上提供了帮助。
  • fafalone 建议ByVal LongPtr作为初步的解决方法;waynephillipsea 提供了更可靠的StrPtr(StrConv(..., vbUnicode))转换,使用StringToUTF32/GetMem2/PutMem2来正确处理 UTF-16 代理对 —— 这是 twinBASIC 中遇到的 UTF-32 的第一个实际用例。
  • 通过AddressOf函数回调已确认在tguiWidget_signalConnect上可以正常工作, once a separate UTF-32 signal name issue was resolved; alaskandruid plans to publish the completed bindings to GitHub and eventually submit them as a twinpack reference.

二进制文件输入输出 & UDT 处理
  • alaskandruid在使用Put时遇到意外的记录计数;deletedewd解释说LenB报告了UDT的内存字节大小,而Len报告了磁盘上的大小——这使得LenB在使用Put/Get进行记录计数时变得不正确。
  • fafalone 强调了Len(不LenB)在二进制文件输入输出上下文中几乎总是应该与 UDTs 一起使用。

错误报告
  • fafalone 发现了一个多重继承的错误,当覆盖两个基类共享的方法(例如,Inherits Cat, Dog)时,如果调用被覆盖的方法会导致运行时崩溃;waynephillipsea 确认这是一个错误。
  • alaskandruid报告了一个双包特定的导出路径问题,其中IDE会默默将项目名称附加为子文件夹到配置的导出路径,而这种行为在标准EXE项目类型中不会发生;已提交错误报告。

许可和订阅模式
  • 社区成员bigriverguy对取消后的编译访问提出了担忧;waynephillipsea解释说,twistBASIC 订阅者在订阅有效期内仍然可以完全访问最后一个可用版本,后续版本将仅恢复到社区版的功能。
  • fafalone确认在社区版条款下,编译器在没有许可证密钥的情况下仍然可以正常工作,具有LLVM优化,移除了x64启动画面,并且未来的跨平台功能将保留给订阅者。

发展速度 & 社区动力
  • 社区幽默地指出这一时期发布节奏较慢;bclothier观察到这是项目成熟后的自然结果,因为每一个增量都带有更大的回归风险和复杂性。
  • waynephillipsea向社区保证很快会有更新,并对项目的方向充满信心。
结论

这是一周积极且技术丰富,alaskandruid的CTGUI/SFML工作浮现出几个实用的模式,涉及DLL互操作、UTF-32编码和二进制文件I/O,这些将对更广泛的社区有益。2026年Access DevCon的演示文稿和对订阅条款的明确回答有助于增强twinBASIC作为VB6/VBA开发人员长期平台的可信度。随着队列中确认的多重继承错误和即将到来的更新,该项目继续朝着完美的v1发布迈进。

网络周围
区带剥离器 Shell 扩展更新:文件夹支持

回到2024年11月,fafalone发布了他的"ZoneStripper"右键Windows资源管理器菜单工具,用于从文件中移除"网页标记":

这为资源管理器添加了一个右键菜单选项,以删除“网页标记”——告诉Windows和Office文件“来自互联网”的 Zone.Identifier 替代数据流。这是我对之前制作的完整程序的补充(链接在readme中)。
GitHub - fafalone/ZoneStripperExt: 区域条纹扩展程序
区带剥离器 Shell 扩展。在 GitHub 上创建一个帐户来为 fafalone/ZoneStripperExt 贡献。
​编辑GitHub法法龙

本周,他发布了一个更新,除了支持文件外,还支持文件夹:

更新:菜单项没有显示在文件夹中,评论指出这将被支持。这只是与.reg文件有关的问题;我原以为*的条目会包括文件夹,但事实并非如此。注册表文件现在为文件夹有一个额外的条目。你不需要重建DLL,只需合并更新的.reg文件(如果你愿意,重建也会做到这一点)。我已经测试了从选定文件夹中的项目中删除标识符的功能。
访问项目库以获取更新的.reg文件。
更新日志

以下是过去一周的更新。您也可以通过访问GitHub twinBASIC Releases页面来获取此信息。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/7 8:08:51

手把手教你用STM32F103C8T6的ADC+DMA测市电电压(附完整代码)

基于STM32F103C8T6的市电电压监测系统实战指南 引言 在电子实验室或创客空间里,经常需要监测市电电压的稳定性。传统万用表虽然能测量,但无法持续记录数据。本文将带你用一块不到20元的STM32F103C8T6核心板(俗称"蓝桥杯"开发板&…

作者头像 李华
网站建设 2026/5/7 8:08:33

Arm Cortex-R82处理器AArch64寄存器架构与优化实践

1. Cortex-R82处理器AArch64寄存器架构概述Arm Cortex-R82处理器作为面向实时应用的高性能处理器,其AArch64寄存器设计在保持Armv8架构兼容性的同时,针对实时系统需求进行了多项优化。与Cortex-A系列处理器相比,R82的寄存器设计更强调确定性和…

作者头像 李华
网站建设 2026/5/7 8:08:32

三分钟掌握iFakeLocation:iOS位置模拟的跨平台解决方案

三分钟掌握iFakeLocation:iOS位置模拟的跨平台解决方案 【免费下载链接】iFakeLocation Simulate locations on iOS devices on Windows, Mac and Ubuntu. 项目地址: https://gitcode.com/gh_mirrors/if/iFakeLocation iFakeLocation是一款功能强大的开源工具…

作者头像 李华
网站建设 2026/5/7 8:08:30

5个专业技巧:精通UE4/5脚本系统从零到实战

5个专业技巧:精通UE4/5脚本系统从零到实战 【免费下载链接】RE-UE4SS Injectable LUA scripting system, SDK generator, live property editor and other dumping utilities for UE4/5 games 项目地址: https://gitcode.com/gh_mirrors/re/RE-UE4SS UE4SS&a…

作者头像 李华
网站建设 2026/5/7 8:07:37

电力电子谐波抑制与PFC技术解析

1. 电力电子与电能质量问题的本质电力电子设备在现代电力系统中无处不在,从手机充电器到高铁牵引系统,它们通过半导体开关的快速通断实现电能形式的转换。但这种开关操作就像用一把高速开关的水龙头去接满一桶水——水流时断时续,必然会在水管…

作者头像 李华