OSDN Git Service

URLReplace の最適化。
[gikonavigoeson/gikonavi.git] / Favorite.pas
index 79663d7..ea0b032 100644 (file)
@@ -616,7 +616,7 @@ end;
 
 procedure TFavoriteDM.URLReplace(oldURLs: TStringList; newURLs: TStringList);
 var
-       i, j                    : Integer;
+       i                                       : Integer;
                tmpURL: string;
     oldHost: string;
     oldBoardName: string;
@@ -626,6 +626,7 @@ var
        favBoard        : TFavoriteBoardItem;
        favThread       : TFavoriteThreadItem;
        favorites       : TTreeNodes;
+       Node                    : TTreeNode;
 begin
 
        // \96Ê\93|\82¾\82¯\82Çthread\82Í\82»\82ê\82¼\82êURL\82ð\83`\83F\83b\83N\82µ\82È\82ª\82ç\82â\82Á\82Ä\82©\82È\82«\82á\82¢\82¯\82È\82¢\81B
@@ -639,18 +640,19 @@ begin
                        newHost                 := Copy(tmpURL, 1, LastDelimiter('/', tmpURL) );
                        newBoardName    := Copy(tmpURL, LastDelimiter('/', tmpURL), Length(tmpURL) ) + '/';
 
-                       for j := favorites.Count - 1 downto 0 do begin
+                       Node := favorites.GetFirstNode.getFirstChild;
+                       while Node <> nil do begin
                                try
-                                       if TObject( favorites.Item[ j ].Data ) is TFavoriteBoardItem then begin
-                                               favBoard := TFavoriteBoardItem( favorites.Item[ j ].Data );
+                                       if TObject( Node.Data ) is TFavoriteBoardItem then begin
+                                               favBoard := TFavoriteBoardItem( Node.Data );
                                                if favBoard = nil then continue;
                                                tempString := favBoard.URL;
                                                if ( AnsiPos(oldBoardName, tempString) <> 0 ) and ( AnsiPos(oldHost, tempString ) <> 0 ) then begin
                                                        tempString              := StringReplace(tempString, oldHost, newHost,[]);
                                                        favBoard.URL    := tempString;
                                                end;
-                                       end else if TObject( favorites.Item[ j ].Data ) is TFavoriteThreadItem then begin
-                                               favThread := TFavoriteThreadItem( favorites.Item[ j ].Data );
+                                       end else if TObject( Node.Data ) is TFavoriteThreadItem then begin
+                                               favThread := TFavoriteThreadItem( Node.Data );
                                                if favThread = nil then continue;
                                                tempString := favThread.URL;
                                                if ( AnsiPos(oldBoardName, tempString) <> 0 ) and ( AnsiPos(oldHost, tempString ) <> 0 ) then begin
@@ -660,6 +662,7 @@ begin
                                        end;
                                except
                                end;
+                               Node := Node.GetNext;
                        end;
                except
                end;