📄 frmmain.pas
字号:
//---------------------------------------------------
//www.zq1863.com
//---------------------------------------------------
unit frmMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, ComCtrls, Menus;
type
TForm1 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Splitter1: TSplitter;
Panel3: TPanel;
Memo1: TMemo;
lvRet: TListView;
Panel5: TPanel;
Panel6: TPanel;
Label1: TLabel;
txtExpression: TEdit;
btnExec: TButton;
Memo2: TMemo;
CheckBox4: TCheckBox;
CheckBox5: TCheckBox;
CheckBox7: TCheckBox;
CheckBox8: TCheckBox;
CheckBox9: TCheckBox;
CheckBox12: TCheckBox;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
CheckBox6: TCheckBox;
CheckBox10: TCheckBox;
CheckBox11: TCheckBox;
Label2: TLabel;
txtReplace: TEdit;
btnExpReplace: TButton;
pm_lvRet: TPopupMenu;
N1: TMenuItem;
Panel7: TPanel;
Panel9: TPanel;
chkModifierS: TCheckBox;
chkModifierG: TCheckBox;
chkModifierR: TCheckBox;
procedure Button1Click(Sender: TObject);
procedure btnExecClick(Sender: TObject);
procedure btnTrackMobileClick(Sender: TObject);
procedure lvRetChange(Sender: TObject; Item: TListItem;
Change: TItemChange);
procedure FormShow(Sender: TObject);
procedure btnExpReplaceClick(Sender: TObject);
procedure N1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses
untClip,
untTools,
untListView,
untDType,
untString,
RegExpr;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
RegExpr: TRegExpr;
begin
{
if chkDemo.Checked=true then
begin
Memo1.Clear;
Memo1.Lines.Add('"ssf12d好3422222222,342?" ');
Memo1.Lines.Add('"大富翁论坛" ');
Memo1.Lines.Add('"喹,23 ?" ');
Memo1.Lines.Add('上面的都要搜索出来,下面的则不要出来 ');
Memo1.Lines.Add('"342kkkkkkkkkhoooo" ');
end;
Memo2.Clear;
RegExpr:= TRegExpr.Create;
RegExpr.Expression:= '([\xB0-\xF7][\xA1-\xFE])+ ';
if RegExpr.Exec(Memo1.Text) then
repeat
Memo2.Lines.Add(RegExpr.Match[1]);
until not RegExpr.ExecNext;
RegExpr.Free;
}
end;
procedure TForm1.btnExecClick(Sender: TObject);
var
i, iIndex: integer;
RegExpr: TRegExpr;
NewColumn: TListColumn;
ListItem: TListItem;
strBuffer, istr: string;
begin
if Memo1.Text='' then exit;
if txtExpression.Text='' then exit;
lvRet.Columns.Clear;
lvRet.Items.Clear;
RegExpr:= TRegExpr.Create;
RegExpr.ModifierS:= chkModifierS.checked;
RegExpr.ModifierG:= chkModifierG.checked;
RegExpr.ModifierR:= chkModifierR.checked;
RegExpr.Expression:= txtExpression.Text;
try
RegExpr.Expression := txtExpression.Text;
//strBuffer:= copy(Memo1.Text, 1, strtoint(txtMax.Text)*1024);
if RegExpr.Exec (Memo1.Text) then
begin
NewColumn := lvRet.Columns.Add;
NewColumn.Caption := '序号';
//生成列标题
for i:= 0 to RegExpr.SubExprMatchCount do
begin
NewColumn := lvRet.Columns.Add;
NewColumn.Caption := '匹配子项'+Format('%2d', [i]);;
end;
//生成列数据
REPEAT
iIndex:= iIndex+1;
caption:= '匹配: '+inttostr(iIndex);
Application.ProcessMessages;
//具体情况
ListItem:= lvRet.Items.Add;
ListItem.Caption := inttostr(iIndex);
for i:= 0 to RegExpr.SubExprMatchCount do
begin
ListItem.SubItems.Add(RegExpr.Match[i]);
end;
//if iIndex>strtoint(Edit1.Text) then break;
UNTIL not RegExpr.ExecNext;
end;
finally
RegExpr.Free;
end;
end;
//提取手机号码
procedure TForm1.btnTrackMobileClick(Sender: TObject);
var
i: integer;
OutItems: TStrings;
NewColumn: TListColumn;
ListItem: TListItem;
begin
{
lvRet.Columns.Clear;
lvRet.Items.Clear;
OutItems:= TStringList.Create;
TrackMobile(Memo1.Text, strtoint(txtMobileLen.Text), OutItems);
NewColumn := lvRet.Columns.Add;
NewColumn.Caption := '序号';
NewColumn := lvRet.Columns.Add;
NewColumn.Caption := '号码';
NewColumn := lvRet.Columns.Add;
NewColumn.Caption := '起始位置';
NewColumn := lvRet.Columns.Add;
NewColumn.Caption := '长度';
for i:= 0 to OutItems.Count-1 do
begin
//显示匹配索引
ListItem:= lvRet.Items.Add;
ListItem.Caption := inttostr(i+1);
//显示号码
ListItem.SubItems.Add(GetStringFieldValue('~', OutItems.Strings[i], 0));
//显示起始位置
ListItem.SubItems.Add(GetStringFieldValue('~', OutItems.Strings[i], 1));
//显示长度
ListItem.SubItems.Add(GetStringFieldValue('~', OutItems.Strings[i], 2));
//显示匹配串
ListItem.SubItems.Add(GetStringFieldValue('~', OutItems.Strings[i], 3));
end;
OutItems.Destroy;
}
end;
procedure TForm1.lvRetChange(Sender: TObject; Item: TListItem;
Change: TItemChange);
var
i: integer;
strText: string;
begin
//txtExpression.Text:='';
Memo2.Clear;
strText:= '';
for i:= 0 to Item.SubItems.Count-1 do
begin
//txtExpression.Text:= txtExpression.Text+Item.SubItems.Strings[i]+'~';
//strText:= strText+Item.SubItems.Strings[i]+'~';
Memo2.Lines.Add('【'+FormatInt(i, 4)+'】'+Item.SubItems.Strings[i]);
end;
if Item.SubItems.Count>0 then
//Memo2.Lines.Add(Item.SubItems.Strings[0]);
end;
procedure TForm1.FormShow(Sender: TObject);
begin
//Memo1.Clear;
//Memo1.Lines.LoadFromFile(GetAppPath()+'DATA\TEST.TXT');
end;
procedure TForm1.btnExpReplaceClick(Sender: TObject);
var
RegExpr: TRegExpr;
begin
RegExpr:= TRegExpr.Create;
RegExpr.ModifierS:= chkModifierS.checked;
RegExpr.ModifierG:= chkModifierG.checked;
RegExpr.ModifierR:= chkModifierR.checked;
RegExpr.Expression:= txtExpression.Text;
Memo1.Text:= RegExpr.Replace(Memo1.Text, txtReplace.Text, true);
end;
procedure TForm1.N1Click(Sender: TObject);
var
i: integer;
strValue: string;
Lines: TStringList;
begin
if lvRet.Items.Count<1 then exit;
strValue:= GetAppPath()+'LV.TXT';
SaveListView(lvRet, strValue);
strValue:= TextFromFile(strValue);
SetTextInClipBoard(strValue);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -