OSDN Git Service

XML解析に使用していたStackをフィールド変数からローカル変数に変更
authorh677 <h677>
Sun, 2 Mar 2008 03:51:19 +0000 (03:51 +0000)
committerh677 <h677>
Sun, 2 Mar 2008 03:51:19 +0000 (03:51 +0000)
他、フィールド変数を直接参照していたのをメソッドの引数に移行した

Favorite.pas

index e625db1..0b7bfa7 100644 (file)
@@ -48,10 +48,9 @@ type
        private
                { Private \90é\8c¾ }
         FAbEnd: Boolean;
-               FStack: TStack;
                FTreeView: TTreeView;
                FModified: boolean;
-               procedure ReadNode(Node: IXMLNode);
+               procedure ReadNode(Node: IXMLNode; Stack: TStack; TreeView: TTreeView);
                procedure AddSaveString(Node: TTreeNode; SaveList: TStringList);
        public
                { Public \90é\8c¾ }
@@ -288,6 +287,7 @@ var
        i: Integer;
        FavFolder: TFavoriteFolder;
        LinkExists: Boolean;
+    Stack: TStack;
 begin
     FABend := False;
     
@@ -306,13 +306,13 @@ begin
             LoadXMLDocument(FileName, XMLDoc);
                        XMLNode := XMLDoc.DocumentElement;
 
-                       FStack := TStack.Create;
+                       Stack := TStack.Create;
                        try
-                               FStack.Push(Node);
+                               Stack.Push(Node);
                                LinkExists := False;
                                if XMLNode.NodeName = 'favorite' then begin
                                        for i := XMLNode.ChildNodes.Count - 1 downto 0 do begin
-                                               ReadNode(XMLNode.ChildNodes[i]);
+                                               ReadNode(XMLNode.ChildNodes[i], Stack, FTreeView);
                                                if (XMLNode.ChildNodes[i].NodeName = 'folder') and
                                                         (XMLNode.ChildNodes[i].Attributes['title'] = FAVORITE_LINK_NAME) then begin
                                                        LinkExists := True;
@@ -327,7 +327,7 @@ begin
                                end;
 
                        finally
-                               FStack.Free;
+                               Stack.Free;
                 XMLDoc.Free;
                        end;
                except
@@ -337,29 +337,9 @@ begin
                end;
        end;
 
-{
-       FavFolder := TFavoriteFolder.Create;
-       Node := FTreeView.Items.AddChildObjectFirst(nil, FAVORITE_ROOT_NAME, FavFolder);
-       Node.ImageIndex := 12;
-       Node.SelectedIndex := 13;
-
-       FileName := GikoSys.GetConfigDir + FAVORITE_FILE_NAME;
-       if not FileExists(FileName) then
-               Exit;
-
-               FavSAXHandler.OnStartDocument := SAXStartDocument;
-               FavSAXHandler.OnEndDocument := SAXEndDocument;
-               FavSAXHandler.OnStartElement := SAXStartElement;
-               FavSAXHandler.OnStartElement := SAXStartElement;
-               FavSAXHandler.OnEndElement := SAXEndElement;
-               FavSAXHandler.OnCharacters := SAXCharacters;
-
-               FavSAXReader.Vendor := 'Keith Wood';
-               FavSAXReader.URL := FileName;
-               FavSAXReader.Parse;}
 end;
 
-procedure TFavoriteDM.ReadNode(Node: IXMLNode);
+procedure TFavoriteDM.ReadNode(Node: IXMLNode; Stack: TStack; TreeView: TTreeView);
 var
        i: Integer;
 
@@ -372,24 +352,25 @@ var
        threadItem      : TThreadItem;
 begin
        if Node.NodeName = 'folder' then begin
-               ParentNode := FStack.Peek;
+        CurrentNode := nil;
+               ParentNode := Stack.Peek;
                if TObject(ParentNode.Data) is TFavoriteFolder then begin
                        FavFolder := TFavoriteFolder.Create;
-                       CurrentNode := FTreeView.Items.AddChildObjectFirst(ParentNode, Node.Attributes['title'], FavFolder);
+                       CurrentNode := TreeView.Items.AddChildObjectFirst(ParentNode, Node.Attributes['title'], FavFolder);
                        CurrentNode.ImageIndex := 14;
                        CurrentNode.SelectedIndex := 14;
-                       FStack.Push(CurrentNode);
+                       Stack.Push(CurrentNode);
                end;
                for i := Node.ChildNodes.Count - 1 downto 0 do begin
-                       ReadNode(Node.ChildNodes[i]);
+                       ReadNode(Node.ChildNodes[i], Stack, TreeView);
                end;
-               if TObject(ParentNode.Data) is TFavoriteFolder then
+               if CurrentNode <> nil then
                        CurrentNode.Expanded := Node.Attributes[ 'expanded' ] = 'true';
-               if FStack.Count <> 0 then
-                       FStack.Pop;
+               if Stack.Count <> 0 then
+                       Stack.Pop;
        end else if Node.NodeName = 'favitem' then begin
                try
-                       ParentNode := FStack.Peek;
+                       ParentNode := Stack.Peek;
                        if TObject(ParentNode.Data) is TFavoriteFolder then begin
                                if Node.Attributes['favtype'] = 'board' then begin
                                        FavBoard := nil;
@@ -403,7 +384,7 @@ begin
                                                FavBoard := TFavoriteBoardItem.Create(
                                                        Node.Attributes[ 'url' ], MojuUtils.UnSanitize(Node.Attributes[ 'title' ]), nil );
                                        end;
-                                       CurrentNode := FTreeView.Items.AddChildObjectFirst(ParentNode, UnSanitize(Node.Attributes['title']), FavBoard);
+                                       CurrentNode := TreeView.Items.AddChildObjectFirst(ParentNode, UnSanitize(Node.Attributes['title']), FavBoard);
                                        CurrentNode.ImageIndex := 15;
                                        CurrentNode.SelectedIndex := 15;
                                end else if Node.Attributes['favtype'] = 'thread' then begin
@@ -431,7 +412,7 @@ begin
                                                FavThread := TFavoriteThreadItem.Create(
                                                        Node.Attributes[ 'url' ], UnSanitize(Node.Attributes[ 'title' ]), nil );
                                        end;
-                                       CurrentNode := FTreeView.Items.AddChildObjectFirst(ParentNode, UnSanitize(Node.Attributes['title']), FavThread);
+                                       CurrentNode := TreeView.Items.AddChildObjectFirst(ParentNode, UnSanitize(Node.Attributes['title']), FavThread);
                                        CurrentNode.ImageIndex := 16;
                                        CurrentNode.SelectedIndex := 16;
                                end;