Pos('¥', '香緒')が2になるのはなぜでしょうか?

解決


ksimo  2009-04-09 08:58:26  No: 33977

皆さんこんばんは。
下記のコードで、上3のメッセージが6・6・2となるのはどういう理由から
でしょうか?
私の通常使用するVBAで、InStr(1, InStr, "¥")で試しても全て0でした。

よろしくお願い致します。

procedure TForm1.FormClick(Sender: TObject);
var
  InStr: string;
begin
  InStr := '井上香緒里著';
  ShowMessage(IntToStr (Pos('¥', InStr)));
  InStr := '井上香緒';
  ShowMessage(IntToStr (Pos('¥', InStr)));
  InStr := '香緒';
  ShowMessage(IntToStr (Pos('¥', InStr)));
  InStr := '緒';
  ShowMessage(IntToStr (Pos('¥', InStr)));
  InStr := '緒里';
  ShowMessage(IntToStr (Pos('¥', InStr)));

end;


KHE00221  2009-04-09 09:35:09  No: 33978

井上香緒里著 は
88,E4, 8F,E3, 8D,81, 8F,8F, 97,A2, 92,98
¥は
81,8F
そして1文字ずつ比較しているので
88,E4, 8F,E3, 8D,81, 8F,8F, 97,A2, 92,98
                 ~~~~~~
ここに一致するので6が返ってくる

WideStringかAnsiPos使えば 0 が返ってくる


KHE00221  2009-04-09 09:35:39  No: 33979

~~~~~~
ずれてるな


ksimo  2009-04-10 05:42:27  No: 33980

KHE00221 さん、こんばんは。
回答ありがとうございます。

何らかの理由でずれが出ているとは思いましたが、こういうことだったん
ですね。

>WideStringかAnsiPos
私の用途だと、AnsiPosがいいみたいですので、変換かけて使用することに
します。

ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加