本文整理自网络,侵删。
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, RzButton, Vcl.ImgList,
Vcl.ExtCtrls, RzShellDialogs,
System.IOUtils, System.Types, Vcl.ComCtrls, RzListVw,
System.RegularExpressionsCore, RzCommon;
type
TForm1 = class(TForm)
btn1: TButton;
LabeledEdit1: TLabeledEdit;
lbledt1: TLabeledEdit;
btn2: TButton;
ImageList1: TImageList;
rzbtbtn1: TRzBitBtn;
RzSelectFolderDialog1: TRzSelectFolderDialog;
lst1: TRzListView;
lbl1: TLabel;
ini1: TRzRegIniFile;
lbl2: TLabel;
procedure rzbtbtn1Click(Sender: TObject);
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
FPath: string;
function replace(str, regx, replacement: string): string;
public
{ Public declarations }
procedure ControlEnable(AEnable: Boolean);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject);
var
item: TListItem;
begin
// lst1.items.BeginUpdate;
for item in lst1.Items do
begin
item.SubItems.Clear;
item.SubItems.Add(replace(item.Caption, LabeledEdit1.Text, lbledt1.Text))
end;
// lst1.items.EndUpdate;
end;
procedure TForm1.btn2Click(Sender: TObject);
var
vFiles: TStringDynArray;
vFile, vDest, vSrc: string;
vPath: string;
begin
// begin replace
ControlEnable(False);
vFiles := TDirectory.GetFiles(Self.FPath);
for vSrc in vFiles do
begin
lbl2.Caption := '重命名:' + vSrc;
vPath := ExtractFilePath(vSrc);
vFile := ExtractFileName(vSrc);
vDest := replace(vFile, LabeledEdit1.Text, lbledt1.Text);
if vFile = vDest then
Continue;
vDest := vPath + '\' + vDest;
try
TFile.Move(vSrc, vDest);
except
ShowMessage('文件:【' + vSrc + '】改名失败!');
end;
end;
// end
ControlEnable(true);
lst1.Items.BeginUpdate;
lst1.Items.Clear;
vFiles := TDirectory.GetFiles(Self.FPath);
for vFile in vFiles do
begin
lst1.Items.Add.Caption := ExtractFileName(vFile)
end;
lst1.Items.EndUpdate;
end;
procedure TForm1.ControlEnable(AEnable: Boolean);
begin
rzbtbtn1.Enabled := AEnable;
LabeledEdit1.Enabled := AEnable;
lbledt1.Enabled := AEnable;
btn1.Enabled := AEnable;
btn2.Enabled := AEnable;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ini1.WriteString('cfg', 'regx', LabeledEdit1.Text);
ini1.WriteString('cfg', 'rep', lbledt1.Text);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
LabeledEdit1.Text := ini1.ReadString('cfg', 'regx', LabeledEdit1.Text);
lbledt1.Text := ini1.ReadString('cfg', 'rep', lbledt1.Text);
end;
function TForm1.replace(str, regx, replacement: string): string;
var
reg: TPerlRegEx; // 声明正则表达式变量
begin
reg := TPerlRegEx.Create(); // 建立
reg.Subject := str; // 这是要替换的源字符串
reg.RegEx := regx; // 这是表达式, 在这里是准备替换掉的子串
reg.replacement := replacement;
reg.Options := [preCaseLess]; // 不区分大小的设定, 默认是区分的
reg.ReplaceAll; // 执行全部替换
Result := reg.Subject;
FreeAndNil(reg); // 或 reg.Free
end;
procedure TForm1.rzbtbtn1Click(Sender: TObject);
var
vFiles: TStringDynArray;
vFile: string;
begin
lst1.Items.BeginUpdate;
lst1.Items.Clear;
if RzSelectFolderDialog1.Execute then
begin
Self.FPath := RzSelectFolderDialog1.SelectedPathName;
lbl1.Caption := '当前目录:' + Self.FPath;
vFiles := TDirectory.GetFiles(Self.FPath);
for vFile in vFiles do
begin
lst1.Items.Add.Caption := ExtractFileName(vFile)
end;
end;
lst1.Items.EndUpdate;
end;
end.
相关阅读 >>
Delphi stringgrid 实例5 本例功能:字体修改为居中,红色,20号
Delphi ini文件操作 tinifile、tmeminifile
Delphi的组件选项卡(component palette)
更多相关阅读请进入《Delphi》频道 >>