📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Mask,
XPMan;
type
TForm1 = class(TForm)
Panel_pyw_dj: TPanel;
Edit_wjLJ: TComboBox;
Panel51: TPanel;
Edit_tzFW: TMaskEdit;
Edit_tzLX: TComboBox;
Button1: TButton;
Panel1: TPanel;
Edit_zmWZ: TEdit;
Panel2: TPanel;
Panel3: TPanel;
Edit_zmSJ: TMaskEdit;
Edit_tzSJ: TMaskEdit;
Button2: TButton;
procedure Edit_wjLJCloseUp(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure onKeyPress_Null(Sender: TObject; var Key: Char);
procedure Edit_tzSJKeyPress(Sender: TObject; var Key: Char);
procedure Edit_tzSJKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
stlTemp :TStringList;
implementation
uses
Func_Add;
{$R *.dfm}
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
stlTemp.Free;
end;
procedure getTimeInt(
const oldTime:string;
var intHour,intMinu,intSecd,intMill:integer);
var
strTemp :string;
begin
intMill := strtointDef(trim(strnget(oldTime, ',', 2, '')), 0);
strTemp := trim(strnget(oldTime, ',', 1, ''));
intSecd := strtointDef(trim(strnget(strTemp, ':', 3, '')), 0);
intMinu := strtointDef(trim(strnget(strTemp, ':', 2, '')), 0);
intHour := strtointDef(trim(strnget(strTemp, ':', 1, '')), 0);
end;
procedure TForm1.onKeyPress_Null(Sender: TObject; var Key: Char);
begin
if(key in[#9,#13]) then else key := #0;
end;
procedure TForm1.Edit_tzSJKeyPress(Sender: TObject; var Key: Char);
begin
//
end;
procedure TForm1.Edit_tzSJKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
in1Hour,in1Minu,in1Secd,in1Mill :integer;
in2Hour,in2Minu,in2Secd,in2Mill :integer;
strTemp,strNext :string;
begin
getTimeInt(Edit_zmSJ.Text, in1Hour,in1Minu,in1Secd,in1Mill); strTemp := format('%0.2d:%0.2d:%0.2d,%0.3d',[in1Hour,in1Minu,in1Secd,in1Mill]);
getTimeInt(Edit_tzSJ.Text, in2Hour,in2Minu,in2Secd,in2Mill); strNext := format('%0.2d:%0.2d:%0.2d,%0.3d',[in2Hour,in2Minu,in2Secd,in2Mill]);
in1Mill := in1Mill +(in1Secd +(in1Minu*60) +(in1Hour*3600)) *1000;
in2Mill := in2Mill +(in2Secd +(in2Minu*60) +(in2Hour*3600)) *1000;
Edit_tzLX.ItemIndex := integer(in1Mill < in2Mill);
in1Mill := abs(in1Mill -in2Mill);
in1Secd :=(in1Mill div 1000) mod 60;
in1Minu :=(in1Mill div 1000) div 60;
in1Mill :=(in1Mill mod 1000);
Edit_tzFW.Text := format('%0.3d:%0.2d.%0.3d',[in1Minu, in1Secd, in1Mill]);
end;
procedure TForm1.Edit_wjLJCloseUp(Sender: TObject);
const
FiltSRT :string = '字幕文件(*.srt)|*.srt';
var
strTemp :string;
intLoop,intErro :integer;
begin
if(Sender <> nil) then
begin
strTemp := strOnly(Edit_wjLJ.Hint, ExtractFilePath(Application.ExeName));
if not Diag_OpenFiles(strTemp, FiltSRT+'|'+FiltAll) then exit;
end else
if(Edit_wjLJ.Text = strNull) then exit else strTemp := Edit_wjLJ.Text;
Edit_wjLJ.Clear;
Edit_wjLJ.Items.Add(strTemp);
Edit_wjLJ.ItemIndex := 0;
Edit_wjLJ.Hint := ExtractFilePath(strTemp);
{}
case (stlTemp=nil) of
true: stlTemp := TStringList.Create;
else stlTemp.Clear;
end;
stlTemp.LoadFromFile(strTemp);
intErro := 0;
for intLoop:=0 to stlTemp.Count-1 do
begin
if(stlTemp.Strings[intLoop] = strNull) then continue;
if(pos(':', stlTemp.Strings[intLoop]) = 0)
or(pos(',', stlTemp.Strings[intLoop]) = 0)
or(pos('-->', stlTemp.Strings[intLoop]) = 0) then
begin
inc(intErro);
if(intErro > 10) then exit else continue;
end;
Edit_zmSJ.Text := trim(strnget(stlTemp.Strings[intLoop], '-->', 1, ''));
Edit_zmWZ.Text := stlTemp.Strings[intLoop+1];
break;
end;
end;
function newTimeStr(
const oldTime:string;
const newMinu,
newSecd,
newMill:integer;
const typeFlg:boolean=true):string;
var
intHour,intMinu,intSecd,intMill :integer;
begin{typeFlg:超前迨后标志}
getTimeInt(oldTime, intHour,intMinu,intSecd,intMill);
if(typeFlg = true) then
begin{迨后}
intMill := intMill +newMill;
intSecd := intSecd +newSecd +(intMill div 1000);
intMinu := intMinu +newMinu +(intSecd div 60);
intHour := intHour +(intMinu div 60);
end else
begin{超前}
intMill := intMill -newMill;
intSecd := intSecd -newSecd +intTrue((intMill div 1000)-1, 0, (intMill<0));
intMinu := intMinu -newMinu +intTrue((intSecd div 60)-1, 0, (intSecd<0));
intHour := intHour +intTrue((intMinu div 60)-1, 0, (intMinu<0));
intMill :=(intMill mod 1000);
if(intMill < 0) then intMill :=1000 +(intMill mod 1000);
if(intSecd < 0) then intSecd := 60 +(intSecd mod 60);
if(intMinu < 0) then intMinu := 60 +(intMinu mod 60);
if(intHour < 0) then intHour := 0;
end;
intSecd :=(intSecd mod 60);
intMinu :=(intMinu mod 60);
intMill :=(intMill mod 1000);
result := format('%0.2d:%0.2d:%0.2d,%0.3d',[intHour, intMinu, intSecd, intMill]);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
intLoop,intErro :integer;
intMinu,intSecd,intMill :integer;
strTemp :string;
flgTem :boolean;
begin
if(Edit_wjLJ.Text = strNull) then exit;
intMill := strtointDef(trim(strnget(Edit_tzFW.Text, '.', 2, '')), 0);
strTemp := trim(strnget(Edit_tzFW.Text, '.', 1, ''));
intSecd := strtointDef(trim(strnget(strTemp, ':', 2, '')), 0);
intMinu := strtointDef(trim(strnget(strTemp, ':', 1, '')), 0);
if(intMinu +intSecd +intMill = 0) then exit;
flgTem :=(Edit_tzLX.Text='迨后');
intErro := 0;
for intLoop:=0 to stlTemp.Count-1 do
begin
if(stlTemp.Strings[intLoop] = strNull) then continue;
if(pos(':', stlTemp.Strings[intLoop]) = 0)
or(pos(',', stlTemp.Strings[intLoop]) = 0)
or(pos('-->', stlTemp.Strings[intLoop]) = 0) then
begin
inc(intErro);
if(intErro > 10) then exit else continue;
end;
intErro := 0;
stlTemp.Strings[intLoop] := format('%s --> %s', [
newTimeStr(strnget(stlTemp.Strings[intLoop], ' --> ', 1, ''), intMinu,intSecd,intMill, flgTem),
newTimeStr(strnget(stlTemp.Strings[intLoop], ' --> ', 2, ''), intMinu,intSecd,intMill, flgTem)]);
end;
strTemp := ChangeFileExt(Edit_wjLJ.Text, '.bak');
if not fileExists(strTemp) then RenameFile(Edit_wjLJ.Text, strTemp);
stlTemp.SaveToFile(Edit_wjLJ.Text);
showMessage('更新完毕!');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin{重新载入}
Edit_wjLJCloseUp(nil);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -