300分求解SyntaxMemo的WordWrap问题。(300分)

  • 主题发起人 主题发起人 WadeZhao
  • 开始时间 开始时间
W

WadeZhao

Unregistered / Unconfirmed
GUEST, unregistred user!
试过了太多的MEMO和RICHEDIT组件,都不能满足我的要求。
因为要求支持WordWrap,所以mwEdit和SynEdit及GSMemo之类就淘汰了
因为要有搜索功能,而RICHEDIT系列的组件好像这方面有问题,有时中文会出现查不到的情况,也被淘汰了……
而且RichEdit系列的SelStart也很怪,不准,具体就不说了,总之无法解决。
试来试去还是SyntaxMemo好,遗憾的是这东西太久没继续开发了,有一个问题无法解决:
打开较大的中文无回车符的文本会出问题。
如果有一个1M的文本文件,内容就是512个“中”,那么这个文件用PlusMemo和DreamMemo装入肯定
就乱掉了,显示不全。而用SyntaxMemo还可以装入,但是如果设成WordWrap就会出错,显然
SyntaxMemo无法处理太长的中文字符串。但是我相信一定可以解决的,因为HomeSite就用
的是SyntaxMemo,它的作者显然自己做了修改,我说的问题在HomeSite中不存在。
不知有没有高手超高手能解决这个问题?这个问题我在网上问了多半年了,没有得到任何有
建设性的意见 :(
 
你给我SyntaxMemo控件的源代码,我试试看!
NeutronBoy@sohu.com
本人开发过不少编辑类控件(都不成气候),希望能够帮助你!
 
已寄,先谢 :)
 
看源码,自己断词,重载 Windows 的 WordBreak !
 
抱歉,能说得再详细些么?
我想首先要解决的还不是WordWrap的问题,其实我第一个贴子说得不还不准,SyntaxMemo也装不下1M的没有回车和空格的中文文档,也就只能装一两百K而已,我试过装一个600K的完全没有任何任何换行标志的文本,即使WordWrap =False,也会出现红叉窗口……
 
给我发源码:mailto: ccdev@163.com
没有源码我无法判断原因所在。
 
已寄,谢谢 :)
 
答复:
无论如何是能通得过的。组件对于每行的固定回行列定位在 2048(_MAX_LINE_LEN),
最大文件长度:WORD ,这可能是你引起的原因,不过我在 WIN2000
下全部通得过(找一个 > 1M 的文档的确不容易!)。可以修改
TLine(SyntaxEd.pas) 结构的定义来满足你的要求。

TLine = record
lLength: WORD; ==========> 改大点试试看
lData: PChar;
lTokens: pByteArray;
end;

匆匆测试,因为能得过就没有继续,如果还有问题,再细看吧 ----------
组件不错!在此感谢。
 
学艺不精,学艺不精,原来解决如此简单,已分配分数,多谢多谢!NeutronDelphi兄也有20分辛苦分 :)
BTW,tSyntaxMemo是惟一一个支持WordWrap又稳定又能处理大文本没问题的类似Delphi IDE的Memo,谁能找到其他的我白送他100分,呵呵[8D]
 
后退
顶部