[ 掲示板に戻る ]

過去ログ閲覧モード

CHKIMGの動作かな? / たかはる
ノベルゲームをやってて、面倒くさい部分が有ったので、UWSCで自動化してみました。
表示された条件に従って、選択肢を選んでクリックしていくのです。

終了 = 0
repeat
画面をチェックして選択肢を選ぶ処理
SLCTBOXを出して強制的にループを抜けられる様にもする
until 終了 = 1

ざっとこんな感じで作っていました。

ある程度まともに動くように成ったので、一秒縛りの有るSLCTBOXを消して、ちゃっちゃと動くようにしようとしました。
しかし、SLCTBOXを消すと、選択肢を選ぶ処理の動きがおかしくなりました。
画面は替わってるのに、前回選んだ選択肢の処理を行ったり、画面に何も表示されてないのに何処かクリックしたり。
原因が解らず、SLEEPをあっちこっちに放り込んでみたりしたのですが解決せず。w
で、フォーカスと言うかそーゆーのが、一旦、ゲーム画面から外れないと、CHKIMGが上手く機能しないのでは?と考え、FUKIDASIを出すようにしたら、あら解決。w

そういうもんなんですか?問題点がCHKIMGの動作と解ったワケではないですが。

No.2388 2016/05/12(Thu) 14:10:11
セレクトボックス、メッセージボックスの前回の位置 / ケイティー
セレクトボックス、メッセージボックスは表示位置を指定できますが
前回の位置で表示したい場合はどうすれば良いでしょうか?
繰り返し作業の中で任意の場所に移動させてもまた同じ位置に戻ってしまう為
前回の位置に表示したいです。

No.2386 2016/05/12(Thu) 11:50:19

Re: セレクトボックス、メッセージボックスの前回の位置 / stuncloud
http://www3.rocketbbs.com/13/bbs.cgi?id=umiumi&mode=pickup&no=2225

msgboxならクラスにTUmsgDlg_uwscを指定
slctboxならTUslctBox_uwsc

No.2387 2016/05/12(Thu) 12:05:44
uri文字列?を復元したいです / もき
お世話になってます。

FirefoxアドオンのDownloadStatusbar(DL履歴をステータスバー表示)の
内部ファイルのJsonファイル(history.json)を変換したいのですが漢字が変換できません。

たとえば、A を B へと読み下したいのですがうまくできません。

A C%3A%5CUsers%5CHOGE%5CDownloads%5C%E6%9D%B1%E6%96%B9.jpg
B C:\Users\HOGE\Downloads\東方.jpg

"方"が "E696B9" になるのはUTF8らしいとこまではわかったのですが、
DECOCE関数でテストしてもうまく復元できません

どうすれば変換できるでしょうか?


それと別件ですが、テストコードでデバックしてた時、下のような文でエラーになりました。
これは仕様でしょうか?
たぶん、//が空行扱いになって、空行と結合したから最後の括弧が無いというエラー
じゃないかなと思うんですが、最初はコメント化しただけでエラーになるので、
意味不明で混乱してしまったので…

a=""
repeat

a= input("エンコードテキスト入力",a)

URL = decode(a,CODE_URL)
UTF8 = decode(a,CODE_UTF8)
HTML = decode(a,CODE_HTML)

msgbox( "<#CR>Url:<#Tab>" + URL + _
"<#CR>Utf8:<#Tab>" + UTF8 + _
"<#CR>Htil:<#Tab>" + HTML + _
// "<#CR>BYTEutf16:<#Tab>" + BYTEutf16 + _
)

until a=""

よろしくお願います。

No.2381 2016/05/07(Sat) 21:56:18

Re: uri文字列?を復元したいです / リキュール
以下ではどうでしょうか。

a="C%3A%5CUsers%5CHOGE%5CDownloads%5C%E6%9D%B1%E6%96%B9.jpg"
URL = decode(a,CODE_URL)
b=decode(URL,CODE_UTF8)
msgbox(b)

No.2382 2016/05/08(Sun) 10:39:29

Re: uri文字列?を復元したいです / miles
コメント化の件は、行結合(_)までコメントされているから。。。

msgbox( "<#CR>Url:<#Tab>" + URL + _
"<#CR>Utf8:<#Tab>" + UTF8 + _
"<#CR>Htil:<#Tab>" + HTML + _
_//"<#CR>BYTEutf16:<#Tab>" + BYTEutf16 + _
)

No.2383 2016/05/08(Sun) 15:17:11

Re: uri文字列?を復元したいです / もき
いま起きました

リキュール 様
ありがとうございます。
テストは当初はちゃんと循環適応用にループしてたのに、途中から
結果を各種同時に出すようにしたら循環適応ループしなくなってた
間抜けに気がつきました…orz

miles 様
今の正しくはそうなるんだと思いますが、コメントアウトで変になるのは
違和感有るなぁと。
_の結合は強欲(空行は無視する)か、行頭//は無とする(行も存在しない)
として上の例でも普通に通った方が書くの楽で素直じゃ無いかなと。
素人考えなので、言語界では行結合の仕様はこれが常識という状態でしたら
ごめんなさい。

No.2384 2016/05/08(Sun) 16:41:20

Re: uri文字列?を復元したいです / 森
// は行末までがコメントアウトの対象であって改行記号は対象外です。

したがって、
------------------------------
msgbox("a"_
// コメント
)
------------------------------
は、
------------------------------
msgbox("a"_
)
------------------------------
と同じではなく、
------------------------------
msgbox("a"_

)
------------------------------
と同じなのでエラーになります。

なぜならば、複数行にわたる時は行末に_が必要なので、
------------------------------
msgbox("a"_
_
)
------------------------------
としなければいけないからです。

つまり、もきさんの希望は、
------------------------------
msgbox("a"_
_// コメントアウト記号の前にアンダーバーを付ける
)
------------------------------
で解決しますね^^

No.2385 2016/05/09(Mon) 15:31:47
IE アクセス先のチェック / わかば
お世話になっております。
本ソフトで開いたIEのアクセス先を定期的にチェックするため、下記コードを作りました。
しかし、
URL=IE.document.url
でCOM_Error例外が発生します。対処方法を教えていただけますでしょうか?
よろしくお願いします。

Public IE
IE = CreateOLEObj("InternetExplorer.Application")
IE.Visible = True
setOleEvent()
IE.Navigate("http://www.uwsc.info/")
BusyWait()
Thread AccessCheck
Msgbox("別のページにアクセス")
// OleEvent(IE); IE.Quit() // OleEventクリア & IE終了

Procedure AccessCheck
While True
URL=IE.document.url
IfB POS("uwsc",URL)=0
ExitExit
EndIf
Sleep(2)
Wend
Fend

No.2370 2016/04/30(Sat) 16:26:21

Re: IE アクセス先のチェック / ある
一応、エラーが出ない方法としては下記のような形で。
と言ってもtreadを外しただけですが。
busywait()でbusy状態からは抜けているのでスレッドにする必要はないです。
ただスレッドだとエラーになってしまう理由は正直わかりません。
それはきっと他の方が解説してくれると思います(^^;;)

Public IE
IE = CreateOLEObj("InternetExplorer.Application")
IE.Visible = True
setOleEvent()
IE.Navigate("http://www.uwsc.info/")
BusyWait()
AccessCheck
Msgbox("別のページにアクセス")

Procedure AccessCheck
while true
URL=IE.document.url
print "url="+url
IfB POS("uwsc",URL)=0
ExitExit
EndIf
Sleep(2)
wend
Fend

No.2371 2016/04/30(Sat) 17:05:12

Re: IE アクセス先のチェック / しゅん
IEオブジェクトは、別スレッドに渡せません。
GetActiveOleObjを使って、同じIEオブジェクトを別スレッドから操作することは可能です。
なので、どうしてもスレッドでやりたい場合は、Procedure内でIEオブジェクトを取得する必要があります。
なお、GetActiveOleObjで同じIEオブジェクトを取得するには注意が必要です。(ヘルプ読んでください)


Public IE
IE = CreateOLEObj("InternetExplorer.Application")
IE.Visible = True
setOleEvent()
IE.Navigate("http://www.uwsc.info/")
BusyWait()
Thread AccessCheck
Msgbox("別のページにアクセス")
// OleEvent(IE); IE.Quit() // OleEventクリア & IE終了

Procedure AccessCheck
  DIM ieAc = GetActiveOLEObj("InternetExplorer.Application")
  DIM URL
  While True
    URL=ieAc.document.url
    IfB POS("uwsc",URL)=0
      ExitExit
    EndIf
    Sleep(2)
  Wend
Fend

No.2372 2016/04/30(Sat) 17:22:32

Re: IE アクセス先のチェック / わかば
ありがとうございます。所望のことができました。

>GetActiveOleObjで同じIEオブジェクトを取得するには注意が必要です。
順番のデフォルトは最新(一番最後に起動)のものになるということですね。
取得する前に別のIEを立ち上げることはまずないので、実用上は問題なさそうです。

No.2373 2016/05/01(Sun) 00:01:25

Re: IE アクセス先のチェック / わかば
お世話になっております。

treadを使わない方法がないかと思い、fucDocCompに所定のURL以外をアクセスすると停止する
コードを追加して動作がすることができました。
しかし、SLCTBOXはfucDocComp内のExitExitでは消すことができません。
何か方策がありますでしょうか?
よろしくお願いします。

Public IE
IE = CreateOLEObj("InternetExplorer.Application")
IE.Visible = True
setOleEvent()
IE.Navigate("http://www.uwsc.info/")
BusyWait()
SLCTBOX(SLCT_BTN, 0, "どれか選んでね", "AAAA", "BBBB", "CCCC")
//手動で別のURLにアクセス


Procedure fucDocComp()
ifb (Pos("javascript:",""+EVENT_PRM[1])=0) and ("about:blank"<>""+EVENT_PRM[1])
Pub_docc = Pub_docc + "*"+EVENT_PRM[1]+"*"
Pub_DocComp_cnt = Pub_DocComp_cnt + 1
endif
Pub_inp_flg = True

//追加したコード
DIM URL
URL=IE.document.url
IfB POS("uwsc",URL)=0
IE.quit
ExitExit

EndIf

No.2378 2016/05/07(Sat) 01:01:18

Re: IE アクセス先のチェック / しゅん
イベントから、SLCTBOXを閉じてはどうでしょうか。
IE.quitとExitExitの間に「CTRLWIN(GETID(, "TUslctBox_uwsc"), CLOSE)」で。
ただし、SLCTBOXが複数出る状況ですと、工夫が必要です。

No.2379 2016/05/07(Sat) 10:18:06

Re: IE アクセス先のチェック / わかば
ありがとうございます。うまくいきました!!
No.2380 2016/05/07(Sat) 13:51:30
UWSCで起動したエクセルのマクロが動作しない / フェアリ
UWSCでエクセル(Excel 2013)を自動起動させています。
エクセルにはマクロ(VBA)を動作させるボタンがいくつか配置されています。(購入したソフトなので中身のコード等詳細は不明)
手動でこのエクセルファイルを起動した場合は、これらのボタンが普通に動作するのですが、UWSCで自動起動させるとその後これらのボタンを押しても動作しません。
この2つの起動の仕方で何が異なるのでしょうか?
UWSCで自動起動させた場合にも同じようにマクロのボタンを押したら動作するようにしたいのですが、どうすればよいでしょうか?

No.2375 2016/05/01(Sun) 18:59:02

Re: UWSCで起動したエクセルのマクロが動作しない / Liners
>この2つの起動の仕方で何が異なるのでしょうか?
通常、差異はありません。ただし、自動起動をCreateOleObjで行っている場合は、アドイン等、外部プログラムを別途、登録・読み込む必要があります。

この操作は、結構面倒なので手動と同じ操作をさせるか、コマンドラインで起動してからGETACTIVEOLEOBJをする方が簡単でしょう。

No.2376 2016/05/02(Mon) 01:57:04

Re: UWSCで起動したエクセルのマクロが動作しない / フェアリ
なるほど、そういうものなのですね。
ありがとうございます。
まさにCreateOleObjでやっています。
「コマンドラインで起動して」というのは具体的にはどのように記述すればよいでしょう?
ど素人で申し訳ありませんが、ゴメンドウでなければよろしくお願いいたします。

No.2377 2016/05/02(Mon) 07:38:54
差し引きデータのチェック / sen
お世話になっております。
指定の梱包がうまくマイナスされているかチェックしたいのですが、
合ってますでしょうか?
それほど、データ数は多くはないのですが、前半の抽出部分も遅いのですが、これはこんなものでしょうか?
ご教授のほど、よろしくお願いいたします。

dim 梱包数,完成,必要
DosCmd("DEL "+GET_CUR_DIR+"\取寄転記データ.csv")

取寄 = fopen("取寄データ.csv")
転記 = fopen("取寄転記データ.csv",F_WRITE)
台帳 = fopen("梱包.CSV")
 dim 表題[] = "取寄","品番","数","摘要","便名","箇所","着日","社内","梱包名","梱包数","企業体","ck"
 for x = 0 to length(表題[])-1
  fput(転記,表題[x],1,x+1)
 next
 
  for i = 2 to fget(取寄, F_LINECOUNT)
   for p = 2 to fget(台帳, F_LINECOUNT)
    ifb fget(台帳,p,6) <> "" then
     ifb val(fget(取寄,i,8)) < 100000 then
      必要 = FGet(取寄,i,1)+","+FGet(取寄,i,5)+","+FGet(取寄,i,6)+","+FGet(取寄,i,8)+","+FGet(取寄,i,10)+","+FGet(取寄,i,11)+","+FGet(取寄,i,12)+","+FGet(取寄,i,14)
      ifB fget(取寄,i,5) = fget(台帳,p,1) then
       梱包数 = fget(台帳,p,3) * fget(取寄,i,6)
       完成 = 必要+","+fget(台帳,p,2)+","+梱包数 * FGet(取寄,i,6)+","+fget(台帳,p,5)
       fput(転記,完成,0)
      elseif fget(取寄,i,5) = fget(台帳,p,2) then
       梱包数 = fget(台帳,p,3) * fget(取寄,i,6)
       完成 = 必要+","+fget(台帳,p,2)+","+fget(取寄,i,6)+","+fget(台帳,p,5)
       fput(転記,完成,0)
       break
      endif
     endif
    endif
   next
  next
fclose(取寄)
fclose(転記)
fclose(台帳)

転記 = fopen("取寄転記データ.csv", F_READ or F_WRITE)
 for i = 2 to fget(転記, F_LINECOUNT)
  for p = 2 to fget(転記, F_LINECOUNT)
   ifb fget(転記,i,9) = fget(転記,p,9) then
    ifb fget(転記,i,7) = fget(転記,p,7) then
     ifb fget(転記,i,5) = fget(転記,p,5) then
      ifb fget(転記,i,6) = fget(転記,p,6) then
       ifb fget(転記,i,10) + fget(転記,p,10) = 0 then
        fput(転記,"○",i,12)
        break
       endif
      endif
     endif
    endif
   endif
  next
 next
fclose(転記)

取寄データ.csv
キー,,枝番,行番号,品番,数,才数重量,摘要,在庫,便名,箇所,着日,仮,メモ,CK
045-01-01,0428045,01,01,K-1G , 1 , 186.80,7カワウチ , 0 ,1, ,160506,0,    ,
045-01-02,0428045,01,02,M1 , -1 , -39.68,7カワウチ , 0 ,1, ,160506,0,    ,
045-01-03,0428045,01,03,M6 , -1 , -2.00,7カワウチ , 0 ,1, ,160506,0,    ,

取寄転記データ.csv
,品番,数,摘要,便名,箇所,着日,社内メモ,梱包名,梱包数,企業体,ck
045-01-01,K-1,1,7カワウチ,1,,160506,    ,M1,1,ユ,○
045-01-01,K-1,1,7カワウチ,1,,160506,    ,M6,1,ユ,○
045-01-02,M1,-1,7カワウチ,1,,160506,    ,M1,-1,ユ,○
045-01-03,M6,-1,7カワウチ,1,,160506,    ,M6,-1,ユ,○

梱包.CSV
間口,梱包,数,掛率,企業体,d
K-1,M1,1,999,ユ,消
K-1,M6,1,999,ユ,消

No.2366 2016/04/29(Fri) 10:28:30

Re: 差し引きデータのチェック / Liners
>合ってますでしょうか?
う〜ん。正直わからない。何が正解なのか明確でない。
提示されたデータでは、結果が違うため[取寄転記データ.csvは2行で○が付かない]
そう言った意味では、「合っていない」

もう少し簡素化したもので検討すべき。気になるのは、重複を許しているようで、データ構造を触っている気がします。

>前半の抽出部分も遅いのですが、これはこんなものでしょうか?
遅い基準が不明。このデータでは1秒以内の反応なので速度は十分。

そもそも巨大なデータをUWSCで扱うべきではなく、数万件程度のデータを連想配列などで利用するのが実用的。
その為には、重複しないデータが必要で、通常の管理されたデータは、ほとんどそうなっている。

とは言うものの速度的な改善は、現状でも十分可能。ただし、速度よりも正確さ・読み易さの方が優先。
手法としては、変動しない値をループ外へ出すのが基本。

具体的な数値は、梱包.CSVを10万倍[20万行]にしたデータで、当方の環境では66秒から13秒[約4.7倍]になった。

No.2367 2016/04/29(Fri) 21:43:24

Re: 差し引きデータのチェック / sen
>気になるのは、重複を許しているようで

K-1が商品名で、M1・M6がその商品の複数梱包の一部です。M1・M6はすでに営業所に入荷していまして、それをマイナスした明細を作成する必要があります。
最初は、K-1で入力されまして梱包が入荷済みの商品を見つけ、その該当梱包を見つけM1・M6をマイナス梱包します。
そこがうまくいっているか確認をしているのですが、現状目視のところをパソコンでしたいという希望なのです。
よって、重複は必要なのです。

>データ構造を触っている気がします。

済みません。会社の内容に触れるので、具体的な部分を少し削りました。誤K-1G→K-1

>そもそも巨大なデータをUWSCで扱うべきではなく、数万件程度のデータを連想配列などで利用するのが実用的。

実際は、梱包.CSVは200行・取寄データ.csvは300行です。

>その為には、重複しないデータが必要で、通常の管理されたデータは、ほとんどそうなっている。

上記の理由により、どうしても重複が必要です。「梱包展開」と言ってます。

>とは言うものの速度的な改善は、現状でも十分可能。ただし、速度よりも正確さ・読み易さ>の方が優先。

おっしゃる通りです。

仕事の中でやってみたい例はたくさんありまして、UWSCでやると魔法みたいな感じです。
fget・fputを活用して、CSVファイルの出し入れを普通にできるようになりたいです。
よろしくお願いいたします。

No.2368 2016/04/30(Sat) 07:15:22

Re: 差し引きデータのチェック / Liners
>K-1が商品名で、M1・M6がその商品の複数梱包の一部・どうしても重複が必要
やはり展開後のデータでしたか…重複が必要で、データ構造が不明または暗黙の了解となると通常での実装は困難になります。

そうゆう理由なら上記のように全数検索になるのは仕方のないことで、「現場」ではあり得ますね。
一部構成が判明したので、取寄データ.csvのK-1G→K-1と訂正すると取寄転記データ.csvと同じなりました。

この訂正で、チェックが機能していることは分かりました。
これで良いかは、多くのデータで senさんが検証してみる必要があるでしょう。

こういった場合のスクリプトの組み方は、極力、人間が行う手順を再現することです。
そうすることで、想定外のエラーを減らすことが出来、うまくいく場合が多いものです。

実行速度に関しては、最後に検討すべきですが、全数検索なので200x300=60000件…少し荷が重そうです。
下記は、速度検証した時の変更部分の抜粋です。テストではデータ量が増えると5倍速以上なりましたが実データでは不明です。

ループ外への追い出しを行った「急贓品」で「あまり褒められたものではない」が「使えます」
まあ「彼」くらい速くなってくれれは御の字でしょう。もちろん自己責任で。


 for x = 0 to length(表題[])-1
  fput(転記,表題[x],1,x+1)
 next
 台帳COUNT = fget(台帳, F_LINECOUNT)

  for i = 2 to fget(取寄, F_LINECOUNT)
   v = val(fget(取寄,i,8)); 取寄5 = fget(取寄,i,5); 取寄6 = fget(取寄,i,6)
   必要 = FGet(取寄,i,1)+"," + 取寄5 + "," + 取寄6 + ","+FGet(取寄,i,8)+","+FGet(取寄,i,10)+","+FGet(取寄,i,11)+","+FGet(取寄,i,12)+","+FGet(取寄,i,14)+","
   for p = 2 to 台帳COUNT
    if fget(台帳,p,6) = "" and v >= 100000 then continue
      if 取寄5 = fget(台帳,p,1) then
       梱包数 = fget(台帳,p,3) * 取寄6
       完成 = 必要 + fget(台帳,p,2)+","+ 梱包数 * 取寄6 + ","+fget(台帳,p,5)
       fput(転記,完成,0)
      elseif 取寄5 = fget(台帳,p,2) then
       梱包数 = fget(台帳,p,3) * 取寄6
       完成 = 必要 + fget(台帳,p,2) + "," + 取寄6 + "," + fget(台帳,p,5)
       fput(転記,完成,0)
       break
      endif
   next
  next

No.2369 2016/04/30(Sat) 13:15:29

Re: 差し引きデータのチェック / sen
ありがとうございました。
よく考えてみます。

No.2374 2016/05/01(Sun) 18:02:54
「次へ」のボタンの押し方が分かりません / リキュール
IESetData(IE,True,"btnG","次へ") //反応しません。

ソースは以下のようになっています。
<button id="btn999" name="forward_BSM2040" type="submit" class=" " onclick="return loading(this);" value="">次へ</button>

方法が複数あればそちらも教えていただきたいです。
よろしくお願いします。

No.2364 2016/04/28(Thu) 20:49:38

Re: 「次へ」のボタンの押し方が分かりません / リキュール
自己解決しました。
IESetData(IE,True,"","次へ") //動作しました

お騒がせしました。

No.2365 2016/04/28(Thu) 21:00:48
Youtubeのチャンネル登録 / oko
いつも勉強させてもらっています。
Youtubeのチャンネル登録を自動クリックしたいのですが、
画像認識がどうも失敗の連続です。
HTMLからみても、<span class="yt-uix-button-content"><span class="subscribe-label" aria-label="チャンネル登録">チャンネル登録


このようになっており、ボタンを直接押したらいいのか?とおもったのですが、
やり方がどうも理解できません、


是非アドバイスいただけないでしょうか。宜しくお願いします。

No.2360 2016/04/27(Wed) 14:59:50

Re: Youtubeのチャンネル登録 / ある
RecIEで生成されたものを一部改変したものです(id,pw辺り)。
busywait()は長いので省略していますが、Pro版で試してもらえたらすぐに生成できるし、
検索してもそれっぽいものはすぐに見つかると思います。
google認証の辺りは触れずに終了しています(たぶん最初だけだと思うので)。

//---------------
googleid="aaa"
googlepw="bbb"
Public IE
IE = CreateOLEObj("InternetExplorer.Application")
IE.Visible = True
setOleEvent()
IE.Navigate("https://www.youtube.com/watch?v=TFfMwZfCQEg")
BusyWait()
IESetData(IE,True,"","innerText=チャンネル登録登録済み登録解除") // BUTTON
BusyWait()
IESetData(IE,googleid,"Email") // TEXT
IESetData(IE,True,"signIn") // SUBMIT 次へ
BusyWait()
IESetData(IE,googlepw,"Passwd") // PASSWORD
IESetData(IE,True,"signIn") // SUBMIT ログイン
BusyWait()

No.2362 2016/04/28(Thu) 06:52:13
module内でreadiniにwith文を使うとエラーが出ます / ラマ
module hoge
const ini=hair.ini
with this
public hage=readini("a","b",.ini)
endwith
endmodule

上記のように書くと、「変数: が定義されていません」というエラーメッセージが出ます。
thisでなくglobalや他のmoduleからのでも同じでした。

No.2325 2016/04/16(Sat) 09:15:41

Re: module内でreadiniにwith文を使うとエラーが出ます / しろまさ
複数Moduleの変数定義域の実行順序は保証されません。
他Moduleの変数をセットしたい場合、変数定義域ではなく関数内で代入します。

mb.set()
msgbox(mb.c) // 5

Module ma
Public a=2
EndModule
Module mb
Dim b=3
Public c
Procedure set()
c = ma.a + b
FEnd
EndModule

※せめてコンストラクタ内で使えれば1行減らせるのに。。(ぼやき)

No.2327 2016/04/16(Sat) 10:04:50

Re: module内でreadiniにwith文を使うとエラーが出ます / ラマ
With文使わなければ正常に動くのでwith文のバグかと思われます
No.2339 2016/04/18(Mon) 10:20:04

Re: module内でreadiniにwith文を使うとエラーが出ます / しろまさ
省略してるのかと思ったけどそういう次元でしたか。

変数定義域で関数や構文は使えませんよ。

ついでに with this という書き方も×。

No.2340 2016/04/18(Mon) 17:02:33

Re: module内でreadiniにwith文を使うとエラーが出ます / stuncloud
コンストラクタ内でやりましょう

msgbox(hoge.hage)

module hair
 public ini = "hair.ini"
endmodule

module hoge
 public hage
 const ini = hair.ini
 procedure hoge
  with this
   hage = readini("a", "b", .ini)
  endwith
 fend
endmodule

No.2341 2016/04/18(Mon) 18:23:57

Re: module内でreadiniにwith文を使うとエラーが出ます / しろまさ
stuncloudさんに言われて再確認(遅

コンストラクタの実行順序、変数定義の後ですねぇ。
昔、コンストラクタ内で結合してて失敗した記憶があったので避けてました。
コンストラクタでいいようですね。ありがとうございます。(CALLでも大丈夫でした)

msgbox(ma.a2 + "<#CR>" + mb.b2 + "<#CR>" + mc.c2) // 9 9 9

Module ma
 Public a = 2
 Public a2
 Procedure ma()
  a2 = ma.a + mb.b + mc.c
 FEnd
EndModule
Module mb
 Public b = 3
 Public b2
 Procedure mb()
  b2 = ma.a + mb.b + mc.c
 FEnd
EndModule
Module mc
 Public c = 4
 Public c2
 Procedure mc()
  c2 = ma.a + mb.b + mc.c
 FEnd
EndModule

No.2342 2016/04/19(Tue) 09:12:27

Re: module内でreadiniにwith文を使うとエラーが出ます / ラマ
なるほど
コンストラクタでやって関数呼び出せば出来るんですね
ありがとうございます

No.2361 2016/04/28(Thu) 01:30:51
つかえない / ミカン
フリーソフトじゃないのをダウンロードしてしまい14日たってフリーソフトがダウンロードしても使えなくなってしまえました
No.2358 2016/04/26(Tue) 23:07:05

Re: つかえない / routa
まずはPro版をアンインストールしましょう。
そしてファイルの関連付けは フリー版の EXEの場所を指定しましょう。

No.2359 2016/04/27(Wed) 00:23:11
全692件 [ ページ : << 1 ... 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 70 >> ]