| 425 |
|
|
| 426 |
procedure TFavoriteDM.WriteFavorite; |
procedure TFavoriteDM.WriteFavorite; |
| 427 |
var |
var |
| 428 |
FileName, tmpFileName: string; |
FileName, tmpFileName, bakFileName: string; |
| 429 |
SaveList: TStringList; |
SaveList: TStringList; |
| 430 |
|
Buffer: array[0..MAX_PATH] of Char; // バッファ |
| 431 |
|
FileRep : Boolean; |
| 432 |
begin |
begin |
| 433 |
FavoriteDM.Modified := true; |
FavoriteDM.Modified := true; |
| 434 |
FileName := GikoSys.GetConfigDir + FAVORITE_FILE_NAME; |
FileName := GikoSys.GetConfigDir + FAVORITE_FILE_NAME; |
|
if FileExists(FileName) then begin |
|
|
tmpFileName := GikoSys.GetConfigDir + '~' + FAVORITE_FILE_NAME; |
|
|
if FileExists(tmpFileName) then |
|
|
SysUtils.DeleteFile(tmpFileName); //SysUtils.をつけないとWinAPIと区別できないので |
|
|
RenameFile(FileName, tmpFileName); |
|
|
end; |
|
| 435 |
SaveList := TStringList.Create; |
SaveList := TStringList.Create; |
| 436 |
try |
tmpFileName := ''; |
| 437 |
SaveList.Add('<?xml version="1.0" encoding="Shift_JIS" standalone="yes"?>'); |
// 書き込み用一時ファイル取得 |
| 438 |
SaveList.Add('<favorite>'); |
if GetTempFileName(PChar(GikoSys.GetConfigDir), PChar('fav'), 0, Buffer) <> 0 then begin |
| 439 |
try |
tmpFileName := Buffer; |
| 440 |
AddSaveString(TreeView.Items.GetFirstNode.getFirstChild, SaveList); |
try |
| 441 |
except |
try |
| 442 |
end; |
SaveList.Add('<?xml version="1.0" encoding="Shift_JIS" standalone="yes"?>'); |
| 443 |
SaveList.Add('</favorite>'); |
SaveList.Add('<favorite>'); |
| 444 |
SaveList.SaveToFile(FileName); |
AddSaveString(TreeView.Items.GetFirstNode.getFirstChild, SaveList); |
| 445 |
finally |
SaveList.Add('</favorite>'); |
| 446 |
SaveList.Free; |
// 一時ファイルとして保存 |
| 447 |
end; |
SaveList.SaveToFile(tmpFileName); |
| 448 |
|
FileRep := True; |
| 449 |
|
// 前のファイルを移動する |
| 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 |
|
// 正規のファイル名にリネームする |
| 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; |
| 469 |
end; |
end; |
| 470 |
|
|
| 471 |
procedure TFavoriteDM.AddSaveString(Node: TTreeNode; SaveList: TStringList); |
procedure TFavoriteDM.AddSaveString(Node: TTreeNode; SaveList: TStringList); |