高手请进:如何进行文本替换?(100分)

  • 主题发起人 主题发起人 sunsong
  • 开始时间 开始时间
S

sunsong

Unregistered / Unconfirmed
GUEST, unregistred user!
需求:
  不使用DELPHI的自带控件。
  1.能够在MEMO或者RICHEDIT中对文本进行替换。
  2.能直接对文本文件进行替换后保存。
 
The Delphi Magazine 杂志配套盘第 75 集中有多文件字符替换工具的源程序。
http://www.thedelphimagazine.com/disks/dmag75.zip
 
《D5开发人员指南》中有搜索的例程,可以参考一下
 
我想这个问题,自己稍微查一下参考书和实践一下就可以解决了。
 
能不能把关键的语句写出来?谢了
 
一个例子:
var
; FoundPos, InitPos: Integer;
begin
; {定初始位置:为Memo1中}
; InitPos := 0;
; //用Pos函数找到一个
; FoundPos := Pos ('你要找的字符串',
; ; Copy (Memo1.Text, InitPos + 1,Length (Memo1.Text) - InitPos));
; if FoundPos > 0 then
; begin
; ; {选中相关的文本}
; ; Memo1.SetFocus;
; ; Memo1.SelStart := InitPos + FoundPos - 1;
; ; Memo1.SelLength := Length (ReplaceDialog1.FindText);
; ; Memo1.SelText := '你要换的内容';
; end
; else
; begin
; ; MessageDlg ('没找到!', mtInformation, [mbOK], 0);
; end;
end;
 
to 杜宝:
谢谢你的源码,但是这只实现了查找的功能,如何替换呢?
 
老大,拜托看清楚!
; ; Memo1.SetFocus;
; ; Memo1.SelStart := InitPos + FoundPos - 1;
; ; Memo1.SelLength := Length (ReplaceDialog1.FindText);
; ; Memo1.SelText := '你要换的内容';
这不就是替换吗?
 
或者请用正则表达式吧,保证你头昏:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=635070
 
to :杜宝
我说过不用DELPHI的REPLACE对话框的,这样只能替换可视的文本。
 
倒!用Pos找到位置与对话框有什么关系???
是这句:
Memo1.SelLength := Length (ReplaceDialog1.FindText);?
改成:
Memo1.SelLength := Length ('你查找的内容');
 
To:杜宝:
你的办法只能解决可视的文本替换,即我的需求中的第一条。
我还需要对某一个文件(并不读取到MEMO或者RICHEDIT中)的内容进行替换。
 
难道这个问题真的太简单了???
 
老兄,拜托你勤劳一点好不好?
没看到这里吗?
;FoundPos := Pos ('你要找的字符串',
; ; Copy (Memo1.Text, InitPos + 1,Length (Memo1.Text) - InitPos));
; if FoundPos > 0
你只要循环移动InitPos的值,就可以从头找到尾了,
如果还觉得麻烦,加一个While到Pos找不到为止不就行了?
 
to :杜宝:
可能我说的不太明白
  我的主要需求是::对一个文件(并不在GUI中显示)中的内容进行读写,替换。。
我估计要用到流,而我感觉不好处理的地方就是这种替换(包括全文替换)
也就是说,能不能一个控件都不用,实现替换的功能???
  不知我这次有没有说清楚。。。。
  
 
靠!你自己就不会动手改吗?
大伙别理他[:(]
 
好了,我可能水平太差了, 多谢大家指点,分数已经分配。
特别感谢杜宝!
 
后退
顶部