OSDN Git Service

お気に入りの保存を最適化。
authoryoffy <yoffy>
Tue, 3 Aug 2004 16:48:35 +0000 (16:48 +0000)
committeryoffy <yoffy>
Tue, 3 Aug 2004 16:48:35 +0000 (16:48 +0000)
Favorite.pas

index 7129f51..92f2dcb 100644 (file)
@@ -446,7 +446,7 @@ begin
        try
                SaveList.Add('<?xml version="1.0" encoding="Shift_JIS" standalone="yes"?>');
                SaveList.Add('<favorite>');
-               AddSaveString(TreeView.Items.GetFirstNode, SaveList);
+               AddSaveString(TreeView.Items.GetFirstNode.getFirstChild, SaveList);
                SaveList.Add('</favorite>');
                SaveList.SaveToFile(FileName);
        finally
@@ -492,31 +492,33 @@ end;
 
 procedure TFavoriteDM.AddSaveString(Node: TTreeNode; SaveList: TStringList);
 var
-       i: Integer;
        s: string;
        FavBoard: TFavoriteBoardItem;
        FavThread: TFavoriteThreadItem;
+       data : Pointer;
 begin
-       for i := 0 to Node.Count - 1 do begin
-               if TObject(Node.Item[i].Data) is TFavoriteFolder then begin
-                       if Node.Item[ i ].Expanded then
-                               s := Format('<folder title="%s" expanded="true">', [HtmlEncode(Node.Item[i].Text)])
+       while Node <> nil do begin
+               data := Node.Data;
+               if TObject(data) is TFavoriteFolder then begin
+                       if Node.Expanded then
+                               s := Format('<folder title="%s" expanded="true">', [HtmlEncode(Node.Text)])
                        else
-                               s := Format('<folder title="%s" expanded="false">', [HtmlEncode(Node.Item[i].Text)]);
+                               s := Format('<folder title="%s" expanded="false">', [HtmlEncode(Node.Text)]);
                        SaveList.Add(s);
-                       AddSaveString(Node.Item[i], SaveList);
+                       AddSaveString(Node.getFirstChild, SaveList);
                        SaveList.Add('</folder>');
-               end else if TObject(Node.Item[i].Data) is TFavoriteBoardItem then begin
-                       FavBoard := TFavoriteBoardItem(Node.Item[i].Data);
+               end else if TObject(data) is TFavoriteBoardItem then begin
+                       FavBoard := TFavoriteBoardItem(data);
                        s := Format('<favitem type="2ch" favtype="board" url="%s" title="%s"/>',
-                                                                       [HtmlEncode( FavBoard.URL ), HtmlEncode(Node.Item[ i ].Text)]);
+                                                                       [HtmlEncode( FavBoard.URL ), HtmlEncode(Node.Text)]);
                        SaveList.Add(s);
-               end else if TObject(Node.Item[i].Data) is TFavoriteThreadItem then begin
-                       FavThread := TFavoriteThreadItem(Node.Item[i].Data);
+               end else if TObject(data) is TFavoriteThreadItem then begin
+                       FavThread := TFavoriteThreadItem(data);
                        s := Format('<favitem type="2ch" favtype="thread" url="%s" title="%s"/>',
-                                                                       [HtmlEncode( FavThread.URL ), HtmlEncode(Node.Item[ i ].Text)]);
+                                                                       [HtmlEncode( FavThread.URL ), HtmlEncode(Node.Text)]);
                        SaveList.Add(s);
                end;
+               Node := Node.getNextSibling;
        end;
 end;