NoteExpress

 找回密码
 立即注册
搜索
热搜: NE3 NE 3 已解决
123
返回列表 发新帖
楼主: 17674751382

WORD闪退

[复制链接]

1

主题

2

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2026-6-25 23:11:34 | 显示全部楼层
Word闪退是我遇到的的最多的问题,我有两个台式,一个笔记本,win10和win11都有,都出现过这个问题,我现在的电脑装的是NE4.3版本了,用了一段时间后仍然会word闪退,剔除NE加载项就不会闪退。
回复 支持 反对

使用道具 举报

42

主题

1436

帖子

4772

积分

论坛元老

Rank: 8Rank: 8

积分
4772
发表于 2026-6-25 23:27:22 | 显示全部楼层
song0329 发表于 2026-6-25 23:11
Word闪退是我遇到的的最多的问题,我有两个台式,一个笔记本,win10和win11都有,都出现过这个问题,我现在 ...

让AI 审核了相关的代码,大概率找到原因了:“Word 闪退的大概率根因不是单纯的 Word 兼容性,而是 NE 样式/格式化核心在 Word 进程内生成 RTF、书签、域内容时,缺少足够的校验、隔离和事务保护。一旦生成非法 RTF、非法/不成对书签,或者模板字段越界异常穿过插件边界,Word 会被直接带崩。
最高风险点
手工拼 RTF,且 Ansi/WideString 边界很脆弱
NEProducerClasses.pas (line 363) 用 WideString(GetRTFHeader + FBuffer.DataAnsiString) 返回 RTF;同文件 (line 376) 依赖系统 GetACP;同文件 (line 540) 写 \uc0 且没有 ANSI fallback。中文、特殊符号、字体名、控制字符进入 Word RTF 导入链路时,非常容易出错。

书签 begin/end 没有事务保护
NEFormaterClasses.pas (line 652) 先写 bookmark begin,同段 (line 656) 再取模板并写字段,696 (line 696) 才写 bookmark end。中间没有 try/finally 保证书签闭合。任何异常都会留下半截 RTF/半截书签。Word 对这种内容很敏感。

大量默认模板/字段下标假设
例如 NEStyleClasses.pas (line 1203) Assert(Count > 0) 后直接 Items[0];NEFormaterClasses.pas (line 1860) CurrentTemplates(...)[0];2155 (line 2155) 直接 Fields[0] / Fields[1];2620 (line 2620) 直接 Fields[0].FieldType。样式文件稍有异常、迁移不完整、模板为空,就可能 AV。

格式化过程会改写共享模板字段状态
NEFormaterClasses.pas (line 1890) 会对模板字段做依赖计算;2624 (line 2624) 直接把 Fields[0].Status := scfsSkip。如果 Word 插件重入、重复刷新、多个文档共享样式对象,状态污染会导致后续输出错乱或越界。

长期使用闪退的线索:析构函数拼错导致泄漏
NEFormaterClasses.pas (line 260) 声明的是 Destory,实现也在 2709 (line 2709),不是正常 Destroy override。FItemMap、FReportItems 很可能不会在对象释放时释放。用户说“用一段时间后 Word 闪退”,这个很符合长期内存/对象状态积累问题。

结论
这份核心代码能解释用户反馈:NE 加载项被剔除后 Word 不闪退,因为这些格式化、RTF、书签、字段操作运行在 Word 进程里。最该优先改的是:RTF 输出改成严格字节流并做 Word 导入校验;每次格式化 clone 样式和字段,不改共享模板;所有 bookmark/field 写入必须 try/finally 成对闭合;所有 Word 文档更新必须外围 try/except、失败回滚,不让异常穿过 COM 边界。
还不能最终证明的是 COM 加载项生命周期、Word 事件重入、后台线程调用 Word 对象这些问题,因为附件没有 Word 插件外壳源码。但从核心代码看,崩溃高风险已经很明确。”
回复 支持 反对

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|NoteExpress

GMT+8, 2026-7-30 18:07 , Processed in 0.133851 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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