[ 掲示板に戻る ]

過去ログ閲覧モード

差し引きデータのチェック / 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
開いているExcelが制御できない / しげぞう
前回は回答ありがとうございました。
前回の問題はなんとか解決しましたが、また新たな問題のため行き詰っています。

開いているEXCELをコントロールするため
サンプルファイルを実行しようとしても、
必ずCOMエラーになってしまいます。
いくつかのサンプルファイルで試してみましたが、
当方の環境ではすべてCOMエラーとなってしまい、
動きませんでした。
なぜでしょうか?

私が使っているのは、
Windows10
Excel2016
UWSC Pro Ver5.2.1.0
です。

必ずGETACTIVEOLEOBJで引っかかります。
初心者のためお手間を取らせて申し訳ありませんが、
ご教授よろしくお願いします。

No.2354 2016/04/25(Mon) 20:44:41

Re: 開いているExcelが制御できない / しげぞう
自己解決しました。管理者権限の設定が変わっていたためでした。お騒がせして申し訳ありません。
No.2357 2016/04/26(Tue) 12:12:34
WindowsXPでのP_UWSC_REEXECの挙動 / dew412
初書き込みです。

タイトルの通り、WindowsXPで、
--------------
SLEEP(3)
POFF(P_UWSC_REEXEC,True)
--------------

これだけの記述で実行すると、UWSCが落ちます。
そのあとUWSC.exeを起動すると、既にこのスクリプトが読み込まれた状態で自動的に実行されますが、また落ちます。

Windows8.1や10では、意図通りに繰り返し再起動されます。

試したバージョンはFree5.1.2、5.2.2です。

どのように記載すればXPでも意図通り動作しますでしょうか?

No.2355 2016/04/26(Tue) 08:43:12

Re: WindowsXPでのP_UWSC_REEXECの挙動 / dew412
すみません、自己レスですが、どうやらUWSCを置いてあるパスに「Documents and Settings」などのスペースを含んだものがあるとダメなようです。
この場合、どのように記述すればよろしいでしょうか。

No.2356 2016/04/26(Tue) 08:47:58
Selenium.Wrapperと連携したChrome操作の、別タブ操作 / レイン
投稿初めてです。よろしくお願いします。

標題にある通り、Seleniumというモジュール?をUWSCで使用して、Chromeブラウザを操作するプログラムを作成中なのですが、Chrome上で別タブでURLのページを開き、その画面の内容を別途操作したり取得する必要があるのです。
※Javascriptで開いたページ内のHTMLを解析する動きをします。

Chrome起動→最初からあるタブでURLにアクセス→中身のタグを解析→必要なら値取得やページ内のリンクをクリック

というIEでも可能な基本操作は既に出来ているのですが、別タブでもうひとつURLにアクセスし、同時に複数のページ内の要素を解析するという方法がUWSC上で出来るやり方がうまく見つからなくて困っています。。。

もしご経験のある方、もしくはこの関数は試すべき?などのアドバイスがございましたら、是非ご教授くだされば幸いです。

よろしくお願いします。

動作環境: Windows7 (windows updateはサービスパックや.net frameworkなど必要な内容があればインストールします)
Chromeのバージョン:基本自動更新で最新です。
SeleniumWrapperのバージョン:v1.0.23.0

No.2343 2016/04/21(Thu) 18:34:53

Re: Selenium.Wrapperと連携したChrome操作の、別タブ操作 / stuncloud
とりあえず思いついたことだけ書いときます
>※Javascriptで開いたページ内のHTMLを解析する動きをします。
window.openで別タブが開かれるということですかね?
別タブで開かれるページのwindow.nameを調べておいて、予めその名前のwindowをSeleniumで作成しておけば制御下のwindowに対象URLが開かれることになるはずなので、あとは自由に操作できます
(ただ、targetで_blankを指定してるとこの方法ではダメ)

UWSCは関係なくSeleniumの話なので、より多くの情報が必要であればここ以外の適した場所で質問されるほうが良いかと思います

No.2344 2016/04/22(Fri) 10:20:39

Re: Selenium.Wrapperと連携したChrome操作の、別タブ操作 / レイン
そうですね。seleniumによるChromeのオブジェクトを二つ宣言して、それぞれウィンドウを作成すればよいかもしれません。
IEを操作する場合でしたら、私もよくIEのオブジェクトを二つ作成して、それぞれにウィンドウを作成してやりとりさせています。

ただ記述を失念しておりました内容がございまして、開いたURLのページにおいてログイン(セッション発生させる)を
する必要がありまして、別タブで開きたい二つ目のURLのページは、セッションを維持していないと閲覧できないのです。
※都度その二つ目のタブで開きたいページにアクセスすればよいのでは?となるかもしれないのですが、いかんせんその画面を
開くのが遅くて難点な状況でございます。。。内容をテキストでローカルに保存するのも常に情報が切り替わるのであまり効率が上がらず、
悩んでいる次第です。。。

なので、同一ウィンドウで別タブで二つ目のURLにアクセスさせておきたかった次第になります。

もしかしたらChrome終了の命令をしない限り、二つのウィンドウがセッションを共有している場合も
あるかもしれないので試してみます。

Seleniumの英語マニュアルを見たり参考例を探したりしていたのですが、なかなか答えやヒントが見つからなかったので
質問させていただいた次第でございます。
確かに、よりSeleniumに特化した場所に質問してみるべきだったかもしれないですね。。。

ご回答ありがとうございます!

No.2349 2016/04/22(Fri) 15:16:20

Re: Selenium.Wrapperと連携したChrome操作の、別タブ操作 / stuncloud
そうでした、セッションも面倒なんですよね…
>もしかしたらChrome終了の命令をしない限り、二つのウィンドウがセッションを共有している場合もあるかもしれないので試してみます。
うまくいくといいですね!

>Seleniumの英語マニュアルを見たり参考例を探したりしていたのですが、なかなか答えやヒントが見つからなかった
ときどきこういった質問があるのは見つかるんですが、解決策ってないんですよね…
ここしばらくSelenium触ってないので最近のバージョンだったらうまいことサポートしてくれたりしてないかな、なんて淡い期待をしてたりするんですがそうもいかないようですね
ニーズ自体ないわけではないので近い将来どうにかなるとイイナ

No.2351 2016/04/22(Fri) 16:12:30

Re: Selenium.Wrapperと連携したChrome操作の、別タブ操作 / stuncloud
ついさっき職場の同僚がポップアップが処理出来ないというので改めて調べてみたところ…わりと簡単に出来ちゃいました、なんてこったい
Selenium Basicでのサンプルコードをgistに載せておきました

https://gist.github.com/stuncloud/768c2d8a2f3cf1732d34d5cfe155d1a8

SwitchToWindowByTitle()がキモでした
SwitchToWindowByName()というのもあります

No.2353 2016/04/25(Mon) 16:16:00
画像参照 / 嚥
いつも大変重宝し使わせて頂いております。

画像の参照ボタンなのですが、
サイトによっては、画像参照を押したあとに、送信ボタンを押しても反応しなくなってしまう(参照まで自動で動かして、その後手動で送信を押しても)サイトがまれにあり、画像参照をすることができないのですが、参照ボタンの押し方を色々変えたりしても、できない場合があります。
このような場合は、どのように対処したらいいのでしょうか?
申し訳ございませんが、どなたか対処方法を教えていただけないでしょうか?
よろしくおねがいします。

No.2352 2016/04/25(Mon) 02:00:44
ifの条件をandで増やすと動かない? / むーたん
初歩的ですいません。
ifb ○○ and ○○
とandで2つ以上の条件を足すと思った通りの挙動をしないことがあります。
前はこれでいけた記憶があるんですが、書き方が悪いのでしょうか?
ちなみにandではなくorだと追加しても大丈夫だったりしました。

下記では2つとも「発見した」の結果を得たいのですが、case1では発見、case2では見つからないが返ってきます。どう直したらいいのでしょうか?

str="山田君と一緒に焼き肉を食べに行きました。"

//case1
ifb pos("山田",str) then
print "山田を発見"
else
print "見つからない"
endif

//case2
ifb pos("山田",str) and pos("焼き肉",str) then
print "山田と焼き肉を発見"
else
print "見つからない"
endif

No.2345 2016/04/22(Fri) 14:11:03

Re: ifの条件をandで増やすと動かない? / しき
//0<pos("山田",str) のようにする
str="山田君と一緒に焼き肉を食べに行きました。"
ifb 0<pos("山田",str) and 0<pos("焼き肉",str) then
  print "山田と焼き肉を発見"
else
  print "見つからない"
endif


//and はビット演算
str="山田君と一緒に焼き肉を食べに行きました。"
a = pos("山田",str)
b = pos("焼き肉",str)
c = (a and b)
print a   //1 //2進数 0001
print b   //8 //2進数 1000
print c   //0 //2進数 0000


pos()関数は、発見した文字位置を返します
1 と 8 のandをとると、0 になります
ifb の判定は、0は偽、0以外は真 ですので、
"見つからない" となります

参考URL
ビット演算
http://www.eonet.ne.jp/~nao2/c/c_bitsoperation.htm
1)ビットごとの論理積【and】(演算記号 &)

No.2346 2016/04/22(Fri) 15:05:43

Re: ifの条件をandで増やすと動かない? / stuncloud
ifb (pos("山田",str) > 0) and (pos("焼き肉",str) > 0) then

とするのが確実です

posが数値を返すので、それぞれの値の論理積がifで評価されます
なのでたまたまTRUEになる場合もありえます(が、それが期待通りの結果になっているとは限りません)
例: str="山田君と一緒に隣駅へ焼き肉を食べに行きました。"
∵ 1 and 11 = 1

No.2347 2016/04/22(Fri) 15:10:38

Re: ifの条件をandで増やすと動かない? / stuncloud
しきさんとかぶってしまった…
こういうのはうっかりしてるとまったく予期せぬバグの原因になったりするので気をつけましょう!

No.2348 2016/04/22(Fri) 15:13:51

Re: ifの条件をandで増やすと動かない? / むーたん
うおお…
ビット演算なんてものがあったんですね!
今まで(たまたま)上手くいっていたこともあって、完全に盲点でした。
8ビットで1バイトくらいのことは知ってたけれどそれがこんな形で絡んでくるとは…
これを機に色々勉強してみます。
しきさん、stuncloudさん、ありがとうございました!

No.2350 2016/04/22(Fri) 15:56:15
全727件 [ ページ : << 1 ... 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ... 73 >> ]