ギコナビ
Revision | d037acf5e49a6f1e2c1f36914a46d84a3045f670 (tree) |
---|---|
Time | 2009-05-24 21:37:06 |
Author | h677 <h677> |
Commiter | h677 |
お気に入りのファイルの置き換えタイミングの変更
一旦一時ファイルに出力した後に、バックアップファイルへの変更、
正式ファイル名への置き換えを実施するようにした。
@@ -425,31 +425,47 @@ end; | ||
425 | 425 | |
426 | 426 | procedure TFavoriteDM.WriteFavorite; |
427 | 427 | var |
428 | - FileName, tmpFileName: string; | |
428 | + FileName, tmpFileName, bakFileName: string; | |
429 | 429 | SaveList: TStringList; |
430 | - | |
430 | + Buffer: array[0..MAX_PATH] of Char; // obt@ | |
431 | + FileRep : Boolean; | |
431 | 432 | begin |
432 | 433 | FavoriteDM.Modified := true; |
433 | 434 | FileName := GikoSys.GetConfigDir + FAVORITE_FILE_NAME; |
434 | - if FileExists(FileName) then begin | |
435 | - tmpFileName := GikoSys.GetConfigDir + '~' + FAVORITE_FILE_NAME; | |
436 | - if FileExists(tmpFileName) then | |
437 | - SysUtils.DeleteFile(tmpFileName); //SysUtils.ð¯ȢÆWinAPIÆæÊūȢÌÅ | |
438 | - RenameFile(FileName, tmpFileName); | |
439 | - end; | |
440 | 435 | SaveList := TStringList.Create; |
441 | - try | |
442 | - SaveList.Add('<?xml version="1.0" encoding="Shift_JIS" standalone="yes"?>'); | |
443 | - SaveList.Add('<favorite>'); | |
444 | - try | |
445 | - AddSaveString(TreeView.Items.GetFirstNode.getFirstChild, SaveList); | |
446 | - except | |
447 | - end; | |
448 | - SaveList.Add('</favorite>'); | |
449 | - SaveList.SaveToFile(FileName); | |
450 | - finally | |
451 | - SaveList.Free; | |
452 | - end; | |
436 | + tmpFileName := ''; | |
437 | + // «Ýpêt@Cæ¾ | |
438 | + if GetTempFileName(PChar(GikoSys.GetConfigDir), PChar('fav'), 0, Buffer) <> 0 then begin | |
439 | + tmpFileName := Buffer; | |
440 | + try | |
441 | + try | |
442 | + SaveList.Add('<?xml version="1.0" encoding="Shift_JIS" standalone="yes"?>'); | |
443 | + SaveList.Add('<favorite>'); | |
444 | + AddSaveString(TreeView.Items.GetFirstNode.getFirstChild, SaveList); | |
445 | + SaveList.Add('</favorite>'); | |
446 | + // êt@CƵÄÛ¶ | |
447 | + SaveList.SaveToFile(tmpFileName); | |
448 | + FileRep := True; | |
449 | + // OÌt@CðÚ®·é | |
450 | + if FileExists(FileName) then begin | |
451 | + bakFileName := GikoSys.GetConfigDir + '~' + FAVORITE_FILE_NAME; | |
452 | + if FileExists(bakFileName) then begin | |
453 | + FileRep := SysUtils.DeleteFile(bakFileName); //SysUtils.ð¯ȢÆWinAPIÆæÊūȢÌÅ | |
454 | + end; | |
455 | + if FileRep then begin | |
456 | + FileRep := RenameFile(FileName, bakFileName); | |
457 | + end; | |
458 | + end; | |
459 | + // ³KÌt@C¼Él[·é | |
460 | + if FileRep then begin | |
461 | + FileRep := RenameFile(tmpFileName, FileName); | |
462 | + end; | |
463 | + except | |
464 | + end; | |
465 | + finally | |
466 | + SaveList.Free; | |
467 | + end; | |
468 | + end; | |
453 | 469 | end; |
454 | 470 | |
455 | 471 | procedure TFavoriteDM.AddSaveString(Node: TTreeNode; SaveList: TStringList); |