117268
UWSC 仮 掲示板
投稿時に「証明書が不正です」と出る場合には、JavaScriptをオン
動作不具合での質問の場合には環境を表記(OS,バージョン等)
タイトルは内容を表し、内容はネットゲーム関係禁止
自身でコードを書く気の無いナマケモノは特に質問禁止
失敗作でもコードを投稿すること(具体性の無い質問は無視される可能性大)

UWSC掲示板 が復活することを祈り、それまでの繋ぎとして。
環境設定[s7777777]

UWSCの文字列の結合について / haku
CSVからデータベースへレコードを登録しようとしています。
その際に大量に文字列の結合が必要なのですが、想像していた以上に処理が遅くて困っています。
速度をアップさせる方法がないでしょうか?

No.1550 2023/02/16(Thu) 17:44:34

Re: UWSCの文字列の結合について / stuncloud
要約すると
・CSVから得たデータをDBに書き込む
・文字列結合処理がある
・一連の処理が遅く感じる
・早くしたい
という内容なのでこれだけだと回答は難しいです

処理が遅いのは文字列結合部分だけなのでしょうか?そもそも文字列結合は本当に遅いのでしょうか?
一連の処理の要所要所で実行時間を計測し、遅い部分を突き止めつつそのコードの提示をしてもらうといったことをしていただく必要があるように思います

No.1551 2023/02/16(Thu) 18:42:46
UWSCからsqlite3.dllを使ってDB操作 / トリビア
UWSCからsqlite3のデータベースを扱いたく、exe版を利用していましたが、
DEF_DLLでsqlite3.dllを呼び出し使用する方法を探しています。
こちら方法をご教示いただけないでしょうか。

No.1544 2023/02/11(Sat) 00:02:35

Re: UWSCからsqlite3.dllを使ってDB操作 / stuncloud
C++ですがわかりやすいものがありました
https://seraphy.hatenablog.com/entry/20061031/p1
sqlite3_open16()でDBに接続してsqlite3_exec()でSQLを実行する、という流れのようですね
sqlite3_openだとUTF8ですがsqlite3_open16ならUTF16を使うようです
UWSCであればUTF16のほうが使いやすいと思います (def_dllの際にwstringを使う)

関数の解説は以下から見れます、ちょっと読みにくい…
https://www.sqlite.org/c3ref/funclist.html

def_dll sqlite3_open16(wstring, var dword):int:sqlite3.dll
def_dll sqlite3_exec(dword, wstring, dword, dword, dword):int:sqlite3.dll
でいいのかな?あまり自信ないですがいろいろ試してみてください
・openの第二引数はポインタのポインタなのでここで得られた値(アドレス)の先にある値を取らないとDBハンドルのポインタにならない気がする
 ・{var dword} でなんとかならんか?RtlCopyMemoryするのが無難か
・dwordのとこにNULLを入れる場合はNULLではなく0でいいです

No.1545 2023/02/11(Sat) 01:37:25

Re: UWSCからsqlite3.dllを使ってDB操作 / トリビア
stuncloudさん
ご教示ありがとうございます。
いただいた情報をもとに少し試行錯誤してみます!
またご報告いたします

No.1546 2023/02/11(Sat) 11:42:08

Re: UWSCからsqlite3.dllを使ってDB操作 / stuncloud
sqlite3_open16の第二引数、ポインタのポインタについて補足します

まず、var dwordとしてポインタを32ビット整数として受けます
ポインタなので受けた値が示すのはメモリ上のアドレスとなります
このアドレス上にある値がsqliteのハンドルのポインタです (sqlite3_execに渡す値)
あるアドレスが示す先にある値を任意の型で得るための関数が以下になります

def_dll RtlMoveMemory(var dword, dword, dword):kernel32

第一引数で得たい値を受けます、ポインタなので型をdwordとします

コード例は以下の通りです (コードの検証はしていないためこの通りに動かない可能性があります)

ppdb = 0
sqlite3_open16(filename, ppdb) // ハンドルのポインタのポインタをppdb変数で受ける

// ハンドルのポインタを受ける変数
pdb = 0
RtlMoveMemory(pdb, ppdb, 4) // ppdbが示すアドレスにあるデータをdword型としてpdbに受ける


sqlite3_exec(pdb, sql)

No.1547 2023/02/11(Sat) 12:46:43

Re: UWSCからsqlite3.dllを使ってDB操作 / トリビア
詳細な解説をいただき、ありがとうございます。
引き続き下記ですが操作が出来ないので試行錯誤してみます!


def_dll sqlite3_open16(wstring, var dword):int:sqlite3.dll
def_dll sqlite3_exec(dword, wstring, dword, dword, dword):int:sqlite3.dll
def_dll sqlite3_close(wstring):int:sqlite3.dll
def_dll RtlMoveMemory(var dword, dword, dword):kernel32

ppdb=0
sqlite3_open16("sample1.db",ppdb)

pdb=0
RtlMoveMemory(pdb, ppdb, 4)

sqlite3_exec(pdb, "create table Data(id, name);")
sqlite3_exec(pdb, "insert into Data(id, name) values (1,2);")
sqlite3_close(pdb)

No.1548 2023/02/11(Sat) 13:37:49

Re: UWSCからsqlite3.dllを使ってDB操作 / トリビア
色々と教えていただきましたが、下記で操作できるようになりましたので、
ご報告いたします。ありがとうございました。

def_dll sqlite3_open16(wstring, var dword):int:sqlite3.dll
def_dll sqlite3_exec(dword, dword, dword, dword, dword):int:sqlite3.dll
def_dll sqlite3_close(dword):int:sqlite3.dll
def_dll RtlMoveMemory(var dword, var dword, dword):kernel32

ppdb=0
ret=sqlite3_open16("sample1.db",ppdb);

pdb=0
RtlMoveMemory(pdb, ppdb, 4)

ret=sqlite3_exec(pdb, "create table Data(id, name);",0,0,0)
ret=sqlite3_exec(pdb, "insert into Data(id, name) values (1,2);",0,0,0)
ret=sqlite3_close(pdb);

No.1549 2023/02/12(Sun) 21:03:55
Selenium edge の再接続について / みつ
どうしてもフレーム操作が必要 (おそらくIEモードがサポートされる2029年頃まで) な為、
Selenium egdeへの再接続が以下で問題ないかご教授をお願いできないでしょうか。

左画面と右に上下2画面の3画面に分かれており、右上で入力検索を行い、右下の結果を取得するを繰り返すので
別画面を開いて対応できません(知識不足かもしれませんが)。

UwscWebDriver の SwitchFrame() で対応したかったのですが、最新のUwscWebDriverでも動きませんでした。
VBAでは動くことを確認できましたが、UWSCで動かしたいです。


edgeバージョン:109.0.1518.70 (公式ビルド) (64 ビット)
edgedriver バージョン:109.0.1518.70 
SeleniumBasicフォルダに msedgedriver.exe では動かなかった為、edgedriver.exe に名称を変更したらVBAでは動きました。現在はedgedriver.exeにしてあります。

前準備
"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" --remote-debugging-port=9222 --user-data-dir="C:\Users\Temp_ForEdge"
をbatファイルに記載し起動


driver = CreateOleObj("Selenium.WebDriver")
//driver.SetCapability "ms:edgeOptions", "{""debuggerAddress"":""127.0.0.1:9222""}" ←VBAではこれで再接続できます
driver.SetCapability("ms:edgeOptions", "{<#DBL><#DBL>debuggerAddress<#DBL><#DBL>:<#DBL><#DBL>127.0.0.1:9222<#DBL><#DBL>}") ← UWSCではここでCOM_Errorとなってしまいます。
driver.Start("Edge")
driver.Get("http://www3.rocketbbs.com/601/siromasa.html")

よろしくお願い致します。

No.1541 2023/02/02(Thu) 14:10:44

Re: Selenium edge の再接続について / stuncloud
> <#DBL><#DBL>
<#DBL>一個でいいんじゃないでしょうか
VBAは"を"でエスケープしてますが、UWSCではそこは不要なので

No.1542 2023/02/02(Thu) 14:53:47

Re: Selenium edge の再接続について / みつ
stuncloud 様

毎度的確なご回答ありがとうございます。
ばっちり動きました。
これで何とか動かせそうです。


>VBAは"を"でエスケープしてますが、UWSCではそこは不要なので

知識不足でした。
勉強になります。

またよろしくお願い致します。

No.1543 2023/02/02(Thu) 18:07:40
Funcionの参照渡しから参照戻りについて / haku
下記にて受け取りができずに困っています。
ご助言よろしくお願いします。

HASHTBL Dic1 =HASH_SORT


Dic1 = Test(Dic1)
↑↑↑↑↑↑↑

Function Test(Var Dic)
Dic = HASH_REMOVEALL 
Result = Dic
FEND

No.1538 2023/01/24(Tue) 10:26:37

Re: Funcionの参照渡しから参照戻りについて / stuncloud
問題点は2つあります

> Function Test(Var Dic)

連想配列を受けるのであれば引数名に[]を付ける必要があります

Function Test(Var Dic[])

> Result = Dic

UWSCのユーザー定義関数は配列及び連想配列を戻り値として返す事ができません
参照渡しにより引数として渡した変数が書き換えられるので、ここでは戻り値も不要でしょう

procedure Test(var Dic[])
 Dic = HASH_REMOVEALL
fend

実行例は以下のようになります

HASHTBL Dic1 =HASH_SORT
// 要素を10個追加
for i = 0 to 9
 Dic1[i] = i
next

print length(Dic1) // 10
Test(Dic1)
print length(Dic1) // 0 (Test関数内でDic1の全要素が削除された)

No.1539 2023/01/24(Tue) 11:51:33

Re: Funcionの参照渡しから参照戻りについて / haku
ご助言に感謝しつつコードを修正します。
No.1540 2023/01/24(Tue) 14:10:44
既に開いている複数のEXCELをコントロールしたい / haku
既に開いている複数のEXCELをコントロールしたい。
EXCELを開いた数だけComを取得したいのですが、方法はありませんか?
For I = 0 to 100
COM_ERR_IGN
Dim EXCEL = GETACTIVEOLEOBJ("Excel.Application","",I)
print EXCEL
COM_ERR_RET
next

このように回してみても、最初の1つ目のComは取得できるのですが、2番目以降が取得できません。

ご助言よろしくお願いします。

No.1537 2023/01/07(Sat) 11:16:34
XLOPENでうまくエクセルが立ち上がらない。 / sen
いつもお世話になっております。
下記のようにしてエクセルを立ち上げて使用しています。

あるときから、家のパソコンではうまくいくのですが、会社のパソコンでは、
エクセルがうまく立ち上がらなかったり、ファイル表示がうまくされなくて実行できなくなりました。
一度、ファイルを立ち上げてから、保存して閉じてから実行するとうまくいくときもあります。

自分で作成して自分で動かしている別のUWSCのプログラムでうまくエクセルが閉じていないのが
原因だと思ったりもするのですが、原因を掴めません。
何かヒントになるようなものがあれば、ご教授ください。
よろしくお願い申し上げます。

※手がかりになるようなものがなくて済みません。

dim ファイル=input("ピッキング済リスト")
Excel = XLOPEN(ファイル)

No.1533 2022/10/03(Mon) 22:34:41

Re: XLOPENでうまくエクセルが立ち上がらない。 / リキュール
会社のパソコンはuwscのPro版が入っていますが?

XLOPENのファイル名にpath名、拡張子を記載したら?

No.1535 2022/10/17(Mon) 08:18:00

Re: XLOPENでうまくエクセルが立ち上がらない。 / sen
リキュール様、ありがとうございます。
色々と調べていて、エクセルの自動保存が駄目なのではないかと気付きました。

No.1536 2022/11/13(Sun) 09:52:08
別フォルダからのファイル名変更がうまくできません。 / みみ
別フォルダからのファイル名変更がうまくできません。

ren ああ.txt Sangonomiy.txt

UWSCで上記の文をBATファイルに記述し、起動しているのですがファイル名が変更されません。手動でBATファイルを起動するか、操作する.uwsファイルが同じフォルダにある場合は正しく実行されます。
どうも別のフォルダからだと操作できないようです。
起動するときにコマンプロンプトが一瞬表示されるので、BATファイルのパスが間違っているということはありません。DOSコマンドも試してみたのですが、同じような結果になりました。


CMD = "CD " + "C:\a"
DOSCMD("a.bat")
このような方法でカレントディレクトリを移動してから起動してもうまくいきませんでした。どうすればいいでしょうか。大量のフォルダを操作するため手動というわけにはいきません。

No.1534 2022/10/16(Sun) 19:03:42
UWSCを管理者として実行しているかチェック / みく
UWSCを管理者として実行しているかチェックすることはできるでしょうか。
No.1531 2022/09/15(Thu) 00:31:29

Re: UWSCを管理者として実行しているかチェック / stuncloud
def_dll IsUserAnAdmin():bool:shell32.dll

if IsUserAnAdmin() then
 print "管理者として実行されています"
else
 print "管理者として実行されていません"
endif

No.1532 2022/09/17(Sat) 04:08:27
Zipファイルの展開に失敗しました。 / DONQ
Edge用のWebDriverをダウンロードしようとすると
”Zipファイルの展開に失敗しました。”とエラーメッセージが出ます。
ブラウザ操作をするには手動でZIPファイルを解凍しなくてはいけません。
これは本来はZipファイルの解凍まで行ってくれるのでしょうか?

No.1527 2022/09/05(Mon) 14:51:11

Re: Zipファイルの展開に失敗しました。 / stuncloud
> これは本来はZipファイルの解凍まで行ってくれるのでしょうか?
はい

No.1528 2022/09/05(Mon) 23:15:25

Re: Zipファイルの展開に失敗しました。 / DONQ

msedgedriver.exeがフォルダにあるときはダウンロードしたバージョンのポップアップが出て成功した感じに見えるのですが、msedgedriver.exeがフォルダに無いときは”Zipファイルの展開に失敗しました。”と表示され解凍失敗します。

これはmsedgedriver.exeが上書きされているのでしょうか?
msedgedriver.exeが存在していないときには解凍失敗しているようなので、存在している時にも失敗しているのではないかと不安です。

また、回答に失敗する原因は何かありますでしょうか。必要な解凍ソフトが入っていないなどがあれば教えていただけますと幸いです。

No.1529 2022/09/07(Wed) 09:40:08

Re: Zipファイルの展開に失敗しました。 / stuncloud
質問はこちらで受け付けています
https://github.com/stuncloud/UwscWebDriver/issues/

No.1530 2022/09/07(Wed) 11:50:20
By.Attributeで指定したセレクタの隣接したタグを処理したい。 / Seti
UWSCWebDriverを使用しています。
チェックボックスになっている<input>をValue値を見てチェックするしないを選択したいです。
ただ、このサイトの仕様なのか<input>ではなくその直後の<SPAN>をクリックしないと反応しません。


次の記述ではチェックボックスをチェックできません。
driver.FindElement( By.Tag("input") + By.Attribute("type", "checkbox")+ By.Attribute("name", "checkbox")+ By.Attribute("value", 10000000_n) ).Click() 


ブラウザのデベロッパーツールでセレクターをコピーした下記の記述ならチェックできるのですがValue値を参照したいのでこれでは使えません。
driver.FindElement("#main-content > span > label > span").Click()


Valueを参照する以上はBy.Attributeを使うしかないと考えているのですが、By.Attributeを使って指定したセレクタの、その隣接タグや子要素タグを指定することはできるのでしょうか?




【HTML】

<span class="app-sps-checkbox">
<label>
<input type="checkbox" name="checkbox" value="10000000_n">
<span class="app-sps-checkbox__square"><span></span></span>
</label>
</span>

<span class="app-sps-checkbox">
<label>
<input type="checkbox" name="checkbox" value="10000001_n">
<span class="app-sps-checkbox__square"><span></span></span>
</label>
</span>

<span class="app-sps-checkbox">
<label>
<input type="checkbox" name="checkbox" value="10000002_n">
<span class="app-sps-checkbox__square"><span></span></span>
</label>
</span>

※Valueの値はランダム

No.1524 2022/08/20(Sat) 16:01:27

Re: By.Attributeで指定したセレクタの隣接したタグを処理したい。 / Seti
すみません、自己解決しました。下記でうまくいきました。

driver.FindElement( By.Tag("input") + By.Attribute("type", "checkbox")+ By.Attribute("name", "checkbox")+ By.Attribute("value", 10000000_n) + "+span").Click()

No.1525 2022/08/22(Mon) 17:35:50

Re: By.Attributeで指定したセレクタの隣接したタグを処理したい。 / stuncloud
// 0.10.1 より以下のように記述できます

builder = SelectorBuilder.New()
selector = builder.Tag("input")_
         .Attribute("type", "checkbox")_
         .Attribute("value", "10000000_n")_
         .NextSibling()_
         .Tag("span")_
         .Build()

print selector // input[type="checkbox"][value="10000000_n"] + span
element = driver.FindElement(selector)

No.1526 2022/08/23(Tue) 12:00:17

以下のフォームに記事No.と投稿時のパスワードを入力すれば
投稿後に記事の編集や削除が行えます。
200/200件 [ ページ : << 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 20 >> ]

- HOME - お知らせ(3/8) - 記事検索 - 携帯用URL - フィード - ヘルプ - メール - 環境設定 -

- Skin: Modern v2.0 - Author: ロケットBBS -

Rocket Board Type-X (Free) Rocket BBS