お知らせ

電子会議

ライブラリ

FDelphi サイト全文検索

Delphi FAQ一覧

サンプル蔵



FDelphi FAQ
15番会議室「FAQ編纂委員会」に寄せられた「よくある質問の答え」

[Q]
Delphi 1.0J で、Memoに文字列をAddしようとしたら、「行を挿入できません」 というエラーではねられます。これは何ですか?

[A]
Add しようとした文字列の末尾などに #0 が付いていませんか? これを除
けば OK です。

 文字列の末端 #0って、PCharじゃないです。

    var
      aString: String;

    aString:='末端に#0付加'#0;  {*-1}

というような奴です。これが、Lengh(aString)=13 でして、末端の #0 もち
ゃんと数えられているわけでして。それを知らないで、

    Memo1.Lines.Add(aString);   {*0}

ってしてしまうと、実行時に、「行を挿入できません」というエラーが出て
しまい、あれっと思ってしまいます。このエラーを抜けると、{*0}は表示さ
れていますが、プログラムはそこでそのルーチンからexitします。因みに、

    var
      pcStr: PChar;
      acStr: array[0..12] of char;

で、
    aString:='末端に#0付加';
    StrPCopy(pcStr,aString);
    StrPCopy(acStr,aString);

    Memo1.Lines.Add(pcStr);  {*1} {領域確保済として}
    Memo1.Lines.Add(acStr);  {*2}

とすると、{*1}は、コンパイルエラー。{*2}は、aString と同じ実行時エラ
ーが出てきます。{*0}と{*2}で違うのは、StrLen(acStr)=12 で、末端 #0 
は数えられていないのですが。

 {*-1}は注意して下さい。途中の'#0'は単なる文字列です。#0 としては機
能していません。


ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum FDELPHIに寄せられる質問の中から、よくある質問への回答を FDELPHIのメンバーがまとめたものです。 したがって、これらの回答はボーランド株式会社がサポートする公式のものではなく、掲示されている内容についての問い合わせは受けられない場合があります。

Copyright 1996-1998 Delphi Users' ForumFAQ編纂委員会