喫茶XRAYトップページ

[スレッド全体
]

[9956] 型宣言された整数型の配列の操作返信 削除
2016/5/17 (火) 23:57:22 Mr.XRAY
> ------------------------------------------
> Delphi/動的配列の罠
> http://tobysoft.net/wiki/index.php?Delphi%2F%C6%B0%C5%AA%C7%DB%CE%F3%A4%CE%E6%AB
>
> 動的配列を「string のようなものだ」と思っていると痛い目に合います。
> 動的配列は参照カウンタつきポインタ


これ読み直してみたら,TOBY さんのブログ ? まずい !!
かなりキツイこと書いてしまったかな ?

下の方に「対策」として

>SetLengthして for ループで1つ1つコピーしてもいいのですが、面倒ですので、
>copyを使います。


つまり,Array2 := Array1; のようにして配列の要素のコピーができない.
ということなんですね.
上の文章を,型定義に適用したら

『クラス,コンポーネントを「String のようなものだ」と思っていると痛い目に
合います』
ということになってしまいます.そう思っている人って,多分あまりいないと思います.
だから,TIntegerDynArray も同じなんです.

記事書きました.

[型宣言と型宣言なしの配列 - 整数型配列の場合]
http://mrxray.on.coocan.jp/Delphi/Others/TypeArray.htm


[9957] Re:型宣言された整数型の配列の操作返信 削除
2016/5/18 (水) 12:20:28 Mr.XRAY
> 『クラス,コンポーネントを「String のようなものだ」と思っていると痛い目に
> 合います』
> ということになってしまいます.そう思っている人って,多分あまりいないと思います.
> だから,TIntegerDynArray も同じなんです.


これ間違っていますね.変です.う〜ん.
 
> [型宣言と型宣言なしの配列 - 整数型配列の場合]
> http://mrxray.on.coocan.jp/Delphi/Others/TypeArray.htm


この記事も読み返したら,ちょっと変です...
こういう記事は苦手です.
まっ,いいか... (^^;

代議士ではありませんが,
「誤解を招いたら,ゴメンナさい」


[9959] Re2:型宣言された整数型の配列の操作返信 削除
2016/5/18 (水) 14:52:28 taki
▼ Mr.XRAYさん
 
> この記事も読み返したら,ちょっと変です...
> こういう記事は苦手です.
> まっ,いいか... (^^;
>
> 代議士ではありませんが,
> 「誤解を招いたら,ゴメンナさい」


マスター 悩ませてしまいごめんなさい。

TOBY氏のこの記事の意図は
『「書き換えた時にコピー(copy on write)」はしてくれないのです。』の
部分にあるように思えます。

Delphiのコーディングではintegerやstringなどで定義した変数は、:= による
代入やvar指定していない関数の引数は元の変数の値が先の変数へコピーされます。
コピーされることで、元の変数の値は先の変数の値と分離されます。
しかし動的配列は代入してもコピーされませんから注意してください。

という事でしょう。

マスターにとっては、ポインタなんだから「当たり前」と感じられるかもしれま
せんが、私のレベルではポインタという事が頭にありませんからintegerやstringと
同じように扱って、動的配列のデータが意味不明な値になって壺にハマって
しまいかねません。

また、このページのおかげで copy できる事も知りましたし…。


[9960] Re3:型宣言された整数型の配列の操作返信 削除
2016/5/18 (水) 15:21:54 Mr.XRAY
▼ takiさん

> マスター 悩ませてしまいごめんなさい。

とんでもないですよ.
こういうやりとりがあるから,いろいろ自分の知識の確認や,知識を得ることが
できるのだと思います.
某掲示板のように,
『できました.うまくいきました』
だけで終わったら,進歩がないと思うんですが...

逆にしつこく私が書くので,そっちの方が迷惑かも.
でも,質問等をした方だけでなく,この喫茶XRAY を観ている方向けに
書いているつもりです.
そして,自分自身の確認のためにも (^^;

> しかし動的配列は代入してもコピーされませんから注意してください。

多分そういうことです.
「整数,文字列」というのは,クラスと違い,単純な型のイメージがありますから.
TOBY さん,いろいろ書いてスミマせん.ゴメンなさい m(_ _)m
 
> また、このページのおかげで copy できる事も知りましたし…。

そう思っていただけると嬉しいです.
あっ ! TOBY さんとこには書いてありますね.
掲載した記事は,整数型配列の使い方のように思っていただけると,
と思っています.
ポインタやら,参照カウント等を持ち出すとややっこしくなりますので.


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82