VBプログラマ質問スレ(Ver.6.0 まで) part56

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
ここは Visual Basic 〜6.0 の質問スレです。
質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、
「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。

VB.NETは別物なので専門スレで、VBA、APIの質問もそれぞれのスレで。

○ 質問者の心得
 一.質問する前にMSDNやGoogle、過去ログにも目を通してみる。
 二.VBScript、インストーラーなどはこのスレでOK。
 三.質問は第三者にもわかりやすいよう簡潔かつ具体的に。
 四.荒らしは相手しない。

○ 回答者の心得
 一.答えられない質問は無駄に罵倒せずスルー。無理するな。
 二.代用法を強制しない。
 三.回答する上で必須ではない情報をむやみに聞き返さない。
 四.荒らしは相手しない。
 五.VB情報募集中。
 六.回答は質問者が理解できるよう具体的に。

MSDN Online Japan ホーム
 http://www.microsoft.com/japan/msdn/default.asp
Visual Studio 6.0 Service Pack 6
 http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx
Google
 http://www.google.co.jp/

※「まず自分で調べる」クセを身につけよう。

2デフォルトの名無しさん:2010/06/01(火) 22:14:26
Part 1 http://piza2.2ch.net/tech/kako/968/968328471.html
Part 2 http://piza2.2ch.net/tech/kako/990/990793224.html
Part 3 http://piza2.2ch.net/tech/kako/1000/10005/1000523122.html
Part 4 http://pc.2ch.net/tech/kako/1006/10069/1006922992.html
Part 5 http://pc.2ch.net/tech/kako/1010/10106/1010624646.html
Part 6 http://pc.2ch.net/tech/kako/1013/10138/1013844542.html
Part 7 http://pc.2ch.net/tech/kako/1015/10158/1015836357.html
Part 8 http://pc.2ch.net/tech/kako/1018/10187/1018794901.html
Part 9 http://pc.2ch.net/tech/kako/1020/10208/1020830472.html
Part10 http://pc.2ch.net/tech/kako/1022/10221/1022127528.html
Part11 http://pc.2ch.net/tech/kako/1024/10243/1024380249.html
Part12 http://pc3.2ch.net/tech/kako/1026/10266/1026642565.html
Part13 http://pc3.2ch.net/tech/kako/1029/10292/1029241786.html
Part14 http://pc3.2ch.net/tech/kako/1030/10309/1030947162.html
Part15 http://pc3.2ch.net/tech/kako/1032/10327/1032706491.html
Part16 http://pc3.2ch.net/tech/kako/1034/10343/1034302532.html
Part17 http://pc3.2ch.net/tech/kako/1036/10361/1036154952.html
Part18 http://pc3.2ch.net/tech/kako/1038/10381/1038103769.html
Part19 http://pc3.2ch.net/tech/kako/1039/10398/1039859691.html
Part20 http://pc2.2ch.net/tech/kako/1041/10418/1041879465.html
Part21 http://pc2.2ch.net/tech/kako/1044/10440/1044028945.html
Part22 http://pc2.2ch.net/tech/kako/1046/10463/1046354784.html
Part23 http://pc2.2ch.net/tech/kako/1047/10477/1047743187.html
Part24 http://pc2.2ch.net/tech/kako/1050/10501/1050151126.html
Part25 http://pc2.2ch.net/tech/kako/1052/10526/1052627913.html
Part26 http://pc2.2ch.net/tech/kako/1055/10551/1055145106.html
Part27 http://pc2.2ch.net/tech/kako/1058/10586/1058674927.html
Part28 http://pc2.2ch.net/tech/kako/1061/10612/1061296197.html
Part29 http://pc2.2ch.net/tech/kako/1065/10654/1065446334.html
3デフォルトの名無しさん:2010/06/01(火) 22:14:32
重複させんなハゲ

VBプログラマ質問スレ(VB1.0〜VB6.0) Part56
http://pc12.2ch.net/test/read.cgi/tech/1275397467/
4デフォルトの名無しさん:2010/06/01(火) 22:15:29
5デフォルトの名無しさん:2010/06/01(火) 22:17:32
>>3
スレを立てると宣言したのにイヤガラセはやめろ
6デフォルトの名無しさん:2010/06/02(水) 00:33:01
スレが立ったら静かになるんだな。
7デフォルトの名無しさん:2010/06/04(金) 19:25:05
おワットる言語だし
8デフォルトの名無しさん:2010/06/05(土) 11:06:38
言葉は生き物だからといって、今ある言葉をねじまげる理由にはならない
9デフォルトの名無しさん:2010/06/05(土) 11:26:39
10デフォルトの名無しさん:2010/06/05(土) 11:34:38
本スレ
VBプログラマ質問スレ(VB1.0〜VB6.0) Part56
http://pc12.2ch.net/test/read.cgi/tech/1275397467/
11デフォルトの名無しさん:2010/06/05(土) 16:51:52
だれかVBの質問しようぜ
12デフォルトの名無しさん:2010/06/05(土) 17:38:22
VBでもグライコ表示みたいなソフトあった気がするな。
単に録音するだけだった気がする。
13デフォルトの名無しさん:2010/06/05(土) 19:27:36
VBじゃないが、NY Spectrum Analyzerで似たような事はできた
ミュート状態でもステレオミキサONにすれば動くようだ(XPで)
ソースもあるから中身見ればなんとかVBでも作れるんじゃね?FFTは辛いかもしれないが波はそのまんまだろう
14デフォルトの名無しさん:2010/06/05(土) 20:22:53
なっている音を録音する感じかな?
15デフォルトの名無しさん:2010/06/05(土) 20:43:14
たぶんそう
ミキサで録音元を設定してあげれば再生しているWAVの波形がとれる
ていうかVBで作らなくてもそのソフトで十分じゃね?
16デフォルトの名無しさん:2010/06/05(土) 21:17:25
なるほど
17デフォルトの名無しさん:2010/06/08(火) 16:11:04
情報処理検定のVBはどのようなものですか?
18デフォルトの名無しさん:2010/06/08(火) 18:27:20
履歴書に書いても鼻で笑われる程度
19デフォルトの名無しさん:2010/06/09(水) 02:20:43
VBは鼻で笑われるが、VBAだとなぜかウケがいい不思議。
20デフォルトの名無しさん:2010/06/09(水) 12:23:14
オフィス様は偉大だからな
21デフォルトの名無しさん:2010/06/09(水) 23:30:24
情報処理試験にVBあるの?
22デフォルトの名無しさん:2010/06/09(水) 23:45:40
全商情報処理検定とやらの話でしょう
23デフォルトの名無しさん:2010/06/11(金) 11:29:55
本スレがどっちか分からんけど前スレ履歴あるんでこっちで質問します

VB6とMySQLを使ってデータベースを利用したプログラムを作成しています
MySQL Connector ODBC 5.1.6を使って開発マシンに入れたMySQLにて接続と返答を確認
その後、LANで接続している別マシン上のMySQLに接続しようとしたところ

実行時エラー '-2147467259 (80004005)'
[MySQL][ODBC 5.1 Driver] Can't connect to MySQL server on 'IPアドレス' (10060)

のエラーが表示されてしまいます
別マシン上に実行ファイルを持っていき、接続アドレスを127.0.0.1として確認すると正常に接続と返答が返ってきます
また、開発マシン側でPerlを使って別マシン側のMySQLにアクセスしても問題なく接続と返答ができる状態です

VB6側でネットワーク上の別マシンの場合に行う設定などあったりするのでしょうか?
24デフォルトの名無しさん:2010/06/11(金) 11:57:30
特に設定する部分なんてないと思うけど

他のPCで動くってことはPG的には問題はひとまずおいといて
そのマシンのファイアウォールとかはひとまず全部OFFにして試してみた?
ポートの問題じゃないのかな?
25デフォルトの名無しさん:2010/06/11(金) 12:20:43
利用環境開発環境共にインターネットに繋げてないLAN構成なんでFWやアンチウィルス等はインストールもしていない環境です
Perlのスクリプトの方でもポートは特に指定していなくても正常に使えてる状態です
MySQLもインストール時にUIDとパスワードぐらいしか設定変更はしていません

あれから調べててDSNの設定が〜という記事もいくつか参照したのですが
もともと参照した記事は以下のDSNを使わずにデータを取得する、というものです
ttp://matome.info/VB6MySQL/

コードはSERVERやUIDなどのMySQLへの接続パラメータ以外はそのまま使っています
26デフォルトの名無しさん:2010/06/11(金) 13:30:14
>>25
自分で入れてないだけですでに入ってるんじゃね?>FW
ウインドウズFWだったり、メーカー出荷時に入ってたり
perlからいけるんならポート塞ぎじゃなくてアプリケーションレベルの禁止かな

あとは正しいと思い込んでるアドレスかポートが実は間違ってるとか
27デフォルトの名無しさん:2010/06/11(金) 14:05:57
>>26
SQLマシンは自作マシン、OSもXPSP3の単発買いのものなんで外部のFW等は入れてないので除外
セキュリティセンター系はサービスから除外してるんで、復帰させて確認したけど
WindowsのFW系もきちんと停止している状態でした

LANの構築がハブだけでアドレスが169.254.〜となっているのが原因だったりしますかね?
28デフォルトの名無しさん:2010/06/11(金) 14:06:53

>>25のアドレスはオプション指定されてるなぁ
ついでだからデバッグログ(値として4)とか吐き出すようにしてみてはどうかな?

詳しくはWEBでw
ttp://dev.mysql.com/doc/refman/5.1/ja/myodbc-configuration-connection-parameters.html
29デフォルトの名無しさん:2010/06/11(金) 14:07:51
おい、そのサーバにつながらないマシンからIPアドレス指定でping通るのか?
30デフォルトの名無しさん:2010/06/11(金) 14:11:06
pingやポートスキャンは通るのかな
MySQLの層の話じゃなさそうな気はする
31デフォルトの名無しさん:2010/06/11(金) 14:11:23
>>28
ちょいと覗いてみます

>>29
pingは0msで返ってきてました
32デフォルトの名無しさん:2010/06/11(金) 14:11:26
何伸びてるとおもったら
仕事中に2chで相談会でもしてんの?
俺はニートだけど
33デフォルトの名無しさん:2010/06/11(金) 14:12:29
プログラム板ってこんなもんでしょう?
34デフォルトの名無しさん:2010/06/11(金) 14:24:26
俺もニートだけど有意義に賑わうなら別にいいと思う
35デフォルトの名無しさん:2010/06/11(金) 14:26:29
>>28
optionにデバッグの4を指定して実行してみたけどファイルが作成された形跡がない状態でした
Cのルート、実行ファイルのフォルダ近辺からファイルの検索までかけたけど、該当ファイルは無しでした
36デフォルトの名無しさん:2010/06/11(金) 14:28:10
>>27
同じマシンからperlでつながるんだったらネーットワーク的には問題ないし
サーバーの設定もokってことじゃん?

残るはクラ側の設定しかないじゃん?

納得いかなかったら、パケットキャプチャ系のツールを入れて覗いてみれば?





37デフォルトの名無しさん:2010/06/11(金) 14:32:49
perlはサーバ側で動かしたなんてオチはいやずら
38デフォルトの名無しさん:2010/06/11(金) 14:47:12
知人に送って確認して貰ったら接続して返答きてると言われました…
知人からはPG的なものじゃなくてハードウェアかLANの構成絡みじゃないのか、との弁

とりあえず昔のノートとか引っ張り出してハードウェア絡みを見直してみます
お騒がせしました
39デフォルトの名無しさん:2010/06/11(金) 22:50:08
Vista上で利用しています。
VBPファイルをクリックすると、〜OCXが読み込めませんというエラーが表示され、
ロードに失敗してしまいます。
デスクトップ上に同じプロジェクトがあり、片方のプロジェクトは正常に開くのですが、
片方が毎回ロードに失敗してしまい、参照設定をしようとすると、
「ActiveXコンポーネントは登録できません」とエラーが出てしまい…
なぜか正常に開いているプロジェクトと同じ参照先に設定ができません。

OCXはちゃんとにレジストリ登録ができているのですが、
何が原因かわかりますでしょうか?
40デフォルトの名無しさん:2010/06/11(金) 22:52:07
同じなら、失敗した方から開くようにすると、ちゃんと開けるの?
41デフォルトの名無しさん:2010/06/11(金) 23:02:13
>>40
失敗してしまいます。
42デフォルトの名無しさん:2010/06/11(金) 23:06:20
じゃ、同じじゃないじゃん。失敗する方が、なんか壊れてるんでしょ。
43デフォルトの名無しさん:2010/06/11(金) 23:26:03
私もそう思ったのですが…
Subversionにコミットされているもので、
他の人は開いた時に何もエラーが出てなかったので。。。
44デフォルトの名無しさん:2010/06/11(金) 23:27:45
OCXとかちゃんと登録されてるんだろ
45デフォルトの名無しさん:2010/06/11(金) 23:29:26
>>43がなんか後輩のような気がしてならない
46デフォルトの名無しさん:2010/06/11(金) 23:33:48
>>39
OK な方のプロジェクトを何かバージョン管理システムに突っ込んで、
NG な方のプロジェクトのファイルでオーバーライトしてコミットして
差分を調べれば違いがわかる、かもしれない。
47デフォルトの名無しさん:2010/06/12(土) 00:37:52
失敗してしまう方はところどころソースが違っているので、
DLLも再登録して開くようにしているのですが、
なぜか参照先が違うところを見にいっていて、
再登録したほうのDLLを設定しようとするとエラーが出てしまうのです。

48デフォルトの名無しさん:2010/06/13(日) 02:15:36
>>45
先輩!



飯おごってください!
49デフォルトの名無しさん:2010/06/14(月) 13:12:49
最近分かったことがある

VBでゲーム作るのは無謀だと

そこそこセンス無いと無理ぽ
50デフォルトの名無しさん:2010/06/14(月) 16:53:59
VBにかぎった話じゃないだろそれ
DirectXなどが操作し辛いという事ならそうかなと思うけど
51デフォルトの名無しさん:2010/06/16(水) 00:36:16
DirectXなら一応VBから使える。
3Dをフルに使ったゲームとかなら
VBで作るのは難しいがアドベンチャーゲームの
ようなものは十分作れる。

そういうことは誰でも理解していることなので、
わざわざ>>49のようなことを言うレベルの人間は、
それ以前に技術力が足りない。
52デフォルトの名無しさん:2010/06/16(水) 01:38:29
業務用・実用系のソフトしか作ったことない人はゲーム作り苦手という噂をどっかで聞いた気がした
逆に、ゲーム系のソフトしか作ったことない人は業務用・実用系のソフト作りが苦手とか
プログラミングでもパソコン向けでは無いほうのしか作ったこと無い人はパソコン向けが苦手とか
53デフォルトの名無しさん:2010/06/16(水) 01:43:45
音楽やってる奴はパンクからクラシックまで網羅してないといけないという決まりも無いだろ。
54デフォルトの名無しさん:2010/06/16(水) 01:52:31
ゲームもゲーム以外もそうたいして変わらないんじゃないかと思ってるが、ゲームしか作ったことないからわからん
55デフォルトの名無しさん:2010/06/16(水) 20:49:38
業務系アプリなんか、ある意味四則演算しかやってないからな
だがどっちが偉いかって話は不毛ってもんだ
56デフォルトの名無しさん:2010/06/17(木) 02:08:27
変数や関数の名前に全角を使うって主流なの?
未だに使えん
57デフォルトの名無しさん:2010/06/17(木) 02:16:11
.NETなどじゃうっかり全角の関数ができちゃう事もあるが6などで全角は無しでしょ
58デフォルトの名無しさん:2010/06/17(木) 02:18:14
そうなんか、たまに見るVBAのソースとかだと全角の名前多くて嫌になってくる
59デフォルトの名無しさん:2010/06/17(木) 02:20:21
変数とかに全角使うのがVB界の主流なのかと思ってたのさ
N88BASIC時代からずっと半角ばっかだったから
全角使うのが当たり前な時代なら
全角使ってみようかなと
60デフォルトの名無しさん:2010/06/17(木) 02:20:24
VBAかよ
61デフォルトの名無しさん:2010/06/17(木) 02:22:40
VBAはVB6のサブセットとかじゃなかったっけ?VBAとかセルの参照とかよくわからんから使ったことないけど
ソースとかはたまに見てるからさ
VB6も全角使うのかなーって。
62デフォルトの名無しさん:2010/06/17(木) 02:23:16
一緒にするな
63デフォルトの名無しさん:2010/06/17(木) 02:23:32
そうか、VB6では全角使えないんだな。まぁそれはそれで安心した。
64デフォルトの名無しさん:2010/06/17(木) 02:24:32
>>1より
VB.NETは別物なので専門スレで、VBA、APIの質問もそれぞれのスレで。
65デフォルトの名無しさん:2010/06/18(金) 06:54:04
俺の記憶ではVB6でも全角の変数とか使えたはずだが
ただ、主流かと言われると微妙だな
66デフォルトの名無しさん:2010/06/18(金) 09:58:42
主流もくそもVB6自体が(ry
67デフォルトの名無しさん:2010/06/18(金) 14:33:15
全角使うのに抵抗あるのってやっぱ時代遅れか
68デフォルトの名無しさん:2010/06/18(金) 16:35:37
一時期、可読性があがるかと思って、積極的に全角(つかカナ漢字)つかったことがある
俺の結論としては、入力の手間に値するほどの価値は無かった

結局は気のきいたコメントが一番大事だと思った


インテリセンスとかある今のVB.NETならまた違った結論になるかもしれんな
69デフォルトの名無しさん:2010/06/18(金) 20:05:32
VB6の命令などはVB.NETでもそのまま使えるの?
  
70デフォルトの名無しさん:2010/06/18(金) 20:07:03
もちろん
71デフォルトの名無しさん:2010/06/18(金) 20:10:40
>>69
使えるのもある、使えないのもある
72デフォルトの名無しさん:2010/06/19(土) 15:09:46
VBScriptの質問でござる。
VB6では以下のように、変数宣言時にNewキーワード付きでクラス名を書けますよね。

Dim Hoge As New ClassHuga

(これ専門用語的にどう言えばいいのかわかりません 暗黙のインスタンス生成?)

これと同じようなことを、VBScriptで書けますか?
そもそもAsが無いのでどう書けばいいのやら
と試行錯誤したけど、以下は全部だめポですた。
× Dim Hoge As New ClassHuga
× Dim Hoge = New ClassHuga
× Dim Hoge New ClassHuga



>>58
それは、マクロの関数名や自作ワークシート関数名がそのままExcel(とかOffice全般)の画面UIに表示されるので、
関数名や引数を日本語にしとくとユーザーが使いやすい(わかりやすい)から、ってところから来てるんだと思う。
そこからVBAに入った人はUIのどこにも出て来ないはずの内部関数であっても日本語を使う癖が付いてるみたい。
73デフォルトの名無しさん:2010/06/19(土) 17:10:52
VB6だと
Dim Hoge As ClassHuga
Set Hoge = New ClassHuga
と書くとどこかで聞いた
7472:2010/06/19(土) 18:12:11
>>73
普通はそう書くんですけど、
Dim Hoge As New ClassHuga
という書き方も出来るんです。こう宣言した場合、Setする事なく突然Hogeを利用することが出来ます。

例えば、
Dim Hoge As ClassHuga
Hoge.Piyo = 0
というコードを書いた場合はPiyoプロパティにアクセスする段階でエラーになりますよね。

前述の通り宣言した場合はエラーになりません。
HogeがNothingだった場合、アクセスしたその時点で自動的にインスタンスがNewされてそれがSetされます。
ちょうど「フォームのそれに似た挙動になる」と考えてもらえるとわかりやすいかと。

質問は、それがVBScriptでも可能なのでござろうか?ニンニンというお話です。
75デフォルトの名無しさん:2010/06/19(土) 18:19:54
VBScriptにはAs句がないから、まったく同じことは無理。
76デフォルトの名無しさん:2010/06/19(土) 20:07:26
VB6で開始ボタンを置く画面と、実際にグラフィックを描く画面を別にするにはどうしたら
よいのか教えてください。
  
77デフォルトの名無しさん:2010/06/19(土) 20:36:04
>>76
Form1 に開始ボタンを置く、Form2 でグラフィックを描く場合、
Form2 に public なグラフィックを描く関数 func を作って
Form1 の開始ボタンを押したら、call Form2.func() を実行。
78デフォルトの名無しさん:2010/06/19(土) 20:42:39
>>77
ありがとう!!
79デフォルトの名無しさん:2010/06/19(土) 22:58:50
>>74
> 質問は、それがVBScriptでも可能なのでござろうか?ニンニンというお話です。

不可能。

ちなみに、as の有無には関係ない。
80デフォルトの名無しさん:2010/06/19(土) 23:18:19
>>77
>>79
そうですか・・・残念でござる。
ありがとうございました。
81デフォルトの名無しさん:2010/06/20(日) 20:03:40
VB6(VB5も)でふつうに作成した画面は、左右や四方の角の部分のハンドルによって無意味に
大きくなりますよね。大きくならないように画面の大きさを固定する方法を教えて下さい!  
  
82デフォルトの名無しさん:2010/06/20(日) 20:06:04
フォームの枠で固定のやつを選べばいい。
83デフォルトの名無しさん:2010/06/20(日) 20:28:34
>>82
??
「固定のやつ」を選ぶ方法を教えて下さい。 
  
84デフォルトの名無しさん:2010/06/20(日) 20:32:57
フォームのプロパティを全部見直せよ。
85デフォルトの名無しさん:2010/06/20(日) 20:34:44
>>84
ありがとうございました! 出来るようになりました。
 
86デフォルトの名無しさん:2010/06/20(日) 20:37:00
BorderSytleくらい自力で到達してくれい
87デフォルトの名無しさん:2010/06/25(金) 17:43:43
重複スレ落ちたのか
88デフォルトの名無しさん:2010/06/25(金) 20:07:50
以前のN88-BASICでは、ゲーム画面のデザインなどでGET@命令やPUT@命令を
よく使っていたと思いますが、VBでも同じような命令はあるのでしょうか?
本を調べても、GETに似たものはあるようですがPUTは見つかりません。
詳しい方、使い方をご教授下さい!
  
89デフォルトの名無しさん:2010/06/25(金) 21:37:53
俺もN88からVB6にのりかえたのだけど(ちなみにずぶの素人でプログラマーではないですお)
N88はあんま使ってなかったからよくわからんけど
GET@やPUT@ってゲームキャラクターとかを描くときに使った記憶はある
VBでゲーム作るときは
普通にペイントソフトでゲームキャラの画像を作って
それを読み込んで使ってたな
ImageやPicutureBoxあたりで画像を読み込んで
PaintPicutureメソッド使ってフォームとかPicutureBoxに描写すればいいんじゃない?
俺がVB始めたころは運悪くVB関連の資料がベーマガしかなかったから
Win32APIのBitBlt使ってた。つい1年くらい前にPaintPictureメソッドの存在を知った
Windows95のPCだとBitBlt使わなきゃゲームはキツイけど
WindowsXPのPCだとPaintPictureでもまぁ気にはならない程度には早い描写ができたね
90デフォルトの名無しさん:2010/06/25(金) 21:40:37
まぁもっと詳しいプロのプログラマーさんの意見が来るのを待つしかないね
9189:2010/06/25(金) 21:42:50
>>90 = >>89 で私のレスです
ちなみにN88からVBへ行く前にCARealizerというGUIなBasic言語をちょいやったのでVBへはそんなに抵抗なかったです
92デフォルトの名無しさん:2010/06/26(土) 01:22:21
あ〜あ
93デフォルトの名無しさん:2010/06/26(土) 19:47:30
>>89
ありがとうございます! PaintPicuture について調べてみます。
VBは最近入手したばかりなので、暗中模索の状態です。
  
94デフォルトの名無しさん:2010/06/27(日) 16:32:50
本格的なゲームを考えてるならDirectXジャネーノ
95デフォルトの名無しさん:2010/06/27(日) 18:48:38
DirectXってプログラム言語の1つなのですか?(違うような気がしますが・・・。)

本格的なゲームを作る野心などは持っておりません!
とりあえず、数学の各種曲線を描画するプレゼンテーションを考えているところです。
(N88-BASICなら簡単だったのに、VBでは難しいです。言語が進化したのだから
プログラムも易しくなるべきなのに、逆に難しくなるなんてオカシイおー!)
    
   
96デフォルトの名無しさん:2010/06/27(日) 18:55:22
>>95
DirectX は『言語』ではなくて『ライブラリ』。

今なら VB6.0 よりも .NET の方が情報がいっぱいあって
いろいろ調べやすいと思うから、.NET を使ったほうがいいよ。

ここは時代の取り残された者たちのスレです。
97デフォルトの名無しさん:2010/06/27(日) 22:17:28
.NETを買うお金がないお。
ファイル交換ソフトでもらうしかないかも・・・。
  
98デフォルトの名無しさん:2010/06/27(日) 22:22:54
Express版なら無料でDLできるお
99デフォルトの名無しさん:2010/06/27(日) 22:26:52
そして .NET ならこっちだお

VB.NET質問スレ(Part34)
http://pc12.2ch.net/test/read.cgi/tech/1270998481/
100デフォルトの名無しさん:2010/06/27(日) 22:27:38
無料のものではコンパイラーがないから、配布して他の人々に
簡単にみせてあげることが出来ないって聞いたのですが・・・、
その点について教えて下さい!
 
101デフォルトの名無しさん:2010/06/27(日) 22:31:25
VB.NETスレ行けよ。
102デフォルトの名無しさん:2010/06/27(日) 22:43:33
>>100
コンパイルも配布もできる。VB.NETスレで待ってるぜ。
103デフォルトの名無しさん:2010/06/27(日) 23:00:43
>>102
ホント? ありがとう!!
これから無料版をダウンロードしてみます。
  
104デフォルトの名無しさん:2010/06/27(日) 23:09:40
さよ〜なら〜。2度とくるなよ(いい意味で)。
105デフォルトの名無しさん:2010/06/28(月) 00:04:08
すみません、超初歩的な質問なんですが、
Me.〜〜 は自分で配置したコントロールやフォーム自体のプロパティ?で
e.〜〜は何の意味があるんでしょうか?
106デフォルトの名無しさん:2010/06/28(月) 00:14:25
e. なんてないよ。
107デフォルトの名無しさん:2010/06/28(月) 00:16:06
e.はMe.のMがかすれて見えなくなったもの。
108デフォルトの名無しさん:2010/06/28(月) 00:24:43
マジレスすると、Me は予約語、e は変数。
109デフォルトの名無しさん:2010/06/28(月) 17:49:51
>>105
それVB.NETじゃないの?
110デフォルトの名無しさん:2010/06/28(月) 19:15:08
>>104

Visual Studio 2010 試用版 をダウンロードしてインストールしようとしたのですが、
ハードディスクの空き容量が足りなくてインストールできませんでした。7.1GBも
必要だなんて・・・・!?

という訳で、また戻って来たおー!
  
111デフォルトの名無しさん:2010/06/28(月) 20:17:54
>>110
もどってくるなw
112デフォルトの名無しさん:2010/06/28(月) 20:34:44
「帰って来たヨッパライ (ザ・フォーク・クルセダーズ)」 だな

http://pc12.2ch.net/test/read.cgi/tech/1275397597/l50
  
113デフォルトの名無しさん:2010/06/28(月) 20:38:00
↑ アドレスが間違ってた!

http://www.youtube.com/watch?v=6-O24msoOac
   
114デフォルトの名無しさん:2010/06/28(月) 22:04:14
教えがいのある人なら歓迎だが、そんな人物ではないようだし
115デフォルトの名無しさん:2010/06/29(火) 00:14:32
>110
PC買い換えろww
116デフォルトの名無しさん:2010/06/29(火) 00:53:46
7.1GってVB.Netだけのサイズなの?
117デフォルトの名無しさん:2010/06/29(火) 20:56:20
>>116
>7.1GってVB.Netだけのサイズなの?

違うかも知れない。だけど、VB.Netだけをインストールする方法が
分からなかったヨ・・・。

これまで見たプログラム言語で1番良かったのは、潮田氏のフリーソフト
「N88互換BASIC for Windows95」 だな。・・ for windows95 と書いてあっても、
実際は XP でも問題なく使える(多分、vista や 7 でも)。プログラム自体では
16色しか使えないけど、windows の画面で使えるので そのままグラフィック
ソフトに移せば、1677万色を使っての色変更も簡単に出来る。
当分は、VBを勉強しながら、「N88互換BASIC」 を使って行こうと思っているよ。
      
118デフォルトの名無しさん:2010/06/29(火) 21:03:59
あきらめろよ。
119デフォルトの名無しさん:2010/06/29(火) 21:16:29
うなぎの蒲焼きをスーパーで買うときは、今年も注意が必要だよ。



http://headlines.yahoo.co.jp/videonews/nnn/20100629/20100629-00000048-nnn-soci.html
  
120デフォルトの名無しさん:2010/06/29(火) 21:39:04
コピペ君って馬鹿だな、まで読んだ。
121デフォルトの名無しさん:2010/06/29(火) 21:48:31
互換といったらFBASICとかいうの無かったっけ?昔ベーマガで見たような気がする
122デフォルトの名無しさん:2010/06/29(火) 21:56:13
互換といったらActiveBASICだろ!
他のなんてクズだ!ゴミだ!クソだ!
123デフォルトの名無しさん:2010/06/30(水) 10:59:26
>>121
F-BASIC は昔のF-BASICを昔のFM系マシンな画面で使える上に、Windowsライクなソフトも組める、わりとおもしろ言語。
ttp://www.fmworld.net/product/soft/fbasic/
124デフォルトの名無しさん:2010/06/30(水) 23:52:29
試用版じゃなくてVB.NET 2008 Express Editionだ。
ttp://www.microsoft.com/japan/msdn/vstudio/2008/product/express/
125デフォルトの名無しさん:2010/07/01(木) 11:20:25
んで、スレ違いなわけだけども
126デフォルトの名無しさん:2010/07/01(木) 19:47:50
>>123
F-BASIC はWindows XP 以降は使えないから、問題外だよ。
  
  
127デフォルトの名無しさん:2010/07/01(木) 20:13:05
>>122
ActiveBasic の公式ページって呼び出しても出て来ないよ。
もう閉鎖されたのかな?
結局、普及しなかったんじゃないの?
  
128デフォルトの名無しさん:2010/07/01(木) 20:29:37
勝手に閉鎖とか言ってんじゃねえよ!ちゃんとwikiとかいっぱいあるんだよ!
しらねえで言うな!
129デフォルトの名無しさん:2010/07/01(木) 20:38:36
>>128

公式サイトが呼び出せなくてソフトをダウンロード出来ないなら、
話にならんじゃん! ダウンロードして、インストールして、使ってみて
初めて評価を下せるものじゃん!
   
130デフォルトの名無しさん:2010/07/01(木) 20:58:54
ちょっとサイトが落ちただけで騒ぐな!ガキ!
131デフォルトの名無しさん:2010/07/01(木) 21:54:02
呼び出す、って面白い表現だな。
132デフォルトの名無しさん:2010/07/01(木) 22:20:28
出でよ公式!我が怨敵を滅するのだ!
133デフォルトの名無しさん:2010/07/02(金) 18:56:44
>>131

「呼び出す」以外にはどんな表現があるの??
134デフォルトの名無しさん:2010/07/02(金) 19:00:26
「ActiveBasic公式サイト」 は今日現在も呼び出し不能!!!
   
135デフォルトの名無しさん:2010/07/02(金) 19:45:45
>>133
普通は「リクエスト」
136デフォルトの名無しさん:2010/07/02(金) 19:48:58
>>135
おかしいじゃん!

公式サイトをリクエストする、・・なんて。
  
137デフォルトの名無しさん:2010/07/02(金) 20:27:57
HTTPでは「リクエスト」だな。一般的には「開く」とかいうんじゃないの?
138デフォルトの名無しさん:2010/07/02(金) 20:39:16
ホームページへアクセス
139デフォルトの名無しさん:2010/07/02(金) 21:29:58
ホームページと言うのはやめろ
140デフォルトの名無しさん:2010/07/02(金) 21:32:34
ホムーページ
141デフォルトの名無しさん:2010/07/02(金) 21:39:34
ほめぱげ
142デフォルトの名無しさん:2010/07/04(日) 11:19:21
■質問
VBScript について質問させて下さい。

下記ページに記載されている Book クラスのプロバティに値をセットする場合、java では
ttp://tuka.s12.xrea.com/index.xcg?p=VBS%A4%CE%A5%AF%A5%E9%A5%B9%A5%AA%A5%D6%A5%B8%A5%A7%A5%AF%A5%C8

objBook.Title("VBSでちょっとオブジェクト第1巻")

と書くと思うのですが、vbs ではなぜ

objBook.Title = "VBSでちょっとオブジェクト第1巻"

となるのでしょうか?
Title メソッド(?)は Public Property Let Title(strTitle) のように
引数ありで定義されているのに……。

アドバイスいただけると嬉しいです。よろしくお願いします

■環境
OS: XP SP3
WSH のバージョン: 5.7
143デフォルトの名無しさん:2010/07/04(日) 11:50:59
そういうもんだから。
144142:2010/07/04(日) 12:29:43
質問した後も色々と調べていたら、下記ページに vbs のルールが載っていました。

'VBScriptのオブジェクトを使いこなす − @IT
ttp://www.atmarkit.co.jp/fwin2k/tutor/cformwsh09/cformwsh09_03.html

このページを踏まえて以下のように考えました。

'Property Let ステートメントは、そのクラスがインスタンス化される際、
'プロパティに値が代入されるときに実行される。

'例えば下記
objBook.Title = "VBSでちょっとオブジェクト第1巻"

'においては、プロパティ Title に値が代入されているので、
'代入と同時に Property Let ステートメントが実行される。
'ここで、プロパティ Title に代入された値はなぜか
'引数の strTitle に格納される仕組みになっているので、
'Property Let ステートメントの処理としては、
If Len("VBSでちょっとオブジェクト第1巻") <= 20 Then
pTitle = strTitle
Else
'となる。

'従って、pTitle に "VBSでちょっとオブジェクト第1巻" が代入される。

まあ、要は、プロパティのセットを set(プロパティ) ではなく
= で無理やりやろうとしたってことなんでしょうね
145デフォルトの名無しさん:2010/07/04(日) 12:37:31
代入にセッターを使うのは馬鹿馬鹿しい、って、VBの伝統。
146デフォルトの名無しさん:2010/07/04(日) 13:23:07
>>145
言語は java と C しかやったことがなかったので知りませんでした。
納得いく説明をありがとうございます。

もう 1 つ、VBScript に関して質問させて下さい。
メンバ変数のアクセス修飾子の意義についてです。

外部ファイル:external.vbs で定義している変数を取得したい場合、

Execute objFSO.OpenTextFile("external.vbs").ReadAll()

で取得出来ますが、Private で宣言した変数も取得できてしまいます。

java においては ※ また java の話を持ち出してしまって恐縮ですが
メンバ変数に Private をつけるのは外部からアクセスされないようにするためですが、
VBScript ではアクセスできてしまいます。

そこで、メンバ変数にアクセス修飾子を付ける意義は何だろう、と思いました。
なお、外部ファイルにアクセスする方法が上記以外にあり、
その方法においてはアクセス修飾子が有効になるとのことであれば
それについて教えていただけると幸いです。
147デフォルトの名無しさん:2010/07/04(日) 13:26:58
ReadAll って、単なるテキストファイルの内容を読むためのメソッド。
当然、スコープなんて気にしない。

所詮スクリプトなんだから、あんまり考えすぎるなよ。
Windowsでまっとうなスクリプトをやりたければ、PowerShellの方がいいよ。
148デフォルトの名無しさん:2010/07/04(日) 14:06:14
>>147
PowerShell は VBScript より便利なんですね。
自分も本当は他の言語が良かったんですが、現在の仕事の制約上しかたなくorz

細かいことが気になってしまう性格なのでまた質問することもあると思いますが
今後もよろしくお願いします m(_ _)m
149デフォルトの名無しさん:2010/07/04(日) 15:30:10
ことわる
150デフォルトの名無しさん:2010/07/04(日) 16:20:41
>146
言語仕様についてちゃんと説明されている本を一冊買っといたほうがいいよ
151デフォルトの名無しさん:2010/07/04(日) 21:24:27
>>150
アドバイスありがとうございます。探してみます。
本と Web を両方とも使いこなせるようになりたいですね
152デフォルトの名無しさん:2010/07/04(日) 22:04:35
ActiveBasic公式サイトは今日も閉鎖中だった。

ソフトをダウンロードできるところは他にないのかな?
  
153デフォルトの名無しさん:2010/07/04(日) 22:06:34
スレ違い
154デフォルトの名無しさん:2010/07/05(月) 00:06:47
>>152
スレチ

【安定版】ActiveBasicその12【4.24】
http://pc12.2ch.net/test/read.cgi/tech/1264846709/

ActiveBasic使ってる人いる?
http://pc12.2ch.net/test/read.cgi/tech/1175929781/
155デフォルトの名無しさん:2010/07/05(月) 22:04:16
スレッチだけど、やっぱり 「潮田氏の互換BASIC」 が最強ってことだな!!
  
156デフォルトの名無しさん:2010/07/07(水) 12:59:44
スクリーンをキャプチャするプログラムで、
キャプチャする前にクリップボードにあるデータを避難させたいのですが
それはデータごとに条件分岐しないとダメなんですか
157デフォルトの名無しさん:2010/07/07(水) 13:11:28
まずMSDNを読んだか?
158デフォルトの名無しさん:2010/07/07(水) 13:13:00
DDE通信がよくわからん
159デフォルトの名無しさん:2010/07/07(水) 13:13:53
>>156
私素人だけど条件分岐したほうが良いに1票投じます
160デフォルトの名無しさん:2010/07/07(水) 23:27:00
私素人だけどスクリーンキャプチャでクリップボードを使わない方法を探すと思います
161デフォルトの名無しさん:2010/07/08(木) 06:12:39
私素人だけど民主党に1票投じます
162デフォルトの名無しさん:2010/07/08(木) 12:08:32
OLEドロップでファイルを開くのと
コマンドライン引数で渡されてファイル開くのと
アプリケーションの関連付けでDDE通信でファイル開くのと

なんか分けわかんない
163デフォルトの名無しさん:2010/07/08(木) 18:36:06
国語のお勉強が先かも・・・

なんか分けわかんない ・・・ (×)

なんか訳わかんない ・・・・・ (○)
  
164デフォルトの名無しさん:2010/07/08(木) 18:38:42
2chで
誤変換をどうこう言うのってどうなのよ
165デフォルトの名無しさん:2010/07/08(木) 18:51:01
(i)
166デフォルトの名無しさん:2010/07/08(木) 19:36:38
ソーダ! 煮ちゃんで碁編缶がどうこう佑矢津は場可だな。
167デフォルトの名無しさん:2010/07/16(金) 18:19:28
VB6で扱えるファイルサイズって2GBまで?
Openで開いたBinaryファイルをByte配列に格納する場合とか
168デフォルトの名無しさん:2010/07/20(火) 17:42:13
なぜ試さないのか
169デフォルトの名無しさん:2010/07/21(水) 14:40:14
ワードでHPを作れるとからしいが
VBAの埋め込みとか出来ないよな、常識的に考えて……

ファイル管理するならCGI作らないといかんのかー
VBで出来ればと思ったんだが
170デフォルトの名無しさん:2010/07/21(水) 18:30:39
VBでCGI?
できると記憶してるが
171デフォルトの名無しさん:2010/07/21(水) 22:00:00
テキストファイルに吐くだけなんだから基本どんな言語でもできるだろ。
172デフォルトの名無しさん:2010/07/21(水) 22:57:20
ASP(いわゆる Classic ASP)でもやれば?
173デフォルトの名無しさん:2010/07/22(木) 00:35:41
VBSにしとく。
多分楽だし軽い
174デフォルトの名無しさん:2010/07/22(木) 11:17:30
>>171
そりゃWin32 API使うこと前提ならそうだけど、VB6だけじゃ無理じゃないか?
175デフォルトの名無しさん:2010/07/22(木) 13:15:09
APIつかったらVB6じゃないのかよ
176デフォルトの名無しさん:2010/07/22(木) 13:47:52
VB6の標準機能だと標準入出力が扱えないから、VBSとかの方が良いよ。
177デフォルトの名無しさん:2010/07/23(金) 22:18:02
>>174
APIなんか使わなくてもテキストファイル吐けるだろうが
178デフォルトの名無しさん:2010/07/24(土) 23:22:52
CGIは標準入出力だろう。ファイルじゃなかろう
179デフォルトの名無しさん:2010/07/25(日) 01:06:22
まあVB使うよりはVBSだよなあ
VBは入出力書かないといかんようだし
180デフォルトの名無しさん:2010/07/29(木) 19:58:03
質問です。OSはwinxpです。
VB6でbatファイルを作ってそれを実行して他のアプリを動かし、
それで出来たファイルを処理するというプログラムを作っています。
実行する所は
aaa = CreateObject("WSCript.Shell").Run("test.bat", 6, True)
としているのですが、時々そのアプリがバグで暴走し終了しない事があります。

ある一定以上の時間が経ったら強制終了させたいのですが
この場合処理待ちの所をやめにしてそこは自分でプログラムしないと
出来ないでしょうか?他に簡単な方法がありましたら教えてください。
よろしくお願いいたします。
181デフォルトの名無しさん:2010/07/31(土) 01:38:52
VB6でUTF-8のテキストファイル扱うには
やっぱADODB.Streamしか無いよね・・・・orz
182デフォルトの名無しさん:2010/07/31(土) 04:06:08
テキストファイルから
特定文字の抜き出しって
TextStreamのReadLineで一行ずつ読み込んでやるより
ReadAllで全部読み出してからのほうが早いんだな・・・
まぁよくよく考えりゃ当然か・・・・
183デフォルトの名無しさん:2010/07/31(土) 04:07:33
全部読み出すなら
TextStream使わなくっても
普通にOpenで読み込んでも変わらんな・・・
184デフォルトの名無しさん:2010/08/09(月) 17:00:05
過疎ってんな
185デフォルトの名無しさん:2010/08/10(火) 22:44:02
お前ら、早くC#の世界に行こうぜ
昔作ったくそアプリの保守なんかもうやめろよw
186デフォルトの名無しさん:2010/08/11(水) 01:05:24
MSがサポートやめるまでプログラミングをやめないぃいいい
187デフォルトの名無しさん:2010/08/11(水) 01:09:19
サポート終わってるがな
188デフォルトの名無しさん:2010/08/11(水) 07:55:16
C#めどい
189デフォルトの名無しさん:2010/08/12(木) 18:13:21
はじめまして。
VB6.0のものだと思わしきプログラムを渡されました。

もしかしてVB6.0の開発環境は無償で手に入らないのでしょうか。
自分なりに調べてみたのですが、.NETに変換するのしか見つからなかったので。
190デフォルトの名無しさん:2010/08/12(木) 18:28:17
無償とかイカレてんな
191デフォルトの名無しさん:2010/08/12(木) 20:26:43
>>190
早速のお返事ありがとうございます。

.NETだとできるんで、6.0でも同様かなとか思ってました。
変なことを言ってしまい申し訳ありませんでした。
192デフォルトの名無しさん:2010/08/12(木) 21:18:04
VB6は単品の販売もとっくに終わっているので、
MSDN Subscriptionでしか入手できなかったと思う。
あとは中古探すくらいかな。
193デフォルトの名無しさん:2010/08/13(金) 03:18:32
Frameコントロールの内部座標がTwipでムカつく。Pixelでやりたいのに
194デフォルトの名無しさん:2010/08/13(金) 03:47:04
With Picture1
 Call .Cls
 Call .Line(x1,y1)-(x2,y2)
End With

Lineのとこでエラーが出るんだけど
Withブロック内でLineメソッドって使えないってこと?
195デフォルトの名無しさん:2010/08/13(金) 03:53:42
定数名ってどう決めたほうがいい?

Public Const gcntMaxNumber
Private Const mcntLimitNumber
cntみたいなの付けて定数名にしてる?
それとも
Public Const MAX_NUMBER
Private Const LIMIT_NUMBER
大文字にして定数名つけてる?
196デフォルトの名無しさん:2010/08/13(金) 04:52:39
メソッド作るとき説明のコメント書くよね?
例えば
'目的:〜
'引数:〜
'戻り値:〜
Public Function Hoge(v)

End Function
みたいに
こういう説明ってイベントにも書いたりするの?
例えば
'説明:〜
Public Sub Command1_Click()
End Sub
みたいな感じに
197デフォルトの名無しさん:2010/08/13(金) 04:54:59
ggrks
話はそれからだ
198デフォルトの名無しさん:2010/08/14(土) 00:45:13
>195
Call .Line((x1,y1)-(x2,y2))
199デフォルトの名無しさん:2010/08/14(土) 00:46:05
ごめんうそついた
200デフォルトの名無しさん:2010/08/14(土) 02:05:43
>>194
With使う時はオブジェクトブラウザにある書式でやればおk
Sub Line(Flags As Integer, X1 As Single, Y1 As Single, X2 As Single, Y2 As Single, Color As Long)

With Picture1
Call .Line(Flags,X1,Y1,X2,Y2,Color)
End With
201デフォルトの名無しさん:2010/08/14(土) 02:13:52
Flagsは
かなり面白いよ

Private Sub Picture1_Click()
Static p%
Me.Caption = Hex(p)
With Picture1
Call .Cls
Call .Line(p, 50, 50, 100, 100, vbRed)
End With
End Sub

これで試すといい
202デフォルトの名無しさん:2010/08/14(土) 02:14:42
Private Sub Picture1_Click()
Static p%
Me.Caption = Hex(p)
With Picture1
Call .Cls
Call .Line(p, 50, 50, 100, 100, vbRed)
End With
p=p+1     '←この行が抜けてた
End Sub
203デフォルトの名無しさん:2010/08/14(土) 02:18:58
Function bi(p)
If p < 2 Then
bi = p
Else
bi = bi(p \ 2) & CStr(p Mod 2)
End If
End Function

Private Sub Picture1_Click()
Static p%
Me.Caption = bi(p)
With Picture1
Call .Cls
Call .Line(p, 50, 50, 100, 100, vbRed)
End With
p = p + 1
End Sub

2進数にしたほうがわかりやすいかも
204デフォルトの名無しさん:2010/08/15(日) 00:29:36
やっとの思いでVB6.0Professionalを入手しました。
ちょっと時代遅れ気味ですがVC++と連携でアプリを
書く予定です。
参考書を探しているのですが、おすすめの本があったら
教えてください。
なお自分でも探してみたのですが、安価な本はどうも
内容が薄すぎて参考にならないことがわかりました。
この本は非常に高価ですが有益なのでしょうか?
http://www.amazon.co.jp/dp/4839902003/
ご存知でしたら教えてください。
205デフォルトの名無しさん:2010/08/15(日) 01:17:05
ひょっとして、そのネタを振るためにわざわざわざとらしい質問してたのかな。
なんていうか、同じ暇つぶしでももっと有意義なことした方がいいんじゃないのか。
206デフォルトの名無しさん:2010/08/15(日) 01:24:52
無意味な質問では無いと思う
VBの場合、初期段階の頃盛んに良い参考書が出版されたが
Office VBAの出現やJavaの出現、Internet周りのWebアプリ
の出現、極めつけは超難解言語VB.NETの出現に押されてか
もともと貧弱だった参考書市場が一気に縮小
その割には結構使われてるし需要があるという奇妙な状況にな
って久しい。>>204の本が異常な価格が付いているのは
Amazonの査定がいい加減というわけでもなくて、何か
とんでもなく重要な情報が書かれているとかそういうん
じゃないの?ま、ちょっと危ない感じだから手は出さない
ほうがいいと思う。(出せないだろうがw)
207デフォルトの名無しさん:2010/08/15(日) 04:31:32
▼▼Visual Basic 6.0 プログラミング入門▼伊藤博康▼基本**
http://page18.auctions.yahoo.co.jp/jp/auction/w51145893

こっちで同じ本が790円ででてるから
買ってあげろ。

7月27日にコメント追加しているところを見ると
今までずっと売れてねーから。

この本かって、Amazonで100万円ぐらいで売れるんじゃねーの?
Amazonでついてる2千万という値段からすれば、格安だろ。
儲けられるぜ
208デフォルトの名無しさん:2010/08/15(日) 10:43:18
>>206
アマゾンは中古本の査定なんてしない。
っていうか、君質問者自身じゃないのか
209デフォルトの名無しさん:2010/08/15(日) 12:27:23
なんで今更VB6?
210デフォルトの名無しさん:2010/08/16(月) 03:30:14
>>209
VB6のシンプルな文法が好きって人も多いかも
(VBAのほうが良いのだろうがコンパイラがない)
.NETのVBは難し杉
まぁ一部文法以外はほとんど使う必要などないのだろうが
新しい文法を使ってみたいというのが人情というもので無理に
使う奴が必ず居てそれを読まされたりして苦労する
211デフォルトの名無しさん:2010/08/16(月) 06:37:08
そういう意味じゃなく、既にディスコンになって久しく、サポートも終了、入手困難、この先使い潰しの利かない
VBを勉強してどうなるのか、って話。参考書が必要なレベルなら素直にC#にするべきだと思うがな。
VBはやりたいことが素直にできないことが多い、無駄の多い言語環境だと思うよ。意味不明な仕様も多いし。
212デフォルトの名無しさん:2010/08/16(月) 06:48:46
単に、そういう仕事があるから「やれ」って言われただけじゃね?
213デフォルトの名無しさん:2010/08/16(月) 17:23:30
VB6以前で作られたソフトウェアのメンテナンス?まだ使ってる企業あるの?
214デフォルトの名無しさん:2010/08/16(月) 20:12:13
あるよ。システム入れたら、15年、20年使う企業もあるし、
2000年当時、VB6は現役だったしね。
215デフォルトの名無しさん:2010/08/16(月) 21:43:22
まだVB4ですが・・・
216デフォルトの名無しさん:2010/08/17(火) 09:01:16
>>213
うちは .NET に移行してるけど
まだ VB5 のバージョン使ってるお客さんも居るよー
大人の事情で面倒見ないとイカンのよね
217デフォルトの名無しさん:2010/08/17(火) 09:53:52
VB.NETはC#以上に「何でもあり」な言語だからなw
その点は十分に注意しなければならないが
218デフォルトの名無しさん:2010/08/17(火) 14:33:47
は?
219デフォルトの名無しさん:2010/08/17(火) 15:03:01
220デフォルトの名無しさん:2010/08/17(火) 15:06:52
>>207
添付CDがないからその価格
添付CD付きだと最早3000万円らしい
221デフォルトの名無しさん:2010/08/17(火) 17:24:23
よほど重要なファイルが添付
CDにあるんだろうな
222デフォルトの名無しさん:2010/08/18(水) 00:04:07
未だにN88BASICが稼動している会社があるぐらいだから
VB6は余裕で現役
223デフォルトの名無しさん:2010/08/18(水) 00:37:30
ついに突破!
37,887,200
224デフォルトの名無しさん:2010/08/18(水) 21:14:47
触るな汚れる
225デフォルトの名無しさん:2010/08/18(水) 23:35:27
>>222
うちの大学でも実験用装置の動作プログラムがN88BASICだった・・・
古いプログラムで新しいの作れる人いないからずっと使い続けてるって言ってたな・・・
226デフォルトの名無しさん:2010/08/20(金) 00:21:43
>>204
8千万円!
幾ら何でもなんかありそう
227デフォルトの名無しさん:2010/08/20(金) 14:06:57
初心者です。すみませんがどなたか教えて下さい。
家庭内LANに接続された2台のPCがあります。
IPアドレスはぞれぞれ、192.168.0.1と192.168.0.2です。
このとき、192.168.0.1のほうのPCで動作させているVB6のプログラムから、
192.168.0.2のほうのPCのc:\dataというフォルダにファイルの書き込みを
行いたいのですが、ディレクトリの指定はどのようにすれば良いのでしょうか?
また、ファイル(フォルダ)の共有など必要な設定があればこちらについても
教えて下さい。
宜しくお願い致します。
228デフォルトの名無しさん:2010/08/20(金) 14:09:31
バージョン名を明記の上でWindows板で再質問
>>204でわかるようにVBスレで質問すると
高くつくよw
229デフォルトの名無しさん:2010/08/20(金) 14:23:47
>>227
open "\\192.168.0.2\c$\data\hoge.dat" for output as #1
230227:2010/08/20(金) 14:29:19
>228,229
ありがとうございました。
231デフォルトの名無しさん:2010/08/20(金) 14:31:48
ネットワークドライブはネットワークドライブにマ
ウントしてアクセスするのがマナー
(IPアドレス直書きはできてもしないで澄むのならし
ないようにしたいもの)
232デフォルトの名無しさん:2010/08/20(金) 16:25:06
>>229
こんなこと出来るのか・・・知らんかったわ
233デフォルトの名無しさん:2010/08/20(金) 19:52:56
そんなマナーないよ。
234デフォルトの名無しさん:2010/08/20(金) 20:27:37
>>231 マナーじゃなくてセオリーね
¥¥IP-addrで識別してくれるかはネットワーク構成に依存だったような
記憶。
235デフォルトの名無しさん:2010/08/20(金) 20:29:44
ソース出せよ
適当なこといいすぎ
236デフォルトの名無しさん:2010/08/20(金) 20:30:07
そんな依存もないよ。

Kerberos認証で問題になることはあるけど。>IP
でも、ホスト名での接続なら問題なし。
237デフォルトの名無しさん:2010/08/20(金) 22:49:39
大抵の企業LANですらそうなのだから、家庭LAN程度だったら
普通コンピュータ名付けてアクセスし、共有フォルダーも
ネットワークドライブに割り当てるだろ
238デフォルトの名無しさん:2010/08/20(金) 22:54:28
何言ってるの?
239デフォルトの名無しさん:2010/08/20(金) 23:10:08
ネットワークドライブは、太古にはフリーズの原因で嫌われた
共有フォルダーはしょうがないがコンピュータ名(女の子の名前
が多かったりする)付けるなんて古過ぎ(何、このおっさん)
特に家庭LANでそれやってたらカワイソス
企業LANでもIPプリンタ当たり前のこの時代にIP指定は
規定じゃんw
240デフォルトの名無しさん:2010/08/21(土) 01:06:11
ネットワークドライブはないわ。30年前の常識かな。
241デフォルトの名無しさん:2010/08/21(土) 01:14:49
誰か、賛同してやれよw
242デフォルトの名無しさん:2010/08/21(土) 01:22:36
まあ、どこまでマジで言ってるのか分からんが、
>>239みたいな抽象化という思考ができないタイプって、
例えばシステムディレクトリを"C:\Windows"って決め打ちしてあるような
糞コードを書くVBerなんだと思う恐らく。
243デフォルトの名無しさん:2010/08/21(土) 01:32:22
抽象化と象徴化の区別が出来ているVBerは優秀だと思う
244デフォルトの名無しさん:2010/08/21(土) 02:04:35
どっちも意味不明な言葉
プログラミングの入門本レベルの言葉じゃ無さそう
245デフォルトの名無しさん:2010/08/21(土) 02:15:51
入門以前の言葉だったりして...
246デフォルトの名無しさん:2010/08/21(土) 02:52:59
日本語としての意味は知ってるわ
ことプログラミングに用いた場合どういう意味になるかってこと
絵画や文学でも抽象化とか象徴化とか言ってそのまんま日本語の意味で使わないだろ
247デフォルトの名無しさん:2010/08/21(土) 02:55:00
何をどう抽象化するのかとか
何をどう象徴化するんかとか
分からんだろ
248デフォルトの名無しさん:2010/08/21(土) 04:24:57
お前らを嘲笑
249デフォルトの名無しさん:2010/08/21(土) 08:58:46
コンピュータ名に女の子の名前か・・・おらわくわくしてきた
250デフォルトの名無しさん:2010/08/21(土) 09:42:42
うちの高校は商業科なのですが
Vb6を教えています
なんでも、全国商業高校連盟がVB6かCOBOLを教えろって決めてるらしいです
クラスメイトがかわいそうです
どうしたらいいですか?
251デフォルトの名無しさん:2010/08/21(土) 11:19:08
おまえのちんこをうpすればいいよ
252デフォルトの名無しさん:2010/08/21(土) 12:10:35
全国商業高校連盟にPTAを名乗ってクレームの電話しる
253デフォルトの名無しさん:2010/08/21(土) 13:48:56
高校の授業ならアルゴリズムの考え方を理解するのが
目的なんでわかりやすい言語ならなんでもいいんだよ。

オブジェクト指向はもとより関数というものさえ
必要ない程度だからな。

変数と四則演算と繰り返しと比較ぐらいの
文法があれば良い程度のことしかしない
254デフォルトの名無しさん:2010/08/21(土) 14:11:25
最近のプログラミング言語に初心者向きな言語ってあまりなさそうだからな
大学入試センター試験の数学ってまだ古い行番号BASICの使ってるのかな?
255デフォルトの名無しさん:2010/08/21(土) 14:13:09
ageてまで言うことかよ
256忍者Perl ◆M5ZWRnXOj6 :2010/08/21(土) 15:47:46
>>250
COBOL教えてどうするんですか?
COBOLってイメージカラーが黄色で電気タイプみたいです
バカって一生勉強ですよね 成果物も作れず
ブログとかに、「沢山やりたいことがありすぎて困る!C,C++,JAVA,Python,PHP,VB
日々勉強中」
とか書いてそうなノウタリンですか
ありがちな自己紹介分です
頭使ってますか?それともクソガリだから脳味噌に栄養が行き届いていない栄養失調の孤児ですか?
30〜40代くらいのオッサンはやたらとCOBOLとかわめくんですが 社交辞令みたいなもんですか
>>253
関数使うんですが、メソッド覚える時に必要ですよね 頭平気ですか?
なんかバカ派遣企業のITオタみたいですね 頭わいてますか?頭わいてますね?
クソバカゴミコード書いてるんでしょう

とりあえずここのスレレベル低いですね
君達の書き込み見させていただきましたが・・・ 馬鹿が書き込みに滲み出ていますよ(笑)
257デフォルトの名無しさん:2010/08/21(土) 16:09:08
VBスレでCOBOLの話すんなよ
258忍者Perl ◆M5ZWRnXOj6 :2010/08/21(土) 16:10:28
キモバカゴミがほざいてますね
VBのスレなんてゴミだから何でも話していいんですが^^;
259デフォルトの名無しさん:2010/08/21(土) 16:11:01
COBOL - Wikipedia
ttp://ja.wikipedia.org/wiki/COBOL


過去に政府や企業の膨大なデータがCOBOLによって処理され蓄積されているため、
現在でもCOBOLによって電算処理されている情報は膨大な数に上る。
現在でも稼動しているCOBOLによるコードは2000億行に上るとされており、
これはFORTRANとアセンブラを合わせた数十億行に比べても圧倒的に多い。

このように誕生から半世紀たっているにもかかわらず、今なお主流言語として使用されている点で、
他の初期の言語とは大きく異なる(2000年時点の世界の民間企業の8割、2009年の日本国内の調査で17.1%で2位[1])。
260忍者Perl ◆M5ZWRnXOj6 :2010/08/21(土) 16:11:28
VBやってるやつってバカばっかですよね



頭がいい人はPerlをやるんですよ


低能はVB(笑)
261忍者Perl ◆M5ZWRnXOj6 :2010/08/21(土) 16:12:34
クソバカゴミほど政府で使われてるとほざきたがる(笑
262デフォルトの名無しさん:2010/08/21(土) 16:12:45
VBスレでCOBOLの話すんなよ
263デフォルトの名無しさん:2010/08/21(土) 16:15:10
>VBやってるやつってバカばっかですよね

あたりまえだろ・・・
学校でも教えたりするし
ExcelでVBAが入ってるんだから
VBを使う人間は色んな奴がおるんだから
他の言語やってる人たちと比較すりゃ
平均的にバカになるだろ
264忍者Perl ◆M5ZWRnXOj6 :2010/08/21(土) 16:15:23
同じ事しか言えない 認知賞(笑)
265デフォルトの名無しさん:2010/08/21(土) 16:16:28
>>258
それは2ちゃんねらーとしてマナー違反だな
266デフォルトの名無しさん:2010/08/21(土) 16:17:52
忍者Perlさんは低脳を相手にするくらい頭がいいんですね。
267忍者Perl ◆M5ZWRnXOj6 :2010/08/21(土) 16:18:22
>>263
Perlやってるやつらはハイレベルっすよ!!


NARUTOでいう暁レベルっすね!

君達VB組は いつまでたっても下忍レベルっすね!!

シュッシュッシュ!!カゲブンシン!!

VBAってなんですか!!!しらねーんですがね!!シュッシュッシュ!!シュッシュッシュ
お尻プリプリーーーーーーーーーーーープリプリー!!!



VB使ってるやつはバカなんっすね!!!!!!!!!!!認めましたか!!!!


死ねっ!!!!(笑)
268デフォルトの名無しさん:2010/08/21(土) 16:19:47
>>267
VB使い → バカ
Perl使い → ハイレベル

それは分かった
それで結論は?何が言いたいのか分からないんだけど。主張は何?
269デフォルトの名無しさん:2010/08/21(土) 16:21:55
うずまきナルトは下忍だけど木の葉で一番強いんじゃなかったっけ?
270デフォルトの名無しさん:2010/08/21(土) 16:22:43
下忍のナルトさんが暁のメンバーを何人か倒してたよな
271デフォルトの名無しさん:2010/08/21(土) 16:23:35
272デフォルトの名無しさん:2010/08/21(土) 20:53:51
Perlやってる自宅警備員、か。
273デフォルトの名無しさん:2010/08/21(土) 23:23:52
このスレはいつもこの程度の話題で盛り上がるよね
274Perl忍者仙人モード ◆M5ZWRnXOj6 :2010/08/22(日) 20:27:06
この程度ってほざいてる時点で、笑いにクオリティ求めてる
お笑いブームに便乗したチンパンジーニアスですね。









フッ(笑)
275デフォルトの名無しさん:2010/08/22(日) 20:38:04
誰か相手してやれ
276デフォルトの名無しさん:2010/08/22(日) 21:08:20
やなこった
277Perl忍者仙人モード ◆M5ZWRnXOj6 :2010/08/22(日) 21:08:28
人間、力でも脳味噌でも勝てない相手を見つけると

無視をして勝ち誇りますからね

君の言動そのものですよ


大人の対応=無視

ネットなのに大人ぶってるごみども死んだ方が良いよ
278デフォルトの名無しさん:2010/08/22(日) 21:13:44
6ヶ月ぶりにレスしたらPerl忍者が来たでござる、の巻
279Perl忍者仙人モード ◆M5ZWRnXOj6 :2010/08/22(日) 22:40:43
>>278
君、Perlできるかね?
良かったら俺のチームはいらない?
280デフォルトの名無しさん:2010/08/23(月) 02:34:52
89 名前:Perl忍者仙人モード ◆M5ZWRnXOj6 [] 投稿日:2010/08/22(日) 20:35:52 ID:mFvITFpR
ばかじゃんサービスとか
自宅サーバなどwebアプリ開発とか所詮そんなもんだろ
くだらね

バカの極み 仕送りして無様な生き様かましてるゴミそうだし
人生終らした方が良いかもねバカは(笑)
281デフォルトの名無しさん:2010/08/24(火) 19:33:34
>>204
もう2億5千万円を超えてる
何か異常なことが起きてるみたいだ
282デフォルトの名無しさん:2010/08/24(火) 20:31:08
CDの有無で3円差か…。
類似した商品から提示されたタグ

ぼったくり出品者に注意(4)
にワロタ
283デフォルトの名無しさん:2010/08/25(水) 00:39:01
ブックオフを何件か回れば発掘できそうな気もしなくもないが
神保町や秋葉原あたりならありそう
284デフォルトの名無しさん:2010/08/26(木) 23:46:40
>>281

ソフトウェア自動更新のバグ。


他の人より自動的に安い価格にしてくれるソフトがあって、
設定しだいでは、他の人よりちょっとだけ高い価格にもしてくれる。
(それでもコメントがよければ、高く売れる可能性がある)

というのを両者がやっていると、
どんどん、あいてより高い値段に自動更新されていく




のかもしれないね。
285デフォルトの名無しさん:2010/08/27(金) 16:50:34
>>204
5億5000万円
ベンツ新車普及品上クラスでも10台は買える
286デフォルトの名無しさん:2010/08/27(金) 16:57:44
>>204
これって出品者が値段決めてるの?
287デフォルトの名無しさん:2010/08/27(金) 23:28:56
>>286
中古なんだから出品者が自由に決められる。
288デフォルトの名無しさん:2010/08/28(土) 01:58:22
つまり出品者の頭がイカれてるてことか
289!omikuji:2010/09/01(水) 01:04:10
なんだか過疎ってね
290デフォルトの名無しさん:2010/09/01(水) 15:31:14
>>204
でもう10億円突破は間近
これって金融筋のい貸付資産評価額
操作とかじゃね〜の?
291デフォルトの名無しさん:2010/09/03(金) 12:04:06
>>204
売れたみたい。ROM無しのほうが10億円で?
しかし売れ残りROM付きは大暴落で2000円弱
292デフォルトの名無しさん:2010/09/03(金) 21:01:33
値段気づいて戻したらすぐに売れたとかじゃね
293デフォルトの名無しさん:2010/09/04(土) 03:52:42
つ 粉飾決算
294デフォルトの名無しさん:2010/09/05(日) 00:41:15
OS:winXP
ver:VB6 SP6

やりたいこと:
自作のクラスに「Index」というプロパティを追加したい。

やったこと:
自作のクラスに「Index」というプロパティを追加すると、
ファイル読み書き用のIndexと被ってるから定義できませんでした。

質問:
自作のクラスに「Index」というプロパティを追加する方法はありますか?
295デフォルトの名無しさん:2010/09/05(日) 00:52:10
なんか、Forを変数名に使いたい、とかいうのに似ている気が
296デフォルトの名無しさん:2010/09/05(日) 00:57:46
Indexという名前を諦めるのが一番早い
Index2でもMyClassIndexでも適当に名前を変えろ
297デフォルトの名無しさん:2010/09/05(日) 01:05:20
>>294
何も考えずに普通に出来るけど...
何を寝ぼけたことを言ってるんだ?
298デフォルトの名無しさん:2010/09/05(日) 01:50:36
Public Index

Public Sub Hoge()
Index=5
Dim Index
End Sub

とかしてるんじゃね
299デフォルトの名無しさん:2010/09/05(日) 08:56:45
vbaとaccessで作られているwindowsソフトを自分で作りたいのですが、代わりになる言語は何かありますか?
また、このソフトのファイルから、コードを戻すみたいなことは出来るんでしょうか?
300デフォルトの名無しさん:2010/09/05(日) 09:32:18
ない&無理
301デフォルトの名無しさん:2010/09/05(日) 09:47:52
了解!ありがとう!
302デフォルトの名無しさん:2010/09/05(日) 11:30:21
VBAはどっかのファイルにテキストとして埋め込まれてるんじゃね?
暗号化されてるだろうけど
303294:2010/09/05(日) 12:58:47
めちゃめちゃごめんなさい。
「Index」ではなくて、「Input」でした。
すいません寝ぼけてました。
「Index」だったら普通にいけますね。
「Input」だったらエラーになってしまいます。
よろしくお願いします。
304デフォルトの名無しさん:2010/09/05(日) 13:01:52
つ 予約語
305デフォルトの名無しさん:2010/09/05(日) 13:10:00
lnput とかにしとけ。
306294:2010/09/05(日) 14:49:08
やっぱり無理なんですね。
他のクラス(MSのライブラリ)と同じ作りにしたいので、別名にはしたくなかったのですが。。。

他クラスに1枚ラップして、対応しかないですね。。。
307デフォルトの名無しさん:2010/09/05(日) 14:50:08
>>302
お、詳しく知りたいです。だとしたクラック可能ってことですか?
308デフォルトの名無しさん:2010/09/06(月) 09:20:48
自分で調べようとしないのか?
309デフォルトの名無しさん:2010/09/06(月) 19:28:14
mdbはデコンパイル出来るみたいですね。なんとかなりそうです。ありがとでしたー
310デフォルトの名無しさん:2010/09/07(火) 22:10:53
Private Sub Command1_Click()
Dim hoge1 As New hoge
Dim hoge2 As New hoge
Dim hoge3 As New hoge
Dim hoge4 As New hoge
Dim hoge5 As New hoge
Dim hoges(4) As New hoge

Set hoges(0) = hoge1
Set hoges(1) = hoge2
Set hoges(2) = hoge3
Set hoges(3) = hoge4
Set hoges(4) = hoge5

Call test(hoges)
End Sub

Private Sub test(hoges() As IHoge)
Dim num As Integer
On Error Resume Next
num = UBound(hoges)
On Error GoTo 0
MsgBox num
End Sub

hogeクラスはIHogeクラスをimplementsしたクラスなのですが、
配列にするとエラーではじかれてしまいます。
これはこういうものと受け入れるものなのでしょうか?
311デフォルトの名無しさん:2010/09/07(火) 22:25:28
vb6でimprlementsってできたっけ?
312デフォルトの名無しさん:2010/09/07(火) 22:27:03
>>311
可能ですが…
313デフォルトの名無しさん:2010/09/07(火) 22:29:14
普通はコレクションにするわな。
314デフォルトの名無しさん:2010/09/07(火) 22:31:16
Newで宣言してSetしてるからじゃね?
Dimo hoges(0 To 4) As hoge
でいい気がするが
315デフォルトの名無しさん:2010/09/07(火) 23:14:39
VB6で配列がどういう扱いだったか忘れたけど、
要するにHogeの配列とIHogeの配列は別物ってことでしょ。

ドトネトでいう「配列の共変」をサポートしてないんだろう。
316デフォルトの名無しさん:2010/09/08(水) 02:32:14
Dim hoges(4) As New hoge



Dim hoges(4) As IHoge

にすればいんでね?
317310:2010/09/08(水) 19:19:16
皆様、回答ありがとうございました。

>>313

開発の縛りでVB6、かつ、Genericsがないという事で、コレクション使用禁止な縛りです。

>>314>>316
あ、Newいらなかったですね。

>>315
やっぱそういう事になりますかあ…

318デフォルトの名無しさん:2010/09/08(水) 20:07:50
Generics?
319デフォルトの名無しさん:2010/09/08(水) 22:10:35
オブジェクト指向とかやめたほうがいい
320デフォルトの名無しさん:2010/09/08(水) 22:27:34
なぜ
321デフォルトの名無しさん:2010/09/08(水) 22:56:41
ジェネリックスじゃないコレクションが使えるだろ。
322デフォルトの名無しさん:2010/09/09(木) 00:09:59
Dim korekusyon As New Collection
Dim hoge1 As New Hoge

korekusyon.Add hoge1

For Each v In korekusyon

Next
323デフォルトの名無しさん:2010/09/09(木) 00:24:08
やっぱりVBerって>>319, >>321-322みたいな人が多いんだな。

改めてここの人の指摘、正しいと思うわ
http://blogs.wankuma.com/jeanne/archive/2006/08/02/34597.aspx
324デフォルトの名無しさん:2010/09/09(木) 01:03:39
VB6でオブジェクト指向プログラミングって出来たんだっけ?
325デフォルトの名無しさん:2010/09/09(木) 01:41:33
ケチつけたいだけなら部屋の隅でやってくれないかな
326デフォルトの名無しさん:2010/09/09(木) 04:25:36
>>324
VBの文法くらい(特にVBA)オブジェクト指向的なものはない
というかVB系(VBA VB.NET VBScript)では空気や
水みたいな感覚
特にあえてオブジェクト指向と言う必要はもないと思いまつ

Cにクラス概念メソッド概念とかを追加して
C++にしてそれをオブジェクト指向だというの
はC系言語の世界で閉じた話
327デフォルトの名無しさん:2010/09/09(木) 08:47:00
クラスモジュール禁止なプロジェクトが多かったよ
例外なくデスマ
328デフォルトの名無しさん:2010/09/09(木) 08:51:47
クラスはいいけどimprementsはいらないなー
329デフォルトの名無しさん:2010/09/09(木) 11:50:35
まあ俺ほどVB6を使いこなしてる人間もいないと思うけど
330デフォルトの名無しさん:2010/09/09(木) 12:00:43
はいそうですね



そういや
「俺ほどCOBOLに精通してる奴はそう居ないな」
とか言ってた元上司は今何してんだろ・・・
331デフォルトの名無しさん:2010/09/09(木) 12:44:23
コボラーとして人に噛み付きまくってますw
332デフォルトの名無しさん:2010/09/09(木) 13:16:32
VB6しか知らないけど、オブジェクト指向とかその言葉の意味すらわかんないや
VB6は趣味でたまに仕事に使ってるが今から新しく覚えようとも思わないし、
自分の作りたいものがVB6でできるならオブジェクト指向とかどうでもいいよ
それなりに動いて保守もできれば文句はないよ。どうせ俺が死んだら今の会社はなくなるんだし
ソースを別の人が読めないとかどうでもいいね。死んだ後のことは生き残った人がどうにかすればいいよ

だからVB.NETは難しくてわからない。
333デフォルトの名無しさん:2010/09/09(木) 13:35:00
構造化プログラミング?
334デフォルトの名無しさん:2010/09/10(金) 00:32:56
>332
それはそれでいいんじゃね
335デフォルトの名無しさん:2010/09/11(土) 16:44:38 BE:811976437-2BP(1201)
仕事でVBからexcelを編集するプログラムを作ろうと思い
参照設定でexcel2000が入っておらずどのようにexcel2000の参照設定をしたらいいのですか
336デフォルトの名無しさん:2010/09/11(土) 16:56:02
参照設定はしないほうがいい
337デフォルトの名無しさん:2010/09/11(土) 17:01:28
開発が楽なんで開発時は参照設定をすることがあるな。
338デフォルトの名無しさん:2010/09/12(日) 18:13:03 BE:695980229-2BP(1201)
あと参照設定でexcelのどのバージョンでも動くようにするにはどうするのですか
339デフォルトの名無しさん:2010/09/12(日) 18:16:46
無理。
340デフォルトの名無しさん:2010/09/12(日) 19:00:45
いやいやエラーが発生したら遅延バインディグでリトライするコードを書くだけ。
実際にバージョン違いでエラーが発生するメソッドはそうはないから、
必用なコード量はたいしたことない。

VBerは諦めが早いっていうか、このての普通の知恵が回る人って少ないよな。
341デフォルトの名無しさん:2010/09/12(日) 19:05:29
最初っからレイトバインドすればいいだけ。
342デフォルトの名無しさん:2010/09/12(日) 19:10:29
そういうのを「羹に懲りて膾を吹く」といいます。
古来、お馬鹿さんの見習いたくない傾向を表現したことわざです。
343デフォルトの名無しさん:2010/09/12(日) 19:19:13
わざわざアーリーバインド、レイトバインドを両方やる、なんて方が
よっぽど間抜けだと思うんだが。
344デフォルトの名無しさん:2010/09/12(日) 19:25:19
真面目な話、そんな考え方してるからVBerって笑われるんだよ。
っていうか、誰が積極的に両方やるなんて言ってるんだ?

エクセルのバージョン違いで動かない部分に関しては、
危険で面倒な遅延バインディングを使えばいい(使うしかない)と言ってるだけだが。
345デフォルトの名無しさん:2010/09/12(日) 19:26:39
> いやいやエラーが発生したら遅延バインディグでリトライするコードを書くだけ。

って、

> あと参照設定でexcelのどのバージョンでも動くようにするにはどうするのですか

への答えになってないじゃん。>>339 の言ってることは間違ってないな。
346デフォルトの名無しさん:2010/09/12(日) 19:27:27
4.0より前のC#ならいざ知らず、別に危険でも面倒でもない。
347デフォルトの名無しさん:2010/09/17(金) 09:51:02
すみません。下記をVB6でやるにはどうすればよいでしょうか?
下記はVB.NETのコードです。

Dim o As Control
For Each o In Me.Controls
 If o.GetType Is GetType(TextBox) Then
  o.Enabled = False
 End If
Next
348デフォルトの名無しさん:2010/09/17(金) 16:00:29
3行目を
If TypeName(o) = "TextBox" Then

If TypeOf o Is TextBox Then
とか?
349デフォルトの名無しさん:2010/09/17(金) 16:12:11
>>348
ありがとうございます。できました。
350デフォルトの名無しさん:2010/09/20(月) 10:09:01
VB6.0のDTPickerについて教えて下さい。

DTPickerをキーボードで入力する際、以下の動きを実現させたいのですが可能でしょうか?

・年入力→Enter→月入力→Enter→日入力→Enter→次のコンポーネントへカーソル移動

現在、DTPickerでのEnter時に右カーソルを割り当てて、Enterで年→月→日の移動は行えている状態です。
ですが、日入力後は次コンポーネントへ移動させたいので、現在入力している箇所を取得できるような方法が知りたいです。
(Tabで移動させれば?と言うのは無しでお願いします・・・。)
351デフォルトの名無しさん:2010/09/20(月) 14:31:18
補足です。
プロパティがわからなかったのでコードで実現しようと
以下のコードを書いたのですが、keycodeにkeyTabを設定しても
次コンポーネントへ移動しませんでした。
画面からTabキー押下ではちゃんと次へ移動するのですが・・・。

----------
Private Sub dtp_change_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyReturn
If Shift = 1 Then
KeyCode = vbKeyLeft
Else
If Right(gs_date, 2) = CStr(Right(frm_main.dtp_change.Value, 2)) Then
KeyCode = vbKeyRight
Else
KeyCode = vbKeyTab
End If
End If
gs_date = frm_main.dtp_change.Value
End Select
End Sub
----------
*gs_date はdtpickerが編集される前の値が入っています。
352デフォルトの名無しさん:2010/09/20(月) 14:38:26
そーゆーのは無理。やりたければ、keybd_eventなりSendInputなりで、
TAB押下をエミュレート。
353デフォルトの名無しさん:2010/09/20(月) 14:58:18
>>352
回答ありがとうございます。
そちらの方法でやってみますm(__)m
354デフォルトの名無しさん:2010/09/24(金) 18:54:42
Collectionを空にするときって
Dim c As New Collection
というコレクションとして

Do While c.Count>0
 c.Remove 1
Loop



Set c = New Collenction
(同じコレクションを参照するほかの変数とか無いとして)

とどういう違いあるの?
355デフォルトの名無しさん:2010/09/24(金) 22:11:23
前者は既存のインスタンス内のitemを1つずつ除去
後者は新しくインスタンスを生成
356デフォルトの名無しさん:2010/09/25(土) 00:42:27
As New
ってアリなの?
なんかその変数にアクセスした段階で勝手にインスタンス作ってIs Nothingでチェックの意味がないとかなんとかどっかで見たような
357デフォルトの名無しさん:2010/09/25(土) 01:10:08
358デフォルトの名無しさん:2010/09/25(土) 01:12:46
ttp://blogs.wankuma.com/ognac/archive/2006/11/24/46934.aspx

これのことか
これは不気味だな
359デフォルトの名無しさん:2010/09/25(土) 01:18:01
Class1にHogeという関数があるとして

Dim c As Class1
Set c = Nothing
c.Hoge ←実行時エラーが出る

一方
Dim c As New Class1
Set c = Nothing
c.Hoge ←実行時に自動的にインスタンス生成されHogeが実行される。途中にNothing代入してもだ

という話?
360デフォルトの名無しさん:2010/09/25(土) 01:26:23
>>354

左を向くのと、
右を向いて右を向いて右を向くのでは
結果は同じでも、やっている処理はぜんぜん違う。

最終的には同じように見えるかもしれないが
やっている内容はぜんぜん違う。
361デフォルトの名無しさん:2010/09/25(土) 20:40:42
入門書なんか見るとAs New使ってるのが多かった記憶があるな
362デフォルトの名無しさん:2010/09/25(土) 23:03:58
As New宣言はVariantと同じで、使うべく所には使えばいいが、それ以外で無闇やたら使うなってだけ
このスレでもクラスをうまく理解してない人多いんだなぁ VB6erの俺としてはちょっとガッカリした

>>354がこんな疑問を抱いたのはたぶん
「オブジェクト変数の宣言文はAs Newと書く」と間違って覚えてるから
New宣言文はできるだけ使わないほうがいいよ、バグの温床になるし実行速度もやや下がる

>>356, >>357, >>358
不気味かな? 気持ち悪いのは単にこの仕様を知らずに使ってる人を見たときだけだろ
Form1なんかは有無を言わさず常にAs Newの動きをしてるんだが気付いてる?
たしか、As Formでインスタンス作ると普通の振る舞いをするが、As Form1で作るとAs Newと同じ動きをしてしまう
(破棄した後もアクセスすると復活してくる。仕様を知らなきゃゾンビみたいで気持ち悪かろう)

363デフォルトの名無しさん:2010/09/25(土) 23:18:33
あーそうだったそうだった
破棄したのにアクセスしたらもどっちゃうんだっけ
たしかに気持ち悪かった
364デフォルトの名無しさん:2010/09/25(土) 23:33:25
Form1 の暗黙のインスタンスはまた別の話じゃね?
365デフォルトの名無しさん:2010/09/25(土) 23:54:23
>>362
俺は上の人たちと別人なので同じ見解かどうかわからないが、
やっぱり「気持ち悪い」のは、仕様の実態はNothingでアクセスされた時に
暗黙的にインスタンスが自動生成される特殊な変数宣言なのに、構文だけ見ると
一見変数を定義と同時に初期化しているように見えるからでしょ。
366362:2010/09/26(日) 00:31:46
>>354
あーごめん、よく考えたら質問の答え書いてなかった
以下の条件なら違いはない(ので=Newのほうが好ましい)

・このCollectionのインスタンスを他から一切参照していない
・Collection内のすべての要素を破棄する

内部的にやってる事はまるで違うが「cが空のCollectionになる」という結果は同じ
=NewするとObjPtr(c)の値が変化するが、c以外誰も参照していないなら問題にならない

これは考え方の違い。変数cについて考えるか、cが参照しているコレクションについて考えるか。
cを空にしたいだけなら=Newでいいが、コレクションの中身をすべて消したいのならいちいち.Removeするしかない

もし仮にこのコレクションのインスタンスが他の場所でDとして参照されている場合、
cに=NewしてもDのコレクションは空にならずそのまま残る。
このコレクションがc以外の手に渡る可能性があるならこういうコードになるよ

--------------
>>364
別といえば別だけど、まぁ動きを理解するのにいいかと思って書いた。誤解を生んだらごめん
でもフォームも(やや特殊だけど)ベースはクラスと同じもんなんだって事を知っておいて欲しいんだわ

>>365
一見って事は仕様を理解してないって事だと思うんだ(VBを理解してないというか)
As Newの存在とVariantは何が違う? それともVariantの存在も絶対悪と考えてる人?

まぁグローバルでAs New使ってるようなコードに出会ったら気持ち悪いと思うのはわかるw
でもいろいろ熟考した結果、ここはAsNewしかないと思えば使えばいいと思う
つーか言語仕様の賛否は不毛なのでもうやめるわ、ごめんw
367デフォルトの名無しさん:2010/09/26(日) 01:44:55
WinAPIの CryptBinaryToString をVB6から使う方法が分かりません。
 参考:MSDN(英語)
 ttp://msdn.microsoft.com/en-us/library/aa379887(v=VS.85).aspx

VB6で使う方はあまりいないようでサンプルを見つけられませんでした(海外サイトにも)
そこで翻訳サイトと辞書片手に自前で宣言文を書き起こし、呼び出しコードを実装してみたのですが、
以下のコードはうまく動かず途方にくれてます。(実行するとIDEごと落ちます)

英語は得意ではなく、何かを見落としているのだと思います。
間違いが分かる方いらっしゃいませんか?

'---------------------------------------
'※ 【警告】実行すると落ちます
'---------------------------------------
Private Enum ENUM_CRYPT_STRINGFlag
  CRYPT_STRING_BASE64HEADER = &H0&
  CRYPT_STRING_BASE64 = &H1&
  CRYPT_STRING_BINARY = &H2&
  CRYPT_STRING_BASE64REQUESTHEADER = &H3&
  CRYPT_STRING_HEX = &H4&
  CRYPT_STRING_HEXASCII = &H5&
  CRYPT_STRING_BASE64_ANY = &H6&
  CRYPT_STRING_ANY = &H7&
  CRYPT_STRING_HEX_ANY = &H8&
  CRYPT_STRING_BASE64X509CRLHEADER = &H9&
  CRYPT_STRING_HEXADDR = &HA&
  CRYPT_STRING_HEXASCIIADDR = &HB&
End Enum

'続く
368367:2010/09/26(日) 01:48:25
'続き
Private Declare Function CryptBinaryToString Lib "Crypt32.dll" Alias "CryptBinaryToStringA" _
        (ByRef pbBinary As Byte, ByVal cbBinary As Long, ByVal dwFlags As ENUM_CRYPT_STRINGFlag, _
         ByRef pszString As String, ByRef pcchString As Long) As Long

Private Sub test()
  Dim bAryBinary() As Byte 'テスト用バイナリ
  Dim strHex As String   '16進数文字列
  Dim lngHexLen As Long, Ret As Long, i As Long 'strHexのバイト数, API戻り値, テストデータ作成用
  
  ReDim bAryBinary(99) '100バイトのバイナリ作成(各バイトを0〜255でランダム化)
  For i = 0 To 99
    bAryBinary(i) = Int((255 - 0 + 1) * Rnd + 0)
  Next
  
  'API呼び出し1(HEXのサイズを取得)
  Ret = CryptBinaryToString(bAryBinary(0), UBound(bAryBinary) + 1, CRYPT_STRING_HEX, ByVal vbNullString, lngHexLen)
  
  strHex = StrConv(String(lngHexLen + 1, 0), vbFromUnicode) 'HEX変数のメモリサイズを確保
  
  'API呼び出し2(HEX文字列の受け取り)
  Ret = CryptBinaryToString(bAryBinary(0), UBound(bAryBinary) + 1, CRYPT_STRING_HEX, strHex, lngHexLen)
  Debug.Print Len(StrConv(strHex, vbUnicode)) & ":" & strHex

End Sub
369367:2010/09/26(日) 05:52:40
エラーが起きるのは呼び出し2です。
どうもAPI側が別のアドレスに結果を書き込もうとしてるような…

つか眠たい…
370367:2010/09/26(日) 06:54:32
あー…動きました!
Declare文の「 ByRef pszString As String 」をByValに変更。

つかなんでByValで動くのでしょう? API側はなぜ書き換えが可能なんだろう? さっぱり腑に落ちません…
ByRefだとダメでByValだとうまくいく理由、どなたか解説して戴けませんか?
変数のポインタ周りの処理が絡んでるんでしょうけど…

ByValなら、相手側変数に対して値をコピー
ByRefなら、相手側変数にポインタをセット

APIにByValで渡すと、相手は値は分かっても変数のアドレスは分からないはずで、
呼び出し元の変数に対しては何も処理出来ない…と考えてるのですが。
実際は書き換えられてるから不思議…。
371デフォルトの名無しさん:2010/09/26(日) 07:55:25
>>370 おつw
値渡しでも値が返るのは、渡したStringの値がそもそもポインタ値を含んでるからじゃね?

俺はこれをうまく説明できない。
参照渡しだと落ちる理由も説明できない。
ただ、ByValでStringを渡すと、Stringのヘッダ(構造体)が相手にコピーされてるんじゃね?

相手のヘッダ(構造体)にはVB側変数の文字列の先頭アドレスが格納されてる事になるので
相手側が普通に読み書きを行うと、それはVB側の変数に対して行われるって寸法?
ByRefの場合は…VBが自動変換した結果、相手に違うポインタが見えてるじゃね?としか。

ところでこのAPI関数面白いな。
今度使いたいから誰か謎を解いてくれw
372デフォルトの名無しさん:2010/09/26(日) 09:29:20
>>371だが調べてみたぞ。後半が全然違ってたorz
まぁ2行目だけは合ってたw

API宣言がLPSTR型ポインタになってるならByVal Stringでおkらしいぜ。
(ByRef Byteにして配列の要素0渡しでも可? / ByVal Longにして配列の要素0のVerPtr渡しでも可?)

参照:【KB187912】「Visual Basic および C の DLL の間で文字列を渡す方法」
ttp://support.microsoft.com/kb/187912/ja

俺はVBしか知らんのでCの話はよくわからんが、こういう感じらしい。

VBのString型はCではBSTR型にあたるらしく、このBSTR型は文字列へのポインタになってる。
String型が持ってる値ってのは所詮4バイトのポインタ値であって、
そのポインタの先が文字列、つまりByte配列(の先頭要素)を指してるわけだ。

ByValでStringを渡すのはStringの実値を渡す事になるので、結局はByte配列の先頭ポインタが渡される。
Cでは文字列の先頭ポインタを持つ型はLPSTR型にあたり、VBがByValで渡したStringはちょうどこの型と一緒になる。
このAPIの引数はまさにLPSTR型なのでByVal宣言で大正解ってわけだ。

じゃByVal Hoge As Stringで渡すのは、ByRef Hoge As Byteとして配列要素0を渡すのと同じ事なのな。ややこしいなw

ByRefでStringを渡すとどうだ…? 純粋にString変数へのポインタが渡されるんか?
とするとメモリ確保サイズは4バイト。相手側はこれを大きなバイト配列だと勘違いして書き込む…あぁ、そら落ちるわw
373デフォルトの名無しさん:2010/09/26(日) 09:54:04
そういうもんだ、って理解でいいだろ。
微妙にマーシャリングみたいなこともやってくれるし。
374デフォルトの名無しさん:2010/09/26(日) 18:54:25
>>373
普段は動けばおk!でいいかもしれんが、(俺もそうだが)
Declareを自前で書いた367については違うだろうよ。

Variantのメモリ構造はどうなってんのか?とか。
先頭バイトにはVarTypeで得られる値がそのまま入ってるとか知ってたか?w
もちろん知ってる必要はない。どうでもいい情報だ。本来ユーザーの管轄外だからな。
だがそういう事情を多少知ってないとDeclareで何が起きてるのか類推すんのが難しくなるよな。

>>367
そういやString渡すとVBによって勝手にUnicode→SJIS変換される。>>373のマーシャリングってこの事かな。
VBではAPIはW系じゃなくA系使えっていう理由がこれ。
逆に受け取るときはSJIS→Unicode変換されてる。確保したバイトサイズを別途通知する場合には気を付けんとな。
(VarPtr/StrPtrの値は変わらんからポインタは変わってない。純粋にStrConv代入と同等だな)

そういうわけだから、このコードだと確保サイズが足りないぜ。その2倍必要だ。
だが受け取り用String変数を事前にStrConvするのは無駄な処理だ。単にString(lngHexLen)を入れればいい。
戻ってきたものをStrConvする必要はないぜ。まぁコードが動けば文字化けするから気付くと思うがw

もう少しオーバーヘッドを抑えたいならバイト配列宣言にしたほうが良いかもしれん。
StrConvが一回分浮くし、確保する時String関数やSpace関数よりReDim Preserveのが処理早いんじゃないか?
(ちなみに ReDimはPreserve付けた方が高速ってのはみんな知ってる話なのかな?)
375デフォルトの名無しさん:2010/09/26(日) 19:12:44
つーか、そこまでして除きたければ、デバッガでレジスタ見ろよ。

LPSTRはByVal Stringで渡します、ってのは、大昔からの決まり事なんだから、
「それでいい」んだよ。
376デフォルトの名無しさん:2010/09/26(日) 20:15:19
みなさん宇宙語を話すのはやめて下さい
377デフォルトの名無しさん:2010/09/26(日) 20:37:43
>>375
デバッガなんて、正直生粋のVB6erの俺にはわかんらんのだよw
つかなんで切れてるんだよ興味無ければスルーしてくれよw

>>376
ワレワレハ(略

自重する。
378367:2010/09/26(日) 21:39:14
物議をかもす原因になってるみたいですいません
どうかこの件で喧嘩しないで下さい(^^;

>>371-372, >>374
おぉぉ、本当に助かりました! 参考リンクもありがとうございます
すべて理解出来たわけではないですが、少なくともMSがValで渡せと説明してる時点で数倍安心できますw
配列初期化でPreserveのほうが早い、というのは驚きました
感覚的には遅くなるよう気がするのに…興味深いのであとで試してみますね

>>373
私も他人の宣言文を流用する際は「そういうもんだ」で済ましますけど、
さすがに自分で書き起こした宣言だと不安じゃないですか…?
今回のは特に「本当に正しく動いてるのか…?」という疑心暗鬼が払拭出来ずモヤモヤしてた次第です

>>375
私はその「大昔からの決まり事」を知らなかったため納得がいかず困ってたようです
「常識」としてすでに習得している方から見れば下らない無駄な内容だったかもしれません申し訳ありませんでした
379デフォルトの名無しさん:2010/09/26(日) 21:51:15
数倍安心して・・・。
380デフォルトの名無しさん:2010/09/27(月) 02:00:51
もう許せない。
今すぐVB厨を金属バットで殴りまくって撲殺してしまおうぜ!!!
381デフォルトの名無しさん:2010/09/27(月) 02:42:35
犯罪者だって自覚は持てな
382デフォルトの名無しさん:2010/09/27(月) 20:36:13
初心者なのですが質問させて下さい
講義でVisual Basic 6.0を使用して一つプログラムを作ることになったのですが、何か面白いプログラムアイディアは無いでしょうか?
漠然としていて申し訳ないのですが、使用者の観点からこういうのしたら面白いよ、などあったら教えてもらえないでしょうか?
よろしくおねがいします
383デフォルトの名無しさん:2010/09/27(月) 20:53:02
本気で漠然としてるな… せめて講義の方向性だけでもワカランと、面白いの方向性がサッパリワカランと思うが…
384デフォルトの名無しさん:2010/09/27(月) 20:58:32
VB6の講義を初心者がするってw
つかどんな相手を対象としたどのレベルの講義なんだ?
面白いってのはゲーム的な? それとも業務的な?
それにどんな事まで許すのか?

標準フォーム・標準コントロール以外ダメとか、
オブジェクト不可とかAPI不可とか。
数学レベルの計算は禁止(算数まで)とか。わからなければ星の数になるがな。
385デフォルトの名無しさん:2010/09/27(月) 21:03:10
学生が宿題の質問とかじゃなくて
講師のほうが質問してんの?
386デフォルトの名無しさん:2010/09/27(月) 21:03:58
じゃんけんゲームでも作ればいい
387デフォルトの名無しさん:2010/09/27(月) 21:08:10
>>382
とりあえずゲーム系。

Lineメソッドなどを使って動くスクリーンセーバーはどう? XP標準のにそっくりなの作れるけど。
あ、全画面表示にAPIが必要になっちゃうか…
じゃピクチャかイメージコントロールを複数使った15パズルとかは?

もっと高度でいいなら、ピクチャかフォームに直接描画するテトリスがいいと思う。
テトリスの作り方は検索すればいっぱいあるから困らないでしょ。
他言語だが1時間で作る動画もあるしw
388デフォルトの名無しさん:2010/09/27(月) 21:08:36
オブジェクト指向とやらで頑張る
389デフォルトの名無しさん:2010/09/27(月) 21:32:26
>>382
まずお前が講義受けて来い
初心者のお前に講義なんて出来るわけないだろ
390デフォルトの名無しさん:2010/09/27(月) 22:08:25
VB6なんて、そろばんを必須として授業する商業学校くらい時代遅れだな
391デフォルトの名無しさん:2010/09/27(月) 22:33:40
VBAがある内は有用じゃねって思ったけど
それならVBAやるよな
392デフォルトの名無しさん:2010/09/27(月) 23:31:40
とりあえず簡単にGUIアプリが作れるし、オブジェクト指向よくわかってなくてもOK的
な所が好きで使ってる人がいるわな。
393デフォルトの名無しさん:2010/09/27(月) 23:35:51
>>390
今から習うなら正直VB6よりそろばんのほうが役立つと思う

>>382
ともかく相手が誰で何の目的で講義するのかレスしないと話にならん
394デフォルトの名無しさん:2010/09/28(火) 06:28:49
テキストボックスで64KB以上の文字列を扱いたいです
普通はリッチテキストボックスを使う事になると思うのですが、
仕様という名のクセやバグが多すぎて出来るならば使いたくありません…

他にイケてるコントロールはないでしょうか?
395デフォルトの名無しさん:2010/09/28(火) 10:09:36
396デフォルトの名無しさん:2010/09/28(火) 22:43:18
> 今から習うなら正直VB6よりそろばんのほうが役立つと思う
いまどきそろばんなんて役にはたたない。
どんなに計算が速くても、そろばんじゃ
何万件ってデータを一瞬で処理できないからね。
397デフォルトの名無しさん:2010/09/28(火) 23:45:37
>>394
text1.SelTextに代入すれば64KB以上もイケる、ってばっちゃが言ってた
でも16MB放り込んだら操作重すぎでキレそうだった(でも放り込める)
398394:2010/09/29(水) 00:21:35
>>397
そんな裏技があったとは…w
SelStartやSelLengthとかはおかしくなるようですが、
表示専用なのでこれでいってみます

ありがとうございました。
399デフォルトの名無しさん:2010/09/29(水) 09:32:46
そんなことするより
Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
Private Sub Form_Load()
Dim s As String
Dim i As Long
For i = 1 To 80000
s = s & Right(i & "", 1)
Next
Call SetWindowText(Text1.hwnd, s)
MsgBox Len(Text1.Text)
End Sub
でいいよ
400デフォルトの名無しさん:2010/09/29(水) 20:56:16
Right(i & "", 1)
↑これどういう意味? (1文字のテストデータ作ってんだろうけど)
401デフォルトの名無しさん:2010/09/29(水) 21:01:25
CStr(i Mod 10)がいいと?
402デフォルトの名無しさん:2010/09/29(水) 21:03:42
s=Replace(String(8000,"a"),"a","1234567890")
403デフォルトの名無しさん:2010/09/29(水) 21:07:16
s="1234567890"
For i=0 to 800
s= s & s
Next
404デフォルトの名無しさん:2010/09/29(水) 21:10:05
>>400
いや、そんなとこはどうでもいいとこだし
405デフォルトの名無しさん:2010/09/29(水) 22:46:43
400だけど、「この方が速い」とか何かのテクかなと思って
いや、特に意味はないならそれでいいんだけど
406デフォルトの名無しさん:2010/09/29(水) 22:49:58
400だけど、この方が速いとか何かのテクなのかと思って
いや、特に意味ないなら、別にそれでいいんだけど
407デフォルトの名無しさん:2010/09/29(水) 22:51:56
俺は「i&""」が気になってしょうがなかったぜw
どうして「i」じゃないのかとw
408デフォルトの名無しさん:2010/09/29(水) 23:18:54
CStrより速いんだ
言わせんな
恥ずかしい
409デフォルトの名無しさん:2010/09/30(木) 00:54:51
遅い CStr(i)

速い i & ""

410デフォルトの名無しさん:2010/09/30(木) 03:06:16
i&""
CStr(i)
i

面白そうなので実験したが3つのうち「i&""」が一番遅かった件について…
411デフォルトの名無しさん:2010/09/30(木) 03:54:51
VBの文字列の連結って内部的にはどう処理されてんのかね
80000回も文字連結繰り返してるけどなんとなく重そうなイメージ
412デフォルトの名無しさん:2010/09/30(木) 03:55:33
>>410
Format(i)
も考慮してやってください
413デフォルトの名無しさん:2010/09/30(木) 03:56:16
 i & "" と "" & i で速度差あったりして?
414410:2010/09/30(木) 04:48:57
>>412, >>413
やってみるお (でも410は遅くなって413は変わらないと思うお)

>>411 多分こんな感じ?↓
例:Ret = StrA & StrB
 1.StrAとStrBの合計サイズで仮変数を配列拡張(ReDim PreserveとLenB2つ相当)
 2.StrAのバイナリを仮変数の先頭にコピー(APIのMoveMemory相当)
 3.StrBのバイナリを仮変数の後方にコピー(APIのMoveMemory相当)
 4.仮変数のサイズでRetを配列拡張(ReDim PreserveとLenB1つ相当)
 5.仮変数のバイナリをRetにコピー(APIのMoveMemory相当)

StrA & StrB & StrCと3つなら上記処理をこう繰り返す→ (StrA & StrB) & StrC
Midステートメントが速い理由は入力先に対して直接処理するからだと思うお(4,5が不要)
415410:2010/09/30(木) 08:16:25
やってみたお

何度やっても「CStr(i)よりi&""が速い」って証明出来なかったお…恥ずかしいお…
つかCstr(i)の処理時間より1.5倍かかってるお
ちなみにiはCStr(i)とほぼ同等だったお(むしろCStrのが僅かに遅かったお)

>>412 ごめん、1文字を切り出せないお… ("0"指定でも10とか出るお)
>>413 やっぱ変わんないお

■テスト内容:LongをStringへ代入 Loop回数33,000,000
====================================================
10.124sec 式[ Result$ = i & "" ]
10.077sec 式[ Result$ = "" & i ]
06.724sec 式[ Result$ = CStr(i) ]
06.615sec 式[ Result$ = i ]
416デフォルトの名無しさん:2010/09/30(木) 11:22:42
何も指定せずFormat(i)を・・・CStr(i)と同じように扱ってやってください・・・
Rightで切りだすんでしょ?Str(i)とFormat(i)
417デフォルトの名無しさん:2010/09/30(木) 11:25:56
>>416
自分でやりなさい
418デフォルトの名無しさん:2010/09/30(木) 11:37:02
最近のスペックのパソコン上でやるなら些細な差だけど
低スペックのオンボロパソコンとかでやるなら重要な差になる
のかな?
419デフォルトの名無しさん:2010/09/30(木) 12:23:55
俺のCPU100MHzメモリ16MBの糞PCの出番か
420デフォルトの名無しさん:2010/09/30(木) 12:37:02
VB6で作ったシステム使い続けてる企業はパソコン買い換える予算も無いのか?
421デフォルトの名無しさん:2010/09/30(木) 12:52:28
>>420
パソコンだけならいいんだけどな。
仕様書のこってたらいいんだけどな。
担当が今でも居ればいいんだけどな。
現状動いてるシステムの予算が楽に取れるといいんだけどな。
422デフォルトの名無しさん:2010/09/30(木) 12:57:42
Xpはいよいよサポートがヤバくなってきてるのに
オンボロパソコンが現役の企業が多いって
政府は何やってんだ?
ここに大きな需要とかあるだろ
この分野で経済対策すりゃあええんでないのか?
企業のオンボロパソコンからの買い替えに助成金とか出せばいいのに
エコカーなんかよりもマシだろ
423デフォルトの名無しさん:2010/09/30(木) 12:58:44
そんなことこのスレで言ってもなあ
424デフォルトの名無しさん:2010/09/30(木) 12:59:31
古い言語が一掃されるのはありがたい・・・か?
425410:2010/09/30(木) 13:23:39
>>416 そういう意味だとは思わなかったお…
でもCStrの替わりにFormat? 単にオーバーヘッド増えるだけじゃ?と思ったけど
先入観はいかん!と無心で追試したら予定通りかなり遅くてガッカリしたおw (i&""とドッコイドッコイ)
s=Format(i) 10.957sec (Result="33000000" Len=8)

ちなみに遅いのはあくまでiを文字列として評価させるまでの話で
1文字切り出して連結していく処理全体ではどれもたいして違いはないお
(今回の場合、処理時間のほとんどが長大な文字列の連結部分であって、
Long型からの変換・切り出しにかかるコストなんて所詮はメクソほども無いお)

そもそも俺が知りたいのは「i&""が速い」という点の真相だお。
その話の根拠は一体どこから来てるんだお?
誰か補足して欲しいお
426デフォルトの名無しさん:2010/09/30(木) 13:40:18
javascriptとかだと
数字を文字列に変えるときにi+""とかやったり
文字列を数字に変えるときにi-0とかやったりしたお
427デフォルトの名無しさん:2010/09/30(木) 13:41:14
別の言語と勘違いしてるんだろ
428デフォルトの名無しさん:2010/09/30(木) 13:42:50
cstr(i)  ... 7タイプ (内 シフト打ち 2)

i&"" ... 4タイプ (内 シフト打ち 3)

i&""のほうが速い!
429デフォルトの名無しさん:2010/09/30(木) 13:46:45
cstr(i)はcstrまで左手だけで打てる。(i)はシフトキー以外は右手だけで打てる
i&""はi&まではシフトキー以外は右手で打てる。""はシフトキー以外は左手で打てる

cstr(i)
i&
430デフォルトの名無しさん:2010/09/30(木) 13:48:02
タイピング速度の話かよ
431デフォルトの名無しさん:2010/09/30(木) 13:52:07
>>408
432デフォルトの名無しさん:2010/09/30(木) 13:54:07
論点とずれているが速度重視で書き換えてみた
Dim s As String
Dim i As Long
s = String$(80000, 0)
For i = 1 To 80000
 Mid(s, i, 1) = ChrW$(48 + (i Mod 10))
Next
433デフォルトの名無しさん:2010/09/30(木) 14:01:42
高速化ってつまり内部でどんな処理してるか分かってないとできない
内部でどうやってるかはコンパイラ作った奴らにしか分からないから
どのやり方がより速いか実験して確かめる
先人たちがすでに実験していて結果を残してくれているのなら
ありがたい
余計な手間が省けるというもの
ありがとう
434デフォルトの名無しさん:2010/09/30(木) 14:04:57
何%速くなりましたか?
435デフォルトの名無しさん:2010/09/30(木) 14:09:53
>>399の文字列作る処理と>>432
Dim t1!,t2!,t3
t1=Timer
ここに処理
t2=Timer
t3=t2-t1
Debug.Print t3
でやったら

>432の処理 1.953125E-02
>399の処理 3.917969

になったお
436デフォルトの名無しさん:2010/09/30(木) 14:11:55
ちなみにIntel Celeron(R)M 1.4GHz  RAM752MB だお
437デフォルトの名無しさん:2010/09/30(木) 14:18:42
馬鹿にしか見えないからやめなさい
438デフォルトの名無しさん:2010/09/30(木) 14:31:00
はーい
439410:2010/09/30(木) 15:36:30
>>426,427 すっきり納得したお。ありがと!

>>428,429 i が一番早いお。

>>434 この場合は100倍だお。でも>>339式の負荷は2次曲線だお?
負荷はほぼメモリコピーそのものだから内部的な総コピー量に左右されるお(>>414)
下のとおり、ループが10倍になっても時間は455倍に跳ね上がるお!

純粋な連結速度ならMidが最速だし、ループ回数と正比例するお
でもJoin関数が俺的オススメ(可読性と汎用性が高く速度はMid式の1/2出るお)
>>

Dim sAry() As String, s As String, i As Long
ReDim Preserve sAry(LoopMax)
For i = 1 To LoopMax
  sAry(i) = ChrW(48 + (i Mod 10))
Next
s = Join(sAry, "")

=======================【 TestA1 Loop= 80,000 】==
001.155sec >>339式[ アンド演算子とi&"とRight ]
000.016sec >>432式[ MidとChrW ]
000.023sec 俺式[ ChrWと配列とJoin ]

=======================【 TestA2 Loop=800,000 】==
455.047sec >>339式[ アンド演算子とi&"とRight ]
000.126sec >>432式[ MidとChrW ]
000.265sec 俺式[ ChrWと配列とJoin ]
440デフォルトの名無しさん:2010/09/30(木) 15:54:06


本当、関係ない方向へ大きく脱線したなあ
441デフォルトの名無しさん:2010/09/30(木) 15:56:23
大きいデータを使ったテストをしたい時くらいにしか使わんだろうな
442デフォルトの名無しさん:2010/09/30(木) 16:05:36
速度に困る場合になったらCでDLLでも作るわな
443410:2010/09/30(木) 16:22:25
正直、業務アプリでは無縁だと思うおw
そんな俺は趣味グラマー
そろそろ名無しに戻るおっお〜♪ ノ
444デフォルトの名無しさん:2010/09/30(木) 16:23:17
いろいろな条件あるだろうからその言語言語のやり方は知っておいても損は無いとおもうけど
まぁ趣味でやってる俺には関係ない
445デフォルトの名無しさん:2010/09/30(木) 16:37:57
>>408ですけどぉ
>>428が正解だお
446デフォルトの名無しさん:2010/09/30(木) 16:51:58
Nullが入っている可能性があるVariantを文字列化する時に & "" を使う
Dim s As String
s = Null & "" ' ok
s = CStr(Null) ' err94
447デフォルトの名無しさん:2010/09/30(木) 22:10:48
>>446
なるほど、そういう問題もあるか(Variant限定じゃないね)
If文入れるより軽そうだし短いし手軽だね
…コード見てもコメント無きゃ意味わからんだろうけどw

>>445 410ですけどぉ、俺にだけは謝れ
448デフォルトの名無しさん:2010/09/30(木) 22:31:37
お前さんは全力で騙されてたからなw
449デフォルトの名無しさん:2010/09/30(木) 22:58:50
「スッゲー痛いけど、面白かったから…いい!」
450デフォルトの名無しさん:2010/09/30(木) 23:12:48
「スッゲー痛いけど、気持ちよかったから…いい!」
451デフォルトの名無しさん:2010/09/30(木) 23:21:53
つーか & ""は暗黙の型変換としてVBerには常識だと思ってた。
過去スレにも何度も出てきたしな。
まあ、俺はVB2.0からのユーザーだけど。
452デフォルトの名無しさん:2010/09/30(木) 23:24:19
昔はIsNull()がめっちゃ遅かったしね
453デフォルトの名無しさん:2010/09/30(木) 23:41:02
>>451
暗黙といえば$しか思い当たらないや(←そりゃ宣言だろ)
高校の時もうVB5だったよ 昔の事情はわかんないなぁ
454デフォルトの名無しさん:2010/10/01(金) 03:08:56
そういや初心者講師殿はどうなったんだ?w
レスを楽しみに待ってたっていうのに



乗り遅れたがループなしで良くね?と思わず高速コード書いてみた
一瞬で完了。うちでは50ミリ秒くらい

s = "S" & String(LoopMax - 2, 46) & "E"

…中間文字なしは邪道か?w
ちゃんと123...の高速版も作ってみたよ
実はこっちのが速かった(40ミリ秒)

s = String$(800000, 0)
For i = 1 To 800000 Step 10
  Mid(s, i, 10) = "1234567890"
Next
If 800000 Mod 10 Then Mid(s, i, 800000 Mod 10) = Left("1234567890", 800000 Mod 10)

まだ高速化の余地もあるけど面倒だからやめたw
単に"12345678901234567890"にするだけで約2倍速化するとか
あとはsを次回のシード文字列に使えば1回につき勝手に2倍速化しデカいほど負荷が下がるとか
455デフォルトの名無しさん:2010/10/01(金) 06:33:36
爆速でワロタw
456デフォルトの名無しさん:2010/10/01(金) 07:29:07
大事なのはSetWindowTextなのになんでテストデータ作るとこに
こだわってんだよw
SetWindowTextはありなのかなしなのか議論しろよw
457デフォルトの名無しさん:2010/10/01(金) 09:17:45
>>454
有名な最適化だね。
最初に必要なメモリを確保しておけば、内部的におこなわれている
メモリ確保→メモリコピー→メモリ解放の処理が無くなるから
大幅に速くなる。

VB.NETだと、その辺を考慮してやってくれるStringBuilderってクラス
が追加されていたりするんだけどね。
458デフォルトの名無しさん:2010/10/01(金) 14:19:54
>>456
ヘタレVB6趣味グラマーの俺にはもう元々の質問が何だったのかすら分からなくなっちゃったよ
459デフォルトの名無しさん:2010/10/01(金) 20:00:28
>>456
何も問題ないだろ?
460デフォルトの名無しさん:2010/10/01(金) 21:33:08
>>456
いやーそっちのが面白かったからさぁ、ついw
真面目な話、元の質問に対しては完了してるっしょ
そっちのほうはもうこだわりようがないんだよw

64KB以上放りこむ方法としてSelTextやAPIの提示で適切だろ
それともお前さんこの件で聞き出したいことが別にあったのかい?w
あるなら堂々と聞けばいいんじゃね?

(テキストボックスって言ったって所詮実体はEdit"ウインドウ"である以上
 APIから文字列放り込む事に問題はないと思う。NT系のEditは2GB対応してるんだし)
461デフォルトの名無しさん:2010/10/01(金) 21:39:32
いやなんかSetWindowTextでやってみたらできたから
さも当然だろって感じで書いてみたら
テスト文字列作成の話題ばっかりでこれいいのかなと思ってたんだよ。
462デフォルトの名無しさん:2010/10/01(金) 21:41:47
たとえばプロシージャ内で
Openでファイル開いてる状態で
処理中にプロシージャから脱出したいときって
Closeでファイルを閉じてからしたほうがいいの?
463デフォルトの名無しさん:2010/10/01(金) 21:43:39
ggrks
464デフォルトの名無しさん:2010/10/01(金) 21:44:52
設計を見直すべき
465デフォルトの名無しさん:2010/10/01(金) 21:50:21
そりゃとじたほうがいいよ
466デフォルトの名無しさん:2010/10/01(金) 21:56:19
>>461
乙、回答主だったのかw
そりゃ気になるわな でも大丈夫だと思うよ
テキストボックスのTextプロパティもたしかデータ実体はEdit側のはずだから
あとでセレクト位置もちゃんと取れるか調べてみるわ

>>462
そのプロシージャしかファイルのオープン事実を知らないんなら当たり前だろ

VB6は放置してスコープ抜けたら勝手に閉じてくれるんだっけ?
そこまで親切(お節介)じゃないだろう
どっちにしろ明示的にクローズ処理を書くべき
467デフォルトの名無しさん:2010/10/01(金) 21:58:03
>>462
一概に言えるわけがないでしょ。
何かファイルを閉じるのをおまじないか何かみたいに考えてないか?
そもそも何のためにファイルを閉じるのか考えればおのずから答えは出るじゃん
468デフォルトの名無しさん:2010/10/02(土) 01:28:37
ありがとうございました
469デフォルトの名無しさん:2010/10/03(日) 03:06:33
複数の変数に同じ値を一度に代入することってできる?
他の言語とかで言えば
a=b=c=d=100;
みたいな感じの
470デフォルトの名無しさん:2010/10/03(日) 03:09:02
こんな所できいてるヒマがあったらやってみろや
おまえの頭につまってるのはハナクソか?
471デフォルトの名無しさん:2010/10/03(日) 04:13:42
VB6で
a=b=c=d=3
やったら
dの値と3の比較結果とcの値との比較結果をbの値と比較した結果をaに代入じゃん
472デフォルトの名無しさん:2010/10/03(日) 04:16:35
右側から処理されてくの?
473デフォルトの名無しさん:2010/10/03(日) 07:51:46
aに(((B=C)=D)=3)が入るが正解。

>>469
できない。
474デフォルトの名無しさん:2010/10/03(日) 19:28:08
>>469

Private Sub Hoge(v1, ParamArray v2())
Dim i
For i = 0 To UBound(v2)
v2(i) = v1
Next
End Sub
475デフォルトの名無しさん:2010/10/03(日) 19:29:26
Dim a, b, c

Hoge 123, a, b, c

Debug.Print a, b, c

----------
123 123 123
476デフォルトの名無しさん:2010/10/03(日) 23:26:35
元は4行だったのに…w
477デフォルトの名無しさん:2010/10/04(月) 00:53:52
a=3
b=a
c=a
d=a
でいいじゃんよな
意味の無い余計なメソッド作る意味がわからない
478デフォルトの名無しさん:2010/10/04(月) 00:59:22
経験上、同じ数値を代入するってことは
あまり無い。
479デフォルトの名無しさん:2010/10/04(月) 01:27:37
>>476
Private Sub Hoge(v1, ParamArray v2())
Dim i: For i = 0 To UBound(v2): v2(i) = v1: Next
End Sub

3行になった!
480デフォルトの名無しさん:2010/10/04(月) 01:29:15
同じ値で複数の変数を初期化するなんて
そうめったに出現しないだろ
最初に一回だけとかなんだから
プロシージャ作ってまですることじゃないな
面倒でも全部手描きで書け
481デフォルトの名無しさん:2010/10/04(月) 01:29:31
a=3: b=a: c=a: d=a
482デフォルトの名無しさん:2010/10/04(月) 02:15:07
配列以外の複数の変数を同じ値に初期化ってよくわかんないなあ
どんな設計してんだ?
483デフォルトの名無しさん:2010/10/04(月) 02:24:50
元は12文字だったのに…w
484デフォルトの名無しさん:2010/10/04(月) 07:46:05
>>483
なんか悔しそうだなw
485デフォルトの名無しさん:2010/10/04(月) 10:27:48
>>461
Windows95/98/Meだとリッチテキストコントロールにしないと駄目だが
そんな話がしたかったの?
486デフォルトの名無しさん:2010/10/04(月) 10:41:42
VBのテキストボックスがOSの持ってるテキストボックスかどうかって
どうやったらわかるの?
487デフォルトの名無しさん:2010/10/04(月) 11:23:16
488デフォルトの名無しさん:2010/10/04(月) 21:25:26
スパイ大作戦
489デフォルトの名無しさん:2010/10/05(火) 00:01:12
>>486 Microsoft Spy++
490デフォルトの名無しさん:2010/10/05(火) 00:34:12
あぁ、スパイ大作戦ってそういう意味だったのかよw
491デフォルトの名無しさん:2010/10/06(水) 02:25:50
Winsockを使ってチャットプログラムを作っているのですが、
場合によって送信されるメッセージの順序が前後することがあり困っています。

大まかな動作
ホスト、クライアント1、クライアント2 がいて、クライアントはそれぞれホストにTCPで接続しています。
クライアントが発言する場合、それをホストに送り、ホストは全クライアントにそのメッセージを送り、その時点で発言がされたことになります。

ここで、ホストが全クライアントに送るときですが
For
  SendData
  DoEvents
Next
このようにDoEventsを入れないと、最後のクライアント以外のメッセージは消えてしまいます
なので、上記のようにDoEventsをいれてるのですが

クライアント1からDataArrival
クライアント1にメッセージ1をSendData
DoEvents
 クライアント2からDataArriaval
 クライアント1にメッセージ2をSendData
 DoEvents
 クライアント2にメッセージ2をSendData
 DoEvents
クライアント2にメッセージ1をSendData
DoEvents

となってしまい、クライアント1と2で、受け取るメッセージの順序が変わってしまいます。
これを解決するためには、イベントドリブンでメッセージを送らない(どこかのメインループでまとめる)、
受け取り側でソートする(後からメッセージが繰るかどうかは分からない)、
などの方法しかないような気がしますが、こういう場合一般的にはどうしているんでしょうか?
余計なイベントを起こさずにメッセージ送信をできればいいのですが…。
492デフォルトの名無しさん:2010/10/06(水) 07:12:07
>>491
>このようにDoEventsを入れないと、最後のクライアント以外のメッセージは消えてしまいます
そんな事はない。
貴方のプログラムがバグって居るだけ。
493デフォルトの名無しさん:2010/10/06(水) 10:17:06
>>492
DoEventsを入れずに多数の接続先に大量のデータを送ると
バッファがあふれて一部データが送信されない
このときTCPでもエラーは特に起きないので
原因不明の中間データ消失が発生しているような状態になる

送信データを独自のキューで管理してDoEventsセーフな設計にするか
余裕があるならバグの多いmswinsck.ocxは捨ててAPIを直接操作したほうがいい
494デフォルトの名無しさん:2010/10/06(水) 10:36:52
あんまり詳しくはないけどSendCompleteってイベントがあるじゃない
その辺をちゃんとしてないからバッファがあふれるんじゃない?
495デフォルトの名無しさん:2010/10/06(水) 11:35:05
DoEventsするなり標準のメッセージループに制御を戻すなりしないとSendCompleteイベント自体起きないだろ
SendCompleteとバッファの限界は別問題だし
496デフォルトの名無しさん:2010/10/06(水) 11:46:58
まあなんにしてもDoEventsを入れないように作るのがよい。
497デフォルトの名無しさん:2010/10/06(水) 12:01:52
ネットワークプログラミング相談室 Port26
http://hibari.2ch.net/test/read.cgi/tech/1269343909/
498デフォルトの名無しさん:2010/10/06(水) 12:41:27
OCX側のバッファリングの仕様にエラーが発生しないという問題があるのであって
winsock側のバッファに空きがない場合はちゃんとエラーが発生するし
ネットワークは直接関係ない
499491:2010/10/06(水) 20:31:25
多くの回答ありがとうございます。

VBのWnsockコントロールを使うと避けられないんですね・・・。
提案していただいた、WinsockAPIを調べてみることにします。

#パケットに番号をつけて、受信時に連続したパケットが来なかったらDo〜Loopで待つ、
#というのも思いつきましたが、スタックがあふれそうなので怖くてやめました
500デフォルトの名無しさん:2010/10/08(金) 11:43:39
Imprements ListBox
としてListBoxなど標準コントロールのインターフェイスを
継承する独自クラスは作成可能でしょうか?
501デフォルトの名無しさん:2010/10/08(金) 12:10:12
>>500
出来ないわけないだろ、試してみ…
たら、なんか妙なコンパイルエラー出るなw

非公式の公開関数名にアンダーバーを含んでるのかもしれん。
それがどれだかは分からんけど、もしそうならアウトっぽい。
502デフォルトの名無しさん:2010/10/08(金) 12:58:45
>>499
なんで対症療法ばかり考えるかね
オーバーフローしないように、フロー制御すればいいだろ。
一行分のメッセージを送ったら、ack応答が帰ってくるまで待つとかさ。
503デフォルトの名無しさん:2010/10/08(金) 13:37:40
>>502
まあ、ほっときましょう。
このタイプは体で覚えるしかない。
504デフォルトの名無しさん:2010/10/08(金) 14:55:52
UserControlにListBox含めて作ればいんじゃないの?知らんけど
505デフォルトの名無しさん:2010/10/08(金) 21:23:43
>>500
VBにそんなインターフェイス最初からない。
クラスは派生できない。

だからポリフォーリズムもどきがしたいのなら、レイトバインディングを
上手く使うしかないんじゃない?
506デフォルトの名無しさん:2010/10/08(金) 21:38:29
>>505
>ポリフォーリズム
さすがVB6プログラマw
507デフォルトの名無しさん:2010/10/08(金) 21:43:58
すまん寝不足なんで素で間違えたw
508500:2010/10/09(土) 01:00:06
>>501
そうなんですよ、アンダースコアがあるからダメって怒られるんです…

>>505
え、そうなんですか?(;−;)
用語に疎いため仰ってる言葉(や笑い所)はわからないのですが、
もう少しご説明頂けませんか?

引数をAs Listboxなどとして特定の標準コントロールを受け取る関数があり、
そこへ引き渡せるラッパークラスを作りたかったのですが、それは無理って事ですか?
(相手側をAs ObjectやAs Variant宣言に変えなければ不可能ですか?)
509デフォルトの名無しさん:2010/10/09(土) 01:09:47
ラッパークラスって何?ってレベルの素人な私
独自メソッドつけたいとかなの?
リストボックスへの参照を含むクラスじゃダメなの?

510デフォルトの名無しさん:2010/10/09(土) 01:46:33
>>509
そうです。例えばAPIで制御する独自のメソッドやプロパティを追加したり、という事です。
ここでラッパーというのは単なる概念で話してます。(元の機能を包み込むクラスという意味です)
参照を含むだけのクラスはListBoxではないため相手にListBoxとして渡す事ができませんが、
Imprements出来ればListBoxとしても渡すことが可能になる、はずだったのですが。

既にリストボックスを対象として作られている補助関数へそのまま渡せるように
コーディングできないかな?と思っていました。
511デフォルトの名無しさん:2010/10/09(土) 01:55:59
リストボックス対象に作られてるんなら別にラッパークラス渡さなくてもいいんじゃないのか?
512デフォルトの名無しさん:2010/10/09(土) 01:58:08
ん?Implements使うんなら
ListBoxのメソッドは自分でコーディングしなきゃならなくならないか?
あれってインターフェースのやつだろ?
513デフォルトの名無しさん:2010/10/09(土) 02:00:11
Implementsは
Javaでいうところのスーパークラスじゃなくてインターフェースの使い方だから
ListBoxのAddだとかClearとか中身空っぽってことになるんじゃ?
514デフォルトの名無しさん:2010/10/09(土) 02:02:04
素人は黙ってろ・・・
515500:2010/10/09(土) 02:05:47
>>511
渡さなくてもいいんですが、まぁいろいろ試行錯誤中なのです
Target() As ListBoxといった配列変数にも入れられますし
通常のListBoxと一緒に処理できると便利な場面がいくつかあったもので

>>512
その部分は結局は内部的にListBoxオブジェクトを持って対処するんですけどね
関数コールのオーバーヘッドは…ひとまず我慢という事で…w
516500:2010/10/09(土) 02:11:34
>>513
Javaはわかりませんが、そんな感じです
ですから内部変数に対象ListBoxの参照を持って対処します
そういう事もあって「ラッパークラス」と表現しました


というか、Implementsに関する話以外は論点ではなくて、
どなたか>>505さんの言っている意味を話して頂けませんか…
517デフォルトの名無しさん:2010/10/09(土) 02:18:10
ListBoxへの参照持つクラスつくりゃいいじゃん
ListBox対象とした関数の引数はその作ったクラスやObjectに書き換えるとかして
その独自クラスにListBoxと同じ名前の関数やプロパティ作れば形的にはラッパーになるんじゃねえの?
よく知らんけど
518デフォルトの名無しさん:2010/10/09(土) 02:18:20
>>508
だから、自作のUserControlをListBoxとして扱うことは恐らく無理だろうから、
IListBoxみたいな適当なインターフェイスを作ってメソッドの引数の型をIListBoxにするか、
またはメソッドの引数をObject型にしてレイトバインディングでやるかでしょ。

前者の場合、ListBoxについてはIListBoxとして扱うためのラッパークラスを用意し、
UserControlについてはIListBoxを実装する必要がある。

で、例えばListBoxをIListBoxを実装したラッパークラスに変換するメソッドを用意して、
みたいな風にするのかな。
519デフォルトの名無しさん:2010/10/09(土) 02:24:29
>>505
ポリフォーリズム → ポリモーフィズム
レイトバインディング → 実行時バインディング
のことかと

ポリモーフィズム - Wikipedia
ttp://ja.wikipedia.org/wiki/ポリモーフィズム

実行時バインディング - Google 検索
ttp://www.google.co.jp/search?hl=ja&safe=off&q=実行時バインディング
520デフォルトの名無しさん:2010/10/09(土) 02:34:49
'Class1.class
Private WithEvents ListBox1 As ListBox
Public Sub SetListBox(List1 As ListBox): Set ListBox1 = List1: End Sub
Public Function GetListBox() As ListBox: Set GetListBox = ListBox1: End Function
Pulbic Sub Add(Item): ListBox1.Add Item: End Sub
...以下ListBox同名関数定義

'Module1.bas
Sub Hoge(List1 As ListBox) → Sub Hoge(List1 As Class1)
...引数名変更
521デフォルトの名無しさん:2010/10/09(土) 02:41:26
アホだ
522デフォルトの名無しさん:2010/10/09(土) 02:44:26
UserContorolの名前をMyListBoxとかにしてListBox1個貼り付けて
プロシージャやプロパティやイベントをListBoxと同じ名前の全部用意してやるってのはダメなの?
523デフォルトの名無しさん:2010/10/09(土) 02:45:23
素人は黙ってろ
質問者を混乱させるだろ
524デフォルトの名無しさん:2010/10/09(土) 02:56:05
おまえらって素人のレスとそうでないレスの区別つくの?
525500:2010/10/09(土) 03:24:55
>>518 やはり無理なんですかね… であれば理由が知りたいなぁ
もしかしたら何か突破口に繋がるかもしれませんし

>>519 補足ありがとうございます
Implementsを書いただけではだめで、すべてのメソッドやプロパティを同じ形で宣言し、
さらに実際に実装しなきゃいけないという事はわかっています
(通常の自作クラスとそれのImplementsなら一通り理解しているつもりです)

今日、ListBoxのすべてのプロパティとメソッドの型を調べて実装してみましたが、
結局コンパイルエラーが出てしまった次第です
(エラー時案内された説明は理解しにくく、エラー内容と解説が食い違っているのでは?と思えます)

私のコードにミスがあるせいなら頑張ればいいだけですが、もしかして
Implementsの後に来るキーワードにListBoxが使えないって事であれば、ガッカリだなーと
その場合は理由も知りたいなと思い質問しました

>>520
えーっと、クラスはそのようにコーディングしてそれにを付加する形になっています
その例で言うと「Module1.bas側にある関数の宣言型変更を行わずに対処出来ること」、
VB6のImplementsにとって、それこそが唯一のメリットと考えているのですが…

>>522
Implementsを使うのはタブーか何かなんですか?

>>524
…あなたは区別付いてますか?
526デフォルトの名無しさん:2010/10/09(土) 03:43:11
わけわかんない回答してんのが素人だろ
527デフォルトの名無しさん:2010/10/09(土) 04:04:44
'IListBox
Sub AddItem(Item$, Optional Index)
End Sub

'MyListBox.ctl
Implements IListBox
Sub IListBox_AddItem(Item, Optional Index)
List1.AddItem Item, Index
End Sub

'Form1.frm
Sub Command1_Click()
Dim i As IListBox
Set i = MyListBox1
i.AddItem Item
End Sub
528デフォルトの名無しさん:2010/10/09(土) 04:11:02
Implementsはクラスモジュール以外にも設置できたんだっけ?
529デフォルトの名無しさん:2010/10/09(土) 04:16:27
MSDN嫁
530デフォルトの名無しさん:2010/10/09(土) 04:21:22
'MyListBox.ctl
Event Click()
Public Sub AddItem(Item As String, Optional Index)
List1.AddItem Item, Index
End Sub
Private Sub List1_Click()
RaiseEvent Click
End Sub
Private Sub UserControl_Resize()
List1.Width = ScaleWidth
List1.Height = ScaleHeight
End Sub
531デフォルトの名無しさん:2010/10/09(土) 04:28:30
アホ
532500:2010/10/09(土) 06:59:08
>>529 改めてMSDN読んでみました (MSDNライブラリ、2000年10月リリース分)

> 構文 Implements [InterfaceName | Class]
>
> 必ず指定する引数 InterfaceName または Class には、タイプ ライブラリ内のインターフェイス
> またはクラスの名前を指定します。このインターフェイスまたはクラスのメソッドは、
> Visual Basic クラスの対応するメソッドにインプリメントされます。

これを読む限りクラスモジュールでなくともImplementsに指定できるようです
またListBoxはタイプライブラリ内に普通にありますし、指定すること自体は可能と読めます
…ただ、以下の記述もあり…

> メモ Visual Basic では、派生クラスまたは派生インターフェイスをインプリメントできません。

…もしかしたら、実はここが問題になるのかもしれません
すべての標準コントロールはControlクラスから派生しているはずで…
内部も1カウントと数えられちゃうなら、ここでアウト…という事なのでしょうか?

533デフォルトの名無しさん:2010/10/09(土) 11:17:44
質問です。
VBで作成したDLLに値をクラスで渡したいのですが、うまくいきません。

Dim Output As clsTEST

Set Output = New clsTEST

Output.ADD1 = "A"
Output.ADD2 = "B"

Set obj = CreateObject("test.Class1")
Call obj.DLL_test(Output)←ここ

■DLL側
任意のForm上部の宣言
Public Function DLL_test (Output As clsTEST)
■clsTEST
クラスモジュール「clsTEST」を作成し、
プロパティ「ADD1」,「ADD2」を作成しました。
DLLとメイン(呼び元)のプロジェクトに追加。

Outputに値を入れずに渡した場合は問題ないのですが、
値を入れた場合、型が異なるのでエラーがでてしまいます。
うまくクラスを使ってDLLに値を渡せる方法はありませんでしょうか?
534デフォルトの名無しさん:2010/10/09(土) 11:20:33
DLLと呼び出しもと、両方にクラスモジュールを追加しちゃ駄目。
535デフォルトの名無しさん:2010/10/09(土) 11:29:50
>>534
呼び元のみにクラスモジュールを追加して、
DLL側の型指定をobject型等に変更する認識でしょうか?
536デフォルトの名無しさん:2010/10/09(土) 11:31:25
outputって予約語じゃね
537デフォルトの名無しさん:2010/10/09(土) 11:36:27
色んなケースがあるんだけど、そのDLLでしか使わないクラスなら、
DLL側にクラスモジュールを置く。

で、呼び出し元はDLLを参照設定して、そのクラスを使う、って感じ。
538デフォルトの名無しさん:2010/10/09(土) 11:51:14
>>537
Set obj = CreateObject("test.clsTEST ")
obj.ADD1 = "A"
obj.ADD2 = "B"
Set objInset = CreateObject("test.Class1")
Call objInset.DLL_test(obj)

■DLL側
Public Function DLL_test (Output As Object)

に変更してみました。
開発環境がないので確認していませんが。。。
539デフォルトの名無しさん:2010/10/09(土) 14:05:10
>>532
>Implements ステートメント
>
>
>クラス モジュール内にインプリメントされるインターフェイスまたはクラスを指定します。
>
>構文
>
>Implements [InterfaceName | Class]
>
>必ず指定する引数 InterfaceName または Class には、タイプ ライブラリ内のインターフェイスまたはクラスの名前を指定します。このインターフェイスまたはクラス>のメソッドは、Visual Basic クラスの対応するメソッドにインプリメントされます。

540デフォルトの名無しさん:2010/10/09(土) 14:09:09
なにがしたいの?
541デフォルトの名無しさん:2010/10/09(土) 20:53:07
>>533
実際問題Implementsには標準コントロールは渡せないらしいって
誰かから昔聞いた事がある。だから出来ないって思い込んでる。
俺自身そういうコーディングした経験ないから真実は知らないが、
とにかく出来ないんじゃないか?とは思ってる。
説明は出来ない、すまん。

>>538
DLL側と呼び出し元、両方に同じ名前のクラスが宣言してあったとしても、
それは単に名前が被ってるものと解釈され同一とはならない。

DLL側で定義し外部に提供しているクラスを呼び出し元で使いたいなら、
呼び出し元はそのDLL名.クラス名でオブジェクト変数を作らないと。
542デフォルトの名無しさん:2010/10/10(日) 08:05:44
同じ名前のグローバル変数とローカル変数があった場合ローカル変数が優先されますが、
この場合でもグローバル変数にアクセスする方法はありますか?

例えば以下のhoge関数内でグロバール変数iに値を入れることは出来ますか?
Dim i as Long
Sub hoge(i as Long)
 i = 1
 Debug.Print i
End Function
543デフォルトの名無しさん:2010/10/10(日) 12:34:04
おそまつ君のイヤミの一人称で出来なかったっけ
544デフォルトの名無しさん:2010/10/10(日) 15:22:08
>>542
それだと、グローバル変数が引数に渡され
引数に値がセットされ、VB6のデフォは参照渡しなので
グローバル変数に値がセットされる

ローカル変数でてこないじゃんw
545デフォルトの名無しさん:2010/10/10(日) 19:36:35
>>544は馬鹿なので無視してください。
546デフォルトの名無しさん:2010/10/10(日) 19:56:01
Me.iでいいんじゃね
547デフォルトの名無しさん:2010/10/10(日) 21:06:52
542です

>>543, >>546
あ、もしかして…標準モジュールでもMeって使えるんですか!?
オブジェクト内(クラスやフォーム)でしか使えないものと思い込んでいましたw
今試せないのですがいけそうですね、ありがとうございました!

>>544
関数呼び出しのコードは書いておりませんので
名前が同じでも参照しているとは限りません
例の関数内ではローカル変数しか操作していません
548デフォルトの名無しさん:2010/10/10(日) 21:21:43
標準モジュールでも名前ついてるよなたしか
module1.i
とかでもいけるような
549デフォルトの名無しさん:2010/10/10(日) 22:10:30
542です

>>543, >>546
あ、もしかして…標準モジュールでもMeって使えるんですか!?
オブジェクト内(クラスやフォーム)でしか使えないものと思い込んでいましたw
今試せないのですがいけそうですね、ありがとうございました!

>>544
関数呼び出しのコードは書いておりませんので
名前が同じでも参照しているとは限りません
例の関数内ではローカル変数しか操作していません
550542:2010/10/10(日) 22:15:08
↑リロードで発言してしまいました、すいません

>>548
> 標準モジュールでも名前ついてるよな

そうだったんですね、勉強になりました
ということは内部的にはクラスモジュールと同等(というかフォーム相当)の動作をしているんですか
ほえー、なるほどなるほど…
551デフォルトの名無しさん:2010/10/13(水) 22:06:21
大阪地検のFD書き換え事件って、笑っちゃうよね。
件(くだん)の検事も上司も、パソコンのことをなんにも知らないんだからね。
ミスであんな書き換えが起こることなんて100%あり得ないのにね。
552デフォルトの名無しさん:2010/10/14(木) 09:20:02
>件(くだん)
使い慣れないなら使うなよ。

恥ずかしい奴
553デフォルトの名無しさん:2010/10/14(木) 20:56:44
どっちかというと>>552の方が恥ずかしいような気がするぞ俺はw
まあこの手のタイプは得てして「病識」がないからなあ....
554デフォルトの名無しさん:2010/10/14(木) 21:15:24
>>552

検事(けんじ)を擁護(ようご)するとは・・・
オマイも検事(けんじ)の仲間(なかま)なのか?  プッ。
  
555デフォルトの名無しさん:2010/10/15(金) 07:15:43
擁護してるように見えるとは…
556デフォルトの名無しさん:2010/10/16(土) 00:39:53
金さえあれば
VB6なんて使わなくて済むのに・・・
全ては俺のパソコンのスペックの低さにある・・・
VB6でさえ・・・PEはインストール要件にあわずLEを買ったのに・・・
くそお・・・・くそお・・・・
557デフォルトの名無しさん:2010/10/16(土) 09:21:32
5万もあれば十分な環境が作れるでしょう?
558デフォルトの名無しさん:2010/10/16(土) 09:23:19
マジレスとかww
559デフォルトの名無しさん:2010/10/16(土) 18:56:17
最近いいネタが切れてるか。
なんか興味深い仕様とか誰かないのん?
560デフォルトの名無しさん:2010/10/16(土) 19:16:18
>>559
骨董屋で新製品が入ったか聞くジョークみたいだな
561デフォルトの名無しさん:2010/10/16(土) 21:45:22
そういえばWin7でのIDEの動作って、実際問題どうなの?
試しに7の64bitに入れてみたら基本的に問題なく動いてるみたいなんだが…
(フォームの作成画面が恐ろしく重いって問題があったけど、操作できないわけじゃない)
562デフォルトの名無しさん:2010/10/16(土) 22:25:41
プリン食いながら「そういやプリンの味ってどうなの?」ってか。
自分で判断すりゃいいのに。
563デフォルトの名無しさん:2010/10/16(土) 23:37:02
もう答え書いてんじゃん
564デフォルトの名無しさん:2010/10/16(土) 23:54:03
開発環境のサポートはXPまでで、作ったEXEはVistaまでだっけ?
MSがしぶしぶ延長はしてた気がしたが
565デフォルトの名無しさん:2010/10/17(日) 07:59:32
>>564
作ったexeはWindows 7でもサポートされる。
566デフォルトの名無しさん:2010/10/17(日) 13:12:02
開発環境のサポートはWin7の32bitまでだ(今のところ)
7の64bitでは開発はダメ(サポートしない)という事になっている
567デフォルトの名無しさん:2010/10/17(日) 13:16:25
>>566
開発環境はすでにサポート終わってるよ
568デフォルトの名無しさん:2010/10/17(日) 14:31:37
あぁ、そうだったな、特殊サポート以外は終わってる。訂正。

MSは開発環境がWin7/32bitでも動くと言ってるが、
同時にWin7/64bitでは動くかどうか知らない(チェックしない)と言ってる。
というか過去にわたってIDEは32bitでしか保証してない。
569デフォルトの名無しさん:2010/10/17(日) 15:19:06
これの事?

ttp://msdn.microsoft.com/ja-jp/vbasic/cc707268.aspx
 Windows Vista®、Windows Server 2008®、およびWindows 7における
 Visual Basic 6.0 のサポートについて (日本語版最終更新日:2009年3月6日)
570デフォルトの名無しさん:2010/10/18(月) 11:39:28
VBscriptについて質問です。
http://www13.atwiki.jp/mediacoder/pages/68.html
このサイトのtaskenc.vbsに「全行程が終了した後スタンバイ」を付加したいのです。
OSはWin7/64bitで、実際にはMediaCoderではなくBontsdemuxを経由してffmpegでエンコードしています。
よろしくお願いします。
571デフォルトの名無しさん:2010/10/18(月) 21:31:34
VBSってここでいいんだっけ?

つか「全行程が終了した後スタンバイ」って具体的にどうしたいの。
さっぱりわからんわ。
572デフォルトの名無しさん:2010/10/18(月) 23:28:37
そう思って俺も1を見たらそこに答え書いてあった
573デフォルトの名無しさん:2010/10/19(火) 00:18:44
あぁ、もしかしてスタンバイって「PCをスリープモードに移行」したいってこと?
574570:2010/10/19(火) 00:59:08
勘違いしてましたすいません。>>573様の言う通りスリープモードでした。XPの癖で・・・
色々見よう見まねで>>570のtaskenc.vbsのメイン処理の最後に以下の部分を加筆してみたのですが、スリープモードになりません
「エンコード終了後にスリープモードに移行、ただし他に録画している場合(Rectestが起動している)は移行しない」というのを加えたいのです。

Const program_name = "RecTest.exe"
if processCheck(program_name) = False Then

Set wShell=CreateObject("WScript.Shell")
wShell.SendKeys "^+{esc}"
Set WshShell = CreateObject("WScript.Shell")
Set Shell = CreateObject("Shell.Application")
Shell.ShutdownWindows()
WScript.Sleep 500
WshShell.AppActivate "Windows のシャットダウン"
WScript.Sleep 500
WshShell.SendKeys "{UP}{UP}{ENTER}{ENTER}"
End if

Function processCheck( pName )
processCheck = False

Dim objPWMI
On Error Resume Next
Set objPWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\localhost\root\cimv2")
Err.Clear
On Error GoTo 0
If Err.Number <> 0 Then Exit Function

Dim colProc
Set colProc = objPWMI.ExecQuery("Select * from Win32_Process WHERE Name='" & pName & "'")
If colProc.Count > 0 Then processCheck = True
End Function
575デフォルトの名無しさん:2010/10/19(火) 19:40:08
スリープもスタンバイもどっちもどっちだと思うが.....
どっちにしろ正式な用語じゃないだろ
576デフォルトの名無しさん:2010/10/19(火) 20:27:40
このへんの単語は混乱してるからなぁ
(スタンバイ、スリープ、サスペンド、ハイバネーション、休止状態、C1〜C2、E0〜E5・・・etc)

それはともかく、ShutdownWindowsを使ってしかもキーで操作しようってのは不適切だろ
コマンドラインで制御してもいいなら
Shell.Run "%systemroot%\system32\rundll32.exe powrprof.dll,SetSuspendState", 6,true
とか
577デフォルトの名無しさん:2010/10/20(水) 19:58:08
>>576
それ間違えてね?
RunDll32ではSetSupendStateをうまく呼び出せない
このAPIを呼べたとしても、引数が渡せないので自動復帰不能になっちゃうよ

RunDll32は特定の形式に乗っ取っている関数にしか引数を正しく渡せない
しかも外部から任意に引き渡せるのは文字列(LPSTR)のみで、何番目に引き渡すか指定も出来ない
さらに第1引数にはRunDll32のプロセスハンドルが勝手に引き渡されたりと、
RunDll32に対応していない関数を呼び出すのは十分検証しないとかなり危険じゃないかと

578デフォルトの名無しさん:2010/10/25(月) 19:53:27
VB6からDLL使うとき
使えるDLLってネットでダウンロードしてきたDLLも使えるの?
579デフォルトの名無しさん:2010/10/25(月) 20:01:57
使える
580デフォルトの名無しさん:2010/10/25(月) 20:12:10
どんなDLLでも使えるよ
581デフォルトの名無しさん:2010/10/25(月) 20:23:30
DLL および Windows API へのアクセス の項を見なさい
582デフォルトの名無しさん:2010/10/25(月) 22:26:13
STX D123456789 ETX
全てのフィールドはASCIIコードで表現
とあるのですが、

ボタンクリック時
Dim send_data As String
send_data = TextBox2.Text
send_data = Chr(&H2) & send_data & Chr(&H3)
SerialPort1.WriteLine(send_data)

これで反応してくれません。
TextBox2.Text は D123456789
と初めから値を入力しています。

send_dataの正しい結合方法はどうすればいいのでしょうか?
ポートは開いている状態で、クリック時、仮想ポート&teratermではTextBox2.Textの文字がそのまま出ます。
583デフォルトの名無しさん:2010/10/25(月) 22:40:07
そのDLLの外部公開名とその定義さえ分かれば基本的に使えます
例えば有名なzlib.dllなんかも普通におk、のはず
実行ファイルの隣に置いておけばそれを呼び出せます

ただしVB6向けの解説なんてまずないでしょうから、当然多言語(主にC言語系)の読解力が必須になってきます
また引数や戻り値の型にはVB6でそう簡単に扱えない構造を求められる場合があり
これを正面から突破するにはかなりトリッキーだったりディープな知識を要するコーディングが必要です

普通に考えて、そういうタイプのDLLはCやらC++を間に挟みそっちで(VB6の外で)処理するほうが手っ取り早いんで
結果的にVB6だけで何が何でも対処するぜ!的なノウハウはネット上でもあまり見かけないという罠も待ってます
584578:2010/10/26(火) 10:00:29
みんなさんありがとうございました
とにかくさっそく試してみます
585デフォルトの名無しさん:2010/10/27(水) 01:28:12
当方LEなのでWinsockコントロールは使えないから何とも
586デフォルトの名無しさん:2010/10/27(水) 18:09:55
質問です。

Open "filename" For Append as #1

とやって、追記モードで開くファイルと、開いた後の追記には、何か制限があるでしょうか?
ググると、かなり巨大なファイル(10MBとか)を操作しているような記事もあるので、制限は無いのかもしれませんが
とりあえず無限とも有限とも見つからないので…
587デフォルトの名無しさん:2010/10/27(水) 18:39:02
ああ、しまった。
>>586は VB6 でお願いします。
588デフォルトの名無しさん:2010/10/27(水) 19:54:18
とりあえず、2Gとか4Gとかに壁がありそう。
589デフォルトの名無しさん:2010/10/27(水) 20:08:45
>>588
ギガッ
…すると、ファイルシステム的な上限ってことかな?
590デフォルトの名無しさん:2010/10/27(水) 20:11:42
やってみればええやん。
591デフォルトの名無しさん:2010/10/27(水) 21:23:38
FileLenはLong型だから2G以上のファイルのサイズ参照できなくね?
592デフォルトの名無しさん:2010/10/27(水) 22:41:18
たしか2GBが上限。ファイルシステムというかその前にVB6の制限。
Long型で定義してあるからそれ以上を渡せないって寸法。
(VB6が内部的に使っているAPIは4GBまでいけるヤツのはずだけど、VB6は符号なし4バイト整数型ってのがない)
FSOも同じ理由で2GBの制限付いてたと思う。

今時のWindows(とりあえずNT系)ならそれ以上も読み書きできるAPIを普通に持ってる。
10GBとか100GBの読み書きしたい場合はこのAPIだね。名前は忘れたw
593デフォルトの名無しさん:2010/10/27(水) 23:42:06
>>591-592
なるほど…ありがとー
念のため警告でも付ける〜。

いやとりあえず、いつまで動かすか(というかいつ止めるか)判らないデータロガーみたいなものを作るハメになってですね。
データ自体はそんなに無い…ハズだけど1年ぶっ通しとかで使われるとどーかなーとかいうのが多少心配で…っていう。
594デフォルトの名無しさん:2010/10/28(木) 00:55:31
Win32APIを使ってファイル操作すればいいんじゃないの?
595デフォルトの名無しさん:2010/10/28(木) 01:00:45
GetFileSizeってAPIは4GB以上のファイルサイズ参照できるってあるし
API使って操作すればいいんじゃね?
596デフォルトの名無しさん:2010/10/28(木) 01:16:58
4GB以上のときはファイルサイズもポインタも2分割して渡すけどな
597デフォルトの名無しさん:2010/10/28(木) 01:31:41
符号なし32ビット整数が扱えないんだから
無理だろ
598>>597:2010/10/28(木) 08:00:52
>>597
API間でそのまま扱えばいいだけだろ
1つとして扱いたければ8バイトのCurrency型にMoveCopyして1万分の一して扱えばいい
(多少扱える最大値が減るが、1000TB以上扱えるから問題にならないだろ)
599デフォルトの名無しさん:2010/10/28(木) 22:20:47
>>593
ファイルを適当なサイズに分割するとかできないの?

>>597
応用力なさ杉
600598:2010/10/28(木) 23:39:26
間違えてた
× 1万分の一して扱えばいい
○ 1万倍して扱えばいい
※Currency型の中身は符号付き8バイト(64bit)整数型と同等。(評価時に逐次1万分の1して扱ってるだけ)

ちなみに無理と言ってしまうのは、
4バイト整数型の符号付きと符号なしの違いを理解してないからだな。
分かってない人に無理とか言われても困る。

分かってるなら、符号付き整数型に符号なし整数値を入れた場合にどう評価されるか考えれ。おのずと答えは出る。
601デフォルトの名無しさん:2010/10/29(金) 00:49:20
Dim n&, p&, k, g&
n = HogeAPI()
k = n < 0&
p = n And &H80000000&


g = p
If k Then
 g = g Or &H80000000&
End If
602デフォルトの名無しさん:2010/10/29(金) 01:14:26
なんという意味のないコードだ
603デフォルトの名無しさん:2010/10/29(金) 01:15:49
× &H80000000&
○ &H7FFFFFFF&
604デフォルトの名無しさん:2010/10/29(金) 14:24:49
ネットワークエントリーの情報を取得したり、
そこから自動でVPNやダイアルアップ接続できる
「RASAPI32.DLL」を使用したAPI(VBRAS32)なんだけど、
WINDOWS7では動かないみたいなのですが、
なにか対処法はご存知ないでしょうか?
605デフォルトの名無しさん:2010/10/30(土) 18:35:58
誰もレスしないようなので…

ダイアルアップは扱ったことないから詳しくは知らないんだけど、
昔から「Rasapi32.dllがない場合」という問題があるらしいので
特別Win7に限定した問題ではない、のかもしれない。
606デフォルトの名無しさん:2010/10/30(土) 18:48:11
すみません、ちょっとお聞きしたいのですが、
visual basic 2010 で5.0 のファイルを扱う事はできないのでしょうか。
拡張子が .vbp(5.0?) .vbproj (2010) と違うようで、拡張子を変えて 2010 で開くと
『ルートレベルのデータだ無効です』と出ます。

また、もし(5.0 のファイルを) 利用したい場合、VB5.0 を購入する事になりますか?
607デフォルトの名無しさん:2010/10/30(土) 18:51:05
.vbpを開ければ、アップグレードウィザードが動くんじゃね?
基本的には役に立たないけど。
608606:2010/10/30(土) 19:16:47
レスありがとうございました。
.vbp は開けないようです。visual studio をダウンロードして試してみようと思います。m(__)m
609デフォルトの名無しさん:2010/10/30(土) 19:29:01
2010だとさすがに開けなくなったか・・・。
2008くらいまでは開けたと思うよ。
610デフォルトの名無しさん:2010/10/30(土) 19:54:55
ありがとうございます。
う〜ん、探してみたんですが、過去のバージョンが
ダウンロードできなくなっているみたいです。ちょっとダメみたいですね。
611デフォルトの名無しさん:2010/10/30(土) 21:08:03
>>610
意図的に見つけにくいよう隠してあるけど、たしかまだDL出来るはずだよ
612デフォルトの名無しさん:2010/10/31(日) 03:57:58
2005 のセットアップファイルがあるにはあったんですが、インストールしようとすると
途中でダウンロードエラーになるので、諦めるか別の方法を考えようと思います。
613デフォルトの名無しさん:2010/10/31(日) 16:00:32
それじゃなく、ディスクのisoファイルを丸ごと配布してるほう。
614デフォルトの名無しさん:2010/10/31(日) 21:17:02
ググっても分からなかったので教えてください。
エクスクラメーションマークを使うと、規定のプロシージャにアクセスできるようですが、
言語仕様としてはどのように定義されているのでしょうか?
同じようなことを他の言語でも実現可能なのでしょうか?
object!AAA = "bbb"

property let Test(a, b) '← aに"AAA"が、bに"bbb"が入る
615デフォルトの名無しさん:2010/10/31(日) 21:21:54
age
616デフォルトの名無しさん:2010/10/31(日) 21:36:22
規定? ! は、単なるオブジェクト参照だよ。
. と一緒。
617デフォルトの名無しさん:2010/11/01(月) 03:21:15
>>613
できました!ありがとうございました。
618デフォルトの名無しさん:2010/11/01(月) 07:27:07
>>616
レスありがとうございます。

エクスクラメーションマークに参照以外の意味はないということでしょうか。
う〜ん、もう少し自分で考えてみます。
619デフォルトの名無しさん:2010/11/01(月) 23:14:53
エクスクラメーションマークはもともと、Accessなんかで
Form!テキストボックス なんかをさすときに使われた記号だよ。
VB5とかVB6とかではフォーム=クラスになったので、ピリオドのアクセスと同じ意味になった。
昔はフォーム=クラスではなかったから特別なアクセス記号が必要だった。
620デフォルトの名無しさん:2010/11/02(火) 06:06:58
辞書(Dictionary)構造をもつところで使用できる。
VB6では主にDAOのレコードメンバ記述用に使用される。
意味的にはds!ABCはds("ABC")と同じ。
Formで使えるのはForm自身がメンバを自身の辞書で管理しているから。

propertyで機能するのは辞書構造を表現することが出来るからだが、
ユーザーが通常使う機能ではない。
621デフォルトの名無しさん:2010/11/02(火) 06:23:20
>>619
全然違う。AccessとVB、どっちが古いか知らんのか?
622デフォルトの名無しさん:2010/11/02(火) 17:42:27
MSDNに記載のAPIをVBに翻訳する場合の
参考サイトありますか?

型宣言や記述方法やtipsなど
623デフォルトの名無しさん:2010/11/02(火) 19:49:14
MSDN(VS6.0)の「C 言語の宣言の Visual Basic への変換」って項目の情報だけじゃ足りないってこと?
624デフォルトの名無しさん:2010/11/02(火) 19:52:03
voidおおおおおおおおおおおおおおおおおおおおおおおお
625デフォルトの名無しさん:2010/11/02(火) 19:53:18
”C 言語の宣言の Visual Basic への変換”でググればそこそこ出るやんけ
626デフォルトの名無しさん:2010/11/02(火) 19:57:00
>>622
以前同じような事を調べたが、VB6プログラマー向けに1から10までまとめたそーゆー都合のいいサイトはなかった。
あとで気付いたが最終的に最も情報が詰まってたのはVB6のローカルヘルプ内だった。
「DLL および Windows API へのアクセス」(Web上の現MSDNライブラリ内にはない)

具体的に気になる点が出たらここで聞いてみれば?
実例あげれば誰かが採点したりTips教えてくれるんじゃないかな。

とりあえず、実のところDeclareは結構重要な処理(暗黙の型変換やポインタ処理)をサラリとやってたりする。その挙動の詳細を正確に押える事。
あと宣言の記述方法は使用方法によって1種類とも限らないんで注意。

個人的によくMoveMemoryの引数を用途別に書き換えて使ってるよ。
異型同士の連続型変換(Byte配列中の中間2バイトをLong型に変換するなど)を高速に行う場合とか。
(数値ならByVal Long、文字列ならByval String、ポインタならByVal LongにしてVarPtrを渡す、バイト配列の途中に流し込むならByRef Anyにしといて流し込みたい位置の配列の要素を渡す、などなど)


>>623 すげー便利だな。当時このサイトを見つけたかったわ。
627デフォルトの名無しさん:2010/11/02(火) 20:04:01
>>619
>>620
Dictionaryで使える機能だったんですね。
モジュール内での受け渡しに使えば、ロジックを簡潔に書けるのでは?と期待して調べていました。
Privateなユーザー定義型は同じモジュール内でも使えないですし、そもそもPrivateなクラスは定義できませんし。

JavaScriptのプロパティに近いイメージでした。
628デフォルトの名無しさん:2010/11/02(火) 20:39:13
いろいろありがとう

自分で調べて備忘録作るしかないかのう
629デフォルトの名無しさん:2010/11/02(火) 20:45:18
たぶん絶版だと思うけど、「VBユーザーに送る Win32 APIなんとか」って本があって、
すごい内容が良かった。
630デフォルトの名無しさん:2010/11/02(火) 20:49:48
図書館で借りるとか
国会図書館でコピーしてもらうとか
631デフォルトの名無しさん:2010/11/02(火) 22:19:54
>>628
質問主なら名前欄にアンカー入れないとわかんないよ。(このスレはID表示されないから)

>>629 ググってみたら見つかった、名前を覚えていてくれてありがとう。
Visual Basicユーザーに贈るWin32 APIの使い方 基礎編/実践編
「… Cとの違いと注意点、メモリ管理など…」これは面白そうだな、買おうかしら。
だがVB5向けとはかーなり古い本だなw

632デフォルトの名無しさん:2010/11/02(火) 22:37:54
昔の話ではあるんだけど、APIビューアを使うくらいしかできなかった俺が、
その本を読んでヘッダからDeclare宣言を書き下ろしたりできるようになった。

機会があったら読んでみるといいよ。
633デフォルトの名無しさん:2010/11/02(火) 22:41:53
今からVB覚えてどうするのマジで。
634デフォルトの名無しさん:2010/11/02(火) 22:43:07
そういうツッコミはノーサンキュー。
635デフォルトの名無しさん:2010/11/02(火) 22:48:17
突っ込みっていうか、端的に時間の無駄だと思うけど。
同じ努力ならC#なりVB.NETなりに対して払った方がずっと潰しが利く。
もちろん誰が何しようと勝手だけども。
636デフォルトの名無しさん:2010/11/02(火) 22:52:19
そうせざるを得ない状況がある、ってくらい、想像できないの? 幸せだねぇ。
637デフォルトの名無しさん:2010/11/02(火) 23:05:19
何だよその痛々しい反応。
語るに落ちてるな。
638デフォルトの名無しさん:2010/11/02(火) 23:08:20
ほんと、痛々しい。
639デフォルトの名無しさん:2010/11/02(火) 23:09:55
どうすんのと言われても、俺の場合はVB6が趣味だからなぁ。
あと誰が何しようと勝手とか最後に逃げの言葉吐くならはじめから黙ってろ。
640デフォルトの名無しさん:2010/11/02(火) 23:17:40
べつにVB6しかできないわけじゃないしな・・・
どうもしないよ
641デフォルトの名無しさん:2010/11/02(火) 23:34:43
VB「すらも」できないかわいそうな子なんだろう・・・
642デフォルトの名無しさん:2010/11/03(水) 01:13:02
今から古いVB覚える
就職したIT企業が未だに古いVB使った企業と取引してるとか
もしくは
低スペックパソコンで古いOS使ってる趣味人とかだろ
643デフォルトの名無しさん:2010/11/03(水) 02:11:40
趣味人の場合はそうじゃないな、むしろ逆

高スペックで動かすとVB6は十分高速に動き、必要以上のポテンシャルを持ってる
おかげで特に新しい言語覚える理由がなくなったんだ
思い通りのソフト作るにはそれに必要なVB6の知識を広げるだけでいいんだから

彼らはVB6を使わざるを得ないのではなくて、
たまたま選んだ言語がVB6だっただけ
VB6で十分実現可能な環境が延々と続いているから新しい言語が不要なんだ

趣味人にとってVB6のサポートが切れる云々は正直あまり大きな問題ではない
深刻なのはVB6のランタイムあるいはIDEが最新OSで動作しなくなった時からだ
新しい言語に移行するとしたらみんなそのタイミング(企業のほうもそうかもしれない)

64bit版Win7でVB6のIDEは非サポートとなったが、IDEは基本的に動作してしまっている
これはMSの戦略ミスだと思う VB6.exeは起動すら出来ない状態に追い込むべきだった
644デフォルトの名無しさん:2010/11/03(水) 02:22:25
>>635
つーかなんでお前はこのスレにいるんだ。端的に時間の無駄なんじゃないか?
同じ2chにレスするならC#なりVB.NETなりのスレ見た方がずっと潰しが利くはずだろ?
あぁ、もちろん誰が何しようと勝手なわけか
645デフォルトの名無しさん:2010/11/03(水) 10:20:47
わんくまの人がブログで「VB6を相対的に評価する人は実はVB6を使いこなせてない人である」
という逆説を紹介してたけど、本当あの記事は正しいな。
646デフォルトの名無しさん:2010/11/03(水) 16:58:23
つまらない話で盛り上がってるな

俺はVB6を肯定も否定もしないし「古い言語にしがみついてるヤツ」と見下されても構わないが、
どうせ話すなら新しい言語に移行する動機・メリットを説いて欲しい
同じ事が実現できるのなら、別に言語がなんであろうと構わないのだから
647デフォルトの名無しさん:2010/11/03(水) 17:22:55
> 新しい言語に移行する動機・メリット

スレ違い
648デフォルトの名無しさん:2010/11/03(水) 18:07:00
「数学者と物理学者の言い争い」に見えるな
せめて畑の違う数学者同士か、物理学者同士で話してくれよ、不毛すぎるから
649デフォルトの名無しさん:2010/11/03(水) 20:48:55
>>647
それを俺に言うなよw
わざわざここに批判書いて行くなら、ついでに建設的誘導をして欲しいだけ
まぁ出来ると思ってないけど
650デフォルトの名無しさん:2010/11/03(水) 21:11:17
時代からして仕方がないが、UNICODEをまともにサポートしてないからもうダサい
651デフォルトの名無しさん:2010/11/03(水) 21:23:29
内部でUnicode使ってる、ってのがさらに悲しいね。
652デフォルトの名無しさん:2010/11/04(木) 09:58:33
Short配列で何の問題もなくUnicodeを扱うことができるのでC/C++と状況は大差ない
これで動的コード生成無しに単体で__cdecl呼び出しさえ出来れば完璧だったのだが
653デフォルトの名無しさん:2010/11/04(木) 16:15:08
Windows7で「wininet.dll」の「InternetDial」API関数を使用し
ダイヤルアップ接続のダイアログを出すと
「接続先」にVPN接続のエントリーだけが表示されません。
VistaやXPではこの様な症状はなかったのですが何が原因でしょうか?

以下はフォームのコードです====================
Option Explicit

Private Const INTERNET_DIAL_FORCE_PROMPT = &H2000
Private Const INTERNET_DIAL_SHOW_OFFLINE = &H4000
Private Const INTERNET_DIAL_UNATTENDED = &H8000

Private Declare Function InternetDial Lib "WININET.dll" _
(ByVal hwndParent As Long, ByVal lpszConnectoid As String, _
ByVal dwFlags As Long, lpdwConnection As Long, _
ByVal dwReserved As Long) As Long

Private Sub Button1_Click()
Dim Result As Long
Dim mlConnection As Long
Result = InternetDial(Me.Hwnd, "VPN接続", INTERNET_DIAL_FORCE_PROMPT, mlConnection, 0)
End Sub
654デフォルトの名無しさん:2010/11/04(木) 18:59:05
lpszConnectoidの文字列が変わったんじゃね?
655デフォルトの名無しさん:2010/11/08(月) 10:50:44
VB.NETで、WMIを使いディスプレイが省電力モードに移行をしたかを知るために
Win32_DesktopMonitorのAvailabilityを監視するソフトを作成してみました。
しかし、省電力モードに移行しても、ステータスは、3のままで、モードの移行を
拾えません。
Win32_VideoControllerでやってみても同様でした。
何かよい方法はないのでしょうか??

656デフォルトの名無しさん:2010/11/08(月) 11:27:16
MonitorFromPointやEnumDisplayMonitorsでHMONITORを取得してGetDevicePowerState
657デフォルトの名無しさん:2010/11/08(月) 17:03:44
> 654

<System.Runtime.InteropServices.DllImport("user32.dll")> Shared Function MonitorFromPoint(ByVal x As Integer, ByVal y As Integer, ByVal dwFlags As Integer) As IntPtr
End Function

<System.Runtime.InteropServices.DllImport("kernel32.dll")> Shared Function GetDevicePowerState(ByVal hDevice As IntPtr, ByVal pfOn As Integer) As Integer
End Function

Public Shared Sub PowerState()

Dim hWnd As IntPtr
Dim Ret As Integer
Dim Pw As Integer

hWnd = MonitorFromPoint(&H0, &H0, &H2)
Ret = GetDevicePowerState(hWnd, Pw)

MsgBox(Pw)

End Sub


こんな感じにやりましたが、ダメでした。
そもそも、ハンドルが取得できない。

どうしたものか??
658デフォルトの名無しさん:2010/11/08(月) 17:18:32
>>1から読み返せばいいのに
659デフォルトの名無しさん:2010/11/08(月) 17:51:48
>>658

あーーー。

VB6まででした。

スレチ ゴメン。

消えます。
660デフォルトの名無しさん:2010/11/09(火) 22:15:38
vbsで読み取りパスが掛かったExcelファイルを開いてパスワードダイアログにフォーカスして
SendKeysでパスワードを自動入力したいんですがパスワードダイアログがプロセスIDでもウィンドウ名でも取得出来ずに困っています
何か手はありますか?
Excelは2003です
661660:2010/11/09(火) 22:17:18
OSはWindowsXPです
662デフォルトの名無しさん:2010/11/09(火) 22:19:06
APIならとれるよ。つか、普通にパスワード指定して開くんじゃダメなの?
663660:2010/11/09(火) 22:31:21
>>662
即レストン
パスワード指定して開けるのは知っているんですが
実際にやりたい事は下記通りで、その前段階でつまってるとこです

やりたい事
読み取りパスが掛かっていないExcelと同値パスの掛かったExcelファイルが複数ある
ExcelのアドインによりExcel起動時にAuto_Openイベントでvbsが実行される
vbsでの処理で開かれたExcelの読み取りパスを自動入力
パスが掛かっていない場合はSleepとカウンターで適当にvbs処理を終わらせる

できるならば複数Excelが開かれる場合にも複数同様に処理をしたい

で、そもそもでvbsからパスの掛かったExcelを開くとパスワードダイアログ入力で失敗する
現状はexcel.exe /r "hoge.xls"で呼び出してる
664デフォルトの名無しさん:2010/11/09(火) 22:35:00
よくわからんけど、VBSじゃAPIは使えないので、
APIを使える言語と組み合わせるしかないでしょ。
665デフォルトの名無しさん:2010/11/09(火) 23:36:12
どっかで見たと思ったらExcelのあれか
誘導されたんだな、ガンガレ
666デフォルトの名無しさん:2010/11/10(水) 00:40:04
自分のパスワードを自分で解除するってパスワード掛ける意味あるのかw
意味不明過ぎる
667660:2010/11/10(水) 08:22:44
>>664
やっぱ無理なのかなぁできそうなんだけどなぁ
vbsのウィンドウをアクティブにする手順じゃダメだめ?

>>665
よう!
向こうのスレでも散々だったが、こっちでもアウェイ感がw

>>666
パスワード掛ける意味はある
数人で同じExcelファイル回してて第三者にファイルだけ漏れてもパスワードにより開けない
アドインとvbsがないとね

668デフォルトの名無しさん:2010/11/11(木) 00:43:51
いろいろ分かんないんだけどさ
>パスワード指定して開けるのは知っているんですが
>実際にやりたい事は下記通りで、その前段階でつまってるとこです
知っているならやれば??やらない理由は?あえてVBSを使いたいの?

>できるならば複数Excelが開かれる場合にも複数同様に処理をしたい
"複数Excel"は、1Application内に複数のWorkbookを開く時にも同様に処理したいって事?

>現状はexcel.exe /r "hoge.xls"で呼び出してる
これじゃブックごとにExcel起動しちゃうもんな

アドインに、ブックを開くメソッドを作ってDDEで呼び出すってのはどう?
"[Run(""AddinBook!OpenBook"")];"
DDEならダブルクリック起動にも対応できるでしょ
669デフォルトの名無しさん:2010/11/11(木) 10:22:39
MSCommでポートが無い時は終了する、という処理を作っているのですが

On Error Resume Next

MSComm1.CommPort = 5
MSComm1.PortOpen = True

If Err <> 0 Then
Err.Clear 'エラークリア
Call MsgBox("ポートが確認できません。", vbOKOnly + vbCritical, "初期化エラー")
Call Unload(Me) 'UnLoad
Exit Sub 'Exit
End If

このようにすると、VBの上で実行すると、問題なくMsgBoxだけ出るのだけれど
EXEを作って実行すると、MsgBoxの前に"実行時エラー8018"が出てしまいます。
これは回避できないんでしょうか?
670デフォルトの名無しさん:2010/11/12(金) 08:29:37
>>668
> 知っているならやれば??やらない理由は?あえてVBSを使いたいの?
1つのbookを指定する際にパスワードを指定して開くとなると
100個ファイルがある場合、100個のスクリプトを作らないとダメですよね?
ファイル選択ダイアログとかも使いたくないので
あくまで、Excelファイルのアイコンをダブルクリックした時に処理したいのです

> "複数Excel"は、1Application内に複数のWorkbookを開く時にも同様に処理したいって事?
パスワードダイアログを自動入力できるならば、どちらでも構いません


> >現状はexcel.exe /r "hoge.xls"で呼び出してる
> これじゃブックごとにExcel起動しちゃうもんな
その方がプロセスIDやウィンドウが取得し易いと思っているんですがダメなんですかね

> アドインに、ブックを開くメソッドを作ってDDEで呼び出すってのはどう?
> "[Run(""AddinBook!OpenBook"")];"
> DDEならダブルクリック起動にも対応できるでしょ

DDEから呼び出され、アドインによりブックを開く、このブックってのはExcel.exeの事?
671デフォルトの名無しさん:2010/11/12(金) 09:40:20
俺ならWMIで検索してみるかな
672デフォルトの名無しさん:2010/11/12(金) 11:30:09
該当ファイルはワークブックのオープンイベントで例えば
inputbox"pass"
' 何が入力されようが強制終了

にしておいて、

Application.EnableEvents = False

開いてTrueにする

にすりゃわざわざフォーカスだのなんだのしなくてよかろ
673デフォルトの名無しさん:2010/11/12(金) 12:47:54
>>671
プロセスIDは取得できてるんでWMIは今更感が…
他にWMI利用してできましたっけ?

>>672
それはvbsですか?vba?

Excelファイルダブルクリック
vbsにファイルパス引き渡してvbs内でパスワードと共に該当ファイルを開く
ってのでいけそうな気がしてきたので、やってみます
674デフォルトの名無しさん:2010/11/12(金) 13:05:28
すまん
>>671>>669へのレスだ
675デフォルトの名無しさん:2010/11/12(金) 13:20:09
>>671
ググってみた
WMIでポートが有るか調べるってことでいいのかしら…やってみるっす。

ポートでのエラー以外は「実行時エラー」って出ないのかも気になったりもします。
とあるエラーをトラップさせようとしているのですが、そのエラーを起こせる実機が手元にないので
出先でデバッグってのもわりとつらい…
676660:2010/11/12(金) 14:40:45
解決した!
DDEすら不要だったわ
ファイルオプションでvbsからbookをパスワード付きで開く処理追加しただけ
パスワードなしのbookもそのまま開ける

回り道した割りにあっさりできた
でも、色々と広い知識のスレ住人には世話になった
感謝する。ありがとう
677デフォルトの名無しさん:2010/11/12(金) 15:29:02
>>669
8018って既にポートが開いてるとかいうエラーじゃない?
だとしたら 

if MSComm1.PortOpen = False then
    MSComm1.PortOpen = True
else
msgbox "既に開いてる"
end if

みたいにしてみては?
678デフォルトの名無しさん:2010/11/13(土) 19:22:23
なんかRADでいい言語ないかねぇ
VB+Cでいままで作ってたから画面まわりを作ってたVBが無くなるのは辛い
VCで画面なんか作ってたら気が狂いそうだし、C#あたりで作るのが無難なのかね…
C#もとっつきにくいんだが…歳のせいか?w
679デフォルトの名無しさん:2010/11/13(土) 19:29:49
C#で十分でしょ。
680デフォルトの名無しさん:2010/11/13(土) 19:37:11
やっぱりC#ですかねぇ
VB.NETもかじってみたけど、なんだこの言語ってなった
VBの良さってササっと作れるとこだったんだけど
それにしてもVB.NETはもう別言語ですな
VBの悪いとことCの悪いとこを足したような感じ…
681デフォルトの名無しさん:2010/11/13(土) 20:53:10
>>677
いや、8018は開いているポートに対してできる操作です、みたいな事だったと思う。
なんでポートを開こうとしてそんなことを言われるのかも良くわからない。
682デフォルトの名無しさん:2010/11/13(土) 22:14:49
ポートが開けてない=他の誰かが既に開いている
683デフォルトの名無しさん:2010/11/17(水) 08:26:52
>>680
最初はそう思うけど後で自分はなんて恥ずかしいこと
言ってたんだと思うことになるからそれくらいにしとけw
684デフォルトの名無しさん:2010/11/17(水) 11:26:38
>>680
c#.netとvb.netなら、ほとんど差は無いんじゃねえの?
685デフォルトの名無しさん:2010/11/17(水) 11:40:44
>>684
慣れ親しんだ文法の壁だろ 多分

理解出来てりゃ文法とかはある程度吸収できるとは思うけど
686デフォルトの名無しさん:2010/11/17(水) 12:41:56
N88BASICからVB6に変えたとき結構苦労したわ。同じBASICなのにここまで違うのかと。
趣味で多少のもの作ってるだけだからWin7でも使えるなら無理して乗り換えはせん。
687デフォルトの名無しさん:2010/11/18(木) 00:54:33
>>686
N88BASICから、VB6まで何世代違うと思ってるんだよ。
QBASIC、Visual Basic for MS-DOS、VB1、VB2、VB3、VB4、VB5、VB6、
688デフォルトの名無しさん:2010/11/18(木) 16:43:39
同じMS製のMSX-BASICからでもわりと悩むのに…

さておき
Windowsが終了することでアプリが落とされる場合にステータスを保存したいような場合
処理が短ければUnLoad の中で問題ないんでしょうか?

やりたいことはUPSからシャットダウンされそうになったときに、データを保存するっていうようなことです。
UPSの付属ソフトは終了前に何かを実行させるという機能はあるから、
ソレからなにか情報を受けるのでもいいけど、それはそれで大層な気もする…。
689デフォルトの名無しさん:2010/11/18(木) 16:55:18
690デフォルトの名無しさん:2010/11/18(木) 23:04:20
vbsでExcelを開いてるんですが2回以降に開くExcelも別プロセスとして上がってしまうので
Excelが起動してる場合同じプロセスでbookを開きたいです
vbsでCreate.objectする前にGet.objectでExcel.applicationを取得して
エラーでなければCreate.objectしたいのですが
Errorの判定方法が分かりません
助けて
691デフォルトの名無しさん:2010/11/18(木) 23:09:44
692デフォルトの名無しさん:2010/11/19(金) 08:16:40
>>691
スペシャルthx
693デフォルトの名無しさん:2010/11/20(土) 11:37:15
Windowsプログラムに使えるライブラリを提供するシステムファイルって、
それぞれどういうものなのかよくわからん、困ったもんだ。
エクスプローラには、.dllが「アプリケーション拡張」で、
.ocxが「ActiveX コントロール」と書いてあるな。
ActiveX コントロールとは、フォームに張り付けるオブジェクトかも知れんな。
Declare ステートメントは、C言語等で作成されたdllの中の、クラスを使ってない
関数を呼ぶものかも知れんな。
参照設定って何だ。Declareは別に参照設定は不要なのかどうなのか。
少なくともWin32API関数は不要のようだが。
参照設定は.dllも.ocxのどちらも対象に入るのかどうか。
参照設定は、Microsoft OfficeのWordかExcelかAccessを、実行前からどういう
ものか認識できて、専用のデータ型の変数とNewキーワードを使えるのに対し、
それをしないとObject型変数しか使えず、実行してからでないとどういう実体なのか
わからなくて、CreateObject関数で変数の実体を生み出すぼろいやり方なんだな。
参照設定の対象になるオブジェクトって何て言うのか。あれをCOMと言うのか、
それともActiveXと言うのか、それともOLEと言うのか、それともオートメーション
と言うのか。
よくわからんわ、困ったもんだ。
694デフォルトの名無しさん:2010/11/20(土) 11:44:34
ボロボロの古典を勉強するのが悪いとは言わんが現代から未来に目を向けて生きて行こうや
695デフォルトの名無しさん:2010/11/20(土) 19:55:03
>>689
えーと… .NETから移植するってことでいいのかしら?
696デフォルトの名無しさん:2010/11/20(土) 19:57:15
.NETから移植するのでも
.NETに移行するのでも
お前が早くやれると思う方を選べばいいと思うよ。
697デフォルトの名無しさん:2010/11/20(土) 19:58:38
間に合わなければ、強制終了されるだけ。
698デフォルトの名無しさん:2010/11/20(土) 22:39:26
>>696
後者はスレ違じゃね?
699デフォルトの名無しさん:2010/11/27(土) 14:00:10
ループ内でshellを使用して別EXEを呼んでいます。
このEXEは1つのEXCELファイルを検索し、見つけたら表示をするだけのEXEなのですが、ループ内で呼んでいるため複数ファイルが表示されることになります。
現状、複数のプロセスでEXCELファイルが表示されてしまうので、これを1つのプロセス内で複数ファイル表示させたいのですが、いい方法はありますか?
ちなみに、別EXEに修正はあまり加えたくありません。
700デフォルトの名無しさん:2010/11/27(土) 20:36:36
>>699
EXE1回実行で1つのファイルが見つかるものを、複数回呼んで複数ファイルを表示させると、呼んだ回数だけEXEタスクが増えるが
実行されているEXEを再度コールするなどで、タスクを増やさず現在動いてるEXEを再実行させたように動かしたいと?

EXEが多重起動による再実行オプションをもってるとか、コマンドの受付けを持っているとかだと楽だろうねえ。
マウスイベントとかキーダウンイベントで再実行できるならAPIでなんかあったような。
701デフォルトの名無しさん:2010/11/27(土) 23:33:29
ShellExecute()を利用して、関連づけで開けばOK
702デフォルトの名無しさん:2010/11/28(日) 00:23:11
>>701
別EXE内のEXCELを起動する場合にShellExecute()を利用するということでしょうか?
1つのアプリケーション内に複数のWorkbookを開きたいので、
Set obj = CreateObject("Excel.Application")でセットしたオブジェクトを
別EXEに起動引数で渡せれば、別EXE内でobj.Workbooks.Open(xlTestFile)し、
ループが終わったらVisible = Trueで全表示できるかな。。と単純に思ったのですが、
実現可能ですか?引数にオブジェクトを渡せるのかどうかは謎ですが、実行環境がないので
確認していません。
703デフォルトの名無しさん:2010/11/28(日) 07:13:54
無理。
704デフォルトの名無しさん:2010/11/28(日) 14:24:06
Excelに対するCOM操作が必要なの?
だったら先に言ってくれ、答えづらい。
新規にActiveXEXE作ってそこにExcelへの参照変数持たせるとか。
後はGetObjectって使えたっけ?
起動中Excelへの参照が得られるやつ
705デフォルトの名無しさん:2010/11/28(日) 14:38:17
質問です。
今、数合わせゲームを作っています。
デバックしたときに数字が表示されなくて困っています。
エラーとか警告は出てません。

わかる方がいましたら教えてください。
お願いします。
706デフォルトの名無しさん:2010/11/28(日) 14:45:05
わかりません
707デフォルトの名無しさん:2010/11/28(日) 15:27:56
そもそもVBは入門言語にはふさわしく無いと思うんだけど
708デフォルトの名無しさん:2010/11/28(日) 16:23:21
なんとなくで動いちゃうから教育上よろしくない。
あとで苦労した
709デフォルトの名無しさん:2010/11/28(日) 16:29:35
>>705
表示されるようにプログラムを書けばいいと思うよ。
710デフォルトの名無しさん:2010/11/28(日) 21:49:38
>>707>>708

データ型指定せずともなんとなく動くとか、
例えばテキストボックスでhoge.text = "hoge"って書かずとも
hoge = "hoge"で代入できちゃうとか。

クラスとかわかってなくてもなんとなくいけるとか。

自分で関数は書けずとも、改造はできるとぬかすとか。

イベントハンドラに何から何まで書いちゃうとか。
711デフォルトの名無しさん:2010/11/28(日) 21:58:05
間違って微妙に古いソースを改修しちゃってデグレった…。
ソース管理が滅茶苦茶でどれが最新のソースなのかわからなくなっています。
現在動いているEXEはあるのだけど、逆コンパイルってできるのかな…
712デフォルトの名無しさん:2010/11/28(日) 21:59:44
逆汗ツールはある。が、精度はそんなによくない。
かんたんなプログラムなら何とかなるかもしれないけど。
713711:2010/11/28(日) 22:11:46
>>712
ググッてみたけれども、使えそうなのはVB Decompilerくらいっぽいのですが、
他になにかあったら教えてもらえると助かります。
714デフォルトの名無しさん:2010/11/28(日) 22:29:00
探したのは数年前だけど、そのくらいしか見つからなかった。
715711:2010/11/28(日) 23:16:21
そうですか…
明日試してみます。ありがとうございました。
716デフォルトの名無しさん:2010/11/29(月) 12:46:17
VB2010expressとsql server2008の接続について質問したいのですが、
板の場所がわかりません。
だれか誘導お願いします。orz
717デフォルトの名無しさん:2010/11/29(月) 15:10:05
718716:2010/11/30(火) 12:31:45
>>717
ありがとう!
近いうちにそこで質問してみる!
719デフォルトの名無しさん:2010/11/30(火) 13:00:22
C#のがいいよ
720デフォルトの名無しさん:2010/12/10(金) 03:15:18
さむいわあ
721デフォルトの名無しさん:2010/12/22(水) 22:28:21
あああ
722デフォルトの名無しさん:2010/12/27(月) 20:09:50
そもそもVB他、初心者に向いて無いような気がする。

フォームにUIのパーツを貼り付けていって、走らせてみたら
Hello World が出る。

プログラミング初心者にとって重要なのは、制御文の使い方だったり
データ型であったり、また、VBの場合ならOOPとしての設計方法だったり
するけど、なまじUIが便利に出来ているから、初心者が独学でやろうと
すると、コピペだらけになり、肝心な部分がいつまでたっても成長しなかったりする。

本はたくさん持ってるけど、似たような入門本ばかりだったり。
723デフォルトの名無しさん:2010/12/27(月) 20:28:32
今更何を言ってんだ
724デフォルトの名無しさん:2010/12/27(月) 23:23:32
UIをコードで自作すりゃええやん
725デフォルトの名無しさん:2010/12/28(火) 01:02:08
コピペ指向ばんざいへ
726デフォルトの名無しさん:2010/12/28(火) 17:35:26
>>722
激しく同意する部分多々あり。

会社の偉いさんから

「ワシ、今、こんなソフト作ってる。これで会社が便利になるから
 完成させてくれ」

と、渡されたソフトがVB6で作りかけられてはいるが
中身は目もあてられず。
Option Explicitつけただけで、コンパイルが通らない部分だらけになった。

一つのイベントハンドラに2000行ぐらいのコードがある。
中身何やってるかわからない。
コピペだらけで、IFやFORのインデント位置が無茶苦茶。

まず直す作業から入ったが大変だった。
727デフォルトの名無しさん:2010/12/28(火) 19:02:23
インデントだけなら直すのは難しくないんじゃ・・・とも思ったけど
そうでもないか
728デフォルトの名無しさん:2010/12/28(火) 19:34:00
大変だな。・・・
729デフォルトの名無しさん:2010/12/28(火) 20:43:51
>>727
コードの整形ツールくらいどっかに転がってそうだけど、ないのかなあ?
探したことないけどw
730デフォルトの名無しさん:2010/12/28(火) 21:12:40
1行づつ読み込んで改行食らわしながら張ってけば整形してくれるだろう
731デフォルトの名無しさん:2010/12/29(水) 00:07:23
インデント修正なんて正規表現で直ぐ直せるだろ
732デフォルトの名無しさん:2010/12/29(水) 14:06:26
ばっか、これはわざと汚いコードを渡して、
綺麗に整形させると共にコードの内容を理解させようって言う作者の意図なんだよ
733デフォルトの名無しさん:2010/12/29(水) 18:56:00
コードの内容の理解が目的でわざと理解しづらい風に
記述するとか、考えられん。
734デフォルトの名無しさん:2010/12/29(水) 23:25:24
可読性を下げる事で可読欲を上げようとする手法じゃな
で、この手法の名前を考えようぜ
735デフォルトの名無しさん:2010/12/29(水) 23:33:52
まあインデントを直さないといけないっていうのが
ありえないよなぁ
736726:2010/12/29(水) 23:58:44
データアクセスもビジネスロジックも全部イベントハンドラに入ってる。
クラスモジュール、標準モジュールには何も入ってない。
Form1があるだけ。
丁寧なところはOn Error Resume Next。
勘弁して下さい。
737デフォルトの名無しさん:2011/01/02(日) 23:46:40
>>736
お気の毒。
738デフォルトの名無しさん:2011/01/03(月) 03:42:03

?Val(Join(Array("&H","D495","%")))
?Val(Join(Array("&H","D495","&")))
739デフォルトの名無しさん:2011/01/06(木) 01:36:34
VB6LEたのしいお
740デフォルトの名無しさん:2011/01/09(日) 02:06:44
Public Function gcd(n1 As Long, n2 As Long) As Long
If n2 = 0 Then
gcd = n1
ElseIf n2 > n1 Then
gcd = gcd(n2, n1)
Else
gcd = gcd(n2, n1 Mod n2)
End If
End Function

Public Sub Hoge(n As Long)
Dim p&, i&
p = 2
For i = 3 To n
p = p * i / gcd(p, i)
Next i
Debug.Print "Input "; n
Debug.Print "Muls "; p
End Sub

Call Hoge(20)
Error!オーバーフローしました
(´・ω・`)VB弱ええ
741デフォルトの名無しさん:2011/01/09(日) 02:10:40
LongからCurrencyに変えたら
Call Hoge(24)
でオーバーフローだよ
(´・ω・`)VB使えねええ
742デフォルトの名無しさん:2011/01/09(日) 21:12:44
>>741
これはVBの問題じゃないだろ…
743デフォルトの名無しさん:2011/01/09(日) 22:44:06
お前に汎用性があって柔軟性があって軽くて最強な数値型を教えてやろう

つ int


範囲が明確だ
複数使うか配列に格納して任意の桁を実装できるぞ!


さらに勝手の良い型を使いたいなら

つ boolean


これは超最強。
常にtrueかfalseの二値しか格納しないから、判定も簡単。
組み合わせることで、二進法表記が出来る!
理論上は無数の数を表現できるぞ!
744デフォルトの名無しさん:2011/01/10(月) 03:17:31
booleanって内部的には何バイトのメモリ使ってんだ?
745デフォルトの名無しさん:2011/01/10(月) 09:18:46
1ビット
746デフォルトの名無しさん:2011/01/10(月) 10:18:42
なわけない、4Byteだろ
747デフォルトの名無しさん:2011/01/10(月) 11:41:43
最強はbyteだろカス
748デフォルトの名無しさん:2011/01/14(金) 21:10:12
Dim Suuji(100) As Byte
749デフォルトの名無しさん:2011/01/15(土) 04:38:32
Byte型配列で1こあたり1ビット相当の2進数でやるの?
10進数で表示するの大変じゃない?
Int型配列にして1こあたり3桁分の10進数でやったほうがよくない?

750デフォルトの名無しさん:2011/01/15(土) 04:41:43
円周率を何千桁と求めるために使うやり方
751デフォルトの名無しさん:2011/01/15(土) 12:04:51
>>249
確かにval型配列でTFの文字列を一個づつ格納して並べたほうが見やすくていいな!
752デフォルトの名無しさん:2011/01/18(火) 14:52:52
GDIplusとか便利なAPIあったんだな

つかStrPtrとかVarPtrとかObjPtrとか初めて知ったわ・・・
753デフォルトの名無しさん:2011/01/22(土) 16:15:04
Public Function RLong(lngValue As Long)
RLong = lngValue + IIf(lngValue < -&H8000&, 1, IIf(lngValue > &H7FFF&, -1, 0)) * &HFFFF&
End Function

Public Function ChangePName(strName As String, intPassCode As Integer) As String
Dim i&, c&, s$(), iCode%, iNextCode%
iNextCode = intPassCode: c = Len(strName): ReDim s(c)
For i = 1 To c
iCode = CInt(RLong(CLng(Asc(Mid(strName, i, 1)) Xor iNextCode) - CLng(iNextCode)))
iNextCode = Not (iCode Xor iNextCode): s(i) = Hex(iCode)
Next i
ChangePName = Join(s, "%&H")
End Function

Public Function ChangeName(strPName As String, intPassCode As Integer) As String
Dim s$(), i&, iCode%, iNextCode%
iNextCode = intPassCode: s = Split(strPName, "%")
For i = 1 To UBound(s)
iCode = CInt(RLong(CLng(CInt(s(i))) + CLng(iNextCode))) Xor iNextCode
iNextCode = Not (CInt(s(i)) Xor iNextCode): s(i) = Chr(iCode)
Next i
ChangeName = Join(s, "")
End Function

?ChangePName("2ちゃんねる.net",12345)
%&H822F%&H816D%&H7E1E%&H7DD1%&H81CB%&H7DE8%&H22%&HFFDA%&HFF9B%&H74
?ChangeName("%&H822F%&H816D%&H7E1E%&H7DD1%&H81CB%&H7DE8%&H22%&HFFDA%&HFF9B%&H74",12345)
2ちゃんねる.net

754デフォルトの名無しさん:2011/01/23(日) 02:28:36
なにこれ
755デフォルトの名無しさん:2011/01/23(日) 13:41:23
こわい
756デフォルトの名無しさん:2011/01/24(月) 02:30:40
怪しいプログラムは実行しちゃダメだよ><
757デフォルトの名無しさん:2011/01/24(月) 06:01:40
ごっつあんです
758デフォルトの名無しさん:2011/01/24(月) 14:17:33
なんだかよく分からないプログラムだな
759デフォルトの名無しさん:2011/01/25(火) 17:33:21
VBの勉強を始めた者です。
会社の上司から「この部分のスイッチの色を変えたいんだけど」
って工場の監視ソフト(他社作成)のEXEファイルを渡されたんですが
EXEからリバースエンジニアリングしろって事ですか?
自宅パソコンにはVisual Studio入ってますが・・・・
無知ですいません
760デフォルトの名無しさん:2011/01/25(火) 17:35:51
むりっしょ
761デフォルトの名無しさん:2011/01/25(火) 20:53:52
>>759
>EXEからリバースエンジニアリングしろって事ですか?

それしかないね。無理。とは言わないけど、難しいと思う。
VB6でp-codeコンパイルしてあるとか、.NETならあるいは。
762デフォルトの名無しさん:2011/01/25(火) 22:21:14
無理と言っていいよ。

これはすでにプログラミングではなく、
ハッキングの領域だから。

ハッキングの領域で言えば、難しいって
までもないレベルではあるんだけどなw

仕事でビジネスソフトを作っているプログラマでは
知らなくて良い知識が必要になる。

工場の関係の人ならソースコード=設計図がなければ
手のだし用がありませんとでも言えば納得するんじゃない?
763デフォルトの名無しさん:2011/01/26(水) 08:01:56
>>760
>>762
>>762

レスありがとうございます。
上司も全く無知らしく、先輩にも助太刀してもらって
説明してみます。
764デフォルトの名無しさん:2011/01/26(水) 10:36:41
その上司を無知と言うのかね、君が。
765デフォルトの名無しさん:2011/01/26(水) 16:08:56
無知は必ずしも悪いことではない

>知らない事を知っていると考えるよりも知らない事は
>知らないと考える方が優れている

そして、764>>が無知でないという証明は未だされてない。
766デフォルトの名無しさん:2011/01/26(水) 16:23:31
単に知識がないという意味だけだろ
それよりもレスアンカーすら満足につけられないやつにいわれたくない罠
767デフォルトの名無しさん:2011/01/26(水) 16:31:05
もしリソースに格納されたダイアログなら単純に編集できるかもしれない
そうでなくても普通のプッシュボタンならDLLインジェクションか何かで背景ブラシを差し替えるだけで簡単に出来るかもしれない
768デフォルトの名無しさん:2011/01/26(水) 16:34:37
VBのフォームってダイアログリソースじゃなくね?
769デフォルトの名無しさん:2011/01/26(水) 18:37:10
766
これがムチ
770デフォルトの名無しさん:2011/01/27(木) 22:21:45
VBAのプログラミングの質問です。
サブプロシージャを使ったプログラムで、配列(ex:x(10))を計算し、返すものです。
ただし、variant形式にしないために、サブプロシージャの中で変数宣言しなければなりません(必須)。
宣言しなければ動くのですが、サブプロシージャ内で配列を宣言することができません。
『Byref引数の型が一致しません』と出てしまいます。どうやって宣言すればよいのでしょうか?
771デフォルトの名無しさん:2011/01/27(木) 23:33:14
>>770
なあ、真面目な話、その文章で人に内容が伝わると思う?
772デフォルトの名無しさん:2011/01/28(金) 16:12:22
こういうことかな
Private Sub Command1_Click()

Dim a(10) As Integer

a(5) = 5

MsgBox hoge(a)

End Sub

Private Function hoge(a() As Integer) As Integer

hoge = a(5)

End Function
773704:2011/01/29(土) 00:11:12
>>772
ありがとうございます!
なるほど、a()で型宣言できるのか・・・
774デフォルトの名無しさん:2011/01/29(土) 02:53:05
>>772
Private Function hoge(a() As Integer) As Integer
  on error goto catch
    hoge = a(5)
  on error goto 0
  exit function
catch:
  redim preserve a(5)
  hoge = a(5)
End Function


>>773
  704ってなんだよ
775デフォルトの名無しさん:2011/01/29(土) 20:38:48
CallとかLetって何のためにあるんだろう

Let Value = 100
とか書かないじゃん
Value = 100
だし

Call Hoge(Value)
と書かずに
Hoge Value
って書くし
776デフォルトの名無しさん:2011/01/29(土) 21:18:20
Withの使い方でヘルプに描いてない使い方あるよね。使っても大丈夫なのかな?
たとえば
With New Class1
みたいなNewで使うやつとか
With GetClass1()
みたいなクラスへの参照返すやつとか
777デフォルトの名無しさん:2011/01/29(土) 21:39:27
いや例えばgetClass1()が呼び出されるたびにちがうClass1のインスタンスへの参照が返されるとかさ
778デフォルトの名無しさん:2011/01/29(土) 22:51:18
callは引数呼び出しの明確化に使うなあ
letは使ったこと無い
779デフォルトの名無しさん:2011/01/30(日) 10:50:25
letは中間コードを採用した8bit機のBASICでコード領域1バイトを犠牲にするかわりに実行が速くなる場合があった
VBのインタプリタで速度に差が出るかは試していない
780デフォルトの名無しさん:2011/01/30(日) 20:46:52
試していないのか
781デフォルトの名無しさん:2011/01/31(月) 01:12:59
VBはコンパイラ、機械語に翻訳する
782デフォルトの名無しさん:2011/01/31(月) 02:59:29
VBはコンパイラではあるが、直接機械語に翻訳してるわけではない
783デフォルトの名無しさん:2011/01/31(月) 10:34:30
VB6までのIDEは基本的にはPコードという中間コードにコンパイルして実行しているが
これは8bit機時代のマイクロソフト系ベーシックインタプリタと同様の構造であり
伝統的に「インタープリタ」とマイクロソフト自身も呼んでいる
VB5以降はexe生成時にPコードを格納するか機械語のネィティブコードを生成するかを選択できる
前述のPコードコンパイラではなくこのexe生成機能の事を特に「コンパイラ」と呼ぶ
機械語生成されたexeもランタイムに依存しているので直接機械語に翻訳されていないと勘違いされる事も多い
exe生成時にlink.exeが内部で実行される時に一時的に生成されるobjを逆アセンブルすれば実際に機械語が生成されている事実を確認できる
784デフォルトの名無しさん:2011/01/31(月) 11:09:11
僕は素人のVB6LE使いだからp-codeコンパイルとか機能的にない残念だお
VB6買ったのは金ない学生時代・・・アカデミパックでLEしか買えないとか昔は貧乏だったなあ
785デフォルトの名無しさん:2011/01/31(月) 11:10:44
逆だったLEはp-codeコンパイルが出来て、ネイティブコードコンパイルが出来ないんだった
786デフォルトの名無しさん:2011/01/31(月) 11:57:51
俺はアカデミックでどうせだからとPE買ってた
787デフォルトの名無しさん:2011/01/31(月) 21:52:48
>>775

引数を( )で囲んでないとわかりにくい。
元はCとかJavaやってたんで。
788デフォルトの名無しさん:2011/02/01(火) 00:05:00
じゃあIf文も

If a<3 Then
じゃなくて
If (a<3) Then
とか書いてるのか
CやJavaからだと = が使いにくそう
789デフォルトの名無しさん:2011/02/01(火) 00:22:36
>>788
そこは大丈夫。

引数だけは目に馴染まない。
790デフォルトの名無しさん:2011/02/01(火) 21:51:33
自力で試しても全然動かなかったので質問させてください。

VBからテープデバイスに書き込みを行いたいのですが、
WEBでプログラムからテープデバイスへのアクセスについて調べたところ

ttp://www.winapi-database.com/File/Tape/

に書いている関数使ったらいけると思って試してみたのですが、
うまく動きませんでした。
上記ページを読んだ感じだと
1.書き込みを行いたいファイルのハンドルをCreateFile()で取得
2.↑で取得したハンドルに対してBackupRead()で読み込み
3.テープデバイスのハンドルをCreateFile()で取得
4.2で読み込んだファイルを3で取得したハンドルに対してBackupWrite()で書き込み

でいけるのかと思ったのですが、書き込みエラーが出るどころか、全くテープデバイスが動いた様子もなく終了します。
どうも引数の設定がどうとか言う以前に関数の使い方を間違えているのではと思います・・・

WEBで調べてもBackupReadはともかくBackupWriteは使っているコードすら全然見つかりません

VBに限らずCとかでも構いませんので、テープデバイスに対して書き込みや読み込みを
行った経験がある方、もしくは↑URLを見て使い方が分かる方が居ましたらサンプルコードや
関数の使い方の説明等、ご教示頂けたらありがたいです。
791デフォルトの名無しさん:2011/02/07(月) 09:34:21
>>854お姉さまwwに誘導されてきました。)
現在、シリアルから19200bps(rs232c)で文字を自動的に吐き出している機械が有ります(マイコンです)
例 PIC RS232C−TEST
ハイパーターミナルで受信をした所正常に受信しています。(COMの設定等もしたつもりです com2であっています)

けれど、VB6.0で作成したプログラムでは、何にも出ません。
参考サイト
http://scw.asahi-u.ac.jp/~sanozemi/Sakuhin/pic02/PIC02.html
作成したソース
Private Sub Form_Load()
MSComm1.CommPort = 2
MSComm1.Settings = "19200,n,8,1"
MSComm1.RThreshold = 6
MSComm1.DTREnable = True
MSComm1.RTSEnable = True
MSComm1.PortOpen = True
End Sub

Private Sub Form_Unload(Cancel As Integer)
MSComm1.PortOpen = False
End Sub

Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = comEvReceive Then Label1.Caption = MSComm1.Input

End Sub

何がいけないのでしょう?お力をお貸し下さい。
また2005でも、質問に来るかも知れないのでよろ
792デフォルトの名無しさん:2011/02/07(月) 11:45:23
If MSComm1.CommEvent = comEvReceive Then
Label1.Caption = Label1.Caption & MSComm1.Input
end if
ってすればいいんじゃないの
793デフォルトの名無しさん:2011/02/07(月) 13:39:29
323みたいなのはここでは定期的に出るドトネト厨の釣り針なのか?
794デフォルトの名無しさん:2011/02/07(月) 15:35:45
>>792
ありがとうございます。
やってみました・・・
なんか変わらない orz

私のRS232Cの設定が悪いのだと思います。
もう一度検討してみす。
795デフォルトの名無しさん:2011/02/08(火) 10:30:41
ファイルの保護について質問させてください。

現在作成しているアプリケーションでは計測中にデータをバイナリファイルに追記していきます。
計測中にはそのデータファイルを操作されたくありません。
(移動、リネーム、削除など)

そこで検討中の案は、最初にデータファイルが作成されたときに「Binary Access Read」でファイルをOpenし、
計測終了時にCloseする、というものです。
計測中は「Binary Access Write」でOpenしてデータを追記していきます。

上記のやり方では何か問題はありそうでしょうか?
また、このような場合、どのような処理を行うのが一般的なのでしょうか?

ご教示下さいますようよろしくお願いいたします。
796デフォルトの名無しさん:2011/02/08(火) 10:40:51
それでよし
797デフォルトの名無しさん:2011/02/08(火) 13:59:28
Open FileName$ For Binary Access Read Lock Read Write As #1
とか
Open FileName$ For Binary Access Write Lock Read Write As #1
とか
は?
Openステートメントあんま使ったことないからよく知らんけど
798デフォルトの名無しさん:2011/02/08(火) 18:15:02
Dim x As Integer = 0

For j As Integer = 1 To 2
For i As Integer = 1 To 5
x += i
Next i
Next j

このとき、xは33になりますよね・・・?
基本的な質問で申し訳無いですお願いします。
799デフォルトの名無しさん:2011/02/08(火) 18:16:16
バイナリファイルの扱いってやったこと無いけど、
はじめからWriteモードで開いてたらあかんの?
ファイルロックが目的ならそれで良さそうな気がするけど。
800デフォルトの名無しさん:2011/02/08(火) 18:20:24
>>798

1 + 2 + 3 + 4 + 5 +
1 + 2 + 3 + 4 + 5

= 30
801デフォルトの名無しさん:2011/02/08(火) 18:25:22
>>800
即レスありがとうございます。
理解できました。
802デフォルトの名無しさん:2011/02/08(火) 18:48:21
皆さん、早速のご回答ありがとうございます。

>>797
計測中にファイル内容を読み込むこともあるんで、Lock Readはできないんですよ。

>>799
Writeモードで開きっぱなしっていうのが抵抗があったもので…。
ファイルに何か不具合があって、プログラムを見直す時に、
「開いて書いてすぐ閉じる」ってなってた方が分かりやすいし、安心かなと。
自信がないんです…。

803デフォルトの名無しさん:2011/02/08(火) 19:48:12
>>802
>計測中にはそのデータファイルを操作されたくありません。

ってなれば、Writeモードで開いているしかないと思われ。
804デフォルトの名無しさん:2011/02/08(火) 22:56:16
Call Shell("C:\aaa\aaa.exe", 1)

で、exeが実行されるものとされないものがあるのですが、
無理やり実行させる方法はありませんか?
805デフォルトの名無しさん:2011/02/08(火) 22:58:39
shellexecute
806デフォルトの名無しさん:2011/02/09(水) 00:01:24
実行環境の違いでエラーになったりならなかったり
プログラムが強制終了したりしなかったりとかってある?
落ちるって言われた所の現象が再現出来なくて困ってる。

フォームが表示された後に数秒してから一部のフォームが落ちたらしくて
もう一度やり直したらちゃんと動いたっぽい。
フォーム表示後すぐじゃないからformload時とは別で落ちてるって事なんかな?

formload時以外でやってる処理は1秒毎にタイマーでラベルのcaptionに時間セットしてる所ぐらい。
タイマーが張ってあるのが最初に起動するメニューで
その後色んなフォーム開きつつ、ずっとタイマーが動いてるから
これが悪いのかな?
807デフォルトの名無しさん:2011/02/09(水) 00:32:10
再現するソース出せ
808デフォルトの名無しさん:2011/02/09(水) 07:20:04
そんなのログだすようにして使ってみてもらうしかないな
809デフォルトの名無しさん:2011/02/09(水) 08:59:14
>>803
ありがとうございます。
Readモードでは操作される可能性があるということでしょうか?
810デフォルトの名無しさん:2011/02/09(水) 17:18:43
Open FileName$ For Binary Access Read Lock Write As #1
811デフォルトの名無しさん:2011/02/09(水) 18:03:37
>>809
yes
812デフォルトの名無しさん:2011/02/12(土) 08:13:19
>>809
> ありがとうございます。
> Readモードでは操作される可能性があるということでしょうか?

Readモードにせよ、Writeモードにせよ、Lockしていない以上操作される可能性はあるだろう。
Lockするのが嫌なら、アプリケーション専用にユーザーアカウントを作成して、
他のユーザアカウントからは操作されないようにするんだな。
813デフォルトの名無しさん:2011/02/19(土) 16:40:58
On Error Goto 〜
とか
On Error Resume Next
とか
使ったら

End SubやExit Subの手前で On Error Goto 0 を入れたほうがいいの?
そういうコード見かけるからなんでだろうと思ってさ
参照型の変数もよくプロシージャの終わりのほう Set abc = Nothing とか見かけるし
なんで?C言語とかならともかくVBって自動開放とかじゃないの?
814デフォルトの名無しさん:2011/02/19(土) 18:58:44
>>813
On Error Resume Next はGoto 0 を入れる必要は無いと思うけど
どの箇所で起こり得るErrorかを、他の人がコードを見た時に、
元々書いた人の意図が伝わるんじゃないですかね。

GoTo hoge とかでも一緒。

個人的には、On Errorの後は当然のようにインデントするんだから
インデントの終わりの場所にもOn Errorはあるべしと思う。

Set abc = Nothing は、意味ないです。
場合によっては必要になる事もあります。
815デフォルトの名無しさん:2011/02/19(土) 19:09:17
なるほどね
ありがとうございます
816デフォルトの名無しさん:2011/02/19(土) 19:12:50
むしろGoto 0書かなくてもいいって感覚が理解できない。
817デフォルトの名無しさん:2011/02/19(土) 19:20:51
MSDNにはGoto 0を書かなくてもプロシージャの終わりにエラー処理ルーチンが無効になるって書いてあるからさ
独学なんでVBを覚えるのに使った書物はベーマガだけだし
ちゃんとしたVBの入門本とかにはそういうこと記載されてんのかな
818デフォルトの名無しさん:2011/02/19(土) 19:48:32.99
だから、プロシージャの終わりまでエラーが検出できないのは問題。
あとは>>814が言ってる理由も大きい。

自分でそう書いてるのに、なぜ結論が「Goto 0 を入れる必要は無い」になるのかは
理解に苦しむ。
819デフォルトの名無しさん:2011/02/19(土) 20:12:34.67
>>813
>End SubやExit Subの手前で On Error Goto 0 を入れたほうがいいの?
820デフォルトの名無しさん:2011/02/19(土) 20:28:56.79
1命令だけスポットで例外をキャプチャしたいなら
すぐにgoto 0を入れるべきだろうけど、
プロシージャ全体の例外を1箇所で集中管理したい場合は
いちちgoto 0は入れずにExit Subで抜ける。

Private Sub Hoge()
    On Error GoTo err1
    ' 処理
    Exit Sub
err1:
    ' Error処理
End Sub

On Error Resume Nextの場合は1命令だけスポットで使うことがほとんどだろうから、
必要がなくなったらすぐにgoto 0解除したほうがいいだろうな。
821デフォルトの名無しさん:2011/02/19(土) 23:44:14.40
話違うけどon errorとon local errorって何が違うの?
なんとなくlocalの方使うようにしてるけど・・・あんま違いないのかな
822デフォルトの名無しさん:2011/02/20(日) 08:59:23.45
だいたい、くそ長いプロシージャ書いてる奴はGoTo 0の扱いに困る。
823デフォルトの名無しさん:2011/02/20(日) 09:02:26.46
>>821
on local error xx は quick basicとの互換で残ってるだけじゃなかったかな。
VBのエラー処理は全てローカル扱いになるからlocalは不要。
824デフォルトの名無しさん:2011/02/20(日) 12:04:11.71
dクス。あんま関係なかったのか
825デフォルトの名無しさん:2011/02/21(月) 10:18:52.15
頭の中では常に対称性の原理に基づいて思考するのが効率的だから
GoTo 0がないと思考の流れが滞るので困る。
826デフォルトの名無しさん:2011/03/01(火) 21:53:04.98
VB6のエラー処理で一番良かったと思った本

VisualBasic6エラーコーディング
ttp://www.amazon.co.jp/dp/4894712237/

この方針でExcelVBAも書いてる
827デフォルトの名無しさん:2011/03/01(火) 22:26:51.71
ぽちっちゃったじゃないか・・・
828デフォルトの名無しさん:2011/03/01(火) 22:31:37.40
>>826
結構古い本ですね
VBSCRIPTでも使える本ですか?
829826:2011/03/02(水) 00:28:56.89
基本的にVB6の本だけど、「再利用可能なルーチンを作成する為のバリアントの引数」の所で
ちょろっとVBScriptへの移植性の記述がある

おいらはまだ怖くて本にソースがあるライブラリ以外ではバリアント引数は使えてない
ただ、考え方とかエラー処理のノウハウは参考にできると思う
830デフォルトの名無しさん:2011/03/02(水) 01:05:38.97
>>828
むしろ新しいでしょw

しかし、VBのエラー処理で一冊本を書いちゃうって随分マニアックな人だな。
そんなネタがあるとも思えないけど。
831デフォルトの名無しさん:2011/03/02(水) 01:15:41.46
今2000年123月2日だからそうだな年内の発売だな

中古品7点¥ 11より

安すぐるwww
832デフォルトの名無しさん:2011/03/02(水) 02:52:35.65
中古だと精子まみれとかでカピカピになってそうで嫌
833デフォルトの名無しさん:2011/03/02(水) 02:56:02.50
未だにこのエラー処理使ってるわ
834デフォルトの名無しさん:2011/03/02(水) 03:41:11.44
>>832
エラー処理の本で抜ける兵がいるなんて、まだまだ世の中捨てたもんじゃないな
835デフォルトの名無しさん:2011/03/02(水) 04:48:45.22
>>826
多言語にも応用利く?
836デフォルトの名無しさん:2011/03/02(水) 04:49:58.82
VB6と他の言語の両方に精通していて尚且つそれなりの頭があるなら応用出来なくも無い
837デフォルトの名無しさん:2011/03/02(水) 04:52:03.23
Try Except 構文が無いVBの為の本だったように記憶しているが。
838デフォルトの名無しさん:2011/03/02(水) 04:54:02.07
>>820みたいなやり方だった気がする。

要はGoto先のラベルのうまい使い方の本だった気が。
Continue代わりにも使えるしな。
839828:2011/03/02(水) 08:15:43.46
>>829
thxポチってみる

>>830
そうなのかw
最近VB系に触ったから無知ですまぬ
840デフォルトの名無しさん:2011/03/06(日) 01:56:20.94
俺はバリアント引数使わない。

841デフォルトの名無しさん:2011/03/06(日) 03:07:30.32
何でも入るのが怖い
842デフォルトの名無しさん:2011/03/07(月) 23:25:56.55
VBからExcel開くprgをWin98上で走らそうとすると、型が一致しませんってエラーが出るんよ

XPや2000上では問題無く動く
開発はXP上のVB6.0でやってて、Win98にはexeだけ持って行ってVB6.0のランタイム入れてる

エラーは、xlBook=xlApp.Workbooks.Open("ファイル名")のとこで出てるぽい
xlBookもxlAppもObject型で指定してるんだけど、型が違うってことはxlBookはObject型
じゃダメってことなんかな
それともExcelのバージョンが関係してるのか、Win98は2000で、XPと2000は2003なんだ
843デフォルトの名無しさん:2011/03/08(火) 00:15:51.70
>>842
こんなところに長々と文章打ち込む前にgoogle様にお伺いを立てた方が建設的よ。
確か割とありがちな「落とし穴」だったはず。
844デフォルトの名無しさん:2011/03/08(火) 00:51:44.40
Win98をサポート外にすれば解決だ
845デフォルトの名無しさん:2011/03/08(火) 01:07:14.46
参照設定だかコンポーネントだか知らんがExcelのバージョンの問題だよね
846デフォルトの名無しさん:2011/03/08(火) 15:59:47.60
参照設定なんかしちゃだめだよ
847デフォルトの名無しさん:2011/03/08(火) 18:52:10.07
会社の古いPCにWin98入ってるわ
遅いしやたら固まるし2000かXPに変えたいけど、古いPCだとメモリも少ないし入らんよな
848デフォルトの名無しさん:2011/03/09(水) 20:53:37.11
事前バインディングの方法にしても、Excel2000では落ちるよ。
OSがXPでも一緒。Excel2000に存在しない関数とかいっぱいあるから。
849デフォルトの名無しさん:2011/03/15(火) 09:56:53.85
スレ違いのような気もするんですが質問させてください。

いま、Visualbasic6.0の参考書とVisualbasic2010 ExpressEditionを使ってVBの学習を始めたんですが、
本についているVisualbasic6.0のサンプルコードCR-ROMのファイルが全く読めません。
どうやって読み込み(orインポート)すればいいんでしょうか?
850デフォルトの名無しさん:2011/03/15(火) 10:10:08.79
VB2010 EE に、VB6のサンプル読ませるのか?
VB6とそれ以後は互換性が大層なくなってた気がするが
851デフォルトの名無しさん:2011/03/15(火) 10:12:14.39
サンプルプログラムをのフォーム配置とコードを見たい程度なので動かなくてもいいんですが、やはり無理でしょうか?
852デフォルトの名無しさん:2011/03/15(火) 10:31:24.05
俺はVB6しか持ってないからわからんが
ググったら
ttp://social.msdn.microsoft.com/Forums/ja-JP/vbexpressja/thread/55e23135-0025-404c-abef-b56bbf8bcb7a
とかはあるな
というかググった?
853デフォルトの名無しさん:2011/03/15(火) 11:49:34.73
>>852
ありがとう。
ググってるんだけど、あまりに解らない事が多すぎて頭がパニックになってます;;
854デフォルトの名無しさん:2011/03/15(火) 20:14:23.79
>>849
6.0と2010はほぼ互換性が無いので、その学習環境は
極めて効率の悪い環境と言えます。

書き込みの内容から、プログラミング全般に渡って初心者である事がうかがえますが、
VBとかMicrosoft系言語は、UI(画面の事ね)が簡単に出来過ぎるので、
わかってないのにわかった気になってしまうのが欠点で、そういう意味では
プログラミングの最初の学習題材としては向いていません。

Javaあたりでコマンド使ったプログラムから始める方がいいと思います。
855デフォルトの名無しさん:2011/03/15(火) 22:06:35.69
VBの名前を使い続けたのは失策だな VB++とかにしとけばよかったのに

>>854
どさくさに紛れてMicrosoft系言語とか広げて批判するなや
856デフォルトの名無しさん:2011/03/15(火) 23:36:32.56
C++に関しては、ボーランドのほうがVBみたいにさくさくUI作れて便利だと聞いた。
コマンドラインな言語は賛成するが、Javaってのは微妙。
857デフォルトの名無しさん:2011/03/16(水) 00:12:22.13
OOP言語のテキスト的存在で、無料で開発環境が整うJavaで
勉強するのが悪いわけないと思う。

OOPというと機能的には不満足ではあるが、VB6もクラス作っていけるからな。
ポリモーフィズムも使えるし。
858デフォルトの名無しさん:2011/03/16(水) 23:47:09.36
>>826の本入手した。

既に実践してる内容も多かったけど、他にも参考になった。
が…
On Error goto next
による、インラインエラートラップって、
それするぐらいなら、エラーにならないようにできるのにとも思った。
859デフォルトの名無しさん:2011/03/17(木) 00:08:35.32
>>858
On Error Resume Next?

ソースをエラー出さなくするのはいいとして、デバイスやコントロールがエラーを返す場合はどうする?
860デフォルトの名無しさん:2011/03/17(木) 09:29:31.46
コモンダイアログのキャンセルエラーを拾うとかな
861デフォルトの名無しさん:2011/03/17(木) 19:05:37.45
>>859
そういう場合、インラインエラートラップでなんとかなる?
862デフォルトの名無しさん:2011/03/23(水) 18:44:34.05
timeGettime関数のNow関数の関係について質問があります。

まず、timeGetTime関数とNow関数の戻り値をそれぞれ記憶します。
仮にこの時の値が0と0:00:00だとします。

約一時間後、timeGetTime関数の戻り値が3,600,000になった時、Now関数の戻り値は1:00:00になるはずですが、
0:59:59や1:00:01になったりなどの誤差は生じることはありますか?

一時間後というのは例で、たとえば24時間後や1週間後でも、誤差が生じるまでの期間は問いません。
863デフォルトの名無しさん:2011/03/23(水) 19:36:47.85
Now関数?
864デフォルトの名無しさん:2011/03/23(水) 19:38:44.06
どちらもシステム時刻から取得するからズレないんじゃないの?いあ、俺素人だから余計なこと言わんほうがええか
865デフォルトの名無しさん:2011/03/23(水) 19:49:08.16
>>862
一時間ってのは誰が判断するの?
866864:2011/03/23(水) 22:55:39.23
>>864さんの仰るようなことが知りたかったんです!
どちらも同じところから算出するから、理論的にズレるはずがないのか、
それとも別のところから算出するから、ズレる可能性は十分になるのか。
どうなんでしょうか?
867デフォルトの名無しさん:2011/03/24(木) 00:00:51.66
ズレる可能性はあるでしょ。
回路的に独立した別のクロックなはずだから。

NowとかはRTC。
timeGetTimeはたぶん結局のところCPUのクロックを分周して作ってる。
868デフォルトの名無しさん:2011/03/24(木) 01:28:59.53
timeGetTime 関数
http://msdn.microsoft.com/ja-jp/library/cc428795.aspx

これに書かれてる情報からじゃ分からんわな・・・
869デフォルトの名無しさん:2011/03/24(木) 01:31:49.72
使い勝手の悪いAPIだな
timeGetTimeの戻り値そのまま使えないじゃんか
870デフォルトの名無しさん:2011/03/24(木) 01:36:15.11
timeGetTime関数 ・・・ システムが起動してからの経過時間
Now関数 ・・・ システムの日付と時間
まったくイコール関係ないじゃんか
871デフォルトの名無しさん:2011/03/24(木) 01:38:22.86
くどいようだが
Nowは今日の日付と現在時間を返す関数で
timeGetTimeとやらはWindowsが起動してからの経過時間
単純比較出来んだろ
872デフォルトの名無しさん:2011/03/24(木) 01:39:43.38
timeGetTimeとGetTickCountの用途の違いが分からん
873デフォルトの名無しさん:2011/03/24(木) 01:42:02.65
>>872
ぜんぜん違う
874デフォルトの名無しさん:2011/03/24(木) 01:43:47.97
GetTickCount 関数
http://msdn.microsoft.com/ja-jp/library/cc429827.aspx

GetTickCountはシステムの分解能の影響受けるとある
これ以上API談義はスレチになる

VBのNowとの誤差について彼は知りたいんだろう?
875864:2011/03/24(木) 07:42:17.59
RTC 【Real Time Clock】(リアルタイムクロック)
マザーボード上に実装されている、計時専用のチップ。
他のマザーボード上のチップと違って、電源が切られている間も内蔵電池から電源供給を受けて動作している(電源が入っている間は外部電源から供給を受ける)。
OSは起動時にリアルタイムクロックから日時を取得し、その後はOS側で独自に計時する方式を採っている。


↑この「独自に計時する方式」はtimeGetTimeの計時する方式とは違うのでしょうか?
この方式が共通であれば、理論的には誤差はないはずですよね?
876デフォルトの名無しさん:2011/03/24(木) 20:46:06.43
>>875
どこからのコピペか知らないけど、HWでRTC持ってるのにわざわざそれと別のに
ソフトウェアで時刻をカウントしているとは思えない。
877デフォルトの名無しさん:2011/03/25(金) 09:32:42.58
君がどう思っていようとも、してるんだよ。
878864:2011/03/25(金) 11:22:00.82
>>875のアドレスです。
http://e-words.jp/w/RTC.html

ググったら一番最初に出てきました。
879デフォルトの名無しさん:2011/03/25(金) 14:35:57.73
名前欄も安価もひとつずつずれてるよ
880デフォルトの名無しさん:2011/03/25(金) 14:36:38.64
Microsoftに直接問い合わせればええやん
881デフォルトの名無しさん:2011/03/25(金) 19:42:17.08
>>878
その文章には「OS」としか書いてないけど....
逆にどこにそんな間抜けな二重管理をしなきゃならん必然性があるのか聞いてみたいもんだ。
そもそも歴史的にPCのクロックは精度必ずしも高くないのに
882デフォルトの名無しさん:2011/03/25(金) 20:43:45.24
君がどう思っていようとも、してるんだよ。
883デフォルトの名無しさん:2011/03/25(金) 20:47:49.82
馬鹿で何一つ意見も情報も提供できない奴に限って粘着質>>882
気色悪い。
884デフォルトの名無しさん:2011/03/25(金) 20:50:38.02
事実を受け入れない人に説明してどうなるというのか
885デフォルトの名無しさん:2011/03/25(金) 23:23:12.79
お前がそう思うならそうなんだろ。お前の中ではな(キリッ
886デフォルトの名無しさん:2011/03/25(金) 23:31:31.24
馬鹿で何一つ意見も情報も提供できない奴に限って粘着質>>885
気色悪い。
887デフォルトの名無しさん:2011/03/25(金) 23:42:03.61
仮にWindowsが>>878に書いてあるような意味不明な仕様になっているとすれば、
VirtualBoxなどでゲストOSを中断→再開した時、ゲストOSの時刻は(ホストOSの時刻ではなく)
中断した時の時刻になるはずだが、そんなことが起こるかどうかやってみたら?
888デフォルトの名無しさん:2011/03/26(土) 00:25:43.32
ゲストOSとホストOSって同期させないとどんどん差異が出てくるよ
889デフォルトの名無しさん:2011/03/26(土) 10:45:55.02
クロックが可変するCPUが出たとき、タイマーも狂うから修正パッチ出たりした記憶があるな
890デフォルトの名無しさん:2011/03/26(土) 19:04:14.11
>>862

>>875のような話もあるけど、
例えば次のプロシージャ開始時刻が12時34分56秒だとして

Private Sub Hoge()
  Dim hour As long
  Dim minute As long
  Dim second As long

  hour = DateTime.Hour(DateTime.Now)
  minute = DateTime.Minute(DateTime.Now)
  second = DateTime.Second(DateTime.Now)

hour が12
minute が34
second が56

になると思いますか? なりません。秒以下のデータが99とかだったら
minute 35 second 0 になる可能性ありますよね。

間違いをヒトコトでくくると、データの原子性というところで
間違っています。DateTime.Nowを3回呼び出しているところで
原子性が保たれません。
やるなら
  Dim ima As Date:    ima = DateTime.Now
  Dim hour As Long:    hour = DateTime.Hour(ima)
  Dim minute As Long:  minute = DateTime.Minute(ima)
  Dim second As Long:  second = DateTime.Second(ima)

timeGetTime関数の呼び出しとNow関数の呼び出しを
完全に同じタイミングで呼び出せないからには、必ずズレが生じる可能性があります。
891デフォルトの名無しさん:2011/03/26(土) 20:27:46.34
取り敢えずここはVB6スレだ
892デフォルトの名無しさん:2011/03/26(土) 23:20:03.05
>>887
Windows の日付および時刻の管理方法
ttp://support.microsoft.com/kb/232488/ja

基本的に、時刻はソフトウエアで管理され、1時間に1回 RTC で補正される。
RTCにアクセスするためにはコストがかかるのでこんな仕様になってる。

timeGetTime は、マルチメディアタイマー(HPET)と呼ばれる高精度の
タイマーを基にしている。

したがって、一致することは保証されない。
893デフォルトの名無しさん:2011/03/26(土) 23:34:34.45
じゃあ次は午前0時と午後0時の定義について話し合おうぜ
894デフォルトの名無しさん:2011/03/26(土) 23:36:06.75
事実を受け入れない人に説明してどうなるというのか
895デフォルトの名無しさん:2011/03/26(土) 23:37:47.82
>>893
しねばいいのに。
896デフォルトの名無しさん:2011/03/28(月) 19:39:04.91
4月からプログラマとして仕事するんですけど
家で学んでおくべき事とかあったら教えてください。
897デフォルトの名無しさん:2011/03/28(月) 21:38:34.60
>>896
VB6などを触っている暇があったら、JavaとCを勉強して下さい。
いまVB6の案件は非常に少ないです。
898896:2011/03/29(火) 15:20:07.36
地方プログラマなんでw
899デフォルトの名無しさん:2011/03/29(火) 18:17:17.31
900デフォルトの名無しさん:2011/03/29(火) 20:25:36.35
地方プログラマでも、VB6はあんまり使わんと思うがなあ。
取引先がVB6全盛ってんなら解らなくもないが。

地方うんぬんより弱小企業のほうがVB6率高いかも。おもに移行コスト的な面で。
901デフォルトの名無しさん:2011/03/29(火) 23:05:07.56
製造して何十年とたってる原発みたいなイメージ
902デフォルトの名無しさん:2011/03/29(火) 23:38:32.32
地震や津波によって動かない状態にはならないから素敵
903デフォルトの名無しさん:2011/03/30(水) 00:18:31.53
地震や津波がきたらポンプが止まって取り返しのつかなくなる点も同じだな
しかし、想定外の地震や津波は来ないという前提で使われている
904デフォルトの名無しさん:2011/03/30(水) 20:33:47.60
VB6は土方話ばかりで夢がちっともないな。夢がない人生なんて悲しすぎる
905デフォルトの名無しさん:2011/03/30(水) 23:40:19.51
半角スペースを含むデータをValueで配列に入れ、その配列の中身をcsvに吐き出すとなぜか半角スペースが""で出てきます
半角スペースは効かないのでしょうか?
906デフォルトの名無しさん:2011/03/31(木) 04:47:19.92
何やってんのか知らないけど、
""を半角スペースに置き換えれよ。
907デフォルトの名無しさん:2011/03/31(木) 19:48:49.27
>>905
Valueって何の事?
908デフォルトの名無しさん:2011/03/31(木) 23:06:54.44
つか、その部分のソースぐらいはここに書いても苦にならんだろう
909デフォルトの名無しさん:2011/04/03(日) 01:16:24.52
>>907
データの値の事だろ
データに必ずしも値があるとは限らない
910デフォルトの名無しさん:2011/04/03(日) 11:01:18.39
>>909
そのまま訳してるだけやんw

>半角スペースを含むデータをValueで配列に入れ

特に何か意味を含んでいると思ったが。
911デフォルトの名無しさん:2011/04/03(日) 11:30:06.35
Val(データ)?
912デフォルトの名無しさん:2011/04/03(日) 14:09:25.57
>>910
>>905の言葉のアヤじゃない?
特に意味はないと思う
913デフォルトの名無しさん:2011/04/04(月) 12:59:25.25
質問者本人が来ないと話しにならない
914デフォルトの名無しさん:2011/04/05(火) 11:36:49.77
はなしし?
915デフォルトの名無しさん:2011/04/16(土) 23:45:27.18
エクスプローラから新規作成で作ったばかりの「新規テキスト ドキュメント.txt」
は当然、0バイト
これを右クリックして、「プロパティ」→「概要」タブの、例えば「コメント」のところに
何か入力しても、ファイルサイズは0バイトのまま。

これは、「ストリームデータ」だか「サマリーデータ」だか何だか知らないけど
ファイルシステムの管理する部分に保存される

ここに書き込みたいのですが、
"Shell.Application"ではGetDetailsOfだけで、
SetDetailsOfというメソッドは存在しないので書き込みはできない

それで探してきたのが、
MSI.DLLにあるMsiSummaryInfo系のAPIなんですが、
916デフォルトの名無しさん:2011/04/17(日) 00:00:54.44
まず、「サマリーデータ」のハンドルを取得するのに
APIの宣言で、
Private Declare Function MsiGetSummaryInformation Lib "MSI" _
(ByRef hDatabase As MSIHANDLE, _
ByVal szDatabasePath As String, _
ByVal uiUpdateCount As Long, _
ByRef phSummaryInfo As MSIHANDLE) As Long
・MSIHANDLEはLongに置き換えました
・ Alias "MsiGetSummaryInformationA" を追加
で、
Private Declare Function MsiGetSummaryInformation Lib "MSI" Alias "MsiGetSummaryInformationA" (hDatabase As Long, _
ByVal szDatabasePath As String, _
ByVal uiUpdateCount As Long, _
phSummaryInfo As Long) As Long
としました。
917デフォルトの名無しさん:2011/04/17(日) 00:01:43.70
で、コードは、
Dim h as Long, f as String, r as Long,dh as Long
dh = 0
f = "C:\TEST.txt"
r = MsiGetSummaryInformation(dh, f, 0&, h)

これを実行すると戻り値r=6、でハンドルhは0が返ってしまい、正常に動作していません
何故だか判る人いますか?
918デフォルトの名無しさん:2011/04/17(日) 00:23:48.39
参考までにShell.Applicationのを。
これで、タイトル、コメント、作成者とか色々と出てきます

Dim shl, fld, i%
Set shl = CreateObject("Shell.Application")
Set fld = shl.NameSpace("C:\Folder\")

For i% = 0 To 50
  Debug.Print fld.GetDetailsOf(, i%) + ":" ;
  Debug.Print fld.GetDetailsOf(fld.ParseName("test.jpg"), i%)
Next
Set fld = Nothing
Set shl = Nothing
919デフォルトの名無しさん:2011/04/17(日) 03:08:28.94
920デフォルトの名無しさん:2011/04/17(日) 03:33:55.28
テキストファイルのプロパティについて
ttp://park7.wakwak.com/~efc21/cgi-bin/exqalounge.cgi?print+200801/08010028.txt
921デフォルトの名無しさん:2011/04/17(日) 03:34:54.83
922デフォルトの名無しさん:2011/04/17(日) 03:35:41.11
DSOFile.dll

IPropertySetStorage

923デフォルトの名無しさん:2011/04/17(日) 03:49:17.79
MSが配布してるDSOFile.dllをコピーしてRegServしないといけないとか
読むのはいいけど書く場合は、新規の書き込みはできないとか
そんなことが書いてあったのでスルーしてましたが、もう一回調べてみます
924デフォルトの名無しさん:2011/04/17(日) 04:42:41.94
>>919-922
う〜ん、難しい!
無理そうなので下記、力ずくでやる方法にします
どうもでした

解析した内容を書いておきます
"C:\test\test.jpg" に対して "C:\test\test.jpg" + ":" + Chr$(5) + "SummaryInformation"
という見えないファイルがあって、ここに概要情報が入っている
最初は存在しないが、概要タブから何か書き込むと作られる

先頭の48バイトはヘッダで内容は固定ぽい
それ以降がデータ部で数値なら4バイトLong型で格納してある
0030にデータ部の長さ
0034に項目数
0038から項目IDと格納位置へのオフセットが登録項目数だけ並んでいる
項目IDとはコメントなら6、タイトルなら2
オフセットが示す格納位置にはデータの型を示す数値、1Eなら文字列らしい
次に、文字列なら長さ、文字列という具合で入っている
925デフォルトの名無しさん:2011/04/18(月) 09:45:37.08
>>923
できるよ。
以上。
はい次の方。
926デフォルトの名無しさん:2011/04/18(月) 10:33:10.68
>>925
知りもしないくせに。
以上。
はい次の方。
927デフォルトの名無しさん:2011/04/19(火) 12:40:13.60
VB6でコンソールアプリ(コマンドプロンプトで動作する奴)って作れるの?
928デフォルトの名無しさん:2011/04/19(火) 12:51:41.53
作れる
ググれ
929デフォルトの名無しさん:2011/04/19(火) 18:45:55.96
>>927
標準モジュールだけで作る
930デフォルトの名無しさん:2011/04/19(火) 18:49:23.40
1)プロジェクトを作成します。
 標準EXEを選択します。
2)標準モジュールで「Sub Main」に実行する内容を記述します。
   Public Sub Main()

   End Sub
3)プロジェクト−Project1のプロパティ−スタートアップの設定で「Sub Main」を選択。

作業はこれだけです。結構簡単です。

931デフォルトの名無しさん:2011/04/19(火) 20:28:55.02
それは単にフォームが無いだけでコンソールアプリとはいえないな。

参照設定
Windows Script Host Object Model (wshom.ocx)

Dim fso As New FileSystemObject
Dim txtstm As TextStream
Set txtstm = fso.GetStandardStream(StdOut)
txtstm.WriteLine "helloあいうえお"
txtstm.Close

exeが出来たら、コレで仕上げ。
editbin /subsystem:console vbxxx.exe
932デフォルトの名無しさん:2011/04/20(水) 16:30:21.71
>>826
この本読んでて思ったんだけど
エラー対処コードを一々完璧に書く手法ってアジャイル(笑)な開発手法と真逆な事をやってるんだなぁ
まぁVB系はその方が生産性も高いしリスクも少ないのかなとは経験上思う事ではあるけど
933デフォルトの名無しさん:2011/04/21(木) 22:25:38.88
Windows7でのデータベース(.mdb)のアクセスでたまにフリーズしたかと思うぐらい時間がかかることない?
934デフォルトの名無しさん:2011/04/22(金) 01:05:30.75
Win7でVB6は相性悪いって話なの?
935デフォルトの名無しさん:2011/04/22(金) 10:34:14.25
Win7は実行は保証されてるが、開発環境は保証されてないし
コンポーネントは100%ではないし、DBもAccessのバージョンによってはヤバそうだ。

と思った。
936デフォルトの名無しさん:2011/04/22(金) 11:52:42.38
Win8では完全死亡か?
937デフォルトの名無しさん:2011/04/22(金) 12:16:37.24
7ですら最初はもうやめるって言ってた気がするが
938デフォルトの名無しさん:2011/04/22(金) 12:38:24.83
いい加減切ってくれないと、いつまでもVB6開発を引きずってしまうわぁ・・・
939デフォルトの名無しさん:2011/04/22(金) 13:46:49.20
旧型OSとかパソコンとか使ってる会社が全部つぶれてしまえばいいんだ
940デフォルトの名無しさん:2011/04/22(金) 15:15:01.89
古いPCは頑丈にできてたからな
今の時点で動いてるならコンデンサ以外はそうそう壊れはしないという
941デフォルトの名無しさん:2011/04/22(金) 16:45:38.00
VBアプリは業務用も含めて大量に出回ってるのと
.NETへの移行で互換性がないってことから
これからもずっとWindows上で動くようにサポートされるはずだよ
942デフォルトの名無しさん:2011/04/22(金) 18:11:23.23
サポートしなくなったら、結局は別言語に置き換えなきゃならなくなるので
仕事が増える事になるはず。サポート終わらせてくれていいよ。
943デフォルトの名無しさん:2011/04/22(金) 18:30:16.44
ゼロベースで作らなきゃならんからかなりの資金が必要やろ
944デフォルトの名無しさん:2011/04/22(金) 21:55:24.71
何か問題でも?
945デフォルトの名無しさん:2011/04/23(土) 01:59:53.04
'Form1
Private Sub Command1_Click()
With New Form2
 .Show vbModal, Me
End With
946デフォルトの名無しさん:2011/04/23(土) 02:00:17.26
こういうWithの使い方ってどんな問題含んでる?
947デフォルトの名無しさん:2011/04/23(土) 07:50:22.40
それってForm2.Visible=Falseで戻ってくるようにしてると
そのうちメモリ不足になるよね
それとなぜWithを使うのか不明
948デフォルトの名無しさん:2011/04/23(土) 08:07:22.88
>>947
VB6は参照カウンタ型GCだからメモリ管理は問題ないよ。
内容的には次と同じだね。
Dim hoge As New Form2
hoge.Show vbModal, Me

WithがFormのスコープのように見えてしまうのを
プラスとマイナスどちらに評価するかは知らんけど。
949デフォルトの名無しさん:2011/04/23(土) 08:11:10.51
>>948
内容的に、2行で書けるものを3行で書くのは問題だな。
950デフォルトの名無しさん:2011/04/23(土) 11:33:21.52
>>948
そうなんだ
>>945がなんでボタン押される都度、Form2をNewしてるか想像すると
たぶん、Form2では最後にVisible=Falseで消してるんだね
で、次にForm2をShowした時にLoadイベントが発生しないもんだから強制的にNewしてるに違いない

Form2をUnLoadしないで何回もLoadするのは、
メモリ管理上問題ないようにVBがしてくれるにしても、とても気持ち悪いす
951デフォルトの名無しさん:2011/04/23(土) 14:24:30.94
>>949
そういう時にコロンがあるんだよ。
なんでも一行にかける。
952デフォルトの名無しさん:2011/04/23(土) 14:32:08.62
>>950
> たぶん、Form2では最後にVisible=Falseで消してるんだね
> で、次にForm2をShowした時にLoadイベントが発生しないもんだから強制的にNewしてるに違いない

それはあなたの想像でしょう?

この文脈では、Form2をshow(load, unload)することはないよ。
showするのはForm2から作られたhogeインスタンス。
withを使っているから、実際には書かれてないけど。
953デフォルトの名無しさん:2011/04/23(土) 14:38:26.57
>>950は、クラスとインスタンス
newとloadの区別が付いてないね。
954デフォルトの名無しさん:2011/04/23(土) 15:12:18.92
>>952
そう、想像なんだけど、
Form2は参照しただけでインスタンスが作成されるのに、なぜわざわNewしてるのかという点。

それはForm2を使い終わった後でUnLoadしてないから(想像)
そうすると次にボタンを押した時にNewがないとForm2は表示するけど実行させたいLoadイベントが発生しない

で、メモリ不足を危惧したけどVBはシングルタスクだから
UnLoadせずに、何回インスタンスを作成しようが新たにメモリは食わないと
955デフォルトの名無しさん:2011/04/23(土) 15:16:35.67
>>953
どこか間違ってた?
956デフォルトの名無しさん:2011/04/23(土) 15:45:24.10
今やってみた
>UnLoadせずに、何回インスタンスを作成しようが新たにメモリは食わないと
これは訂正
いくつでもインスタンスは作成されちゃうよ
で、振り出しに戻るけど

hoge.Show vbModal
で実行が戻って来るのは、hogeをUnLoadするかVisible=Falseした場合。

hogeを毎回Newしてるのはhoge.Visible=Falseにして戻ってくるからに違いない

なら、ボタンを押すごとにhogeの新たなインスタンスが作成されてメモリ不足になるだろう
(Newしなければ新たなインスタンスは作成されない)
957デフォルトの名無しさん:2011/04/23(土) 15:51:27.64
すまん訂正

故意にhogeを複数出したいという意図なら問題ないや
958デフォルトの名無しさん:2011/04/24(日) 04:03:56.38
ModelessなForm2のインスタンスが別に存在して
Newして別のForm2のインスタンスが欲しいとか?
959デフォルトの名無しさん:2011/04/24(日) 06:44:57.56
> hogeを毎回Newしてるのはhoge.Visible=Falseにして戻ってくるからに違いない

だからなんで決め付けるのさ?

Form2のインスタンス側でフォーム閉じたかForm2にあるボタンで
Unload meしているかもしれんだろ。というかそっちの方が自然。

vbModalなんだから、何度もForm2がつくられることはない。
(つくろうと思えば可能がだ、自然な作り方ではない)
だからメモリ不足にもならない。

new使ってるのは、Form2が閉じられたらメモリを解放したいからとか
ボタンをおすたびにForm2を完全に0から作りたいからだろ。
(initializeで何かの初期化をしたい)
それに複数インスタンスを生成することも可能。

使用するときに毎回newして要らなくなったら完全になくなるほうが
柔軟で自然で分かりやすいだろ

withを使う書き方が気持ち悪いが、書き方の問題だけでコード上は問題ない。
960デフォルトの名無しさん:2011/04/24(日) 20:33:54.93
Dim hoge As Form2

Dim hoge As New Form2
同じって話じゃないの?
With Form2にしようがWith New Form2にしようが内部処理かわんないでしょ?
961デフォルトの名無しさん:2011/04/24(日) 20:59:14.82
つ 実行時エラー 91 オブジェクト変数またはWithブロック変数が設定されていません。
962デフォルトの名無しさん:2011/04/24(日) 22:30:33.08
> Dim hoge As Form2
> と
> Dim hoge As New Form2
> 同じって話じゃないの?
違う

> With Form2にしようがWith New Form2にしようが内部処理かわんないでしょ?
違う

With Form2 が動くのは
Dim Form2 As New Form2 という定義が見えないところにあるわけで、
これはDim hoge As Form2 とも Dim hoge As New Form2 とも違う。


963デフォルトの名無しさん:2011/04/24(日) 22:30:52.95
>>961
なるかなあ。
VB6は暗黙の宣言みたいなの、フォームにはあったよね?
964デフォルトの名無しさん:2011/04/24(日) 22:32:35.88
暗黙の宣言とやらがどういうものか言ってみ。
965デフォルトの名無しさん:2011/04/24(日) 22:32:59.90
VB6は、フォームの場合、newしなくても

Form2.show

とかしても、フォームが現れちゃったと思うんだ。
マイクロソフトはこの方法を推奨してたかもしれない。
けど、インスタンスの生成を明示的に行わない方法は個人的には嫌だ。
966デフォルトの名無しさん:2011/04/24(日) 22:43:22.78
>>960
Dim hoge As Form2 で宣言したあとに、Newしないって前提か?

>>962
明示的にNewしたのに既定のインスタンスが戻ることがあったような気がする
状況によっては、Dim hoge As New Form2 が同じものになることがあるぞ

>>963
既定のインスタンスとか呼ばれてるやつな
そして、既定のインスタンスはVBのバージョンによって動作が違う
1回目のNewしたときに既定のインスタンスが戻る時もあったりなかったり
967966:2011/04/24(日) 22:55:22.40
VB.NETの話と勘違いしてた
既定のインスタンスがあるのは間違いないが、動作周りの話はちょっと違うかも
968デフォルトの名無しさん:2011/04/25(月) 02:03:27.82
Dim hoge As New Form2

こう書いちゃうと、hoge を参照するたびに

If hoge Is Nothing Then
Set hoge = New Form2
End If

が実行されてしまう。

>>966
VB.NET でもそんなことあるわけネー
なんかコーディングミスしてるだろ。
969デフォルトの名無しさん:2011/04/25(月) 07:56:06.61
>>951
いつも思うんだけど
ラベルを書くときどーすんの?
ラベルがあっても1行で書ける?
970デフォルトの名無しさん:2011/04/25(月) 12:20:51.77
ラベル含めて一行で済ませたいやつなんているのか。ここまでくるとPerlの省略の美学に通じる物があるな
Perlは省略されまくっている上に同じ文でもいくつか書き方があるから何が書いてあるのかすぐに理解できない
971969:2011/04/25(月) 12:46:55.32
>>970
いや、VBなら1行で書けるってよく言われるからさ
じゃあラベル含めて1行で書けるの?って思ってさ
972デフォルトの名無しさん:2011/04/25(月) 13:04:54.12
よく言われる?
973デフォルトの名無しさん:2011/04/25(月) 15:49:12.84
1行で書けるってCとかJAVAじゃないの
974デフォルトの名無しさん:2011/04/25(月) 19:46:01.93
VB6は規定のインスタンスがあったり、画面にペタペタコントロール
貼りつけたりするだけでそれなりに動作するものが出来てしまうから
OOPわかってない初心者でも取っつき易いんだけど
それのせいでわけのわからん動作がある。
逆にそれが初心者にOOPをわかりづらくしている。

ということで、インスタンスは明示的に。
975デフォルトの名無しさん:2011/04/26(火) 19:50:12.76
みなさんのアドバイスのおかげでVB6+DirectXでサウンドメーターが無事作れました。ありがとうございました。
976デフォルトの名無しさん:2011/04/27(水) 01:17:11.24
>>975
どなたか存じませんが、どういたしまして。
977デフォルトの名無しさん:2011/04/27(水) 08:37:33.47
> ということで、インスタンスは明示的に。

たしか、Initializeあたりに、

If Me Is Form2 Then
 Err.Raise 適当なの
End If

ってすればForm2変数を使えなくできたはず。
(Isで参照しただけではForm2はNewされなかったはず)

逆にNotを付ければ、Form2変数だけ使えるようになる。
これ入れておくといいかもね。
978デフォルトの名無しさん:2011/04/27(水) 17:06:02.93
Dim Form2 As Integer
979デフォルトの名無しさん:2011/04/27(水) 20:11:48.13
>>12-14あたりの話か?>>975
980デフォルトの名無しさん:2011/04/28(木) 01:40:34.56
>>977
参照しただけで New されるぞ。

デフォルトのインスタンスを禁止するなら

Private Sub Form_Initialize()
  Set Form2 = Nothing
End Sub

とする。
981デフォルトの名無しさん:2011/04/28(木) 21:55:20.37
このスレで良いのかよく解らないんだけど。

Scripting.FileSystemObjectって一つ作っておけば良いのかな?
ちょこっと作ったのがあるんだけど、3つのファイルそれぞれにつくったんだけど、そんな事しなくても良いのかな?
まぁ試してみればイイじゃん?って話なのだろうけど、本当の所どうなのかと思って。
身近にそういう事に答えてくれる人が居ないんで。

Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set File1 = fso.GetFile("C:\file1.txt")
Set File2 = fso.GetFile("C:\file2.txt")
Set File3 = fso.GetFile("C:\file3.txt")

フツーは、こうなのかな?
982デフォルトの名無しさん:2011/04/28(木) 23:46:09.28
まぁ試してみればイイじゃん?
983デフォルトの名無しさん:2011/04/29(金) 03:00:48.46
>>980
されないよ。

Newされるのは、Formのプロパティを触ったとき。
984デフォルトの名無しさん:2011/04/29(金) 14:42:10.59
スミマセン。いきなり>>981で高度な質問をしてしまってご迷惑でしたか。
もっと、頭の良い人の居る所で質問しなおします。
何の意味もないプライドを傷つける様な事をしてしまってスミマセンでした。
でわ、誰も聞いてない罵詈雑言をお好きなだけ書き込むという意味の無い事を楽しんでください。ぺこ <(_ _)>
985デフォルトの名無しさん:2011/04/29(金) 16:47:48.16
>>984
>Set File1 = fso.GetFile("C:\file1.txt")
>Set File2 = fso.GetFile("C:\file2.txt")
>Set File3 = fso.GetFile("C:\file3.txt")

質問の意図と合ってるかわかんないけど、これでいいんじゃない?

>WScript.CreateObject("Scripting.FileSystemObject")

これを3つ作るっていうなら、なんでそんな事するのかわからない。
986デフォルトの名無しさん:2011/04/29(金) 22:03:35.22
VB6でDIできますか?
987デフォルトの名無しさん:2011/04/29(金) 22:53:39.57
>>986
SpringみたいなDIコンテナ…無理だろ
988デフォルトの名無しさん:2011/04/29(金) 23:48:18.76
>>987
なんで?

DIの肝は考え方であって、
実装技術はただのファクトリーパターンだと思うけど。

キー(文字列)があって対応表(XML)から引っ張ってきて
対応したクラスをつくるだけ。
989デフォルトの名無しさん:2011/04/30(土) 01:01:07.22
素人グラマの私はDIという言葉を今初めて知った
↓これで合ってる?今度はSpringというものをググって、XMLとかファクトリーパターンというのもググる

DIコンテナ【Dependency Injection Container】 - 仕事に役立つプログラミング・キーワード:ITpro
ttp://itpro.nikkeibp.co.jp/article/COLUMN/20060628/241982/


990デフォルトの名無しさん:2011/04/30(土) 01:02:14.55
でもこれってクラスを参照するためのインターフェースに依存するけどこれは問題ないの?
991デフォルトの名無しさん:2011/04/30(土) 01:04:52.92
なるほどSpringというのをググって何となくDIというものが分かった気がする
992デフォルトの名無しさん:2011/04/30(土) 01:15:00.09
>>989
正直、この説明ってどうなの?w
ただの多態をなぜもったいぶってDIなんて呼ぶのかこれじゃさっぱり分からん
993デフォルトの名無しさん:2011/04/30(土) 01:17:33.90
↓こちらのほうがDIについて正しい知識?

@IT:Spring Frameworkで理解するDI(1)
http://www.atmarkit.co.jp/fjava/rensai3/springdi01/springdi01_1.html
994デフォルトの名無しさん:2011/04/30(土) 01:20:02.15
つまりコンパイルした後でもXMLというテキストファイルをちょちょい弄るだけでアプリケーションの動きを変えられるよう設計してるってこと?
995デフォルトの名無しさん:2011/04/30(土) 01:21:07.35
本職でない素人は知らなくていい
996デフォルトの名無しさん:2011/04/30(土) 01:25:52.27
>>990
インターフェースならVB6に普通にあるじゃん。
997デフォルトの名無しさん:2011/04/30(土) 01:32:40.33
>>994
いや違う。できなくはないだろうけど、コンパイルしたあとで
アプリケーションの動きを変えるのが目的ではない。

モジュール(クラス)間の依存度を少なくするのが目的。

モジュール間の依存度が少ないから簡単にテスト用の
クラスに入れ替え可能になる。

自分で頑張ってそういう仕組みを作ってもいいけど、
他の人が用意してくれたのがある。それがJavaならSpring
998デフォルトの名無しさん:2011/04/30(土) 01:35:25.46
>>997
だから、それならただの多態以上の物ではないでしょ。
999デフォルトの名無しさん:2011/04/30(土) 01:38:18.37
>>998
多態性は実装技術。DIは(実装技術を使って)つくられた製品。

比べるものが違う。
1000デフォルトの名無しさん:2011/04/30(土) 01:41:46.46
話が通じてないなあ。

だから、依存性の排除はインターフェイスを使えば自動的についてくる機能に過ぎず、
DIとやらによって初めて得られるものでは全然ない。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。