喫茶XRAYトップページ

[スレッド全体
]

[833] Re2:悪いのは僕のせい!!返信 削除
2006/6/10 (土) 00:46:11 Mr.XRAY
▼ Syakeさん

> えっ、う〜む。Win98だと2Byteも1となるということですか。
更にゴメン、同じWin2000またはWinXPなのにSyakeさんのマシンでは
そうなるということですね。


[834] Re3:悪いのは僕のせい!!返信 削除
2006/6/10 (土) 00:50:27 Mr.XRAY
▼ Syakeさん
 
> 更にゴメン、同じWin2000またはWinXPなのにSyakeさんのマシンでは
> そうなるということですね。

え〜と、それXPMan使用しています?
なんか、XPMan使用すると狂うようです。確か。これから調べてみます。


[835] Re4:悪いのは僕のせい!!返信 削除
2006/6/10 (土) 08:59:18 Syake
▼ Mr.XRAYさん

> > 更にゴメン、同じWin2000またはWinXPなのにSyakeさんのマシンでは
> > そうなるということですね。
> え〜と、それXPMan使用しています?
> なんか、XPMan使用すると狂うようです。確か。これから調べてみます。


ありがとうございます。
XPManつかってます。
ずばり当たってました。
都合上、DLLとして組んでますが、呼び出し方が違ってます。
@XP非対応(VB)アプリケーション→DLL呼び出し
AXP非対応(VB)アプリケーション→Exe起動(UsesにXPMan)→DLL呼び出し

私のマシンでも@の時には他のマシンと同様の状態になりました。
つまるところ、XPManの関係のようです。
さて、どうしたもんでしょう。




[836] Re5:悪いのはMSのせい!!返信 削除
2006/6/10 (土) 09:23:23 Syake
いろいろありがとうございます。m(__)m

取り敢えず

function XXXXXX.XpManChk: TXPMan;
var
   ObjMem :TMemo;
   RetLen,RetSel :Integer;
begin
   ObjMem := TMemo.Create(Application);
   try
      ObjMem.Parent := Self;
      ObjMem.Text := 'あ';
      ObjMem.SelStart := Length(ObjMem.Text);
      RetLen := Length(ObjMem.Text);
      RetSel := ObjMem.SelStart;
      if RetSel <> RetLen then
      begin
         Result := ManOn;
      end else begin
         Result := ManNon;
      end;
   finally
      ObjMem.Free;
   end;
end;

とうい、強引ともいえる判定方法で切り抜けますか?
学が無いので、この程度しか思いつきませんでした(;_;)


[837] Re6:悪いのはMSのせい!!返信 削除
2006/6/10 (土) 12:07:17 Mr.XRAY
▼ Syakeさん

11時46分。まだ眠いッス。
私も実験してみました。確かにXPMan使用すると、1,2バイト文字とは無関係
に、常に1文字として数えますね。

> とうい、強引ともいえる判定方法で切り抜けますか?
しかないでしょうね。このXPManって、Unicodeを前提なんでしょうか。

カーソル位置を、マウスで指定(設定)して、
   Memo1.SelText := '挿入文字列';
とするとSelStartで取得する文字数とは無関係にカーソル位置に挿入され
るので、SelTextを調べると何かわかるかも...。


[840] Re7:悪いのはMSのせい!!返信 削除
2006/6/12 (月) 08:50:46 Syake
▼ Mr.XRAYさん
> 私も実験してみました。確かにXPMan使用すると、1,2バイト文字とは無関係
> に、常に1文字として数えますね。

お手数おかけしました。

> しかないでしょうね。このXPManって、Unicodeを前提なんでしょうか。
のようです。
只今、過渡期ってやつですね。
思わぬ落とし穴が待っています。
一番厄介なパターンです。



[▼次のスレッド]
INCM/CMT
Cyclamen v3.82