トップページtech
1001コメント360KB

VBScriptについて必死に話し合うスレ

■ このスレッドは過去ログ倉庫に格納されています
0001邪神名無し君2009/05/12(火) 22:49:40
VBScriptについて必死に話し合ってください

VBS以外はスルーの方向で(・∀・)

※質問スレではありません、質問は最低限し抑えましょう※

0232デフォルトの名無しさん2012/05/25(金) 00:44:21.47
よく世話になるブログがいくつかあるけどな
ブログの良し悪しが分からんのか?
0233デフォルトの名無しさん2012/05/25(金) 00:49:38.90
ソースがブログだと何なんだ? … あほか
0234デフォルトの名無しさん2012/05/25(金) 01:06:02.71
>>231
馬鹿晒しage
0235デフォルトの名無しさん2012/05/25(金) 01:19:38.73
馬鹿晒しage … あほか
0236デフォルトの名無しさん2012/05/25(金) 01:33:26.44
> ところでソースがブログだと何なんだ?あほか?
底なしのアホですね かわいそうに
0237デフォルトの名無しさん2012/05/25(金) 10:16:58.19
お前馬鹿って良くいわれるだろ。
0238デフォルトの名無しさん2012/05/25(金) 11:03:29.03
お前馬鹿ってよく言われるだろ。
0239デフォルトの名無しさん2012/05/25(金) 11:22:42.60
ソースにブログのURLを貼って馬鹿にされると「基本常識」連呼。
ついには「ソースがブログだと何なんだ?」と開き直り。

これはないわ。
0240デフォルトの名無しさん2012/05/25(金) 11:26:36.48
お前馬鹿って良くいわれるだろ。
0241デフォルトの名無しさん2012/05/25(金) 11:30:18.10
お前基本常識がないってよく言われるだろ。
0242デフォルトの名無しさん2012/05/25(金) 11:30:26.55
ついにコピペに走ったか…
これ以上何を言っても馬鹿を晒すだけだと気付いたか。
0243デフォルトの名無しさん2012/05/25(金) 11:52:55.76
ブログでも読んで日本語勉強しろよ
0244デフォルトの名無しさん2012/05/25(金) 12:00:51.09
>>243
>>214
0245デフォルトの名無しさん2012/05/25(金) 13:15:44.96
お前、馬鹿と岩猿追えない、とか、思ってんだろ?
0246デフォルトの名無しさん2012/05/25(金) 13:18:57.46
>>208
なかなか良さそうなサイトなのでサイト検索でブックマークしときました
0247デフォルトの名無しさん2012/05/25(金) 18:48:29.85
ウサギ美味しい とか思ってんだろ?
0248デフォルトの名無しさん2012/05/26(土) 16:48:16.39
こいつらは必死に話し合っていてスレタイをよく理解しているようだが肝心の部分が読み抜けてる。
0249デフォルトの名無しさん2012/05/26(土) 17:56:46.74
こいつ等は必死に話し合って居てスレタイを良く理解して居る様だが肝心の部分が読み抜けてる。
0250デフォルトの名無しさん2012/05/26(土) 19:06:25.89
>>245
お前は朝鮮人か。
読点の位置が間違ってるぞ。
岡崎洋三 『日本語とテンの打ち方』 を読め。
0251デフォルトの名無しさん2012/05/26(土) 19:41:29.92
そこに間違いと書いてあるのか?そんなバカな
0252デフォルトの名無しさん2012/05/27(日) 15:11:11.18
>>250
岡崎洋三 『日本語とテンの打ち方』 を良く読め。
0253デフォルトの名無しさん2012/05/27(日) 17:23:00.89
コピペにマジレスしてる馬鹿は何なの?
0254デフォルトの名無しさん2012/05/28(月) 03:24:19.85
岡崎洋三 『日本語とテンの打ち方』 を良く読め。… あほか
0255デフォルトの名無しさん2012/05/28(月) 15:56:03.05
岡崎洋三 『日本語とテンの打ち方』 を良く読め。… あほか … あほか
0256デフォルトの名無しさん2012/05/29(火) 11:47:06.99
>>252
だっせー
0257デフォルトの名無しさん2012/06/10(日) 17:06:10.77
0258デフォルトの名無しさん2012/06/21(木) 01:03:13.68
vbsからsqlを発行するプログラムを作ってます。
この時sqlの「in( )句」にvbs内で可変長に作成する文字列変数を
渡して検索することってできるでしょうか?

変数a = "'11','12','13',・・・" ←個数は可変

・・・
where colum in( 変数a )

↑こんな感じです

昔C#で似たようなことしようとしたんですけど、エラーだかでできませんでした。
確かカンマも文字列で認識されるから?とかだった気が。。。

0259デフォルトの名無しさん2012/06/21(木) 01:03:47.94
あげわすれ
0260デフォルトの名無しさん2012/06/21(木) 01:06:45.09
>>258
SQLを発行していると言うことは、最終的に文字列にしていると言うことだろ。
だったら、エスケープするなどの工夫は必要かもしれんができないわけはないな。
0261デフォルトの名無しさん2012/06/21(木) 10:15:56.32
>>258
データベースによっては数が多すぎるとエラーになるな
0262デフォルトの名無しさん2012/06/21(木) 20:16:32.84
>>260,>>261
ありがとうございます。個数的には少ないのでやってみます!
0263デフォルトの名無しさん2012/07/26(木) 23:23:18.48
VBScript歴3ヶ月のおいらが必死にレスしたいのだが良いか?
0264デフォルトの名無しさん2012/07/27(金) 11:30:01.72
是非
0265デフォルトの名無しさん2012/07/27(金) 22:46:23.92
ありがとう…では…。
VBScript は「出来るようで出来ない子」という話から。

Visual Basic for Script Editon の意味を最初はあまり理解できなかったのだが、
Wn32API を呼べない、OLE オートメーションを呼べてもそのプロセスIDすら取れない、ことに気付いてからの理解は早かった。

VBScript はバッチファイルの置き換えを意図したものに他ならず、
1. 定型的なバッチ処理
2. 対話的なバッチ処理
以上のことをやろうとするとべらぼうにハードルが上がる。
基本的にリアルタイムイベント処理が不可なのである。

WMI や .NET のクラスを VBScript から使おうとすると感じる疎外感はすさまじい。
非同期処理を求められるクラスのインスタンスがことごとく使えない。
System.IO.FileSystemWacther さえ使わせてくれない。
これはこのクラスに COM インターフェイスが無いからであるが、にしても冷遇過ぎる。

ていうか __InstanceOperationEvent クラスがどの程度 VBScript から使えるのかという情報すら無い。
調査中だが、キーボードやマウスからの入力イベントは多分キャプチャできない。という予感がしている。
0266デフォルトの名無しさん2012/07/27(金) 22:50:52.66
IE オブジェクトの OnUnload イベントに GetRef で関数を代入して、
IE オブジェクト変数に Quit させてを IE プロセスを破棄する時にキーイベントを取るとかいう…。

そんな不毛なことしかできないのかよこれ…。
ていうか、できないよな…調べたけど…。

絶望した!VBScript に絶望した!!
0267デフォルトの名無しさん2012/07/27(金) 23:02:56.64
>>5
JavaScript の方が良くできてるからに決まっている。理解しろ。

>>6
IDE があったらあったでこまる。
そんな大規模なものを VBScript で書かれたらメンテする方が迷惑する。
書籍にロクなものが無いのは完全同意。
手に入る本が

Windows自動処理のためのWSHプログラミングガイド
http://www.amazon.co.jp/Windows%E8%87%AA%E5%8B%95%E5%87%A6%E7%90%86%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AEWSH%E3%83%97%E3%83%AD
%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%82%AC%E3%82%A4%E3%83%89-%E4%BA%94%E5%8D%81%E5%B5%90-%E8%B2%B4%E4%B9%8B/dp/4883376583

しかなかったのだが本当に酷かった。安易に買って反省した。
そこで@ITの

チェック式 WSH入門
―― 演習方式で身につけるWSH超入門 ――
http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh01/cformwsh01_01.html

で勉強し直した。クラス定義までは行かないものの、この連載は良く分かった。
全部印刷して今でも持っている。

>>7
それは知らなかった。今度落としてみよう。
試用してみるわ。
0268デフォルトの名無しさん2012/07/27(金) 23:24:48.76
>>9
PowerShell のコマンドレットから OS やアプリの機能を呼ぶ、という点においては変わりなくない?
俺は PowerShell 良く知らないから聞くのだけど。

>>10-14
流れの通りで。
以下、流れの通りには返さない。

>>15
逆に考えるんだ、バッチスクリプトでやらされるよりはマシだと考えるんだ。

>>24
逆に eval 出来ないスクリプト言語の方が珍しい。
あるサイトで「VBScript には eval が無い」とか書かれてて、慌ててリファレンスで Eval 関数探したわ。
あってホッとした。

>>25
意味不明。

>>27
面白そうだが評価が真っ二つだな…。安いから買ってみるか…。
0269デフォルトの名無しさん2012/07/27(金) 23:25:52.80
>>28-29
少なくとも、2012年段階では C#より普及してないと思う。
「Windows にあらねば OS にあらず」というようなある種の開き直りが見て取れるから。
C# は mono でコンパイルして JIT 抜きの VM 込みで配布すれば iPhone でもイケるらしいし。

>>30-31
個人的には HTA には全く未来が無いと思うのでやらない方がいいと進言する。
セキュリティに穴を開けまくって実現している機能なので、予告なしに消える可能性が高い。

>>32
俺は一般ユーザー権限で動くものしか作らないという信条なのでその辺は知らん

>>33
何故だか Byte Array に変換しないといかんらしいが、ヘッダはいくらでも作れる。

今日はこんなところで。とりあえず必死に語ってみた。
0270デフォルトの名無しさん2012/07/27(金) 23:38:34.38
まだそのレベルか
まあ今が一番面白いというかハマる時期なんだろうな
0271デフォルトの名無しさん2012/07/27(金) 23:43:34.56
書こうと思って書き忘れてた。

俺の調査によると、Long 型で表現できる以上の数を Mod しようとするとオーバーフローする。
Currency 型に強制キャストしても無駄だった。
色々調べたが、日本語、および英語サイトのどこにも情報を見つけることができなかった。

Project Euler の問題を解いていてつまづいたんだが…。
何でこんな基本的な情報がどこにも無いんだ?

つうか WMI を調べてると「WMI Fun」とかいうゴミサイトがノイズになってイライラする。
wbemtest やら WMI Code Creator やらが吐くテストコードを転載しているだけのくせに。

絶望した!Scripting Guys が
「自分たちもこれらのクラスをどれくらい使えるのかわからない」
と言ってる時点で絶望した!!

どんだけ C++/C# 優遇なんだよ?

余談だが、
一応IT関係の仕事してますブログ
http://teruterublog0700.seesaa.net/
も相当ノイズになって腹が立つ。
「○○さんのブログの手順でやってみました」
「できました!」
だけのゴミブログ。
条件が少し変化しただけでものすごく苦労させられる課題に関してもこの調子だからムカつく。
0272デフォルトの名無しさん2012/07/27(金) 23:45:24.35
>>270
VBScript でどこまで行けるのか教えてほしい。

今日は本当にこんなところで。
0273デフォルトの名無しさん2012/07/29(日) 15:37:38.01
> 俺の調査によると、Long 型で表現できる以上の数を Mod しようとするとオーバーフローする。
これはネットに情報があった。
恐らく、ヘルプでの調査とネットでの調査を混同していた。
お詫びして訂正する。
0274デフォルトの名無しさん2012/07/29(日) 15:48:35.53
今日のお題は、
「OLE オートメーションのメソッド呼び出しにカッコが要ったり要らなかったりするのが気持ち悪い」
ということ。

VBScript を書き始めて3ヶ月、自分なりのスタイルを構築してきた。例えば、
1. 式はカッコでくくる(For 分は除く)
2. Wihie 〜 Wend は使わない。Until もできるだけ使わない。
3. Not 演算子はできるだけ使わない。<>演算子を使う。
等である。
優先順位は 1. > 2. > 3. だ。

何故 1. > 3. > 2. ではないかというと、Not 演算子の位置が気持ち悪すぎるから。
0275デフォルトの名無しさん2012/07/29(日) 15:51:17.80
普通は
If (objHoge Is Not Nothing) Then
と書きたい。しかし、
If (Not objHoge Is Nothing) Then
と書かなくてはならないのは苦痛だ。できれば
If (Not(objHoge Is Nothing)) Then
と書きたいがカッコがややこしくて別な意味で不細工になる。

まぁでもこいうのには慣れた。
0276デフォルトの名無しさん2012/07/29(日) 15:56:33.31
なんか前回より話題のレベル落ちたなw
完全に初歩的な勘違いの領域になっちまった
0277デフォルトの名無しさん2012/07/29(日) 15:57:18.86
さて本題である。

1. カッコを付けて怒られるパターン
 a) 引数が1個の場合はすんなり動く
 b) 省略可能な引数を省略せずに書くと「Subプロシージャーは…」というエラーが出る。
2. カッコを付けないと怒られるパターン
 「行の終わりが不正です」と怒られる。

ちなみにこれらには規則性が全く無い。
同じ OLE オートメーションのメソッド間でも統一性が無い。

一応、「カッコを付けないで書いて、怒られたら付ける」というマイルールを作ったのだが、
何故こんなことが起こるのかが分からない。
0278デフォルトの名無しさん2012/07/29(日) 16:00:13.28
>>276
どこを勘違いしているのかを教えてくれれば助かる。
C系で育ったので、VB系の構文は慣れるまで非常に苦痛だった。
0279デフォルトの名無しさん2012/07/29(日) 16:34:21.19
引数付きコンストラクタが書けないとか、
クラスメソッドやクラス変数が使えないとか、
そういうのは Cっぽく名前空間で逃げれば何とかなる。

言語単体では標準入出力すらできないくらい OLEオートメーションに頼った設計のくせに、
頼みのそいつらを VBScript からどれくらい操れるのかという情報が、大抵の場合、ない。
MSDN を見ても C++、C#、VB しか相手にしてませんのよ、ごめんあさぁせ、と言われているような錯覚に陥る。

結果、メソッドをチマチマ叩いてみるしかない。(引数の型で予想できる場合もあるにはある)
IE オブジェクトの ClientToWindow メソッドは VBScript からは使えない。
Visible = False な IE オブジェクトに仕込んだ JavaScript にお願いして…ってしなきゃいけないの?
WMI は多分単に解像度を返してくるだけだし、ツールバーを考慮に入れた描画領域を得るのにまた調べものか…。
ていうか、何かやろうとする度に延々調べて不毛なテクニックを得なければならないなんて…。

パトラッシュ、僕疲れちゃったよ
0280デフォルトの名無しさん2012/07/29(日) 16:50:20.32
最近 PowerShell や C#、.NET がおいでおいでをしている。
確かに、COM や .NET の世界の入口を探訪できた経験は貴重だったが、
思い切って行っちゃおうか…

来年、つまり Windows XP のサポートが切れる1年前に行こうかと思っていたのだが…。
何で MS は Microsoft Update で強制的に XP に PowerShell や .NetFramework を入れないんだろう。

絶望した!これらをオプションインストール扱いにする MS に絶望した!!
0281デフォルトの名無しさん2012/07/29(日) 17:05:22.06
きっとバカなんだね
所謂、勉強の出来るバカ、テストの点数は良いバカ

アレも出来ない、コレも出来ないと扱き下ろしだけは一人前だが
自分が間違っていて規則性のあるエラーが出ても規則性に気付けず統一性が無いとか言っちゃって
自分の書いた論理式の論理的におかしい部分にも気付けない

一つ覚えたら凝り固まっちゃって、仕様の違いも調べず、「これで出来るはず」という勘違いを押し通して
それでエラーが出たら、貧弱だ不適切だと自分の無能を棚上げして言語を批難する

君には、臨機応変に多数の言語や実効環境を使いこなすのは無理だ
0282デフォルトの名無しさん2012/07/29(日) 17:07:15.30
>>35
署名の有無で挙動が変化するかは分からないが、2012現在、メーラで普通に弾かれる。

>>36
有名な解法を。
objIE.Navigate "about:blank"
With objIE
.Document.Body.InnerText = "クリップボードに入れたい文字列"
.execWB 17, 0
.execWB 12, 0
.Quit
End With

>>39
その Image が指す URL の画像ファイルを直に取ってきて保存すればいいんじゃない?
MSXML2.HTTP で取ってきてエンコードしてバイナリストリームに変換して保存。

HTA 関係はパス。
0283デフォルトの名無しさん2012/07/29(日) 17:16:56.89
>>281
言語そのものは批判してないんだけど?
「一定の逃げ方、書き方」を確立すればいいし、それでも無理ならそこが言語としての限界でしょ。

COM の呼び出しメソッドに関しては、「何故そうなるのかが分からない」と言っている。
恐らく COM 側のインターフェイスの都合なのだろうが、どの資料を見れば分かるのか?
調べたつもりだが本当に分からん。

> 自分の書いた論理式の論理的におかしい部分にも気付けない
Not のことか?Not "ブール式" という仕様なのは理解してるし、VBScript を使うなら納得するしかないし、
でも個人的にはなるべく使いたくないから使わない記法をマイルール化というだけの話。
SQL は IS NOT と書くからね。
0284デフォルトの名無しさん2012/07/29(日) 17:24:55.91
というか「絶望した!」というフレーズを本気にしたら駄目だよ。
さよなら絶望先生のセリフだから。

今日はこのへんで。
0285デフォルトの名無しさん2012/07/29(日) 17:33:52.64
あ、そうそう、このスレでの自分はかなり縛りをキツくしてレスしている。
・VBScript から使えるものしか使わない。
・一般ユーザー権限で使えるものしか使わない(管理スクリプトは例外)。
・Windows XP の最小構成でやれることの限界を目指す(だから Excel 経由で〜や、.NET のクラス経由で〜も無し)
VBScript は 周りの助けを借りて動く言語なので、構成と権限を最小にした環境を「言語環境」だと思っている。
0286デフォルトの名無しさん2012/07/29(日) 17:42:05.49
言い訳ばっかり
ダメだこの子
0287デフォルトの名無しさん2012/07/30(月) 19:33:36.52
さて、可愛そうな >>286 を放置して我々は先へ進もう。
何故なら、>>286 に VBScript を食わせても多分、というより確実に動かないからだ。
つまり >>286 の価値は VBScript より下である。我々にとっては Err.Description の方がよほど有用なのである。

今日のお題は「VBScript の良いところ」である。
1. Windows2000 以上だったら(ほぼ)確実に動く。追加インストールは不要
2. OLE オートメーションが呼べる
3. 古式ゆかしい BASIC に慣れた人々にも優しい
… 3. はかなり無理をしている。

でだ。>>281 の人はものすごく勘違いしているのだが、1. のメリットが無ければ VBScript の魅力の 80% は失われる。
自分の書き方が悪かったのかもしれないが、C系で育った、というのは自分的には UNIX 的思想で育った、という意味もある。
(主に中括弧文化という意味で)
Perl も PHP も AWK も bash もイケるんだが(Ruby と Python は書けない)、最小を想定すると Perl と PHP は外さざるを得ない。
Emacs しか使えないと客先に vim しかないと窮するから使えた方がいい、というのと似ている。
0288デフォルトの名無しさん2012/07/30(月) 19:44:25.61
「どの環境でも動く」というのは美しい。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
これを忘れた輩が昨今多いのは嘆かわしいことであるが、実は Win 厨に多いのも事実である。
VB で納品されたアプリが正直に「With ステートメントでエラーが出ました」て吐くか普通?いや普通ではない。

COBOL が分かる人間は減ったが相変わらずメインフレームで動いているので、育児がひと段落した元コボラーの主婦でも雇う流れはまだある。
とは言え元コボラーで現C使い、てな人間は目が腐るようなコードを書いてくる。
見たくもないがオブジェクト指向COBOLなんてものもあるらしい。

これからはラムダ式や匿名関数、匿名オブジェクトバリバリの時代が来るのは、まぁ、分かっている。
C# の進化っぷりを見れば予想はつく。
0289デフォルトの名無しさん2012/07/30(月) 19:56:11.89
ならば VBScript を踏み台にして Windows の底なしに暗く、深い闇に眼を投じてみようではないか。
自分は WScript.Shell クラスにはほとんど興味が無い。多分10分で使えるようになるから。だから執拗に COM に執着してきた。

普通のテキストバッチ処理は普通にバッチスクリプトで普通に出来ることが多い。
仕事上でのテキスト処理はほぼ Perl でやっているが、配布するとなるとまず使わないし、使えない。
そのような理由で Win に関わるようになって VBScript に興味を持ったのだが。まぁそれも終わりだ。

あらかじめ絶望していた!VB系の連中のレベルの低さに絶望していた!!
予想斜め45°下の低さっぷり!ありがとうございました!!
0290デフォルトの名無しさん2012/07/30(月) 19:59:42.14
遺体、板杉
0291デフォルトの名無しさん2012/07/30(月) 21:49:06.41
何がどのように痛いのかを指し示すことができなければお前が最上に痛い。
VB系の自称プログラマの底辺っぷりをさらすのみ。

きちんと反論しろよオラ?
0292デフォルトの名無しさん2012/07/30(月) 21:55:49.87
ちなみに >>281 の人間が言う「論理式」という言葉は BASIC 系以外ではまず出てこない。
C や Perl でも同等の表現はできるが、「論理式」という表現はまずしない。
「ブール式」もしくは「ブール型を返す式」としか言わない。

というところで「すら」底辺っぷりを晒すお前ら。
生きてて恥ずかしくないか?
0293デフォルトの名無しさん2012/07/30(月) 22:04:16.96
というところで、
「VBScript がスクリプト言語として負わされた悲しみというべきもの」
言うなれば、
「遊びで付き合った女に中出ししてできちゃった結婚したものの、嫁が過去のトラウマを背負った○○だった」
そういう悲劇めいた喜劇に踊らされている者達よ。

VBScript に罪はないが、お前らのスキルの低さは万死に値する。

今夜はこんなところで。
0294デフォルトの名無しさん2012/07/30(月) 23:38:59.13
今夜はってまた来るのかよ。
大好きじゃん。
0295デフォルトの名無しさん2012/07/31(火) 00:39:30.67
感想を書きたいのか
VBScriptユーザを貶めたいのか
>>263の目的がわからなくなってきた
0296デフォルトの名無しさん2012/07/31(火) 01:28:54.30
>>295
自慰行為。
0297デフォルトの名無しさん2012/07/31(火) 11:40:59.91
>>292
フレーズ検索の使い方わかる?
"論理式" "C言語" 約 11,300 件
"論理式" 約 185,000 件
"ブール式" 12,300 件

論理式 ブール代数 ブール値 がごっちゃになってるんじゃないか?

まあ、ここはおまえの日記帳だから好きなだけ吠えて行けよ。
ここで恥をかいたってリアルの知り合いにバレるわけじゃないし、君が生きてることを恥じる必要はないよ。
0298デフォルトの名無しさん2012/07/31(火) 22:23:49.02
さて、今日のお題は「さようなら、Sub プロシージャ」。
ちなみに、自分に対する罵詈雑言があるだろうから無視して書く。

その前に、Call ステートメントという意味不明なステートメントを呼ばないと Function が Sub 扱いになることを知らなかったことを
ここにお詫びして訂正する。
「こんなもんは呼び出しを明示的にするだけのもんだろ」と思っていたら甘かった。

何の発想はモダンな言語であれば至極当然なのだが、さすがは古い因習の怨念に取りつかれた BASIC 系言語。
これは、「式文」という概念が VB 系言語にはない、ということの証左である。
式が値を返さない場面があって当然、というのは圧巻である。今時有り得ない。
自分はこれで「Set」という意味不明なステートメントがある理由や、「=」という記号が場面によって意味が違うという気持ち悪さを納得した。

一律で「Call」と書けばよいところを、何で Sub があるかという話だ。
「Call」と書けば Function の取りたくもない返り値を捨てることもできる。
だがさすがは VB系、伊達に過去の負の遺産を背負ってはいない。
0299デフォルトの名無しさん2012/07/31(火) 22:31:31.50
厳密に言えば、全ての式文は値を返す。
が、void を返したりして意味が無いので捨てて当たり前な場面が多々ある、というのが実情である。

「だったら Sub プロシージャ、いらない子じゃん」
普通はそう思うが、Sub 君はどうやら私生児ぽい扱いらしい。
大文字小文字を区別しない処理系同様、この子も変に互換性やしがらみを背負わされたっぽい。

だがこれは実に迷惑な話だ。
0300デフォルトの名無しさん2012/07/31(火) 22:34:45.78
>>297
どうでもいいけど俺の直上にあったからレスしとく。
ともかく、「返す値がブール値」という意味でしか使ってないから。
Google の検索結果?それとも Bing?
ていうかそれって「ネットになかったら世界に存在しない」というくらい可愛そうな発想だ。
0301デフォルトの名無しさん2012/07/31(火) 22:44:30.45
「式文という概念がない」というのは、自分にとって VB系の意味不明さを氷解させるポイントだった。
「各個のステートメントが状態遷移上で個別に処理されている」ということが分かれば話は早い。
VB系言語はもう 終 わ っ て い い

ところが Linux の sh系シェルは実は似たような処理系ながら死ぬ気配が無い。
OS の違いは別として、決定的な違いがある。

「グールー言語としての魅力に天と地との差がある」
ということだ。
0302デフォルトの名無しさん2012/07/31(火) 22:49:59.83
sh系シェルの構文は、処理する側から見るとすごく「酷い」代物だ。

Win のバッチスクリプトと考え方は変わらんからだ。が、
あれは「ものすごく酷い」。
引数すらまともにコマンドに渡せない代物だからだ。
土台がおかしいとその上もいびつになる、という好例である。
0303デフォルトの名無しさん2012/07/31(火) 22:55:05.69
ということで、俺は VBScript を3ヶ月で網羅的に会得した。
別個にブログしているが、グダグダここに書いたのはここがまさに便所の落書き所だからだ。
ウンコしながら考えを整理するくらいにしか実際役に立たなかったし。

結論:
VB系でプログラミングを覚えた連中はカス。
ム板もマ板もカス。
俺のウンコ食ってろ。
0304デフォルトの名無しさん2012/08/01(水) 06:18:42.72
すげぇ、世の中楽しいだろうなぁ。
0305デフォルトの名無しさん2012/08/01(水) 08:30:20.19
このレベルで、これだけ自己陶酔出来る奴ってのも珍しいよね
ある意味幸せな奴だw
0306デフォルトの名無しさん2012/08/01(水) 14:02:54.47
>>299
式に含めてはならないプロシージャを宣言するのがSub
式に含めるべきプロシージャを宣言するのがFunction
0307デフォルトの名無しさん2012/08/03(金) 19:28:41.83
>>300
お前は >292 で自分で言ったことを、自分で理解してないんじゃないか?

> ちなみに >>281 の人間が言う「論理式」という言葉は BASIC 系以外ではまず出てこない。
> C や Perl でも同等の表現はできるが、「論理式」という表現はまずしない。
> 「ブール式」もしくは「ブール型を返す式」としか言わない。

これがどうして

> ともかく、「返す値がブール値」という意味でしか使ってないから。

こういう解釈になるんだ?

> ていうかそれって「ネットになかったら世界に存在しない」というくらい可愛そうな発想だ。

同情してくれてありがとう。
それで、「論理式」という単語を使う奴は生き恥をさらしてて、「ブール式」と書き換えるべきだと、
ネットで「論理式」という単語を使っているすべての Web ページに対して主張するわけ?
ネット以外の世界(例えば教科書とか)では、「論理式」が多数派で、「ブール式」と間違えている
のは少数派という主張でいいのね?
amazon で「コンピュータ・IT」カテゴリから "ブール式" と "論理式" で検索してみたところ、
ブール式はわずかに一件。Erlang に感謝しな。"論理式"は 86 件。

もう一回、>292 を読み返してみたらどうだ。
0308デフォルトの名無しさん2012/08/03(金) 19:36:13.69
>>301
「グールー言語としての魅力に天と地との差がある」
グールーって、もしかして glue ?
0309デフォルトの名無しさん2012/08/04(土) 00:29:24.65
さて今日のお題は「VBScript において、配列はどんな夢をみるか?」である。

結論から言おう。
配列は、原始型でもオブジェクト型でもない中間的な夢を見る。
近年の言語では、配列は鬼っ子である。
型ではないし、とはいえクラスでもない、中間的な何か。

プロトタイプベースな言語では割と自然な形で取り込めなくもないが、クラスベースだとかなり不自然な存在である。
我らが VBScript でも、かなり鬼っ子的扱い(逆に言えば特別扱い)になっている。

VBScript における配列の扱いは三種類あると自分は考える。
1. 純然たる配列
2. 配列しか格納できない縛りのあるバリアント型、に格納されている配列
3. 何でも格納できる上で、配列も格納できるバリアント型、に格納されている配列

何でこう考えるかって?

プロシージャの引数や返り値に配列を混ぜてみればこう考えざるを得ないのだ。
1. は古式ゆかしい配列である。プロシージャの引数で ByRef するとプロシージャ内で ReDim もできない。
が、ByVal なら ReDim できる。
これは何故か。

ここから先を読むには、「わっふるわっふる」と書き込んでください。
0310デフォルトの名無しさん2012/08/04(土) 02:37:13.85
↓自演の「わっふる」
0311デフォルトの名無しさん2012/08/13(月) 16:22:41.79
>>309
VBScriptの場合、配列どころか変数すら、原始型でもオブジェクト型でもないじゃん
0312デフォルトの名無しさん2012/08/28(火) 22:33:44.69
>>311
そんなことはない。バリアント型というメタ型だ。
バリアント型に格納できる変数をよくよく追いかけてみると C の構造体だ。

あーさて何の話だったかな。
あぁそう、VBScript における配列の話な。
VBScript における配列は、言語内唯一の「データ構造」として扱われる。
スカラー値しか扱えなかった C言語だが、C89 で構造体をスカラーっぽく扱えるのと似ている。

1.、および 2. は古式ゆかしい BASIC を引きずっている。
しかし VB ライクな使い方はどう考えても 3. だ。

ちなみに VBScript は引数(ByValの場合)も戻り値もバリアント型(に格納できる型)を要求してくる。
(VBScript にはそれ以外の型は無いので普段気にする必要はない。)
そこで行われるのは、まぎれもなく「コピー」なんだよね。それ以外の何者でもない。

由緒正しそうなサイトでも「Function プロシージャは内部で生成した配列を返せない」という、間違った情報が載ってたりする。
Function プロシージャで内部生成した配列を返しても問題ない。
ただし、巨大な配列を返すと酷い目に遭う。

よって、「巨大な配列を受け渡ししたい場合は ByRef 推奨。ただしこのやり方はイケてなさが漂う」のである。
0313デフォルトの名無しさん2012/08/28(火) 22:36:09.48
Dictionary オブジェクトがクソみたいに遅い。Please die now! 的遅さ。
再帰もクソ遅いし、やっぱこの手には向いてない。この言語。
ttp://projecteuler.net/problem=14
最初にブルートフォースで解いて 4分。
探索済みシーケンスを Dictionary に放り込み&再帰で書いたら Corei5 で 40分。
再帰を解いてループに直して 20分。
業を煮やしてブルートフォースに直して 4分。

答えを投稿して他の回答者のコメントを見たら
「ハッシュテーブルを使って高速化したよ」
C/C++ 使いならそうなるよなぁ。
ちなみに巨大配列を用意してハッシュテーブルの代わりに使う、は典型的 NG。

.NET に同様のクラスがあるのは既知である。
しかし縛りをかけているので自分は使わない。
XP が死亡したら .NET クラスを堂々と使うけどな。PowerShell から。
0314デフォルトの名無しさん2012/08/28(火) 22:39:20.74
>>307
知らんよ。
0315デフォルトの名無しさん2012/08/28(火) 23:08:27.24
最近触る時間が無い。
OLEオートメーションはある程度見捨てたので、あとはどんだけ言語としての面白さを楽しめるか、だ。
さてどこまでが限界やら。
0316デフォルトの名無しさん2012/08/28(火) 23:31:05.28
VBScriptの深淵を見つめたいなら、Classを極めないと駄目だろうな...
0317デフォルトの名無しさん2012/08/29(水) 00:29:10.56
>>316
ありがとう。それは薄々気づいていたところだ。
Project Euler の問題が段々難しくなってきていて、BigInteger クラスを自前で実装しないとこの先キツいかなと思っていたところだ。
しかし心配はしていない。

名前のスコープが
1. プロシージャ
2. ファイル
の二段階しかいないC言語方式!!

幸い GetRef があるので色々と面白いこともできそうだ…。
VBScript のクラスはかなり C の構造体に近い扱いでイケると思っている。

まぁ、来月からですかな。
0318デフォルトの名無しさん2012/09/19(水) 13:23:43.04
質問宜しいでしょうか。

動画のエンコードにAviUtl Controlという物を使い、それに
標準でついていたvbsを使用して録画後自動処理を行なっ
ているのですが、こちらの記述を フォルダ全体を対象に
処理するのではなく、読み込んだ動画 ファイル一つだけを
対象に処理させる方法はないでしょうか?

理由としては、1つ目のエンコード処理が終わっときに2つ目
の動画ファイルが録画中だと、エラーを吐いて処理が止まって
しまうからです。

ttp://www.dotup.org/uploda/www.dotup.org3437483.txt

『' キャプチャしたファイルがあるフォルダが空になるまで繰り返す』
『' SOURCE_FOLDER で一番古いファイルを探す』

といった辺りの文を削除して実行した所、エラーが出て止まっていましました。

行:78
文字:1
エラー:ステートメントがありません。
コード:800A0400
ソース:Microsoft VBScript コンパイルエラー

正確にはどう削除するのが正解でしょうか、教えてください。
0319デフォルトの名無しさん2012/09/19(水) 15:09:38.34
>>318
While - WendをDo While - Loopに替えてExit Doで抜けちゃったらいいよ

' キャプチャしたファイルがあるフォルダが空になるまで繰り返す
Do While Fs.GetFolder(SOURCE_FOLDER).Files.Count > 0
  ……
  
  ' エンコードが終わったファイルを移動する
  Call Fs.MoveFile(input, MOVE_FOLDER)
  
  Exit Do
Loop
0320デフォルトの名無しさん2012/09/19(水) 16:17:33.63
>>313
Dictionaryを変に使ったんじゃねえの?そんな時間かかるわけないだろ。
0321デフォルトの名無しさん2012/09/19(水) 17:17:00.24
>>319
ありがとうございます。無事希望通りの動作を実行できました。
0322デフォルトの名無しさん2012/09/19(水) 21:36:48.81
すみません、重ねて質問させて下さい。
>>318の書式で、処理するフォルダに入っているサブフォルダ内
のファイルも処理対象にする方法はありませんでしょうか。

' キャプチャしたファイルがあるフォルダ(最後の文字は"\")
Const SOURCE_FOLDER = "F:\video\"

デフォルトだと、上記の通り一個の指定したフォルダしか対象にできません。
0323デフォルトの名無しさん2012/09/20(木) 16:09:09.07
>>322
途中までできた、デバッグ出力するだけだけど
http://www.dotup.org/uploda/www.dotup.org3438838.txt

出力先フォルダとソースフォルダが入れ子になってるからちょとまんどくさい。
ソースフォルダって変えることできる?
0324デフォルトの名無しさん2012/09/23(日) 23:39:55.76
>>320
[email protected] でそれだ。
俺が変に使う訳がない。
自分で書いてみろ。それで分かる。
0325デフォルトの名無しさん2012/09/24(月) 07:53:48.89
>>324
わかった、俺のセロリンさんが全力出して50分かかった。
0326デフォルトの名無しさん2012/09/26(水) 00:10:56.98
>>324
ゴミCPU乙。
0327デフォルトの名無しさん2012/10/09(火) 22:46:20.06
>>325-326
近頃の馬鹿はOLEの重さ加減も知らんのか…。
まさに生きるゴミ。
0328デフォルトの名無しさん2012/10/09(火) 22:53:41.23
>>327
黙れ雑魚
0329デフォルトの名無しさん2012/10/10(水) 01:52:47.33
JScriptに対するアドバンテージって何よ?
0330デフォルトの名無しさん2012/10/10(水) 01:57:56.64
鯖管がwin鯖だけで済むはずないんだから、SSJSを使えと思うんだけど
どうすれば世界からVBScriptを抹消できるでしょうか?
0331デフォルトの名無しさん2012/10/10(水) 02:44:11.38
>>329
・参照渡しができる
・ローカル変数を宣言せずに使用できる
・巨大な配列の生成速度が速い
・参照カウントでオブジェクトを破棄しちゃうのでCOMと相性がいい
・無限ループの構文がきれい
・配列を使うときに[]を書かなくていい
・;を書かなくていい
・クラスを作成できる
■ このスレッドは過去ログ倉庫に格納されています