Develop and Download Open Source Software

Browse CVS Repository

Diff of /gikonavigoeson/gikonavi/AbonUnit.pas

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.22 by h677, Wed Mar 24 09:51:44 2004 UTC revision 1.23 by h677, Tue Apr 20 14:53:57 2004 UTC
# Line 63  type Line 63  type
63      function ReLoadFromNGwordFile() : Boolean;      function ReLoadFromNGwordFile() : Boolean;
64      procedure LoadFromStringList( bufstl : TStringList );      procedure LoadFromStringList( bufstl : TStringList );
65      function CheckAbonPopupRes(line : String) :Boolean;      function CheckAbonPopupRes(line : String) :Boolean;
66      function FindNGwords(line : String) : Boolean; overload;//1ラインずつ用。          function FindNGwords(const line : String; var NGwordsLineNum : Integer; var Invisible : Boolean) : Boolean;//1ラインずつ用。
67      function FindNGwords(line : String; var NGwordsLineNum : Integer) : Boolean; overload;//1ラインずつ用。          function Cutoff(line : String) : Boolean; //CutOff値以上個の同じ英数が並んでいたらtrue
     function FindNGwords(line : String; var NGwordsLineNum : Integer; var Invisible : Boolean) : Boolean; overload;//1ラインずつ用。  
     function Cutoff(line : String) : Boolean; //CutOff値以上個の同じ英数が並んでいたらtrue  
68      //あぼ〜ん処理(NGワードでのフィルタリング)      //あぼ〜ん処理(NGワードでのフィルタリング)
69      procedure Execute(var ThreadStrings : TStringList); overload;      procedure Execute(var ThreadStrings : TStringList); overload;
70      procedure Execute(var ThreadStrings : TStringList; NGwords : TStringList); overload;      procedure Execute(var ThreadStrings : TStringList; NGwords : TStringList); overload;
# Line 80  type Line 78  type
78      function GetAbonResCount() : Integer;      function GetAbonResCount() : Integer;
79      function GetAbonResString(Num : Integer) : String;      function GetAbonResString(Num : Integer) : String;
80      function CheckIndividualAbonList(ResNum : Integer) : Boolean;      function CheckIndividualAbonList(ResNum : Integer) : Boolean;
81      //--  
82      function ExecuteFile(datfilepath : String; NGwordpath : String) : Boolean; overload;//DATファイルを直にいじる          procedure EditNGwords();  //NGword.txtを開く。
     function ExecuteFile(datfilepath : String; resnum : Integer) : Boolean; overload; //DATファイルを直にいじる  
     function ExecuteFile(datfilepath : String; firstres : Integer; count : Integer) : Boolean; overload; //DATファイルを直にいじる  
     function ReverseExecuteFile(datfilepath : String) : Boolean; overload; //DATファイルを直にいじる  
     function ReverseExecuteFile(datfilepath : String; resnum : Integer) : Boolean; overload; //DATファイルを直にいじる  
     function ReverseExecuteFile(datfilepath : String; firstres : Integer; count : Integer) : Boolean; overload; //DATファイルを直にいじる  
     //--  
     procedure EditNGwords();  //NGword.txtを開く。  
83      function ShowAllTokens() : String;  //デバッグ用      function ShowAllTokens() : String;  //デバッグ用
84      //--      //--
85      procedure GoHome();//Listの1行目を読む      procedure GoHome();//Listの1行目を読む
# Line 246  var Line 237  var
237      pos : Integer;      pos : Integer;
238      buftoken : String;      buftoken : String;
239  begin  begin
240      pos := 0;          pos := 0;
241      bufstl := TStringList.Create;      bufstl := TStringList.Create;
242      try      try
243          if Length(argline) > 0 then begin          if Length(argline) > 0 then begin
# Line 295  end; Line 286  end;
286    
287  //****************************************************************************//  //****************************************************************************//
288  //NGワードが含まれてたらtrueを返す。  //NGワードが含まれてたらtrueを返す。
289  function TAbon.FindNGwords(line : String) : Boolean;  {function TAbon.FindNGwords(const line : String) : Boolean;
290  var  var
291      lines : Integer;          lines : Integer;
292      cells : Integer;          cells : Integer;
293      hit : Boolean;          hit : Boolean;
294      bufline : String;  
295  begin          bufline : String;
296      hit := false;  begin
297      if AnsiPos(FAbonString,line) <> 1 then begin          hit := false;
298          for lines := 0 to High(Ftokens) do begin          if AnsiPos(FAbonString,line) <> 1 then begin
299                  hit := true;                  for lines := 0 to High(Ftokens) do begin
300              bufline := line;                          hit := true;
301              for cells := 0 to High(Ftokens[lines]) do begin                          bufline := line;
302                  if AnsiPos(Ftokens[lines][cells],bufline) = 0 then begin                          for cells := 0 to High(Ftokens[lines]) do begin
303                          hit := false;                                  if AnsiPos(Ftokens[lines][cells],bufline) = 0 then begin
304                      break;                                          hit := false;
305                  end else begin                                          break;
306                          Delete(bufline,AnsiPos(Ftokens[lines][cells],bufline),Length(Ftokens[lines][cells]));                                  end else begin
307                  end;                                          Delete(bufline,AnsiPos(Ftokens[lines][cells],bufline),Length(Ftokens[lines][cells]));
308              end;                                  end;
309              if hit = true then begin                          end;
310                  break;                          if hit = true then begin
311              end;                                  break;
312          end;                          end;
313      end;                  end;
314      Result := hit;          end;
315            Result := hit;
316  end;  end;
317  //NGワードが含まれていたらtrueを返し、そのNGワードの行数をNGwordsLineNumに入れて返す  //NGワードが含まれていたらtrueを返し、そのNGワードの行数をNGwordsLineNumに入れて返す
318  function TAbon.FindNGwords(line : String; var NGwordsLineNum : Integer) : Boolean;  function TAbon.FindNGwords(const line : String; var NGwordsLineNum : Integer) : Boolean;
319  var  var
320      lines : Integer;          lines : Integer;
321      cells : Integer;          cells : Integer;
322      hit : Boolean;          hit : Boolean;
323      bufline : String;          bufline : String;
324  begin  begin
325      hit := false;          hit := false;
326      if AnsiPos(FAbonString,line) <> 1 then begin          if AnsiPos(FAbonString,line) <> 1 then begin
327          for lines := 0 to High(Ftokens) do begin                  for lines := 0 to High(Ftokens) do begin
328                  hit := true;                          hit := true;
329              bufline := line;                          bufline := line;
330              for cells := 0 to High(Ftokens[lines]) do begin                          for cells := 0 to High(Ftokens[lines]) do begin
331                  if AnsiPos(Ftokens[lines][cells],bufline) = 0 then begin                                  if AnsiPos(Ftokens[lines][cells],bufline) = 0 then begin
332                          hit := false;                                          hit := false;
333                      break;                                          break;
334                  end else begin                                  end else begin
335                          Delete(bufline,AnsiPos(Ftokens[lines][cells],bufline),Length(Ftokens[lines][cells]));                                          Delete(bufline,AnsiPos(Ftokens[lines][cells],bufline),Length(Ftokens[lines][cells]));
336                  end;                                  end;
337              end;                          end;
338              if hit = true then begin                          if hit = true then begin
339                  NGwordsLineNum := lines + 1;                                  NGwordsLineNum := lines + 1;
340                  break;                                  break;
341              end;                          end;
342          end;                  end;
343      end;          end;
344      Result := hit;          Result := hit;
345  end;  end;
346    }
347  //NGワードが含まれていたらtrueを返し、そのNGワードの行数をNGwordsLineNumに入れて返す。  //NGワードが含まれていたらtrueを返し、そのNGワードの行数をNGwordsLineNumに入れて返す。
348  //もしも透明あぼ〜んにするならInbisibleをtrueにして返す  //もしも透明あぼ〜んにするならInbisibleをtrueにして返す
349  function TAbon.FindNGwords(line : String; var NGwordsLineNum : Integer; var Invisible : Boolean) : Boolean; //1ラインずつ用。  function TAbon.FindNGwords(const line : String; var NGwordsLineNum : Integer; var Invisible : Boolean) : Boolean; //1ラインずつ用。
350  var  var
351      lines : Integer;          lines : Integer;
352      cells : Integer;          cells : Integer;
353      hit : Boolean;          hit : Boolean;
354      bufline : String;          bufline : String;
355      start : Integer;          start : Integer;
356  begin  begin
357      hit := false;          hit := false;
358      if AnsiPos(FAbonString,line) <> 1 then begin          if AnsiPos(FAbonString,line) <> 1 then begin
359          for lines := 0 to High(Ftokens) do begin                  for lines := 0 to High(Ftokens) do begin
360                  hit := true;                          hit := true;
361              bufline := line;              bufline := line;
362              if Ftokens[lines][0] <> ''  then begin              if Ftokens[lines][0] <> ''  then begin
363                  Invisible := false;                  Invisible := false;
# Line 422  var Line 415  var
415  begin  begin
416      for i:=0 to ThreadStrings.Count - 1 do begin      for i:=0 to ThreadStrings.Count - 1 do begin
417          NGwordsLine := 0;          NGwordsLine := 0;
418          if FindNGwords(ThreadStrings.Strings[i], NGwordsLine ,invisi) <> Reverse  then begin                  if FindNGwords(ThreadStrings.Strings[i], NGwordsLine ,invisi) <> Reverse  then begin
419              if invisi = true then begin              if invisi = true then begin
420                  ThreadStrings.Strings[i] := '';                  ThreadStrings.Strings[i] := '';
421              end else begin              end else begin
# Line 512  begin Line 505  begin
505          SetTokens(i , buf.Strings[i]);          SetTokens(i , buf.Strings[i]);
506      end;      end;
507      Execute(ThreadStrings);      Execute(ThreadStrings);
508      buf.Free;          buf.Free;
509  end;  end;
510    
511    
512  //****************************************************************************//  //****************************************************************************//
 //DATを直にいじる奴ら===========================================================  
 //NGワードを含むレスの先頭にあぼーんを挿入  
 function TAbon.ExecuteFile(datfilepath : String; NGwordpath : String) : Boolean; //DATファイルを直にいじる  
 var  
     datstl : TStringList;  
     ret : Boolean;  
     i : Integer;  
 begin  
     datstl := TStringList.Create;  
     ret := true;  
     try  
         try  
             datstl.LoadFromFile(datfilepath);  
             for i := 0 to datstl.Count -1 do begin  
                 if FindNGwords(datstl.Strings[i]) = true  then begin  
                     datstl.Strings[i] := FAbonString + datstl.Strings[i]  
                 end;  
             end;  
   
             datstl.SaveToFile(datfilepath);  
         except  
             ret := false;  
         end;  
     finally  
         datstl.Free;  
     end;  
     Result := ret;  
   
 end;  
 //指定されたレス番の先頭にあぼーん挿入  
 function TAbon.ExecuteFile(datfilepath : String; resnum : Integer) : Boolean; //DATファイルを直にいじる  
 var  
     datstl : TStringList;  
     ret : Boolean;  
 begin  
     ret := true;  
     datstl := TStringList.Create;  
     try  
         try  
             datstl.LoadFromFile(datfilepath);  
             if (resnum > 0) and (resnum <= datstl.Count) then begin  
                 if AnsiPos(FAbonString, datstl.Strings[resnum-1]) <> 1 then begin  
                     datstl.Strings[resnum-1] := FAbonString + datstl.Strings[resnum-1];  
                 end;  
             end;  
             datstl.SaveToFile(datfilepath);  
         except  
             ret := false;  
         end;  
     finally  
         datstl.Free;  
     end;  
     Result := ret;  
 end;  
 //firstresからcount個のレスの先頭にあぼーん挿入  
 function TAbon.ExecuteFile(datfilepath : String; firstres : Integer; count : Integer) : Boolean; //DATファイルを直にいじる  
 var  
     datstl : TStringList;  
     i : Integer;  
     endnum : Integer; //終わりのレス番  
     ret : Boolean;  
 begin  
     ret := true;  
     datstl := TStringList.Create;  
     try  
         try  
             datstl.LoadFromFile(datfilepath);  
             if (firstres > 0) and (firstres <= datstl.Count) then begin  
                 if firstres + count -1 > datstl.Count then begin  
                     endnum := datstl.Count;  
                 end else if count <= 0 then begin  
                     endnum := firstres + 1;  
                 end else begin  
                     endnum := firstres + count -1;  
                 end;  
   
                 for i := firstres to endnum do begin  
                     if AnsiPos(FAbonString, datstl.Strings[i-1]) <> 1 then begin  
                         datstl.Strings[i-1] := FAbonString + datstl.Strings[i-1];  
                     end;  
                 end;  
             end;  
             datstl.SaveToFile(datfilepath);  
         except  
             ret := false;  
         end;  
     finally  
         datstl.Free;  
     end;  
     Result := ret;  
 end;  
 //DATを直にいじる奴ら==========ここまで=========================================  
   
 //元に戻す奴ら==================================================================  
 function TAbon.ReverseExecuteFile(datfilepath : String) : Boolean; //DATファイルを直にいじる  
 var  
     datstl : TStringList;  
     i : Integer;  
     buf : String;  
     ret : Boolean;  
 begin  
     ret := true;  
     datstl := TStringList.Create;  
     try  
         try  
             datstl.LoadFromFile(datfilepath);  
             for i:=0 to datstl.Count -1  do begin  
                 if AnsiPos(FAbonString, datstl.Strings[i]) = 1 then begin  
                     buf := datstl.Strings[i];  
                     Delete(buf,1,Length(FAbonString));  
                     datstl.Strings[i] := buf;  
                 end;  
             end;  
             datstl.SaveToFile(datfilepath);  
         except  
             ret := false;  
         end;  
     finally  
         datstl.Free;  
     end;  
     Result := ret;  
   
 end;  
 function TAbon.ReverseExecuteFile(datfilepath : String; resnum : Integer) : Boolean; //DATファイルを直にいじる  
 var  
     datstl : TStringList;  
     buf : String;  
     ret : Boolean;  
 begin  
     ret := true;  
     datstl := TStringList.Create;  
     try  
         try  
             datstl.LoadFromFile(datfilepath);  
             if (resnum > 0) and (resnum <= datstl.Count) then begin  
                 if AnsiPos(FAbonString, datstl.Strings[resnum-1]) = 1 then begin  
                     buf := datstl.Strings[resnum-1];  
                     Delete(buf,1,Length(FAbonString));  
                     datstl.Strings[resnum-1] := buf;  
                 end;  
             end;  
             datstl.SaveToFile(datfilepath);  
         except  
             ret := false;  
         end;  
     finally  
         datstl.Free;  
     end;  
     Result := ret;  
   
 end;  
 function TAbon.ReverseExecuteFile(datfilepath : String; firstres : Integer; count : Integer) : Boolean;//DATファイルを直にいじる  
 var  
     datstl : TStringList;  
     i : Integer;  
     endnum : Integer; //終わりのレス番  
     buf : String;  
     ret : Boolean;  
 begin  
     ret := true;  
     datstl := TStringList.Create;  
     try  
         try  
             datstl.LoadFromFile(datfilepath);  
             if (firstres > 0) and (firstres <= datstl.Count) then begin  
                 if firstres + count -1 > datstl.Count then begin  
                     endnum := datstl.Count;  
                 end else if count <= 0 then begin  
                     endnum := firstres + 1;  
                 end else begin  
                     endnum := firstres + count -1;  
                 end;  
                 for i := firstres to endnum do begin  
                     if AnsiPos(FAbonString, datstl.Strings[i-1]) = 1 then begin  
                         buf := datstl.Strings[i-1];  
                         Delete(buf,1,Length(FAbonString));  
                         datstl.Strings[i-1] := buf;  
                     end;  
                 end;  
             end;  
             datstl.SaveToFile(datfilepath);  
         except  
             ret := false;  
         end;  
     finally  
         datstl.Free;  
     end;  
     Result := ret;  
 end;  
 //元に戻す奴ら=================ここまで=========================================  
513  //現在セットされているNGword.txtを開く  //現在セットされているNGword.txtを開く
514  procedure TAbon.EditNGwords();  procedure TAbon.EditNGwords();
515  begin  begin
# Line 714  begin Line 517  begin
517  end;  end;
518  //ポップアップ用判定関数  //ポップアップ用判定関数
519  function TAbon.CheckAbonPopupRes(line : String) :Boolean;  function TAbon.CheckAbonPopupRes(line : String) :Boolean;
520    var
521            i: Integer;
522            v: boolean;
523  begin  begin
524      if AbonPopupRes = true then begin          if AbonPopupRes = true then begin
525          Result := FindNGwords(line);                  Result := FindNGwords(line, i ,v);
526      end else begin      end else begin
527          Result := false;          Result := false;
528      end;      end;

Legend:
Removed from v.1.22  
changed lines
  Added in v.1.23

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26