HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0505
GrapeColor効率的に配列要素への追加/削除3解決


GrapeColor

リンク

2012/5/5(Sat) 14:19:39|NO.46456

配列要素に追加(例)

元のデータ a(0) = "1" a(1) = "2" a(2) = "3" 配列要素1に"4"を追加(それ以降の要素を一つ後ろにずらす) 結果 a(0) = "1" a(1) = "4" a(2) = "2" a(3) = "3"
配列要素から削除(例)

元のデータ a(0) = "1" a(1) = "2" a(2) = "3" 配列要素1を削除&詰める a(0) = "1" a(1) = "3" a(2) = "" //余った要素は空欄で埋める
すごく分かりにくい例えですが、こんなことが簡単に効率的にできる方法はありませんか?
自分でも色々プログラムを考えたのですが、頭が悪いので上手くいきません。



この記事に返信する


匿名希望

リンク

2012/5/5(Sat) 14:55:06|NO.46457

文字列でいいのなら、note系命令を使うという手があります
どうしても配列にこだわるのなら、repeatを使って逐一代入していくしかないかも知れません



てれてれ

リンク

2012/5/5(Sat) 15:49:40|NO.46459

無ければ作るというのも1つの手です。

#module #deffunc SimAdd array v1, int ind, str add repeat length(v1)-ind-1 v1(length(v1)-cnt-1) = v1(length(v1)-cnt-2) loop v1(ind) = add return #deffunc SimDel array v1, int ind repeat length(v1)-ind-1,ind v1(cnt) = v1(cnt+1) loop v1(length(v1)-1) = "" return #global //初期化 使用する配列を予め確保しておく。 sdim buf,256,256 Buf = "0","1","2","3","4","6","E","7","8","9" pos 10,10 : mes "追加前" repeat length(Buf) : mes ""+Buf(cnt)+"" : loop : wait 100 //全ての配列を表示 // SimAdd p1,p2,p3 // p1 = 変数名 // p2 = 追加先の配列番号 // p3 = 追加したいデータ(文字列型) SimAdd Buf,5,"5" pos 110,10 : mes "追加後" repeat length(Buf) : mes ""+Buf(cnt)+"" : loop : wait 100 //全ての配列を表示 // SimDel p1,p2 // p1 = 変数名 // p2 = 削除先の配列番号 SimDel Buf,7 pos 210,10 : mes "削除後" repeat length(Buf) : mes ""+Buf(cnt)+"" : loop : wait 100 //全ての配列を表示



GrapeColor(DION)

リンク

2012/5/5(Sat) 16:23:20|NO.46460

>>てれてれさん
まさにこんな感じの物を作りたかったのです!
ありがとうございます。



ONION software Copyright 1997-2023(c) All rights reserved.