Материалы сайта
Это интересно
Языки программирования
unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) FindDialog1: TFindDialog; ReplaceDialog1: TReplaceDialog; Button1: TButton; Button2: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FindDialog1Find(Sender: TObject); procedure ReplaceDialog1Replace(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin FindDialog1.Execute; end; procedure TForm1.Button2Click(Sender: TObject); begin ReplaceDialog1.Execute; end; procedure TForm1.FindDialog1Find(Sender: TObject); VAR Buff, P, FT: Pchar; BuffLen : Word; begin WITH Sender AS TFindDialog DO BEGIN GetMem (FT, Length (FindText) + 1); StrPCopy (FT, FindText); BuffLen := Memo1.GetTextLen + 1; GetMem (Buff, BuffLen); Memo1.GetTextBuf (Buff, BuffLen); P:= Buff + Memo1.SelStart + Memo1.SelLength; P:= StrPos (P, FT); IF P = NIL THEN MessageBeep (0) ELSE BEGIN Memo1.SelStart:= P-Buff; Memo1.SelLength:= Length (FindText); END; FreeMem (FT, Length (FindText) + 1); FreeMem (Buff, BuffLen); END; end; procedure TForm1.ReplaceDialog1Replace(Sender: TObject); begin WITH Sender AS TReplaceDialog DO WHILE True DO BEGIN IF Memo1.SelText <> FindText THEN FindDialog1Find (Sender); IF Memo1.SelLength = 0 THEN Break; Memo1.SelText:= ReplaceText; IF NOT (frReplaceAll IN Options) THEN Break; END; end; end.