2008年11月23日

[openoffice:11416] Re: ユーザ定義型の配列変数の代入が変?

あれからいろいろ考えてみたのですが、tempの値がdata(0) に渡
ってしまう時点でもう無理かな?というかんじです。

Wataru Nakanishiさんが08/11/22 7:34 PMに書きました:
>> 構造体が配列の場合、構造体の代入はおそらく何もしていない(
>> NOP)だと思います。
> というのも道理ですが…なんだか気持ち悪いなあ。「左辺値ではな
> いところへの代入だから」とエラーにしてくれればいいのですが。


ある意味で、確信的なバグ(こういうのを仕様というのかもしれ
ない)なんだと思います。
構造体そのものに代入しようとしたとき、Cならば無理矢理実行し
てしまって、場合によっては暴走してしまうところを、とりあえ
ずBASICでは暴走を防ぐためにNOPにして防いでいるっていうか。

> 挙動については納得できましたが,では構造体の各要素をコピーし
> たい場合にはどうしたらいいのでしょうか。要素を一つずつコピー
> すればできるのですが,多分質問者が望んでいるのはそれではない
> だろうと思うのです。

結局、インデックス変数をつくってやるしか方法はないと思いま
す。(^_^;)


Type Data
str As String
End Type

Sub Main

Dim data(1) As Data
Dim id(1)
for i = 0 to 1
id(i)=i
next i

data(id(0)).str = "1"
data(id(1)).str = "2"
print data(id(0)).str & ":" & data(id(1)).str

temp = id(0)
id(0) = id(1)
id(1) = temp
print data(id(0)).str & ":" & data(id(1)).str

End Sub

ところで、VBだとできるんでしょうか?
http://homepage1.nifty.com/MADIA/vb/vb_bbs2/200311/200311_
03110097.html

上の例だと
RtlMoveMemory()
を使うみたいですが。


--
+++++++++++++++++
Kouichi Seki
こういち
kou1@xxxxx
+++++++++++++++++

【MLコミュホームページ http://www.freeml.com/openoffice

--[PR]------------------------------------------------------------------
☆.+.+.++.+.+.+☆ カルシウム&マグネシウム コラーゲン☆.+.+.++.+.+.+☆
            
      ▼▽▼ このお買い得チャンスをお見逃しなく ▼▽▼
≫≫≫☆ まずは1週間のお試し・送料無料 1,050円(税込)☆≪≪≪
http://ad.freeml.com/cgi-bin/sa.cgi?id=cWXmJ
------------------------------------------------------------------[PR]--
■GMO INTERNET GROUP■ GMO INTERNET www.gmo.jp


投稿者 xml-rpc : 2008年11月23日 12:10
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/79309
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。