Length関数について教えて下さい

解決


suzu_rin  2005-07-27 23:14:50  No: 16657

Length関数について教えて下さい。
環境:Delphi2005です。

Length('ABCあいう')ってすると、
[6]を返すのですが
どうして[9]ではないのでしょうか...。


Syake  2005-07-28 01:59:09  No: 16658

戻り値はByteなので、超普通にやれば[9]です。
本当に
>Length('ABCあいう')
ってやってます。?

WideStringなら[6]ですけど。
ShowMessage(IntToStr(Length('ABCあいう')));//→9
ShowMessage(IntToStr(Length(WideString('ABCあいう'))));//→6


大豆くん  2005-07-28 02:45:54  No: 16659

suzu_rinさん
  こんにちは

.net  VCLでは、
言われているとおり
文字数が  返ってくるようですね

Borland.Vcl.SysUtils.CharLength
CharLength 関数は,文字で使用されるバイト数を返します。
を使えば  できそうなきもしますが・・・

バイトを求める関数あったと思うのですけど
忘れました(^_^;

文字列のバイト数を取得するには?
http://www.atmarkit.co.jp/fdotnet/dotnettips/012strcount/strcount.html

lengthのヘルプがヘルプに載っていませんでの
詳しい方からの返事を待ってくださいね。


Syake  2005-07-28 03:32:01  No: 16660

・・・・.NETか。


suzu_rin  2005-07-28 20:42:54  No: 16661

Syake様
  ご回答ありがとうございます。
  本当に Length('ABCあいう') ってやってます。
  環境に .NET を書くのを忘れていました。スミマセン...

大豆くん様
  ご回答ありがとうございます。
  CharLengthを使って文字列の文字数分だけループさせて
  カウントする関数を作ればできそうですー。
  

ところで Length って
どうして使えなく(未定義とかじゃなく文字通り使えない…)
なったんですか...?


Syake  2005-07-28 22:08:30  No: 16662

使えなくなったわけではありません。
Helpにこうあります。

1 バイトおよびマルチバイト文字列の場合,Length は文字列によって使用されるバイト数を返します。Unicode (WideString) 文字列の場合は,バイト数を 2 で割った値が返されます。

UNICODEでは常に2BYTEで表現されます(半角英数も全て)。
つまるところ、.NTEはUNICODEなのでそうなります。


suzu_rin  2005-07-28 22:28:20  No: 16663

Syake様
  ご返信ありがとうございます。
  なるほど...UniCodeだからですか。

  で、Syake様からのご返信を拝見して、
  IntToStr(Length(AnsiString('ABCあいう')));
  ってやってみたんですが、コレってありですか...?


Syake  2005-07-28 23:57:46  No: 16664

まあ良いかもしれませんが、
UNICODEでないと表せない文字は駄目だと思ういますが。
その場合は、結果的に漢字でも「1」になる。


Syake  2005-07-29 00:00:34  No: 16665

間違って送信してしまった。...続き

つまるところ、そう単純でもないようで・・・
そんなことしたら、思わぬ落とし穴がありそうな。


suzu_rin  2005-07-29 19:28:03  No: 16666

Syake様
  おはようございます。
  Syakeさんの仰る、

  > 思わぬ落とし穴

  って

  > UNICODEでないと表せない文字は駄目だと思ういますが。
  > その場合は、結果的に漢字でも「1」になる。

  というようなときですよね...


Syake  2005-07-30 01:50:17  No: 16667

.NET(D2005)になってから「くそみたいなHelp」(失礼)しかないので判りません。(使ったこともないし)
結果的にそうなってしまうのでは、そういった目的では推奨はされないでしょう。
また、判ってるのはそのくらいで、他に何があるかはわかりませんし、他には何もないかもしれません。

としか答えようが(^_^;)


suzu_rin  2005-08-01 18:42:12  No: 16668

Syake 様
  確かにD2005になってからヘルプが変ですし、
  なんか使いづらいですし…
  
  何度も何度もスミマセンでしたm(_ _*)m
  
  さて、どうしようかな、、、と。


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

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






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