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.
Нашли опечатку? Выделите и нажмите CTRL+Enter