241131← ↑修正パッチ →241133

2004.07.03 (土) 20:07:42 <u*j*2*6*> 現象はfacenapのbugtrack25と同じだと思います
2004.07.03 (土) 20:15:01 <u*j*2*6*> facenapとは原因がちがうと思うのですが(facenapはStringCRC関数を使わない)、
2004.07.03 (土) 20:15:30 <u*j*2*6*> 一言でいうとStringCRC('〜A', True) <> StringCRC('〜a', True)となってしまうバグです
2004.07.03 (土) 20:17:14 <u*j*2*6*> Lower_Case引数がTrueのときは先にStrにAnsiLowerCase?をかけておくようにしました。
2004.07.03 (土) 20:19:12 <u*j*2*6*> ちょっと無駄がおおい気がしますが、うしろ数バイトを返り値に使うことと全角文字を文字列のうしろから探すのが面倒そうだったのでこうしました

shuusei241132:一部の全角英数IDにIMが送れないバグの修正(report by かお)

Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 
 
 
 
 
 
 
-
-
|
|
-
|
|
|
|
|
|
|
|
|
|
!
|
|
|
!
|
|
diff --dos -urN 241131/stypes.pas 241132/stypes.pas
--- 241131/stypes.pas    Thu Jul 01 22:15:04 2004
+++ 241132/stypes.pas    Sat Jul 03 19:39:22 2004
@@ -2311,17 +2311,20 @@
 function StringCRC(Str: string; Lower_Case: Boolean): Word;
 var
   C: Char;
-begin // Counts 2-Byte CRC of string. Used for Faster comparison
+begin // Counts 2-byte CRC of string. Used for faster comparison
   Result := Length(Str);
   if Result > 0 then
   begin
-    C := Str[Result];
     if Lower_Case then
-      if (C >= 'A') and (C <= 'Z') then
-        Inc(C, 32);
+      Str := AnsiLowerCase(Str);
+    C := Str[Result];
+    // if Lower_Case then
+    //   if (C >= 'A') and (C <= 'Z') then
+    //     Inc(C, 32);
     Result := Ord(C) + 256 * Result;
   end;
-  // Using last Character of string instead of first Because almost All databases Are already Sorted by First character
+  // Using last character of string instead of first because almost
+  // all databases are already sorted by first character
 end;
 
 procedure StartLogStartup;
241131← ↑修正パッチ →241133