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©
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 procedure SetTokens(index: integer ; argline:String);
32 function Getlistpath() : String;
33 procedure Setlistpath(const Value : String);
34 function LoadListFile(path :String;listStringList : TStringList) : Boolean;
35 function ReadNGwordslist(line : Integer) : Boolean;
36 function LoadFromSetResNumFile(SetResNumFile : String) : Boolean;
39 constructor Create; //
\83R
\83\93\83X
\83g
\83\89\83N
\83^
40 destructor Destroy; override; //
\83f
\83X
\83g
\83\89\83N
\83^
41 property Deleterlo: Boolean read FDeleterlo write FDeleterlo default false;
42 property Replaceul: Boolean read FReplaceul write FReplaceul default false;
43 property Reverse: Boolean read FReverse write FReverse default false;
44 property CreateNGwordFile: Boolean read FCreateNGwordFile write FCreateNGwordFile;
45 property AbonString : String read FAbonString write FAbonString;
46 property AbonPopupRes : Boolean read FAbonPopupRes write FAbonPopupRes default false;
47 property listpath : String read Getlistpath write Setlistpath;
48 property NGwordFileIndex : Integer read FNGwordFileIndex write FNGwordFileIndex default 0;
49 property NGwordname : String read FNGwordname write FNGwordname;
50 procedure Setroot(root :String);
51 function Getroot() : String;
53 function Getfullpath(argpath : String) : String;
54 procedure SetNGwordpath(path :String);
55 function GetNGwordpath() : String;
56 function LoadFromNGwordFile(path :String) : Boolean;
57 function ReLoadFromNGwordFile() : Boolean;
58 procedure LoadFromStringList( bufstl : TStringList );
59 function CheckAbonPopupRes(line : String) :Boolean;
60 function FindNGwords(line : String) : Boolean; //1
\83\89\83C
\83\93\82¸
\82Â
\97p
\81B
61 function Cutoff(line : String) : Boolean; //CutOff
\92l
\88È
\8fã
\8cÂ
\82Ì
\93¯
\82¶
\89p
\90\94\82ª
\95À
\82ñ
\82Å
\82¢
\82½
\82çtrue
62 //
\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)
63 procedure Execute(var ThreadStrings : TStringList); overload;
64 procedure Execute(var ThreadStrings : TStringList; NGwords : TStringList); overload;
65 procedure Execute(var ThreadStrings : TStringList; NGwords : TStrings); overload;
66 //
\8cÂ
\95Ê
\82 \82Ú
\81`
\82ñ
\82µ
\82å
\82è
67 procedure IndividualAbon(var ThreadStrings : TStringList; SetResNumFile : String);
68 procedure AddIndividualAbon( ResNum : Integer ; option : Integer);
69 procedure DeleteIndividualAbon( ResNum : Integer);
70 function GetAbonResCount() : Integer;
71 function GetAbonResString(Num : Integer) : String;
72 function CheckIndividualAbonList(ResNum : Integer) : Boolean;
74 function ExecuteFile(datfilepath : String; NGwordpath : String) : Boolean; overload;//DAT
\83t
\83@
\83C
\83\8b\82ð
\92¼
\82É
\82¢
\82¶
\82é
75 function ExecuteFile(datfilepath : String; resnum : Integer) : Boolean; overload; //DAT
\83t
\83@
\83C
\83\8b\82ð
\92¼
\82É
\82¢
\82¶
\82é
76 function ExecuteFile(datfilepath : String; firstres : Integer; count : Integer) : Boolean; overload; //DAT
\83t
\83@
\83C
\83\8b\82ð
\92¼
\82É
\82¢
\82¶
\82é
77 function ReverseExecuteFile(datfilepath : String) : Boolean; overload; //DAT
\83t
\83@
\83C
\83\8b\82ð
\92¼
\82É
\82¢
\82¶
\82é
78 function ReverseExecuteFile(datfilepath : String; resnum : Integer) : Boolean; overload; //DAT
\83t
\83@
\83C
\83\8b\82ð
\92¼
\82É
\82¢
\82¶
\82é
79 function ReverseExecuteFile(datfilepath : String; firstres : Integer; count : Integer) : Boolean; overload; //DAT
\83t
\83@
\83C
\83\8b\82ð
\92¼
\82É
\82¢
\82¶
\82é
81 procedure EditNGwords(); //NGword.txt
\82ð
\8aJ
\82
\81B
82 function ShowAllTokens() : String; //
\83f
\83o
\83b
\83O
\97p
84 procedure GoHome();//List
\82Ì
\82P
\8ds
\96Ú
\82ð
\93Ç
\82Þ
85 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Þ
86 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Þ
91 NGwordListFileName : String = 'NGwords.list';
95 constructor TAbon.Create;
98 FAbonString := ' <> <> <> <><>';
99 FCreateNGwordFile := true;
100 SetLength(FAbonRes,1);
101 FAbonRes[0].Res := 0;
102 FAbonRes[0].option := -1;
106 destructor TAbon.Destroy;
110 //root
\82ÍExe\config\NGwords
\83t
\83H
\83\8b\83_
111 procedure TAbon.Setroot(root :String);
113 bufStringList : TStringList;
115 bufStringList := TStringList.Create;
117 if not DirectoryExists(root) then begin
120 if root[Length(root)] <> '\' then begin
123 Flistpath := root + NGwordListFileName;
124 LoadListFile(Flistpath, bufStringList);
130 function TAbon.Getroot() : String;
134 //NGwordpath
\82ÍNGword.txt
\82Ì
\83t
\83\8b\83p
\83X
135 procedure TAbon.SetNGwordpath(path :String);
137 FNGwordpath := Getfullpath(path);
138 LoadFromNGwordFile(FNGwordpath);
140 function TAbon.GetNGwordpath() : String;
142 Result := FNGwordpath;
144 //
\83t
\83\8b\83p
\83X
\82Å
\82È
\82¯
\82ê
\82Î
\83t
\83\8b\83p
\83X
\82É
\82µ
\82Ä
\95Ô
\82·
\81B
145 function TAbon.Getfullpath(argpath : String) : String;
147 if AnsiPos(':\',argpath) <> 2 then begin //
\83h
\83\89\83C
\83u
\82©
\82ç
\82Ì
\83t
\83\8b\83p
\83X
\82ª
\96³
\82¯
\82ê
\82Î
148 if Getroot() = '' then begin
149 Result := ''; //root
\83p
\83X
\82ª
\90Ý
\92è
\82³
\82ê
\82Ä
\82È
\82¢
\82©
\8bó
\82É
\82·
\82é
151 if (Froot[Length(Froot)] = '\') and (argpath[1] = '\') then begin //
\90æ
\93ª
\82Ì\
\82ð
\8dí
\8f\9c
154 Insert( Getroot(), argpath , 1);//root
\83p
\83X
\82ð
\91}
\93ü
162 //NGword
\83t
\83@
\83C
\83\8b\82Ì
\93Ç
\82Ý
\8d\9e\82Ý
163 function TAbon.LoadFromNGwordFile(path :String) : boolean;
165 bufstl : TStringList;
167 path := Getfullpath(path);
168 if path = '' then begin
171 bufstl := TStringList.Create;
174 bufstl.LoadFromFile(path);
175 LoadFromStringList( bufstl );
178 if CreateNGwordFile = true then begin
179 bufstl.SaveToFile(path);
189 //NGword
\83\8a\83X
\83g
\93Ç
\82Ý
\8d\9e\82Ý
190 procedure TAbon.LoadFromStringList( bufstl : TStringList );
195 for i := bufstl.Count -1 downto 0 do begin
196 if bufstl.Strings[i] = '' then begin
200 SetLength(Ftokens,bufstl.Count);
201 for i := 0 to bufstl.Count -1 do begin
202 SetTokens(i , bufstl.Strings[i]);
209 //NGwordpath
\82ª
\8aù
\82É
\90Ý
\92è
\82³
\82ê
\82Ä
\82¢
\82é
\82Æ
\82«
\82Ì
\83\8a\83\8d\81[
\83h
\97p
\8aÖ
\90\94
210 function TAbon.ReLoadFromNGwordFile() : boolean;
212 if GetNGwordpath() ='' then begin
215 Result := LoadFromNGwordFile( GetNGwordpath() );
218 function TAbon.Getlistpath() : String;
222 procedure TAbon.Setlistpath(const Value : String);
224 Flistpath := Getfullpath(Value);
226 //
\88ê
\8ds
\82Ì
\92\86\82Ì
\83g
\81[
\83N
\83\93\82ð
\90Ø
\82è
\95ª
\82¯
\82Ä
\83Z
\83b
\83g
227 procedure TAbon.SetTokens(index: integer ; argline : String);
230 bufstl : TStringList;
236 bufstl := TStringList.Create;
238 if Length(argline) > 0 then begin
239 pos := AnsiPos(#9,argline);
240 while pos <> 0 DO begin
241 buftoken := Copy(argline,1,pos-1);
242 Delete(argline,1,pos);
243 if Length(buftoken) > 0 then begin
244 bufstl.Append(buftoken);
246 pos := AnsiPos(#9,argline);
248 if Length(argline) > 0 then begin
249 bufstl.Append(argline);
252 SetLength(Ftokens[index],ret);
253 for i := 0 to bufstl.Count - 1 do begin
254 Ftokens[index][i] := bufstl.Strings[i];
262 //Debug
\97p
\82¿
\82á
\82ñ
\82ÆNG
\83\8f\81[
\83h
\82ð
\8fE
\82¦
\82Ä
\82¢
\82é
\82©
263 function TAbon.ShowAllTokens() : String;
269 for i := 0 to High(Ftokens) do begin
270 for j := 0 to High(Ftokens[i]) do begin
271 ret := ret + Ftokens[i][j];
280 //****************************************************************************//
281 //NG
\83\8f\81[
\83h
\82ª
\8aÜ
\82Ü
\82ê
\82Ä
\82½
\82çtrue
\82ð
\95Ô
\82·
\81B
282 function TAbon.FindNGwords(line : String) : Boolean;
290 if AnsiPos(FAbonString,line) <> 1 then begin
291 for lines := 0 to High(Ftokens) do begin
292 if High(Ftokens[lines]) > 0 then begin
295 for cells := 0 to High(Ftokens[lines]) do begin
296 if AnsiPos(Ftokens[lines][cells],bufline) = 0 then begin
300 Delete(bufline,AnsiPos(Ftokens[lines][cells],bufline),Length(Ftokens[lines][cells]));
303 if hit = true then begin
314 //CutOff
\92l
\88È
\8fã
\8cÂ
\82Ì
\93¯
\82¶
\89p
\90\94\82ª
\95À
\82ñ
\82Å
\82¢
\82½
\82çtrue
315 function TAbon.Cutoff(line : String) : Boolean;
323 if FCutoffNum <> 0 then begin
324 for i := 65 to 90 do begin
326 buf := DupeString(sheed, FCutoffNum);
327 if AnsiContainsText(line, buf) = true then begin
335 //
\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
336 procedure TAbon.Execute(var ThreadStrings : TStringList);
343 for i:=0 to ThreadStrings.Count - 1 do begin
344 if FindNGwords(ThreadStrings.Strings[i]) <> Reverse then begin
345 ThreadStrings.Strings[i] := FAbonString;
347 bufline := ThreadStrings.Strings[i];
348 if Deleterlo = true then begin
349 bufline := AnsiReplaceText( bufline,'&rlo;','' );
351 if Replaceul = true then begin
352 bufline := AnsiReplaceText( bufline,'<ul>','<br>' );
353 bufline := AnsiReplaceText( bufline,'</ul>','<br>' );
355 ThreadStrings.Strings[i] := bufline;
360 procedure TAbon.Execute(var ThreadStrings : TStringList; NGwords : TStringList);
364 SetLength(Ftokens,NGwords.Count);
365 for i := 0 to NGwords.Count -1 do begin
366 SetTokens(i , NGwords.Strings[i]);
368 Execute(ThreadStrings);
371 procedure TAbon.Execute(var ThreadStrings : TStringList; NGwords : TStrings);
376 buf := TStringList.Create;
377 buf.AddStrings(NGwords);
378 SetLength(Ftokens,buf.Count);
379 for i := 0 to buf.Count -1 do begin
380 SetTokens(i , buf.Strings[i]);
382 Execute(ThreadStrings);
387 //****************************************************************************//
388 //DAT
\82ð
\92¼
\82É
\82¢
\82¶
\82é
\93z
\82ç===========================================================
389 //NG
\83\8f\81[
\83h
\82ð
\8aÜ
\82Þ
\83\8c\83X
\82Ì
\90æ
\93ª
\82É
\82 \82Ú
\81[
\82ñ
\82ð
\91}
\93ü
390 function TAbon.ExecuteFile(datfilepath : String; NGwordpath : String) : Boolean; //DAT
\83t
\83@
\83C
\83\8b\82ð
\92¼
\82É
\82¢
\82¶
\82é
392 datstl : TStringList;
396 datstl := TStringList.Create;
400 datstl.LoadFromFile(datfilepath);
401 for i := 0 to datstl.Count -1 do begin
402 if FindNGwords(datstl.Strings[i]) = true then begin
403 datstl.Strings[i] := FAbonString + datstl.Strings[i]
407 datstl.SaveToFile(datfilepath);
417 //
\8ew
\92è
\82³
\82ê
\82½
\83\8c\83X
\94Ô
\82Ì
\90æ
\93ª
\82É
\82 \82Ú
\81[
\82ñ
\91}
\93ü
418 function TAbon.ExecuteFile(datfilepath : String; resnum : Integer) : Boolean; //DAT
\83t
\83@
\83C
\83\8b\82ð
\92¼
\82É
\82¢
\82¶
\82é
420 datstl : TStringList;
424 datstl := TStringList.Create;
427 datstl.LoadFromFile(datfilepath);
428 if (resnum > 0) and (resnum <= datstl.Count) then begin
429 if AnsiPos(FAbonString, datstl.Strings[resnum-1]) <> 1 then begin
430 datstl.Strings[resnum-1] := FAbonString + datstl.Strings[resnum-1];
433 datstl.SaveToFile(datfilepath);
442 //firstres
\82©
\82çcount
\8cÂ
\82Ì
\83\8c\83X
\82Ì
\90æ
\93ª
\82É
\82 \82Ú
\81[
\82ñ
\91}
\93ü
443 function TAbon.ExecuteFile(datfilepath : String; firstres : Integer; count : Integer) : Boolean; //DAT
\83t
\83@
\83C
\83\8b\82ð
\92¼
\82É
\82¢
\82¶
\82é
445 datstl : TStringList;
447 endnum : Integer; //
\8fI
\82í
\82è
\82Ì
\83\8c\83X
\94Ô
451 datstl := TStringList.Create;
454 datstl.LoadFromFile(datfilepath);
455 if (firstres > 0) and (firstres <= datstl.Count) then begin
456 if firstres + count -1 > datstl.Count then begin
457 endnum := datstl.Count;
458 end else if count <= 0 then begin
459 endnum := firstres + 1;
461 endnum := firstres + count -1;
464 for i := firstres to endnum do begin
465 if AnsiPos(FAbonString, datstl.Strings[i-1]) <> 1 then begin
466 datstl.Strings[i-1] := FAbonString + datstl.Strings[i-1];
470 datstl.SaveToFile(datfilepath);
479 //DAT
\82ð
\92¼
\82É
\82¢
\82¶
\82é
\93z
\82ç==========
\82±
\82±
\82Ü
\82Å=========================================
481 //
\8c³
\82É
\96ß
\82·
\93z
\82ç==================================================================
482 function TAbon.ReverseExecuteFile(datfilepath : String) : Boolean; //DAT
\83t
\83@
\83C
\83\8b\82ð
\92¼
\82É
\82¢
\82¶
\82é
484 datstl : TStringList;
490 datstl := TStringList.Create;
493 datstl.LoadFromFile(datfilepath);
494 for i:=0 to datstl.Count -1 do begin
495 if AnsiPos(FAbonString, datstl.Strings[i]) = 1 then begin
496 buf := datstl.Strings[i];
497 Delete(buf,1,Length(FAbonString));
498 datstl.Strings[i] := buf;
501 datstl.SaveToFile(datfilepath);
511 function TAbon.ReverseExecuteFile(datfilepath : String; resnum : Integer) : Boolean; //DAT
\83t
\83@
\83C
\83\8b\82ð
\92¼
\82É
\82¢
\82¶
\82é
513 datstl : TStringList;
518 datstl := TStringList.Create;
521 datstl.LoadFromFile(datfilepath);
522 if (resnum > 0) and (resnum <= datstl.Count) then begin
523 if AnsiPos(FAbonString, datstl.Strings[resnum-1]) = 1 then begin
524 buf := datstl.Strings[resnum-1];
525 Delete(buf,1,Length(FAbonString));
526 datstl.Strings[resnum-1] := buf;
529 datstl.SaveToFile(datfilepath);
539 function TAbon.ReverseExecuteFile(datfilepath : String; firstres : Integer; count : Integer) : Boolean;//DAT
\83t
\83@
\83C
\83\8b\82ð
\92¼
\82É
\82¢
\82¶
\82é
541 datstl : TStringList;
543 endnum : Integer; //
\8fI
\82í
\82è
\82Ì
\83\8c\83X
\94Ô
548 datstl := TStringList.Create;
551 datstl.LoadFromFile(datfilepath);
552 if (firstres > 0) and (firstres <= datstl.Count) then begin
553 if firstres + count -1 > datstl.Count then begin
554 endnum := datstl.Count;
555 end else if count <= 0 then begin
556 endnum := firstres + 1;
558 endnum := firstres + count -1;
560 for i := firstres to endnum do begin
561 if AnsiPos(FAbonString, datstl.Strings[i-1]) = 1 then begin
562 buf := datstl.Strings[i-1];
563 Delete(buf,1,Length(FAbonString));
564 datstl.Strings[i-1] := buf;
568 datstl.SaveToFile(datfilepath);
577 //
\8c³
\82É
\96ß
\82·
\93z
\82ç=================
\82±
\82±
\82Ü
\82Å=========================================
578 //
\8c»
\8dÝ
\83Z
\83b
\83g
\82³
\82ê
\82Ä
\82¢
\82éNGword.txt
\82ð
\8aJ
\82
579 procedure TAbon.EditNGwords();
581 ShellExecute(0 ,nil,PChar(FNGwordpath),nil,nil,SW_SHOW);
583 //
\83|
\83b
\83v
\83A
\83b
\83v
\97p
\94»
\92è
\8aÖ
\90\94
584 function TAbon.CheckAbonPopupRes(line : String) :Boolean;
586 if AbonPopupRes = true then begin
587 Result := FindNGwords(line);
592 //
\95¡
\90\94\82ÌNG
\83\8f\81[
\83h
\83e
\83L
\83X
\83g
\82ð
\93Ç
\82Ý
\8d\9e\82Þ==============================================
593 //List
\83t
\83@
\83C
\83\8b\82ð
\93Ç
\82Ý
\8d\9e\82Þ
594 function TAbon.LoadListFile(path :String; listStringList : TStringList) : Boolean;
597 listStringList.LoadFromFile(path);
600 listStringList.Append('
\88ê
\94Ê=NGword.txt');
601 listStringList.SaveToFile(path);
605 //List
\82Ì
\88ê
\82Â
\8e\9f\82ÌNG
\83\8f\81[
\83h
\83t
\83@
\83C
\83\8b\82ð
\93Ç
\82Ý
\8d\9e\82Þ
606 function TAbon.GoForward() : Boolean;
608 FNGwordFileIndex := FNGwordFileIndex + 1;
609 Result := ReadNGwordslist(FNGwordFileIndex);
611 //List
\82Ì
\88ê
\82Â
\91O
\82ÌNG
\83\8f\81[
\83h
\83t
\83@
\83C
\83\8b\82ð
\93Ç
\82Ý
\8d\9e\82Þ
612 function TAbon.GoBack() : Boolean;
614 FNGwordFileIndex := FNGwordFileIndex -1;
615 Result := ReadNGwordslist(FNGwordFileIndex);
617 //List
\82Ì
\82P
\8ds
\96Ú
\82ð
\93Ç
\82Þ
618 procedure TAbon.GoHome();
620 FNGwordFileIndex := 0;
621 ReadNGwordslist(FNGwordFileIndex);
623 //List
\82Ìline
\8ds
\96Ú
\82ð
\93Ç
\82Þ
624 function TAbon.ReadNGwordslist(line : Integer) : Boolean;
626 liststl : TStringList;
629 liststl := TStringList.Create;
631 if LoadListFile(Flistpath,liststl) = true then begin
632 if line < 0 then begin
633 line := liststl.Count - 1;
634 FNGwordFileIndex := liststl.Count - 1;
635 end else if line > liststl.Count - 1 then begin
637 FNGwordFileIndex := 0;
639 linebuf := liststl.Strings[line];
640 FNGwordname := Copy(linebuf,1,AnsiPos('=',linebuf)-1);
641 Delete(linebuf,1,AnsiPos('=',linebuf));
642 SetNGwordpath(linebuf);
652 //
\95¡
\90\94\82ÌNG
\83\8f\81[
\83h
\83e
\83L
\83X
\83g
\82ð
\93Ç
\82Ý
\8d\9e\82Þ=====
\82±
\82±
\82Ü
\82Å=================================
653 //
\8cÂ
\95Ê
\82 \82Ú
\81`
\82ñ
\8eÀ
\8ds
\8aÖ
\90\94
654 procedure TAbon.IndividualAbon(var ThreadStrings : TStringList; SetResNumFile : String);
658 if FileExists(SetResNumFile) = true then begin
659 if LoadFromSetResNumFile(SetResNumFile) = true then begin
660 for i := 0 to High(FAbonRes) do begin
661 if (FAbonRes[i].Res <= ThreadStrings.Count) and (FAbonRes[i].Res > 0) then begin
662 if FAbonRes[i].option = 0 then begin
663 ThreadStrings.Strings[FAbonRes[i].Res-1] := '';
665 ThreadStrings.Strings[FAbonRes[i].Res-1] := '
\82 \82Ú
\81`
\82ñ<>
\82 \82Ú
\81`
\82ñ<>
\82 \82Ú
\81`
\82ñ<>
\82 \82Ú
\81`
\82ñ<>';
672 FIndividualFileName := SetResNumFile;
673 SetLength(FAbonRes,1);
674 FAbonRes[0].Res := 0;
675 FAbonRes[0].option := -1;
678 //
\8cÂ
\95Ê
\82 \82Ú
\81`
\82ñ
\83t
\83@
\83C
\83\8b\93Ç
\82Ý
\8d\9e\82Ý
\8aÖ
\90\94
679 function TAbon.LoadFromSetResNumFile(SetResNumFile : String) : Boolean;
681 bufStringList : TStringList;
685 bufStringList := TStringList.Create;
688 bufStringList.LoadFromFile(SetResNumFile);
689 FIndividualFileName := SetResNumFile;
691 for i := bufStringList.Count-1 downto 0 do begin
692 if bufStringList.Strings[i] = '' then begin
693 bufStringList.Delete(i);
697 //
\83\81\83\82\83\8a\8am
\95Û
698 SetLength(FAbonRes,bufStringList.Count);
700 for i :=0 to bufStringList.Count - 1 do begin
701 bufLine := Trim(bufStringList.Strings[i]);
702 FAbonRes[i].Res := StrToInt(Copy(bufLine,1,AnsiPos('-',bufLine)-1));
703 FAbonRes[i].option := StrToInt(Copy(bufLine,AnsiPos('-',bufLine)+1,1));
714 //
\8cÂ
\95Ê
\82 \82Ú
\81`
\82ñ
\83t
\83@
\83C
\83\8b\82É
\92Ç
\89Á
715 procedure TAbon.AddIndividualAbon( ResNum : Integer ; option : Integer);
717 IndividualFile : TStringList;
721 IndividualFile := TStringList.Create;
722 if FAbonRes[0].Res <> 0 then begin
723 for i := 0 to High(FAbonRes) do begin
724 if FAbonRes[i].Res <> ResNum then begin
725 linebuf := IntToStr(FAbonRes[i].Res) + '-' + IntToStr(FabonRes[i].option);
726 IndividualFile.Append(linebuf);
730 linebuf := IntToStr(ResNum) + '-' + IntToStr(option);
731 IndividualFile.Append(linebuf);
733 IndividualFile.SaveToFile(FIndividualFileName);
738 //
\8cÂ
\95Ê
\82 \82Ú
\81`
\82ñ
\83t
\83@
\83C
\83\8b\82©
\82ç
\8dí
\8f\9c
739 procedure TAbon.DeleteIndividualAbon( ResNum : Integer);
741 IndividualFile : TStringList;
745 IndividualFile := TStringList.Create;
746 if FAbonRes[0].Res <> 0 then begin
747 for i := 0 to High(FAbonRes) do begin
748 if FAbonRes[i].Res <> ResNum then begin
749 linebuf := IntToStr(FAbonRes[i].Res) + '-' + IntToStr(FabonRes[i].option);
750 IndividualFile.Append(linebuf);
754 if IndividualFile.Count <> 0 then begin
756 IndividualFile.SaveToFile(FIndividualFileName);
761 if FileExists(FIndividualFileName) = true then begin
762 DeleteFile(FIndividualFileName);
766 //
\8cÂ
\95Ê
\82 \82Ú
\81`
\82ñ
\82Ì
\83\8a\83X
\83g
\82Ì
\8cÂ
\90\94\82ð
\95Ô
\82·
767 function TAbon.GetAbonResCount() : Integer;
771 if FAbonRes[0].Res = 0 then begin
778 //
\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·
779 function TAbon.GetAbonResString(Num : Integer) : String;
781 if (Num <= High(FAbonRes)) and (Num >= 0) then begin
782 Result := IntToStr(FAbonRes[Num].Res);
787 //
\83|
\83b
\83v
\83A
\83b
\83v
\82Ì
\94»
\92è
\97p
788 function TAbon.CheckIndividualAbonList(ResNum : Integer) : Boolean;
792 if FAbonRes[0].Res <> 0 then begin
793 for i := 0 to High(FAbonRes) do begin
794 if FAbonRes[i].Res = ResNum then begin