■ このスレッドは過去ログ倉庫に格納されています
自動化ツールUWSC使いよ集まれ14
- 1 :名無しさん@お腹いっぱい。:2015/03/08(日) 00:18:57.40 ID:itdOhEn30.net
- Windowsの作業を自動化するツール
フリーソフト版とシェアウェア版の2種類がある
ttp://www.uwsc.info/download.html
●UWSC 掲示板(※作成依頼掲示版ではありません)
質問の際には自力で作ったスクリプトを晒すか、具体的な解らない場所を提示すること
上級者が常駐、たまに作者も現れるため過去ログには有益情報の宝庫
ttp://www3.bigcosmic.com/board/s/board.cgi?id=umiumi
ttp://www3.bigcosmic.com/board/s/board.cgi?id=umiumi&mode=past
●UWSC - Wikipedia
ttp://ja.wikipedia.org/wiki/UWSC
●使い方・基礎解説学習サイト
ttp://uwsc.g.hatena.ne.jp/cx20/20100131/1264938584
ttp://www.confrage.com/uwsc/
ttp://necro.jp/dev/uwsc/
ttp://park14.wakwak.com/~simizu/uwsc/fruwsc.html
ttp://canal22.org/
ttp://big.tm.land.to/handbook/uwsc.htm
ttp://www.game-rev.com/review/gameut/uwsc.html
●スクリプトテンプレサイト
ttp://izagne.com/uwsc/
ttp://scripts.web.fc2.com/
ttp://www.nagomi-jp.net/~liners/
ttp://nem.symphonic-net.com/uwsct/0610uwsct.html
ttp://siromasa.digi2.jp/uwsc/
ttp://iriyak.adam.ne.jp/uwsc.html
- 464 :名無しさん@お腹いっぱい。:2015/05/08(金) 00:07:33.89 ID:jcQWG3E10.net
- >>456
safearray押しではないけど、uwscに速度を求めるのは間違っていると思う
- 465 :名無しさん@お腹いっぱい。:2015/05/08(金) 00:50:15.30 ID:B65QIiuAJ
- >>462
iやjは普通の文字列じゃなくUNICODE文字列なのが原因
バグか仕様かは知らないがrandom関数は数値かANSI文字列しか受け付けない
val関数はUNICODEでも数値に変換できるので
x = x + random(val(i))
とでもすればいけるだろう
- 466 :名無しさん@お腹いっぱい。:2015/05/08(金) 01:18:30.50 ID:B65QIiuAJ
- あ、ごめん嘘ついた
iの先頭とjの末尾に見えない制御文字的なものがついてる
Dim a_Str = NS.GetDetailsOf(NS_Item, 31)
msgbox(vartype(a_Str, var_astr))
この制御文字はANSIに変換できないので?になって見えるようになる
msgbox(length(a_Str))
length関数でも文字数が合わないので分かるはず
どちらにしろval関数で削られるのでval関数を使えばいい
- 467 :名無しさん@お腹いっぱい。:2015/05/08(金) 05:46:16.80 ID:UKJMttxu0.net
- 求めてなくても、同じ効果で速度の差がはっきりしてるなら早い方選ぶのが普通じゃないの?
- 468 :名無しさん@お腹いっぱい。:2015/05/08(金) 06:09:34.64 ID:Vy8D3J360.net
- 求めてないのなら、安全性とかソースの可読性とかそういうのを優先するよ。
- 469 :名無しさん@お腹いっぱい。:2015/05/08(金) 06:36:18.86 ID:UKJMttxu0.net
- resizeって危険なの?
- 470 :名無しさん@お腹いっぱい。:2015/05/08(金) 07:55:07.35 ID:ZRJ8LIgC0.net
- 質問です
call test.uws
Dim A,B
pic("D:\images\","test.jpg",A,B)//画像の縦横を取得
sfh(100,200,A,B)
<test.uws>
Procedure pic(a_path,a_name,Var a_Width,Var a_Height)
Dim Path_Dir = a_path
Dim FileName = a_name
Dim Width, Height
Dim Shell = CreateOleObj("Shell.Application")
Dim NS = Shell.NameSpace(Path_Dir)
Dim NS_Items = NS.Items
Dim NS_Item = NS_Items.Item(FileName)
Dim a_Str = NS.GetDetailsOf(NS_Item, 31)
a_Width = Trim(Token("x", a_Str))
a_Height = Trim(Token("x", a_Str))
Fend
procedure sfh(x,y,i,j)
x = x + random(i)
y = y + random(j)
print x
print y
fend
これを実行すると
定義が間違っています
test.uws 19行目: X = X + RANDOM(I)
となってしまいます。どうしたらいいですか?
やりたいことは、「画像の縦横のピクセル数」以下の乱数をある値に足すことです。アドレスお願い致します。
- 471 :名無しさん@お腹いっぱい。:2015/05/08(金) 08:14:35.71 ID:9f3Vt5H+0.net
- Varが付いてないから変更出来ないだけじゃないの?
- 472 :名無しさん@お腹いっぱい。:2015/05/08(金) 08:46:00.34 ID:vrTT6NwFM
- >>463;圧縮のためだろ;あれから;なくしたら改行が多すぎて投稿できないぞこのスレだと
- 473 :名無しさん@お腹いっぱい。:2015/05/08(金) 08:48:38.84 ID:vrTT6NwFM
- それより>>454はどうなのかな?;>>461が言う実行結果と異なってるようだがバージョンや環境の違いか?;TRYが利くエラーと効かないエラーの違いも気になる。
- 474 :名無しさん@お腹いっぱい。:2015/05/08(金) 08:54:53.52 ID:vrTT6NwFM
- >>470
19行目の直前でプリントして変数の中身確認してみ?
Iの中身が空っぽだぞ多分>>451の2行目みたいな変な値になってる
- 475 :名無しさん@お腹いっぱい。:2015/05/08(金) 10:12:19.88 ID:kMHlHwI60.net
- msgbox(A)とか入れて見りゃすぐわかる気がするんだが
多分A・Bには文字列が入ってる
- 476 :名無しさん@お腹いっぱい。:2015/05/08(金) 12:28:16.24 ID:uACYXt1H0.net
- >>470
2ch.s cのほうに答え書いてある
制御文字が原因
- 477 :名無しさん@お腹いっぱい。:2015/05/08(金) 12:31:32.67 ID:pk4bmMyb0.net
- >>475
ありがとうございます!!
VAL(A),VAL(B)にしたらできました!!
- 478 :名無しさん@お腹いっぱい。:2015/05/08(金) 12:35:00.28 ID:pk4bmMyb0.net
- >>476
ごめんなさい!!気づきませんでした…
- 479 :名無しさん@お腹いっぱい。:2015/05/08(金) 12:54:57.17 ID:s8RLZ3fW0.net
- 472 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2015/05/08(金) 08:46:00.34 ID:vrTT6NwFM
>>463;圧縮のためだろ;あれから;なくしたら改行が多すぎて投稿できないぞこのスレだと
473 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2015/05/08(金) 08:48:38.84 ID:vrTT6NwFM
それより>>454はどうなのかな?;>>461が言う実行結果と異なってるようだがバージョンや環境の違いか?;TRYが利くエラーと効かないエラーの違いも気になる。
474 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2015/05/08(金) 08:54:53.52 ID:vrTT6NwFM
>>470
19行目の直前でプリントして変数の中身確認してみ?
Iの中身が空っぽだぞ多分>>451の2行目みたいな変な値になってる 👀
Rock54: Caution(BBR-MD5:405b7f1af0f5a85b432d79fa769e9aeb)
- 480 :名無しさん@お腹いっぱい。:2015/05/08(金) 18:51:27.05 ID:CsG9StKG0.net
- 465 :名無しさん@お腹いっぱい。:2015/05/08(金) 00:50:15.30 ID:B65QIiuAJ[1/2]
>>462
iやjは普通の文字列じゃなくUNICODE文字列なのが原因
バグか仕様かは知らないがrandom関数は数値かANSI文字列しか受け付けない
val関数はUNICODEでも数値に変換できるので
x = x + random(val(i))
とでもすればいけるだろう
466 :名無しさん@お腹いっぱい。:2015/05/08(金) 01:18:30.50 ID:B65QIiuAJ[2/2]
あ、ごめん嘘ついた
iの先頭とjの末尾に見えない制御文字的なものがついてる
Dim a_Str = NS.GetDetailsOf(NS_Item, 31)
msgbox(vartype(a_Str, var_astr))
この制御文字はANSIに変換できないので?になって見えるようになる
msgbox(length(a_Str))
length関数でも文字数が合わないので分かるはず
どちらにしろval関数で削られるのでval関数を使えばいい
- 481 :名無しさん@お腹いっぱい。:2015/05/08(金) 19:05:39.45 ID:f8iSJDTU0.net
- わざわざコッチに貼るな
- 482 :名無しさん@お腹いっぱい。:2015/05/09(土) 02:09:13.25 ID:Wj4o5nTl0.net
- dim normalStr="10"
msgbox(normalStr) // 10
msgbox(random(normalStr)) // 10未満の乱数
dim charArray[]=$202a, $31, $30, $202c
dim errorStr=""
for char in charArray
errorStr = errorStr + chr(char)
next
msgbox(errorStr) // 10のように見える
msgbox(random(errorStr)) // エラーになる
知らない人は悩むだろうな
- 483 :名無しさん@お腹いっぱい。:2015/05/09(土) 06:51:53.03 ID:lOeahwwg0.net
- 最近uwscいじり始めました
CHKIMGでALL_IMG_X[]、ALL_IMG_Y[]に格納されるのは最大6個まで?
増やせないのかな?
- 484 :名無しさん@お腹いっぱい。:2015/05/09(土) 09:50:39.26 ID:VKqe5NAJ0.net
- >>483
最大4096個まで
6個しかないってことは6個しか画像が見つからなかったってことだ
- 485 :名無しさん@お腹いっぱい。:2015/05/10(日) 12:17:33.84 ID:V3eUIZ5/0.net
- SCに書くアホなんているんだな…
- 486 :名無しさん@お腹いっぱい。:2015/05/10(日) 14:41:29.85 ID:j+Ly6pmCp
- なんで?なんでも!
- 487 :名無しさん@お腹いっぱい。:2015/05/10(日) 15:04:14.23 ID:6YUb43Cc0.net
- 住み分けている人は問題ないさ
- 488 :名無しさん@お腹いっぱい。:2015/05/10(日) 23:28:25.09 ID:KG0xar9h0.net
- これもscか
461 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2015/05/07(木) 23:09:44.89 ID:iddjenAQ0
>>451
これ実行してみた?
要素数1の時、LENGTHは1,RESIZEの戻り値は0
非配列の時、LENGTHは0になるのに、RESIZEの戻り値は0
要素数1なのか非配列なのかRESIZEの戻り値では判断できないってことでしょ。
あと予期せず文字列を想定した処理にSAFEARRAYが混ざってくると、
TRYでトラップ不可能なSyntaxErrorが出てキモい。
俺も同じだった。
- 489 :名無しさん@お腹いっぱい。:2015/05/11(月) 00:33:31.53 ID:jVchxD0Z0.net
- こっちに書かないでお前もあっちに書けよ
- 490 :名無しさん@お腹いっぱい。:2015/05/11(月) 14:12:48.59 ID:FSQG8YaTn
- 質問です
コンボボックスを1行に複数個入れることは可能でしょうか
やり方あれば教えていただきたい
- 491 :名無しさん@お腹いっぱい。:2015/05/11(月) 20:41:08.63 ID:DhQvpn7OJ
- @シェア版のフォームを使う
Auser32.dll経由させてAPIからウインドウを作る
BWin7以降ならパワーシェルから簡易.NETインタプリンタ経由してアプリをコンパイル
好きなの選べ
- 492 :名無しさん@お腹いっぱい。:2015/05/12(火) 08:55:17.84 ID:M6eLyl6Gb
- Bでお願いします
- 493 :名無しさん@お腹いっぱい。:2015/05/12(火) 11:20:49.86 ID:TtfeFMrT2
- メニュー表かよw
- 494 :名無しさん@お腹いっぱい。:2015/05/13(水) 21:24:08.38 ID:9cIxCj9O0.net
- UWSCの範疇じゃないかもしれんがプログラムに疎いんで聞いてくれ。
複数の変数名ごとの処理を順繰りに変えながら使ってるんだが
ifb tabemono = "mikan"
tabemono = "ringo"
elseif tabemono = "ringo"
tabemono = "momo"
elseif tabemono = "ringo"
tabemono = "momo"
//実際にはelseifがまだまだある
else
tabemono = "mikan" //←走り終わったら最初に戻してる
endif
もっとスマートな方法教えてくれ
(1個減らすとその前の行も修正が必要なんで)
- 495 :名無しさん@お腹いっぱい。:2015/05/13(水) 21:26:08.01 ID:7VzdG4CX0.net
- for文と配列使いなさい
- 496 :名無しさん@お腹いっぱい。:2015/05/13(水) 21:42:08.47 ID:+c1y9vIl0.net
- 変数のスライド以外は共通ならコレで1ループ
繰り返すなら FOR IN NEXT を WHILE 等でループさせる
DIM list[] = "mikan","ringo","momo"
FOR item IN list
print item
NEXT
- 497 :名無しさん@お腹いっぱい。:2015/05/13(水) 22:39:45.77 ID:JmtHJeH10.net
- >>494
DIM list[max][2]
list[0][0] = "mikan"
list[0][1] = "ringo"
list[1][0] = "ringo"
list[1][1] = "momo"
.
.
for i=0 to max
ifb tabemono=list[i][0] then
tabemono=list[i][1]
next
配列はcsvファイルにして最初に読み込めば追加修正も楽だと思うよ。
- 498 :名無しさん@お腹いっぱい。:2015/05/14(木) 08:31:27.96 ID:UlftZKXm0.net
- それbreakでも入れないと結果が違ってくるんじゃないか?
質問者が何をやりたいかは分からないけど
- 499 :名無しさん@お腹いっぱい。:2015/05/14(木) 09:24:07.79 ID:yaIK/1e80.net
- ループ回すより連想配列使った方がスマート
- 500 :名無しさん@お腹いっぱい。:2015/05/14(木) 09:43:31.94 ID:4vjcebLp0.net
- 配列は使い道がわからんわ
- 501 :名無しさん@お腹いっぱい。:2015/05/14(木) 09:46:28.32 ID:BoW7Ss/B0.net
- 基礎を学んでないと配列は使わない人が多そう
uwscなんて知識無しの人でも作るもんだから
- 502 :名無しさん@お腹いっぱい。:2015/05/15(金) 15:09:06.18 ID:uEjjwe7w0.net
- ワイも全然分からんから
WHILE TRUE
WEND
でグルグル回してるわ
- 503 :名無しさん@お腹いっぱい。:2015/05/15(金) 18:45:08.69 ID:cO+XlT030.net
- ようは、動けばいいんだよね。
理解しないで適当にコピペでも、動かせてるならそれでいい訳で
- 504 :名無しさん@お腹いっぱい。:2015/05/15(金) 20:48:28.13 ID:BFc4oXXZ0.net
- だめだろ。冗長なコード書いてる奴は
- 505 :名無しさん@お腹いっぱい。:2015/05/15(金) 20:53:49.34 ID:LD79vb4o0.net
- 仕事なら兎も角当人の責任で私的に使っている間はどうでも良い話
- 506 :名無しさん@お腹いっぱい。:2015/05/15(金) 21:04:53.18 ID:/AZ0XoPh0.net
- 冗長なコードが駄目なのはわかるが、冗長なコード書いてる奴が駄目かと言われると一概には言えんわな
コードを書いて走らせるのはあくまで手段だ、目的を見失ってまで磨きをかけるものじゃない
- 507 :名無しさん@お腹いっぱい。:2015/05/15(金) 22:09:35.95 ID:kJkWORh/0.net
- 連想配列もいいけどハードコーディングになりやすい
配列から要素を検索しインデックスを返すsearchArray関数を自作し、
CSV配列から生成した配列から現在の要素を検索して取得した
インデックスをインクリメントすることで希望の動きが実装できる。
が、配列に同じ要素が複数あると希望通りに動かない。(IF連鎖でも同じだが)
要件としてそこをクリアしたい場合、そもそもの実装として、
現在のインデックスを保持する仕様に変更した方がいいだろう。
- 508 :名無しさん@お腹いっぱい。:2015/05/15(金) 23:33:00.52 ID:M6mRhlAE0.net
- もう英文だな
- 509 :名無しさん@お腹いっぱい。:2015/05/15(金) 23:47:19.19 ID:i6wiJ6QU0.net
- 自分よがりなコードやトリッキーなコードよりは冗長なコードのほうがいいわ
- 510 :名無しさん@お腹いっぱい。:2015/05/15(金) 23:58:28.57 ID:cwpOruK/0.net
- キーが一意となる事が確定している状況であれば
通常の配列を使うなんて意味ない
わざわざ配列を検索するためのループをコーディングする必要が出てくる
行数も検索時間も全部無駄
できる大人は積極的に連想配列を使いますね
- 511 :名無しさん@お腹いっぱい。:2015/05/16(土) 01:21:50.65 ID:kYQf2te90.net
- 冗長なコードはバグの原因だしメンテナンス性に欠ける
- 512 :名無しさん@お腹いっぱい。:2015/05/16(土) 01:58:20.22 ID:hI7/eQi30.net
- 自分よがりでトリッキーなコードでも速かったらそっち使うじゃん?
最速のコードってトリッキーなんだよな
- 513 :名無しさん@お腹いっぱい。:2015/05/16(土) 03:35:37.82 ID:5YLxrpDQ0.net
- だからなぜuwscに速度を求めるのか・・・
- 514 :名無しさん@お腹いっぱい。:2015/05/16(土) 04:00:13.96 ID:kYQf2te90.net
- UWSCはプログラミング始めるとっかかりとして悪くないと思うわ
- 515 :名無しさん@お腹いっぱい。:2015/05/16(土) 06:59:43.23 ID:jzBJrgnq0.net
- プログラムで固定長の配列は実際使いにくいよな
連想配列か可変長配列が圧倒的に便利
- 516 :名無しさん@お腹いっぱい。:2015/05/16(土) 08:45:44.45 ID:RgS0dIJ+0.net
- 可読性を重視するか速度を重視するかなんて書く人によるだろ
自分と意見が違うからって無闇に叩く奴はハゲ
- 517 :名無しさん@お腹いっぱい。:2015/05/16(土) 09:55:58.16 ID:PHxUHjwY0.net
- public key[1000]
public value[1000]
key[0]="apple"; value[0]="りんご";
//・・・
key[999]="banana"; value[999]="バナナ";
print searchArray("apple")
print searchArray("banana")
function searchArray(name)
for i=0 to length(key)-1
if name=key[i] then
result = value[i]
exit
endif
next
fend
- 518 :名無しさん@お腹いっぱい。:2015/05/16(土) 09:57:59.40 ID:PHxUHjwY0.net
- hashtbl hash
hash["apple"]="りんご"
//・・・
hash["banana"]="バナナ"
print hash["apple"]
print hash["banana"]
- 519 :名無しさん@お腹いっぱい。:2015/05/16(土) 10:01:39.61 ID:PHxUHjwY0.net
- searchArray?
しねばいいのに^^
- 520 :名無しさん@お腹いっぱい。:2015/05/16(土) 10:05:22.46 ID:QDThgf1Z0.net
- グローバル変数の初期化がうまくいかず悩んでいます。
hogeの値を 1→2→3→1→2・・・としたいのですが、1→2→3→4→5・・・となってしまいます。
DO1関数内で、hogeの値を使ってIF文を動かしたりしています。
考えているような動作にするには、どういった記述をすれば良いでしょうか、
教えて頂けるとうれしいです。よろしくお願いします。
WHILE TRUE
public hoge = 0 //関数で使う変数
loop = 0
WHILE (loop = 3) = FALSE
loop = loop + 1
hoge = hoge + 1
print "hoge" + hoge
print "loop" + loop
DO1()
WEND
WEND
- 521 :名無しさん@お腹いっぱい。:2015/05/16(土) 10:05:59.46 ID:QDThgf1Z0.net
- (続き)こちらがログになります。
** 出力ログ ******
hoge1
loop1
hoge2
loop2
hoge3
loop3
hoge4
loop1
(・・・以下続く)
** 理想のログ ******
hoge1
loop1
hoge2
loop2
hoge3
loop3
hoge1
loop1
(・・・以下続く)
- 522 :名無しさん@お腹いっぱい。:2015/05/16(土) 10:26:28.90 ID:pznJG80O0.net
- public hogeは変数宣言として最初に1度しか通らないので宣言と代入を別に記述する
- 523 :名無しさん@お腹いっぱい。:2015/05/16(土) 10:39:03.28 ID:QDThgf1Z0.net
- >>522
なるほどです、下で無事動作するようになりました。
public hoge = 0 //関数で使う変数
hoge = 0
loop = 0
初歩的な質問になってしまい失礼しました、どうもありがとうございます。
- 524 :名無しさん@お腹いっぱい。:2015/05/16(土) 11:12:12.76 ID:GwNDKgWN0.net
- ハードコーディングくらいググれよ
連想配列でもハードコーディングを避けて
CSVからのデータを格納できるけどな
0から999までハードコーディグしかも1行づつ
などというサンプルコードはもはやギャグだぞ
- 525 :名無しさん@お腹いっぱい。:2015/05/16(土) 12:13:08.13 ID:sM7ax+dX0.net
- リサイズ使えば配列要素なんて無限に変更できるのにそこまでして拒む理由を知りたい
DIM Array[0]
Array[Resize(Array)] = 0
Array[Resize(Array, Resize(Array)+1)] = 1
Array[Resize(Array, Resize(Array)+1)] = 2
これでええやん
[1000]とか馬鹿なの
- 526 :名無しさん@お腹いっぱい。:2015/05/16(土) 20:57:04.02 ID:ADPmpcCJ0.net
- きたねえコードだ
- 527 :名無しさん@お腹いっぱい。:2015/05/16(土) 21:07:10.23 ID:kYQf2te90.net
- ずいぶんとダサいコードを書いてるのね
- 528 :名無しさん@お腹いっぱい。:2015/05/16(土) 22:31:29.69 ID:ADPmpcCJ0.net
- IQ145
- 529 :名無しさん@お腹いっぱい。:2015/05/17(日) 07:17:01.08 ID:v1v0KtpL0.net
- こんなゴミコードを自信満々に晒せる神経を疑う
- 530 :名無しさん@お腹いっぱい。:2015/05/17(日) 09:57:22.76 ID:18wKMXDJ0.net
- もう分かったからご自慢のきれいなこーどでずっとオナニーしてろよ
文句だけなら誰でも言えるっつーの
- 531 :名無しさん@お腹いっぱい。:2015/05/17(日) 09:59:44.04 ID:L/VppOnQ0.net
- プログラムの授業で明日の天気予報を明後日に出しても仕方ないって例えでよく言われたな
昔は知らないけど今の時代数行長いだけで速さなんてそんな変わらないんだよな
- 532 :名無しさん@お腹いっぱい。:2015/05/17(日) 13:49:55.80 ID:8iRscPda0.net
- ちょっとした動作上の設定なんかを配列にハードコーディングして
横着する場合なんかに>>525のような書き方をしてしまう場合がある
俺の場合はC言語の++と同じ作用をする自作関数で…w
エディタ上で順番を入れ替えるのも楽
連想配列派の人は、スピード推しなのに1000要素ハードコーディングという
人間を尊重しない本末転倒なサンプルコードが敗因だな
CSVから連想配列に格納し同要素存在時の例外処理まで入れてたら勝っていたw
- 533 :名無しさん@お腹いっぱい。:2015/05/17(日) 15:08:03.59 ID:eWPQGAiz3
- ttp://sp.e-words.jp/w/%E3%83%8F%E3%83%BC%E3%83%89%E3%82%B3%E3%83%BC%E3%83%89.html
> ソフトウェア開発の際に、特定の動作環境を決め打ちして、その環境を前提とした処理やデータをソースコードの中に直に記述すること。
> ハードコードされたデータなどはプログラムの完成後、実行時などに容易に変更することはできないため、
> 後から利用者などの手で変更する必要が無いか薄いと判断されたデータがハードコードされることが多い。
UWSCみたいなスクリプト言語程度でハードコード云々言うのはアホ
CSVだって禁止文字とかカンマ区切りとかあるからエクセルとか使う必要があるけど
エクセルシートからコピペするんならスクリプトのソースにコピペしようがCSVにコピペしようが大差ない。
- 534 :名無しさん@お腹いっぱい。:2015/05/17(日) 18:14:54.91 ID:vSIeL8RL0.net
- コーディング論とか流用性とか気にせずに目の前の問題をアドホックに解決するってのが
UWSCのようなツールの使い道だと思うんだけどなぁ
- 535 :名無しさん@お腹いっぱい。:2015/05/17(日) 19:43:20.73 ID:oWHdgvyz0.net
- >>525はねぇよ。配列の初期化は普通↓こうだろ
DIM Array[] = _
0, _
1, _
2
CSVにする意味も分からねぇ。実行中に変更する必要ないんだったら↓これでいいだろ
DIM list[][2] = _
_ // key,value
"mikan","ringo", _
"ringo","mono"
- 536 :名無しさん@お腹いっぱい。:2015/05/17(日) 19:44:59.84 ID:oWHdgvyz0.net
- 後半コピペしたらミスった。訂正↓
DIM list[][1] = _
_ // key,value
"mikan","ringo", _
"ringo","mono"
- 537 :名無しさん@お腹いっぱい。:2015/05/17(日) 20:05:01.57 ID:kcSkOwMN0.net
- ヒント:
初期化は自明な話なので、誰も初期化方法の議論はしていません
- 538 :名無しさん@お腹いっぱい。:2015/05/17(日) 20:09:51.55 ID:oWHdgvyz0.net
- じゃあ何の議論してんだよ?
- 539 :名無しさん@お腹いっぱい。:2015/05/17(日) 20:39:41.30 ID:kcSkOwMN0.net
- if-elseifが増えてきて効率性が落ちてきた、と思ったら配列を使えばいい
思わなければ使う必要なんてない
配列はC言語なんかにも標準で持っている極めて基礎的な仕組みで
for文なんかととても相性が良い
ただ配列は限界があって、先頭から順に1つずつ処理していくような
単純な処理しかできない
配列から特定の要素を探すsearchArrayみたいな処理を考えれば分かるけど
効率が悪いので要素数が増えれくるとどうしても遅くなる
それにUWSCの場合は要素数の追加や、不要な要素の削除などが面倒
(これは言語によって違って)
この問題はキーと値が1対1となるデータ形式では単純に回避できる
それが連想配列
そもそもの用途が異なるから配列と連想配列は比べてもあまり意味がない
って単純な話しかしてないんだけど
逆に何が分からないんだ?
- 540 :名無しさん@お腹いっぱい。:2015/05/17(日) 20:44:13.30 ID:v1v0KtpL0.net
- >>536見て思い出したが、
配列の宣言の時、要素数指定の仕様がいらつくよな
何でn個必要な時にn-1を書かないといけねーんだよと毎回思うわ
- 541 :名無しさん@お腹いっぱい。:2015/05/17(日) 20:49:21.29 ID:gmmmlVwD0.net
- >>539
ちと長いがまぁ同意
自分もユニークキーと値がペアの要素じゃなければ無理に連想配列使おうとは思わない
最近のバージョンで自然数ソートも追加されたから
普通の配列の利用頻度は少し上がっている位だ
- 542 :名無しさん@お腹いっぱい。:2015/05/17(日) 20:50:31.81 ID:A/2qR/J80.net
- 質問者不在 乙
- 543 :名無しさん@お腹いっぱい。:2015/05/17(日) 20:55:30.33 ID:oWHdgvyz0.net
- >>539
それも自明だと思うけどな
俺は上でCSVを推してるやつとか変な初期化してるやつに言ったんだよ
- 544 :名無しさん@お腹いっぱい。:2015/05/17(日) 21:04:40.72 ID:vSIeL8RL0.net
- 連想配列だってsearchArrayみたいな処理をなるべく効率のいい方法でやってるだけで
普通の配列に比べればずっと遅い。というか、遅いからこそ普通の配列と別になってる。
- 545 :名無しさん@お腹いっぱい。:2015/05/17(日) 21:08:59.70 ID:dFk4RCMk0.net
- rubyの配列が使いやすすぎてuwscの配列がうんこにしか見えない
- 546 :名無しさん@お腹いっぱい。:2015/05/17(日) 21:19:17.19 ID:gmmmlVwD0.net
- アレはもう配列というより一般的な言語でいうリストの範疇になる
UWSCには勿論リストは無い
LINQ for UWSC とか実装したらいいのにね
- 547 :名無しさん@お腹いっぱい。:2015/05/17(日) 23:13:32.56 ID:kngJrV4f0.net
- >>535
配列要素が固定ならそうだよ
>525は配列がいくつあるかわからない、処理中に増える可能性がある場合
かつ、同じ要素が重複してしまう場合はこれしかないよね
もともと>517の[1000]とか宣言してるのは無駄だろうっていう話なんだろうけど
- 548 :名無しさん@お腹いっぱい。:2015/05/18(月) 00:36:12.92 ID:qDhsU4Za0.net
- たぶんリサイズのたびに別にメモリ確保して全コピーとかやってるだろうから
[1000]の方がずっとマシな気がしないでもない
- 549 :名無しさん@お腹いっぱい。:2015/05/18(月) 00:41:17.78 ID:AZmCHRLz0.net
- 必要に応じて適宜でいいでしょ
ハードコーディングしておしまいでもいいし
変更に簡単に対応するために「ほげ.UWS」と一緒に「ほげ.xlsx」を置いてもいいし
.INIでもいいし.datでもいいし
ところで変数宣言時に要素数を指定した配列をReDimで増減できたっけ?
型だけ指定して要素数は未指定じゃないと出来ないか、
または面倒な事をしなきゃいけなかったような。おやすみ
- 550 :名無しさん@お腹いっぱい。:2015/05/18(月) 01:05:40.84 ID:HjlaxIuh0.net
- >>549
RESIZEはSAFEARRAYも含めてなんでも出来る
>>548
そしてSAFEARRAY以外はメモリ的に連続配置されている保証はないという仕様なので
毎回全コピしているかは不明
でも1件毎に配列を広げ続けるのは流石に勿体無いと思うので
最終件数が予め分かるロジックがあるならそれを優先
無理なら追加処理の最初に+100とか+1000とか案件に応じた一定値で配列を広げる
足りなくなったらまた一定値広げるのを繰り返して最終的な件数で確定させる方が好き
- 551 :名無しさん@お腹いっぱい。:2015/05/18(月) 12:32:13.11 ID:WuOwBSqY0.net
- 今テストプログラム書いて再確認したが、
今でこそ>>550の通り何でもできるようだな。
昔はSafeArrayが絡むと何かとまともに動かなかった。
例えばver.4.7では、関数の引数が配列のときSafeArrayを配列として渡すことが
出来なかった。ほぼSAFEARRAY≠UWSC配列との扱いだったからな。
もちろんRESIZEにSAFEARRAY渡したら Syntax Error
当時のSAFEARRAYは、UWSCにとっては UNSAFE ARRAY だった訳。
その名残りもあって、俺の場合なんかは、
わざわざSAFEARRAYをUWSC配列に転写してから使っていた。
昔からUWSC使い倒してる人は、SAFEARRAY触りたがらない人が多いはず。
- 552 :名無しさん@お腹いっぱい。:2015/05/18(月) 12:38:34.40 ID:WuOwBSqY0.net
- 昔と言っても Ver4.7 は 2011/06/04 にリリースか。
たった4年前。結構驚きだわ。
- 553 :名無しさん@お腹いっぱい。:2015/05/18(月) 12:43:02.20 ID:WuOwBSqY0.net
- 蛇足だけどμItronみたいな組み込みOSだと、
安定性を重視して領域やオブジェクトの動的生成・変更は行わない。
(動的だと、その時に必要なスタック領域が足りるかどうか保証がないから)
上のSafeArray絡みで散々苦労した経験のせいで、
俺の場合は配列は常に想定最大要素数確保して
データ要素値にEOFの役割を持つ定数を使って管理してるな。
今はもう不要なんだろうが、
そのコードで何年も24時間回しっぱなしのコードがあるんで触ってない。
- 554 :名無しさん@お腹いっぱい。:2015/05/18(月) 13:15:44.27 ID:MH6w5v1q0.net
- uwscであまり複雑なことはするなってことだな
そういう用途には作られていないから
- 555 :名無しさん@お腹いっぱい。:2015/05/20(水) 11:12:35.54 ID:FuKGsM4H0.net
- 正直スレ全部読まずに質問して
大変申し訳ないのですが
uwscのホームページからdlできない
バージョンはとこかで入手できますか?
具体的には
uwsc pro48e を探しています。(ライセンスは購入済)
- 556 :名無しさん@お腹いっぱい。:2015/05/20(水) 12:01:57.93 ID:8Gzw0qU50.net
- 古いバージョンをわざわざ使う理由が判らないけど
公式で旧バージョンじゃなきゃダメな理由を伝えたら
対応してくれるんじゃないの?
- 557 :名無しさん@お腹いっぱい。:2015/05/20(水) 13:32:36.09 ID:3AVFyxf40.net
- >555
Wayback Machine で探したり、URL直打ちで探れば、
上に出てた4.7まではまだネット上にある模様。
- 558 :名無しさん@お腹いっぱい。:2015/05/20(水) 13:42:07.05 ID:j6BzMEKe0.net
- そのバージョンではexe化した時に、inputbox selectboxの上に自作アイコンが残ったんだけど、それ以降のは仕様で残らなくなった。
以前作者に無理言ってダウンロード
させてもらったんだけど、勘違いから消去してしまい復活も不能。
流石に二度は気が引けて他の手段は
無いものかと尋ねてみた次第です。
- 559 :502:2015/05/20(水) 13:47:01.56 ID:j6BzMEKe0.net
- >>556
>>557
ありがとうございます
url直打ちで探ってみます
- 560 :名無しさん@お腹いっぱい。:2015/05/20(水) 13:47:45.69 ID:cUcq/gGg0.net
- APIからinputboxの表示エリアに画像上掛けばええやん?
DEF_DLL と BilBlt でググれ
- 561 :名無しさん@お腹いっぱい。:2015/05/20(水) 13:48:43.41 ID:cUcq/gGg0.net
- Bitやったすまんな
- 562 :502:2015/05/20(水) 13:59:09.52 ID:j6BzMEKe0.net
- 連投失礼します
>>561
ありがとうございます
その方法でしのいでたんですが
やり方が悪いのか表示直後アイコンと
タイトル文字が重なってしまいあまり
うまくできませんでした。
アドバイスをもとにもう少し調べてみます。
- 563 :502:2015/05/20(水) 14:34:51.43 ID:j6BzMEKe0.net
- >>557
wayback machineでdl出来ました
貴重な情報に感謝します
皆様のお知恵で解決できました
以上、
お騒がせしました
総レス数 1144
361 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver.24052200