OSDN Git Service

メモリリーク対策
authorh677 <h677>
Thu, 1 Apr 2004 14:35:36 +0000 (14:35 +0000)
committerh677 <h677>
Thu, 1 Apr 2004 14:35:36 +0000 (14:35 +0000)
Giko.pas
GikoSystem.pas
gikoNavi.dpr
gikoNavi.res

index b5d4f0a..d28336b 100644 (file)
--- a/Giko.pas
+++ b/Giko.pas
@@ -1723,6 +1723,16 @@ begin
        try
         TreeView.Items.BeginUpdate;
         for i := TreeView.Items.Count - 1 downto 0 do begin
+            {if TreeView.Items[i].Data <> nil then begin
+                   if TObject(TreeView.Items[i].Data) is TBBS then
+                       TBBS(TreeView.Items[i].Data).Free
+               else if TObject(TreeView.Items[i].Data) is TCategory then
+                    TCategory(TreeView.Items[i].Data).Free
+                   else if TObject(TreeView.Items[i].Data) is TBoard then
+                    TBoard(TreeView.Items[i].Data).Free;
+
+            end;
+            }
                TreeView.Items[i].Free;
         end;
                TreeView.Items.Clear;
index b3f27d4..4bb0b21 100644 (file)
@@ -507,6 +507,8 @@ var
        usePlugIn : Boolean;
     tmpStr: string;
 begin
+    if Board.IsThreadDatRead then
+       Exit;
        Board.Clear;
        UnRead := 0;
 //     TmpUpdate := False;
@@ -537,94 +539,95 @@ begin
 
        sl := TStringList.Create;
        try
-               if FileExists(FileName) then
+               if FileExists(FileName) then begin
                        sl.LoadFromFile(FileName);
 
-               //\82Q\8ds\96Ú\82©\82ç\81i\82P\8ds\96Ú\82Í\83o\81[\83W\83\87\83\93\81j
-               for i := sl.Count - 1 downto 1 do begin
-                       Rec := ParseIndexLine(sl[i]);
-
-                       if usePlugIn then
-                               ThreadItem := TThreadItem.Create(
-                                       Board.BoardPlugIn,
-                                       Board.BoardPlugIn.FileName2ThreadURL( DWORD( Board ), Rec.FFileName ) )
-                       else
-                               ThreadItem := TThreadItem.Create(
-                                       nil,
-                                       Get2chBoard2ThreadURL( Board, ChangeFileExt( Rec.FFileName, '' ) ) );
-
-                       if FileList.Count <> 0 then
-                               if FileList.Find( ThreadItem.FileName, Index ) then
-                                       //ThreadItem.IsLogFile := True;
-                                       FileList.Delete( Index );
-
-                       ThreadItem.BeginUpdate;
-                       ThreadItem.No := Rec.FNo;
-                       ThreadItem.FileName := Rec.FFileName;
-                       ThreadItem.Title := Rec.FTitle;
-                       ThreadItem.Count := Rec.FCount;
-                       ThreadItem.Size := Rec.FSize;
-//                     ThreadItem.RoundNo := Rec.FRoundNo;
-                       ThreadItem.RoundDate := Rec.FRoundDate;
-                       ThreadItem.LastModified := Rec.FLastModified;
-                       ThreadItem.Kokomade := Rec.FKokomade;
-                       ThreadItem.NewReceive := Rec.FNewReceive;
-//                     ThreadItem.Round := Rec.FRound;
-                       ThreadItem.UnRead := Rec.FUnRead;
-                       ThreadItem.ScrollTop := Rec.FScrollTop;
-                       ThreadItem.AllResCount := Rec.FAllResCount;
-                       ThreadItem.NewResCount := Rec.FNewResCount;
-                       ThreadItem.AgeSage := Rec.FAgeSage;
-                       ThreadItem.ParentBoard := Board;
-
-                       //\8f\84\89ñ\83\8a\83X\83g\82É\91\8dÝ\82µ\82½\82ç\8f\84\89ñ\83t\83\89\83O\83Z\83b\83g
-                       if ThreadItem.IsLogFile then begin
-                               idx := RoundList.Find(ThreadItem);
-                               if idx <> -1 then begin
-                                       RoundItem := RoundList.Items[idx, grtItem];
-                                       ThreadItem.RoundName := RoundItem.RoundName;
-                                       ThreadItem.Round := True;
-                               end;
-                       end;
+            //\82Q\8ds\96Ú\82©\82ç\81i\82P\8ds\96Ú\82Í\83o\81[\83W\83\87\83\93\81j
+            for i := sl.Count - 1 downto 1 do begin
+                Rec := ParseIndexLine(sl[i]);
+
+                if usePlugIn then
+                    ThreadItem := TThreadItem.Create(
+                        Board.BoardPlugIn,
+                        Board.BoardPlugIn.FileName2ThreadURL( DWORD( Board ), Rec.FFileName ) )
+                else
+                    ThreadItem := TThreadItem.Create(
+                        nil,
+                        Get2chBoard2ThreadURL( Board, ChangeFileExt( Rec.FFileName, '' ) ) );
+
+                if FileList.Count <> 0 then
+                    if FileList.Find( ThreadItem.FileName, Index ) then
+                        //ThreadItem.IsLogFile := True;
+                        FileList.Delete( Index );
+
+                ThreadItem.BeginUpdate;
+                ThreadItem.No := Rec.FNo;
+                ThreadItem.FileName := Rec.FFileName;
+                ThreadItem.Title := Rec.FTitle;
+                ThreadItem.Count := Rec.FCount;
+                ThreadItem.Size := Rec.FSize;
+    //                 ThreadItem.RoundNo := Rec.FRoundNo;
+                ThreadItem.RoundDate := Rec.FRoundDate;
+                ThreadItem.LastModified := Rec.FLastModified;
+                ThreadItem.Kokomade := Rec.FKokomade;
+                ThreadItem.NewReceive := Rec.FNewReceive;
+    //                 ThreadItem.Round := Rec.FRound;
+                ThreadItem.UnRead := Rec.FUnRead;
+                ThreadItem.ScrollTop := Rec.FScrollTop;
+                ThreadItem.AllResCount := Rec.FAllResCount;
+                ThreadItem.NewResCount := Rec.FNewResCount;
+                ThreadItem.AgeSage := Rec.FAgeSage;
+                ThreadItem.ParentBoard := Board;
+
+                //\8f\84\89ñ\83\8a\83X\83g\82É\91\8dÝ\82µ\82½\82ç\8f\84\89ñ\83t\83\89\83O\83Z\83b\83g
+                if ThreadItem.IsLogFile then begin
+                    idx := RoundList.Find(ThreadItem);
+                    if idx <> -1 then begin
+                        RoundItem := RoundList.Items[idx, grtItem];
+                        ThreadItem.RoundName := RoundItem.RoundName;
+                        ThreadItem.Round := True;
+                    end;
+                end;
 
-                       //\91O\89ñ\88Ù\8fí\8fI\97¹\8e\9e\83`\83F\83b\83N
-                       if TmpFileList.Count <> 0 then begin
-                               if TmpFileList.Find(ChangeFileExt(ThreadItem.FileName, '.tmp'), Index) then begin
-                                       ini := TMemIniFile.Create(ChangeFileExt(ThreadItem.GetThreadFileName, '.tmp'));
-                                       try
-                                               //ThreadItem.RoundDate := ini.ReadDateTime('Setting', 'RoundDate', ZERO_DATE);
-                        tmpStr := ini.ReadString('Setting', 'RoundDate', DateTimeToStr(ZERO_DATE));
-                                       ThreadItem.RoundDate := ConvertDateTimeString(tmpStr);
-
-                                               //ThreadItem.LastModified := ini.ReadDateTime('Setting', 'LastModified', ZERO_DATE);
-                        tmpStr := ini.ReadString('Setting', 'LastModified', DateTimeToStr(ZERO_DATE));
-                                       ThreadItem.LastModified := ConvertDateTimeString(tmpStr);
-
-                                               ThreadItem.Size := ini.ReadInteger('Setting', 'Size', 0);
-                        if ThreadItem.Size = 0 then begin
-                               ThreadItem.Size := FileSizeByName(ThreadItem.FileName) - ThreadItem.Count;
+                //\91O\89ñ\88Ù\8fí\8fI\97¹\8e\9e\83`\83F\83b\83N
+                if TmpFileList.Count <> 0 then begin
+                    if TmpFileList.Find(ChangeFileExt(ThreadItem.FileName, '.tmp'), Index) then begin
+                        ini := TMemIniFile.Create(ChangeFileExt(ThreadItem.GetThreadFileName, '.tmp'));
+                        try
+                            //ThreadItem.RoundDate := ini.ReadDateTime('Setting', 'RoundDate', ZERO_DATE);
+                            tmpStr := ini.ReadString('Setting', 'RoundDate', DateTimeToStr(ZERO_DATE));
+                            ThreadItem.RoundDate := ConvertDateTimeString(tmpStr);
+
+                            //ThreadItem.LastModified := ini.ReadDateTime('Setting', 'LastModified', ZERO_DATE);
+                            tmpStr := ini.ReadString('Setting', 'LastModified', DateTimeToStr(ZERO_DATE));
+                            ThreadItem.LastModified := ConvertDateTimeString(tmpStr);
+
+                            ThreadItem.Size := ini.ReadInteger('Setting', 'Size', 0);
+                            if ThreadItem.Size = 0 then begin
+                                ThreadItem.Size := FileSizeByName(ThreadItem.FileName) - ThreadItem.Count;
+                            end;
+                            ThreadItem.Count := ini.ReadInteger('Setting', 'Count', 0);
+                            ThreadItem.NewReceive := ini.ReadInteger('Setting', 'NewReceive', 0);
+                            ThreadItem.Round := ini.ReadBool('Setting', 'Round', False);
+                            ThreadItem.UnRead := False;//ini.ReadBool('Setting', 'UnRead', False);
+                            ThreadItem.ScrollTop := ini.ReadInteger('Setting', 'ScrollTop', 0);
+                            ThreadItem.AllResCount := ini.ReadInteger('Setting', 'AllResCount', ThreadItem.Count);
+                            ThreadItem.NewResCount := ini.ReadInteger('Setting', 'NewResCount', 0);
+                            ThreadItem.AgeSage := TGikoAgeSage(ini.ReadInteger('Setting', 'AgeSage', Ord(gasNone)));
+                        finally
+                            ini.Free;
                         end;
-                                               ThreadItem.Count := ini.ReadInteger('Setting', 'Count', 0);
-                                               ThreadItem.NewReceive := ini.ReadInteger('Setting', 'NewReceive', 0);
-                                               ThreadItem.Round := ini.ReadBool('Setting', 'Round', False);
-                                               ThreadItem.UnRead := False;//ini.ReadBool('Setting', 'UnRead', False);
-                                               ThreadItem.ScrollTop := ini.ReadInteger('Setting', 'ScrollTop', 0);
-                                               ThreadItem.AllResCount := ini.ReadInteger('Setting', 'AllResCount', ThreadItem.Count);
-                                               ThreadItem.NewResCount := ini.ReadInteger('Setting', 'NewResCount', 0);
-                                               ThreadItem.AgeSage := TGikoAgeSage(ini.ReadInteger('Setting', 'AgeSage', Ord(gasNone)));
-                                       finally
-                                               ini.Free;
-                                       end;
-                                       TmpFileList.Delete(Index);
-                               end;
-                       end;
+                        TmpFileList.Delete(Index);
+                    end;
+                end;
 
-                       ThreadItem.EndUpdate;
-                       Board.Add(ThreadItem);
+                ThreadItem.EndUpdate;
+                Board.Add(ThreadItem);
 
-//                     if (ThreadItem.IsLogFile) and (ThreadItem.Count > ThreadItem.Kokomade) then
-                       if (ThreadItem.IsLogFile) and (ThreadItem.UnRead) then
-                               Inc(UnRead);
+    //                 if (ThreadItem.IsLogFile) and (ThreadItem.Count > ThreadItem.Kokomade) then
+                if (ThreadItem.IsLogFile) and (ThreadItem.UnRead) then
+                    Inc(UnRead);
+            end;
                end;
 
                if UnRead <> Board.UnRead then
@@ -642,6 +645,7 @@ begin
                        else
                                ThreadItem := TThreadItem.Create(
                                        nil, Get2chBoard2ThreadURL( Board, ChangeFileExt( FileList[i], '' ) ) );
+
             ThreadItem.BeginUpdate;
             ThreadItem.FilePath := FileName;
                        ThreadItem.No := Board.Count + 1;
index e0ed1e7..33b35aa 100644 (file)
@@ -3,7 +3,7 @@ program gikoNavi;
 {%ToDo 'gikoNavi.todo'}
 
 uses
-//  MemCheck in 'MemCheck.pas', {'MemCheckStackTrace'\82ð\8fð\8c\8f\82É\92Ç\89Á\81B}
+  //MemCheck in 'MemCheck.pas', {'MemCheckStackTrace'\82ð\8fð\8c\8f\82É\92Ç\89Á\81B}
   Windows,
   SysUtils,
   Forms,
index d3bcb4d..bbf027e 100644 (file)
Binary files a/gikoNavi.res and b/gikoNavi.res differ