文本对照后的“编辑位置目录”
文本对照后可以创建一个“目录”用以快速定位“改动过的区域”。在文本行数比较多、编辑点又比较分散时如果要反复观察“不同的对照区域”的话则需要反复拖动滚动条的滑块同时还需留意滚动中的文本手忙眼花。程序要是能象“章回小说”那样提供一个“目录”。用户只要在“关注的目录条”中任意选中几个字两个相关区域就会立刻同步跳转到“窗口”顶部。那样就方便多了。操作“目录”就是把2个文本中有特别意义的行滚动到窗口的第1行后面简称“顶行”方便用户观察、分析。怎样创建“目录”先介绍几个要用的“工具”一、 当前在窗口顶行的是文本内容的第几行 lngVPoslngVPos SendMessage(RT1.hwnd, EM_GETFIRSTVISIBLELINE, 0, ByVal 0) 其中 RT1 是文本框。二、 指定位置s的字在文本内容里是第几行NewLine例如文本 Text1200个字中有1个词“亮眼”全文唯一要知道它是在文本第几行跟它现在是否看得见无关先要查明它的“位置”是第几个字ssInStr(1,Txt1,亮眼) ★在博文后面“操作目录的代码”里“亮眼”对应于变量 hh。然后算出“亮眼”在第几行NewLineNewLine RT1.GetLineFromChar(s)三、当需要把含这个“亮眼”词的行滚动到窗口顶行时文本应该要滚动的“行数”lngVDifflngVDiff NewLine - lngVPos四、让文本在文本框RT1里滚动 lngVDiff 行的滚动命令SendMessage RT1.hwnd, EM_LINESCROLL, 0, ByVal lngVDiff 最后实现目标说明一、关于 SendMessage 、GetLineFromChar(s) 和 InStr(1,Txt1,亮眼) 这三个“命令”请自己查看相关的资料并注意2个“常数” EM_GETFIRSTVISIBLELINE 和 EM_LINESCROLL 的意义。二、本文中所有的“第几行”是从文本内容在控件里不是窗口的首行算起见。文本无论怎样滚动各行的内容都是不变的。例如如果“亮”字是在第3行第12个那么无论文本怎样滚动它总在第3行第12个即使它暂时看不见。我们的目标是把各次“开始编辑”的行即由“左右相同”转变为“左右不同”的行滚动到“可见第一行”或者第二行。第二行更好可以让用户确信这是差异的开始见图。看来问题的关键是每次滚动需要确定1个“在【需要滚动到窗口顶部的行】中存在、并且在全文中独有的”字符串。★“唯一的关键字符串”我在“CSDN网站”和“BCCN网站”发表过题为《文本比对程序设计--按‘求同存异’来梳理文本用‘反转的文本为‘状态数组’充值》的文章。里面介绍了可以获取“每一次编辑的起始行号QS()和连续行数CD()”的方法。在这里可以用到的是“起始行号QS()”。当然左端显示“ 85 ”的行在文本里的行数肯定超过 85。利用这两组数据就可以建立“目录”和操作“目录”了文末附上的3个过程的代码很短我实际使用的可以供读者参考。要编制这个程序还有几个必须的环节1 最重要的“比对算法”在本文中提到的、在本网站发表过的博文中有详细的叙述。2 利用上一环节中得到的数据QS()和CD(),给相应的行加上“”、“-”、“”标志。插入“///////”行。3 利用行首的“”、“-”、“”标志以及文本中的 Added 等标志给相关的行设置彩色高亮。4 操作“垂直滚动条”时的同步滚动。如果要运行我上传的“带目录的比对程序”需要在系统中注册2个 OCX 文件COMDLG32.OCX 和 RICHTX32.OCXPrivate Sub DiSan() 建立目录文本 参考插图。 Dim cha$, sha$, cuo$, mn%, Txt2new$, k$, sp$, xu$ sp String(25, )项目条之间的空行 cha Added 新增 sha Deleted 删除 cuo Changed 更换 Txt2new 编辑位置目录 vbCrLf 有5个空格用来退出。 mn 1第mn次编辑 Do xu Left$(mn , 3) k Left$(CD(0, mn) --- CD(1, mn) , 11) _ ------ Left$(Trim$(Str$(QS(1, mn) - 1)) , 3) vbCrLf sp ★“QS(1, mn)” 表示编辑后文本的第mn次编辑的起始行的行号 “-1”表示“上一行” ★ 关键数据是每个目录条的“最后5个字符” If CD(0, mn) 0 And CD(1, mn) 0 Then Txt2new Txt2new xu cuo k vbCrLf更换 ElseIf CD(1, mn) 0 Then Txt2new Txt2new xu sha k vbCrLf删除 Else Txt2new Txt2new xu cha k vbCrLf新增 End If mn mn 1 Loop Until mn mnMAX RT3.Text Txt2new RT3 是目录文本框 End Sub 操作目录 Private Sub RT3_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim txt3$, hh$, a, s2, s3 If RT3.SelLength 0 Then Exit Sub a RT3.SelStart 1 txt3 RT3.Text 找“行尾”的“回车”位置 s3 InStr(a, txt3, vbCrLf) 如果行尾是5个空格就退出。 If Mid$(txt3, s3 - 5, 5) Then Exit Sub ★标题和空白行的最后5个字都是空格 hh vbCrLf Mid$(txt3, s3 - 5, 5) ★“回车”加上目录条行尾的5个字符就成了“编辑后文本RT2”的唯一关键词行号。 txt2 RT2.Text s2 InStr(1, txt2, hh) 2 在编辑后文本RT2里寻找“唯一的关键词” NewLine RT2.GetLineFromChar(s2) NewLine是公共变量需要滚动到窗口顶行的内部行号。 Tong12 调用“滚动”过程送去 NewLine 的值。实现滚动。 DoEvents End Sub Public Sub Tong12() 被“操作目录”过程调用 ★NewLine是公共变量由调用Tong12的过程送来的、 “要滚动到窗口顶部的行”的内部行号 RT1是编辑前文本框RT2是编辑后文本框 lngVPos1 SendMessage(RT1.hwnd, EM_GETFIRSTVISIBLELINE, 0, ByVal 0) DoEvents lngVDiff NewLine - lngVPos1 If lngVDiff 0 Then SendMessage RT1.hwnd, EM_LINESCROLL, 0, ByVal lngVDiff End If DoEvents lngVPos2 SendMessage(RT2.hwnd, EM_GETFIRSTVISIBLELINE, 0, ByVal 0) DoEvents lngVDiff NewLine - lngVPos2 If lngVDiff 0 Then SendMessage RT2.hwnd, EM_LINESCROLL, 0, ByVal lngVDiff End If DoEvents End SubMDLG32.OCX 和 RICHTX32.OCX

相关新闻

第 7 章 舵机控制的高级话题 速度曲线、扭矩管理、通信可靠性、寿命维护——那些规格书不会告诉你的真相

第 7 章 舵机控制的高级话题 速度曲线、扭矩管理、通信可靠性、寿命维护——那些规格书不会告诉你的真相

上一节:第 6 章 BusLinker舵机控制器开发 从20Hz到100Hz,串口通信的血泪史 第二部分:串口舵机——从协议到实战 第 7 章 舵机控制的高级话题 速度曲线、扭矩管理、通信可靠性、寿命维护——那些规格书不会告诉你的真相 前两章讲了怎么让舵…

2026/8/8 12:11:59 阅读更多 →
利用 Redis 实现每周热评,简直无敌

利用 Redis 实现每周热评,简直无敌

做每周热议,应该用缓存来做,如果直接查库的话,会对数据库造成压力。用缓存做的话,用Redis 来做缓存的话比较合适一点。 ## 利用Redsi 添加 数据命令 ## day:1 指的是在1号的时候 post:1 第一篇文章添加了 10 条评论。 #后面 6 pos…

2026/8/8 12:13:30 阅读更多 →
BDNF、EGF、IL10、IL6、IL6R、MCP1、SOD、TH 八因子 CBA 流式多因子 Panel—— 融合神经修复、氧化应激、中枢炎症多维通路,搭建神经损伤一体化生物标志物检测方案

BDNF、EGF、IL10、IL6、IL6R、MCP1、SOD、TH 八因子 CBA 流式多因子 Panel—— 融合神经修复、氧化应激、中枢炎症多维通路,搭建神经损伤一体化生物标志物检测方案

神经退行性疾病、脑缺血、创伤性脑损伤、神经炎症领域研究,同时涉及神经营养重塑、氧化应激损伤、中枢炎症浸润三大交互通路,BDNF、TH 代表神经细胞存活与多巴胺能神经元功能;SOD 反映机体抗氧化能力;EGF 调控胶质、血管组织修复&…

2026/8/8 13:09:00 阅读更多 →

最新新闻

Prompt Optimizer Skill:从AI编程助手到工程化协作的进阶指南

Prompt Optimizer Skill:从AI编程助手到工程化协作的进阶指南

1. 从“咒语”到“技能”:为什么我们需要Prompt Optimizer Skill?如果你最近在折腾Claude Code或者Codex这类AI编程助手,大概率会听到一个词:Skill。这玩意儿听起来有点玄乎,像是游戏里的“技能点”,又像是…

2026/8/8 14:04:24 阅读更多 →
模型蒸馏实战:原理、代码与何时应避免这条“捷径”

模型蒸馏实战:原理、代码与何时应避免这条“捷径”

最近在技术圈里,关于“模型蒸馏”的讨论热度不减。很多团队在追求模型轻量化、部署便捷化的过程中,往往会优先考虑这条看似高效的“捷径”。然而,这条路径真的适合所有业务场景吗?当我们深入思考技术选型与长期工程价值的平衡时&a…

2026/8/8 14:04:24 阅读更多 →
LeetDown终极指南:解锁经典iOS设备的降级自由

LeetDown终极指南:解锁经典iOS设备的降级自由

LeetDown终极指南:解锁经典iOS设备的降级自由 【免费下载链接】LeetDown a macOS app that downgrades A6 and A7 iDevices to OTA signed firmwares 项目地址: https://gitcode.com/gh_mirrors/le/LeetDown 你是否曾为iPhone 5或iPad Air在最新iOS系统上运行…

2026/8/8 14:04:24 阅读更多 →
如何免费解锁Microsoft 365完整功能的终极指南:Ohook激活工具详解

如何免费解锁Microsoft 365完整功能的终极指南:Ohook激活工具详解

如何免费解锁Microsoft 365完整功能的终极指南:Ohook激活工具详解 【免费下载链接】ohook An universal Office "activation" hook with main focus of enabling full functionality of subscription editions 项目地址: https://gitcode.com/gh_mirror…

2026/8/8 14:04:24 阅读更多 →
Pi AI 智能体框架:极简命令行如何重塑 AI 自动化工作流

Pi AI 智能体框架:极简命令行如何重塑 AI 自动化工作流

你有没有遇到过那种情况:一个工具,功能列表长得能写满一页纸,但真正用起来,光是搞懂那些按钮是干嘛的,就得花上半天。或者,一个框架,号称能解决所有问题,但为了让它跑起来&#xff0…

2026/8/8 14:04:24 阅读更多 →
C++控制台游戏开发:三种运行时动态调整字体大小的实战方法

C++控制台游戏开发:三种运行时动态调整字体大小的实战方法

1. 项目概述:为什么控制台字体大小对C游戏开发如此重要? 如果你正在用C写控制台游戏,无论是贪吃蛇、俄罗斯方块,还是更复杂的RPG或Roguelike,你很可能已经遇到了一个看似微小却极其影响体验的问题:控制台里…

2026/8/8 14:03:23 阅读更多 →

日新闻

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

当下AI应用飞速普及,无数企业下场搭建智能体系统,可落地阶段难题接踵而至:上下文无限堆积频繁爆栈、AI工具调用准确率低下、Token成本居高不下、企业数据权限混乱暗藏安全隐患……很多团队卡在架构搭建环节,空有前沿技术概念&…

2026/8/8 0:00:07 阅读更多 →
PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码 【免费下载链接】php-qrcode A PHP QR Code generator and reader with a user-friendly API. 项目地址: https://gitcode.com/gh_mirrors/ph/php-qrcode 在当今数字时代,二维码已…

2026/8/8 0:00:08 阅读更多 →
UniApp微信小程序隐私保护组件开发:从原理到实战

UniApp微信小程序隐私保护组件开发:从原理到实战

1. 项目缘起:为什么我们需要一个隐私保护通用组件?最近在维护一个基于uniapp开发的微信小程序矩阵时,我遇到了一个非常棘手的问题。随着平台对用户隐私保护的要求越来越严格,几乎每一个新版本发布,或者在某些特定机型&…

2026/8/8 0:00:08 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/8 8:58:26 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/7 23:24:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/7 17:02:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/7 23:54:54 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/7 17:02:36 阅读更多 →