掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ポインタに代入した時のアドレス (ID:199)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
nicさん、回答ありがとうございました。 いろいろテストしてみたのですが、 procedure TForm1.Button1Click(Sender: TObject); var str : String; buf : PChar; begin str := 'abcdefghij'; str[1] := str[1]; // ダミーのコード buf := PChar(str); buf[1] := '1'; buf[3] := '3'; // 確認用にそれぞれの値を表示させる ListBox1.Items.Add(IntToHex(Integer(str), 8)); ListBox1.Items.Add(IntToHex(Integer(buf), 8)); ListBox1.Items.Add('str[1]='+ str[1]); ListBox1.Items.Add('buf[1]='+ buf[1]); ListBox1.Items.Add(str); ListBox1.Items.Add(buf); end; 上のように、ダミーの str[1] := str[1]; を追加してみたら、strとbufの値(アドレス)が同じになりました。 また、「var str: String;」の定義を関数の外に出しても、strとbufの値は同じになります。 これは、Delphiの仕様なんでしょうか?(Delphi6.0 Personal版) まさかDelphiのバグなんてことはないでしょうね。(^^;; strとbufの値(アドレス)が同じであっても、str[1]とbuf[1]の値が違うことも要注意です。 String(長い文字列)をポインタで操作するなんてことは規則違反なんでしょうか? 話が変わりますが、ここに書き込むと行の先頭のスペースが消えてしまいます。 先頭のスペースを有効にするにはどうしたらいいんでしょう?
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.