掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Copy('あいうえお',2,2);で、「い」が取り出せない (ID:14584)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
uses jstrm; procedure TForm1.Button1Click(Sender: TObject); var s : String; i ,CopyLen : Integer; begin Memo1.Clear; s := 'あいうえお'; // ☆ Memo1.Lines.Add( jstrm.JCopy(s,2,1) ); // △ Memo1.Lines.Add( Copy(s , jstrm.MtoB(s,2) ,2) ); // IsDBCSLeadByte // 1バイト目判定 面倒なので jCopyをお勧めします if IsDBCSLeadByte(Byte(s[3])) then CopyLen := 2 else CopyLen := 1; Memo1.Lines.Add( Copy(s , 3 ,CopyLen) ); // ☆ for i := 1 to jstrm.JLength(s) do Memo1.Lines.Add(jstrm.JCopy(s,i,1)); Memo1.Lines.Add(IntToStr(jstrm.MtoB(s,2))); end; { jstrm.JCopy(S: String; Index, Count: Integer) Countには、バイトではなく「文字数」を指定します。 '123'でも'123'どちらも3文字です jstrm.JLength 戻り値は文字数です。 バイトではありせん。 JLength('12')は、2が返ってきます jstrm.MtoB(S: string; AMoji: Integer): Integer; S文字列において先頭からAMoji番目の文字(文字数)が 何バイト目に相当するかを返します。。 S=123の2なら、AMojiに2を指定するとMtoB(s,2)=、3が返ってきます。 }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.