喫茶XRAYトップページ


[13056] ポインタ?返信 削除
2019/9/26 (木) 15:45:47 Mr.XRAY
以下の記事を追加しました.

[ 変数のアドレスとポインタとポインタ型 ]
http://mrxray.on.coocan.jp/Delphi/Others/Pointer.htm

昔書きかけて放置状態だったのを整備しました.
メールでの質問だったのですが,
変数の管理部分と実際の値が書き込まれている領域とは違う,というこを
説明するのに非常に苦労したことを覚えています.
そのことがあって書きかけた内容です.
削除してしまうのももったいないので整備して UP しました.


[13075] Re:ポインタ?返信 削除
2019/10/3 (木) 08:13:59 Mr.XRAY
> [ 変数のアドレスとポインタとポインタ型 ]
> http://mrxray.on.coocan.jp/Delphi/Others/Pointer.htm


レコード型について触れていませんでしたので追加しました.
その他,いろいろ編集しています.


[13077] Re2:ポインタ?返信 削除
2019/10/4 (金) 09:05:48 Mr.XRAY
クラス型とポインタの記事に重大な間違いがありましたので修正しました.
私目の無知による間違いです.
「無知は最大の武器」


[13082] Re3:ポインタ?返信 削除
2019/10/7 (月) 20:40:40 Mr.XRAY
また追加しました.

[ 汎用ポインタ型の Objects プロパティと Data プロパティ ]
http://mrxray.on.coocan.jp/Delphi/Others/Pointer.htm#10
[ tag プロパティに数値やレコード型のデータを関連付けする ]


参考までに昔あった質問の一部.
もちろん例によってコードの提示はなしです.
「メモリを解放しているのにメモリリークが発生します」
と言う内容の質問です (でした).

おそらく以下のようなことをやっていたのでははないかと推測しました.
本人からの give がなかたので何ともですが・・・
このコードは Button2.Tag に代入されているアドレスだけのメモリは解放されます.


procedure TForm1.Button1Click(Sender: TObject);
var
  LpValue : PDouble;
begin
  New(LpValue);
  LpValue^ := 123.56;
  Button1.Tag := NativeInt(LpValue);

  New(LpValue);
  LpValue^ := 5000.12;
  Button2.Tag := NativeInt(LpValue);

  Dispose(LpValue);
end;


[13083] Re4:ポインタ?返信 削除
2019/10/7 (月) 21:02:06 Mr.XRAY
こういうポインタの記事を書いたりテストしてみると,
Delphi のポインタの操作というのはよくできているなぁ,
と思います.

少し前に配列の記事を書きましたが,
Delphi の配列の操作関係はよくできていると思います.

遥か昔は C++ を使用していたわけですが
C++ はそれなりですが,
どんなアプリの開発に使用するかにもよるのかも知れません.


[13122] Re:ポインタ?返信 削除
2019/10/30 (水) 16:21:43 Mr.XRAY
以下を追加しました.
>
[ 03_ポインタが示すアドレスの値とメモリの確保 ]  <--- 非常に長いです (^^);
http://mrxray.on.coocan.jp/Delphi/Others/Pointer.htm#03

[ 04_ポインタ型 ]


[13144] Re:ポインタ?返信 削除
2019/11/18 (月) 21:55:38 Mr.XRAY
以下を追加しました.

[ 10_PChar 型と関数や手続きの PChar 型の引数 ]
http://mrxray.on.coocan.jp/Delphi/Others/Pointer.htm#10


[13149] Re2:ポインタ?返信 削除
2019/11/21 (木) 18:10:04 Mr.XRAY
> [ 10_PChar 型と関数や手続きの PChar 型の引数 ]
> http://mrxray.on.coocan.jp/Delphi/Others/Pointer.htm#10


前に話題にした

[ なんでポインタ演算ができないのよ(しくしく) ]
https://hp.vector.co.jp/authors/VA015850/delphi/tips/etc04.html


の内容を盛り込みました.
上のページのコードの意図はよく分かりません.
提示されているコードでは 6 になっていますいが,
6 だと World の W と重なってしまうので,以下のコードでは 5 にしています.

rocedure TForm1.Button1Click(Sender: TObject);
var
  P : PChar;
  S : array[0..999] of Char;
begin
  StrCopy(S, 'Hello World');

  p := @S;
  Memo1.Lines.Add(P);

  P[5] := 'W';
  PChar(P + 6)^ := 'A';
  Memo1.Lines.Add(P);



[13150] Re3:ポインタ?返信 削除
2019/11/24 (日) 23:07:16 Mr.XRAY
更に追加しました.
さすがに,これで終りでしょう.多分・・・

[ 11_String 型のポインタ型 PString 型 ]
http://mrxray.on.coocan.jp/Delphi/Others/Pointer.htm#11


INCM/CMT
Cyclamen v3.82