Переменная slPr берется из другой процедуры где имеет тип TStringList
Вот код :
| Код | Procedure TRPLThread.Execute; Var FSR:TSearchRec; aFSR:TASearchRec; S:String; sstm:_Systemtime; lcftm: _filetime; I,J:Integer; ObrFilename:String; slO,slPr,slToDo:TStringList; OldT:String; dirdat_odname:String; FoundAnyFile:Boolean; Work_dat_Od:TDateTime; FilePathCo:String; tm:Integer; tt:ttypetime; ttKey:TTypeKey; slBadFiles:TStrings; bSkipFile:Boolean; sPrevFN:String; stmpFileMask:String; tMess:String;
Begin
I:=lsKeys.IndexOf(AnsiUpperCase(Fskey)); If I<0 Then ttKey:=ttUnknown Else ttKey:=TTypeKey(Integer(lsKeys.Objects[I])); sPrevFN:='';
FoundAnyFile:=True; If bScanDirection Then Work_dat_Od:=DateBegin Else Work_dat_Od:=Dat_Od; slO:=Nil; slPr:=Nil;// Переменная которая передается slToDo:=Nil; slBadFiles:=Nil; Try slO:=TStringList.Create; slPr:=TStringList.Create; slToDo:=TStringList.Create; slBadFiles:=TStringList.Create; While Not Terminated Do Begin If bAutoDate And (Date()>Dat_Od) Then Begin WriteOutput('Change date to '+DateToStr(Date())); Dat_Od:=Date(); End; osi.CalcNextTime(tt,tm); WriteOutput('Whait for '+TimeToStr(Now+tm/(1000*60*60*24))); If WaitForSingleObject(StopEvent,tm)=WAIT_OBJECT_0 Then Begin WriteOutput('I am stopped !!! '); Break; End;
// If DateBegin=0 Then Begin Work_dat_Od:=Dat_Od; slBadFiles.Clear; End Else If Not FoundAnyFile Then Begin If bScanDirection Then Begin Case Date_interval Of 0:Work_dat_Od:=Work_dat_Od+1; 1:Work_dat_Od:=IncMonth(Work_dat_Od,1); 2:Work_dat_Od:=IncMonth(Work_dat_Od,3); 3:Work_dat_Od:=IncMonth(Work_dat_Od,12); End; If Work_dat_Od>Dat_Od Then Begin Work_dat_Od:=DateBegin; sPrevFN:=''; End; End Else Begin Case Date_interval Of 0:Work_dat_Od:=Work_dat_Od-1; 1:Work_dat_Od:=IncMonth(Work_dat_Od,-1); 2:Work_dat_Od:=IncMonth(Work_dat_Od,-3); 3:Work_dat_Od:=IncMonth(Work_dat_Od,-12); End; If Work_dat_Od<DateBegin Then Begin Work_dat_Od:=Dat_Od; sPrevFN:=''; End; End; slBadFiles.Clear; End;
LoadObrFile(slO,Work_dat_Od,ObrFilename); // If Terminated Then Break; stmpFileMask:=FileMask; If bLoadByName And (sPrevFN<>'') Then Case ttKey Of ttCMP,ttCOMPS,ttNORM_MKPB,ttNORM_MKPB_BAL,ttMPF,ttMO_SCPF,ttSCPF_PI,ttRezerv_ND,ttRisk_KP,ttKRED_BAS,ttRKP_KRED_BAS,ttKRED_BAS_PI,ttMO..ttMO9,ttCYPR_MO,ttMJ_,ttMJ_PI,ttMJ_PA: stmpFileMask:=Copy(stmpFileMask,1,2)+Copy(sPrevFN,3,4)+Copy(stmpFileMask,7,Length(stmpFileMask)-6); End; MakeFileScanMaskByType(ttKey,Work_dat_Od,S,dirdat_odname,PathIn,stmpFileMask,Dat_OdInPathIn); FillChar(FSR,SizeOf(FSR),0); WriteOutput('сканируем '+S); FoundAnyFile:=False; //////////////////////// /////-Здесь вызов процедуры из первого сообщения FindAllFiles(S,aFSR,slO,slPr,aPrList,Work_dat_Od,PathIn,tMess,aIgnList); //////////////////////// If tMess<>'' Then WriteOutput(tMess); slToDo.Clear; For I:=0 To slPr.Count-1 Do Begin J:=StrToInt(slPr[I]); FSR:=aFSR[J]; FileTimeToLocalFileTime(FSR.FindData.ftLastWriteTime,lcftm); FileTimeToSystemTime(lcftm,sstm); S:=Format('%.4d%.2d%.2d%.2d%.2d%.2d %.10d',[sstm.wYear,sstm.wMonth,sstm.wDay, sstm.wHour,sstm.wMinute,sstm.wSecond,FSR.Size]); OldT:=slO.Values[FSR.Name]; If Copy(OldT,14+1,1)<>' ' Then OldT:=Format('%s %.10d',[OldT,FSR.Size]); bSkipFile:=False; If ((OldT='') Or (OldT<>S)) And (slBadFiles.IndexOf(FSR.Name)>=0) Then Begin WriteOutput(GetFullFileInfoToStr('Skipping File = ',FSR.Name,sstm,FSR.Size)); bSkipFile:=True; End; If ((OldT='') Or (OldT<>S)) And (Not bSkipFile) Then Begin WriteOutput(GetFullFileInfoToStr('queue ',FSR.Name,sstm,FSR.Size) +IIFStr((OldT='') Or ((Length(OldT)=11) And (Copy(OldT,1,1)=' ')),' new','')); slToDo.Add(IntToStr(J)); End; End; If slToDo.Count>0 Then Begin J:=StrToInt(slToDo[0]); FSR:=aFSR[J]; OldT:=slO.Values[FSR.Name]; FoundAnyFile:=True; FileTimeToLocalFileTime(FSR.FindData.ftLastWriteTime,lcftm); FileTimeToSystemTime(lcftm,sstm); S:=Format('%.4d%.2d%.2d%.2d%.2d%.2d %.10d',[sstm.wYear,sstm.wMonth,sstm.wDay, sstm.wHour,sstm.wMinute,sstm.wSecond,FSR.Size]); If (OldT='') Or ((Length(OldT)=11) And (Copy(OldT,1,1)=' ')) Then Begin WriteOutput(GetFullFileInfoToStr('Найден новый файл ',FSR.Name,sstm,FSR.Size)); bPovtor:=False; End Else Begin WriteOutput('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'); WriteOutput(GetFullFileInfoToStr('Повтор файла ',FSR.Name,sstm,FSR.Size)); WriteOutput('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'); bPovtor:=True; End; If ttKey<>ttfiktiv Then Begin If Not CopyFileRO(FSR.Name,dirdat_odname,FilePathCo,FSR.Size) Then Continue; End; // Case ttKey Of ttSCPF_PI: ProcessSCPF_PIFile(FilePathCo,Work_dat_Od); ttRezerv_ND: ProcessRezerv_NDFile(FilePathCo,Work_dat_Od); ttRisk_KP: ProcessRisk_KPFile(FilePathCo,Work_dat_Od); ttMO_SCPF: ProcessMO_SCPFFile(FilePathCo,Work_dat_Od); ttCMP: ProcessCMPFile(FilePathCo,Work_dat_Od); ttCOMPS: ProcessCOMPSFile(FilePathCo,Work_dat_Od); ttNORM_MKPB: ProcessNORM_MKPBFile(FilePathCo,Work_dat_Od); ttNORM_MKPB_BAL: ProcessNORM_MKPB_BALFile(FilePathCo,Work_dat_Od); ttMPF: ProcessMPFFile(FilePathCo, Work_dat_Od); ttKRED_BAS: ProcessKRED_BASFile(FilePathCo,Work_dat_Od); ttRKP_KRED_BAS: ProcessRKP_KRED_BASFile(FilePathCo,Work_dat_Od); ttKRED_BAS_PI: ProcessKRED_BAS_PIFile(FilePathCo,Work_dat_Od); ttMO..ttMO9,ttCYPR_MO: ProcessMOFile(FilePathCo,Work_dat_Od, Ord(ttKey)-Ord(ttMO)+1); ttSCPF_V2:ProcessScpf_v2File(FilePathCo,Work_dat_Od); ttGKF_: ProcessGKFile(FilePathCo,Work_dat_Od,'f',False); ttMB_: ProcessMBFile(FilePathCo,Work_dat_Od); ttMB_optirisk: ProcessMBFile(FilePathCo,Work_dat_Od); ttMBMB_1,ttMBMB_2: ProcessMBMBFile(FilePathCo,Work_dat_Od); ttMBMB_MP: ProcessMBMB_MPFile(FilePathCo,Work_dat_Od); ttMBMB_SCR: ProcessMBMBSCRFile(FilePathCo,Work_dat_Od); ttVZ01: ProcessVZ01File(FilePathCo,Work_dat_Od); ttvip_: ProcessSCPF_VIPFile(FilePathCo,Work_dat_Od); ttGKO_: ProcessGKFile(FilePathCo,Work_dat_Od,'o',False); ttGKM_: ProcessGKFile(FilePathCo,Work_dat_Od,'M',False); ttGKV_: ProcessGKFile(FilePathCo,Work_dat_Od,'V',False); ttGKG_: ProcessGKFile(FilePathCo,Work_dat_Od,'G',False); ttGKp_: ProcessGKFile(FilePathCo,Work_dat_Od,'p',False); ttGK_: ProcessGKFile(FilePathCo,Work_dat_Od,'',False); ttGZ_: ProcessGKFile(FilePathCo,Work_dat_Od,'',True); ttGZF_: ProcessGKFile(FilePathCo,Work_dat_Od,'f',True); ttGZO_: ProcessGKFile(FilePathCo,Work_dat_Od,'o',True); ttMJ_: ProcessMJFile(FilePathCo,Work_dat_Od); ttMJ_PI: ProcessMJFile(FilePathCo,Work_dat_Od); ttMJ_PA: ProcessMJFile(FilePathCo,Work_dat_Od); ttNBU01_: ProcessNbu01File(FilePathCo,Work_dat_Od); ttFS:ProcessFS(FilePathCo,Work_dat_Od); ttKP01_: ProcessNbu01_OtherFile(FilePathCo,'KP','03',Work_dat_Od); tt01_FO_03: ProcessNbu01_OtherFile(FilePathCo,'***','03',Work_dat_Od); tt01_FO_08: ProcessNbu01_OtherFile(FilePathCo,'***','08',Work_dat_Od); tt02_FO_08: ProcessNbu02_OtherFile(FilePathCo,Copy(FSR.Name,4,3),'08',Work_dat_Od); ttPI01_: ProcessNbu01_OtherFile(FilePathCo,'ПИ','08',Work_dat_Od); ttNBU26_: ProcessNbu26File(FilePathCo,Work_dat_Od); ttNBU26_DBF: ProcessNbu26FileDBF(FilePathCo,Work_dat_Od); ttNBUA7_: ProcessNbuA7File(FilePathCo,Work_dat_Od); ttNBUA7_DBF,ttNBUA7_CY_DBF: ProcessNbuA7File_DBF(FilePathCo,Work_dat_Od,ttKey=ttNBUA7_CY_DBF); ttFDPGR: ProcessFDPGRFile(FilePathCo,Work_dat_Od); ttfiktiv: DeleteFile(FilePathCo); ttCYBB_: ProcessCyBBFile(FilePathCo,Work_dat_Od); ttSams,ttSams_mkpb:ProcessSamsFile(FilePathCo,Work_dat_Od,OldT); ttZalog:ProcessZalogFile(FilePathCo,Work_dat_Od); ttLikvP48dp,ttEffP48dp:ProcessLikvP48dpFile(FilePathCo,Work_dat_Od); ttCySD:ProcessCySDFile(FilePathCo,Work_dat_Od); ttZals:ProcessZalsFile(FilePathCo,Work_dat_Od); ttNBU84_:ProcessNbu84File(FilePathCo,Work_dat_Od); ttNBUC5_:ProcessNbuC5File(FilePathCo,Work_dat_Od); ttPari:ProcessPariFile(FilePathCo,Work_dat_Od); ttPari_o:ProcessParioFile(FilePathCo,Work_dat_Od); ttRaru:ProcessRaruFile(FilePathCo,Work_dat_Od); ttPrim: ProcessPrimeFile(FilePathCo,Work_dat_Od); Else WriteOutput(Format('unknown type of key =%s [%s]',[Fskey,Integer(ttKey)])); End; If FileExists(FilePathCo) Then Begin slBadFiles.Add(FSR.Name); Continue; End; slO.Values[FSR.Name]:=S; SaveObrFile(slO,ObrFilename,FSR.Name,OldT,S); sPrevFN:=FSR.Name; If bLoadByName Then FoundAnyFile:=False; //Break; End; End; // Until FindNext(FSR)<>0 ; { Finally SysUtils.FindClose(FSR); End; } //End; Finally slO.Free; slBadFiles.Free; slPr.Free; slToDo.Free; End; End;
|
|