自動化ツールUWSC使いよ集まれ14at SOFTWARE
自動化ツールUWSC使いよ集まれ14 - 暇つぶし2ch247:名無しさん@お腹いっぱい。
15/04/06 23:18:10.03 U00NqrYV0.net
シェアでも動くだろ

248:名無しさん@お腹いっぱい。
15/04/06 23:35:34.16 JCeG5kCZ0.net
シェアだとCOMエラーでまったくダメだったよ。
後で入れ直ししてみる。

249:名無しさん@お腹いっぱい。
15/04/07 00:24:52.63 o0YFB1Jw0.net
>>237
UWSCが64bitで動くか動かないかと言われたら動くだろ
UWSCは32bitアプリ
で、64bitのDLLは読み込めないと公式に謳ってるから
64bitのCOMに触れたマクロは当然動かない
32bitDLLを別途用意するか、必要部分をPoweShellに置き換えるかしろ

250: ◆evw/E7kww2
15/04/07 07:52:24.67 L95dVvZa0.net
例のポーカーマクロが最新版ではCOMエラーになるから
バージョンが違ってるのが原因だったりして。

251:名無しさん@お腹いっぱい。
15/04/07 12:03:07.27 tuVm10qf0.net
バージョン5らへんの更新でIE操作関連でCOMエラー出るようになったよね
差異調べて書き換えるの面倒だから戻して使ってるけど

252:名無しさん@お腹いっぱい。
15/04/07 17:07:20.29 6ICclBNz0.net
すみません。
起動後に自動実行されるスクリプトを実行させないようにするにはどうすればいいでしょうか。
起動だけさせておき、任意のキーを押すまでスクリプトを開始しないようにしたいのですが。

253:名無しさん@お腹いっぱい。
15/04/07 17:22:20.17 YbTdz0sr0.net
UWSCのホットキー設定しろよ

254:名無しさん@お腹いっぱい。
15/04/07 17:26:43.55 YHWaTMUI0.net
・GETKEYSTATEで目的のキーが押されるまでループさせる
・メイン処理を関数化してSETHOTKEYで呼び出す
俺がぱっと思いつくのはそのくらい
後者は無限ループさせてメイン処理関数内でループ終了させるフラグを立てるとかしないと
メイン呼びだす前にスクリプト終わっちゃうはず

255:名無しさん@お腹いっぱい。
15/04/07 18:52:52.96 PZxBQlqf0.net
>>241
まず自動実行を止める
.uwsファイルをデスクトップにおいてダブルクリック
それかランチャに登録して好きなタイミングで起動
あるいは、自動実行をさせるけど
SLCTBOXで[実行]みたいなボタンを表示して、タイムアウト秒を0にしておく

256:名無しさん@お腹いっぱい。
15/04/07 18:59:53.09 kDYP+rsK0.net
あああ0かかか
メモ帳に記入する度に真ん中の数字を100まで1づつ(+1)上げたいのですが教えてください。

257:名無しさん@お腹いっぱい。
15/04/07 19:45:59.92 JsnHcRaP0.net
MsgBox(0)
初心者はこれでいいじゃん

258:名無しさん@お腹いっぱい。
15/04/07 20:01:59.17 nO4zP1Ln0.net
>>245
getkeystateとforと文字列結合

259:名無しさん@お腹いっぱい。
15/04/07 20:23:55.04 Tccai+aC0.net
UWSC Ver5.1.1 / umiumi
POWERSHELL関数にて 文字化けするパターンがあるのを修正
COMの関数に 空文字を使用した時に エラーが出るパターンがあるのを修正
低レベル記録にて 画面のDPIスケーリングが100%以外の時にマウス位置がずれるのを修正
BALLOON関数にて 透明化が指定された時に正しいサイズで表示されないパターンがあるのを修正
MOUSEORG関数にて MORG_FOREが指定された時にアプリがマイナス側にあるとズレが出るのを修正
64bitアプリの リストビュー操作に対応できていなかったパターンを修正
SENSOR関数に 位置取得する SNSR_LOCATION_* を付けた
MONITOR関数に モニター名を返す MON_NAME を付けた
QSORT関数に 自然順ソートをするモードを付けた
OPTION指定に STOPボタンウィンドウを最前面固定するオプション TOPSTOPFORM を付けた
Pro版:
CREATEFORM関数にて タスクバーにアイコンを出さない FOM_NOTASKBAR を付けた

260:名無しさん@お腹いっぱい。
15/04/07 22:51:56.13 kDYP+rsK0.net
>>247
解決しました。有難うございました。
また、相談なのですが

AAA = INPUT("記入して下さい。", "")
IE.document.forms[0].elements[0].value = "AAAl"

反映されないのですが何処が間違ってますか?
宜しくお願いします。

261:名無しさん@お腹いっぱい。
15/04/07 22:55:05.96 kDYP+rsK0.net
自己解決しました。 お騒がせいたしました。
集中力が途切れたので休む事にします。

262:名無しさん@お腹いっぱい。
15/04/08 08:45:46.89 qHp42OUM9
>>226
遅くなったけれど、とっても参考になったありがとう。
UWSC遅いってのは聞いてたけど、そこまで圧倒的な桁差だったんだな。
とりあえずC#とPHPとJavascriptそれなりに学んでみるわ。

263:名無しさん@お腹いっぱい。
15/04/08 18:21:11.28 I9max7TN0.net
①あるグローバルな配列に入れる値を条件によって変えたい
IF jouken = jouken1
 PUBLIC hairetu[] = a1,a2,a3
ElseIF jouken = jouken2
 PUBLIC hairetu[] = b1,b2,b3
ElseIF jouken = jouken3
 PUBLIC hairetu[] = c1,c2,c3
EndIF
こうしてもPublicで同じ配列を複数宣言できないみたいので何か方法ありませんでしょうか
②カンマとダブルクォーテーションを含む文字列の入った変数を配列に入れたい
例えば
hensuu = ""x0,y0" , "x1,y1" , "x2,y2" ,・・・, "x100,y100""
hairetu[] = hensuu
このような感じで
hairetu[0] = "x0,y0"
hairetu[1] = "x1,y1"
hairetu[2] = "x2,y2"
hairetu[3] = "x3,y3"
   ・
   ・
   ・
hairetu[100] = "x100,y100"
こうなるようにしたいんですが、どのようにすればいいでしょうか
よろしくお願いします

264:名無しさん@お腹いっぱい。
15/04/08 18:33:17.95 cFyNfocS0.net
>>252
UWSCでは確認してないが、一般的なプログラム言語なら
①複数宣言しない
PUBLIC hairetu[]
 IF jouken = jouken1
   hairetu[] = a1,a2,a3
 ElseIF jouken = jouken2
~~
②シングルクォーテーションを使う
hensuu = '"x0,y0" , "x1,y1" , "x2,y2" ,・・・, "x100,y100"'

265:名無しさん@お腹いっぱい。
15/04/08 18:33:44.64 bqNI4UgW0.net
1.宣言部と代入を分けろ②の例えが提示できて何故其処を悩む
2.案の一つとして以下のイメージの関数を作る
 引数の変数の文字列の「","」を先ず「";"」等に置換して「x0,y0」のカンマ部分との衝突を避ける
 「;」を区切り文字に指定してSPLITで引数の変数の文字列を分割した結果を戻り値にする

266:名無しさん@お腹いっぱい。
15/04/08 18:34:23.03 cFyNfocS0.net
②修正
hensuu = '"x0,y0"' , '"x1,y1"' , '"x2,y2"' ,・・・, '"x100,y100"'

267:名無しさん@お腹いっぱい。
15/04/08 18:37:58.97 bqNI4UgW0.net
UWSCでは文字列の囲いはダブルコーテンショーン固定で
文字列中にダブルコーテンショーンを表現したい時は<#DBL>とする
勿論、外部ブロプラムやクリップボードから得た文字列ならその必要ないけれどね

268:名無しさん@お腹いっぱい。
15/04/08 19:38:02.10 I9max7TN0.net
①の複数宣言についてですが
宣言と代入を分けてやってみましたができませんでした
例えば

PUBLIC hairetu[] = 1,2
print hairetu[0]
print hairetu[1]

PUBLIC hairetu[]



269:hairetu[] = 1,2 print hairetu[0] print hairetu[1] ③は実行できるんですが、④は hairetu[] = 1,2の部分が 式がおかしい or 型が合っていない となってエラーになります どこが間違っているんでしょうか



270:名無しさん@お腹いっぱい。
15/04/08 20:24:15.97 cFyNfocS0.net
>>257
その結果とヘルプをあわせれば、配列数の省略が可能なのは初期値を代入する時のみだと分かる

271:名無しさん@お腹いっぱい。
15/04/08 20:28:57.59 +jqxyJFv0.net
>>252
①配列を代入するとエラーになるから、一個ずつ転記してみるのはどうか
PUBLIC a1=1,a2=2,a3=3
PUBLIC b1=4,b2=5,b3=6
PUBLIC c1=7,c2=8,c3=9
PUBLIC jouken = 1;
PUBLIC jouken1 = 1,jouken2 = 2,jouken3 = 3
PUBLIC MAX_LEN = 3 - 1
PUBLIC joukenHairetu1[MAX_LEN] = a1,a2,a3
PUBLIC joukenHairetu2[MAX_LEN] = b1,b2,b3
PUBLIC joukenHairetu3[MAX_LEN] = c1,c2,c3
PUBLIC hairetu[MAX_LEN]
for i = 0 to MAX_LEN
  IF jouken = jouken1
    hairetu[i] = joukenHairetu1[i]
  ElseIF jouken = jouken2
    hairetu[i] = joukenHairetu2[i]
  ElseIF jouken = jouken3
    hairetu[i] = joukenHairetu3[i]
  EndIF
next
for i = 0 to MAX_LEN
  print hairetu[i]
next

272:名無しさん@お腹いっぱい。
15/04/08 20:34:27.84 bqNI4UgW0.net
しかもPUBLIC変数だと無条件に最初に動作するのね
微妙に面倒くさいですね
なるべくPUBLIC変数は使わないほうが良い
動作順序が記述順と異なるため予期しないバグの原因になる

273:名無しさん@お腹いっぱい。
15/04/08 20:41:45.12 7JUeZ3gv0.net
publicなんて普通最初に宣言するもんだろ
というかこいつのやりたいことはヘルプのsplitの項目読めば解決すんじゃね

274:名無しさん@お腹いっぱい。
15/04/08 20:45:32.93 azzKySR/0.net
仮組みしてとりあえずで走らせたスクリプトが一発で想定通りの動作をすると気持ちいいな

275:名無しさん@お腹いっぱい。
15/04/08 21:05:23.74 +jqxyJFv0.net
>>252
②一個ずつ取り出して、連想配列にぶち込むだけ。とりあえず例題の値そのままを想定してみた
 関数化しようとしたけど・・・配列も連想配列も戻り値にできなくてイライラした
//hensuu = ""x0,y0" , "x1,y1" , "x2,y2""
hensuu = "<#DBL>x0,y0<#DBL> , <#DBL>x1,y1<#DBL> , <#DBL>x2,y2<#DBL>"
hashtbl hairetu = HASH_SORT
i = 0
tmp = hensuu
while LENGTH(tmp) > 0
  // 一要素の文字列抽出
  val = betweenStr(tmp, "<#DBL>","<#DBL>")
  hairetu[i] = val
  i = i + 1
  // チェック済み文字列削除
  tmp = replace(tmp, "<#DBL>" + val + "<#DBL>", "")
  tmp = replace(tmp, " , ", "")
wend
for i = 0 to length(hairetu) - 1
  print hairetu[i]
next

276:名無しさん@お腹いっぱい。
15/04/08 21:15:08.83 +jqxyJFv0.net
ああ>>263だと、同値があると2個目以降が潰れるな
splitでreplaceの方がいいかもね

277:名無しさん@お腹いっぱい。
15/04/08 21:17:46.75 7JUeZ3gv0.net
そもそも値の代入の仕方も分かってない段階の奴にそんなコードを見せて何がしたいの

278:名無しさん@お腹いっぱい。
15/04/08 21:21:30.26 bqNI4UgW0.net
>>263
UWSCで配列を戻り値にする時はSAFEARRAYを使おう

279:名無しさん@お腹いっぱい。
15/04/08 22:11:02.23 BH+LStqK0.net
①Publicはそのプログラムで唯一の変数に対する宣言なので
 例え絶対に重複しなくても同じ値を宣言するのはNG
 また、UWSCの制約として配列に一度に代入できるのは
 宣言時のみなので後から [] を使うことは不可能
②配列を平文にしていいならTEXTBLOCKの活用という手もある
 外部から読み込む場合はF_ALLTEXTを利用

280:名無しさん@お腹いっぱい。
15/04/08 22:11:46.50 BH+LStqK0.net
//以下さんぷる、まず配列を一個作る
Public Dim Arry[]
// 条件分岐とかはまあ何でもいいとして
Public Flag = SlctBox(SLCT_CMB, 0, "", 1, 2, 3)
If Flag = -1 Then Exit
If Flag = 1 Then JoinData = Array1 // 配列にしたい平分を代入
If Flag = 2 Then JoinData = Array2
Dim OldArray[] = "a","b","c" // 既にある配列をぶち込む場合はjoinとか使えばよろし
If Flag = 4 Then JoinData = Join


281:(OldArray, "<#CR>") // 入れるべき配列の要素数を確認 Dim SplitCount = 0; While Pos("<#CR>", JoinData, SplitCount) > 0; SplitCount = SplitCount + 1; WEnd // 入れるべき配列に合わせてサイズ調整 Resize(Arry, SplitCount) // 配列を流し込む 速度とか知るかって感じ SplitCount = 0 For Paria In Split(JoinData, "<#CR>", False, False)   Arry[SplitCount] = Paria; SplitCount = SplitCount + 1 Next // 結果表示 PopUpMenu(Arry) //ブロックで配列要素を書く TextBlock Array1 sdfewe,wer"""",,,,,, "a", """,b""",""c ""<<<>>>>""fdf EndTextBlock TextBlock Array2 別に<#CR>一行で<#CR>書いてしまっても<#CR>良い訳だが EndTextBlock



282:名無しさん@お腹いっぱい。
15/04/08 23:48:40.35 dAen2zgN0.net
id = GETID("無題 - メモ帳", "Notepad", -1)
n = val(readini("No", "n"), 0) + 1
writeini("No", "n" , n)
SENDSTR(id, "あああ-" + replace(format(n, 1), " ", "0") +"@yahoo.co.jp"+"<#cr>")
KBD(VK_CTRL,DOWN,click)
KBD(VK_F4,CLICK,click)
KBD(VK_CTRL,UP,click)

記入するのをメモ帳ではなくフォームにしたいのですが教えて下さい。

283:名無しさん@お腹いっぱい。
15/04/09 00:15:12.04 qx2FgMTv0.net
一行目をフォームのタイトル名に変えるだけじゃん次の方

284:名無しさん@お腹いっぱい。
15/04/09 00:23:25.63 0ptFgXET0.net
プロ版のフォームのことならSETFORMDATA関数を使え
ヘルプはCREATEFORM関数の例をみよう

285:名無しさん@お腹いっぱい。
15/04/09 00:28:13.79 qijekSFU0.net
質問内容的にどう考えても>>270だろう

286:名無しさん@お腹いっぱい。
15/04/09 01:30:25.28 urZFwn/d0.net
bmpを読み込んでほかの場所描き写すことはできますか

287:名無しさん@お腹いっぱい。
15/04/09 01:33:42.73 qijekSFU0.net
日本語でおk

288:名無しさん@お腹いっぱい。
15/04/09 01:41:45.60 urZFwn/d0.net
に が抜けてた
白黒の画像から黒の部分だけをほかの場所に書き写したくて

289:名無しさん@お腹いっぱい。
15/04/09 01:52:39.13 qx2FgMTv0.net
出来るけど相当面倒な

290:名無しさん@お腹いっぱい。
15/04/09 01:54:02.50 OGeyDkmJ0.net
普通にGIMPとか使ったほうが早いな…
あれにもScript-Fuとかあったし、あれつかうとか。

291:名無しさん@お腹いっぱい。
15/04/09 02:03:48.03 qijekSFU0.net
>>275
簡単にやるなら、その目的にあった画像ソフトをみつけて
その操作を自動化させればいいんちゃう
UWSCだけでも出来る、というか似たような事をやっている人はいたから
ぐぐれば出てくるかもしれない
出てきたコードを黒だけ出力するよう改造すればOK

292:名無しさん@お腹いっぱい。
15/04/09 02:04:56.76 urZFwn/d0.net
ありがとうございます
探してみます

293:245
15/04/09 02:07:07.02 r4O9VCN/0.net
id = GETID("InternetExplorer.Application","○○○")
1行目に変更してもダメでした。
どう変えたら良いのでしょうか?

294:名無しさん@お腹いっぱい。
15/04/09 02:37:26.33 PbP82eZg0.net
URLリンク(blogs.yahoo.co.jp)
↑このサンプルコードと同様にFukidasiを5秒後に閉じるBallonを作りたいのですが
今の仕様ではメインスレッドとサブスレッドのFukidasiが別物として扱われるためうまくいきません。
別の方法がありましたらご教授お願いします。

295:228
15/04/09 04:19:10.95 RlObrH1f0.net
>>263
これでやったらご指摘の通り同値が消えてしまったので、splitを調べて使ってみたらようやくできました
遅れましたがありがとうございました

296:名無しさん@お腹いっぱい。
15/04/09 05:22:16.85 0ptFgXET0.net
どううまく行かないのか情報が足りない
非同期でフキダシを表示→待機→消去


297:だけなら それ全体を同一の別スレッドにする手もある



298:名無しさん@お腹いっぱい。
15/04/10 19:40:53.53 2DyyGIp70.net
UWSをJOYTOKEYで呼び出すうまい方法無い?

299:名無しさん@お腹いっぱい。
15/04/10 20:14:05.83 QgvSdIsq0.net
お互いに物理入力を読み取って仮想キーを吐くソフトだからなあ

300: ◆evw/E7kww2
15/04/10 23:22:22.27 9fDyMMqT0.net
JTKでショートカットキーを発行してUWSCで受け取るだけ
UWSC同士でも受け取れるよ。
SETHOTKEYね。

301:名無しさん@お腹いっぱい。
15/04/10 23:44:15.72 0KmPTRDp0.net
左クリックの連打スクリプトのトリガーを左クリックに・・・とか無茶言わない限りね

302:名無しさん@お腹いっぱい。
15/04/11 01:17:24.71 jPpNhgyb0.net
あざっす!

303:名無しさん@お腹いっぱい。
15/04/11 12:23:13.92 94a1K+Pk0.net
エラーが発生したので再読み込みします OK キャンセル
これが出た時にclkitemでキャンセル押すようにしてるんだけど、マクロ対策なのかキャンセル押してもOK押してもOKの処理がされるようになってるみたいなんだけど
どうやったらキャンセルボタンの名前探し出せるのかな
手動でキャンセル押した場合は普通にキャンセルされる

304:名無しさん@お腹いっぱい。
15/04/11 12:34:09.96 b6Tw4i4k0.net
ACWで一瞬アクティブに
ACCでクリック位置を感知
MMVでマウスを移動
BTNで直にクリック
アプリ側でマウス位置認識してるソフトなんかね
ボタンの上に載ってないと認識しないとかそういう
バックでやりたいならDEFDLLでAPI側から条件を送るとか
でもQT製かDelphiで識別タグ消されてる場合は対応できない云々

305:名無しさん@お腹いっぱい。
15/04/11 17:36:40.48 ma7OFZAk0.net
今ならアイテム名調べるのはSPY++使うのが楽だけど
当時は入手が面倒臭かったから
クリックした場所の情報をGETID STATUS POSACCで取得して
クリップボードに入れたりするスクリプトを作ったなぁ

306:名無しさん@お腹いっぱい。
15/04/11 17:54:01.40 94a1K+Pk0.net
すまん、いい忘れたけどブラゲ
ポップアップ自体はブラウザから出てる
使ってるブラウザはchrome

307:名無しさん@お腹いっぱい。
15/04/11 18:00:19.58 H1Krk7vE0.net
ゲームの話題はNG

308:名無しさん@お腹いっぱい。
15/04/11 18:20:32.99 VZK5XMgj0.net
>>293
は?上見れば分かるけどこのスレゲームの話しかないよ

309:名無しさん@お腹いっぱい。
15/04/11 18:55:22.01 /FPUVyA20.net
>>294
上みればわかるけどこのスレゲームの話はNG
それでも応えるアホちんやゲームと言わないことで回答を得ているものもあるけど

310:名無しさん@お腹いっぱい。
15/04/11 18:57:32.55 VZK5XMgj0.net
いつからゲームNGになったんだ
前スレ、前々スレからほとんどゲームの話題だろ
ゲームと言わないで回答得ているものも含めるとほとんどゲームの話だろ

311:名無しさん@お腹いっぱい。
15/04/11 19:00:20.90 +Eiy+x920.net
前々スレからいるならゲームの話がNGなのは分かってるだろ
ゲームだと分からないように質問しろ

312:名無しさん@お腹いっぱい。
15/04/11 19:05:21.76 ist4VhMC0.net
テンプレにないローカルルールを主張されても困るよな
まぁゲームのマクロはほぼ利用規約違反だし、次スレから追加しとけば?

313:名無しさん@お腹いっぱい。
15/04/11 19:07:17.28 VZK5XMgj0.net
>>292
chromeじゃなくてfirefoxかieじゃダメなのか
俺もブラゲのマクロ作ってるけどchromeのポップアップだけ特殊だから対応できてない

314:名無しさん@お腹いっぱい。
15/04/11 19:10:13.67 /FPUVyA20.net
結局お前がゲームマクロの話したかっただけか
ちなみにchromeでもできる
どうせDMMのブラゲあたりだろ

315:名無しさん@お腹いっぱい。
15/04/11 19:19:08.17 VZK5XMgj0.net
そういうお前は何のためにchromeを自動化するんだ?

316:名無しさん@お腹いっぱい。
15/04/11 19:25:49.74 kL9hrv0d0.net
荒れるからゲームとブラウザコントロールはスルーで
あとパス解析とファイルダイヤログも放置

317:名無しさん@お腹いっぱい。
15/04/11 19:45:39.73 S5CSdMTN0.net
スルーするやつは勝手にしてる。わざ


318:わざ宣言すんな



319:名無しさん@お腹いっぱい。
15/04/11 20:28:23.31 5Sv0eCRw0.net
>>294
確かゲームは隔離スレを作ってディープな技を磨いているはず
スレを検索してそっちに行ったほうが有益

320:名無しさん@お腹いっぱい。
15/04/11 20:40:33.21 VZK5XMgj0.net
それどこ?

321:名無しさん@お腹いっぱい。
15/04/11 22:00:15.72 5Sv0eCRw0.net
1000 :名無しさん@お腹いっぱい。:2014/10/18(土) 12:59:39.68 ID:5212DlOF0
次スレ
自動化ツールUWSC使いよ集まれ13
スレリンク(software板)

グラブル厨はこちら
裏技・改造 グラブル
スレリンク(gameurawaza板)

322:名無しさん@お腹いっぱい。
15/04/12 04:34:56.69 LPt7uSdE0.net
>>306
誘導ありがとう
隔離スレが有るってことはここで聞くのはスレチなのね

323:名無しさん@お腹いっぱい。
15/04/12 13:06:07.22 LvFvYAJy0.net
リアルタイムにCSVとかにログ出力したいんですけど、出来ますか?

324:名無しさん@お腹いっぱい。
15/04/12 13:27:10.08 dyNsz1xq0.net
出来るよ
FOPEN FPUT FCLOSE 辺りのヘルプを読めば良い

325:名無しさん@お腹いっぱい。
15/04/13 17:33:22.56 xpsAs50H0.net
誰か画面真っ暗の状態で自動で動かす方法知りませんか?
うちのパソコンは自動で動かすと画面がついてしまいます

326:名無しさん@お腹いっぱい。
15/04/13 17:52:31.30 r0LxJJ5m0.net
>>310
ディスプレイの電源切るだけなら画面offとかでググれ

327:名無しさん@お腹いっぱい。
15/04/14 16:34:26.28 5vq9VGrR0.net
だめぇーん

328:名無しさん@お腹いっぱい。
15/04/17 06:57:02.70 ehO6aSnV0.net
URLリンク(windowslognote.seesaa.net)
この設定ってモニタoffは関係ないんだっけ?

329:名無しさん@お腹いっぱい。
15/04/17 07:04:53.73 ehO6aSnV0.net
電源オプション→ディスプレイの電源を切る時間の指定
→詳細な電源設定の変更→USB設定
→USBのセレクティブサスペンドの設定→無効に
環境によってもいろいろ違うから、あとは本人に試してもらうしかない

330:名無しさん@お腹いっぱい。
15/04/22 18:19:23.00 IpJVD7NT0.net
Genymotionを裏で動かそうと思ったんですけど
id = GETID("Genymotion for personal use - Google Galaxy Nexus - 4.3 - API 18 - 720x1280 (720x1280, 320dpi) - 192.168.56.101","QWidget")
hwnd = GETCTLHND(id,"QWidget" )
MOUSEORG( hwnd, MORG_DIRECT, MORG_BACK )
//画面が出るまでアイコンをclick
WHILE (CHKIMG("画面.bmp", 1, 0, 0, 350, 550)=FALSE)
IFB CHKIMG( "アイコン.bmp")
x=G_IMG_X //
y=G_IMG_Y //
BTN(LEFT, CLICK, x+2, y+2, 80)
sleep(1)
endif
フキダシで確認したら画像は認識出来てますがclickできないです

331:名無しさん@お腹いっぱい。
15/04/22 19:26:15.30 CoQmrUtQ0.net
そうですか

332:名無しさん@お腹いっぱい。
15/04/23 12:11:02.63 k/7VjDSL0.net
質問失礼します
windows8,1 UWSCfree 5.1.1.0
起動するとis not a valid integer valueというメッセージが出てしまいます
原因をおしえてください

333:名無しさん@お腹いっぱい。
15/04/23 12:17:15.04 p5/DkHGz0.net
変数に変な値ぶちこんでんじゃないの

334:名無しさん@お腹いっぱい。
15/04/23 12:19:51.60 3+tLwcpJ0.net
>>317
起動するだけでそれなら作者に問い合わせたら?

335:名無しさん@お腹いっぱい。
15/04/23 12:34:24.93 BPriKFrV0.net
それは削除して古いverのやつとか落としてくればいいじゃん

336:名無しさん@お腹いっぱい。
15/04/23 14:12:01.00 k/7VjDSL0.net
>>318-320
ありがとうございました

337:名無しさん@お腹いっぱい。
2015/04/24


338:(金) 00:22:00.03 ID:Po/BsSEq0.net



339:名無しさん@お腹いっぱい。
15/04/24 00:44:03.74 FfVQYfi00.net
>>322
ウィンドウズのプログラムはどうやってアンインストールされてるのか仕組みを勉強すれば、
UWSCのみでウィンドウズの機能を使わずにファイル操作で出来なくも無いんじゃない?
そんなことするくらいならウィンドウズの機能を使う方が楽だけど。

340:名無しさん@お腹いっぱい。
15/04/24 06:53:10.64 nhQFMlYx0.net
かなーり初歩的な質問だと思うんですがいま
座標1をクリック
座標aクリック座標bクリック3秒待って座標cクリック
座標2をクリック
座標aクリック座標bクリック3秒待って座標cクリック
座標3をクリック
座標aクリック座標bクリック3秒待って座標cクリック.....
って感じで手作業感満載で書いてたんだけど処理が数千行くらいになってきたからさすがに
「座標aクリック座標bクリック3秒待って座標cクリック」を「処理A」として1行で記述してスッキリしたいんだけど
これってどうすればいいのかな?

341:名無しさん@お腹いっぱい。
15/04/24 06:57:45.80 st45lYFy0.net
メソッドにして呼び出せよ

342:名無しさん@お腹いっぱい。
15/04/24 07:21:48.49 L46HQ43N0.net
>>324
procedure 処理a()
座標aクリック…
fend

343:名無しさん@お腹いっぱい。
15/04/24 07:40:49.51 nhQFMlYx0.net
>>326
サンクス!
ただそのprocedureっての入れたらそもそもスクリプトが動かなくなっちまった・・・
動かなくなったっていうか再生しても即終了して処理が進まない

344:名無しさん@お腹いっぱい。
15/04/24 07:41:25.25 7uBFnSqp0.net
座標1,2,3…も引数で渡しちゃえよ

345:名無しさん@お腹いっぱい。
15/04/24 07:44:22.85 r6dakio/0.net
めんどくさくなったらPCを窓から投げ捨てる
これだね

346:名無しさん@お腹いっぱい。
15/04/24 07:58:26.20 cIuVyyuJ0.net
>>327
そりゃそうなるように記述しているのでしょう
procedureとFUNCTIONの例を参照して下さい

347:名無しさん@お腹いっぱい。
15/04/24 08:12:54.93 nhQFMlYx0.net
>>330
よっくよく見たら関数は最後に書かないとダメなんだね
どこにも最後に記述しろって書いてなくてシレっと最後に書いてるから気づかなかったわ・・・
>>329

348:名無しさん@お腹いっぱい。
15/04/24 08:20:44.25 C6kI+0QW0.net
>>331
> どこにも最後に記述しろって書いてなくて
ヘルプも読まずによくそんな事言うな。
> <関数の定義>
>  ※ 関数はメインルーチンの後に書いてください。
>   (メインルーチンは関数前までであり、関数後にメインルーチンを書いても実行されません)
>  ※ 関数名に次の文字は使えません , + * = < > ( ) ! ?

349:名無しさん@お腹いっぱい。
15/04/24 12:07:49.56 TGTZuBxGT
ヘルプの出し方もわからないくらいの初心者なんだろw
そもそもヘルプを読まないで、逆に「どこ」を読んだかが凄く気になるわけだがw

350:名無しさん@お腹いっぱい。
15/04/24 14:13:30.99 nhQFMlYx0.net
ヘルプ読まずに質問して悪かったが
ヘルプ読んでたらここで質問しないしな・・・
そう言われても困る

351:名無しさん@お腹いっぱい。
15/04/24 14:40:46.77 r6dakio/0.net
じゃあヘルプ読めよwwwwwwwww

352:名無しさん@お腹いっぱい。
15/04/24 14:43:16.27 cIuVyyuJ0.net
まぁドンマイ
逆ギレの部分は改めて
後は糧にしていけばいいさ

353:名無しさん@お腹いっぱい。
15/04/24 14:47:30.33 jNaJLC370.net
>>334
いい子だからごめんなさいしよ?

354:名無しさん@お腹いっぱい。
15/04/24 14:48:06.88 ebCJ5FgT0.net
>>334
回答者にdisられても
「べ、別にスルーできたけど可愛そうだから答えてあげただけなんだからね!」
ってツンデレみたいなもんだからありがとうって言っときゃいいんだよ

355:名無しさん@お腹いっぱい。
15/04/24 17:15:55.44 AM/zEzYT0.net
っていうか関数の後にメインのコードかいて動く言語ってある?

356:名無しさん@お腹いっぱい。
15/04/24 17:19:54.71 L46HQ43N0.net
そもそもメイン処理がブロックの中になくてもいいのが気持ち悪い
俺はとりあえずmainメソッド書いてそこに全体の処理書いてるわ

357:名無しさん@お腹いっぱい。
15/04/24 17:27:27.75 Z0cGZWV40.net
p


358:hpは確か動くはず



359:名無しさん@お腹いっぱい。
15/04/24 19:31:22.00 FfVQYfi00.net
てか初心者の癖にヘルプも読まずに質問とかwww

360:名無しさん@お腹いっぱい。
15/04/24 19:57:35.81 cIuVyyuJ0.net
でもね
今のWindowsだとあのヘルプファイルは標準じゃ読めないのよね
その時点で既に罠なのです

361:名無しさん@お腹いっぱい。
15/04/24 20:11:13.47 FfVQYfi00.net
ならそういえば良いわけで。
そしたらちゃんと見られるアドバイスとか、
それこそチョチョイと教えてくれる面倒見の良い人だって居るだろう。
まぁ、終わったことをだらだら言うのもよく無いか。

362:名無しさん@お腹いっぱい。
15/04/24 21:00:55.22 AM/zEzYT0.net
CHMってXP以来ずっとノーマルで読めるんだけど
セキュリティ強くして読めないとかIE抜いたから見れないとか
そういう上級者なら当然見る方法わかるやろ

363:名無しさん@お腹いっぱい。
15/04/24 21:10:18.22 vK5EbgCK0.net
>>345
読めないから
URLリンク(freesoft.tvbok.com)

364:名無しさん@お腹いっぱい。
15/04/24 21:17:34.49 r6dakio/0.net
アホちゃうのwwwwww
セキュリティ下げろよwwwwwwwwwwwwww

365:名無しさん@お腹いっぱい。
15/04/24 21:25:23.45 vK5EbgCK0.net
このスレ変なやつらが湧いてるな

366:名無しさん@お腹いっぱい。
15/04/24 21:29:41.11 r6dakio/0.net
自分の無知を棚に置いて、反論出来なくなったら変な奴扱いってのはどうなんですかね?

367:名無しさん@お腹いっぱい。
15/04/24 21:38:02.85 vK5EbgCK0.net
>>349
お前、自分が頓珍漢なこと言ってるの分からないの?
Vista以降ヘルプファイルは標準じゃ読めないのに、>>345が「ノーマルで読める」とか書いてるから
その間違いを指摘してるのに、「セキュリティ下げろよ」って意味不明
最初に開くときに必要なものをインストールしろって出てくるから普通は見れるようにするのに苦労しない

368:名無しさん@お腹いっぱい。
15/04/25 07:26:39.04 AKabdKOb0.net
Windows8から?flashがIE内蔵になって、
GETCTLHND(IE.HWnd,"MacromediaFlashPlayerActiveX")
から
GETCTLHND(IE.Hwnd, "Internet Explorer_Server")
にしないといけなくなったようなんですが、BTNで押す座標位置は"Internet Explorer_Server"が始まる
座標位置からのオフセットでいいんでしょうか?
Windows7では前者でIDとってオフセットでよかったんですが、Windows8ではクリックしてくれません。

369:名無しさん@お腹いっぱい。
15/04/25 21:24:11.16 pm/QtL+t0.net
ブラウザで動画を見ながら手前にゲームを起動してマクロを使うと1周ループしてからゲームの方の画面が拡大化されるんだけどこれって直す方法ない?
設定にはそれらしきものがなかった

370:名無しさん@お腹いっぱい。
15/04/25 21:27:10.68 ZMtLVm5C0.net
とりあえず何かと並行しようとしてうまくいかない時は仮想化しろ

371:名無しさん@お腹いっぱい。
15/04/25 22:04:12.13 JJS7MlxZS
while true
 sleep(0.2)
 chktime()
wend

procedure chktime()
 gettime()
 ifb g_time_hh=10 and g_time_nn=30 then
  msgbox("10時半になりました")
 endif
fend

こんな形でやるとmsgboxのOKを押しても押しても1分間出続けるんだが、
1回のみで簡単に終わる良い方法って何かあるかな?
フラグを一個用意しておいて、最初の1回メッセージが出たらフラグON、
1分経過したらフラグOFFにするのを考えたけど、何かチマチマしてるなと。
ちなみに設定時間はその都度変化する前提。
すっきり簡単に解決できる方法があれば教えてくだちゃい。

372:名無しさん@お腹いっぱい。
15/04/25 22:07:03.08 JJS7MlxZS
あ、ひょっとしてmsgboxの後にsleep(60)入れるだけで解決?
書いてから気づいたスマソー。

373:名無しさん@お腹いっぱい。
15/04/26 01:49:28.81 c17zbmUD0.net
abababという文字列を


374: Ababab ABabab ABAbab : : と順番に一つずつ大文字にしてクリップボードに送りたいんですがどういう風にすればいいでしょうか?



375:名無しさん@お腹いっぱい。
15/04/26 06:54:58.27 iB410H67A
ヒント
strconv
sendstr(0)

376:名無しさん@お腹いっぱい。
15/04/26 11:09:56.44 xgNFBZ7b0.net
copyで大文字にする部分と小文字のままの部分を切り分ける
大文字部分はconvstrで変換する
再度くっつける

377:名無しさん@お腹いっぱい。
15/04/26 11:11:21.49 xgNFBZ7b0.net
strconvだった

378:名無しさん@お腹いっぱい。
15/04/26 12:10:27.14 iB410H67A
クリップボードはsendstr(0)

379:名無しさん@お腹いっぱい。
15/04/26 12:53:03.85 alJ4U3rP0.net
>>356
str = "ababab"
str2=""
for i = 1 to LENGTH(str)
  str2 = str2 + STRCONV(COPY(str,1,i),SC_UPPERCASE) + COPY(str,i+1) + "<#CR>"
next
SENDSTR(0,TRIM(str2))

380:名無しさん@お腹いっぱい。
15/04/26 14:19:52.46 OxOcaGGx0.net
IE.NavigateでIEの表示をした後、IE.document.body.innertextでソースを拾っているのですが
その間に手動でIEが閉じられているとCOM_Errorになってしまいます。
IE.Navigateで表示されたIEが手動で閉じられていた場合、IE.document.body.innertextを実行せずに
スクリプトを終了するようにするにはどうすれば良いでしょうか?

381:名無しさん@お腹いっぱい。
15/04/26 14:30:17.13 2iiYgtzL0.net
COM_ERR_IGN COM_ERR_RET COM_ERR_FLG をヘルプで調べてみよう

382:名無しさん@お腹いっぱい。
15/04/26 14:36:08.20 OxOcaGGx0.net
>>363
解決しました!
ありがとうございます

383:名無しさん@お腹いっぱい。
15/04/27 09:24:06.71 4FCKudIE0.net
UWSCでファイルのサイズ比較というのは出来ないでしょうか。
画面(Webページ)を監視するマクロを組もうと思っており、
一定期間ごとにWebページを更新して、指定範囲のスクリーンショットを撮って、
撮ったスクリーンショットと前回とったスクリーンショットを比較してサイズが違っていれば画面に変化あり、としたいです。
探したところ、サイズ比較のコマンドは用意されていない感じがしましたが、
そういったコマンドは用意されてたりするでしょうか。
また、もし画像サイズ以外で画面の変化を感知させる方法をUWSCで実現する方法を分かる方がいましたら教えて頂けるとうれしいです。
よろしくお願いします。
ver:UWSC Ver5.1.1 Pro版

384:名無しさん@お腹いっぱい。
15/04/27 09:37:08.29 0wqgAay40.net
>>365
API叩けばできるだろ
てかそういう場合はハッシュ取れよ

385:名無しさん@お腹いっぱい。
15/04/27 09:51:57.04 RNEIX/K50.net
そう言った場合
画面比較より変化している筈の内部要素にアクセスして比較した方が良いと思うけれどなぁ

386:名無しさん@お腹いっぱい。
15/04/27 10:33:12.44 KOWxqShr0.net
>>365
chkimgじゃダメなん?

387:名無しさん@お腹いっぱい。
15/04/27 10:52:58.29 ONdrkes30.net
>>367
ソース取得って出来るん?

388:名無しさん@お腹いっぱい。
15/04/27 10:53:23.93 YPPU9HGD0.net
そもそもサイズが違ってくるとは思えないのだけど

389:名無しさん@お腹いっぱい。
15/04/27 11:05:28.84 YPPU9HGD0.net
>>370事故レス
bmp以外のpngやjpgで保存すれば違ってくるかもしれないんだね

390:名無しさん@お腹いっぱい。
15/04/27 11:20:05.80 4FCKudIE0.net
レスありがとうございます。
想定するケースとしては、Yahooのニューストピックの更新チェックのようなイメージでした。
ですのでAPIや内部要素、chkimgなどでは難しい?のかなと思い、実現するにはサイズ比較が比較的簡単なのかなと思い
そのような内容で質問をさせて頂いておりました。もし、それらの方法でも実現できるようでしたらすみません。
URLリンク(minus-k.com)
ハッシュとのレスを頂いたので探したところ、バイナリ比較するソフトがありましたので、
UWSCのchkimgでソフトウェア画面の「異なるファイルです」の表示をフラグとして、画面の監視を実現しようと思いました。
URLリンク(minus-k.com)
仰っていたハッシュの取り方とはなんだか違う感じもして、また、スマートなやり方ではないかもしれませんが・・・。
もっとスマートなやり方はあったりするでしょうか?

391:名無しさん@お腹いっぱい。
15/04/27 12:25:06.40 UJWo+DEc0.net
>>372
htmlのTEXTが変化してると思うけど?

392:名無しさん@お腹いっぱい。
15/04/27 12:25:58.66 c7Lv5adA0.net
やっぱり要素取得して前回と今回の文字列比較のほうが簡単だと思うけど

393:名無しさん@お腹いっぱい。
15/04/27 12:37:25.54 KOWxqShr0.net
>>372
一番手軽にやるならsaveimgでクリップボードにコピって
chkimgでクリップボードと比較するかな

394:名無しさん@お腹いっぱい。
15/04/27 13:17:58.51 4FCKudIE0.net
レスありがとうございます。
なるほど、saveimgでクリップボードコピーや画像保存したデータをchkimgに渡せば画像を比較することができるのですね。
saveimgしたものをchkimgに渡すのを思いつきませんでした。。
また、
htmlのソースファイルから変化した部分を探すのは難しいのでは、とそればっかり考えていましたが、
ソースではなくWebページの指定した部分の文字列比較でも実現できそうですね。
どちらも考えが及びませんでした。。
頂いたご意見を参考にしてもっと良いやり方でスクリプトが作れそうです。
これらで作ってみようと思います、アドバイス頂いてどうもありがとうございます。

395:名無しさん@お腹いっぱい。
15/04/27 20:15:37.04 Eo+zqvFe0.net
genymotionというandroidエミュレーターをuwscを用いバックグラウンドで操作させたいのですが、free版ではできませんでした
uwscShare版でexe化しbatファイル等でキックすることにより解決するのでしょうか
それともやはりshare版にしたところでfree版でバックグラウンド動作させられないものはさせられませんか?

396:名無しさん@お腹いっぱい。
15/04/27 21:12:59.49 LEmMXEzJ0.net
トライアルで試してみれば?

397:名無しさん@お腹いっぱい。
15/04/27 21:16:53.47 RNEIX/K50.net
テンプレレベルの話として裏に拘るなら仮想化

398:名無しさん@お腹いっぱい。
15/04/27 21:21:13.48 4SSUH+1G0.net
何も解決にならんと思うけど
>uwsc.exe スクリプト.uws
をバッチで投げるだけ
UWSC自体はもともとバックグラウンド可能だけど
genymotionとかいうのがバックグラウンド起動に対応してなければコンソールなりウインドウが上がってくるでしょ
起動しっぱなしで特に設定が不要 or CUIなりWEBなり他のアタッチができる状態なら
システムアカウントから立ち上げればウインドウ自体出てこないよ
厳密にはシステムアカウントのデスクトップに上がってくるけど
それもサービスとしてあげればAPI経由しなくて済むから完全にサイレントになる

399:名無しさん@お腹いっぱい。
15/04/27 21:32:51.42 RNEIX/K50.net
Androidエミュって時点でゲームなんだろうけれどね

400:名無しさん@お腹いっぱい。
15/04/28 10:42:28.50 BUmkg9z00.net
バックグラウンドで画像認識込みはあきらめる
仮想化環境でgenymotionはあきらめる
以前に雑魚の俺が2時間無駄にしてこれに辿り着いた

401:名無しさん@お腹いっぱい。
15/04/29 07:36:12.75 D7BNJyP40.net
>>334
>>337
そうですね
>>330>>332さんありがとう

402:名無しさん@お腹いっぱい。
15/04/29 07:45:04.54 D7BNJyP40.net
それと俺の場合はwin7ですけどヘルプは特に何もしてないんですが読めました

403:名無しさん@お腹いっぱい。
15/04/29 08:32:37.80 xDAJ7stc0.net
俺の場合も何も変更せず読めたけど、あれってPCのどのセキュリティ設定を参照されるんだろうな

404:名無しさん@お腹いっぱい。
15/04/29 10:16:43.17 LQJ9309Q0.net
>>385
IEのセキュリティ設定をわざわざ インターネット:高 に変える
これやるとほとんどのアクティブコンテンツが見れなくなるからふつうはしない
その状態でもヘルプが見たいという人のためのWinHlp32というアップデートモジュールがあるんだが
これもデフォルトなら勝手に入ってくるし
わざわざがちがちに固めなければ見れなくなることなんてないはずなんだが

405:名無しさん@お腹いっぱい。
15/04/29 19:41:50.55 O66CU1E70.net
最近使い始めて画像認識とか


406:便利だけど サイトの読み込みまちの調整が難しいな… 十分に時間とると効率悪くなっちゃうし



407:名無しさん@お腹いっぱい。
15/04/29 19:45:54.78 jCE5jBuY0.net
IE制限は痛いしなぁ

408:名無しさん@お腹いっぱい。
15/04/29 21:26:21.49 AmN3CDh6G
>>387
busywait()
じゃあかんの?噛み合ってなかったらすまん

409:名無しさん@お腹いっぱい。
15/04/29 22:00:57.03 LQJ9309Q0.net
>>387
htmlにOnLoad()投げいれて読み込み完了をフックしたら?

410:名無しさん@お腹いっぱい。
15/04/29 22:07:37.97 glG4jNOE0.net
BusyIE()でずっと待ちになって進まない時があるんだが、どうやって対処してる?

411:名無しさん@お腹いっぱい。
15/04/29 22:12:36.16 TX9JzT/s0.net
タイムアウト処理付ければいいだけだろ

412:名無しさん@お腹いっぱい。
15/04/29 22:15:36.94 glG4jNOE0.net
>>392
これがアスペか

413:名無しさん@お腹いっぱい。
15/04/29 22:23:35.35 NCIxQn750.net
普通は
DownloadComplete
NavigateComplete2
DocumentComplete
の順でイベントが発生するんだけど
ナビ先がキャッシュ済みとして扱われると
DownloadComplete
しか発生しないっぽいのでそれを検知してるなぁ

414:名無しさん@お腹いっぱい。
15/04/29 22:26:16.00 LQJ9309Q0.net
>387
あとはIEコンポーネントを利用したスキンブラウザなら
IEと同じコントロール方法で行ける上に、タスクバーに読み込み中や完了表示が出るものがあるから
いろいろ試してみたら?
自分の環境ではDonutRAPTがタスクバーにプログレスバーと完了メッセージが出るけど
残念ながらレイアウトがIE9だから最新のブラウザに合わせたサイトだと動かないこともあったり
LunaやFoxとかはどうなんだろうね

415:名無しさん@お腹いっぱい。
15/04/29 23:15:08.83 hwf+gCEd0.net
手詰まりだからちょっと聞きたい
OS再インスコしてからuwscを再インストールしたんだけど画像認識の部分がうまく動いてくれねえ
uwscとかのバージョンは前と変えてないしスクリプトも変えてないから動くはずなんだけどuwscって導入に前提あるんだっけ?
管理者権限と互換性は試した ググってもわからないしお願いします・・・

416:名無しさん@お腹いっぱい。
15/04/29 23:19:02.36 mbxknYry0.net
>>396
ディスプレイの設定が少し違うだけで、同じ画像ではなくなる可能性がある
設定をあわせるか、画像を作り直す

417:名無しさん@お腹いっぱい。
15/04/29 23:20:13.70 NCIxQn750.net
厳密にはディスプレイドライバのバージョンが違うだけでも駄目になる可能性がある

418:名無しさん@お腹いっぱい。
15/04/30 00:24:31.66 Yl6whR7h0.net
色々ありがと
一応画像作りなおしたんだけどねえ・・・
前までだとuwscの本体が一瞬消えて画像を認識してたっぽいけど消えることなくループしてるから画像認識自体が行われてない感じもする・・・?

419:名無しさん@お腹いっぱい。
15/04/30 06:22:42.96 z9KaCBhe0.net
dekita = faulse
while !dekita
dekita = CHKIMG( a.bmp )
print "chkimg: " + dekita
wend

420:名無しさん@お腹いっぱい。
15/04/30 06:52:56.67 pDR2lo4N0.net
>>399
uwscの操作ウインドウはchkimgの時消えなくても
問題ないように仕様変更されたはず
print chkimg("xxx")
のみ書いて動作確認くらいしたら?

421:名無しさん@お腹いっぱい。
15/05/01 15:45:24.69 Sbcjmgv80.net
前スレに似てる画像を判定してくれるってやつ上げてくれた人いたからそれ使えばいいかと

422:名無しさん@お腹いっぱい。
15/05/02 02:17:10.41 4zU0do9h0.net
昨日今日手を出したような本当の初心者のような質問ですみません。
ifb CHKIMG("ファイル名.拡張子")
x=G_IMG_X
y=G_IMG_Y
BTN(LEFT, CLICK, x , y , 100)
endif
これで対象のファイルをクリックどころかカーソルが対象のファイルへ移動もしません。
何が間違っているかご教授願えませんか?
もう一つ
画像からの作業を断念して手動で記録して再生させようとしたのですがそれもうまくいきませんでした。
カーソルは移動するのですが最初のクリックの時点で止まってしまいます。
その最初のクリックすら機能していません。
一応ググってから来たのですが自分では解決できませんでした。
どうかよろしくお願いします。

423:名無しさん@お腹いっぱい。
15/05/02 02:26:29.55 N14lG4qZ0.net
>>403
まず、ペイントを全画面にして、クリックしたら点を描けるようにして
BTN(LEFT, CLICK, x , y , 100)
が動作しているか確認
次に、
ifb CHKIMG("ファイル名.拡張子")
print "見つけた"
endif
で、CHKIMG("ファイル名.拡張子")が動作しているか確認

424:名無しさん@お腹いっぱい。
15/05/02 05:18:48.08 sb1MdTom0.net
>>403
エスパー的指摘なので間違ってたらすまん
画像はBmp形式しか認識しません
その点は大丈夫ですか?

425:名無しさん@お腹いっぱい。
15/05/02 06:53:30.42 4FNBTSJm0.net
>>404
今出先で試せませんが帰ったら試してみます。
2つめも原因がわかるならお願いします。
>>405
そこは問題無いです。

426:名無しさん@お腹いっぱい。
15/05/02 08:06:44.24 ZnxdJHaC0.net
画像認識が正しく動作しているか確認するなら
ELSE つかってどっちに流れているか確認した方がいい
後、クリックは相手次第な所があるから
相手の反応が悪い場合はDOWNして一定時間ウェイトを入れてからUPする必要があるケースもあるし
更に相手に対自動操作が施されている場合は
その座標までマウスを連続的に移動させないといけないケースもある
2つめは高レベルでは記録できないケースなんでしょう
低レベルで記録してみる
標準コントロールを使用していない対自動操作されている可能性・・・ゲームかな

427:名無しさん@お腹いっぱい。
15/05/02 09:05:43.01 onf4uhRI0.net
>>406
後半
記録したスクリプトをセーブして、中身のテキストをうp

428:名無しさん@お腹いっぱい。
15/05/02 10:30:01.10 s0fv0qrW0.net
どうせ対策されてるゲームとかでしょ

429:名無しさん@お腹いっぱい。
15/05/03 16:41:08.84 zcejMfJO0.net
質問
GetKeyState( VK_0~VK_9 )がテンキーに反応しない。
テンキーを認識させる方法を教えてください。

430:名無しさん@お腹いっぱい。
15/05/03 16:45:44.46 JFWRxiYM0.net
予約語一覧にある

431:名無しさん@お腹いっぱい。
15/05/03 17:11:23.49 zcejMfJO0.net
>>411
テンキュー!VK_NUMPADか。見落としてた。

432:名無しさん@お腹いっぱい。
15/05/03 21:54:59.51 ldDtFoYp1
ファイル名を変更するものを作っています
それをもっと楽にしたいです

ファイルマネージャーでjpgファイルが並んでいます
例)
20150100001.jpg
20150100002.jpg
20150100003.jpg
20150100004.jpg
20150100005.jpg


それをある番号から番号まで3つ区切りで1つずつリネームします
20150100001.jpg→A00639_1.jpg
20150100002.jpg→A00639_2.jpg
20150100003.jpg→A00639_3.jpg
20150100004.jpg→A00639_1.jpg
20150100005.jpg→A00639_2.jpg


リネーム後は最後尾に移動するため再びリネームはしません

433:名無しさん@お腹いっぱい。
15/05/03 21:55:36.70 ldDtFoYp1
例) 作ったもの
sleep(1)
ACW(GETID("D:\","CabinetWClass"),0,0,960,1160,0)
BTN(LEFT,CLICK,262,14,10)
ACW(GETID("D:\","CabinetWClass"),0,0,960,1160,0)
BTN(LEFT,CLICK,119,139,100)
//F2→バックスペース→A
KBD(VK_F2,CLICK,100)
KBD(VK_BACK,CLICK,100)
KBD(VK_SHIFT,DOWN,100)
KBD(VK_A,CLICK,100)
KBD(VK_SHIFT,UP,100)
//リネーム部 639 にリネーム
KBD(VK_NUMPAD0,CLICK,100)
KBD(VK_NUMPAD0,CLICK,100)
KBD(VK_NUMPAD6,CLICK,100)
KBD(VK_NUMPAD3,CLICK,100)
KBD(VK_NUMPAD9,CLICK,100)
//
KBD(VK_RSHIFT,DOWN,100)
KBD(VK_OEM_102,DOWN,100)
KBD(VK_RSHIFT,UP,100)
KBD(VK_OEM_102,UP,100)
//_1
KBD(VK_1,CLICK,100)
//
KBD(VK_RETURN,CLICK,100)

434:名無しさん@お腹いっぱい。
15/05/03 21:59:19.69 ldDtFoYp1
間違えました
よろしくお願いします

それをある番号から番号まで3つ区切りで1つずつリネームします
20150100001.jpg→A00639_1.jpg
20150100002.jpg→A00639_2.jpg
20150100003.jpg→A00639_3.jpg
20150100004.jpg→A00640_1.jpg
20150100005.jpg→A00640_2.jpg

435:名無しさん@お腹いっぱい。
15/05/03 23:09:05.89 iNx5MiAD0.net
ソートと配列について教えて下さい。ヘルプで配列を検索しても理解できませんでした。
testフォルダには
「赤-青-20150503_195501.txt」 「薄紅-白桃-20150503_200144.txt」
のようなテキストファイルが大�


436:ハにあり、 それらのファイル名をいくつかの方法で list.txtに列挙したいと考えております。 まず試行錯誤して以下のように書いてみました。



437:名無しさん@お腹いっぱい。
15/05/03 23:09:37.93 iNx5MiAD0.net
DIR =".\test"
URL ="URLリンク(localhost)
file = "list.txt"
ID = FOPEN(file,F_WRITE8)
NUM = GETDIR(DIR)
for A = 0 to (NUM-1)
ファイル名 = GETDIR_FILES[A]
年 = COPY(ファイル名,POS("-",ファイル名,2)+1,4)//2015の部分
月 = COPY(ファイル名,POS("-",ファイル名,2)+5,2)//05の部分
日 = COPY(ファイル名,POS("-",ファイル名,2)+7,2)//03の部分 同様に時分秒も可
先攻 = COPY(ファイル名,1,POS("-",ファイル名,1)-1)//赤や薄紅の取得
後攻 = COPY(ファイル名,POS("-",ファイル名,1)+1,POS("-",ファイル名,2)-POS("-",ファイル名,1)-1)//青や白桃の取得
年月日 = 年+"/"+月+"/"+日
開始日 = "開始日は"+年月日
ファイル名=URL+GETDIR_FILES[A]
print 開始日
print ファイル名
print 先攻+後攻
//リストへの書き込み
FPUT(ID,開始日 )//
FPUT(ID,ファイル名 )//
NEXT
FCLOSE(ID)
sleep(19)
このスクリプトでとりあえずファイル名のあいうえお順(文字コード順??)で
列挙ができたのですが、列挙する際並び替えしたいのです。
ソート?の方法が理解できないので、教えてください。
色々な条件で並び替えする予定では有りますが、(”後攻”の文字コード順とか、或いはファイルの中身のX行目を参照したり)
まず基本的と思われる、年月日でのソートを教えていただけますでしょうか。

438:名無しさん@お腹いっぱい。
15/05/03 23:32:19.74 8eRUMEfQJ
>>415
変なこだわりでプログラミングするより
コマンドプロンプトのRENコマンドでリネームしたほうが早い

Excelとかだと連番操作は簡単なのでリネーム前、リネーム後の文字列作って
それをもとにRENコマンドを流せばいい

439:名無しさん@お腹いっぱい。
15/05/04 00:20:23.35 WM9pP7Em0.net
そこまでいくとUWSCでやる処理じゃないと思うけど
宣言時にHASH_SORTを指定した連想配列に、年月日をキーにしてファイル名を代入すればいいかと
年月日かぶりの時の処理は考えてね

440:名無しさん@お腹いっぱい。
15/05/04 01:23:01.29 CDFIlBMyk
>>418
ありがとうございます

RENコマンドがくわしくないのもあるのですが
自分の知識ではうまいことできるかわからなかったのです

Excelとかの連携ですがそれなら私の技術的にも可能だと思います

D:\jpegファイルのあるフォルダ>dir > jpg ファイルのリスト.txt
これをExcelに流してやるところがちょっと難しいですが

それと説明不足ですいませんjpgファイルはこんな感じで規則性がありません
例)
20150501_ランダムな数字1.jpg
20150501_ランダムな数字2.jpg
20150501_ランダムな数字3.jpg
20150501_ランダムな数字4.jpg
20150501_ランダムな数字5.jpg


441:名無しさん@お腹いっぱい。
15/05/04 01:21:07.50 POSm0sDu0.net
よくわからんけどこんでいいの?
Dim DIR = "D:\MyDoc\Desktop\新しいフォルダー"
Dim File = "list.txt"
Dim 年[0]; Dim 月[0]; Dim 日[0]; Dim 時[0]
Dim 分[0]; Dim 秒[0]; Dim 先[0]; Dim 後[0]
NUM = GETDIR(DIR)
ReSize(年, NUM); ReSize(月, NUM); ReSize(日, NUM); ReSize(時, NUM)
ReSize(分, NUM); ReSize(秒, NUM); ReSize(先, NUM); ReSize(後, NUM)
For A = 0 to NUM -1
  Dim ファイル = GETDIR_FILES[A]
  年[A] = COPY(ファイル, POS("-",ファイル,2)+1, 4)
  月[A] = COPY(ファイル, POS("-",ファイル,2)+5, 2)
  日[A] = COPY(ファイル, POS("-",ファイル,2)+7, 2)
  時[A] = COPY(ファイル, POS("_",ファイル,1)+1, 2)
  分[A] = COPY(ファイル, POS("_",ファイル,1)+3, 2)
  秒[A] = COPY(ファイル, POS("_",ファイル,1)+5, 2)
  先[A] = COPY(ファイル, 1, POS("-",ファイル,1) -1)
  後[A] = COPY(ファイル, POS("-",ファイル,1)+1, POS("-",ファイル,2)-POS("-",ファイル,1)-1)
Next
//続く

442:名無しさん@お腹いっぱい。
15/05/04 01:21:38.10 POSm0sDu0.net
//続いた
Fukidasi("ソート順 [N]年 [G]月 [H]日 [J]時 [F]分 [B]秒 [P]�


443:諱@[S]後 [ESC]終了") Repeat   Ifb GetKeyState(VK_N)     QSORT(年, QSRT_A, 月,日,時,分,秒,先,後); Break   ElseIf GetKeyState(VK_G)     QSORT(月, QSRT_A, 年,日,時,分,秒,先,後); Break   ElseIf GetKeyState(VK_H)     QSORT(日, QSRT_A, 年,月,時,分,秒,先,後); Break   ElseIf GetKeyState(VK_J)     QSORT(時, QSRT_A, 年,月,日,分,秒,先,後); Break   ElseIf GetKeyState(VK_F)     QSORT(分, QSRT_A, 年,月,日,時,秒,先,後); Break   ElseIf GetKeyState(VK_B)     QSORT(秒, QSRT_A, 年,月,日,時,分,先,後); Break   ElseIf GetKeyState(VK_P)     QSORT(先, QSRT_A, 年,月,日,時,分,秒,後); Break   ElseIf GetKeyState(VK_S)     QSORT(後, QSRT_A, 年,月,日,時,分,秒,先); Break   EndIf   Sleep(0.1) Until GetKeyState(VK_ESC) FID = FOpen(File, F_WRITE8) For A = 0 to NUM -1   FPut(FID, 先[A]+"-"+後[A]+"-"+年[A]+月[A]+日[A]+"_"+時[A]+分[A]+秒[A]+".txt") Next FClose(FID)



444:名無しさん@お腹いっぱい。
15/05/04 12:30:24.94 fl9/B3+b/
>>420
詳しく知らなければネットで調べて実際に試してみればいい
ren aaa.jpg bbb.jpg
とすればaaa.jpgというファイルをbbb.jpgにリネームする

という事は
ExcelのA列に
20150501_ランダムな数字1.jpg
20150501_ランダムな数字2.jpg
20150501_ランダムな数字3.jpg
20150501_ランダムな数字4.jpg
20150501_ランダムな数字5.jpg
を入れる(ファイルのリストとやらを貼り付ける)

B列に
A00639_1.jpg
A00639_2.jpg
A00639_3.jpg
A00640_1.jpg
A00640_2.jpg
となるような数式を作る

C1に
="ren " & A1 & " " & B1
とすれば
ren 20150501_ランダムな数字1.jpg A00639_1.jpg

出来たコマンドをコマンドプロンプトに貼り付けるだけ

445:名無しさん@お腹いっぱい。
15/05/04 16:59:29.42 1tvpD3kK0.net
バッチファイルでファイル名一覧をテキストで取得して、Excelで並び替えた方が汎用的なような…

446:名無しさん@お腹いっぱい。
15/05/04 17:09:45.24 NHByfOcj0.net
次の処理に使う為にテキストファイルの方が都合がいいケースも有るだろうし
その辺は本人次第による

447:名無しさん@お腹いっぱい。
15/05/04 19:04:39.82 f8nhMwc80.net
あたしならバッチのFor文のヘルプをじっくり読むね

448:名無しさん@お腹いっぱい。
15/05/04 22:16:59.97 n2ZrU9UHx
//他の方法でやってみたのですが、
//もう少しでできそうですがSendStrの使い方が難しいです
//これだとA030_1.jpgというファイルになってしまいます。
//A00630_1.jpgにしたいのですが

FOR A = 630 TO 630

//マウスでアクティブにする
BTN(LEFT,CLICK,1100,20,1000)

//HOME で先頭に持ってくる
KBD(VK_END,CLICK,1000)
KBD(VK_HOME,CLICK,1000)

//ファイル名を変更する
KBD(VK_F2,CLICK,1000)

//ファイル名を消す
//
KBD(VK_BACK,CLICK,1000)

449:名無しさん@お腹いっぱい。
15/05/04 22:17:25.10 n2ZrU9UHx
//キー入力を開始する
KBD(VK_SHIFT,DOWN,100)
KBD(VK_A,CLICK,100)
KBD(VK_SHIFT,UP,100)
KBD(VK_NUMPAD0,CLICK,1000)
KBD(VK_NUMPAD0,CLICK,1000)

//変数の入力
SendStr(GetId(GET_ACTIVE_WIN),Copy("0"+A,Length(A),2))

//_1 の入力
KBD(VK_RSHIFT,DOWN,1000)
KBD(VK_OEM_102,DOWN,1000)
KBD(VK_RSHIFT,UP,1000)
KBD(VK_OEM_102,UP,1000)
KBD(VK_1,CLICK,1000)

NEXT

450:名無しさん@お腹いっぱい。
15/05/04 22:40:53.33 fl9/B3+b/
ヒント
a=1
replace(format(a,3)," ","0")
msgbox(replace(format(a,3)," ","0"))
a=10
msgbox(replace(format(a,3)," ","0"))
a=100
msgbox(replace(format(a,3)," ","0"))

何がやりたいか知らないけど
もう少し整理して考えたほうがいい

KBD関数を多用しているけど本当にそれ以外方法がないの?

451:名無しさん@お腹いっぱい。
15/05/04 23:20:33.72 nY4sIpEz0.net
質問です。
001.bmpか002.bmpが一致した場合クリックとしたいのですが、以下の処理にした場合、
002.bmpが一致した場合は正常にクリックされる(正常に座標が取得できる)のですが、
001.bmpが一致した場合は座標が
X座標:-999999
Y座標:-999999(print出力のログファイルより)
となってしまいます。
また、001.bmpと002.bmpを逆で書いた場合は、002.bmpの座標がそれぞれ-999999となってしまいます。
*****
IF CHKIMG("001.bmp") OR CHKIMG("002.bmp") THEN //画像一致で実行
print G_IMG_X
print G_IMG_Y
BTN(LEFT)
ELSE
print "no"
ENDIF
*****

452:名無しさん@お腹いっぱい。
15/05/04 23:21:12.27 nY4sIpEz0.net
(続き)
or条件の前半に書いたCHKIMGの座標が取得できないようですが、
うまく座標を取得する方法はあるでしょうか。
↓のようにELSEIFで処理を分ければ動くのですが、出来れば1行で書きたいと思った次第です。
使用バージョンは Ver5.1.1 Pro です。



453:***** IFB (CHKIMG("choose_001.bmp")=TRUE) THEN //画像一致で実行 BTN(LEFT) ELSEIF (CHKIMG("choose_002.bmp")=TRUE) THEN //画像一致で実行 BTN(LEFT) ELSE print "no" ENDIF *****



454:名無しさん@お腹いっぱい。
15/05/04 23:50:40.80 NHByfOcj0.net
特殊変数を共有しているので無理
素直に分けなさい

455:名無しさん@お腹いっぱい。
15/05/05 00:22:59.32 VvVhJAr50.net
option shortcircuit
これいれてないだけじゃないの?

456:名無しさん@お腹いっぱい。
15/05/05 00:49:12.39 4fpjdasx0.net
>>432-433
レスありがとうございます。
短縮評価というのがあるのですね、勉強になりました。
おかげさまで実現することができました、どうもありがとうございます!

457:名無しさん@お腹いっぱい。
15/05/05 09:48:03.69 t379n4Zi0.net
>>433
いいこと教えてもらった
言語仕様かと思って諦めてたわ
むしろ短縮評価をデフォにして欲しいくらいだな

458:名無しさん@お腹いっぱい。
15/05/05 12:15:50.95 qn/kIA8j0.net
そんな紛らわしいコードは書かないほうがいいと思うのだが・・・

459:名無しさん@お腹いっぱい。
15/05/05 16:56:57.37 d+/e+6EX0.net
じゃぁどんなのが紛らわしくないってんだYO(・3・)
その辺優しく教えろYO

460:名無しさん@お腹いっぱい。
15/05/05 19:40:24.06 iRlC9s5c0.net
resObj = chkimg("a.bmp")
if resObj.exists()
x = resObj.getX()
y = resObj.getY()
こんな感じで使えれば余計なこと考えなくて自然なんだけどな

461:383
15/05/05 22:54:10.53 TCyoWXwj0.net
383と384で質問したものです。皆様レスありがとうございます。
>>419
UWSCでなければPHPとかRUBYとか?
あとの方もレスくれましたが、バッチ処理を途中かますのがスマートなのでしょうか。
どちらにせよ配列の概念をしっかり理解できないとだめですね。
>>421
ありがとうございます。
後ほど試してみて、弄くりまわしてみます!ForNext文でファイル名の構成をすべて配列に代入し…
>>422
RepeatUntil文のところでキー待ち処理でソートしてるのですね…
しかし配列の概念が理解できないからか、なぜこのスクリプトですべての配列(キー配列以外の配列)が同時にソートされるのかわかりません(配列が判る人からすると 何言ってんだこいつ状態…?)
これをヒントに色々やってみます。
>>424
CSVにして、excelのテーブル機能とか使えばいろんなことができますね…。
ファイルのX行目を参照して、なんてのも別途>>421の方法で配列として取得しておけばいいことですし(ファイル名には入れないとしても)。
>>425
おっしゃるとおりテキストファイルでやりたいことがありました。
>>426
バッチ処理も配列も自分にとってはなかなか難しいですね。
今後勉強していきたいと思います。

462:名無しさん@お腹いっぱい。
15/05/05 23:10:23.24 STTevHR60.net
内部的にEXCELな感じでしょうかね
配列A、配列B、配列C、配列D があって、データ部はそれぞれ縦列で
A B C D
11 aa あ rte
12 vb え u5f
13 hd え 4ds
15 ke ん g5d
16 og う ew3
となってて
こんな感じのEXCELでソートをBで行うとまとめてACDも追従しますよね
この場合の関数が QSORT(配列B, QSRT_A, 配列A, 配列C, 配列D) となる訳です

463:名無しさん@お腹いっぱい。
15/05/06 06:03:33.06 A1LDEOba0.net
str_n = 2500
gettime()
str = "" + G_TIME_HH + G_TIME_NN
if str >= str_n
 print str_n



464:endif ○○時まで動作させるというものを組みましたが、うまく動作しなかったので上記のようにしてテストをしていました strは0000~2359の範囲までにしかならないはずなのになぜか上記のまま動作させるとprintされてしまいました 次にstr = "" + G_TIME_HH2 + G_TIME_NN2とすると思ったように動作しました 例えば6時10分を表す場合には610と0610の表し方の違いになりますが、前者だと2500より大きいと判定され後者だと小さいと判定されたようです これはどういうことなのでしょうか



465:名無しさん@お腹いっぱい。
15/05/06 08:14:04.52 zFCy2m+P0.net
>>441
文字列の比較になって先頭から比べて2より6のが大きいから

466:名無しさん@お腹いっぱい。
15/05/06 08:19:22.33 kulMuT5p0.net
変数が文字列型になのか数値型なのか

467:名無しさん@お腹いっぱい。
15/05/06 08:35:39.31 A1LDEOba0.net
>>442
なるほどありがとうございます
下一桁から読まれるんじゃないんですね

468:名無しさん@お腹いっぱい。
15/05/06 08:55:49.69 jQbs1+K90.net
数値として大小比較をしたいのならval関数な
if val("2500") > val("610") then
 msgbox("2500が大きい") //こっち通る
else
 msgbox("610が大きい")
endif
if "2500" > "610" then
 msgbox("2500が大きい")
else
 msgbox("610が大きい") //こっち通る
endif

469:名無しさん@お腹いっぱい。
15/05/06 12:25:21.85 I/ZvQy1N0.net
ファイル名を自在に変更したいなら Flexible Renamer
これ「こんなソフトありませんか」の常連。
正規表現と合わせて使うと真の最強だから困る。

470:名無しさん@お腹いっぱい。
15/05/06 12:32:43.76 I/ZvQy1N0.net
>432
特殊変数に触るときは目的に応じた関数名の自作関数でラッピングして使うといいよ
PROCEDURE getImgXY(imgBmpName, VAR X, VAR Y)
画像をクリックしたいなら clickImg を自作するのが定番
関数化すれば、TRYでエラー処理して自動操作中断しないようにしたり、
フォルダ名を関数側に持たせて記述を短くしたり、
便利で読みやすいことが沢山出てくるし

471:名無しさん@お腹いっぱい。
15/05/06 16:09:53.31 72Vanucp0.net
chkimgの色幅の指定について質問させてください。
24ビットカラーのbmpで保存した文字の画像を、あらゆる文字色において探索させたいのですが(#000000~#FFFFFF)、持たせる色幅は「RGB各色に対して8bit」で正しいのでしょうか?
また、その時1pxの透過色を指定していた場合、どうなるんでしょうか?

472:名無しさん@お腹いっぱい。
15/05/07 02:08:08.49 ybua1Qzf0.net
>>445
今更だけどありがとう

473:名無しさん@お腹いっぱい。
15/05/07 18:14:43.24 36ngVs2G0.net
前スレで配列サイズ取得にRESIZEとLENGTHどちらを使うべきかという話が出ていた。
俺はLENGTHで配列が取得できるようになる前からUWSC使っていたのでRESIZEでも
いいじゃないかと考えていたが、可読性などとは全く異なる理由で、RESIZEによる
配列サイズ取得を今後辞めることにした。
ついでに関数の戻り値にSAFEARRAYを使うことも辞めた。
その考えに至ったテストコードを載せておく。

474:名無しさん@お腹いっぱい。
15/05/07 18:17:18.48 36ngVs2G0.net
testCsv1="100,101,102,104,108"
testCsv2=123; testCsv3=EMPTY; testCsv4=NULL; testCsv4=NOTHING
testCsv5=CreateOLEObj("InternetExplorer.Application")
DIM testCsv6
testCsv7=SAFEARRAY(0, 2)
FOR vidx=1 TO 7; PRINT; PRINT "TEST No."+vidx; testSplit(EVAL("testCsv"+vidx)); NEXT
PROCEDURE testSplit(testCsv)
  TRY
    PRINT "test data : " + testCSV
  EXCE


475:PT     PRINT "test data is not printable."   ENDTRY   TRY     testArray =SPLIT(testCsv, ",")   EXCEPT     PRINT "SPLIT NG"; testArray =SPLIT(testCsv, ","); EXIT   ENDTRY   PRINT "SPLIT o.k. Array length result="+LENGTH(testArray)+" ( RESIZE result="+RESIZE(testArray)+" )"   IFB LENGTH(testArray) < 1 THEN     PRINT "SPLIT result is not array."; EXIT   ELSE     FOR idx=0 TO RESIZE(testArray)       PRINT " array["+idx+"]="+testArray[idx]     NEXT   ENDIF   PRINT "test end." FEND



476:名無しさん@お腹いっぱい。
15/05/07 18:40:45.43 0B5tP8ol0.net
で、何が問題なの?
SAFEARRAYは構造体みたいに使ってポリモーフィズムを実現できる型として重宝してるよ

477:名無しさん@お腹いっぱい。
15/05/07 19:05:53.09 kOFrsE6M0.net
SPLITは文字列を配列にする関数だからJOINしろと思う
色々な値が入る可能性のある関数なら最初に引数チェックしろと思う
配列じゃないなら-1なんでそれで判断してJOINしてやれば全て動くしなぁ

478:名無しさん@お腹いっぱい。
15/05/07 19:06:54.36 kOFrsE6M0.net
あ、-1なのはRESIZEの戻り値ね
そういう意味ではこういった用途の場合はLENGTHだと文字数になるので使えない

479:名無しさん@お腹いっぱい。
15/05/07 19:19:19.12 kOFrsE6M0.net
あー、でも途中のデフォルト参照するケースが駄目になるね
ちゃんとVARTYPEした対処した方がいい
これもコーディング論になってしまうけれど
例外はエラーからの復帰処理で正常系の判断処理には使わない方が良いかなと

480:名無しさん@お腹いっぱい。
15/05/07 19:44:34.12 oIqnKeh+0.net
Resizeの何がダメなのかわからん
SafeArray押しなのもまるで分らん
使い勝手というかデータ渡し合いするならSafeArrayだけど
処理速度ならResizeや単純な宣言配列のがうんと早い
Resize > Length だし
Dim Array[] >>>>>>> SafeSrray(0,0) だわ
上にあるようなファイル名取り込んでソートしなおすとかは絶対宣言した方が早い

481:sage
15/05/07 21:17:42.38 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を使ってやっていたんですが、ボタンの数が多くなってくると出来ません

482:名無しさん@お腹いっぱい。
15/05/07 21:30:45.17 kOFrsE6M0.net
本当の意味で同時に処理するのはイベント駆動のWindowsでは無理
CLICKでやろうとするから無理が出る
DOWNとUPに分けてABが同時にDOWNになるタイミングを作った後でUPしたら良い

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

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

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

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

486:名無しさん@お腹いっぱい。
15/05/08 00:14:41.27 aCA8XdTmI
ちょっと質問です
<確認用.uws>
call test.uws
Dim A,B
pic("D:\images


487:\","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))Fendprocedure sfh(x,y,i,j) x = x + random(i) y = y + random(j) print x print yfend確認用.uwsを実行すると、1274:定義が間違っていますtest.uws: 19行目: X = X + RANDOM(I)というエラーが出てしまいます、どうしたらいいですか?やりたいことは、画像の縦横のピクセル数から乱数をそれぞれ得て、ある値に足すことです。上に書いたサンプルでは、100~499の値と、200~499の値です。画像の大きさは一定にできないので変数で扱いたいです。よろしくお願いします。



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

489:名無しさん@お腹いっぱい。
15/05/08 00:07:33.89 jcQWG3E10.net
>>456
safearray押しではないけど、uwscに速度を求めるのは間違っていると思う

490:名無しさん@お腹いっぱい。
15/05/08 00:50:15.30 B65QIiuAJ
>>462
iやjは普通の文字列じゃなくUNICODE文字列なのが原因

バグか仕様かは知らないがrandom関数は数値かANSI文字列しか受け付けない
val関数はUNICODEでも数値に変換できるので
x = x + random(val(i))
とでもすればいけるだろう

491:名無しさん@お腹いっぱい。
15/05/08 01:18:30.50 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関数を使えばいい

492:名無しさん@お腹いっぱい。
15/05/08 05:46:16.80 UKJMttxu0.net
求めてなくても、同じ効果で速度の差がはっきりしてるなら早い方選ぶのが普通じゃないの?

493:名無しさん@お腹いっぱい。
15/05/08 06:09:34.64 Vy8D3J360.net
求めてないのなら、安全性とかソースの可読性とかそういうのを優先するよ。

494:名無しさん@お腹いっぱい。
15/05/08 06:36:18.86 UKJMttxu0.net
resizeって危険なの?

495:名無しさん@お腹いっぱい。
15/05/08 07:55:07.35 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)
となってしまいます。どうしたらいいですか?
やりたいことは、「画像の縦横のピクセル数」以下の乱数をある値に足すことです。アドレスお願い致します。

496:名無しさん@お腹いっぱい。
15/05/08 08:14:35.71 9f3Vt5H+0.net
Varが付いてないから変更出来ないだけじゃないの?

497:名無しさん@お腹いっぱい。
15/05/08 08:46:00.34 vrTT6NwFM
>>463;圧縮のためだろ;あれから;なくしたら改行が多すぎて投稿できないぞこのスレだと

498:名無しさん@お腹いっぱい。
15/05/08 08:48:38.84 vrTT6NwFM
それより>>454はどうなのかな?;>>461が言う実行結果と異なってるようだがバージョンや環境の違いか?;TRYが利くエラーと効かないエラー�


499:フ違いも気になる。



500:名無しさん@お腹いっぱい。
15/05/08 08:54:53.52 vrTT6NwFM
>>470
19行目の直前でプリントして変数の中身確認してみ?
Iの中身が空っぽだぞ多分>>451の2行目みたいな変な値になってる

501:名無しさん@お腹いっぱい。
15/05/08 10:12:19.88 kMHlHwI60.net
msgbox(A)とか入れて見りゃすぐわかる気がするんだが
多分A・Bには文字列が入ってる

502:名無しさん@お腹いっぱい。
15/05/08 12:28:16.24 uACYXt1H0.net
>>470
2ch.s cのほうに答え書いてある
制御文字が原因

503:名無しさん@お腹いっぱい。
15/05/08 12:31:32.67 pk4bmMyb0.net
>>475
ありがとうございます!!
VAL(A),VAL(B)にしたらできました!!

504:名無しさん@お腹いっぱい。
15/05/08 12:35:00.28 pk4bmMyb0.net
>>476
ごめんなさい!!気づきませんでした…

505:名無しさん@お腹いっぱい。
15/05/08 12:54:57.17 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)


506:名無しさん@お腹いっぱい。
15/05/08 18:51:27.05 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関数を使えばいい

507:名無しさん@お腹いっぱい。
15/05/08 19:05:39.45 f8iSJDTU0.net
わざわざコッチに貼るな

508:名無しさん@お腹いっぱい。
15/05/09 02:09:13.25 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)) // エラーになる
知らない人は悩むだろうな

509:名無しさん@お腹いっぱい。
15/05/09 06:51:53.03 lOeahwwg0.net
最近uwscいじり始めました
CHKIMGでALL_IMG_X[]、ALL_IMG_Y[]に格納されるのは最大6個まで?
増やせないのかな?

510:名無しさん@お腹いっぱい。
15/05/09 09:50:39.26 VKqe5NAJ0.net
>>483
最大4096個まで
6個しかないってことは6個しか画像が見つからなかったってことだ

511:名無しさん@お腹いっぱい。
15/05/10 12:17:33.84 V3eUIZ5/0.net
SCに書くアホなんているんだな…

512:名無しさん@お腹いっぱい。
15/05/10 14:41:29.85 j+Ly6pmCp
なんで?なんでも!

513:名無しさん@お腹いっぱい。
15/05/10 15:04:14.23 6YUb43Cc0.net
住み分けている人は問題ないさ

514:名無しさん@お腹いっぱい。
15/05/10 23:28:25.09 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が出てキモい。

俺も同じだった。

515:名無しさん@お腹いっぱい。
15/05/11 00:33:31.53 jVchxD0Z0.net
こっちに書かないでお前もあっちに書けよ

516:名無しさん@お腹いっぱい。
15/05/11 14:12:48.59 FSQG8YaTn
質問です
コンボボックスを1行に複数個入れることは可能でしょうか
やり方あれば教えていただきたい

517:名無しさん@お腹いっぱい。
15/05/11 20:41:08.63 DhQvpn7OJ
①シェア版のフォームを使う
②user32.dll経由させてAPIからウインドウを作る
③Win7以降ならパワーシェルから簡易.NETインタプリンタ経由してアプリをコン


518:パイル好きなの選べ



519:名無しさん@お腹いっぱい。
15/05/12 08:55:17.84 M6eLyl6Gb
③でお願いします

520:名無しさん@お腹いっぱい。
15/05/12 11:20:49.86 TtfeFMrT2
メニュー表かよw

521:名無しさん@お腹いっぱい。
15/05/13 21:24:08.38 9cIxCj9O0.net
UWSCの範疇じゃないかもしれんがプログラムに疎いんで聞いてくれ。
複数の変数名ごとの処理を順繰りに変えながら使ってるんだが
ifb tabemono = "mikan"
 tabemono = "ringo"
elseif tabemono = "ringo"
 tabemono = "momo"
elseif tabemono = "ringo"
tabemono = "momo"
//実際にはelseifがまだまだある
else
 tabemono = "mikan" //←走り終わったら最初に戻してる
endif
もっとスマートな方法教えてくれ
(1個減らすとその前の行も修正が必要なんで)

522:名無しさん@お腹いっぱい。
15/05/13 21:26:08.01 7VzdG4CX0.net
for文と配列使いなさい

523:名無しさん@お腹いっぱい。
15/05/13 21:42:08.47 +c1y9vIl0.net
変数のスライド以外は共通ならコレで1ループ
繰り返すなら FOR IN NEXT を WHILE 等でループさせる
 DIM list[] = "mikan","ringo","momo"
 FOR item IN list
  print item
 NEXT

524:名無しさん@お腹いっぱい。
15/05/13 22:39:45.77 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ファイルにして最初に読み込めば追加修正も楽だと思うよ。

525:名無しさん@お腹いっぱい。
15/05/14 08:31:27.96 UlftZKXm0.net
それbreakでも入れないと結果が違ってくるんじゃないか?
質問者が何をやりたいかは分からないけど

526:名無しさん@お腹いっぱい。
15/05/14 09:24:07.79 yaIK/1e80.net
ループ回すより連想配列使った方がスマート

527:名無しさん@お腹いっぱい。
15/05/14 09:43:31.94 4vjcebLp0.net
配列は使い道がわからんわ

528:名無しさん@お腹いっぱい。
15/05/14 09:46:28.32 BoW7Ss/B0.net
基礎を学んでないと配列は使わない人が多そう
uwscなんて知識無しの人でも作るもんだから

529:名無しさん@お腹いっぱい。
15/05/15 15:09:06.18 uEjjwe7w0.net
ワイも全然分からんから
WHILE TRUE
WEND
でグルグル回してるわ

530:名無しさん@お腹いっぱい。
15/05/15 18:45:08.69 cO+XlT030.net
ようは、動けばいいんだよね。
理解しないで適当にコピペでも、動かせてるならそれでいい訳で

531:名無しさん@お腹いっぱい。
15/05/15 20:48:28.13 BFc4oXXZ0.net
だめだろ。冗長なコード書いてる奴は

532:名無しさん@お腹いっぱい。
15/05/15 20:53:49.34 LD79vb4o0.net
仕事なら兎も角当人の責任で私的に使っている間はどうでも良い話

533:名無しさん@お腹いっぱい。
15/05/15 21:04:53.18 /AZ0XoPh0.net
冗長なコードが駄目なのはわかるが、冗長なコード書いてる奴が駄目かと言われると一概には言えんわな
コードを書いて走らせるのはあくまで手段だ、目的を見失ってまで磨きをかけるものじゃない

534:名無しさん@お腹いっぱい。
15/05/15 22:09:35.95 kJkWORh/0.net
連想配列もいいけどハードコーディングになりやすい
配列から要素を検索しインデックスを返すsearchArray関数を自作し、
CSV配列から生成した配列から現在の要素を検索して取得した
インデックスをインクリメントすることで希望の動きが実装できる。
が、配列に同じ要素が複数あると希望通りに動かない。(IF連鎖でも同じだが)
要件としてそこをクリアしたい場合、そもそもの実装として、
現在のインデックスを保持する仕様に変更した方がいいだろう。

535:名無しさん@お腹いっぱい。
15/05/15 23:33:00.52 M6mRhlAE0.net
もう英文だな

536:名無しさん@お腹いっぱい。
15/05/15 23:47:19.19 i6wiJ6QU0.net



537:自分よがりなコードやトリッキーなコードよりは冗長なコードのほうがいいわ



538:名無しさん@お腹いっぱい。
15/05/15 23:58:28.57 cwpOruK/0.net
キーが一意となる事が確定している状況であれば
通常の配列を使うなんて意味ない
わざわざ配列を検索するためのループをコーディングする必要が出てくる
行数も検索時間も全部無駄
できる大人は積極的に連想配列を使いますね

539:名無しさん@お腹いっぱい。
15/05/16 01:21:50.65 kYQf2te90.net
冗長なコードはバグの原因だしメンテナンス性に欠ける

540:名無しさん@お腹いっぱい。
15/05/16 01:58:20.22 hI7/eQi30.net
自分よがりでトリッキーなコードでも速かったらそっち使うじゃん?
最速のコードってトリッキーなんだよな

541:名無しさん@お腹いっぱい。
15/05/16 03:35:37.82 5YLxrpDQ0.net
だからなぜuwscに速度を求めるのか・・・

542:名無しさん@お腹いっぱい。
15/05/16 04:00:13.96 kYQf2te90.net
UWSCはプログラミング始めるとっかかりとして悪くないと思うわ

543:名無しさん@お腹いっぱい。
15/05/16 06:59:43.23 jzBJrgnq0.net
プログラムで固定長の配列は実際使いにくいよな
連想配列か可変長配列が圧倒的に便利

544:名無しさん@お腹いっぱい。
15/05/16 08:45:44.45 RgS0dIJ+0.net
可読性を重視するか速度を重視するかなんて書く人によるだろ
自分と意見が違うからって無闇に叩く奴はハゲ

545:名無しさん@お腹いっぱい。
15/05/16 09:55:58.16 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

546:名無しさん@お腹いっぱい。
15/05/16 09:57:59.40 PHxUHjwY0.net
hashtbl hash
hash["apple"]="りんご"
//・・・
hash["banana"]="バナナ"
print hash["apple"]
print hash["banana"]

547:名無しさん@お腹いっぱい。
15/05/16 10:01:39.61 PHxUHjwY0.net
searchArray?
しねばいいのに^^

548:名無しさん@お腹いっぱい。
15/05/16 10:05:22.46 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

549:名無しさん@お腹いっぱい。
15/05/16 10:05:59.46 QDThgf1Z0.net
(続き)こちらがログになります。
** 出力ログ ******
hoge1
loop1
hoge2
loop2
hoge3
loop3
hoge4
loop1
(・・・以下続く)
** 理想のログ ******
hoge1
loop1
hoge2
loop2
hoge3
loop3
hoge1
loop1
(・・・以下続く)

550:名無しさん@お腹いっぱい。
15/05/16 10:26:28.90 pznJG80O0.net
public hogeは変数宣言として最初に1度しか通らないので宣言と代入を別に記述する

551:名無しさん@お腹いっぱい。
15/05/16 10:39:03.28 QDThgf1Z0.net
>>522
なるほどです、下で無事動作するようになりました。
public hoge = 0 //関数で使う変数
hoge = 0
loop = 0
初歩的な質問になってしまい失礼しました、どうもありがとうございます。

552:名無しさん@お腹いっぱい。
15/05/16 11:12:12.76 GwNDKgWN0.net
ハードコーディングくらいググれよ
連想配列でもハードコーディングを避けて
CSVからのデータを格納できるけどな
0から999までハードコーディグしかも1行づつ
などというサンプルコードはもはやギャグだぞ

553:名無しさん@お腹いっぱい。
15/05/16 12:13:08.13 sM7ax+dX0.net
リサイズ使えば配列要素なんて無限に変更できるのにそこまでして拒む理由を知りたい
DIM Array[0]
Array[Resize(Array)] = 0
Array[Resize(Array, Resize(Array)+1)] = 1
Array[Resize(Array, Resize(Array)+1)] = 2



554:れでええやん [1000]とか馬鹿なの



555:名無しさん@お腹いっぱい。
15/05/16 20:57:04.02 ADPmpcCJ0.net
きたねえコードだ

556:名無しさん@お腹いっぱい。
15/05/16 21:07:10.23 kYQf2te90.net
ずいぶんとダサいコードを書いてるのね

557:名無しさん@お腹いっぱい。
15/05/16 22:31:29.69 ADPmpcCJ0.net
IQ145

558:名無しさん@お腹いっぱい。
15/05/17 07:17:01.08 v1v0KtpL0.net
こんなゴミコードを自信満々に晒せる神経を疑う

559:名無しさん@お腹いっぱい。
15/05/17 09:57:22.76 18wKMXDJ0.net
もう分かったからご自慢のきれいなこーどでずっとオナニーしてろよ
文句だけなら誰でも言えるっつーの

560:名無しさん@お腹いっぱい。
15/05/17 09:59:44.04 L/VppOnQ0.net
プログラムの授業で明日の天気予報を明後日に出しても仕方ないって例えでよく言われたな
昔は知らないけど今の時代数行長いだけで速さなんてそんな変わらないんだよな

561:名無しさん@お腹いっぱい。
15/05/17 13:49:55.80 8iRscPda0.net
ちょっとした動作上の設定なんかを配列にハードコーディングして
横着する場合なんかに>>525のような書き方をしてしまう場合がある
俺の場合はC言語の++と同じ作用をする自作関数で…w
エディタ上で順番を入れ替えるのも楽
連想配列派の人は、スピード推しなのに1000要素ハードコーディングという
人間を尊重しない本末転倒なサンプルコードが敗因だな
CSVから連想配列に格納し同要素存在時の例外処理まで入れてたら勝っていたw

562:名無しさん@お腹いっぱい。
15/05/17 15:08:03.59 eWPQGAiz3
URLリンク(sp.e-words.jp)
> ソフトウェア開発の際に、特定の動作環境を決め打ちして、その環境を前提とした処理やデータをソースコードの中に直に記述すること。
> ハードコードされたデータなどはプログラムの完成後、実行時などに容易に変更することはできないため、
> 後から利用者などの手で変更する必要が無いか薄いと判断されたデータがハードコードされることが多い。

UWSCみたいなスクリプト言語程度でハードコード云々言うのはアホ

CSVだって禁止文字とかカンマ区切りとかあるからエクセルとか使う必要があるけど
エクセルシートからコピペするんならスクリプトのソースにコピペしようがCSVにコピペしようが大差ない。

563:名無しさん@お腹いっぱい。
15/05/17 18:14:54.91 vSIeL8RL0.net
コーディング論とか流用性とか気にせずに目の前の問題をアドホックに解決するってのが
UWSCのようなツールの使い道だと思うんだけどなぁ

564:名無しさん@お腹いっぱい。
15/05/17 19:43:20.73 oWHdgvyz0.net
>>525はねぇよ。配列の初期化は普通↓こうだろ
DIM Array[] = _
0, _
1, _
2
CSVにする意味も分からねぇ。実行中に変更する必要ないんだったら↓これでいいだろ
DIM list[][2] = _
_ // key,value
"mikan","ringo", _
"ringo","mono"

565:名無しさん@お腹いっぱい。
15/05/17 19:44:59.84 oWHdgvyz0.net
後半コピペしたらミスった。訂正↓
DIM list[][1] = _
_ // key,value
"mikan","ringo", _
"ringo","mono"

566:名無しさん@お腹いっぱい。
15/05/17 20:05:01.57 kcSkOwMN0.net
ヒント:
初期化は自明な話なので、誰も初期化方法の議論はしていません

567:名無しさん@お腹いっぱい。
15/05/17 20:09:51.55 oWHdgvyz0.net
じゃあ何の議論してんだよ?

568:名無しさん@お腹いっぱい。
15/05/17 20:39:41.30 kcSkOwMN0.net
if-elseifが増えてきて効率性が落ちてきた、と思ったら配列を使えばいい
思わなければ使う必要なんてない
配列はC言語なんかにも標準で持っている極めて基礎的な仕組みで
for文なんかととても相性が良い
ただ配列は限界があって、先頭から順に1つずつ処理してい�


569:ュような 単純な処理しかできない 配列から特定の要素を探すsearchArrayみたいな処理を考えれば分かるけど 効率が悪いので要素数が増えれくるとどうしても遅くなる それにUWSCの場合は要素数の追加や、不要な要素の削除などが面倒 (これは言語によって違って) この問題はキーと値が1対1となるデータ形式では単純に回避できる それが連想配列 そもそもの用途が異なるから配列と連想配列は比べてもあまり意味がない って単純な話しかしてないんだけど 逆に何が分からないんだ?



570:名無しさん@お腹いっぱい。
15/05/17 20:44:13.30 v1v0KtpL0.net
>>536見て思い出したが、
配列の宣言の時、要素数指定の仕様がいらつくよな
何でn個必要な時にn-1を書かないといけねーんだよと毎回思うわ

571:名無しさん@お腹いっぱい。
15/05/17 20:49:21.29 gmmmlVwD0.net
>>539
ちと長いがまぁ同意
自分もユニークキーと値がペアの要素じゃなければ無理に連想配列使おうとは思わない
最近のバージョンで自然数ソートも追加されたから
普通の配列の利用頻度は少し上がっている位だ

572:名無しさん@お腹いっぱい。
15/05/17 20:50:31.81 A/2qR/J80.net
質問者不在 乙

573:名無しさん@お腹いっぱい。
15/05/17 20:55:30.33 oWHdgvyz0.net
>>539
それも自明だと思うけどな
俺は上でCSVを推してるやつとか変な初期化してるやつに言ったんだよ

574:名無しさん@お腹いっぱい。
15/05/17 21:04:40.72 vSIeL8RL0.net
連想配列だってsearchArrayみたいな処理をなるべく効率のいい方法でやってるだけで
普通の配列に比べればずっと遅い。というか、遅いからこそ普通の配列と別になってる。

575:名無しさん@お腹いっぱい。
15/05/17 21:08:59.70 dFk4RCMk0.net
rubyの配列が使いやすすぎてuwscの配列がうんこにしか見えない

576:名無しさん@お腹いっぱい。
15/05/17 21:19:17.19 gmmmlVwD0.net
アレはもう配列というより一般的な言語でいうリストの範疇になる
UWSCには勿論リストは無い
LINQ for UWSC とか実装したらいいのにね

577:名無しさん@お腹いっぱい。
15/05/17 23:13:32.56 kngJrV4f0.net
>>535
配列要素が固定ならそうだよ
>525は配列がいくつあるかわからない、処理中に増える可能性がある場合
かつ、同じ要素が重複してしまう場合はこれしかないよね
もともと>517の[1000]とか宣言してるのは無駄だろうっていう話なんだろうけど

578:名無しさん@お腹いっぱい。
15/05/18 00:36:12.92 qDhsU4Za0.net
たぶんリサイズのたびに別にメモリ確保して全コピーとかやってるだろうから
[1000]の方がずっとマシな気がしないでもない

579:名無しさん@お腹いっぱい。
15/05/18 00:41:17.78 AZmCHRLz0.net
必要に応じて適宜でいいでしょ
ハードコーディングしておしまいでもいいし
変更に簡単に対応するために「ほげ.UWS」と一緒に「ほげ.xlsx」を置いてもいいし
.INIでもいいし.datでもいいし
ところで変数宣言時に要素数を指定した配列をReDimで増減できたっけ?
型だけ指定して要素数は未指定じゃないと出来ないか、
または面倒な事をしなきゃいけなかったような。おやすみ

580:名無しさん@お腹いっぱい。
15/05/18 01:05:40.84 HjlaxIuh0.net
>>549
RESIZEはSAFEARRAYも含めてなんでも出来る
>>548
そしてSAFEARRAY以外はメモリ的に連続配置されている保証はないという仕様なので
毎回全コピしているかは不明
でも1件毎に配列を広げ続けるのは流石に勿体無いと思うので
最終件数が予め分かるロジックがあるならそれを優先
無理なら追加処理の最初に+100とか+1000とか案件に応じた一定値で配列を広げる
足りなくなったらまた一定値広げるのを繰り返して最終的な件数で確定させる方が好き

581:名無しさん@お腹いっぱい。
15/05/18 12:32:13.11 WuOwBSqY0.net



582:今テストプログラム書いて再確認したが、 今でこそ>>550の通り何でもできるようだな。 昔はSafeArrayが絡むと何かとまともに動かなかった。 例えばver.4.7では、関数の引数が配列のときSafeArrayを配列として渡すことが 出来なかった。ほぼSAFEARRAY≠UWSC配列との扱いだったからな。 もちろんRESIZEにSAFEARRAY渡したら Syntax Error 当時のSAFEARRAYは、UWSCにとっては UNSAFE ARRAY だった訳。 その名残りもあって、俺の場合なんかは、 わざわざSAFEARRAYをUWSC配列に転写してから使っていた。 昔からUWSC使い倒してる人は、SAFEARRAY触りたがらない人が多いはず。



583:名無しさん@お腹いっぱい。
15/05/18 12:38:34.40 WuOwBSqY0.net
昔と言っても Ver4.7 は 2011/06/04 にリリースか。
たった4年前。結構驚きだわ。

584:名無しさん@お腹いっぱい。
15/05/18 12:43:02.20 WuOwBSqY0.net
蛇足だけどμItronみたいな組み込みOSだと、
安定性を重視して領域やオブジェクトの動的生成・変更は行わない。
(動的だと、その時に必要なスタック領域が足りるかどうか保証がないから)
上のSafeArray絡みで散々苦労した経験のせいで、
俺の場合は配列は常に想定最大要素数確保して
データ要素値にEOFの役割を持つ定数を使って管理してるな。
今はもう不要なんだろうが、
そのコードで何年も24時間回しっぱなしのコードがあるんで触ってない。

585:名無しさん@お腹いっぱい。
15/05/18 13:15:44.27 MH6w5v1q0.net
uwscであまり複雑なことはするなってことだな
そういう用途には作られていないから

586:名無しさん@お腹いっぱい。
15/05/20 11:12:35.54 FuKGsM4H0.net
正直スレ全部読まずに質問して
大変申し訳ないのですが
uwscのホームページからdlできない
バージョンはとこかで入手できますか?
具体的には
uwsc pro48e を探しています。(ライセンスは購入済)

587:名無しさん@お腹いっぱい。
15/05/20 12:01:57.93 8Gzw0qU50.net
古いバージョンをわざわざ使う理由が判らないけど
公式で旧バージョンじゃなきゃダメな理由を伝えたら
対応してくれるんじゃないの?

588:名無しさん@お腹いっぱい。
15/05/20 13:32:36.09 3AVFyxf40.net
>555
Wayback Machine で探したり、URL直打ちで探れば、
上に出てた4.7まではまだネット上にある模様。

589:名無しさん@お腹いっぱい。
15/05/20 13:42:07.05 j6BzMEKe0.net
そのバージョンではexe化した時に、inputbox selectboxの上に自作アイコンが残ったんだけど、それ以降のは仕様で残らなくなった。
以前作者に無理言ってダウンロード
させてもらったんだけど、勘違いから消去してしまい復活も不能。
流石に二度は気が引けて他の手段は
無いものかと尋ねてみた次第です。

590:502
15/05/20 13:47:01.56 j6BzMEKe0.net
>>556
>>557
ありがとうございます
url直打ちで探ってみます

591:名無しさん@お腹いっぱい。
15/05/20 13:47:45.69 cUcq/gGg0.net
APIからinputboxの表示エリアに画像上掛けばええやん?
DEF_DLL と BilBlt でググれ

592:名無しさん@お腹いっぱい。
15/05/20 13:48:43.41 cUcq/gGg0.net
Bitやったすまんな

593:502
15/05/20 13:59:09.52 j6BzMEKe0.net
連投失礼します
>>561
ありがとうございます
その方法でしのいでたんですが
やり方が悪いのか表示直後アイコンと
タイトル文字が重なってしまいあまり
うまくできませんでした。
アドバイスをもとにもう少し調べてみます。

594:502
15/05/20 14:34:51.43 j6BzMEKe0.net
>>557
wayback machineでdl出来ました
貴重な情報に感謝します
皆様のお知�


595:bで解決できました 以上、  お騒がせしました



596:名無しさん@お腹いっぱい。
15/05/22 06:17:53.29 CcUQ5B9h0.net
web記録とか、これからはIEではなくEdgeになるのかな?
Edge.NAVIGATEとか?
ED.NAVIGATE?
EG.NAVIGATE?

597:名無しさん@お腹いっぱい。
15/05/22 06:19:38.95 CcUQ5B9h0.net
どんな表記の仕方が主流になるのかな…

598:名無しさん@お腹いっぱい。
15/05/22 07:14:42.17 7TsRGg6k0.net
オブジェクト名はてめーで決めるんだから関係ないだろ

599:名無しさん@お腹いっぱい。
15/05/22 07:29:20.44 hhZ70BHz0.net
プレビュー使ってる人居たらもうわかるんじゃないのかな


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch