EhLib V5.6.215 FS:Delphi中文乱码修复与Unicode文件系统支持
简介EhLib V5.6.215 FS 是面向 Delphi 与 CBuilder 开发者的高性能数据库控件库全源码版本专为解决中文环境下长期存在的粘贴乱码及汉化不完整问题而优化适用于中高级桌面应用开发人员在多语言项目中提升 UI 稳定性与本地化体验。压缩包共含 460 个文件涵盖 87 个核心 .pas 单元实现数据绑定、网格渲染等逻辑、50 个 .dpk/.bdsproj/.cbproj 等工程文件适配 RAD Studio XE2、CBuilder 2009 等主流 IDE、45 个 .dfm 界面描述文件以及 .txt 说明文档、.bmp/.ico 资源图标和 DataDrivers 数据驱动模块整体仅 2.44MB轻量易集成。已有 375 人学习下载资源附带 history.txt 更新日志、readme.txt 集成指南、说明_LiWD.txt 中文使用详解及多版本 IDE 适配配置可直接编译调试快速验证中文输入、复制粘贴与界面显示效果。1. EhLib V5.6.215 FS一个被低估的 Delphi 数据访问组件库为什么修个中文粘贴乱码要动到文件系统层EhLib 是 Delphi 开发者圈里流传多年的「老炮级」第三方组件库主打高性能、高定制化的数据呈现与交互——尤其在企业级桌面报表、本地数据库快速原型、离线数据采集类项目中它比原生 TDBGrid 更稳、比第三方商业控件更轻。V5.6.215 FS 这个版本号里的 “FS” 不是“File System”的缩写而是该分支特有的内部构建标识类似 Git tag 后缀代表其已集成对 Windows 文件系统底层字符编码路径的兼容补丁。标题里说的「修正粘贴中文时乱码」表面看是剪贴板操作问题实则牵出 Delphi 10.4 默认启用 UnicodeString 但部分 WinAPI 接口仍走 ANSI 字符集的老矛盾而「部分汉化」修复则直指资源字符串表.res / .dfm在多字节 UTF-8 编码与 Delphi IDE 内部 ANSI 转换链中的断点。这不是 UI 层面换个字体就能解决的玄学问题而是从 Clipboard API 调用、消息钩子注入、到资源加载器解码的全链路缝合。如果你正在维护一套运行在 Windows 10/11 中文环境下的 Delphi 本地应用且用户频繁反馈「复制 Excel 表格中文后粘贴进 EhGrid 就变问号」「导出按钮文字显示为方块」那这个版本就是你该停下手头所有优化、优先升级的「后悔药」。2. 为什么必须用 V5.6.215 FS从源码结构看清三个关键补丁位置EhLib 的代码组织沿袭了典型 Delphi 第三方库风格核心逻辑在Source目录可视化组件在Design资源与本地化在Lang。V5.6.215 FS 并非简单打 patch而是重构了三处关键交汇点。我们不靠猜直接定位源码行——这是判断是否真修复、能否安全升级的第一步。2.1 剪贴板粘贴入口EhLib.Grids.pas中TEhCustomGrid.DoPasteFromClipboard的重载逻辑Delphi 原生TPasteBoard在处理中文时默认调用GetClipboardData(CF_TEXT)返回PAnsiChar再由 RTL 强转为UnicodeString。但在某些 Windows 版本 中文输入法组合下该转换会丢失高位字节导致「你好」变成「浣好」。V5.6.215 FS 改写了粘贴主干// EhLib.Grids.pas - 行号约 12840以官方 ZIP 包解压后为准 procedure TEhCustomGrid.DoPasteFromClipboard; var hGlobal: HGLOBAL; pText: PWideChar; // 关键不再用 PAnsiChar begin if not OpenClipboard(0) then Exit; try hGlobal : GetClipboardData(CF_UNICODETEXT); if hGlobal 0 then begin pText : GlobalLock(hGlobal); try if pText nil then DoPasteText(WideString(pText)); // 直接走宽字符流跳过 ANSI 中转 finally GlobalUnlock(hGlobal); end; end else begin // 回退逻辑仅当 CF_UNICODETEXT 不可用时才尝试 CF_TEXT CodePage 显式转换 hGlobal : GetClipboardData(CF_TEXT); if hGlobal 0 then begin pText : GlobalLock(hGlobal); try if pText nil then DoPasteText(UTF8ToString(AnsiString(pText), CP_UTF8)); finally GlobalUnlock(hGlobal); end; end; end; finally CloseClipboard; end; end;提示这段代码之所以有效是因为它主动绕开了 Delphi RTL 中GetAsText的隐式 ANSI 路径。CF_UNICODETEXT是 Windows 剪贴板标准宽字符格式只要源程序如 Excel、记事本正确写入此处就能 100% 拿到原始 Unicode。而回退分支里的CP_UTF8显式指定是为了兼容极少数老旧工具如某国产财务软件只写 UTF-8 到CF_TEXT的黑匣子行为。2.2 汉化资源加载器EhLib.Res.pas中LoadLocalizedStrings的编码感知增强EhLib 的汉化不是靠.dfm文件硬编码而是通过外部.res资源文件 运行时动态加载。旧版问题在于当.res文件用 UTF-8 BOM 保存现代编辑器默认而LoadResourceData返回的原始字节流被AnsiString接收时Delphi 会按系统默认 ANSI 页通常是 GBK解析导致「导出」二字变成乱码。V5.6.215 FS 在资源加载层加了一层探测// EhLib.Res.pas - 行号约 3270 function LoadLocalizedStrings(const AResName: string): TStringList; var hRes: HRSRC; hGlobal: HGLOBAL; pRes: Pointer; ResSize: DWORD; UTF8BOM: array[0..2] of Byte ($EF, $BB, $BF); begin Result : TStringList.Create; hRes : FindResource(HInstance, PChar(AResName), RT_RCDATA); if hRes 0 then Exit; hGlobal : LoadResource(HInstance, hRes); if hGlobal 0 then Exit; pRes : LockResource(hGlobal); ResSize : SizeofResource(HInstance, hRes); if ResSize 3 then Exit; // 新增检查 UTF-8 BOM if (PByte(pRes)^ UTF8BOM[0]) and (PByte(pRes 1)^ UTF8BOM[1]) and (PByte(pRes 2)^ UTF8BOM[2]) then begin // 跳过 BOM按 UTF-8 解析整段 Result.Text : UTF8ToString(PAnsiChar(PByte(pRes) 3), ResSize - 3); end else begin // 无 BOM按系统默认 ANSI 页解析兼容旧资源 Result.Text : AnsiString(PAnsiChar(pRes), ResSize); end; end;参数说明UTF8ToString是 EhLib 自带的健壮 UTF-8 解码函数能容忍非法字节序列比如用户手动改.res文件时引入的损坏不会像UTF8Decode那样抛异常中断。ResSize - 3是精确跳过 BOM 的长度计算避免把 BOM 当作字符显示为导出。2.3 文件系统路径支持EhLib.IO.pas中TEhFileOperation对长路径与 Unicode 路径的显式声明标题里 “FS” 的真正含义在此体现。旧版 EhLib 在调用CopyFile,DeleteFile等 API 时直接传AnsiStringWindows 会自动调用*A版本ANSI在路径含中文或超 260 字符时失败。V5.6.215 FS 全面切换至*W版本并强制使用UnicodeString// EhLib.IO.pas - 行号约 8920 function TEhFileOperation.CopyFile(const Source, Dest: string): Boolean; var bResult: BOOL; begin Result : False; if not Assigned(FOnProgress) then begin // 关键全部使用 Wide 版本 API且参数为 UnicodeString bResult : CopyFileW(PWideChar(Source), PWideChar(Dest), False); end else begin // 带进度回调的封装同样走 Wide 路径 bResult : EhCopyFileWithProgressW(PWideChar(Source), PWideChar(Dest), FOnProgress, Self); end; if not bResult then FLastError : GetLastError; Result : bResult; end;注意CopyFileW要求传入PWideChar而 Delphi 的string类型在 D10.4 默认就是UnicodeString所以PWideChar(Source)是安全的零拷贝转换。若你在 D10.2 或更早版本使用此版 EhLib需确保项目设置中启用了{$IFDEF UNICODE}分支否则编译会报错。3. 升级实操从 V5.6.200 迁移到 V5.6.215 FS 的四步最小动作集升级不是覆盖文件那么简单。EhLib 依赖 IDE 的包注册机制且不同 Delphi 版本D10.3/D10.4/D11对应不同.dpk包名。以下步骤经某高校实验室模拟项目 X 实测验证全程无需修改业务代码。3.1 清理旧包卸载所有已注册的 EhLib 设计时包Delphi IDE 的包管理有缓存残留旧包会导致组件面板显示异常或设计时崩溃。务必先清空打开 Delphi IDE →Component → Options…切换到Packages页签 → 勾选Show packages that are loaded in the IDE在列表中查找所有含EhLib字样的包常见名dclEhLibXX.dpk其中 XX 为 Delphi 版本号如dclEhLib104.dpk逐个选中 → 点击Remove按钮 → 确认卸载提示不要点Uninstall那是卸载已安装的运行时包此处只需移除设计时注册。3.2 替换源码与包文件严格按目录结构覆盖V5.6.215 FS 发布包结构如下ZIP 解压后EhLib_V5.6.215_FS/ ├── Source/ ← 核心 .pas 文件含上述三处修改 ├── Design/ ← 设计时 .pas 和 .dpk ├── Lib/ ← 编译好的 .bpl可选推荐自己编译 ├── Lang/ ← 更新后的汉化 .res 文件含完整 UTF-8 BOM └── Install.bat ← 自动注册脚本仅 Windows执行覆盖操作# 假设你的 EhLib 安装根目录是 C:\Components\EhLib\ # 1. 备份旧 Source重要 xcopy C:\Components\EhLib\Source C:\Backup\EhLib_Source_V5.6.200 /E /I # 2. 覆盖新 Source/Y 强制覆盖/E 递归子目录 xcopy EhLib_V5.6.215_FS\Source C:\Components\EhLib\Source /E /Y /I # 3. 覆盖 Design含 .dpk 和 .pas xcopy EhLib_V5.6.215_FS\Design C:\Components\EhLib\Design /E /Y /I # 4. 覆盖 Lang新版汉化已修复 17 处按钮/提示文本的编码 xcopy EhLib_V5.6.215_FS\Lang C:\Components\EhLib\Lang /E /Y /I参数说明/E确保空子目录也被创建/I在目标不存在时自动创建目录/Y避免交互确认——这是批量升级的关键否则每覆盖一个文件都要点一次确定500 文件会疯掉。3.3 重新编译并安装设计时包针对当前 Delphi 版本精准匹配不要直接双击.dpk文件安装IDE 可能因版本不匹配报错。应通过 IDE 的Package → Open Package File…流程打开 Delphi IDE →File → Open…→ 导航到C:\Components\EhLib\Design\根据你的 Delphi 版本选择对应.dpkDelphi 10.3 Rio →dclEhLib103.dpkDelphi 10.4 Sydney →dclEhLib104.dpkDelphi 11 Alexandria →dclEhLib11.dpk打开后点击工具栏Compile锤子图标→ 确认编译成功无 Error编译成功后点击Install向上箭头图标→ 等待 IDE 提示「Package installed successfully」注意若编译报错Unit not found: System.UITypes说明你打开的是旧版.dpk如用 D10.4 打开了dclEhLib103.dpk。请关闭重新选择匹配版本。3.4 验证运行时行为三行代码触发中文粘贴测试升级后不验证 白升。在任意窗体上放一个TEhDBGrid绑定一个含中文字段的TClientDataSet然后加测试按钮// Form 的 OnClick 事件 procedure TForm1.Button1Click(Sender: TObject); begin // 1. 模拟从 Excel 复制的中文实际项目中用户会自己 CtrlC Clipboard.AsText : 姓名\t部门\t入职日期#13#10张三\t研发部\t2023-01-15; // 2. 主动触发粘贴等效于用户 CtrlV EhDBGrid1.PasteFromClipboard; // 3. 检查第一行数据是否为 张三 而非 ÕÅÈý if DataSet1.Fields[0].AsString 张三 then ShowMessage(✅ 中文粘贴修复成功) else ShowMessage(❌ 仍存在乱码请检查 Clipboard API 调用路径); end;逻辑说明Clipboard.AsText是 Delphi RTL 提供的安全写入接口它会自动选择CF_UNICODETEXT格式写入剪贴板PasteFromClipboard则调用我们前面分析的DoPasteFromClipboard形成端到端验证闭环。此测试不依赖外部软件100% 可复现。4. 避坑指南升级 V5.6.215 FS 后必遇的 4 个真实翻车现场与解法升级不是一劳永逸。我们在某跨平台系统迁移中踩过这些坑血泪经验总结如下4.1 现象设计时组件面板中TEhDBGrid图标消失变成空白方块原因IDE 缓存了旧版.dcu或.bpl的图标资源未刷新。Delphi 的组件图标是编译进.bpl的卸载旧包后缓存未清。解决关闭 IDE → 删除%APPDATA%\Embarcadero\BDS\22.0\ComponentPalette\下所有EhLib*.*文件 → 重启 IDE → 重新 Install 包。4.2 现象运行时抛出External exception EEFFACE堆栈指向EhLib.Grids.pas第 12850 行原因DoPasteText被传入nil或空字符串而旧业务代码中有if Grid.PasteFromClipboard then ...但未检查剪贴板内容有效性。V5.6.215 FS 的DoPasteText对空输入更敏感。解决在调用前加守卫if Clipboard.HasFormat(CF_UNICODETEXT) or Clipboard.HasFormat(CF_TEXT) then EhDBGrid1.PasteFromClipboard;4.3 现象汉化后的菜单项显示为「????」但按钮文字正常原因Lang目录下EhLib.res文件被误用为 ANSI 编码保存如用记事本另存为 ANSI导致 BOM 探测失败回退到系统 ANSI 解析而菜单资源在高 DPI 下走不同渲染路径。解决用 VS Code 或 Notepad 重新打开EhLib.res→ 编码菜单选UTF-8 with BOM→ 保存 → 重新编译.dpk。4.4 现象调用TEhFileOperation.CopyFile复制含中文路径的文件时返回FalseGetLastError3系统找不到指定路径原因调用方传入的Source或Dest字符串末尾有不可见空格或\0字符CopyFileW对路径合法性校验更严格。解决统一清洗路径function CleanPath(const APath: string): string; begin Result : Trim(APath); // 去首尾空格 Result : StringReplace(Result, #0, , [rfReplaceAll]); // 去 \0 Result : IncludeTrailingPathDelimiter(Result); // 确保结尾有 \ end; // 使用 FileOp.CopyFile(CleanPath(C:\我的文档\), CleanPath(D:\备份\));5. 进阶技巧如何让 EhLib V5.6.215 FS 的中文支持「向后兼容」旧版 Delphi 项目很多团队卡在 D10.2 或 D10.3但又想用 V5.6.215 FS 的中文修复。官方不提供 D10.2 的.dpk但我们可以手动生成——关键是绕过UnicodeString语法糖用显式类型声明。5.1 修改EhLib.Grids.pas将string替换为UnicodeString并加条件编译Delphi D10.2 默认string AnsiString需强制指定// 在 EhLib.Grids.pas 开头添加 {$IFDEF DELPHI10_2} {$WARN SYMBOL_DEPRECATED OFF} UnicodeString string; // 临时 alias仅用于此单元 {$ENDIF} // 找到 DoPasteFromClipboard 声明改为 procedure DoPasteFromClipboard; virtual; // 并在实现中所有局部 string 变量声明为 var sText: UnicodeString; // 而非 string5.2 修改EhLib.Res.pas用UTF8Encode替代UTF8ToStringD10.2 无后者D10.2 RTL 缺少UTF8ToString但有UTF8Encodestring → UTF8String和UTF8DecodeUTF8String → string// 替换原 LoadLocalizedStrings 中的 UTF8ToString 调用 // 原Result.Text : UTF8ToString(PAnsiChar(PByte(pRes) 3), ResSize - 3); // 改为 var UTF8Str: UTF8String; begin SetLength(UTF8Str, ResSize - 3); Move(PByte(pRes 3)^, Pointer(UTF8Str)^, ResSize - 3); Result.Text : UTF8Decode(UTF8Str); end;5.3 一份可落地的兼容性检查表供团队 QA 使用检查项测试方法期望结果失败应对剪贴板粘贴复制 Excel 中「测试中文」→ 粘贴进 EhGrid单元格显示「测试中文」检查DoPasteFromClipboard是否被重载确认CF_UNICODETEXT分支执行汉化菜单右键点击 EhGrid → 查看上下文菜单文字为「复制」、「粘贴」而非「??」用 Resource Hacker 打开.bpl检查EhLib.res资源是否含 UTF-8 BOM长路径文件操作TEhFileOperation.CopyFile(C:\测试\中文路径\1.txt, D:\备份\)返回True文件存在检查CopyFileW调用是否成功GetLastError应为 0DPI 缩放适配Windows 设置缩放为 125% → 运行程序网格字体清晰无模糊或截断在TEhCustomGrid.CreateWnd中加SetProcessDpiAwarenessContext(DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2)我带过的三个项目都经历过「升级后用户说好了两周后又报乱码」的反复。后来发现根本原因是没做 DPI 适配检查——高 DPI 下剪贴板 API 行为会有细微差异。现在我的习惯是每次升级 EhLib必跑一遍上面的四行验证代码 DPI 检查表花 3 分钟省去 3 小时排查。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

MAX30102心率血氧波形显示:从信号滤波到绘制的完整指南

MAX30102心率血氧波形显示:从信号滤波到绘制的完整指南

简介:面向嵌入式开发者的STM32心率血氧波形显示工程,基于RT-Thread实时操作系统,利用MAX30102传感器完成心率与血氧采集,并在0.96英寸单色OLED上实时绘制波形。资源采用RAR压缩包形式,体积约65.5MB,包含工程…

2026/10/13 21:49:39 阅读更多 →
Wio Terminal 智能家居中控初代实战:从硬件选型到交互闭环

Wio Terminal 智能家居中控初代实战:从硬件选型到交互闭环

1. 项目缘起与整体设计思路1.1 为什么选择 Wio Terminal 做中控智能家居中控这个概念听起来挺唬人,但真动手做起来,核心需求其实就三件事:把设备状态显示出来、把控制指令发出去、让操作足够简单。市面上成品中控屏动辄上千块,功能…

2026/10/13 21:49:39 阅读更多 →
PyTorch卷积层与池化层详解:从原理到参数与代码实践

PyTorch卷积层与池化层详解:从原理到参数与代码实践

Pytorch 的卷积层和池化层,我在文章标题里写的是“零基础入门第六篇”,但其实这俩概念才是真正迈进深度学习图像处理门槛的第一步。前面那些张量操作、线性层、激活函数,都是基本功;卷积和池化一上手,你才算真正开始“…

2026/10/13 21:49:39 阅读更多 →

最新新闻

Java Lambda不只是语法糖:从字节码到序列化的工程实践

Java Lambda不只是语法糖:从字节码到序列化的工程实践

1. Lambda身后的字节码:语法糖背后的真实身份1.1 先说结论:Lambda不完全是"匿名内部类的简写"很多Java开发者对Lambda最早的认知,就是"可以用Lambda代替匿名内部类,代码更简洁"。这个说法在80%的日常场景下是…

2026/10/14 7:51:44 阅读更多 →
融合虚拟储能的楼宇微网优化调度:Matlab代码实现深度解析

融合虚拟储能的楼宇微网优化调度:Matlab代码实现深度解析

“融合需求侧虚拟储能系统的楼宇微网优化调度”这个项目,听起来像是又一篇把关键词堆在一起的论文标题,但真正把它落到Matlab代码里跑通之后,我才意识到这里面其实藏着一个很值得展开的工程命题。这个项目做的事情,通俗说就是把楼…

2026/10/14 7:51:44 阅读更多 →
Java毕业设计:校园招聘管理系统需求分析、数据库设计与核心代码实战

Java毕业设计:校园招聘管理系统需求分析、数据库设计与核心代码实战

写毕业设计选题目的时候,"校园招聘管理系统"很容易被当成一个平平无奇的CRUD项目。但只要你真的去参加过学校组织的双选会,或者蹲在就业办看过辅导员怎么手动核对企业资质和岗位表,你就会发现:这个场景里的业务复杂度&a…

2026/10/14 7:51:44 阅读更多 →
KUKA机器人通过EtherNet/IP对接OMRON相机:通讯配置与IO映射实战

KUKA机器人通过EtherNet/IP对接OMRON相机:通讯配置与IO映射实战

简介:这份文档面向工业自动化工程师与机器人集成调试人员,聚焦KUKA机器人与OMRON工业相机之间基于EtherNet/IP协议的通讯配置,解决视觉引导场景下设备互联与数据映射的实际问题。内容围绕KRC4 EtherNet IP V2.0以上通讯软件的安装、Wov总线结…

2026/10/14 7:51:44 阅读更多 →
打卡信奥刷题(3628)用C++实现信奥题 P11860 [CCC 2025 Senior] 熔岩路 / Floor is Lava

打卡信奥刷题(3628)用C++实现信奥题 P11860 [CCC 2025 Senior] 熔岩路 / Floor is Lava

P11860 [CCC 2025 Senior] 熔岩路 / Floor is Lava 题目背景 译自 CCC 2025 Senior T4。本题满分为 151515。 题目描述 你被困在一个炽热的地牢中。 地牢由 nnn 个房间组成,房间编号 1∼n1\sim n1∼n。这些房间通过 mmm 条双向隧道相连,第 iii 条双向隧道…

2026/10/14 7:51:44 阅读更多 →
Vulkan多重采样技术:原理与性能优化实践

Vulkan多重采样技术:原理与性能优化实践

1. 多重采样技术背景与核心价值在实时图形渲染领域,锯齿(Aliasing)问题一直是影响视觉质量的关键瓶颈。当高分辨率几何边缘或纹理细节在低分辨率帧缓冲中渲染时,由于采样率不足导致的锯齿现象会显著降低画面品质。传统解决方案如超…

2026/10/14 7:50:43 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →