📄 creatcmd.dpr.~21~
字号:
program CreatCMD;
{$APPTYPE CONSOLE}
uses
SysUtils, Classes, Unicode;
var
str_nam,str_alb : string;
str_num : array[0..15] of string;
conf,src : TStringList;
fn,srci,output,dest : string;
srcn : widestring;
c : char;
wc : widechar;
ii,ni,nx,ie,ne,i : integer;
hup : boolean;
begin if(ParamCount>=3)then begin
fn := ExtractFileDir(ParamStr(0))+'\';
if ParamCount>3 then str_alb := ParamStr(4) else str_alb := '';
src := TStringList.Create;
conf := TStringList.Create;
conf.LoadFromFile(fn+ParamStr(1));
if(not fileexists(fn+ParamStr(2)))then begin halt(3);end;
src.LoadFromFile(fn+ParamStr(2));
srci := src.Text;
srcn := src.Text;
str_nam := ParamStr(3);
ii := Pos('[',srci)+1;
ni := Pos(' [[',srci)+2;// StrPosW(PWideChar(srcn),'[[');
ie := Pos(']',srci);
ne := Pos(']];',srci);// StrPosW(PWideChar(srcn),']];');
dest := StringReplace(conf.Text, '*n', str_nam, [rfReplaceAll]);
dest := StringReplace(dest, '*a', str_alb, [rfReplaceAll]);
dest := StringReplace(dest, '*f', fn, [rfReplaceAll]);
if ii=ie then begin writeln(' Err : No Data ! '); halt(1);end;
while((ie-ii)>6)do begin
if ni=ne then begin writeln(' Err : Out of Range ! '); halt(2);end;
for i:=0 to 15 do str_num[i] := '';
//First Section
c := srci[ii];
while((c<>',')and(c<>']'))do begin
if(c in['0'..'9'])then str_num[0] := str_num[0] + c;
inc(ii);
c := srci[ii];
end;inc(ii);
//Second Section
nx := 1;
c := srci[ni];
writeln(inttostr(ni));
writeln(srci[ni]);
while((nx<16)and(c<>']'))do begin
c := srci[ni];
hup := false;
while((c<>',')and(c<>']')and(not hup))do begin
if(c='"')then hup := not hup else begin
if(c<>'[')then str_num[nx] := str_num[nx] + c;
c := srci[ni];
end;
inc(ni);
end;
inc(nx);
end;inc(ni,2);
{
nx := 1;
wc := srcn[ni];
while((nx<=15)and(wc<>']'))do begin
hup := false;
while((wc<>',')and(wc<>']')and(not hup))do begin
if(wc='"')then hup := not hup else
str_num[nx] := str_num[nx] + wc;
inc(ni);
wc := srci[ni];
end;
inc(nx);
end;inc(ni,2);
}
output := dest;
str_num[5] := StringReplace(str_num[5], '?', '_', [rfReplaceAll]);
for i:=0 to 16 do output :=
StringReplace(output, '*'+inttostr(i), str_num[i], [rfReplaceAll]);
writeln(output);
end;
end;Halt(0);end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -