| 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; |
| 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行目を読む |
| 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 |
| 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; |
| 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 |
| 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 |
| 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; |