OSDN Git Service

取得範囲外のレスを取得しようとしたときに例外が出ないように範囲チェックするようにした。
authorh677 <h677>
Fri, 27 Aug 2004 21:01:46 +0000 (21:01 +0000)
committerh677 <h677>
Fri, 27 Aug 2004 21:01:46 +0000 (21:01 +0000)
res/ExternalBoardPlugIn/MachiBBSPlugIn.dpr
res/ExternalBoardPlugIn/ShitarabaJBBSPlugIn.dpr

index ef6e2ac..4c063e0 100644 (file)
@@ -563,12 +563,12 @@ begin
        // \93Æ\8e©\82É\83t\83B\83\8b\83^\83\8a\83\93\83O\82ð\8ds\82í\82È\82¢\8fê\8d\87\82Í
        // InternalAbon \82¨\82æ\82Ñ Dat2HTML \82É\94C\82¹\82é\82±\82Æ\82ª\8fo\97\88\82é
        LoadDat;
-       if FDat = nil then begin
+       if (FDat = nil) or (inNo - 1 < 0 ) or (inNo - 1 >= FDat.Count) then begin
                // \83\8d\83O\82É\91\8dÝ\82µ\82È\82¢\82Ì\82Å\82±\82Ì\82Ü\82Ü\8fI\97¹
                Result := '';
                Exit;
        end;
-    res                        := FDat[ inNo - 1 ];
+       res                     := FDat[ inNo - 1 ];
        tmp                     := InternalAbonForOne( PChar( res ), PChar(FilePath), inNo);
     try
                Result  := Dat2HTML( string( tmp ), inNo );
@@ -591,7 +591,7 @@ begin
        //Result        := '';
        // \93Æ\8e©\82É\83t\83B\83\8b\83^\83\8a\83\93\83O\82ð\8ds\82í\82È\82¢\8fê\8d\87\82Í
        LoadDat;
-       if FDat = nil then begin
+       if (FDat = nil) or (inNo - 1 < 0 ) or (inNo - 1 >= FDat.Count)  then begin
                // \83\8d\83O\82É\91\8dÝ\82µ\82È\82¢\82Ì\82Å\82±\82Ì\82Ü\82Ü\8fI\97¹
                tmp := CreateResultString('');
                Result := tmp;
index 1530b60..5d5afb6 100644 (file)
@@ -3,7 +3,7 @@ library ShitarabaJBBSPlugIn;
 {
        ShitarabaJBBSPlugIn
        \82µ\82½\82ç\82Î\8f\88\97\9d\83\86\83j\83b\83g
-       $Id: ShitarabaJBBSPlugIn.dpr,v 1.28 2004/08/27 20:48:14 h677 Exp $
+       $Id: ShitarabaJBBSPlugIn.dpr,v 1.29 2004/08/27 21:01:46 h677 Exp $
 }
 
 uses
@@ -1037,12 +1037,17 @@ begin
        end;
        res := Copy( FDat[ inNo - 1 ], AnsiPos( '<>', FDat[ inNo - 1 ] ) + 2, MaxInt );
                }
-               res := GetDat( inNo );
-       tmp := InternalAbonForOne( PChar( res ), PChar( FilePath ),inNo );
-       try
-               Result := Dat2HTML( string( tmp ), inNo );
-       finally
-               DisposeResultString( tmp );
+       res := GetDat( inNo );
+       if res = '' then begin
+               Result := '';
+               Exit;
+       end else begin
+               tmp := InternalAbonForOne( PChar( res ), PChar( FilePath ),inNo );
+               try
+                       Result := Dat2HTML( string( tmp ), inNo );
+               finally
+                       DisposeResultString( tmp );
+               end;
        end;
 
 end;
@@ -1063,23 +1068,21 @@ begin
        // \93Æ\8e©\82É\83t\83B\83\8b\83^\83\8a\83\93\83O\82ð\8ds\82í\82È\82¢\8fê\8d\87\82Í
        // InternalAbon \82¨\82æ\82Ñ Dat2HTML \82É\94C\82¹\82é\82±\82Æ\82ª\8fo\97\88\82é
        LoadDat;
-       if FDat = nil then begin
+       if (FDat = nil) or (inNo - 1 < 0 ) or (inNo - 1 >= FDat.Count) then begin
                // \83\8d\83O\82É\91\8dÝ\82µ\82È\82¢\82Ì\82Å\82±\82Ì\82Ü\82Ü\8fI\97¹
                Result := '';
                Exit;
        end;
        try
-               if( inNo - 1 >= 0 ) and (inNo - 1 < FDat.Count) then begin
-                       res := Copy( FDat[ inNo - 1 ], AnsiPos( '<>', FDat[ inNo - 1 ] ) + 2, MaxInt );
-                       //\96\96\94ö\82ÉID\82ª\95\\8e¦\82³\82ê\82Ä\82¢\82é\82Ì\82Å\82»\82ê\82ð\93\8a\8de\93ú\82Ì\82Æ\82±\82ë\82É\93ü\82ê\82é
-                       // \96¼\91O<>\83\81\81[\83\8b<>\93ú\95t<>\96{\95¶<>\83X\83\8c\83^\83C<>ID
-                       for i := 0 to 4 do begin
-                               tmp[ i + 1 ] := Copy( res, 1, AnsiPos('<>', res) - 1 );
-                               Delete( res, 1, AnsiPos('<>', res) + 1 );
-                       end;
-                       // \96¼\91O<>\83\81\81[\83\8b<>\93ú\95tID<>\96{\95¶<>\83X\83\8c\83^\83C
-                       pTmp := CreateResultString(tmp[1] + '<>' + tmp[2] + '<>' + tmp[3] + ' ' + res + '<>'+ tmp[4] + '<>' +tmp[5]);
-        end;
+               res := Copy( FDat[ inNo - 1 ], AnsiPos( '<>', FDat[ inNo - 1 ] ) + 2, MaxInt );
+               //\96\96\94ö\82ÉID\82ª\95\\8e¦\82³\82ê\82Ä\82¢\82é\82Ì\82Å\82»\82ê\82ð\93\8a\8de\93ú\82Ì\82Æ\82±\82ë\82É\93ü\82ê\82é
+               // \96¼\91O<>\83\81\81[\83\8b<>\93ú\95t<>\96{\95¶<>\83X\83\8c\83^\83C<>ID
+               for i := 0 to 4 do begin
+                       tmp[ i + 1 ] := Copy( res, 1, AnsiPos('<>', res) - 1 );
+                       Delete( res, 1, AnsiPos('<>', res) + 1 );
+               end;
+               // \96¼\91O<>\83\81\81[\83\8b<>\93ú\95tID<>\96{\95¶<>\83X\83\8c\83^\83C
+               pTmp := CreateResultString(tmp[1] + '<>' + tmp[2] + '<>' + tmp[3] + ' ' + res + '<>'+ tmp[4] + '<>' +tmp[5]);
                Result := string(pTmp);
        finally
                DisposeResultString(pTmp);