9111行是开始断点,然后 F8单步,9112行判断不成立,怎么突然到9127行 End那里了?
现在改成这样了,是正常了。关键差异,在第二个判断的语句里。
jsa := SA([]).AsArray; for I := 0 to Strlist.Count - 1 do if SO(Strlist[I]) <> nil then begin S := SO(Strlist[I]).S[SoNameC];//* // if SO(Strlist[I]).S[SoNameC] < DateTimeToStr(Now - LastDays) then //如果用上面这行写法,就有这个现象。 //用个 string类型的变量 过度一下 就正常。 if S < DateTimeToStr(Now - LastDays) then//* begin jsa.Add(SO(I));// 1 3 5 7 Continue; end else Break; end else jsa.Add(SO(I)); for I := jsa.Length - 1 downto 0 do//7 5 3 1 Strlist.Delete(jsa[I].AsInteger); if NowSave then Strlist.SaveToFile(Filename); end;
procedure AddjdsJson2(const Tid: string); var jo: ISuperObject; S: string; begin //{"2015-03-15":{"993831137720616":true,"999059446806504":true}} //{"2015-03-15":{"993831137720616":true,"999059446806504":true},"2015-03-14":{"993831137720616":true,"999059446806504":true}} if Tid = '' then Exit; S := DatetoStr(Date); jo := jdsJSON[S];//这里 要用个 变量,不能直接用 函数表达式 if jo = nil then begin jo := SO(); jdsJSON[S] := jo;//SO(); // jo := jdsJSON[DatetoStr(Date)]; end; jo.B[tid] := True; end;