parent
5edd6251c4
commit
d78a8a0f7c
|
|
@ -1547,9 +1547,13 @@ type TBBState =class //
|
||||||
|
|
||||||
end
|
end
|
||||||
type TTsfFileParser = class //Îļþ½âÎö
|
type TTsfFileParser = class //Îļþ½âÎö
|
||||||
|
private
|
||||||
|
fiofs;
|
||||||
|
public
|
||||||
function Create();
|
function Create();
|
||||||
begin
|
begin
|
||||||
FCacheDir :=TS_GetUserProfileHome()+"TslSynMemo"+ioFileseparator()+"cmpCaches";// d["value"];
|
fiofs := ioFileseparator();
|
||||||
|
FCacheDir :=TS_GetUserProfileHome()+"TslSynMemo"+fiofs+"cmpCaches";// d["value"];
|
||||||
//FCacheAbsFileName := FCacheDir+"\\cacheabstruct.stm";
|
//FCacheAbsFileName := FCacheDir+"\\cacheabstruct.stm";
|
||||||
//FFileWorker := new TThreadWorker("this.OnMessage :=findfunction('UTslSynMemo.FileSaveThreader') ;");
|
//FFileWorker := new TThreadWorker("this.OnMessage :=findfunction('UTslSynMemo.FileSaveThreader') ;");
|
||||||
FFindDirs := array();
|
FFindDirs := array();
|
||||||
|
|
@ -1929,82 +1933,83 @@ type TTsfFileParser = class //
|
||||||
return ReadParseredFile(n+".tsf");
|
return ReadParseredFile(n+".tsf");
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
function parserafile(dir,v);
|
||||||
|
begin
|
||||||
|
fn := lowercase( v["FileName"]);
|
||||||
|
if FFileNames[fn] then return ;
|
||||||
|
if fn=mf then return ;
|
||||||
|
pfn := dir+fiofs+fn;
|
||||||
|
sz := v["Size"];
|
||||||
|
flt := v["Time"];
|
||||||
|
d := ReadParseredFileTime(fn);
|
||||||
|
FFileNames[fn] := pfn;
|
||||||
|
if ifstring(d) and d=flt then
|
||||||
|
begin
|
||||||
|
ReadParseredFile(fn);
|
||||||
|
return ;
|
||||||
|
end
|
||||||
|
if readFile(rwRaw(),"",pfn,0,sz,rdd) then
|
||||||
|
begin
|
||||||
|
if rdd then
|
||||||
|
begin
|
||||||
|
if errtslcode(rdd) then
|
||||||
|
begin
|
||||||
|
r := array();
|
||||||
|
rdd := "";
|
||||||
|
end else
|
||||||
|
r := tsl_tokenizeex_2_(rdd,1);
|
||||||
|
end else
|
||||||
|
begin
|
||||||
|
r := array();
|
||||||
|
rdd :="";
|
||||||
|
end
|
||||||
|
r["fullpath"] := pfn;
|
||||||
|
r["name"] := fn;
|
||||||
|
if (aid := pos("@",fn)) then
|
||||||
|
begin
|
||||||
|
r["nspace"] := fn[aid:(length(fn)-4)];
|
||||||
|
r["name"] := fn[1:(aid-1)];
|
||||||
|
//echo "\r\nfn:",fn[aid:];
|
||||||
|
end else r["nspace"] := "";
|
||||||
|
r["msg"] := getmsgd_Crc32(rdd);//GetMsgdigest(rdd,0);
|
||||||
|
cls := array();
|
||||||
|
ScriptDelBlocks(r["blcks"],str2array(rdd,"\n"),cls);
|
||||||
|
r["blcks"] := cls;
|
||||||
|
if not ifarray(FCacheS) then FCacheS := array();
|
||||||
|
FCacheS[fn] := r;//new tparserdobject( r);
|
||||||
|
FFilePaths[fn] := pfn;
|
||||||
|
WriteParseredFile(fn,r,flt);
|
||||||
|
end
|
||||||
|
end
|
||||||
function ParserFiles(dir,FFileNames,mf);
|
function ParserFiles(dir,FFileNames,mf);
|
||||||
begin
|
begin
|
||||||
dirs := FileList("",dir+ioFileseparator()+"*");
|
dirs := FileList("",dir+fiofs+"*");
|
||||||
for i,v in dirs do
|
for i,v in dirs do
|
||||||
begin
|
begin
|
||||||
fn := v["FileName"] ;
|
fn := v["FileName"] ;
|
||||||
if pos("D",v["Attr"]) and not( fn in array(".","..")) then
|
|
||||||
|
if not(pos("D",v["Attr"])) and (1=ParseRegExpr("\\.tsf$",fn,"i",m,mp,ml)) then //tsfÎļþ´¦Àí
|
||||||
begin
|
begin
|
||||||
ParserFiles(dir+ioFileseparator()+fn,FFileNames,mf);
|
parserafile(dir,v);
|
||||||
end
|
end
|
||||||
end
|
if pos("D",v["Attr"]) and not( fn in array(".","..")) then //×ÓĿ¼²éÕÒ
|
||||||
dirs := FileList("",dir+ioFileseparator()+"*.tsf");
|
begin
|
||||||
for i,v in dirs do
|
ParserFiles(dir+fiofs+fn,FFileNames,mf);
|
||||||
begin
|
|
||||||
if not(pos("D",v["Attr"])) then
|
|
||||||
begin
|
|
||||||
fn := lowercase( v["FileName"]);
|
|
||||||
if FFileNames[fn] then continue;
|
|
||||||
if fn=mf then continue;
|
|
||||||
pfn := dir+ioFileseparator()+fn;
|
|
||||||
sz := filesize("",pfn);
|
|
||||||
fl := FileList("",pfn);
|
|
||||||
d := ReadParseredFileTime(fn);
|
|
||||||
FFileNames[fn] := pfn;
|
|
||||||
//echo "\r\n",tostn(fn),"===",v["Attr"];
|
|
||||||
if ifstring(d) and d=fl[0,"Time"] then
|
|
||||||
begin
|
|
||||||
//FCacheS[fn]
|
|
||||||
ReadParseredFile(fn);
|
|
||||||
continue;
|
|
||||||
end
|
|
||||||
if readFile(rwRaw(),"",pfn,0,sz,rdd) then
|
|
||||||
begin
|
|
||||||
if rdd then
|
|
||||||
begin
|
|
||||||
if errtslcode(rdd) then
|
|
||||||
begin
|
|
||||||
r := array();
|
|
||||||
rdd := "";
|
|
||||||
end else
|
|
||||||
r := tsl_tokenizeex_2_(rdd,1);
|
|
||||||
end else
|
|
||||||
begin
|
|
||||||
r := array();
|
|
||||||
rdd :="";
|
|
||||||
end
|
|
||||||
r["fullpath"] := pfn;
|
|
||||||
r["name"] := fn;
|
|
||||||
if (aid := pos("@",fn)) then
|
|
||||||
begin
|
|
||||||
r["nspace"] := fn[aid:(length(fn)-4)];
|
|
||||||
r["name"] := fn[1:(aid-1)];
|
|
||||||
//echo "\r\nfn:",fn[aid:];
|
|
||||||
end else r["nspace"] := "";
|
|
||||||
r["msg"] := getmsgd_Crc32(rdd);//GetMsgdigest(rdd,0);
|
|
||||||
cls := array();
|
|
||||||
ScriptDelBlocks(r["blcks"],str2array(rdd,"\n"),cls);
|
|
||||||
r["blcks"] := cls;
|
|
||||||
if not ifarray(FCacheS) then FCacheS := array();
|
|
||||||
FCacheS[fn] := r;//new tparserdobject( r);
|
|
||||||
FFilePaths[fn] := pfn;
|
|
||||||
WriteParseredFile(fn,r,fl[0,"Time"]);
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
function ModifyFname(n);
|
function ModifyFname(n);
|
||||||
begin
|
begin
|
||||||
nn := lowercase(n);
|
nn := lowercase(n);
|
||||||
dg := getmsgd_Crc32(nn);//GetMsgdigest(nn,0);
|
dg := getmsgd_Crc32(nn);//GetMsgdigest(nn,0);
|
||||||
return dg[1]+ioFileseparator()+n;
|
return dg[1]+fiofs+n;
|
||||||
end
|
end
|
||||||
function WriteParseredFile(n,d,t);
|
function WriteParseredFile(n,d,t);
|
||||||
begin
|
begin
|
||||||
f1 := FCacheDir+ioFileseparator()+ModifyFname(n)+".p";
|
iofs := fiofs;
|
||||||
f2 := FCacheDir+ioFileseparator()+"lasttime"+ioFileseparator()+ModifyFname(n)+".t";
|
f1 := FCacheDir+iofs+ModifyFname(n)+".p";
|
||||||
|
f2 := FCacheDir+iofs+"lasttime"+iofs+ModifyFname(n)+".t";
|
||||||
CreateDirWithFileName(f1);
|
CreateDirWithFileName(f1);
|
||||||
CreateDirWithFileName(f2);
|
CreateDirWithFileName(f2);
|
||||||
exportfile(ftstream(),"",f1,d);
|
exportfile(ftstream(),"",f1,d);
|
||||||
|
|
@ -2014,7 +2019,7 @@ type TTsfFileParser = class //
|
||||||
begin
|
begin
|
||||||
if FCacheDir then
|
if FCacheDir then
|
||||||
begin
|
begin
|
||||||
fn := FCacheDir+ioFileseparator()+"lasttime"+ioFileseparator()+ModifyFname(n)+".t";
|
fn := FCacheDir+fiofs+"lasttime"+fiofs+ModifyFname(n)+".t";
|
||||||
if importfile(ftstream(),"",fn,d)=1 then return d;
|
if importfile(ftstream(),"",fn,d)=1 then return d;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
@ -2031,7 +2036,7 @@ type TTsfFileParser = class //
|
||||||
FFilePaths[lowercase(n)] := d["fullpath"];
|
FFilePaths[lowercase(n)] := d["fullpath"];
|
||||||
return d;
|
return d;
|
||||||
end
|
end
|
||||||
fn := FCacheDir+ioFileseparator()+ModifyFname(n)+".p";
|
fn := FCacheDir+fiofs+ModifyFname(n)+".p";
|
||||||
if importfile(ftstream(),"",fn,d)=1 and ifarray(d) then
|
if importfile(ftstream(),"",fn,d)=1 and ifarray(d) then
|
||||||
begin
|
begin
|
||||||
FCacheS[lowercase(n)] := r;//new tparserdobject(d);
|
FCacheS[lowercase(n)] := r;//new tparserdobject(d);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue