AnsiPosについて

解決


う〜ん  2010-05-10 20:41:57  No: 38397  IP: 192.*.*.*

次のように、文字列を「〜」の前後で分割しようとしています。
AnsiPosの値がバイト数で返るので、うまくいかず困っています。
文字列textは2バイト文字と1バイト文字が混在しています。

pos_nami := AnsiPos('〜',text);
str_left := Leftstr(text,pos_nami);
何か簡単にうまくいく方法はないでしょうか?

編集 削除
ささ  2010-05-10 21:18:08  No: 38398  IP: 192.*.*.*

ByteTypeとか
http://www.wwlnk.com/boheme/delphi/tips/tec0710.htm

編集 削除
けど  2010-05-10 21:55:50  No: 38399  IP: 192.*.*.*

StringReplaceで事前に2バイト文字を置換して1バイト文字に統一してから…
私の脊髄反射的処理です

編集 削除
tor  2010-05-10 22:00:14  No: 38400  IP: 192.*.*.*

> AnsiPosの値がバイト数で返るので
ということなら、文字数ではなくバイト数を指定して取り出せればいいんですよね。
LeftStrのヘルプを見ると、そういう場合はLeftBStrを使ってくださいとありますが、試してみました?

編集 削除
KHE00221  2010-05-11 01:41:52  No: 38401  IP: 192.*.*.*

普通に COPY でいいんじゃないか??

var
    S,Text,Left,Right: String;
    I: Integer;
begin
    Text := '1あいう2345〜67えお890';

    S := '〜';
    I := AnsiPos(S,text);
    Left := Copy(Text,1,I-1);
    Right := Copy(Text,I+Length(S),Length(Text)-I-Length(S)+1);
end;

編集 削除
うーん  2010-05-11 20:12:47  No: 38402  IP: 192.*.*.*

皆さん、ありがとうございます。
KHE00221さんの
>普通に COPY 
でうまくいきました。
本当にありがとうございます。

編集 削除
けど  2010-05-11 20:45:00  No: 38403  IP: 192.*.*.*

〜が~と混在してると脊髄反射的に読んでました
恥ずかしい

編集 削除