各位,我今天好郁闷,碰到了难题!就是我现在在用delphi仿造记事本编一个类似的记事本程序。在我编到查找与替换那一个方块时(我没有用它原有的dialogs控件里的查找与替换框编),我不知道怎么去编“全部查找与替换”,我想问一下有没有什么函数或别的方法能找到输入在richedit控件中的文本开头和结尾?希望大家能帮帮我,万分感谢!!
????????????????????

解决方案 »

  1.   

    用正则表达式可以全部查找和替换。再笨点的话用POS逐个处理。
      

  2.   

    还有StringReplace可以用于全部替换
      

  3.   

      在 RichEdit 中实现代码着色    
        
    在 RichEdit 中实现代码着色下面的代码将以指定颜色对一些指定单词着色,就象delphi中的代码编辑器那样。procedure CodeColors(Form : TForm;Style : String; RichE : TRichedit;InVisible : Boolean);const// 符号...CodeC1: array[0..20] of String = ('#','$','(',')','*',',','.','/',':',';','[',']','{','}','<','>','-','=','+','''','@');// 保留字...CodeC2: array[0..44] of String = ('and','as','begin','case','char','class','const','downto','else','end','except','finally','for','forward','function','if','implementation','interface','is','nil','or','private','procedure','public','raise','repeat','string','to','try','type','unit','uses','var','while','external','stdcall','do','until','array','of','in','shr','shl','cos','div');varFoundAt : LongInt;StartPos, ToEnd, i : integer;OldCap,T : String;FontC, BackC, C1, C2 ,C3 ,strC, strC1 : TColor;beginOldCap := Form.Caption;with RichE dobeginFont.Name := 'Courier New';Font.Size := 10;if WordWrap then WordWrap := false;SelectAll;SelAttributes.color := clBlack;SelAttributes.Style := [];SelStart := 0;if InVisible thenbeginVisible := False;Form.Caption := 'Executing Code Coloring...';end;end;BackC := clWhite; FontC := clBlack;C1 := clBlack; C2 := clBlack; C3 := clBlack;strC := clBlue; strC1 := clSilver;if Style = 'Twilight' thenbeginBackC := clBlack; FontC := clWhite;C1 := clLime; C2 := clSilver; C3 := clAqua;strC := clYellow; strC1 := clRed;endelseif Style = 'Default' thenbeginBackC := clWhite; FontC := clBlack;C1 := clTeal; C2 := clMaroon; C3 := clBlue;strC := clMaroon; strC1 := clSilver;endelseif Style = 'Ocean' thenbeginBackC := $00FFFF80; FontC := clBlack;C1 := clMaroon; C2 := clBlack; C3 := clBlue;strC := clTeal; strC1 := clBlack;endelseif Style = 'Classic' thenbeginBackC := clNavy; FontC := clYellow;C1 := clLime; C2 := clSilver; C3 := clWhite;strC := clAqua; strC1 := clSilver;endelsebeginwith RichE dobeginT := '{'+Style+' = Invalid Style [Default,Classic,Twilight,Ocean] ONLY! }';Lines.Insert(0,T);StartPos := 0;ToEnd := Length(Text) - StartPos;FoundAt := FindText(T, StartPos, ToEnd, [stWholeWord]);SelStart := FoundAt;SelLength := Length(T);SelAttributes.Color := clRed;SelAttributes.Style := [fsBold];StartPos := 0;ToEnd := Length(Text) - StartPos;FoundAt := FindText('ONLY!', StartPos, ToEnd, [stWholeWord]);SelStart := FoundAt;SelLength := 4;SelAttributes.Color := clRed;SelAttributes.Style := [fsBold,fsUnderLine];end;end;RichE.SelectAll;RichE.color := BackC;RichE.SelAttributes.color := FontC;for i := 0 to 100 dobeginwith RichE dobeginStartPos := 0;ToEnd := Length(Text) - StartPos;FoundAt := FindText(IntToStr(i), StartPos, ToEnd, [stWholeWord]);while (FoundAt <> -1) dobeginSelStart := FoundAt;SelLength := Length(IntToStr(i));SelAttributes.Color := C1;SelAttributes.Style := [];StartPos := FoundAt + Length(IntToStr(i));FoundAt := FindText(IntToStr(i), StartPos, ToEnd, [stWholeWord]);end;end;end;for i := 0 to 20 dobeginwith RichE dobeginStartPos := 0;ToEnd := Length(Text) - StartPos;FoundAt := FindText(CodeC1[i], StartPos, ToEnd, []);while (FoundAt <> -1) dobeginSelStart := FoundAt;SelLength := Length(CodeC1[i]);SelAttributes.Color := C2;StartPos := FoundAt + Length(CodeC1[i]);FoundAt := FindText(CodeC1[i], StartPos, ToEnd, []);end;end;end;for i := 0 to 44 dobeginwith RichE dobeginStartPos := 0;ToEnd := Length(Text) - StartPos;FoundAt := FindText(CodeC2[i], StartPos, ToEnd, [stWholeWord]);while (FoundAt <> -1) dobeginSelStart := FoundAt;SelLength := Length(CodeC2[i]);SelAttributes.Color := C3;SelAttributes.Style := [fsBold];StartPos := FoundAt + Length(CodeC2[i]);FoundAt := FindText(CodeC2[i], StartPos, ToEnd, [stWholeWord]);end;end;end;Startpos := 0;with RichE dobeginFoundAt := FindText('''', StartPos, Length(Text), []);while FoundAt <> -1 dobeginSelStart := FoundAt;Startpos := FoundAt+1;FoundAt := FindText('''', StartPos, Length(Text), []);if FoundAt <> -1 thenbeginSelLength := (FoundAt - selstart)+1;SelAttributes.Style := [];SelAttributes.Color := strC;StartPos := FoundAt+1;FoundAt := FindText('''', StartPos, Length(Text), []);end;end;end;Startpos := 0;with RichE dobeginFoundAt := FindText('{', StartPos, Length(Text), []);while FoundAt <> -1 dobeginSelStart := FoundAt;Startpos := FoundAt+1;FoundAt := FindText('}', StartPos, Length(Text), []);if FoundAt <> -1 thenbeginSelLength := (FoundAt - selstart)+1;SelAttributes.Style := [];SelAttributes.Color := strC1;StartPos := FoundAt+1;FoundAt := FindText('{', StartPos, Length(Text), []);end;end;end;if InVisible thenbeginRichE.Visible := True;Form.Caption := OldCap;end;RichE.SelStart := 0;end;