5 Windows,Messages, ShellAPI, SysUtils, Classes,StdCtrls,StrUtils;
10 option: Integer; // 0:
\93§
\96¾ 1:
\92Ê
\8fí
\82 \82Ú
\81[
\82ñ
13 TAbon = class(TObject)
19 Ftokens : array of array of string;
20 FAbonRes : array of TIndiviAbon;
22 FCutoffNum : Integer; //
\82±
\82Ì
\90\94\88È
\8fã
\98A
\91±
\82·
\82é
\93¯
\82¶
\89p
\8e\9a\82ðNG
\83\8f\81[
\83h
\82Æ
\82·
\82é
23 FDeleterlo : Boolean; //&rlo;
\82ð
\8dí
\82é
\82© //
\92Ç
\89Á&lro;
\82à
\8dí
\82é
24 FReplaceul :Boolean ; //<ul>
\83^
\83O
\82ð<br>
\83^
\83O
\82É
\92u
\8a·
\82·
\82é
\82©
25 FReverse : Boolean ; //NG
\83\8f\81[
\83h
\82Å
\82Ì
\82 \82Ú
\81`
\82ñ
\82Ì
\8c\8b\89Ê
\82ð
\94½
\93]
\82³
\82¹
\82é
\82©
26 FAbonPopupRes : Boolean; //
\83\8c\83X
\83|
\83b
\83v
\83A
\83b
\83v
\82Ì
\8e\9e\82É
\82 \82Ú
\81[
\82ñ
\82·
\82é
\82©
27 FCreateNGwordFile : Boolean; //
\8ew
\92è
\82³
\82ê
\82½path
\82ÉNG
\83\8f\81[
\83htxt
\82ª
\96³
\82©
\82Á
\82½
\82Æ
\82«
\82É
\8e©
\93®
\93I
\82É
\90¶
\90¬
\82·
\82é
\82©
28 FNGwordFileIndex : Integer; //
\8c»
\8dÝ
\93Ç
\82Ý
\8d\9e\82ñ
\82Å
\82éNG
\83\8f\81[
\83h
\82ªlist
\82Ì
\89½
\8ds
\96Ú
\82©
29 FNGwordname : String; //
\8c»
\8dÝ
\93Ç
\82Ý
\8d\9e\82ñ
\82Å
\82éNG
\83\8f\81[
\83h
\82Ì
\95\
\8e¦
\96¼
30 FIndividualFileName : String; //
\8cÂ
\95Ê
\82 \82Ú
\81`
\82ñ
\82Ì
\83t
\83@
\83C
\83\8b\96¼
31 FReturnNGwordLineNum : Boolean; //NG
\83\8f\81[
\83h
\82Ì
\8ds
\90\94\82ð
\95Ô
\82·
\81B
32 FSetNGResAnchor : Boolean; //NG
\82É
\8aY
\93\96\82µ
\82½
\82Æ
\82«
\82É
\96{
\95¶
\82É
\82»
\82Ì
\83\8c\83X
\82Ö
\82Ì
\83\8c\83X
\83A
\83\93\83J
\81[
\82ð
\82Â
\82¯
\82é
\82©
\82Ç
\82¤
\82©
33 procedure SetTokens(index: integer ; argline:String);
34 function Getlistpath() : String;
35 procedure Setlistpath(const Value : String);
36 function LoadListFile(path :String;listStringList : TStringList) : Boolean;
37 function ReadNGwordslist(line : Integer) : Boolean;
38 function LoadFromSetResNumFile(SetResNumFile : String) : Boolean;
41 constructor Create; //
\83R
\83\93\83X
\83g
\83\89\83N
\83^
42 destructor Destroy; override; //
\83f
\83X
\83g
\83\89\83N
\83^
43 property Deleterlo: Boolean read FDeleterlo write FDeleterlo default false;
44 property Replaceul: Boolean read FReplaceul write FReplaceul default false;
45 property Reverse: Boolean read FReverse write FReverse default false;
46 property CreateNGwordFile: Boolean read FCreateNGwordFile write FCreateNGwordFile;
47 property AbonString : String read FAbonString write FAbonString;
48 property AbonPopupRes : Boolean read FAbonPopupRes write FAbonPopupRes default false;
49 property listpath : String read Getlistpath write Setlistpath;
50 property NGwordFileIndex : Integer read FNGwordFileIndex write FNGwordFileIndex default 0;
51 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);
55 function Getroot() : String;
57 function Getfullpath(argpath : String) : String;
58 procedure SetNGwordpath(path :String);
59 function GetNGwordpath() : String;
60 function LoadFromNGwordFile(path :String) : Boolean;
61 function ReLoadFromNGwordFile() : Boolean;
62 procedure LoadFromStringList( bufstl : TStringList );
63 function CheckAbonPopupRes(line : String) :Boolean;
64 function FindNGwords(line : String) : Boolean; overload;//1
\83\89\83C
\83\93\82¸
\82Â
\97p
\81B
65 function FindNGwords(line : String; var NGwordsLineNum : Integer) : Boolean; overload;//1
\83\89\83C
\83\93\82¸
\82Â
\97p
\81B
66 function FindNGwords(line : String; var NGwordsLineNum : Integer; var Invisible : Boolean) : Boolean; overload;//1
\83\89\83C
\83\93\82¸
\82Â
\97p
\81B
67 function Cutoff(line : String) : Boolean; //CutOff
\92l
\88È
\8fã
\8cÂ
\82Ì
\93¯
\82¶
\89p
\90\94\82ª
\95À
\82ñ
\82Å
\82¢
\82½
\82çtrue
68 //
\82 \82Ú
\81`
\82ñ
\8f\88\97\9d(NG
\83\8f\81[
\83h
\82Å
\82Ì
\83t
\83B
\83\8b\83^
\83\8a\83\93\83O)
69 procedure Execute(var ThreadStrings : TStringList); overload;
70 procedure Execute(var ThreadStrings : TStringList; NGwords : TStringList); overload;
71 procedure Execute(var ThreadStrings : TStringList; NGwords : TStrings); overload;
72 procedure Execute(var ResString : String; ResNumber : Integer); overload; //
\8eå
\82Éplugin
\82©
\82ç
\82ÌDat To HTML
\97p
73 //
\8cÂ
\95Ê
\82 \82Ú
\81`
\82ñ
\82µ
\82å
\82è
74 procedure IndividualAbon(var ThreadStrings : TStringList; SetResNumFile : String); overload;
75 procedure IndividualAbon(var ResString : String; SetResNumFile : String; ResNumber : Integer); overload;
76 procedure AddIndividualAbon( ResNum : Integer ; option : Integer);
77 procedure DeleteIndividualAbon( ResNum : Integer);
78 function GetAbonResCount() : Integer;
79 function GetAbonResString(Num : Integer) : String;
80 function CheckIndividualAbonList(ResNum : Integer) : Boolean;
82 function ExecuteFile(datfilepath : String; NGwordpath : String) : Boolean; overload;//DAT
\83t
\83@
\83C
\83\8b\82ð
\92¼
\82É
\82¢
\82¶
\82é
83 function ExecuteFile(datfilepath : String; resnum : Integer) : Boolean; overload; //DAT
\83t
\83@
\83C
\83\8b\82ð
\92¼
\82É
\82¢
\82¶
\82é
84 function ExecuteFile(datfilepath : String; firstres : Integer; count : Integer) : Boolean; overload; //DAT
\83t
\83@
\83C
\83\8b\82ð
\92¼
\82É
\82¢
\82¶
\82é
85 function ReverseExecuteFile(datfilepath : String) : Boolean; overload; //DAT
\83t
\83@
\83C
\83\8b\82ð
\92¼
\82É
\82¢
\82¶
\82é
86 function ReverseExecuteFile(datfilepath : String; resnum : Integer) : Boolean; overload; //DAT
\83t
\83@
\83C
\83\8b\82ð
\92¼
\82É
\82¢
\82¶
\82é
87 function ReverseExecuteFile(datfilepath : String; firstres : Integer; count : Integer) : Boolean; overload; //DAT
\83t
\83@
\83C
\83\8b\82ð
\92¼
\82É
\82¢
\82¶
\82é
89 procedure EditNGwords(); //NGword.txt
\82ð
\8aJ
\82
\81B
90 function ShowAllTokens() : String; //
\83f
\83o
\83b
\83O
\97p
92 procedure GoHome();//List
\82Ì
\82P
\8ds
\96Ú
\82ð
\93Ç
\82Þ
93 function GoForward() : Boolean; //List
\82Ì
\88ê
\82Â
\8e\9f\82ÌNG
\83\8f\81[
\83h
\83t
\83@
\83C
\83\8b\82ð
\93Ç
\82Ý
\8d\9e\82Þ
94 function GoBack() : Boolean; //List
\82Ì
\88ê
\82Â
\91O
\82ÌNG
\83\8f\81[
\83h
\83t
\83@
\83C
\83\8b\82ð
\93Ç
\82Ý
\8d\9e\82Þ
99 NGwordListFileName : String = 'NGwords.list';
103 constructor TAbon.Create;
106 FAbonString := ' <> <> <> <><>';
107 FCreateNGwordFile := true;
108 SetLength(FAbonRes,1);
109 FAbonRes[0].Res := 0;
110 FAbonRes[0].option := -1;
114 destructor TAbon.Destroy;
118 //root
\82ÍExe\config\NGwords
\83t
\83H
\83\8b\83_
119 procedure TAbon.Setroot(root :String);
121 bufStringList : TStringList;
123 bufStringList := TStringList.Create;
125 if not DirectoryExists(root) then begin
128 if root[Length(root)] <> '\' then begin
131 Flistpath := root + NGwordListFileName;
132 LoadListFile(Flistpath, bufStringList);
138 function TAbon.Getroot() : String;
142 //NGwordpath
\82ÍNGword.txt
\82Ì
\83t
\83\8b\83p
\83X
143 procedure TAbon.SetNGwordpath(path :String);
145 FNGwordpath := Getfullpath(path);
146 LoadFromNGwordFile(FNGwordpath);
148 function TAbon.GetNGwordpath() : String;
150 Result := FNGwordpath;
152 //
\83t
\83\8b\83p
\83X
\82Å
\82È
\82¯
\82ê
\82Î
\83t
\83\8b\83p
\83X
\82É
\82µ
\82Ä
\95Ô
\82·
\81B
153 function TAbon.Getfullpath(argpath : String) : String;
155 if AnsiPos(':\',argpath) <> 2 then begin //
\83h
\83\89\83C
\83u
\82©
\82ç
\82Ì
\83t
\83\8b\83p
\83X
\82ª
\96³
\82¯
\82ê
\82Î
156 if Getroot() = '' then begin
157 Result := ''; //root
\83p
\83X
\82ª
\90Ý
\92è
\82³
\82ê
\82Ä
\82È
\82¢
\82©
\8bó
\82É
\82·
\82é
159 if (Froot[Length(Froot)] = '\') and (argpath[1] = '\') then begin //
\90æ
\93ª
\82Ì\
\82ð
\8dí
\8f\9c
162 Insert( Getroot(), argpath , 1);//root
\83p
\83X
\82ð
\91}
\93ü
170 //NGword
\83t
\83@
\83C
\83\8b\82Ì
\93Ç
\82Ý
\8d\9e\82Ý
171 function TAbon.LoadFromNGwordFile(path :String) : boolean;
173 bufstl : TStringList;
175 path := Getfullpath(path);
176 if path = '' then begin
179 bufstl := TStringList.Create;
182 bufstl.LoadFromFile(path);
183 LoadFromStringList( bufstl );
186 if CreateNGwordFile = true then begin
187 bufstl.SaveToFile(path);
197 //NGword
\83\8a\83X
\83g
\93Ç
\82Ý
\8d\9e\82Ý
198 procedure TAbon.LoadFromStringList( bufstl : TStringList );
203 for i := bufstl.Count -1 downto 0 do begin
204 if bufstl.Strings[i] = '' then begin
208 SetLength(Ftokens,bufstl.Count);
209 for i := 0 to bufstl.Count -1 do begin
210 SetTokens(i , bufstl.Strings[i]);
217 //NGwordpath
\82ª
\8aù
\82É
\90Ý
\92è
\82³
\82ê
\82Ä
\82¢
\82é
\82Æ
\82«
\82Ì
\83\8a\83\8d\81[
\83h
\97p
\8aÖ
\90\94
218 function TAbon.ReLoadFromNGwordFile() : boolean;
220 if GetNGwordpath() ='' then begin
223 Result := LoadFromNGwordFile( GetNGwordpath() );
226 function TAbon.Getlistpath() : String;
230 procedure TAbon.Setlistpath(const Value : String);
232 Flistpath := Getfullpath(Value);
234 //
\88ê
\8ds
\82Ì
\92\86\82Ì
\83g
\81[
\83N
\83\93\82ð
\90Ø
\82è
\95ª
\82¯
\82Ä
\83Z
\83b
\83g
235 procedure TAbon.SetTokens(index: integer ; argline : String);
238 bufstl : TStringList;
244 bufstl := TStringList.Create;
246 if Length(argline) > 0 then begin
247 pos := AnsiPos(#9,argline);
248 while pos <> 0 DO begin
249 buftoken := Copy(argline,1,pos-1);
250 Delete(argline,1,pos);
251 if Length(buftoken) > 0 then begin
252 bufstl.Append(buftoken);
253 end else if ( bufstl.Count = 0 ) then begin
256 pos := AnsiPos(#9,argline);
258 if Length(argline) > 0 then begin
259 bufstl.Append(argline);
262 SetLength(Ftokens[index],ret);
263 for i := 0 to bufstl.Count - 1 do begin
264 Ftokens[index][i] := bufstl.Strings[i];
272 //Debug
\97p
\82¿
\82á
\82ñ
\82ÆNG
\83\8f\81[
\83h
\82ð
\8fE
\82¦
\82Ä
\82¢
\82é
\82©
273 function TAbon.ShowAllTokens() : String;
279 for i := 0 to High(Ftokens) do begin
280 for j := 0 to High(Ftokens[i]) do begin
281 ret := ret + Ftokens[i][j];
290 //****************************************************************************//
291 //NG
\83\8f\81[
\83h
\82ª
\8aÜ
\82Ü
\82ê
\82Ä
\82½
\82çtrue
\82ð
\95Ô
\82·
\81B
292 function TAbon.FindNGwords(line : String) : Boolean;
300 if AnsiPos(FAbonString,line) <> 1 then begin
301 for lines := 0 to High(Ftokens) do begin
304 for cells := 0 to High(Ftokens[lines]) do begin
305 if AnsiPos(Ftokens[lines][cells],bufline) = 0 then begin
309 Delete(bufline,AnsiPos(Ftokens[lines][cells],bufline),Length(Ftokens[lines][cells]));
312 if hit = true then begin
319 //NG
\83\8f\81[
\83h
\82ª
\8aÜ
\82Ü
\82ê
\82Ä
\82¢
\82½
\82çtrue
\82ð
\95Ô
\82µ
\81A
\82»
\82ÌNG
\83\8f\81[
\83h
\82Ì
\8ds
\90\94\82ðNGwordsLineNum
\82É
\93ü
\82ê
\82Ä
\95Ô
\82·
320 function TAbon.FindNGwords(line : String; var NGwordsLineNum : Integer) : Boolean;
328 if AnsiPos(FAbonString,line) <> 1 then begin
329 for lines := 0 to High(Ftokens) do begin
332 for cells := 0 to High(Ftokens[lines]) do begin
333 if AnsiPos(Ftokens[lines][cells],bufline) = 0 then begin
337 Delete(bufline,AnsiPos(Ftokens[lines][cells],bufline),Length(Ftokens[lines][cells]));
340 if hit = true then begin
341 NGwordsLineNum := lines + 1;
348 //NG
\83\8f\81[
\83h
\82ª
\8aÜ
\82Ü
\82ê
\82Ä
\82¢
\82½
\82çtrue
\82ð
\95Ô
\82µ
\81A
\82»
\82ÌNG
\83\8f\81[
\83h
\82Ì
\8ds
\90\94\82ðNGwordsLineNum
\82É
\93ü
\82ê
\82Ä
\95Ô
\82·
\81B
349 //
\82à
\82µ
\82à
\93§
\96¾
\82 \82Ú
\81`
\82ñ
\82É
\82·
\82é
\82È
\82çInbisible
\82ðtrue
\82É
\82µ
\82Ä
\95Ô
\82·
350 function TAbon.FindNGwords(line : String; var NGwordsLineNum : Integer; var Invisible : Boolean) : Boolean; //1
\83\89\83C
\83\93\82¸
\82Â
\97p
\81B
359 if AnsiPos(FAbonString,line) <> 1 then begin
360 for lines := 0 to High(Ftokens) do begin
363 if Ftokens[lines][0] <> '' then begin
371 for cells := start to High(Ftokens[lines]) do begin
372 if AnsiPos(Ftokens[lines][cells],bufline) = 0 then begin
376 Delete(bufline,AnsiPos(Ftokens[lines][cells],bufline),Length(Ftokens[lines][cells]));
379 if hit = true then begin
380 NGwordsLineNum := lines + 1;
388 //CutOff
\92l
\88È
\8fã
\8cÂ
\82Ì
\93¯
\82¶
\89p
\90\94\82ª
\95À
\82ñ
\82Å
\82¢
\82½
\82çtrue
389 function TAbon.Cutoff(line : String) : Boolean;
397 if FCutoffNum <> 0 then begin
398 for i := 65 to 90 do begin
400 buf := DupeString(sheed, FCutoffNum);
401 if AnsiContainsText(line, buf) = true then begin
409 //
\96\96\94ö
\82Ì
\83u
\81[
\83\8b\92l
\82Ítrue
\82¾
\82Æ
\81ANG
\83\8f\81[
\83h
\82ð
\8aÜ
\82Þ
\82à
\82Ì
\82¾
\82¯
\82ð
\95Ô
\82·
\81B
410 procedure TAbon.Execute(var ThreadStrings : TStringList);
413 NGwordsLine : Integer;
417 for i:=0 to ThreadStrings.Count - 1 do begin
419 if FindNGwords(ThreadStrings.Strings[i], NGwordsLine ,invisi) <> Reverse then begin
420 if invisi = true then begin
421 ThreadStrings.Strings[i] := '';
423 if not ReturnNGwordLineNum and not SetNGResAnchor then begin
424 ThreadStrings.Strings[i] := FAbonString;
425 end else if not ReturnNGwordLineNum then begin
426 ThreadStrings.Strings[i] := Format(' <> <> <>>%d<><>',[(i+1)]);
427 end else if not SetNGResAnchor then begin
428 ThreadStrings.Strings[i] := Format(' <> <> <><B> %d
\8ds
\96Ú
\82ÌNG
\83\8f\81[
\83h
\82ª
\8aÜ
\82Ü
\82ê
\82Ä
\82¢
\82Ü
\82·
\81B</B><><>',[NGwordsLine]);
430 ThreadStrings.Strings[i] := Format(' <> <> <><B> %d
\8ds
\96Ú
\82ÌNG
\83\8f\81[
\83h
\82ª
\8aÜ
\82Ü
\82ê
\82Ä
\82¢
\82Ü
\82·
\81B</B>>%d <><>',[NGwordsLine,(i+1)]);
434 bufline := ThreadStrings.Strings[i];
435 if Deleterlo = true then begin
436 bufline := AnsiReplaceText( bufline,'&rlo;','' );
437 bufline := AnsiReplaceText( bufline,'&lro;','' );
439 if Replaceul = true then begin
440 bufline := AnsiReplaceText( bufline,'<ul>','<br>' );
441 bufline := AnsiReplaceText( bufline,'</ul>','<br>' );
443 ThreadStrings.Strings[i] := bufline;
447 procedure TAbon.Execute(var ResString : String; ResNumber : Integer);
450 NGwordsLine : Integer;
455 if FindNGwords(ResString, NGwordsLine ,invisi) <> Reverse then begin
456 if invisi = true then begin
459 if not ReturnNGwordLineNum and not SetNGResAnchor then begin
460 ResString := FAbonString;
461 end else if not ReturnNGwordLineNum then begin
462 ResString := Format(' <> <> <>>%d<><>',[(ResNumber)]);
463 end else if not SetNGResAnchor then begin
464 ResString := Format(' <> <> <><B> %d
\8ds
\96Ú
\82ÌNG
\83\8f\81[
\83h
\82ª
\8aÜ
\82Ü
\82ê
\82Ä
\82¢
\82Ü
\82·
\81B</B><><>',[NGwordsLine]);
466 ResString := Format(' <> <> <><B> %d
\8ds
\96Ú
\82ÌNG
\83\8f\81[
\83h
\82ª
\8aÜ
\82Ü
\82ê
\82Ä
\82¢
\82Ü
\82·
\81B</B>>%d <><>',[NGwordsLine,(ResNumber)]);
470 bufline := ResString;
471 if Deleterlo = true then begin
472 bufline := AnsiReplaceText( bufline,'&rlo;','' );
473 bufline := AnsiReplaceText( bufline,'&lro;','' );
475 if Replaceul = true then begin
476 bufline := AnsiReplaceText( bufline,'<ul>','<br>' );
477 bufline := AnsiReplaceText( bufline,'</ul>','<br>' );
479 ResString := bufline;
483 procedure TAbon.Execute(var ThreadStrings : TStringList; NGwords : TStringList);
487 SetLength(Ftokens,NGwords.Count);
488 for i := 0 to NGwords.Count -1 do begin
489 SetTokens(i , NGwords.Strings[i]);
491 Execute(ThreadStrings);
494 procedure TAbon.Execute(var ThreadStrings : TStringList; NGwords : TStrings);
499 buf := TStringList.Create;
500 buf.AddStrings(NGwords);
501 SetLength(Ftokens,buf.Count);
502 for i := 0 to buf.Count -1 do begin
503 SetTokens(i , buf.Strings[i]);
505 Execute(ThreadStrings);
510 //****************************************************************************//
511 //DAT
\82ð
\92¼
\82É
\82¢
\82¶
\82é
\93z
\82ç===========================================================
512 //NG
\83\8f\81[
\83h
\82ð
\8aÜ
\82Þ
\83\8c\83X
\82Ì
\90æ
\93ª
\82É
\82 \82Ú
\81[
\82ñ
\82ð
\91}
\93ü
513 function TAbon.ExecuteFile(datfilepath : String; NGwordpath : String) : Boolean; //DAT
\83t
\83@
\83C
\83\8b\82ð
\92¼
\82É
\82¢
\82¶
\82é
515 datstl : TStringList;
519 datstl := TStringList.Create;
523 datstl.LoadFromFile(datfilepath);
524 for i := 0 to datstl.Count -1 do begin
525 if FindNGwords(datstl.Strings[i]) = true then begin
526 datstl.Strings[i] := FAbonString + datstl.Strings[i]
530 datstl.SaveToFile(datfilepath);
540 //
\8ew
\92è
\82³
\82ê
\82½
\83\8c\83X
\94Ô
\82Ì
\90æ
\93ª
\82É
\82 \82Ú
\81[
\82ñ
\91}
\93ü
541 function TAbon.ExecuteFile(datfilepath : String; resnum : Integer) : Boolean; //DAT
\83t
\83@
\83C
\83\8b\82ð
\92¼
\82É
\82¢
\82¶
\82é
543 datstl : TStringList;
547 datstl := TStringList.Create;
550 datstl.LoadFromFile(datfilepath);
551 if (resnum > 0) and (resnum <= datstl.Count) then begin
552 if AnsiPos(FAbonString, datstl.Strings[resnum-1]) <> 1 then begin
553 datstl.Strings[resnum-1] := FAbonString + datstl.Strings[resnum-1];
556 datstl.SaveToFile(datfilepath);
565 //firstres
\82©
\82çcount
\8cÂ
\82Ì
\83\8c\83X
\82Ì
\90æ
\93ª
\82É
\82 \82Ú
\81[
\82ñ
\91}
\93ü
566 function TAbon.ExecuteFile(datfilepath : String; firstres : Integer; count : Integer) : Boolean; //DAT
\83t
\83@
\83C
\83\8b\82ð
\92¼
\82É
\82¢
\82¶
\82é
568 datstl : TStringList;
570 endnum : Integer; //
\8fI
\82í
\82è
\82Ì
\83\8c\83X
\94Ô
574 datstl := TStringList.Create;
577 datstl.LoadFromFile(datfilepath);
578 if (firstres > 0) and (firstres <= datstl.Count) then begin
579 if firstres + count -1 > datstl.Count then begin
580 endnum := datstl.Count;
581 end else if count <= 0 then begin
582 endnum := firstres + 1;
584 endnum := firstres + count -1;
587 for i := firstres to endnum do begin
588 if AnsiPos(FAbonString, datstl.Strings[i-1]) <> 1 then begin
589 datstl.Strings[i-1] := FAbonString + datstl.Strings[i-1];
593 datstl.SaveToFile(datfilepath);
602 //DAT
\82ð
\92¼
\82É
\82¢
\82¶
\82é
\93z
\82ç==========
\82±
\82±
\82Ü
\82Å=========================================
604 //
\8c³
\82É
\96ß
\82·
\93z
\82ç==================================================================
605 function TAbon.ReverseExecuteFile(datfilepath : String) : Boolean; //DAT
\83t
\83@
\83C
\83\8b\82ð
\92¼
\82É
\82¢
\82¶
\82é
607 datstl : TStringList;
613 datstl := TStringList.Create;
616 datstl.LoadFromFile(datfilepath);
617 for i:=0 to datstl.Count -1 do begin
618 if AnsiPos(FAbonString, datstl.Strings[i]) = 1 then begin
619 buf := datstl.Strings[i];
620 Delete(buf,1,Length(FAbonString));
621 datstl.Strings[i] := buf;
624 datstl.SaveToFile(datfilepath);
634 function TAbon.ReverseExecuteFile(datfilepath : String; resnum : Integer) : Boolean; //DAT
\83t
\83@
\83C
\83\8b\82ð
\92¼
\82É
\82¢
\82¶
\82é
636 datstl : TStringList;
641 datstl := TStringList.Create;
644 datstl.LoadFromFile(datfilepath);
645 if (resnum > 0) and (resnum <= datstl.Count) then begin
646 if AnsiPos(FAbonString, datstl.Strings[resnum-1]) = 1 then begin
647 buf := datstl.Strings[resnum-1];
648 Delete(buf,1,Length(FAbonString));
649 datstl.Strings[resnum-1] := buf;
652 datstl.SaveToFile(datfilepath);
662 function TAbon.ReverseExecuteFile(datfilepath : String; firstres : Integer; count : Integer) : Boolean;//DAT
\83t
\83@
\83C
\83\8b\82ð
\92¼
\82É
\82¢
\82¶
\82é
664 datstl : TStringList;
666 endnum : Integer; //
\8fI
\82í
\82è
\82Ì
\83\8c\83X
\94Ô
671 datstl := TStringList.Create;
674 datstl.LoadFromFile(datfilepath);
675 if (firstres > 0) and (firstres <= datstl.Count) then begin
676 if firstres + count -1 > datstl.Count then begin
677 endnum := datstl.Count;
678 end else if count <= 0 then begin
679 endnum := firstres + 1;
681 endnum := firstres + count -1;
683 for i := firstres to endnum do begin
684 if AnsiPos(FAbonString, datstl.Strings[i-1]) = 1 then begin
685 buf := datstl.Strings[i-1];
686 Delete(buf,1,Length(FAbonString));
687 datstl.Strings[i-1] := buf;
691 datstl.SaveToFile(datfilepath);
700 //
\8c³
\82É
\96ß
\82·
\93z
\82ç=================
\82±
\82±
\82Ü
\82Å=========================================
701 //
\8c»
\8dÝ
\83Z
\83b
\83g
\82³
\82ê
\82Ä
\82¢
\82éNGword.txt
\82ð
\8aJ
\82
702 procedure TAbon.EditNGwords();
704 ShellExecute(0 ,nil,PChar(FNGwordpath),nil,nil,SW_SHOW);
706 //
\83|
\83b
\83v
\83A
\83b
\83v
\97p
\94»
\92è
\8aÖ
\90\94
707 function TAbon.CheckAbonPopupRes(line : String) :Boolean;
709 if AbonPopupRes = true then begin
710 Result := FindNGwords(line);
715 //
\95¡
\90\94\82ÌNG
\83\8f\81[
\83h
\83e
\83L
\83X
\83g
\82ð
\93Ç
\82Ý
\8d\9e\82Þ==============================================
716 //List
\83t
\83@
\83C
\83\8b\82ð
\93Ç
\82Ý
\8d\9e\82Þ
717 function TAbon.LoadListFile(path :String; listStringList : TStringList) : Boolean;
720 listStringList.LoadFromFile(path);
723 listStringList.Append('
\88ê
\94Ê=NGword.txt');
724 listStringList.SaveToFile(path);
728 //List
\82Ì
\88ê
\82Â
\8e\9f\82ÌNG
\83\8f\81[
\83h
\83t
\83@
\83C
\83\8b\82ð
\93Ç
\82Ý
\8d\9e\82Þ
729 function TAbon.GoForward() : Boolean;
731 FNGwordFileIndex := FNGwordFileIndex + 1;
732 Result := ReadNGwordslist(FNGwordFileIndex);
734 //List
\82Ì
\88ê
\82Â
\91O
\82ÌNG
\83\8f\81[
\83h
\83t
\83@
\83C
\83\8b\82ð
\93Ç
\82Ý
\8d\9e\82Þ
735 function TAbon.GoBack() : Boolean;
737 FNGwordFileIndex := FNGwordFileIndex -1;
738 Result := ReadNGwordslist(FNGwordFileIndex);
740 //List
\82Ì
\82P
\8ds
\96Ú
\82ð
\93Ç
\82Þ
741 procedure TAbon.GoHome();
743 FNGwordFileIndex := 0;
744 ReadNGwordslist(FNGwordFileIndex);
746 //List
\82Ìline
\8ds
\96Ú
\82ð
\93Ç
\82Þ
747 function TAbon.ReadNGwordslist(line : Integer) : Boolean;
749 liststl : TStringList;
752 liststl := TStringList.Create;
754 if LoadListFile(Flistpath,liststl) = true then begin
755 if line < 0 then begin
756 line := liststl.Count - 1;
757 FNGwordFileIndex := liststl.Count - 1;
758 end else if line > liststl.Count - 1 then begin
760 FNGwordFileIndex := 0;
762 linebuf := liststl.Strings[line];
763 FNGwordname := Copy(linebuf,1,AnsiPos('=',linebuf)-1);
764 Delete(linebuf,1,AnsiPos('=',linebuf));
765 SetNGwordpath(linebuf);
775 //
\95¡
\90\94\82ÌNG
\83\8f\81[
\83h
\83e
\83L
\83X
\83g
\82ð
\93Ç
\82Ý
\8d\9e\82Þ=====
\82±
\82±
\82Ü
\82Å=================================
776 //
\8cÂ
\95Ê
\82 \82Ú
\81`
\82ñ
\8eÀ
\8ds
\8aÖ
\90\94
777 procedure TAbon.IndividualAbon(var ThreadStrings : TStringList; SetResNumFile : String);
781 if FileExists(SetResNumFile) = true then begin
782 if LoadFromSetResNumFile(SetResNumFile) = true then begin
783 for i := 0 to High(FAbonRes) do begin
784 if (FAbonRes[i].Res <= ThreadStrings.Count) and (FAbonRes[i].Res > 0) then begin
785 if FAbonRes[i].option = 0 then begin
786 ThreadStrings.Strings[FAbonRes[i].Res-1] := '';
788 ThreadStrings.Strings[FAbonRes[i].Res-1] := '
\82 \82Ú
\81`
\82ñ<>
\82 \82Ú
\81`
\82ñ<>
\82 \82Ú
\81`
\82ñ<>
\82 \82Ú
\81`
\82ñ<>';
795 FIndividualFileName := SetResNumFile;
796 SetLength(FAbonRes,1);
797 FAbonRes[0].Res := 0;
798 FAbonRes[0].option := -1;
801 procedure TAbon.IndividualAbon(var ResString : String; SetResNumFile : String; ResNumber : Integer);
805 if FileExists(SetResNumFile) = true then begin
806 if LoadFromSetResNumFile(SetResNumFile) = true then begin
807 for i := 0 to High(FAbonRes) do begin
808 if FAbonRes[i].Res = ResNumber then begin
809 if FAbonRes[i].option = 0 then begin
812 ResString := '
\82 \82Ú
\81`
\82ñ<>
\82 \82Ú
\81`
\82ñ<>
\82 \82Ú
\81`
\82ñ<>
\82 \82Ú
\81`
\82ñ<>';
819 FIndividualFileName := SetResNumFile;
820 SetLength(FAbonRes,1);
821 FAbonRes[0].Res := 0;
822 FAbonRes[0].option := -1;
826 //
\8cÂ
\95Ê
\82 \82Ú
\81`
\82ñ
\83t
\83@
\83C
\83\8b\93Ç
\82Ý
\8d\9e\82Ý
\8aÖ
\90\94
827 function TAbon.LoadFromSetResNumFile(SetResNumFile : String) : Boolean;
829 bufStringList : TStringList;
833 bufStringList := TStringList.Create;
836 bufStringList.LoadFromFile(SetResNumFile);
837 FIndividualFileName := SetResNumFile;
839 for i := bufStringList.Count-1 downto 0 do begin
840 if bufStringList.Strings[i] = '' then begin
841 bufStringList.Delete(i);
845 //
\83\81\83\82\83\8a\8am
\95Û
846 SetLength(FAbonRes,bufStringList.Count);
848 for i :=0 to bufStringList.Count - 1 do begin
849 bufLine := Trim(bufStringList.Strings[i]);
850 FAbonRes[i].Res := StrToInt(Copy(bufLine,1,AnsiPos('-',bufLine)-1));
851 FAbonRes[i].option := StrToInt(Copy(bufLine,AnsiPos('-',bufLine)+1,1));
862 //
\8cÂ
\95Ê
\82 \82Ú
\81`
\82ñ
\83t
\83@
\83C
\83\8b\82É
\92Ç
\89Á
863 procedure TAbon.AddIndividualAbon( ResNum : Integer ; option : Integer);
865 IndividualFile : TStringList;
869 IndividualFile := TStringList.Create;
870 if FAbonRes[0].Res <> 0 then begin
871 for i := 0 to High(FAbonRes) do begin
872 if FAbonRes[i].Res <> ResNum then begin
873 linebuf := IntToStr(FAbonRes[i].Res) + '-' + IntToStr(FabonRes[i].option);
874 IndividualFile.Append(linebuf);
878 linebuf := IntToStr(ResNum) + '-' + IntToStr(option);
879 IndividualFile.Append(linebuf);
881 IndividualFile.SaveToFile(FIndividualFileName);
886 //
\8cÂ
\95Ê
\82 \82Ú
\81`
\82ñ
\83t
\83@
\83C
\83\8b\82©
\82ç
\8dí
\8f\9c
887 procedure TAbon.DeleteIndividualAbon( ResNum : Integer);
889 IndividualFile : TStringList;
893 IndividualFile := TStringList.Create;
894 if FAbonRes[0].Res <> 0 then begin
895 for i := 0 to High(FAbonRes) do begin
896 if FAbonRes[i].Res <> ResNum then begin
897 linebuf := IntToStr(FAbonRes[i].Res) + '-' + IntToStr(FabonRes[i].option);
898 IndividualFile.Append(linebuf);
902 if IndividualFile.Count <> 0 then begin
904 IndividualFile.SaveToFile(FIndividualFileName);
909 if FileExists(FIndividualFileName) = true then begin
910 DeleteFile(FIndividualFileName);
914 //
\8cÂ
\95Ê
\82 \82Ú
\81`
\82ñ
\82Ì
\83\8a\83X
\83g
\82Ì
\8cÂ
\90\94\82ð
\95Ô
\82·
915 function TAbon.GetAbonResCount() : Integer;
919 if FAbonRes[0].Res = 0 then begin
926 //
\8cÂ
\95Ê
\82 \82Ú
\81`
\82ñ
\82Ì
\83\8a\83X
\83g
\82Ì
\82\8e\8ds
\96Ú
\82Ì
\83\8c\83X
\82ð
\95¶
\8e\9a\97ñ
\82Å
\95Ô
\82·
927 function TAbon.GetAbonResString(Num : Integer) : String;
929 if (Num <= High(FAbonRes)) and (Num >= 0) then begin
930 Result := IntToStr(FAbonRes[Num].Res);
935 //
\83|
\83b
\83v
\83A
\83b
\83v
\82Ì
\94»
\92è
\97p
936 function TAbon.CheckIndividualAbonList(ResNum : Integer) : Boolean;
940 if FAbonRes[0].Res <> 0 then begin
941 for i := 0 to High(FAbonRes) do begin
942 if FAbonRes[i].Res = ResNum then begin