Develop and Download Open Source Software

Browse CVS Repository

Annotation of /gikonavigoeson/gikonavi/AbonUnit.pas

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


Revision 1.16 - (hide annotations) (download) (as text)
Mon Sep 29 09:42:31 2003 UTC (20 years, 6 months ago) by h677
Branch: MAIN
Changes since 1.15: +76 -16 lines
File MIME type: text/x-pascal
NGワードで、該当行数が表示できる機能をつけた。

1 h677 1.1 unit AbonUnit;
2    
3     interface
4     uses
5 h677 1.2 Windows,Messages, ShellAPI, SysUtils, Classes,StdCtrls,StrUtils;
6 h677 1.1
7     type
8 h677 1.11 TIndiviAbon = record
9     Res: Integer;
10     option: Integer; // 0:?? 1:??絽吾???若?若??
11     end;
12    
13 h677 1.1 TAbon = class(TObject)
14     private
15     { Private 絎h? }
16     Froot : String;
17 h677 1.9 Flistpath : String;
18 h677 1.1 FNGwordpath : String;
19 h677 1.2 Ftokens : array of array of string;
20 h677 1.11 FAbonRes : array of TIndiviAbon;
21 h677 1.1 FAbonString : String;
22 h677 1.2 FCutoffNum : Integer; //?????遺札筝??g??????????怨???NG???若????????
23 h677 1.3 FDeleterlo : Boolean; //&rlo;????????
24     FReplaceul :Boolean ; //<ul>?帥?違??<br>?帥?違??舟????????
25     FReverse : Boolean ; //NG???若???с?????若?????????????荵≪????????
26     FAbonPopupRes : Boolean; //???鴻???????≪?????????????若?若????????
27     FCreateNGwordFile : Boolean; //??絎???????path??G???若??txt???<???c??????????????????????????
28 h677 1.9 FNGwordFileIndex : Integer; //?上????粋昭???с??NG???若????list???茵?????
29     FNGwordname : String; //?上????粋昭???с??NG???若????;腓阪??
30 h677 1.11 FIndividualFileName : String; //???ャ???若?????????<?ゃ????
31 h677 1.16 FReturnNGwordLineNum : Boolean; //NG???若??????違??菴?????
32     FSetNGResAnchor : Boolean; //NG???綵????????????????????????鴻?吾?????鴻?≪?潟???若???ゃ????????????
33 h677 1.1 procedure SetTokens(index: integer ; argline:String);
34 h677 1.9 function Getlistpath() : String;
35     procedure Setlistpath(const Value : String);
36     function LoadListFile(path :String;listStringList : TStringList) : Boolean;
37 h677 1.10 function ReadNGwordslist(line : Integer) : Boolean;
38 h677 1.11 function LoadFromSetResNumFile(SetResNumFile : String) : Boolean;
39 h677 1.1 public
40     { Public 絎h? }
41     constructor Create; // ?潟?潟?鴻????????/span>
42     destructor Destroy; override; // ???鴻????????/span>
43 h677 1.3 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 h677 1.4 property CreateNGwordFile: Boolean read FCreateNGwordFile write FCreateNGwordFile;
47 h677 1.3 property AbonString : String read FAbonString write FAbonString;
48     property AbonPopupRes : Boolean read FAbonPopupRes write FAbonPopupRes default false;
49 h677 1.9 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 h677 1.16 property ReturnNGwordLineNum : Boolean read FReturnNGwordLineNum write FReturnNGwordLineNum default false;
53     property SetNGResAnchor : Boolean read FSetNGResAnchor write FSetNGResAnchor default false;
54 h677 1.1 procedure Setroot(root :String);
55     function Getroot() : String;
56 h677 1.9
57     function Getfullpath(argpath : String) : String;
58 h677 1.1 procedure SetNGwordpath(path :String);
59     function GetNGwordpath() : String;
60     function LoadFromNGwordFile(path :String) : Boolean;
61     function ReLoadFromNGwordFile() : Boolean;
62 yoffy 1.6 procedure LoadFromStringList( bufstl : TStringList );
63 h677 1.3 function CheckAbonPopupRes(line : String) :Boolean;
64 h677 1.16 function FindNGwords(line : String) : Boolean; overload;//1???ゃ?潟???ょ????
65     function FindNGwords(line : String; var NGwordsLineNum : Integer) : Boolean; overload;//1???ゃ?潟???ょ????
66 h677 1.3 function Cutoff(line : String) : Boolean; //CutOff?や札筝??????????掩?違??筝????с??????true
67 h677 1.11 //???若????????(NG???若???с?????c???帥???潟??
68 h677 1.7 procedure Execute(var ThreadStrings : TStringList); overload;
69     procedure Execute(var ThreadStrings : TStringList; NGwords : TStringList); overload;
70     procedure Execute(var ThreadStrings : TStringList; NGwords : TStrings); overload;
71 h677 1.11 //???ャ???若??????????
72     procedure IndividualAbon(var ThreadStrings : TStringList; SetResNumFile : String);
73     procedure AddIndividualAbon( ResNum : Integer ; option : Integer);
74     procedure DeleteIndividualAbon( ResNum : Integer);
75     function GetAbonResCount() : Integer;
76     function GetAbonResString(Num : Integer) : String;
77 h677 1.12 function CheckIndividualAbonList(ResNum : Integer) : Boolean;
78 h677 1.1 //--
79     function ExecuteFile(datfilepath : String; NGwordpath : String) : Boolean; overload;//DAT???<?ゃ?????眼????????
80     function ExecuteFile(datfilepath : String; resnum : Integer) : Boolean; overload; //DAT???<?ゃ?????眼????????
81     function ExecuteFile(datfilepath : String; firstres : Integer; count : Integer) : Boolean; overload; //DAT???<?ゃ?????眼????????
82     function ReverseExecuteFile(datfilepath : String) : Boolean; overload; //DAT???<?ゃ?????眼????????
83     function ReverseExecuteFile(datfilepath : String; resnum : Integer) : Boolean; overload; //DAT???<?ゃ?????眼????????
84     function ReverseExecuteFile(datfilepath : String; firstres : Integer; count : Integer) : Boolean; overload; //DAT???<?ゃ?????眼????????
85     //--
86     procedure EditNGwords(); //NGword.txt???????
87     function ShowAllTokens() : String; //???????亥??/span>
88 h677 1.9 //--
89     procedure GoHome();//List???茵?????茯???
90     function GoForward() : Boolean; //List????ゆ???G???若?????<?ゃ????茯??粋昭??
91     function GoBack() : Boolean; //List????ゅ????G???若?????<?ゃ????茯??粋昭??
92 h677 1.1 end;
93     var
94     Abon1 :TAbon;
95 h677 1.9 const
96     NGwordListFileName : String = 'NGwords.list';
97 h677 1.1
98     implementation
99    
100     constructor TAbon.Create;
101     begin
102     // ??????
103     FAbonString := '&nbsp;<>&nbsp;<>&nbsp;<>&nbsp;&nbsp;<><>';
104 h677 1.4 FCreateNGwordFile := true;
105 h677 1.11 SetLength(FAbonRes,1);
106     FAbonRes[0].Res := 0;
107     FAbonRes[0].option := -1;
108    
109 h677 1.1 end;
110    
111     destructor TAbon.Destroy;
112     begin
113     inherited;
114     end;
115 h677 1.9 //root??xe\config\NGwords????????
116 h677 1.1 procedure TAbon.Setroot(root :String);
117 h677 1.9 var
118     bufStringList : TStringList;
119 h677 1.1 begin
120 h677 1.9 bufStringList := TStringList.Create;
121     try
122     if not DirectoryExists(root) then begin
123     CreateDir(root);
124     end;
125     if root[Length(root)] <> '\' then begin
126     root := root + '\';
127     end;
128     Flistpath := root + NGwordListFileName;
129     LoadListFile(Flistpath, bufStringList);
130     finally
131     bufStringList.Free;
132     end;
133 h677 1.1 Froot := root;
134     end;
135     function TAbon.Getroot() : String;
136     begin
137     Result := Froot;
138     end;
139     //NGwordpath??Gword.txt??????????/span>
140     procedure TAbon.SetNGwordpath(path :String);
141     begin
142 h677 1.9 FNGwordpath := Getfullpath(path);
143 h677 1.1 LoadFromNGwordFile(FNGwordpath);
144     end;
145     function TAbon.GetNGwordpath() : String;
146     begin
147     Result := FNGwordpath;
148     end;
149 h677 1.9 //???????鴻?с???????違???????鴻???????????
150     function TAbon.Getfullpath(argpath : String) : String;
151     begin
152     if AnsiPos(':\',argpath) <> 2 then begin //?????ゃ???????????????鴻???<??????/span>
153     if Getroot() = '' then begin
154     Result := ''; //root???鴻??荐??????????????腥冴??????
155     end else begin
156     if (Froot[Length(Froot)] = '\') and (argpath[1] = '\') then begin //????????????/span>
157     Delete(argpath,1,1);
158     end;
159     Insert( Getroot(), argpath , 1);//root???鴻???水??/span>
160     Result := argpath;
161     end;
162     end else begin
163     Result := argpath;
164     end;
165    
166     end;
167 h677 1.1 //NGword???<?ゃ??????粋昭??/span>
168     function TAbon.LoadFromNGwordFile(path :String) : boolean;
169     var
170     bufstl : TStringList;
171     begin
172 h677 1.9 path := Getfullpath(path);
173     if path = '' then begin
174     Result := false;
175     end else begin
176     bufstl := TStringList.Create;
177     try
178     try
179     bufstl.LoadFromFile(path);
180     LoadFromStringList( bufstl );
181     Result := true;
182     except
183     if CreateNGwordFile = true then begin
184     bufstl.SaveToFile(path);
185     end;
186     Result := false;
187 h677 1.1 end;
188 h677 1.9 finally
189     bufstl.Free;
190 h677 1.1 end;
191     end;
192 yoffy 1.6
193     end;
194     //NGword???鴻??茯??粋昭??/span>
195     procedure TAbon.LoadFromStringList( bufstl : TStringList );
196     var
197     i : integer;
198     begin
199     try
200 h677 1.3 for i := bufstl.Count -1 downto 0 do begin
201     if bufstl.Strings[i] = '' then begin
202     bufstl.Delete(i);
203     end;
204     end;
205 h677 1.2 SetLength(Ftokens,bufstl.Count);
206 h677 1.1 for i := 0 to bufstl.Count -1 do begin
207     SetTokens(i , bufstl.Strings[i]);
208     end;
209    
210     except
211     Exit;
212     end;
213     end;
214     //NGwordpath???≪??┃絎??????????????????????若?????∽??/span>
215     function TAbon.ReLoadFromNGwordFile() : boolean;
216     begin
217     if GetNGwordpath() ='' then begin
218     Result := false;
219     end else begin
220     Result := LoadFromNGwordFile( GetNGwordpath() );
221     end;
222     end;
223 h677 1.9 function TAbon.Getlistpath() : String;
224     begin
225     Result := Flistpath;
226     end;
227     procedure TAbon.Setlistpath(const Value : String);
228     begin
229     Flistpath := Getfullpath(Value);
230     end;
231 h677 1.1 //筝?茵???賢?????若???潟?????????????祉????
232     procedure TAbon.SetTokens(index: integer ; argline : String);
233     var
234     ret : Integer;
235     bufstl : TStringList;
236     i : Integer;
237 h677 1.14 pos : Integer;
238     buftoken : String;
239 h677 1.1 begin
240 h677 1.14 pos := 0;
241 h677 1.1 bufstl := TStringList.Create;
242 h677 1.14 try
243     if Length(argline) > 0 then begin
244     pos := AnsiPos(#9,argline);
245     while pos <> 0 DO begin
246     buftoken := Copy(argline,1,pos-1);
247     Delete(argline,1,pos);
248     if Length(buftoken) > 0 then begin
249     bufstl.Append(buftoken);
250     end;
251     pos := AnsiPos(#9,argline);
252     end;
253     if Length(argline) > 0 then begin
254     bufstl.Append(argline);
255     end;
256     ret := bufstl.Count;
257     SetLength(Ftokens[index],ret);
258     for i := 0 to bufstl.Count - 1 do begin
259     Ftokens[index][i] := bufstl.Strings[i];
260     end;
261     end;
262     finally
263     bufstl.Free;
264 h677 1.1 end;
265    
266     end;
267 h677 1.8 //Debug???<??????G???若?????障??????????
268 h677 1.1 function TAbon.ShowAllTokens() : String;
269     var
270     i : Integer;
271     j : Integer;
272     ret : String;
273     begin
274 h677 1.2 for i := 0 to High(Ftokens) do begin
275     for j := 0 to High(Ftokens[i]) do begin
276     ret := ret + Ftokens[i][j];
277 h677 1.1 end;
278     end;
279     Result := ret;
280    
281    
282    
283     end;
284    
285     //****************************************************************************//
286     //NG???若???????障????????true??菴?????
287     function TAbon.FindNGwords(line : String) : Boolean;
288     var
289 h677 1.11 lines : Integer;
290     cells : Integer;
291 h677 1.1 hit : Boolean;
292 h677 1.11 bufline : String;
293 h677 1.1 begin
294     hit := false;
295     if AnsiPos(FAbonString,line) <> 1 then begin
296 h677 1.11 for lines := 0 to High(Ftokens) do begin
297 h677 1.15 hit := true;
298     bufline := line;
299     for cells := 0 to High(Ftokens[lines]) do begin
300     if AnsiPos(Ftokens[lines][cells],bufline) = 0 then begin
301     hit := false;
302     break;
303     end else begin
304     Delete(bufline,AnsiPos(Ftokens[lines][cells],bufline),Length(Ftokens[lines][cells]));
305     end;
306     end;
307     if hit = true then begin
308     break;
309 h677 1.1 end;
310     end;
311     end;
312     Result := hit;
313 h677 1.16 end;
314     //NG???若???????障??????????true??菴?????????G???若??????違??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 h677 1.1 end;
343 h677 1.3 //CutOff?や札筝??????????掩?違??筝????с??????true
344     function TAbon.Cutoff(line : String) : Boolean;
345 h677 1.2 var
346     i : Integer;
347     sheed : AnsiChar;
348     buf : String;
349 h677 1.3 ret : Bool;
350 h677 1.2 begin
351 h677 1.3 ret := false;
352 h677 1.2 if FCutoffNum <> 0 then begin
353     for i := 65 to 90 do begin
354     sheed := Chr(i);
355     buf := DupeString(sheed, FCutoffNum);
356     if AnsiContainsText(line, buf) = true then begin
357 h677 1.3 ret := true;
358 h677 1.2 break;
359     end;
360     end;
361     end;
362     Result := ret;
363     end;
364 h677 1.1 //??鮎?????若???ゃ??rue??????NG???若??????????????????菴?????
365 h677 1.7 procedure TAbon.Execute(var ThreadStrings : TStringList);
366 h677 1.1 var
367     i : Integer;
368 h677 1.16 NGwordsLine : Integer;
369 h677 1.2 bufline : String;
370     begin
371 h677 1.7 //FRetStrings.Clear;
372 h677 1.16 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 茵?????G???若???????障???????障????</B><><>',[NGwordsLine])
398     else
399     ThreadStrings.Strings[i] := Format('&nbsp;<>&nbsp;<>&nbsp;<><B> %d 茵?????G???若???????障???????障????</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 h677 1.1
413 h677 1.7 end;
414 h677 1.1
415     end;
416 h677 1.7 procedure TAbon.Execute(var ThreadStrings : TStringList; NGwords : TStringList);
417 h677 1.1 var
418     i : Integer;
419     begin
420 h677 1.2 SetLength(Ftokens,NGwords.Count);
421 h677 1.1 for i := 0 to NGwords.Count -1 do begin
422     SetTokens(i , NGwords.Strings[i]);
423     end;
424 h677 1.7 Execute(ThreadStrings);
425 h677 1.1
426     end;
427 h677 1.7 procedure TAbon.Execute(var ThreadStrings : TStringList; NGwords : TStrings);
428 h677 1.1 var
429     i : Integer;
430     buf : TStringList;
431     begin
432     buf := TStringList.Create;
433     buf.AddStrings(NGwords);
434 h677 1.2 SetLength(Ftokens,buf.Count);
435 h677 1.1 for i := 0 to buf.Count -1 do begin
436     SetTokens(i , buf.Strings[i]);
437     end;
438 h677 1.7 Execute(ThreadStrings);
439 h677 1.1 buf.Free;
440     end;
441    
442    
443     //****************************************************************************//
444     //DAT???眼????????絅眼??===========================================================
445     //NG???若???????????鴻???????????若?若?????水??/span>
446     function TAbon.ExecuteFile(datfilepath : String; NGwordpath : String) : Boolean; //DAT???<?ゃ?????眼????????
447     var
448     datstl : TStringList;
449     ret : Boolean;
450     i : Integer;
451     begin
452     datstl := TStringList.Create;
453     ret := true;
454     try
455     try
456     datstl.LoadFromFile(datfilepath);
457     for i := 0 to datstl.Count -1 do begin
458     if FindNGwords(datstl.Strings[i]) = true then begin
459     datstl.Strings[i] := FAbonString + datstl.Strings[i]
460     end;
461     end;
462    
463     datstl.SaveToFile(datfilepath);
464     except
465     ret := false;
466     end;
467     finally
468     datstl.Free;
469     end;
470     Result := ret;
471    
472     end;
473     //??絎??????????合?????????????若?若???水??/span>
474     function TAbon.ExecuteFile(datfilepath : String; resnum : Integer) : Boolean; //DAT???<?ゃ?????眼????????
475     var
476     datstl : TStringList;
477     ret : Boolean;
478     begin
479     ret := true;
480     datstl := TStringList.Create;
481     try
482     try
483     datstl.LoadFromFile(datfilepath);
484     if (resnum > 0) and (resnum <= datstl.Count) then begin
485     if AnsiPos(FAbonString, datstl.Strings[resnum-1]) <> 1 then begin
486     datstl.Strings[resnum-1] := FAbonString + datstl.Strings[resnum-1];
487     end;
488     end;
489     datstl.SaveToFile(datfilepath);
490     except
491     ret := false;
492     end;
493     finally
494     datstl.Free;
495     end;
496     Result := ret;
497     end;
498     //firstres????count???????鴻???????????若?若???水??/span>
499     function TAbon.ExecuteFile(datfilepath : String; firstres : Integer; count : Integer) : Boolean; //DAT???<?ゃ?????眼????????
500     var
501     datstl : TStringList;
502     i : Integer;
503     endnum : Integer; //腟?????????合??/span>
504     ret : Boolean;
505     begin
506     ret := true;
507     datstl := TStringList.Create;
508     try
509     try
510     datstl.LoadFromFile(datfilepath);
511     if (firstres > 0) and (firstres <= datstl.Count) then begin
512     if firstres + count -1 > datstl.Count then begin
513     endnum := datstl.Count;
514     end else if count <= 0 then begin
515     endnum := firstres + 1;
516     end else begin
517     endnum := firstres + count -1;
518     end;
519    
520     for i := firstres to endnum do begin
521     if AnsiPos(FAbonString, datstl.Strings[i-1]) <> 1 then begin
522     datstl.Strings[i-1] := FAbonString + datstl.Strings[i-1];
523     end;
524     end;
525     end;
526     datstl.SaveToFile(datfilepath);
527     except
528     ret := false;
529     end;
530     finally
531     datstl.Free;
532     end;
533     Result := ret;
534     end;
535     //DAT???眼????????絅眼??==========?????障??========================================
536    
537     //?????祉??絅眼??==================================================================
538     function TAbon.ReverseExecuteFile(datfilepath : String) : Boolean; //DAT???<?ゃ?????眼????????
539     var
540     datstl : TStringList;
541     i : Integer;
542     buf : String;
543     ret : Boolean;
544     begin
545     ret := true;
546     datstl := TStringList.Create;
547     try
548     try
549     datstl.LoadFromFile(datfilepath);
550     for i:=0 to datstl.Count -1 do begin
551     if AnsiPos(FAbonString, datstl.Strings[i]) = 1 then begin
552     buf := datstl.Strings[i];
553     Delete(buf,1,Length(FAbonString));
554     datstl.Strings[i] := buf;
555     end;
556     end;
557     datstl.SaveToFile(datfilepath);
558     except
559     ret := false;
560     end;
561     finally
562     datstl.Free;
563     end;
564     Result := ret;
565    
566     end;
567     function TAbon.ReverseExecuteFile(datfilepath : String; resnum : Integer) : Boolean; //DAT???<?ゃ?????眼????????
568     var
569     datstl : TStringList;
570     buf : String;
571     ret : Boolean;
572     begin
573     ret := true;
574     datstl := TStringList.Create;
575     try
576     try
577     datstl.LoadFromFile(datfilepath);
578     if (resnum > 0) and (resnum <= datstl.Count) then begin
579     if AnsiPos(FAbonString, datstl.Strings[resnum-1]) = 1 then begin
580     buf := datstl.Strings[resnum-1];
581     Delete(buf,1,Length(FAbonString));
582     datstl.Strings[resnum-1] := buf;
583     end;
584     end;
585     datstl.SaveToFile(datfilepath);
586     except
587     ret := false;
588     end;
589     finally
590     datstl.Free;
591     end;
592     Result := ret;
593    
594     end;
595     function TAbon.ReverseExecuteFile(datfilepath : String; firstres : Integer; count : Integer) : Boolean;//DAT???<?ゃ?????眼????????
596     var
597     datstl : TStringList;
598     i : Integer;
599     endnum : Integer; //腟?????????合??/span>
600     buf : String;
601     ret : Boolean;
602     begin
603     ret := true;
604     datstl := TStringList.Create;
605     try
606     try
607     datstl.LoadFromFile(datfilepath);
608     if (firstres > 0) and (firstres <= datstl.Count) then begin
609     if firstres + count -1 > datstl.Count then begin
610     endnum := datstl.Count;
611     end else if count <= 0 then begin
612     endnum := firstres + 1;
613     end else begin
614     endnum := firstres + count -1;
615     end;
616     for i := firstres to endnum do begin
617     if AnsiPos(FAbonString, datstl.Strings[i-1]) = 1 then begin
618     buf := datstl.Strings[i-1];
619     Delete(buf,1,Length(FAbonString));
620     datstl.Strings[i-1] := buf;
621     end;
622     end;
623     end;
624     datstl.SaveToFile(datfilepath);
625     except
626     ret := false;
627     end;
628     finally
629     datstl.Free;
630     end;
631     Result := ret;
632     end;
633     //?????祉??絅眼??=================?????障??========================================
634     //?上???祉??????????????NGword.txt??????span>
635     procedure TAbon.EditNGwords();
636     begin
637     ShellExecute(0 ,nil,PChar(FNGwordpath),nil,nil,SW_SHOW);
638     end;
639 h677 1.12 //???????≪???????ゅ??∽??/span>
640 h677 1.3 function TAbon.CheckAbonPopupRes(line : String) :Boolean;
641 h677 1.9 begin
642     if AbonPopupRes = true then begin
643     Result := FindNGwords(line);
644     end else begin
645     Result := false;
646     end;
647     end;
648 h677 1.10 //茲??違??G???若???????鴻????茯??粋昭??==============================================
649 h677 1.9 //List???<?ゃ????茯??粋昭??
650     function TAbon.LoadListFile(path :String; listStringList : TStringList) : Boolean;
651     begin
652     try
653     listStringList.LoadFromFile(path);
654     Result := true;
655     except
656     listStringList.Append('筝???NGword.txt');
657     listStringList.SaveToFile(path);
658     Result := false;
659     end;
660     end;
661     //List????ゆ???G???若?????<?ゃ????茯??粋昭??
662     function TAbon.GoForward() : Boolean;
663 h677 1.10 begin
664     FNGwordFileIndex := FNGwordFileIndex + 1;
665     Result := ReadNGwordslist(FNGwordFileIndex);
666     end;
667     //List????ゅ????G???若?????<?ゃ????茯??粋昭??
668     function TAbon.GoBack() : Boolean;
669     begin
670     FNGwordFileIndex := FNGwordFileIndex -1;
671     Result := ReadNGwordslist(FNGwordFileIndex);
672     end;
673     //List???茵?????茯???
674     procedure TAbon.GoHome();
675     begin
676     FNGwordFileIndex := 0;
677     ReadNGwordslist(FNGwordFileIndex);
678     end;
679     //List??ine茵?????茯???
680     function TAbon.ReadNGwordslist(line : Integer) : Boolean;
681 h677 1.3 var
682 h677 1.9 liststl : TStringList;
683     linebuf : String;
684 h677 1.3 begin
685 h677 1.9 liststl := TStringList.Create;
686     try
687     if LoadListFile(Flistpath,liststl) = true then begin
688 h677 1.10 if line < 0 then begin
689     line := liststl.Count - 1;
690     FNGwordFileIndex := liststl.Count - 1;
691     end else if line > liststl.Count - 1 then begin
692     line := 0;
693 h677 1.9 FNGwordFileIndex := 0;
694     end;
695 h677 1.10 linebuf := liststl.Strings[line];
696 h677 1.9 FNGwordname := Copy(linebuf,1,AnsiPos('=',linebuf)-1);
697     Delete(linebuf,1,AnsiPos('=',linebuf));
698     SetNGwordpath(linebuf);
699     Result := true;
700 h677 1.3 end else begin
701     Result := false;
702 h677 1.9 end
703     finally
704     liststl.Free;
705 h677 1.3 end;
706 h677 1.9
707     end;
708 h677 1.10 //茲??違??G???若???????鴻????茯??粋昭??=====?????障??================================
709 h677 1.11 //???ャ???若????絎?茵??∽??/span>
710     procedure TAbon.IndividualAbon(var ThreadStrings : TStringList; SetResNumFile : String);
711     var
712     i : Integer;
713     begin
714     if FileExists(SetResNumFile) = true then begin
715     if LoadFromSetResNumFile(SetResNumFile) = true then begin
716     for i := 0 to High(FAbonRes) do begin
717     if (FAbonRes[i].Res <= ThreadStrings.Count) and (FAbonRes[i].Res > 0) then begin
718     if FAbonRes[i].option = 0 then begin
719     ThreadStrings.Strings[FAbonRes[i].Res-1] := '';
720     end else begin
721 hi_ 1.13 ThreadStrings.Strings[FAbonRes[i].Res-1] := '???若????<>???若????<>???若????<>???若????<>';
722 h677 1.11 end;
723     end;
724    
725     end;
726     end;
727     end else begin
728     FIndividualFileName := SetResNumFile;
729     SetLength(FAbonRes,1);
730     FAbonRes[0].Res := 0;
731     FAbonRes[0].option := -1;
732     end;
733     end;
734     //???ャ???若???????<?ゃ????粋昭?翠?∽??/span>
735     function TAbon.LoadFromSetResNumFile(SetResNumFile : String) : Boolean;
736     var
737     bufStringList : TStringList;
738     bufLine : String;
739     i : Integer;
740     begin
741     bufStringList := TStringList.Create;
742     try
743     try
744     bufStringList.LoadFromFile(SetResNumFile);
745     FIndividualFileName := SetResNumFile;
746     //腥肴?????/span>
747     for i := bufStringList.Count-1 downto 0 do begin
748     if bufStringList.Strings[i] = '' then begin
749     bufStringList.Delete(i);
750     end;
751     end;
752    
753     //?<?≪??∈篆?
754     SetLength(FAbonRes,bufStringList.Count);
755     //篁e??/span>
756     for i :=0 to bufStringList.Count - 1 do begin
757     bufLine := Trim(bufStringList.Strings[i]);
758     FAbonRes[i].Res := StrToInt(Copy(bufLine,1,AnsiPos('-',bufLine)-1));
759     FAbonRes[i].option := StrToInt(Copy(bufLine,AnsiPos('-',bufLine)+1,1));
760     end;
761     except
762     Result := false;
763     Exit;
764     end;
765     finally
766     bufStringList.Free;
767     end;
768     Result := true;
769     end;
770     //???ャ???若???????<?ゃ????申??
771     procedure TAbon.AddIndividualAbon( ResNum : Integer ; option : Integer);
772     var
773     IndividualFile : TStringList;
774     linebuf : String;
775     i : Integer;
776     begin
777     IndividualFile := TStringList.Create;
778     if FAbonRes[0].Res <> 0 then begin
779     for i := 0 to High(FAbonRes) do begin
780     if FAbonRes[i].Res <> ResNum then begin
781     linebuf := IntToStr(FAbonRes[i].Res) + '-' + IntToStr(FabonRes[i].option);
782     IndividualFile.Append(linebuf);
783     end;
784     end;
785     end;
786     linebuf := IntToStr(ResNum) + '-' + IntToStr(option);
787     IndividualFile.Append(linebuf);
788     try
789     IndividualFile.SaveToFile(FIndividualFileName);
790     finally
791     IndividualFile.Free;
792     end;
793     end;
794     //???ャ???若???????<?ゃ??????????/span>
795     procedure TAbon.DeleteIndividualAbon( ResNum : Integer);
796     var
797     IndividualFile : TStringList;
798     linebuf : String;
799     i : Integer;
800     begin
801     IndividualFile := TStringList.Create;
802     if FAbonRes[0].Res <> 0 then begin
803     for i := 0 to High(FAbonRes) do begin
804     if FAbonRes[i].Res <> ResNum then begin
805     linebuf := IntToStr(FAbonRes[i].Res) + '-' + IntToStr(FabonRes[i].option);
806     IndividualFile.Append(linebuf);
807     end;
808     end;
809     end;
810     if IndividualFile.Count <> 0 then begin
811     try
812     IndividualFile.SaveToFile(FIndividualFileName);
813     finally
814     IndividualFile.Free;
815     end;
816     end else begin
817     if FileExists(FIndividualFileName) = true then begin
818     DeleteFile(FIndividualFileName);
819     end;
820     end;
821     end;
822     //???ャ???若?????????鴻???????違??菴???
823     function TAbon.GetAbonResCount() : Integer;
824 h677 1.12 var
825     i : Integer;
826 h677 1.11 begin
827 h677 1.12 if FAbonRes[0].Res = 0 then begin
828     Result := 0
829     end else begin
830     i := High(FAbonRes);
831     Result := i+1;
832     end;
833 h677 1.11 end;
834     //???ャ???若?????????鴻?????茵????????鴻????絖????ц???
835     function TAbon.GetAbonResString(Num : Integer) : String;
836     begin
837 h677 1.12 if (Num <= High(FAbonRes)) and (Num >= 0) then begin
838 h677 1.11 Result := IntToStr(FAbonRes[Num].Res);
839     end else begin
840     Result := '';
841     end;
842 h677 1.12 end;
843     //???????≪???????ゅ???/span>
844     function TAbon.CheckIndividualAbonList(ResNum : Integer) : Boolean;
845     var
846     i : Integer;
847     begin
848     if FAbonRes[0].Res <> 0 then begin
849     for i := 0 to High(FAbonRes) do begin
850     if FAbonRes[i].Res = ResNum then begin
851     Result := true;
852     Exit;
853     end;
854     end;
855     end;
856     Result := false;
857    
858 h677 1.11 end;
859 h677 1.1 end.
860    

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