PB 電子会議室
カテゴリ:ユーザオブジェクト
日付:2001年02月13日 13:48 発信者:ryochan
題名:RE(22):PB6.5: PBの動的配列の扱い
M.Mさん、こんにちは。
>PowerBuilderの製品の位置づけはあくまで4GLであり、初心者にも比較的
>わかりやすいような設計を意識しているようですので、Powerスクリプト
>の仕様も、今のような仕組でいいんじゃないでしょうか。
>
確かにその通りです。
ちょっと、言葉が過ぎたようでした。
只、オブジェクトの実体をポインタ
にさせているなら、動的配列もポインタにし、
(その方が統一性がとれる)
代入の仕様は今のままがいいかな
と思いました。
今のPBの仕様は
動的配列の
long a[],b[]
a = {1,2,3,4,5}
b = a
で
「b = a」の部分は
bの実データ部分にコピーしているからで
(本当はその前にaサイズ分確保するのですが)
そこまでやっているのであれば、
後は、aもbも実体をポインタ(読みに行くのをポインタ)
にしておいてコピー先のアドレスを内部で
bに割り当てればいいだけです。
その結果、動的配列の実体がポインタであっても
b=aとし
a[3] = 100でも
b[3]は100にはならず、3のままです。
これは
PBの動的配列による「=」の機能
■■■■■■・・・・■■■■■■
|← a→|コピー→|← b→|
PBはa,bをアクセスする場合に、上記のデータ部(■部分)を
直接読みに行っているからです。
◇・・・◇・・・■■■■■■・・・・■■■■■■
a b |← a→|コピー→|← b→|
(◇b値はコピー先のアドレス)
これをa,bも■ではなく、◇にアクセス
すればいいだけです。(内部で)
ポインタを知らない人でも
特に困らないと思います。
(コードや仕様は変わりません。
a[3]=100にしてもb[3]=3のままです。)
また代入やrefでアドレスが変わってしまう
ということもなくなります。
まぁ、私がわめいてもどうしようもありませんし、
それに、言うのは簡単ですが、変えるのは大変そうですし...
また、出過ぎた発言をしてしまいました。
申し訳ございません。
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows98
DBMS Oracle SQL*Net 8
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS Oracle 8.0
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.