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.15 by h677, Thu Sep 18 12:06:46 2003 UTC revision 1.16 by h677, Mon Sep 29 09:42:31 2003 UTC
# Line 28  type Line 28  type
28      FNGwordFileIndex : Integer; //現在読み込んでるNGワードがlistの何行目か      FNGwordFileIndex : Integer; //現在読み込んでるNGワードがlistの何行目か
29      FNGwordname : String; //現在読み込んでるNGワードの表示名      FNGwordname : String; //現在読み込んでるNGワードの表示名
30      FIndividualFileName : String;       //個別あぼ〜んのファイル名      FIndividualFileName : String;       //個別あぼ〜んのファイル名
31        FReturnNGwordLineNum : Boolean;     //NGワードの行数を返す。
32        FSetNGResAnchor : Boolean; //NGに該当したときに本文にそのレスへのレスアンカーをつけるかどうか
33      procedure SetTokens(index: integer ; argline:String);      procedure SetTokens(index: integer ; argline:String);
34      function Getlistpath() : String;      function Getlistpath() : String;
35      procedure Setlistpath(const Value : String);      procedure Setlistpath(const Value : String);
# Line 47  type Line 49  type
49      property listpath : String read Getlistpath write Setlistpath;      property listpath : String read Getlistpath write Setlistpath;
50      property NGwordFileIndex : Integer read FNGwordFileIndex write FNGwordFileIndex default 0;      property NGwordFileIndex : Integer read FNGwordFileIndex write FNGwordFileIndex default 0;
51      property NGwordname : String read FNGwordname write FNGwordname;      property NGwordname : String read FNGwordname write FNGwordname;
52            property ReturnNGwordLineNum : Boolean read FReturnNGwordLineNum write FReturnNGwordLineNum default false;
53        property SetNGResAnchor : Boolean read FSetNGResAnchor write FSetNGResAnchor default false;
54      procedure Setroot(root :String);      procedure Setroot(root :String);
55      function Getroot() : String;      function Getroot() : String;
56    
# Line 57  type Line 61  type
61      function ReLoadFromNGwordFile() : Boolean;      function ReLoadFromNGwordFile() : Boolean;
62      procedure LoadFromStringList( bufstl : TStringList );      procedure LoadFromStringList( bufstl : TStringList );
63      function CheckAbonPopupRes(line : String) :Boolean;      function CheckAbonPopupRes(line : String) :Boolean;
64      function FindNGwords(line : String) : Boolean; //1ラインずつ用。      function FindNGwords(line : String) : Boolean; overload;//1ラインずつ用。
65        function FindNGwords(line : String; var NGwordsLineNum : Integer) : Boolean; overload;//1ラインずつ用。
66      function Cutoff(line : String) : Boolean; //CutOff値以上個の同じ英数が並んでいたらtrue      function Cutoff(line : String) : Boolean; //CutOff値以上個の同じ英数が並んでいたらtrue
67      //あぼ〜ん処理(NGワードでのフィルタリング)      //あぼ〜ん処理(NGワードでのフィルタリング)
68      procedure Execute(var ThreadStrings : TStringList); overload;      procedure Execute(var ThreadStrings : TStringList); overload;
# Line 305  begin Line 310  begin
310          end;          end;
311      end;      end;
312      Result := hit;      Result := hit;
313    end;
314    //NGワードが含まれていたらtrueを返し、そのNGワードの行数をNGwordsLineNumに入れて返す
315    function TAbon.FindNGwords(line : String; var NGwordsLineNum : Integer) : Boolean;
316    var
317        lines : Integer;
318        cells : Integer;
319        hit : Boolean;
320        bufline : String;
321    begin
322        hit := false;
323        if AnsiPos(FAbonString,line) <> 1 then begin
324            for lines := 0 to High(Ftokens) do begin
325                    hit := true;
326                bufline := line;
327                for cells := 0 to High(Ftokens[lines]) do begin
328                    if AnsiPos(Ftokens[lines][cells],bufline) = 0 then begin
329                            hit := false;
330                        break;
331                    end else begin
332                            Delete(bufline,AnsiPos(Ftokens[lines][cells],bufline),Length(Ftokens[lines][cells]));
333                    end;
334                end;
335                if hit = true then begin
336                    NGwordsLineNum := lines + 1;
337                    break;
338                end;
339            end;
340        end;
341        Result := hit;
342  end;  end;
343  //CutOff値以上個の同じ英数が並んでいたらtrue  //CutOff値以上個の同じ英数が並んでいたらtrue
344  function TAbon.Cutoff(line : String) : Boolean;  function TAbon.Cutoff(line : String) : Boolean;
# Line 332  end; Line 365  end;
365  procedure TAbon.Execute(var ThreadStrings : TStringList);  procedure TAbon.Execute(var ThreadStrings : TStringList);
366  var  var
367      i : Integer;      i : Integer;
368        NGwordsLine : Integer;
369      bufline : String;      bufline : String;
370  begin  begin
371      //FRetStrings.Clear;      //FRetStrings.Clear;
372        if not ReturnNGwordLineNum then begin
373        //if ReturnNGwordLineNum then begin
374            for i:=0 to ThreadStrings.Count - 1 do begin
375                    if FindNGwords(ThreadStrings.Strings[i]) <> Reverse  then begin
376                    if not SetNGResAnchor then
377                            ThreadStrings.Strings[i] := FAbonString
378                    else
379                            ThreadStrings.Strings[i] := Format('&nbsp;<>&nbsp;<>&nbsp;<>&gt;%d<><>',[(i+1)]);
380                    end else begin
381                    bufline := ThreadStrings.Strings[i];
382                    if Deleterlo = true then begin
383                            bufline := AnsiReplaceText( bufline,'&rlo;','' );
384                    end;
385                    if Replaceul = true then begin
386                            bufline := AnsiReplaceText( bufline,'<ul>','<br>' );
387                            bufline := AnsiReplaceText( bufline,'</ul>','<br>' );
388                    end;
389                    ThreadStrings.Strings[i] := bufline;
390                    end;
391            end;
392        end else begin
393            for i:=0 to ThreadStrings.Count - 1 do begin
394                NGwordsLine := 0;
395                    if FindNGwords(ThreadStrings.Strings[i], NGwordsLine) <> Reverse  then begin
396                    if not SetNGResAnchor then
397                        ThreadStrings.Strings[i] := Format('&nbsp;<>&nbsp;<>&nbsp;<><B> %d 行目のNGワードが含まれています。</B><><>',[NGwordsLine])
398                    else
399                            ThreadStrings.Strings[i] := Format('&nbsp;<>&nbsp;<>&nbsp;<><B> %d 行目のNGワードが含まれています。</B>&gt;%d <><>',[NGwordsLine,(i+1)]);
400                    end else begin
401                    bufline := ThreadStrings.Strings[i];
402                    if Deleterlo = true then begin
403                            bufline := AnsiReplaceText( bufline,'&rlo;','' );
404                    end;
405                    if Replaceul = true then begin
406                            bufline := AnsiReplaceText( bufline,'<ul>','<br>' );
407                            bufline := AnsiReplaceText( bufline,'</ul>','<br>' );
408                    end;
409                    ThreadStrings.Strings[i] := bufline;
410                    end;
411            end;
412    
     for i:=0 to ThreadStrings.Count - 1 do begin  
         if FindNGwords(ThreadStrings.Strings[i]) <> Reverse  then begin  
             ThreadStrings.Strings[i] := FAbonString;  
         end else begin  
             bufline := ThreadStrings.Strings[i];  
             if Deleterlo = true then begin  
                 bufline := AnsiReplaceText( bufline,'&rlo;','' );  
             end;  
             if Replaceul = true then begin  
                 bufline := AnsiReplaceText( bufline,'<ul>','<br>' );  
                 bufline := AnsiReplaceText( bufline,'</ul>','<br>' );  
             end;  
             ThreadStrings.Strings[i] := bufline;  
         end;  
413      end;      end;
414    
415  end;  end;

Legend:
Removed from v.1.15  
changed lines
  Added in v.1.16

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