2003.03.12 (水) 08:09:32 <u*j*2*6*> 1. MAX_FILE_KEYWORDSを元の数字にもどしました。大きくするとTShare.optionsをこわしてしまうみたいなので
2003.03.12 (水) 08:11:16 <u*j*2*6*> 2. 先頭に'-'がつくキーワードを除外する機能がちゃんとはたらくようにしました
2003.03.12 (水) 08:12:13 <u*j*2*6*> 3. 児童ポルノ系の共有をはじきやすくしました
2003.03.12 (水) 08:14:32 <u*j*2*6*> 検索機能の強化はこの修正でおわりのつもりです。

shuusei24127:2バイト文字のキーワード対応を強化(24126参照)

diff --dos -wurN 24126/constants.pas 24127/constants.pas
--- 24126/constants.pas	Sat Mar 01 07:25:40 2003
+++ 24127/constants.pas	Wed Mar 12 07:34:48 2003
@@ -86,7 +86,7 @@
  USERS_NAME_ARRAY             = 2116;
  USERS_IP_ARRAY               = 1024;
  // sharing
- MAX_FILE_KEYWORDS            = 24; // max keywords per file
+ MAX_FILE_KEYWORDS            = 12; // max keywords per file
  KEYWORD_LEN_MAX              = 24; // maximum length of keyword
  KEYWORD_LEN_MIN              = 2; // minimum length of keyword. should be '2' or more
  KEYWORD_MAX_SEARCH           = 8; // maximum keywords in search query
diff --dos -wurN 24126/keywords.pas 24127/keywords.pas
--- 24126/keywords.pas	Sat Mar 01 07:37:30 2003
+++ 24127/keywords.pas	Wed Mar 12 07:50:44 2003
@@ -61,14 +61,14 @@
     begin
       if ((str^[i] in [#$30..#$7A]) and (str^[i-1] in [#$A6..#$DF])) or
          ((str^[i] in [#$A6..#$DF]) and (str^[i-1] in [#$30..#$7A])) then
-      begin //半角英数字と半角カタカナの間に半角空白
-        Insert(' ',str^,i);
+      begin //半角英数字と半角カタカナの間に区切り
+        Insert('.',str^,i);
         Inc(i);
       end                    
       else if ((str^[i] in [#$30..#$39]) and (str^[i-1] in [#$40..#$7A])) or
               ((str^[i] in [#$40..#$7A]) and (str^[i-1] in [#$30..#$39])) then
-      begin //数字とアルファベット+'@'の間に半角空白
-        Insert(' ',str^,i);
+      begin //数字とアルファベット+'@'の間に区切り
+        Insert('.',str^,i);
         Inc(i);
       end;
     end
@@ -87,17 +87,17 @@
         Dec(i);
       end
       else
-      begin //全角文字と半角文字の間に半角空白
-        Insert(' ',str^,i);
+      begin //全角文字と半角文字の間に区切り
+        Insert('.',str^,i);
         Inc(i);
       end;
     end
     else if t=mbLeadByte then
     begin
       if (str^[i]=#$81) and (str^[i+1] in [#$40..#$49,#$4C..#$51,#$5C..#$FC]) then
-      begin //全角記号→半角空白(例外:゛゜ヽヾゝゞ〃仝々〆〇ー)
+      begin //全角記号→区切り(例外:゛゜ヽヾゝゞ〃仝々〆〇ー)
         Delete(str^,i,2);
-        Insert(' ',str^,i);
+        Insert('.',str^,i);
       end
       else if (str^[i]=#$81) and (str^[i+1] in [#$4A,#$4B,#$5B]) then
       begin //゛゜ーを半角にする
@@ -121,19 +121,38 @@
         Dec(i);
       end
       else if (tprev=mbSingleByte) and (i>1) and (str^[i-1]<>' ') and (str^[i-1]<>'-') then
-      begin //半角文字(空白・'-'以外)と全角文字の間に半角空白
-        Insert(' ',str^,i);
+      begin //半角文字(空白・'-'以外)と全角文字の間に区切り
+        Insert('.',str^,i);
         Inc(i);
       end
       else if tprev=mbTrailByte then
-      begin //漢字とそれ以外の全角文字の間に半角空白
+      begin
         if ((str^[i]>=#$88) and (str^[i-2]<#$88)) or
            ((str^[i]<#$88) and (str^[i-2]>=#$88)) then
-        begin
-          Insert(' ',str^,i);
+        begin //漢字とそれ以外の全角文字の間に区切り
+          Insert('.',str^,i);
           Inc(i);
+        end
+        else if ((str^[i]=#$8F) and (str^[i+1]=#$97) and (str^[i+2]=#$8E) and (str^[i+3]=#$71)) or //'女子'
+           ((str^[i]=#$8F) and (str^[i+1]=#$AC) and (str^[i+2]=#$8A) and (str^[i+3]=#$77)) or //'小学'
+           ((str^[i]=#$92) and (str^[i+1]=#$86) and (str^[i+2]=#$8A) and (str^[i+3]=#$77)) or //'中学'
+           ((str^[i]=#$93) and (str^[i+1]=#$90) and (str^[i+2]=#$8E) and (str^[i+3]=#$42)) then //'盗撮'
+        begin //特定の漢字の直前に区切り
+          Insert('.',str^,i);
+          Inc(i,4);
         end;
       end;
+    end
+    else if t=mbTrailByte then
+    begin
+      if ((str^[i-1]=#$8D) and (str^[i]=#$CB)) or //'才'
+         ((str^[i-1]=#$8D) and (str^[i]=#$CE)) or //'歳'
+         ((str^[i-3]=#$8D) and (str^[i-2]=#$82) and (str^[i-1]=#$90) and (str^[i]=#$B6)) or //'高生'
+         ((str^[i-3]=#$8A) and (str^[i-2]=#$77) and (str^[i-1]=#$90) and (str^[i]=#$B6)) then //'学生'
+      begin //特定の漢字の直後に区切り
+        Insert('.',str^,i+1);
+        Inc(i);
+      end
     end;
     Inc(i);
   end;
@@ -253,6 +272,7 @@
            j:=inc_list.FindItem(crc,item); 
            if j<>-1 then
             inc_list.Delete(j);
+           if not hardspacing then last_exc:=True;
          end
          else
          begin