[ 掲示板に戻る ]

過去ログ閲覧モード

Debugger起動時に固定の内容が表示される件 / ゆういち
お世話になります。
Debuggerを使用しており、あるとき保存先の容量が無いまま保存しようとして保存に失敗してしまいました。
それからというものDebuggerを起動すると保存に失敗したときの内容が表示されてしまうようになりました。
それらを消して再起動しても変わりありませんし、消してファイル名が無いまま保存しても変わりありません。
また、アンインストール→インストールしても変わりありませんでした。
作業ファイルがどこかにあって、そちらを訂正すれば良いとは思いますが場所がわからずこの度投稿させていただきました。
対策をご教示いただけますでしょうか。
よろしくお願いいたします。

No.1515 2015/07/28(Tue) 23:42:38

Re: Debugger起動時に固定の内容が表示される件 / umiumi
テンポラリーフォルダーにある _$$$_.UWS を削除してください。
テンポラリーフォルダーは[ファイル名を指定して実行] から %temp% にて開く事ができます。

No.1516 2015/07/29(Wed) 01:49:06

Re: Debugger起動時に固定の内容が表示される件 / ゆういち
umiumi様
ご教示ありがとうございます。
簡単になおりました。
今後ともよろしくお願いいたします。

No.1520 2015/07/29(Wed) 16:26:55
連想配列を使った重複を削除する仕組みについて / タスク
お世話になっております。
下記コードで重複が削除できるようですが

hash[fget(fp,i)]=1 でダミーの数字を指定する理由
fput(fp,hash[i, HASH_KEY]) で重複が削除される理由
この2点がよく分かりません。
ヘルプを見る限りHASH_KEYはキーを返すだけのはずですが
なぜ勝手に削除できるのでしょうか?

ご教授よろしくお願いいたします。

//  重複行の削除.uws
HASHTBL hash = HASH_CASECARE

fp=fopen("test.txt",F_READ)
for i=1 to fget(fp,-1)
  hash[fget(fp,i)]=1 // 1 はダミー
next
fclose(fp)

fp=fopen("new.txt",F_write)
for i=0 to length(hash)-1
  fput(fp,hash[i, HASH_KEY])
next
fclose(fp)

引用元:http://www.nagomi-jp.net/~liners/p0b.htm

No.1489 2015/07/23(Thu) 10:12:30

Re: 連想配列を使った重複を削除する仕組みについて / stuncloud
text.txtの内容が以下だったとして

foo
bar
foo
baz

先ずはじめのforループ内で以下の動作が行われます

hash["foo"] = 1 // foo というキーで値に1を代入
hash["bar"] = 1 // bar というキーで値に1を代入
hash["foo"] = 1 // foo というキーは既に存在するので1を再代入 ※
hash["baz"] = 1 // baz というキーで値に1を代入

ポイントは ※ の部分です
連想配列はキーが存在しなければキーと値のペアが新しく作られ、キーが既に存在していれば値を新たに代入します
ここで、hashにはfoo、bar、bazのキーを持つ3つの要素が追加されたことになります
これが重複を排除するための仕組みです

> hash[fget(fp,i)]=1 でダミーの数字を指定する理由

上記を踏まえるとわかると思いますが、テキストから読みだした各行を連想配列のキーに入れるのが目的なので値はなんでも良いのです
hash[fget(fp,i)] = hash[fget(fp,i)] + 1
例えばこんな風にしておけば、元のテキスト内でその内容の行が幾つあったかをカウントするといった工夫も可能です

> fput(fp,hash[i, HASH_KEY]) で重複が削除される理由

重複の削除は最初のループで終わっているのでここはその結果を書き出しているだけです
読みだした行は連想配列のキーに入れていたので、そのままキーを書き出しています

No.1490 2015/07/23(Thu) 11:44:57

Re: 連想配列を使った重複を削除する仕組みについて / koujichiu
じぶんの勉強も兼ねまして、
UWSCのプログラムについているヘルプを使わせてもらって
そのまま実験してみました ^^;

その実験結果から解ったというか想像した感じですが、

●ダミーの数字を指定する理由:
配列を初期化するのに要素を入れないとなので、適当に入れてある

(for のループで回してるので要素に 0から要素数-1 の数字をいれてもよいが
面倒なので同じ値を要素に入れている)

●重複が削除される理由:
削除しているというよりも、
連想配列のキーとして使われている、16進数値の文字列が重複しているものを削除し、
これを逆ハッシュして文字列に変換後にソートして並べ直して表示している
ような感じかもです

●構想?としては、

1: 連想配列としてのHASHTBL型のキーの値に、各行の文字列を使っている

2: HASHTBLの宣言時に、HASHTBL型のプロパティとして HASH_SORTがデフォルトでtrue
になっているのかもで、 すぐ並べ替えられるようになっている
(HASH_SORTで、キーに使ってあるハッシュ値の重複部分がわかりつつソートもできる)

3: これは想像ですが、forのループでまわしている時に使っているループ変数iは
連想配列hashのキー文字列ではなく、hashの配列としてのキー番号にひもづけされている
のかもで、全部の要素を同じ値にしてもループのなかで個別に全部ヒットする

のかもしれません ^^;

///////////////////////////////////////////////////////////////////////////////

// 連想配列の操作
//PUBLIC HASHTBL B     // パブリック、大・小文字区別しない、キーは書込み順
HASHTBL A = HASH_CASECARE or HASH_SORT // 大・小文字区別、キーはソート

A["あ"] = 1
A["う"] = 3
A["お"] = 5
A["え"] = 4
A["い"] = 2
A["お"] = 9

// "う"の値は何?
print "'う' の値は " + A["う"]

// "え"があれば削除
ifb A["え", HASH_EXISTS]
  flg = A["え", HASH_REMOVE]    // 必要無くとも変数で受ける
endif

print
print "// ソート順で表示 (文字型での昇順ソート)"
for n = 0 to Length(A)-1
  print A[n, HASH_KEY] + " = " + A[n, HASH_VAL]
next

A["あ"] = 1
A["う"] = 1
A["お"] = 1
A["い"] = 1
A["お"] = 1

print
print "// ソート順で表示 (ただし、値を全部1にしたとき)"
for n = 0 to Length(A)-1
  print A[n, HASH_KEY] + " = " + A[n, HASH_VAL]
next

print
print "// ソート順で表示 (ただし、要素の値を一度だけ指定)"
print A[1, HASH_KEY] + " = " + A[1, HASH_VAL]

A["あ"] = ""
A["う"] = ""
A["お"] = ""
A["い"] = ""
A["お"] = ""

print
print "// ソート順で表示 (ただし、値が全部無いとき)"
for n = 0 to Length(A)-1
  print A[n, HASH_KEY] + " = " + A[n, HASH_VAL]
next

////////////////////////////////////////////////////

//  重複行の削除.uws
HASHTBL hash = HASH_CASECARE // ●HASH_SORT はデフォでTrue ?

fp=fopen("test.txt",F_READ)
for i=1 to fget(fp,-1)
  //hash[fget(fp,i)]=1 // 1 はダミー
  hash[fget(fp,i)]="" // ●"" はダミー
next
fclose(fp)

fp=fopen("new.txt",F_write)
for i=0 to length(hash)-1
  fput(fp,hash[i, HASH_KEY])
next
fclose(fp)

No.1491 2015/07/23(Thu) 11:59:52

Re: 連想配列を使った重複を削除する仕組みについて / koujichiu
> stuncloud さん

>キーが既に存在していれば値を新たに代入します

再登録をすることで重複を防ぐ。。。なるほどです

× 16進数値の文字列が重複しているものを削除し、 ×
× (HASH_SORTで、キーに使ってあるハッシュ値の重複部分がわかりつつソートもできる) ×

////////////////////////////////////////////////////////

あともうひとつ。。。

HASHTBLのプロパティでHASH_SORTがデフォルトでTrueになっていたら、
テキストの重複行削除以外に
テキストを並べ替えてしまいますね。。。 m(_ _)m

No.1492 2015/07/23(Thu) 12:20:41

Re: 連想配列を使った重複を削除する仕組みについて / タスク
詳しいご解説ありがとうございます!
値が上書きされていたのですね。
盲点でした。
上書きするためにダミーを使うのですね。

お手数おかけしました。

詳しいご説明感謝いたします。
ありがとうございます。

>hash[fget(fp,i)] = hash[fget(fp,i)] + 1

応用を教えていただきありがとうございます。
HASH_valで確認したところ確かにカウントされていました。

今までこういったカウントは
ifb文使ってカウントしてたりしてましたが
これでコードが省略出来て大変助かります!


hash["foo"] = hash["foo"]+1
hash["bar"] = hash["bar"]+1
hash["foo"] = hash["foo"]+1
hash["baz"] = hash["baz"]+1

こういう状態になってるということですよね。
正直、初めは意味が分からなかったのですが
何度も見返してようやく意味が分かりました。
積極的に使って慣れていこうと思います。

fget(fp,-1)でループかけたり
慣れてる方は凄いですね。。
stuncloudさんありがとうございました!

No.1493 2015/07/23(Thu) 12:27:44

Re: 連想配列を使った重複を削除する仕組みについて / stuncloud
> こういう状態になってるということですよね。
そうです
> fget(fp,-1)でループかけたり
この「-1」は「F_LINECOUNT」定数のことですね、ファイルの行数が得られるので今回のように一行ずつforで処理したい場合にぴったりです

No.1494 2015/07/23(Thu) 14:02:08

Re: 連想配列を使った重複を削除する仕組みについて / タスク
koujichiuさん

ヘルプからそこまで推測できるのが凄いです・・・

私は推測すら出来ませんでした。。
これからも掲示版を覗いて勉強させていただきます。

ご回答ありがとうございました。

No.1495 2015/07/23(Thu) 17:49:12

Re: 連想配列を使った重複を削除する仕組みについて / stuncloud
せっかくなのでもうひとつ
書き出し部分のforループの代わりにfor inを使うとよりすっきり書けます

for key in hash
 fput(fp, key)
next

連想配列のfor inの場合inの前の変数にはキーが入ります
今回のケースでは不要でしたが、値が欲しい場合は hash[key] とします

No.1496 2015/07/23(Thu) 23:47:56

Re: 連想配列を使った重複を削除する仕組みについて / タスク
stuncloudさん
確かによりすっきりですね!
ありがとうございますm(__)m

No.1497 2015/07/25(Sat) 16:37:52
POPUPMENUのフォント / sen
いつもお世話になっております。
POPUPMENUのフォントを大きくする事は出来ませんでしょうか?

No.1420 2015/07/03(Fri) 00:02:00

Re: POPUPMENUのフォント / しゅん
良い方法を思いついてないのですが、回答がつかないようなので、ご参考まで。

システム設定を変更するのが一番簡単ですが、全てのアプリケーションに影響があるのが難点です。
PowerShellで作成するのは、速度的に難がありますが、気にならなければ良いかと。
UWSCをのっとるのが一番良いですが、、、これを書くのは難儀でちょっとパスです。

サンプルを書いていたら長くなったので、ブログ記事にしました。
http://d.hatena.ne.jp/junjun777/20150707/uwsc_popupmenu_font

No.1428 2015/07/07(Tue) 22:39:16

Re: POPUPMENUのフォント / sen
有り難うございます。
フォントが大きくなっています。

何とか、中身が分からないかと考えていて、返礼が遅くなりました。

以前も、しゅんさんに「UWSCのSlctBoxにアクセスキーをつける」で教えて頂き、
今でも毎日、活用させて頂いております。
PopupMenuを使おうと思ったのも、しゅんさんのサイトを再度読ませて頂いて、
良いなと思って使ってみたのですが、文字が大きくならないので、SlctBoxに固執して
何度も質問させて頂いたのを思い出しました。(^_^)

私は、メニューに贅沢なのかなと思いますが、他のランチャーを使わず、uwscであれば
ソフトを立ち上げて、思い通りに操作して、加工して・・を一発で出来ますので、
それが仕事が忙しい時に決まった時は、本当にゾクゾクします。
uwscは、やはり凄いと思います。

有り難うございました。

No.1488 2015/07/22(Wed) 00:32:09
getActiveOLEObj関数 / pipi
Seleniumのwebdriverを用いてGoogle Chromeなどをuwscから操作するには、CreateOLEObj関数を用いて新規のCOMオブジェクトとしてChromeなどのブラウザを起動する方法が基本だと思います。

それとは別に、既に起動しているブラウザを操作する方法として、GetActiveOLEObj関数を用いる方法がありますよね。

InternetExplorerやMicrosoft Office系アプリならば、ProgIDをCOMオブジェクト名として引数に入れてGetActiveOLEObj関数を呼び出すことで、既に起動しているものをCOMオブジェクトとして取得できると思います。

ですが、Google ChromeやFirefoxなどのブラウザに対して試したところ、上手く行きませんでした。

GetActiveOLEObj関数は、実質的には、Microsoft系のものに対してしか機能しないものなのでしょうか?
それとも、引数に適切なCOMオブジェクト名(ProgID)を指定すれば、実現できるものでしょうか?

よろしくお願いします。

No.1455 2015/07/11(Sat) 23:04:25

Re: getActiveOLEObj関数 / pipi
自己レスですが、やっぱり手詰まりです。
CreateOLEObj関数で新規に立ち上げるしかなさそうです。

IEだと、GetActive〜関数も使える上、ブラウザを非表示にでき、UWSCから操作するには都合良いですよね。

IEを使えば一番確実でしょうが、当方でブラウザを立ち上げてアクセスするサイトが
IE動作保障対象外となっていることから、止むなくGoogle ChromeかFirefoxを使わざるを得ない状況です。

No.1477 2015/07/17(Fri) 22:12:05

Re: getActiveOLEObj関数 / stuncloud
・SeleniumVBAのCOMオブジェクトはブラウザとは全然別物
ブラウザが起動しててもSeleniumVBAのCOMオブジェクトは存在しないのでgetactiveoleobjでどうこうできません
(SeleniumVBAのCOMオブジェクトが存在するのはあなたがスクリプトを実行している間だけ)

・そもそも起動しているブラウザを操作する必要があるのか
ない
ブラウザ起動から必要な動作をスクリプトで全部記述すればいいからです

> ブラウザを非表示に
Seleniumではそういった場合対象ブラウザにPhantomJSを使います

No.1480 2015/07/19(Sun) 00:08:20

Re: getActiveOLEObj関数 / pipi
ご返事遅れてすみません。
そういうことなんですね。
大変勉強になりました。
ありがとうございます。

No.1487 2015/07/21(Tue) 13:26:02
UWSC本体の幅が0になってしまいます / koujichiu
いつもお世話になっております

UWSC PRO 5030から5110に乗り換えたのですが、 本体の幅がうまく取れないようです。
よろしくお願いします m(_ _)m

///////////////////////////////////////
UWSC_ID = GETID(GET_THISUWSC_WIN, , -1)
UWSC_WIDTH = STATUS(UWSC_ID, ST_WIDTH)
print "UWSC_WIDTH = " + UWSC_WIDTH

ACW(UWSC_ID, G_SCREEN_W - UWSC_WIDTH - 5, 5)

No.1482 2015/07/19(Sun) 21:16:05

Re: UWSC本体の幅が0になってしまいます / umiumi
考慮しときます。
No.1486 2015/07/20(Mon) 23:41:38
テスト・プレイヤー募集中 / Liners
UWSCのみで作られた2048風、簡単パズルゲームを遊んでみませんか?
サンプルゲーム・レベルとしての感想・面白さ・改善点をお聞かせください。

多少長いので、下記よりコピペでお願いします。
http://www.bigcosmic.com/board/f/board.cgi?id=Liners

自作言語のサンプルゲームの目玉として、作成中の移植版です。
言語的制約等もあり、プログラム的にはチグハグです。お許しください。

No.1483 2015/07/20(Mon) 09:26:34

Re: テスト・プレイヤー募集中 / しろまさ
とりあえずスクリプト読まずにやってみました。
1回目は意味がわからず、次から8160、12660、20280と上がりました。
おもしろいです。こういうのは結構ハマッテしまいます^^

Option DEFAULTFONT = "MS ゴシック"
を入れると見やすくなりますね。

No.1484 2015/07/20(Mon) 10:33:45

Re: テスト・プレイヤー募集中 / Liners
しろまささん、早速のプレイありがとうございます。2万点越えは中々です。
フォントの件参考にさせていただきます。
高得点を狙うには、配置や次のパネル出現予測など、結構頭を使います。

No.1485 2015/07/20(Mon) 17:01:52
配列の戻り値を利用するには? / タスク
以下のように記述すれば
戻り値に配列を指定出来るとのことなのですが
このaを配列として利用するにはどうしたら良いのでしょうか?

hoge

function hoge()
dim a[] = "a","b","c"
result = slice(a, 0, length(a)-1)
fend

hoge[0]⇒a のように想像していたのですが
print hoge[0]としてもエラーが返ってきてしまいます。
初歩的な質問ですみません。
ご回答いただけると嬉しいです。

No.1478 2015/07/18(Sat) 11:33:42

Re: 配列の戻り値を利用するには? / yanyan
結果を、変数(SAFEARRAY型)で受ける

b=hoge()
print b[0]

function hoge()
dim a[] = "a","b","c"
result =slice(a, 0, length(a)-1)
fend

No.1479 2015/07/18(Sat) 13:12:17

Re: 配列の戻り値を利用するには? / タスク
yanyan様。

ありがとうございます。
無事解決しました。

No.1481 2015/07/19(Sun) 04:26:43
windows8.1で、 特定の窓でACWやBTN(DOWN)などで 窓を移動できません / koujichiu
UWSC Pro 5.1.1.0 を使っています。

OSは windows 8.1 64bit です。

スクリーン上に置いた特定の窓だけが、
ACWや、ステータスバーをBTN(DOWN) → BTN(UP)でドラッグ
しようとしても移動させることができません。
(もちろん、手動ならばマウスで移動できます。 ただし、タイトルバーを右クリックしても
コンテキストメニューが表示されません)

なぜ動かないのかおわかりの方がいらっしゃいましたら、
教えていただけると嬉しいです。

///////////////////////////////////////////////////

paintID = GETID(" - ペイント")
IF paintID <> -1 THEN ACW(paintID, 0, 0, 1076, 1022, 0)
SLEEP(0.5)

動かない窓のID = GETID("ゲームのクライアントなど一部の窓")
IF 動かない窓のID <> -1 THEN ACW(動かない窓のID, 0, 0, 1030, 796, 0)
SLEEP(0.5)

// ●win8.1だと一部のゲームクライアントなどの窓の位置をACWで動かせない
// win7: 22, win8.1: 25
IF KINDOFOS(False) = 25

// ●マウスでドラッグもできない
posX = STATUS(動かない窓のID, ST_X); posY = STATUS(動かない窓のID, ST_Y)
BTN(LEFT, CLICK, posX, posY)
SLEEP(0.2)
BTN(LEFT, DOWN , posX, posY)
SLEEP(0.2)
//MMV(0, 0)
SLEEP(0.1)
BTN(LEFT, UP, 0, 0)

ENDIF

EXITEXIT

No.1474 2015/07/16(Thu) 21:44:19

Re: windows8.1で、 特定の窓でACWやBTN(DOWN)などで 窓を移動できません / koujichiu
ACWなどで動かない窓について、 マウスを動かすdllに命令をして
mouseDown → 移動 → mouseUp も試してみましたが、
こちらでも動きませんでした。

// コマンドラインからマウスを操作する方法 (rundll32.exeで動くDLLの作成法)
// http://d.hatena.ne.jp/language_and_engineering/20081117/1226943698


仕方がないので、当面はクライアント座標基準で操作することにしました^^;

No.1476 2015/07/17(Fri) 11:35:50
一時停止中に停止すると、以降の実行中スクリプト名が変更される / なま
UWSC Pro Ver.5.1.1.0
「ファイル名.uws」を一時停止状態のままショートカットキーで停止させた場合、
以降、uwsファイル再読み込みを行うまでGET_UWSC_NAMEで取得する値が「一時停止...ファイル名.uws」となります。

//再現方法
// Alt+F1 再生
//⇒Alt+F1 一時停止
//⇒Alt+F2 停止
//⇒Alt+F1 再生
//実証コード
While True
 print GET_UWSC_NAME
 sleep(1)
Wend

No.1472 2015/07/16(Thu) 13:46:34

Re: 一時停止中に停止すると、以降の実行中スクリプト名が変更される / なま
Free版でも再現を確認しました。
Ver.5.1.0.0では再現しませんので、Ver.5.1.1.0でのエンバグかと思います。

No.1473 2015/07/16(Thu) 14:11:10

Re: 一時停止中に停止すると、以降の実行中スクリプト名が変更される / umiumi
確認しました。
修正します。

No.1475 2015/07/17(Fri) 00:49:31
IEでのラジオボタンのチェック&更新について / あのん
お世話になります。

某サイトのボタン更新を自動でやっているのですが、この度HPの仕様が変わった為押せなくなってしまいました。
以前は下記のコードで押せていました。

//3番目のラジオボタンチェック
IESETDATA(IE,true,"seatSelect-radio","3",1)

現在のサイトのhtmlソースは下記になります。
こちらの「はい」というボタンを押したいのですが・・・
よろしくお願い致します。

<label for="seat01">
<img src="https://××××/01.png" class="radioGroup1" /></label><br />
<label for="seat01" class="pro-label label-txt" data-sns_txt="MM月dd日 HH:mm はい"><input type="radio" name="vacancy_type" id="seat01" value="3" />はい</label>

No.1468 2015/07/15(Wed) 16:54:20

Re: IEでのラジオボタンのチェック&更新について / stuncloud
nameが「seatSelect-radio」から「vacancy_type」に変わってますね
IESETDATA(IE,true,"vacancy_type","3",1)
でいいんじゃないでしょうか

No.1469 2015/07/15(Wed) 17:51:33

Re: IEでのラジオボタンのチェック&更新について / あのん
stuncloud様

ありがとうございました!
無事作動するようになり、大変助かりました。

No.1471 2015/07/16(Thu) 11:16:32
全1170件 [ ページ : << 1 ... 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 ... 117 >> ]