2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

自動化ツール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

455 :名無しさん@お腹いっぱい。:2015/05/07(木) 19:19:19.12 ID:kOFrsE6M0.net
あー、でも途中のデフォルト参照するケースが駄目になるね
ちゃんとVARTYPEした対処した方がいい

これもコーディング論になってしまうけれど
例外はエラーからの復帰処理で正常系の判断処理には使わない方が良いかなと

456 :名無しさん@お腹いっぱい。:2015/05/07(木) 19:44:34.12 ID:oIqnKeh+0.net
Resizeの何がダメなのかわからん
SafeArray押しなのもまるで分らん

使い勝手というかデータ渡し合いするならSafeArrayだけど
処理速度ならResizeや単純な宣言配列のがうんと早い

Resize > Length だし
Dim Array[] >>>>>>> SafeSrray(0,0) だわ

上にあるようなファイル名取り込んでソートしなおすとかは絶対宣言した方が早い

457 :sage:2015/05/07(木) 21:17:42.38 ID:j+BelTnl0.net
すいません初心者です

While True

KBDA()
KBDB()

Wend

Procedure KBDA()
KBD(VK_A,CLICK)
SLEEP(5)
Fend

Procedure KBDB()
KBD(VK_B,CLICK)
SLEEP(10)
Fend

KBDA()が実行されたあとKBDB()が開始されるのですが
これを、KBDA()とKBDB()を同時にスタートさせるにはどうすればよいのでしょうか?
for-nextを使ってやっていたんですが、ボタンの数が多くなってくると出来ません

458 :名無しさん@お腹いっぱい。:2015/05/07(木) 21:30:45.17 ID:kOFrsE6M0.net
本当の意味で同時に処理するのはイベント駆動のWindowsでは無理
CLICKでやろうとするから無理が出る

DOWNとUPに分けてABが同時にDOWNになるタイミングを作った後でUPしたら良い

459 :名無しさん@お腹いっぱい。:2015/05/07(木) 22:13:39.16 ID:j+BelTnl0.net
>>458
それでやってみます
アドバイスありがとうございました

460 :名無しさん@お腹いっぱい。:2015/05/07(木) 22:36:41.79 ID:f3z72UPoG
> ボタンの数が多くなってくると出来ません

ボタンを同時に押し下げた状態にできるのは確か3つまでだから
4つ目は先にクリックしたキーのUPが完了するまでDOWNやCLICKはできない。

461 :名無しさん@お腹いっぱい。:2015/05/07(木) 23:09:44.89 ID:iddjenAQ0
>>451
これ実行してみた?
要素数1の時、LENGTHは1,RESIZEの戻り値は0
非配列の時、LENGTHは0になるのに、RESIZEの戻り値は0
要素数1なのか非配列なのかRESIZEの戻り値では判断できないってことでしょ。
あと予期せず文字列を想定した処理にSAFEARRAYが混ざってくると、
TRYでトラップ不可能なSyntaxErrorが出てキモい。

462 :名無しさん@お腹いっぱい。:2015/05/08(金) 00:14:41.27 ID:aCA8XdTmI
ちょっと質問です
<確認用.uws>
call test.uws
Dim A,B
pic("D:\images\","test.jpg",A,B)//画像の縦横を取得(例:300×200→A=300,B=200)
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 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
確認用.uwsを実行すると、

1274:定義が間違っています
test.uws: 19行目: X = X + RANDOM(I)

というエラーが出てしまいます、どうしたらいいですか?
やりたいことは、画像の縦横のピクセル数から乱数をそれぞれ得て、ある値に足すことです。上に書いたサンプルでは、100〜499の値と、200〜499の値です。画像の大きさは一定にできないので変数で扱いたいです。
よろしくお願いします。

463 :名無しさん@お腹いっぱい。:2015/05/07(木) 23:59:53.31 ID:gEl3Corv0.net
>testCsv4=NULL; testCsv4=NOTHING
まぎらわしい書き方をするから、こんな事やっちゃうんだろ
無意味な;は糞

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であまり複雑なことはするなってことだな
そういう用途には作られていないから

総レス数 1144
361 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver.24052200