| 1177 |
} |
} |
| 1178 |
procedure TDownloadItem.SaveItemFile; |
procedure TDownloadItem.SaveItemFile; |
| 1179 |
var |
var |
| 1180 |
Body: TStringList; |
Body, oldBody: TStringList; |
| 1181 |
Cnt: Integer; |
Cnt: Integer; |
| 1182 |
OldCnt: Integer; |
OldCnt: Integer; |
| 1183 |
FileName: string; |
FileName: string; |
| 1208 |
try |
try |
| 1209 |
// if FileExists(FileName) and (ResponseCode = 206) then begin |
// if FileExists(FileName) and (ResponseCode = 206) then begin |
| 1210 |
if FileExists(FileName) and (State = gdsDiffComplete) then begin |
if FileExists(FileName) and (State = gdsDiffComplete) then begin |
|
// Body.Text := Content; |
|
|
// if Body.Count > 0 then |
|
|
// Body.Delete(0); |
|
|
// Content := Body.Text; |
|
| 1211 |
loopCnt := 10; |
loopCnt := 10; |
| 1212 |
repeat |
repeat |
| 1213 |
finish := true; |
finish := true; |
| 1220 |
except |
except |
| 1221 |
on E:EFOpenError do begin |
on E:EFOpenError do begin |
| 1222 |
sleep(10); |
sleep(10); |
|
finish := false; |
|
| 1223 |
Dec(loopCnt); |
Dec(loopCnt); |
| 1224 |
|
if loopCnt > 0 then |
| 1225 |
|
finish := false; |
| 1226 |
end; |
end; |
| 1227 |
end; |
end; |
| 1228 |
until finish and ( loopCnt > 0 ); |
until finish; |
| 1229 |
//Cnt := Body.Count; |
//Cnt := Body.Count; |
| 1230 |
end else begin |
end else begin |
| 1231 |
if IsAbone then begin |
if IsAbone then begin |
| 1232 |
// あぼーんを検出したのでここまで読んだと新着レス番のつけなおし |
// あぼーんを検出したのでここまで読んだと新着レス番のつけなおし |
| 1233 |
loopCnt := 10; |
oldBody := TStringList.Create; |
| 1234 |
repeat |
try |
| 1235 |
finish := true; |
loopCnt := 10; |
| 1236 |
try |
repeat |
| 1237 |
Body.LoadFromFile(FileName); |
finish := true; |
| 1238 |
except |
try |
| 1239 |
on E:EFOpenError do begin |
oldBody.LoadFromFile(FileName); |
| 1240 |
sleep(10); |
except |
| 1241 |
finish := false; |
on E:EFOpenError do begin |
| 1242 |
Dec(loopCnt); |
sleep(10); |
| 1243 |
|
Dec(loopCnt); |
| 1244 |
|
if loopCnt > 0 then |
| 1245 |
|
finish := false |
| 1246 |
|
else |
| 1247 |
|
finish := true; |
| 1248 |
|
end; |
| 1249 |
end; |
end; |
| 1250 |
end; |
until finish; |
|
until finish and ( loopCnt > 0 ); |
|
|
LastTxt := Body.Strings[ Body.Count - 1 ]; |
|
|
if ThreadItem.Kokomade > 0 then begin |
|
|
KokoTxt := Body.Strings[ ThreadItem.Kokomade - 1 ]; |
|
|
end; |
|
|
if ThreadItem.NewReceive > 0 then begin |
|
|
NewTxt := Body.Strings[ ThreadItem.NewReceive - 1 ]; |
|
|
end; |
|
| 1251 |
|
|
| 1252 |
Body.Text := Content; |
Body.Text := Content; |
| 1253 |
Body.Find( LastTxt, LastIdx ); |
if (ThreadItem.Kokomade > 0) and (ThreadItem.Kokomade <= oldBody.Count) then begin |
| 1254 |
OldCnt := LastIdx + 1; |
ThreadItem.Kokomade := Body.IndexOf(oldBody.Strings[ ThreadItem.Kokomade - 1 ]) + 1; |
|
NewRes := Body.Count - OldCnt; |
|
|
|
|
|
if ThreadItem.Kokomade > 0 then begin |
|
|
Body.Find( KokoTxt, KokoIdx ); |
|
|
ThreadItem.Kokomade := KokoIdx + 1; |
|
|
end; |
|
|
if ThreadItem.NewReceive > 0 then begin |
|
|
Body.Find( NewTxt, NewIdx ); |
|
|
Inc( NewIdx ); |
|
|
if OldCnt < NewIdx then begin |
|
|
OldCnt := NewIdx; |
|
|
NewRes := Body.Count - NewIdx; |
|
| 1255 |
end; |
end; |
| 1256 |
|
|
| 1257 |
|
LastIdx := oldBody.Count; |
| 1258 |
|
repeat |
| 1259 |
|
Dec(LastIdx); |
| 1260 |
|
OldCnt := Body.IndexOf(oldBody.Strings[ LastIdx ]) + 1; |
| 1261 |
|
until ( OldCnt <> 0 ) or (LastIdx = 0); |
| 1262 |
|
|
| 1263 |
|
NewRes := Body.Count - OldCnt; |
| 1264 |
|
|
| 1265 |
|
finally |
| 1266 |
|
oldBody.Free; |
| 1267 |
end; |
end; |
| 1268 |
|
|
| 1269 |
end else begin |
end else begin |
| 1270 |
Body.Text := Content; |
Body.Text := Content; |
| 1271 |
//ThreadItem.Count := 0; |
//ThreadItem.Count := 0; |