VBプログラマ質問スレ(Ver.6.0 まで) part56
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2010/06/01(火) 22:06:37質問者は使用している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
http://www.google.co.jp/
※「まず自分で調べる」クセを身につけよう。
0002デフォルトの名無しさん
2010/06/01(火) 22:14:26Part 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
0003デフォルトの名無しさん
2010/06/01(火) 22:14:32VBプログラマ質問スレ(VB1.0〜VB6.0) Part56
http://pc12.2ch.net/test/read.cgi/tech/1275397467/
0004デフォルトの名無しさん
2010/06/01(火) 22:15:29Part31 http://pc2.2ch.net/test/read.cgi/tech/1073732636/
Part32 http://pc5.2ch.net/test/read.cgi/tech/1077216109/
Part33 http://pc5.2ch.net/test/read.cgi/tech/1080606445/
Part34 http://pc5.2ch.net/test/read.cgi/tech/1084544243/
Part35 http://pc5.2ch.net/test/read.cgi/tech/1087519251/
Part36 http://pc5.2ch.net/test/read.cgi/tech/1092906058/
Part37 http://pc5.2ch.net/test/read.cgi/tech/1090286450/
Part38 http://pc5.2ch.net/test/read.cgi/tech/1095673000/
Part39 http://pc5.2ch.net/test/read.cgi/tech/1099737063/
Part40 http://pc5.2ch.net/test/read.cgi/tech/1106748775/
Part41 http://pc8.2ch.net/test/read.cgi/tech/1112414085/
Part42 http://pc8.2ch.net/test/read.cgi/tech/1116924129/
Part43 http://pc8.2ch.net/test/read.cgi/tech/1123952677/
Part44 http://pc8.2ch.net/test/read.cgi/tech/1130231657/
Part45 http://pc8.2ch.net/test/read.cgi/tech/1133977286/
Part46 http://pc8.2ch.net/test/read.cgi/tech/1138975113/
Part47 http://pc8.2ch.net/test/read.cgi/tech/1141320612/
Part48 http://pc8.2ch.net/test/read.cgi/tech/1146678926/
Part49 http://pc8.2ch.net/test/read.cgi/tech/1152667953/
Part50 http://pc10.2ch.net/test/read.cgi/tech/1161517193/
Part51 http://pc11.2ch.net/test/read.cgi/tech/1169949451/
Part52 http://pc11.2ch.net/test/read.cgi/tech/1179563617/
Part53 http://pc11.2ch.net/test/read.cgi/tech/1187667616/
Part54 http://pc11.2ch.net/test/read.cgi/tech/1204552981/
Part55 http://pc12.2ch.net/test/read.cgi/tech/1247487156/
0005デフォルトの名無しさん
2010/06/01(火) 22:17:32スレを立てると宣言したのにイヤガラセはやめろ
0006デフォルトの名無しさん
2010/06/02(水) 00:33:010007デフォルトの名無しさん
2010/06/04(金) 19:25:050008デフォルトの名無しさん
2010/06/05(土) 11:06:380009デフォルトの名無しさん
2010/06/05(土) 11:26:39http://academy6.2ch.net/test/read.cgi/gengo/1117756064/
0010デフォルトの名無しさん
2010/06/05(土) 11:34:38VBプログラマ質問スレ(VB1.0〜VB6.0) Part56
http://pc12.2ch.net/test/read.cgi/tech/1275397467/
0011デフォルトの名無しさん
2010/06/05(土) 16:51:520012デフォルトの名無しさん
2010/06/05(土) 17:38:22単に録音するだけだった気がする。
0013デフォルトの名無しさん
2010/06/05(土) 19:27:36ミュート状態でもステレオミキサONにすれば動くようだ(XPで)
ソースもあるから中身見ればなんとかVBでも作れるんじゃね?FFTは辛いかもしれないが波はそのまんまだろう
0014デフォルトの名無しさん
2010/06/05(土) 20:22:530015デフォルトの名無しさん
2010/06/05(土) 20:43:14ミキサで録音元を設定してあげれば再生しているWAVの波形がとれる
ていうかVBで作らなくてもそのソフトで十分じゃね?
0016デフォルトの名無しさん
2010/06/05(土) 21:17:250017デフォルトの名無しさん
2010/06/08(火) 16:11:040018デフォルトの名無しさん
2010/06/08(火) 18:27:200019デフォルトの名無しさん
2010/06/09(水) 02:20:430020デフォルトの名無しさん
2010/06/09(水) 12:23:140021デフォルトの名無しさん
2010/06/09(水) 23:30:240022デフォルトの名無しさん
2010/06/09(水) 23:45:400023デフォルトの名無しさん
2010/06/11(金) 11:29:55VB6と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側でネットワーク上の別マシンの場合に行う設定などあったりするのでしょうか?
0024デフォルトの名無しさん
2010/06/11(金) 11:57:30他のPCで動くってことはPG的には問題はひとまずおいといて
そのマシンのファイアウォールとかはひとまず全部OFFにして試してみた?
ポートの問題じゃないのかな?
0025デフォルトの名無しさん
2010/06/11(金) 12:20:43Perlのスクリプトの方でもポートは特に指定していなくても正常に使えてる状態です
MySQLもインストール時にUIDとパスワードぐらいしか設定変更はしていません
あれから調べててDSNの設定が〜という記事もいくつか参照したのですが
もともと参照した記事は以下のDSNを使わずにデータを取得する、というものです
ttp://matome.info/VB6MySQL/
コードはSERVERやUIDなどのMySQLへの接続パラメータ以外はそのまま使っています
0026デフォルトの名無しさん
2010/06/11(金) 13:30:14自分で入れてないだけですでに入ってるんじゃね?>FW
ウインドウズFWだったり、メーカー出荷時に入ってたり
perlからいけるんならポート塞ぎじゃなくてアプリケーションレベルの禁止かな
あとは正しいと思い込んでるアドレスかポートが実は間違ってるとか
0027デフォルトの名無しさん
2010/06/11(金) 14:05:57SQLマシンは自作マシン、OSもXPSP3の単発買いのものなんで外部のFW等は入れてないので除外
セキュリティセンター系はサービスから除外してるんで、復帰させて確認したけど
WindowsのFW系もきちんと停止している状態でした
LANの構築がハブだけでアドレスが169.254.〜となっているのが原因だったりしますかね?
0028デフォルトの名無しさん
2010/06/11(金) 14:06:53>>25のアドレスはオプション指定されてるなぁ
ついでだからデバッグログ(値として4)とか吐き出すようにしてみてはどうかな?
詳しくはWEBでw
ttp://dev.mysql.com/doc/refman/5.1/ja/myodbc-configuration-connection-parameters.html
0029デフォルトの名無しさん
2010/06/11(金) 14:07:510030デフォルトの名無しさん
2010/06/11(金) 14:11:06MySQLの層の話じゃなさそうな気はする
0031デフォルトの名無しさん
2010/06/11(金) 14:11:23ちょいと覗いてみます
>>29
pingは0msで返ってきてました
0032デフォルトの名無しさん
2010/06/11(金) 14:11:26仕事中に2chで相談会でもしてんの?
俺はニートだけど
0033デフォルトの名無しさん
2010/06/11(金) 14:12:290034デフォルトの名無しさん
2010/06/11(金) 14:24:260035デフォルトの名無しさん
2010/06/11(金) 14:26:29optionにデバッグの4を指定して実行してみたけどファイルが作成された形跡がない状態でした
Cのルート、実行ファイルのフォルダ近辺からファイルの検索までかけたけど、該当ファイルは無しでした
0036デフォルトの名無しさん
2010/06/11(金) 14:28:10同じマシンからperlでつながるんだったらネーットワーク的には問題ないし
サーバーの設定もokってことじゃん?
残るはクラ側の設定しかないじゃん?
納得いかなかったら、パケットキャプチャ系のツールを入れて覗いてみれば?
0037デフォルトの名無しさん
2010/06/11(金) 14:32:490038デフォルトの名無しさん
2010/06/11(金) 14:47:12知人からはPG的なものじゃなくてハードウェアかLANの構成絡みじゃないのか、との弁
とりあえず昔のノートとか引っ張り出してハードウェア絡みを見直してみます
お騒がせしました
0039デフォルトの名無しさん
2010/06/11(金) 22:50:08VBPファイルをクリックすると、〜OCXが読み込めませんというエラーが表示され、
ロードに失敗してしまいます。
デスクトップ上に同じプロジェクトがあり、片方のプロジェクトは正常に開くのですが、
片方が毎回ロードに失敗してしまい、参照設定をしようとすると、
「ActiveXコンポーネントは登録できません」とエラーが出てしまい…
なぜか正常に開いているプロジェクトと同じ参照先に設定ができません。
OCXはちゃんとにレジストリ登録ができているのですが、
何が原因かわかりますでしょうか?
0040デフォルトの名無しさん
2010/06/11(金) 22:52:070041デフォルトの名無しさん
2010/06/11(金) 23:02:13失敗してしまいます。
0042デフォルトの名無しさん
2010/06/11(金) 23:06:200043デフォルトの名無しさん
2010/06/11(金) 23:26:03Subversionにコミットされているもので、
他の人は開いた時に何もエラーが出てなかったので。。。
0044デフォルトの名無しさん
2010/06/11(金) 23:27:450045デフォルトの名無しさん
2010/06/11(金) 23:29:260046デフォルトの名無しさん
2010/06/11(金) 23:33:48OK な方のプロジェクトを何かバージョン管理システムに突っ込んで、
NG な方のプロジェクトのファイルでオーバーライトしてコミットして
差分を調べれば違いがわかる、かもしれない。
0047デフォルトの名無しさん
2010/06/12(土) 00:37:52DLLも再登録して開くようにしているのですが、
なぜか参照先が違うところを見にいっていて、
再登録したほうのDLLを設定しようとするとエラーが出てしまうのです。
0048デフォルトの名無しさん
2010/06/13(日) 02:15:36先輩!
飯おごってください!
0049デフォルトの名無しさん
2010/06/14(月) 13:12:49VBでゲーム作るのは無謀だと
そこそこセンス無いと無理ぽ
0050デフォルトの名無しさん
2010/06/14(月) 16:53:59DirectXなどが操作し辛いという事ならそうかなと思うけど
0051デフォルトの名無しさん
2010/06/16(水) 00:36:163Dをフルに使ったゲームとかなら
VBで作るのは難しいがアドベンチャーゲームの
ようなものは十分作れる。
そういうことは誰でも理解していることなので、
わざわざ>>49のようなことを言うレベルの人間は、
それ以前に技術力が足りない。
0052デフォルトの名無しさん
2010/06/16(水) 01:38:29逆に、ゲーム系のソフトしか作ったことない人は業務用・実用系のソフト作りが苦手とか
プログラミングでもパソコン向けでは無いほうのしか作ったこと無い人はパソコン向けが苦手とか
0053デフォルトの名無しさん
2010/06/16(水) 01:43:450054デフォルトの名無しさん
2010/06/16(水) 01:52:310055デフォルトの名無しさん
2010/06/16(水) 20:49:38だがどっちが偉いかって話は不毛ってもんだ
0056デフォルトの名無しさん
2010/06/17(木) 02:08:27未だに使えん
0057デフォルトの名無しさん
2010/06/17(木) 02:16:110058デフォルトの名無しさん
2010/06/17(木) 02:18:140059デフォルトの名無しさん
2010/06/17(木) 02:20:21N88BASIC時代からずっと半角ばっかだったから
全角使うのが当たり前な時代なら
全角使ってみようかなと
0060デフォルトの名無しさん
2010/06/17(木) 02:20:240061デフォルトの名無しさん
2010/06/17(木) 02:22:40ソースとかはたまに見てるからさ
VB6も全角使うのかなーって。
0062デフォルトの名無しさん
2010/06/17(木) 02:23:160063デフォルトの名無しさん
2010/06/17(木) 02:23:320064デフォルトの名無しさん
2010/06/17(木) 02:24:32VB.NETは別物なので専門スレで、VBA、APIの質問もそれぞれのスレで。
0065デフォルトの名無しさん
2010/06/18(金) 06:54:04ただ、主流かと言われると微妙だな
0066デフォルトの名無しさん
2010/06/18(金) 09:58:420067デフォルトの名無しさん
2010/06/18(金) 14:33:150068デフォルトの名無しさん
2010/06/18(金) 16:35:37俺の結論としては、入力の手間に値するほどの価値は無かった
結局は気のきいたコメントが一番大事だと思った
インテリセンスとかある今のVB.NETならまた違った結論になるかもしれんな
0069デフォルトの名無しさん
2010/06/18(金) 20:05:320070デフォルトの名無しさん
2010/06/18(金) 20:07:030071デフォルトの名無しさん
2010/06/18(金) 20:10:40使えるのもある、使えないのもある
0072デフォルトの名無しさん
2010/06/19(土) 15:09:46VB6では以下のように、変数宣言時に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のどこにも出て来ないはずの内部関数であっても日本語を使う癖が付いてるみたい。
0073デフォルトの名無しさん
2010/06/19(土) 17:10:52Dim Hoge As ClassHuga
Set Hoge = New ClassHuga
と書くとどこかで聞いた
007472
2010/06/19(土) 18:12:11普通はそう書くんですけど、
Dim Hoge As New ClassHuga
という書き方も出来るんです。こう宣言した場合、Setする事なく突然Hogeを利用することが出来ます。
例えば、
Dim Hoge As ClassHuga
Hoge.Piyo = 0
というコードを書いた場合はPiyoプロパティにアクセスする段階でエラーになりますよね。
前述の通り宣言した場合はエラーになりません。
HogeがNothingだった場合、アクセスしたその時点で自動的にインスタンスがNewされてそれがSetされます。
ちょうど「フォームのそれに似た挙動になる」と考えてもらえるとわかりやすいかと。
質問は、それがVBScriptでも可能なのでござろうか?ニンニンというお話です。
0075デフォルトの名無しさん
2010/06/19(土) 18:19:540076デフォルトの名無しさん
2010/06/19(土) 20:07:26よいのか教えてください。
0077デフォルトの名無しさん
2010/06/19(土) 20:36:04Form1 に開始ボタンを置く、Form2 でグラフィックを描く場合、
Form2 に public なグラフィックを描く関数 func を作って
Form1 の開始ボタンを押したら、call Form2.func() を実行。
0078デフォルトの名無しさん
2010/06/19(土) 20:42:39ありがとう!!
0079デフォルトの名無しさん
2010/06/19(土) 22:58:50> 質問は、それがVBScriptでも可能なのでござろうか?ニンニンというお話です。
不可能。
ちなみに、as の有無には関係ない。
0080デフォルトの名無しさん
2010/06/19(土) 23:18:19>>79
そうですか・・・残念でござる。
ありがとうございました。
0081デフォルトの名無しさん
2010/06/20(日) 20:03:40大きくなりますよね。大きくならないように画面の大きさを固定する方法を教えて下さい!
0082デフォルトの名無しさん
2010/06/20(日) 20:06:040083デフォルトの名無しさん
2010/06/20(日) 20:28:34??
「固定のやつ」を選ぶ方法を教えて下さい。
0084デフォルトの名無しさん
2010/06/20(日) 20:32:570085デフォルトの名無しさん
2010/06/20(日) 20:34:44ありがとうございました! 出来るようになりました。
0086デフォルトの名無しさん
2010/06/20(日) 20:37:000087デフォルトの名無しさん
2010/06/25(金) 17:43:430088デフォルトの名無しさん
2010/06/25(金) 20:07:50よく使っていたと思いますが、VBでも同じような命令はあるのでしょうか?
本を調べても、GETに似たものはあるようですがPUTは見つかりません。
詳しい方、使い方をご教授下さい!
0089デフォルトの名無しさん
2010/06/25(金) 21:37:53N88はあんま使ってなかったからよくわからんけど
GET@やPUT@ってゲームキャラクターとかを描くときに使った記憶はある
VBでゲーム作るときは
普通にペイントソフトでゲームキャラの画像を作って
それを読み込んで使ってたな
ImageやPicutureBoxあたりで画像を読み込んで
PaintPicutureメソッド使ってフォームとかPicutureBoxに描写すればいいんじゃない?
俺がVB始めたころは運悪くVB関連の資料がベーマガしかなかったから
Win32APIのBitBlt使ってた。つい1年くらい前にPaintPictureメソッドの存在を知った
Windows95のPCだとBitBlt使わなきゃゲームはキツイけど
WindowsXPのPCだとPaintPictureでもまぁ気にはならない程度には早い描写ができたね
0090デフォルトの名無しさん
2010/06/25(金) 21:40:37009189
2010/06/25(金) 21:42:50ちなみにN88からVBへ行く前にCARealizerというGUIなBasic言語をちょいやったのでVBへはそんなに抵抗なかったです
0092デフォルトの名無しさん
2010/06/26(土) 01:22:210093デフォルトの名無しさん
2010/06/26(土) 19:47:30ありがとうございます! PaintPicuture について調べてみます。
VBは最近入手したばかりなので、暗中模索の状態です。
0094デフォルトの名無しさん
2010/06/27(日) 16:32:500095デフォルトの名無しさん
2010/06/27(日) 18:48:38本格的なゲームを作る野心などは持っておりません!
とりあえず、数学の各種曲線を描画するプレゼンテーションを考えているところです。
(N88-BASICなら簡単だったのに、VBでは難しいです。言語が進化したのだから
プログラムも易しくなるべきなのに、逆に難しくなるなんてオカシイおー!)
0096デフォルトの名無しさん
2010/06/27(日) 18:55:22DirectX は『言語』ではなくて『ライブラリ』。
今なら VB6.0 よりも .NET の方が情報がいっぱいあって
いろいろ調べやすいと思うから、.NET を使ったほうがいいよ。
ここは時代の取り残された者たちのスレです。
0097デフォルトの名無しさん
2010/06/27(日) 22:17:28ファイル交換ソフトでもらうしかないかも・・・。
0098デフォルトの名無しさん
2010/06/27(日) 22:22:540099デフォルトの名無しさん
2010/06/27(日) 22:26:52VB.NET質問スレ(Part34)
http://pc12.2ch.net/test/read.cgi/tech/1270998481/
0100デフォルトの名無しさん
2010/06/27(日) 22:27:38簡単にみせてあげることが出来ないって聞いたのですが・・・、
その点について教えて下さい!
0101デフォルトの名無しさん
2010/06/27(日) 22:31:250102デフォルトの名無しさん
2010/06/27(日) 22:43:33コンパイルも配布もできる。VB.NETスレで待ってるぜ。
0103デフォルトの名無しさん
2010/06/27(日) 23:00:43ホント? ありがとう!!
これから無料版をダウンロードしてみます。
0104デフォルトの名無しさん
2010/06/27(日) 23:09:400105デフォルトの名無しさん
2010/06/28(月) 00:04:08Me.〜〜 は自分で配置したコントロールやフォーム自体のプロパティ?で
e.〜〜は何の意味があるんでしょうか?
0106デフォルトの名無しさん
2010/06/28(月) 00:14:250107デフォルトの名無しさん
2010/06/28(月) 00:16:060108デフォルトの名無しさん
2010/06/28(月) 00:24:430109デフォルトの名無しさん
2010/06/28(月) 17:49:51それVB.NETじゃないの?
0110デフォルトの名無しさん
2010/06/28(月) 19:15:08Visual Studio 2010 試用版 をダウンロードしてインストールしようとしたのですが、
ハードディスクの空き容量が足りなくてインストールできませんでした。7.1GBも
必要だなんて・・・・!?
という訳で、また戻って来たおー!
0111デフォルトの名無しさん
2010/06/28(月) 20:17:54もどってくるなw
0112デフォルトの名無しさん
2010/06/28(月) 20:34:44→http://pc12.2ch.net/test/read.cgi/tech/1275397597/l50
0113デフォルトの名無しさん
2010/06/28(月) 20:38:00http://www.youtube.com/watch?v=6-O24msoOac
0114デフォルトの名無しさん
2010/06/28(月) 22:04:140115デフォルトの名無しさん
2010/06/29(火) 00:14:32PC買い換えろww
0116デフォルトの名無しさん
2010/06/29(火) 00:53:460117デフォルトの名無しさん
2010/06/29(火) 20:56:20>7.1GってVB.Netだけのサイズなの?
違うかも知れない。だけど、VB.Netだけをインストールする方法が
分からなかったヨ・・・。
これまで見たプログラム言語で1番良かったのは、潮田氏のフリーソフト
「N88互換BASIC for Windows95」 だな。・・ for windows95 と書いてあっても、
実際は XP でも問題なく使える(多分、vista や 7 でも)。プログラム自体では
16色しか使えないけど、windows の画面で使えるので そのままグラフィック
ソフトに移せば、1677万色を使っての色変更も簡単に出来る。
当分は、VBを勉強しながら、「N88互換BASIC」 を使って行こうと思っているよ。
0118デフォルトの名無しさん
2010/06/29(火) 21:03:590119デフォルトの名無しさん
2010/06/29(火) 21:16:29↓
http://headlines.yahoo.co.jp/videonews/nnn/20100629/20100629-00000048-nnn-soci.html
0120デフォルトの名無しさん
2010/06/29(火) 21:39:040121デフォルトの名無しさん
2010/06/29(火) 21:48:310122デフォルトの名無しさん
2010/06/29(火) 21:56:13他のなんてクズだ!ゴミだ!クソだ!
0123デフォルトの名無しさん
2010/06/30(水) 10:59:26F-BASIC は昔のF-BASICを昔のFM系マシンな画面で使える上に、Windowsライクなソフトも組める、わりとおもしろ言語。
ttp://www.fmworld.net/product/soft/fbasic/
0124デフォルトの名無しさん
2010/06/30(水) 23:52:29ttp://www.microsoft.com/japan/msdn/vstudio/2008/product/express/
0125デフォルトの名無しさん
2010/07/01(木) 11:20:250126デフォルトの名無しさん
2010/07/01(木) 19:47:50F-BASIC はWindows XP 以降は使えないから、問題外だよ。
0127デフォルトの名無しさん
2010/07/01(木) 20:13:05ActiveBasic の公式ページって呼び出しても出て来ないよ。
もう閉鎖されたのかな?
結局、普及しなかったんじゃないの?
0128デフォルトの名無しさん
2010/07/01(木) 20:29:37しらねえで言うな!
0129デフォルトの名無しさん
2010/07/01(木) 20:38:36公式サイトが呼び出せなくてソフトをダウンロード出来ないなら、
話にならんじゃん! ダウンロードして、インストールして、使ってみて
初めて評価を下せるものじゃん!
0130デフォルトの名無しさん
2010/07/01(木) 20:58:540131デフォルトの名無しさん
2010/07/01(木) 21:54:020132デフォルトの名無しさん
2010/07/01(木) 22:20:280133デフォルトの名無しさん
2010/07/02(金) 18:56:44「呼び出す」以外にはどんな表現があるの??
0134デフォルトの名無しさん
2010/07/02(金) 19:00:260135デフォルトの名無しさん
2010/07/02(金) 19:45:45普通は「リクエスト」
0136デフォルトの名無しさん
2010/07/02(金) 19:48:58おかしいじゃん!
公式サイトをリクエストする、・・なんて。
0137デフォルトの名無しさん
2010/07/02(金) 20:27:570138デフォルトの名無しさん
2010/07/02(金) 20:39:160139デフォルトの名無しさん
2010/07/02(金) 21:29:580140デフォルトの名無しさん
2010/07/02(金) 21:32:340141デフォルトの名無しさん
2010/07/02(金) 21:39:340142デフォルトの名無しさん
2010/07/04(日) 11:19:21VBScript について質問させて下さい。
下記ページに記載されている 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
0143デフォルトの名無しさん
2010/07/04(日) 11:50:590144142
2010/07/04(日) 12:29:43'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(プロパティ) ではなく
= で無理やりやろうとしたってことなんでしょうね
0145デフォルトの名無しさん
2010/07/04(日) 12:37:310146デフォルトの名無しさん
2010/07/04(日) 13:23:07言語は java と C しかやったことがなかったので知りませんでした。
納得いく説明をありがとうございます。
もう 1 つ、VBScript に関して質問させて下さい。
メンバ変数のアクセス修飾子の意義についてです。
外部ファイル:external.vbs で定義している変数を取得したい場合、
Execute objFSO.OpenTextFile("external.vbs").ReadAll()
で取得出来ますが、Private で宣言した変数も取得できてしまいます。
java においては ※ また java の話を持ち出してしまって恐縮ですが
メンバ変数に Private をつけるのは外部からアクセスされないようにするためですが、
VBScript ではアクセスできてしまいます。
そこで、メンバ変数にアクセス修飾子を付ける意義は何だろう、と思いました。
なお、外部ファイルにアクセスする方法が上記以外にあり、
その方法においてはアクセス修飾子が有効になるとのことであれば
それについて教えていただけると幸いです。
0147デフォルトの名無しさん
2010/07/04(日) 13:26:58当然、スコープなんて気にしない。
所詮スクリプトなんだから、あんまり考えすぎるなよ。
Windowsでまっとうなスクリプトをやりたければ、PowerShellの方がいいよ。
0148デフォルトの名無しさん
2010/07/04(日) 14:06:14PowerShell は VBScript より便利なんですね。
自分も本当は他の言語が良かったんですが、現在の仕事の制約上しかたなくorz
細かいことが気になってしまう性格なのでまた質問することもあると思いますが
今後もよろしくお願いします m(_ _)m
0149デフォルトの名無しさん
2010/07/04(日) 15:30:100150デフォルトの名無しさん
2010/07/04(日) 16:20:41言語仕様についてちゃんと説明されている本を一冊買っといたほうがいいよ
0151デフォルトの名無しさん
2010/07/04(日) 21:24:27アドバイスありがとうございます。探してみます。
本と Web を両方とも使いこなせるようになりたいですね
0152デフォルトの名無しさん
2010/07/04(日) 22:04:35ソフトをダウンロードできるところは他にないのかな?
0153デフォルトの名無しさん
2010/07/04(日) 22:06:340154デフォルトの名無しさん
2010/07/05(月) 00:06:47スレチ
【安定版】ActiveBasicその12【4.24】
http://pc12.2ch.net/test/read.cgi/tech/1264846709/
ActiveBasic使ってる人いる?
http://pc12.2ch.net/test/read.cgi/tech/1175929781/
0155デフォルトの名無しさん
2010/07/05(月) 22:04:160156デフォルトの名無しさん
2010/07/07(水) 12:59:44キャプチャする前にクリップボードにあるデータを避難させたいのですが
それはデータごとに条件分岐しないとダメなんですか
0157デフォルトの名無しさん
2010/07/07(水) 13:11:280158デフォルトの名無しさん
2010/07/07(水) 13:13:000159デフォルトの名無しさん
2010/07/07(水) 13:13:53私素人だけど条件分岐したほうが良いに1票投じます
0160デフォルトの名無しさん
2010/07/07(水) 23:27:000161デフォルトの名無しさん
2010/07/08(木) 06:12:390162デフォルトの名無しさん
2010/07/08(木) 12:08:32コマンドライン引数で渡されてファイル開くのと
アプリケーションの関連付けでDDE通信でファイル開くのと
なんか分けわかんない
0163デフォルトの名無しさん
2010/07/08(木) 18:36:06なんか分けわかんない ・・・ (×)
なんか訳わかんない ・・・・・ (○)
0164デフォルトの名無しさん
2010/07/08(木) 18:38:42誤変換をどうこう言うのってどうなのよ
0165デフォルトの名無しさん
2010/07/08(木) 18:51:010166デフォルトの名無しさん
2010/07/08(木) 19:36:380167デフォルトの名無しさん
2010/07/16(金) 18:19:28Openで開いたBinaryファイルをByte配列に格納する場合とか
0168デフォルトの名無しさん
2010/07/20(火) 17:42:130169デフォルトの名無しさん
2010/07/21(水) 14:40:14VBAの埋め込みとか出来ないよな、常識的に考えて……
ファイル管理するならCGI作らないといかんのかー
VBで出来ればと思ったんだが
0170デフォルトの名無しさん
2010/07/21(水) 18:30:39できると記憶してるが
0171デフォルトの名無しさん
2010/07/21(水) 22:00:000172デフォルトの名無しさん
2010/07/21(水) 22:57:200173デフォルトの名無しさん
2010/07/22(木) 00:35:41多分楽だし軽い
0174デフォルトの名無しさん
2010/07/22(木) 11:17:30そりゃWin32 API使うこと前提ならそうだけど、VB6だけじゃ無理じゃないか?
0175デフォルトの名無しさん
2010/07/22(木) 13:15:090176デフォルトの名無しさん
2010/07/22(木) 13:47:520177デフォルトの名無しさん
2010/07/23(金) 22:18:02APIなんか使わなくてもテキストファイル吐けるだろうが
0178デフォルトの名無しさん
2010/07/24(土) 23:22:520179デフォルトの名無しさん
2010/07/25(日) 01:06:22VBは入出力書かないといかんようだし
0180デフォルトの名無しさん
2010/07/29(木) 19:58:03VB6でbatファイルを作ってそれを実行して他のアプリを動かし、
それで出来たファイルを処理するというプログラムを作っています。
実行する所は
aaa = CreateObject("WSCript.Shell").Run("test.bat", 6, True)
としているのですが、時々そのアプリがバグで暴走し終了しない事があります。
ある一定以上の時間が経ったら強制終了させたいのですが
この場合処理待ちの所をやめにしてそこは自分でプログラムしないと
出来ないでしょうか?他に簡単な方法がありましたら教えてください。
よろしくお願いいたします。
0181デフォルトの名無しさん
2010/07/31(土) 01:38:52やっぱADODB.Streamしか無いよね・・・・orz
0182デフォルトの名無しさん
2010/07/31(土) 04:06:08特定文字の抜き出しって
TextStreamのReadLineで一行ずつ読み込んでやるより
ReadAllで全部読み出してからのほうが早いんだな・・・
まぁよくよく考えりゃ当然か・・・・
0183デフォルトの名無しさん
2010/07/31(土) 04:07:33TextStream使わなくっても
普通にOpenで読み込んでも変わらんな・・・
0184デフォルトの名無しさん
2010/08/09(月) 17:00:050185デフォルトの名無しさん
2010/08/10(火) 22:44:02昔作ったくそアプリの保守なんかもうやめろよw
0186デフォルトの名無しさん
2010/08/11(水) 01:05:240187デフォルトの名無しさん
2010/08/11(水) 01:09:190188デフォルトの名無しさん
2010/08/11(水) 07:55:160189デフォルトの名無しさん
2010/08/12(木) 18:13:21VB6.0のものだと思わしきプログラムを渡されました。
もしかしてVB6.0の開発環境は無償で手に入らないのでしょうか。
自分なりに調べてみたのですが、.NETに変換するのしか見つからなかったので。
0190デフォルトの名無しさん
2010/08/12(木) 18:28:170191デフォルトの名無しさん
2010/08/12(木) 20:26:43早速のお返事ありがとうございます。
.NETだとできるんで、6.0でも同様かなとか思ってました。
変なことを言ってしまい申し訳ありませんでした。
0192デフォルトの名無しさん
2010/08/12(木) 21:18:04MSDN Subscriptionでしか入手できなかったと思う。
あとは中古探すくらいかな。
0193デフォルトの名無しさん
2010/08/13(金) 03:18:320194デフォルトの名無しさん
2010/08/13(金) 03:47:04Call .Cls
Call .Line(x1,y1)-(x2,y2)
End With
Lineのとこでエラーが出るんだけど
Withブロック内でLineメソッドって使えないってこと?
0195デフォルトの名無しさん
2010/08/13(金) 03:53:42Public Const gcntMaxNumber
Private Const mcntLimitNumber
cntみたいなの付けて定数名にしてる?
それとも
Public Const MAX_NUMBER
Private Const LIMIT_NUMBER
大文字にして定数名つけてる?
0196デフォルトの名無しさん
2010/08/13(金) 04:52:39例えば
'目的:〜
'引数:〜
'戻り値:〜
Public Function Hoge(v)
〜
End Function
みたいに
こういう説明ってイベントにも書いたりするの?
例えば
'説明:〜
Public Sub Command1_Click()
End Sub
みたいな感じに
0197デフォルトの名無しさん
2010/08/13(金) 04:54:59話はそれからだ
0198デフォルトの名無しさん
2010/08/14(土) 00:45:13Call .Line((x1,y1)-(x2,y2))
0199デフォルトの名無しさん
2010/08/14(土) 00:46:050200デフォルトの名無しさん
2010/08/14(土) 02:05:43With使う時はオブジェクトブラウザにある書式でやればお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
0201デフォルトの名無しさん
2010/08/14(土) 02:13:52かなり面白いよ
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
これで試すといい
0202デフォルトの名無しさん
2010/08/14(土) 02:14:42Static p%
Me.Caption = Hex(p)
With Picture1
Call .Cls
Call .Line(p, 50, 50, 100, 100, vbRed)
End With
p=p+1 '←この行が抜けてた
End Sub
0203デフォルトの名無しさん
2010/08/14(土) 02:18:58If 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進数にしたほうがわかりやすいかも
0204デフォルトの名無しさん
2010/08/15(日) 00:29:36ちょっと時代遅れ気味ですがVC++と連携でアプリを
書く予定です。
参考書を探しているのですが、おすすめの本があったら
教えてください。
なお自分でも探してみたのですが、安価な本はどうも
内容が薄すぎて参考にならないことがわかりました。
この本は非常に高価ですが有益なのでしょうか?
http://www.amazon.co.jp/dp/4839902003/
ご存知でしたら教えてください。
0205デフォルトの名無しさん
2010/08/15(日) 01:17:05なんていうか、同じ暇つぶしでももっと有意義なことした方がいいんじゃないのか。
0206デフォルトの名無しさん
2010/08/15(日) 01:24:52VBの場合、初期段階の頃盛んに良い参考書が出版されたが
Office VBAの出現やJavaの出現、Internet周りのWebアプリ
の出現、極めつけは超難解言語VB.NETの出現に押されてか
もともと貧弱だった参考書市場が一気に縮小
その割には結構使われてるし需要があるという奇妙な状況にな
って久しい。>>204の本が異常な価格が付いているのは
Amazonの査定がいい加減というわけでもなくて、何か
とんでもなく重要な情報が書かれているとかそういうん
じゃないの?ま、ちょっと危ない感じだから手は出さない
ほうがいいと思う。(出せないだろうがw)
0207デフォルトの名無しさん
2010/08/15(日) 04:31:32http://page18.auctions.yahoo.co.jp/jp/auction/w51145893
こっちで同じ本が790円ででてるから
買ってあげろ。
7月27日にコメント追加しているところを見ると
今までずっと売れてねーから。
この本かって、Amazonで100万円ぐらいで売れるんじゃねーの?
Amazonでついてる2千万という値段からすれば、格安だろ。
儲けられるぜ
0208デフォルトの名無しさん
2010/08/15(日) 10:43:18アマゾンは中古本の査定なんてしない。
っていうか、君質問者自身じゃないのか
0209デフォルトの名無しさん
2010/08/15(日) 12:27:230210デフォルトの名無しさん
2010/08/16(月) 03:30:14VB6のシンプルな文法が好きって人も多いかも
(VBAのほうが良いのだろうがコンパイラがない)
.NETのVBは難し杉
まぁ一部文法以外はほとんど使う必要などないのだろうが
新しい文法を使ってみたいというのが人情というもので無理に
使う奴が必ず居てそれを読まされたりして苦労する
0211デフォルトの名無しさん
2010/08/16(月) 06:37:08VBを勉強してどうなるのか、って話。参考書が必要なレベルなら素直にC#にするべきだと思うがな。
VBはやりたいことが素直にできないことが多い、無駄の多い言語環境だと思うよ。意味不明な仕様も多いし。
0212デフォルトの名無しさん
2010/08/16(月) 06:48:460213デフォルトの名無しさん
2010/08/16(月) 17:23:300214デフォルトの名無しさん
2010/08/16(月) 20:12:132000年当時、VB6は現役だったしね。
0215デフォルトの名無しさん
2010/08/16(月) 21:43:220216デフォルトの名無しさん
2010/08/17(火) 09:01:16うちは .NET に移行してるけど
まだ VB5 のバージョン使ってるお客さんも居るよー
大人の事情で面倒見ないとイカンのよね
0217デフォルトの名無しさん
2010/08/17(火) 09:53:52その点は十分に注意しなければならないが
0218デフォルトの名無しさん
2010/08/17(火) 14:33:470219デフォルトの名無しさん
2010/08/17(火) 15:03:010220デフォルトの名無しさん
2010/08/17(火) 15:06:52添付CDがないからその価格
添付CD付きだと最早3000万円らしい
0221デフォルトの名無しさん
2010/08/17(火) 17:24:23CDにあるんだろうな
0222デフォルトの名無しさん
2010/08/18(水) 00:04:07VB6は余裕で現役
0223デフォルトの名無しさん
2010/08/18(水) 00:37:3037,887,200
0224デフォルトの名無しさん
2010/08/18(水) 21:14:470225デフォルトの名無しさん
2010/08/18(水) 23:35:27うちの大学でも実験用装置の動作プログラムがN88BASICだった・・・
古いプログラムで新しいの作れる人いないからずっと使い続けてるって言ってたな・・・
0226デフォルトの名無しさん
2010/08/20(金) 00:21:438千万円!
幾ら何でもなんかありそう
0227デフォルトの名無しさん
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というフォルダにファイルの書き込みを
行いたいのですが、ディレクトリの指定はどのようにすれば良いのでしょうか?
また、ファイル(フォルダ)の共有など必要な設定があればこちらについても
教えて下さい。
宜しくお願い致します。
0228デフォルトの名無しさん
2010/08/20(金) 14:09:31>>204でわかるようにVBスレで質問すると
高くつくよw
0229デフォルトの名無しさん
2010/08/20(金) 14:23:47open "\\192.168.0.2\c$\data\hoge.dat" for output as #1
0230227
2010/08/20(金) 14:29:19ありがとうございました。
0231デフォルトの名無しさん
2010/08/20(金) 14:31:48ウントしてアクセスするのがマナー
(IPアドレス直書きはできてもしないで澄むのならし
ないようにしたいもの)
0232デフォルトの名無しさん
2010/08/20(金) 16:25:06こんなこと出来るのか・・・知らんかったわ
0233デフォルトの名無しさん
2010/08/20(金) 19:52:560234デフォルトの名無しさん
2010/08/20(金) 20:27:37¥¥IP-addrで識別してくれるかはネットワーク構成に依存だったような
記憶。
0235デフォルトの名無しさん
2010/08/20(金) 20:29:44適当なこといいすぎ
0236デフォルトの名無しさん
2010/08/20(金) 20:30:07Kerberos認証で問題になることはあるけど。>IP
でも、ホスト名での接続なら問題なし。
0237デフォルトの名無しさん
2010/08/20(金) 22:49:39普通コンピュータ名付けてアクセスし、共有フォルダーも
ネットワークドライブに割り当てるだろ
0238デフォルトの名無しさん
2010/08/20(金) 22:54:280239デフォルトの名無しさん
2010/08/20(金) 23:10:08共有フォルダーはしょうがないがコンピュータ名(女の子の名前
が多かったりする)付けるなんて古過ぎ(何、このおっさん)
特に家庭LANでそれやってたらカワイソス
企業LANでもIPプリンタ当たり前のこの時代にIP指定は
規定じゃんw
0240デフォルトの名無しさん
2010/08/21(土) 01:06:110241デフォルトの名無しさん
2010/08/21(土) 01:14:490242デフォルトの名無しさん
2010/08/21(土) 01:22:36>>239みたいな抽象化という思考ができないタイプって、
例えばシステムディレクトリを"C:\Windows"って決め打ちしてあるような
糞コードを書くVBerなんだと思う恐らく。
0243デフォルトの名無しさん
2010/08/21(土) 01:32:220244デフォルトの名無しさん
2010/08/21(土) 02:04:35プログラミングの入門本レベルの言葉じゃ無さそう
0245デフォルトの名無しさん
2010/08/21(土) 02:15:510246デフォルトの名無しさん
2010/08/21(土) 02:52:59ことプログラミングに用いた場合どういう意味になるかってこと
絵画や文学でも抽象化とか象徴化とか言ってそのまんま日本語の意味で使わないだろ
0247デフォルトの名無しさん
2010/08/21(土) 02:55:00何をどう象徴化するんかとか
分からんだろ
0248デフォルトの名無しさん
2010/08/21(土) 04:24:570249デフォルトの名無しさん
2010/08/21(土) 08:58:460250デフォルトの名無しさん
2010/08/21(土) 09:42:42Vb6を教えています
なんでも、全国商業高校連盟がVB6かCOBOLを教えろって決めてるらしいです
クラスメイトがかわいそうです
どうしたらいいですか?
0251デフォルトの名無しさん
2010/08/21(土) 11:19:080252デフォルトの名無しさん
2010/08/21(土) 12:10:350253デフォルトの名無しさん
2010/08/21(土) 13:48:56目的なんでわかりやすい言語ならなんでもいいんだよ。
オブジェクト指向はもとより関数というものさえ
必要ない程度だからな。
変数と四則演算と繰り返しと比較ぐらいの
文法があれば良い程度のことしかしない
0254デフォルトの名無しさん
2010/08/21(土) 14:11:25大学入試センター試験の数学ってまだ古い行番号BASICの使ってるのかな?
0255デフォルトの名無しさん
2010/08/21(土) 14:13:090256忍者Perl ◆M5ZWRnXOj6
2010/08/21(土) 15:47:46COBOL教えてどうするんですか?
COBOLってイメージカラーが黄色で電気タイプみたいです
バカって一生勉強ですよね 成果物も作れず
ブログとかに、「沢山やりたいことがありすぎて困る!C,C++,JAVA,Python,PHP,VB
日々勉強中」
とか書いてそうなノウタリンですか
ありがちな自己紹介分です
頭使ってますか?それともクソガリだから脳味噌に栄養が行き届いていない栄養失調の孤児ですか?
30〜40代くらいのオッサンはやたらとCOBOLとかわめくんですが 社交辞令みたいなもんですか
>>253
関数使うんですが、メソッド覚える時に必要ですよね 頭平気ですか?
なんかバカ派遣企業のITオタみたいですね 頭わいてますか?頭わいてますね?
クソバカゴミコード書いてるんでしょう
とりあえずここのスレレベル低いですね
君達の書き込み見させていただきましたが・・・ 馬鹿が書き込みに滲み出ていますよ(笑)
0257デフォルトの名無しさん
2010/08/21(土) 16:09:080258忍者Perl ◆M5ZWRnXOj6
2010/08/21(土) 16:10:28VBのスレなんてゴミだから何でも話していいんですが^^;
0259デフォルトの名無しさん
2010/08/21(土) 16:11:01ttp://ja.wikipedia.org/wiki/COBOL
過去に政府や企業の膨大なデータがCOBOLによって処理され蓄積されているため、
現在でもCOBOLによって電算処理されている情報は膨大な数に上る。
現在でも稼動しているCOBOLによるコードは2000億行に上るとされており、
これはFORTRANとアセンブラを合わせた数十億行に比べても圧倒的に多い。
このように誕生から半世紀たっているにもかかわらず、今なお主流言語として使用されている点で、
他の初期の言語とは大きく異なる(2000年時点の世界の民間企業の8割、2009年の日本国内の調査で17.1%で2位[1])。
0260忍者Perl ◆M5ZWRnXOj6
2010/08/21(土) 16:11:28頭がいい人はPerlをやるんですよ
低能はVB(笑)
0261忍者Perl ◆M5ZWRnXOj6
2010/08/21(土) 16:12:340262デフォルトの名無しさん
2010/08/21(土) 16:12:450263デフォルトの名無しさん
2010/08/21(土) 16:15:10あたりまえだろ・・・
学校でも教えたりするし
ExcelでVBAが入ってるんだから
VBを使う人間は色んな奴がおるんだから
他の言語やってる人たちと比較すりゃ
平均的にバカになるだろ
0264忍者Perl ◆M5ZWRnXOj6
2010/08/21(土) 16:15:230265デフォルトの名無しさん
2010/08/21(土) 16:16:28それは2ちゃんねらーとしてマナー違反だな
0266デフォルトの名無しさん
2010/08/21(土) 16:17:520267忍者Perl ◆M5ZWRnXOj6
2010/08/21(土) 16:18:22Perlやってるやつらはハイレベルっすよ!!
NARUTOでいう暁レベルっすね!
君達VB組は いつまでたっても下忍レベルっすね!!
シュッシュッシュ!!カゲブンシン!!
VBAってなんですか!!!しらねーんですがね!!シュッシュッシュ!!シュッシュッシュ
お尻プリプリーーーーーーーーーーーープリプリー!!!
VB使ってるやつはバカなんっすね!!!!!!!!!!!認めましたか!!!!
死ねっ!!!!(笑)
0268デフォルトの名無しさん
2010/08/21(土) 16:19:47VB使い → バカ
Perl使い → ハイレベル
それは分かった
それで結論は?何が言いたいのか分からないんだけど。主張は何?
0269デフォルトの名無しさん
2010/08/21(土) 16:21:550270デフォルトの名無しさん
2010/08/21(土) 16:22:430271デフォルトの名無しさん
2010/08/21(土) 16:23:35http://www.google.co.jp/search?q=%E5%BF%8D%E8%80%85Perl+%E2%97%86M5ZWRnXOj6
0272デフォルトの名無しさん
2010/08/21(土) 20:53:510273デフォルトの名無しさん
2010/08/21(土) 23:23:520274Perl忍者仙人モード ◆M5ZWRnXOj6
2010/08/22(日) 20:27:06お笑いブームに便乗したチンパンジーニアスですね。
フッ(笑)
0275デフォルトの名無しさん
2010/08/22(日) 20:38:040276デフォルトの名無しさん
2010/08/22(日) 21:08:200277Perl忍者仙人モード ◆M5ZWRnXOj6
2010/08/22(日) 21:08:28無視をして勝ち誇りますからね
君の言動そのものですよ
大人の対応=無視
ネットなのに大人ぶってるごみども死んだ方が良いよ
0278デフォルトの名無しさん
2010/08/22(日) 21:13:440279Perl忍者仙人モード ◆M5ZWRnXOj6
2010/08/22(日) 22:40:43君、Perlできるかね?
良かったら俺のチームはいらない?
0280デフォルトの名無しさん
2010/08/23(月) 02:34:52ばかじゃんサービスとか
自宅サーバなどwebアプリ開発とか所詮そんなもんだろ
くだらね
バカの極み 仕送りして無様な生き様かましてるゴミそうだし
人生終らした方が良いかもねバカは(笑)
0281デフォルトの名無しさん
2010/08/24(火) 19:33:34もう2億5千万円を超えてる
何か異常なことが起きてるみたいだ
0282デフォルトの名無しさん
2010/08/24(火) 20:31:08類似した商品から提示されたタグ
ぼったくり出品者に注意(4)
にワロタ
0283デフォルトの名無しさん
2010/08/25(水) 00:39:01神保町や秋葉原あたりならありそう
0284デフォルトの名無しさん
2010/08/26(木) 23:46:40ソフトウェア自動更新のバグ。
他の人より自動的に安い価格にしてくれるソフトがあって、
設定しだいでは、他の人よりちょっとだけ高い価格にもしてくれる。
(それでもコメントがよければ、高く売れる可能性がある)
というのを両者がやっていると、
どんどん、あいてより高い値段に自動更新されていく
のかもしれないね。
0285デフォルトの名無しさん
2010/08/27(金) 16:50:345億5000万円
ベンツ新車普及品上クラスでも10台は買える
0286デフォルトの名無しさん
2010/08/27(金) 16:57:44これって出品者が値段決めてるの?
0287デフォルトの名無しさん
2010/08/27(金) 23:28:56中古なんだから出品者が自由に決められる。
0288デフォルトの名無しさん
2010/08/28(土) 01:58:220289!omikuji
2010/09/01(水) 01:04:100290デフォルトの名無しさん
2010/09/01(水) 15:31:14でもう10億円突破は間近
これって金融筋のい貸付資産評価額
操作とかじゃね〜の?
0291デフォルトの名無しさん
2010/09/03(金) 12:04:06売れたみたい。ROM無しのほうが10億円で?
しかし売れ残りROM付きは大暴落で2000円弱
0292デフォルトの名無しさん
2010/09/03(金) 21:01:330293デフォルトの名無しさん
2010/09/04(土) 03:52:420294デフォルトの名無しさん
2010/09/05(日) 00:41:15ver:VB6 SP6
やりたいこと:
自作のクラスに「Index」というプロパティを追加したい。
やったこと:
自作のクラスに「Index」というプロパティを追加すると、
ファイル読み書き用のIndexと被ってるから定義できませんでした。
質問:
自作のクラスに「Index」というプロパティを追加する方法はありますか?
0295デフォルトの名無しさん
2010/09/05(日) 00:52:100296デフォルトの名無しさん
2010/09/05(日) 00:57:46Index2でもMyClassIndexでも適当に名前を変えろ
0297デフォルトの名無しさん
2010/09/05(日) 01:05:20何も考えずに普通に出来るけど...
何を寝ぼけたことを言ってるんだ?
0298デフォルトの名無しさん
2010/09/05(日) 01:50:36Public Sub Hoge()
Index=5
Dim Index
End Sub
とかしてるんじゃね
0299デフォルトの名無しさん
2010/09/05(日) 08:56:45また、このソフトのファイルから、コードを戻すみたいなことは出来るんでしょうか?
0300デフォルトの名無しさん
2010/09/05(日) 09:32:180301デフォルトの名無しさん
2010/09/05(日) 09:47:520302デフォルトの名無しさん
2010/09/05(日) 11:30:21暗号化されてるだろうけど
0303294
2010/09/05(日) 12:58:47「Index」ではなくて、「Input」でした。
すいません寝ぼけてました。
「Index」だったら普通にいけますね。
「Input」だったらエラーになってしまいます。
よろしくお願いします。
0304デフォルトの名無しさん
2010/09/05(日) 13:01:520305デフォルトの名無しさん
2010/09/05(日) 13:10:000306294
2010/09/05(日) 14:49:08他のクラス(MSのライブラリ)と同じ作りにしたいので、別名にはしたくなかったのですが。。。
他クラスに1枚ラップして、対応しかないですね。。。
0307デフォルトの名無しさん
2010/09/05(日) 14:50:08お、詳しく知りたいです。だとしたクラック可能ってことですか?
0308デフォルトの名無しさん
2010/09/06(月) 09:20:480309デフォルトの名無しさん
2010/09/06(月) 19:28:140310デフォルトの名無しさん
2010/09/07(火) 22:10:53Dim 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したクラスなのですが、
配列にするとエラーではじかれてしまいます。
これはこういうものと受け入れるものなのでしょうか?
0311デフォルトの名無しさん
2010/09/07(火) 22:25:280312デフォルトの名無しさん
2010/09/07(火) 22:27:03可能ですが…
0313デフォルトの名無しさん
2010/09/07(火) 22:29:140314デフォルトの名無しさん
2010/09/07(火) 22:31:16Dimo hoges(0 To 4) As hoge
でいい気がするが
0315デフォルトの名無しさん
2010/09/07(火) 23:14:39要するにHogeの配列とIHogeの配列は別物ってことでしょ。
ドトネトでいう「配列の共変」をサポートしてないんだろう。
0316デフォルトの名無しさん
2010/09/08(水) 02:32:14↓
Dim hoges(4) As IHoge
にすればいんでね?
0317310
2010/09/08(水) 19:19:16>>313
開発の縛りでVB6、かつ、Genericsがないという事で、コレクション使用禁止な縛りです。
>>314>>316
あ、Newいらなかったですね。
>>315
やっぱそういう事になりますかあ…
0318デフォルトの名無しさん
2010/09/08(水) 20:07:500319デフォルトの名無しさん
2010/09/08(水) 22:10:350320デフォルトの名無しさん
2010/09/08(水) 22:27:340321デフォルトの名無しさん
2010/09/08(水) 22:56:410322デフォルトの名無しさん
2010/09/09(木) 00:09:59Dim hoge1 As New Hoge
korekusyon.Add hoge1
For Each v In korekusyon
Next
0323デフォルトの名無しさん
2010/09/09(木) 00:24:08改めてここの人の指摘、正しいと思うわ
http://blogs.wankuma.com/jeanne/archive/2006/08/02/34597.aspx
0324デフォルトの名無しさん
2010/09/09(木) 01:03:390325デフォルトの名無しさん
2010/09/09(木) 01:41:330326デフォルトの名無しさん
2010/09/09(木) 04:25:36VBの文法くらい(特にVBA)オブジェクト指向的なものはない
というかVB系(VBA VB.NET VBScript)では空気や
水みたいな感覚
特にあえてオブジェクト指向と言う必要はもないと思いまつ
Cにクラス概念メソッド概念とかを追加して
C++にしてそれをオブジェクト指向だというの
はC系言語の世界で閉じた話
0327デフォルトの名無しさん
2010/09/09(木) 08:47:00例外なくデスマ
0328デフォルトの名無しさん
2010/09/09(木) 08:51:470329デフォルトの名無しさん
2010/09/09(木) 11:50:350330デフォルトの名無しさん
2010/09/09(木) 12:00:43そういや
「俺ほどCOBOLに精通してる奴はそう居ないな」
とか言ってた元上司は今何してんだろ・・・
0331デフォルトの名無しさん
2010/09/09(木) 12:44:230332デフォルトの名無しさん
2010/09/09(木) 13:16:32VB6は趣味でたまに仕事に使ってるが今から新しく覚えようとも思わないし、
自分の作りたいものがVB6でできるならオブジェクト指向とかどうでもいいよ
それなりに動いて保守もできれば文句はないよ。どうせ俺が死んだら今の会社はなくなるんだし
ソースを別の人が読めないとかどうでもいいね。死んだ後のことは生き残った人がどうにかすればいいよ
だからVB.NETは難しくてわからない。
0333デフォルトの名無しさん
2010/09/09(木) 13:35:000334デフォルトの名無しさん
2010/09/10(金) 00:32:56それはそれでいいんじゃね
参照設定でexcel2000が入っておらずどのようにexcel2000の参照設定をしたらいいのですか
0336デフォルトの名無しさん
2010/09/11(土) 16:56:020337デフォルトの名無しさん
2010/09/11(土) 17:01:280339デフォルトの名無しさん
2010/09/12(日) 18:16:460340デフォルトの名無しさん
2010/09/12(日) 19:00:45実際にバージョン違いでエラーが発生するメソッドはそうはないから、
必用なコード量はたいしたことない。
VBerは諦めが早いっていうか、このての普通の知恵が回る人って少ないよな。
0341デフォルトの名無しさん
2010/09/12(日) 19:05:290342デフォルトの名無しさん
2010/09/12(日) 19:10:29古来、お馬鹿さんの見習いたくない傾向を表現したことわざです。
0343デフォルトの名無しさん
2010/09/12(日) 19:19:13よっぽど間抜けだと思うんだが。
0344デフォルトの名無しさん
2010/09/12(日) 19:25:19っていうか、誰が積極的に両方やるなんて言ってるんだ?
エクセルのバージョン違いで動かない部分に関しては、
危険で面倒な遅延バインディングを使えばいい(使うしかない)と言ってるだけだが。
0345デフォルトの名無しさん
2010/09/12(日) 19:26:39って、
> あと参照設定でexcelのどのバージョンでも動くようにするにはどうするのですか
への答えになってないじゃん。>>339 の言ってることは間違ってないな。
0346デフォルトの名無しさん
2010/09/12(日) 19:27:270347デフォルトの名無しさん
2010/09/17(金) 09:51:02下記は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
0348デフォルトの名無しさん
2010/09/17(金) 16:00:29If TypeName(o) = "TextBox" Then
か
If TypeOf o Is TextBox Then
とか?
0349デフォルトの名無しさん
2010/09/17(金) 16:12:11ありがとうございます。できました。
0350デフォルトの名無しさん
2010/09/20(月) 10:09:01DTPickerをキーボードで入力する際、以下の動きを実現させたいのですが可能でしょうか?
・年入力→Enter→月入力→Enter→日入力→Enter→次のコンポーネントへカーソル移動
現在、DTPickerでのEnter時に右カーソルを割り当てて、Enterで年→月→日の移動は行えている状態です。
ですが、日入力後は次コンポーネントへ移動させたいので、現在入力している箇所を取得できるような方法が知りたいです。
(Tabで移動させれば?と言うのは無しでお願いします・・・。)
0351デフォルトの名無しさん
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が編集される前の値が入っています。
0352デフォルトの名無しさん
2010/09/20(月) 14:38:26TAB押下をエミュレート。
0353デフォルトの名無しさん
2010/09/20(月) 14:58:18回答ありがとうございます。
そちらの方法でやってみますm(__)m
0354デフォルトの名無しさん
2010/09/24(金) 18:54:42Dim c As New Collection
というコレクションとして
Do While c.Count>0
c.Remove 1
Loop
と
Set c = New Collenction
(同じコレクションを参照するほかの変数とか無いとして)
とどういう違いあるの?
0355デフォルトの名無しさん
2010/09/24(金) 22:11:23後者は新しくインスタンスを生成
0356デフォルトの名無しさん
2010/09/25(土) 00:42:27ってアリなの?
なんかその変数にアクセスした段階で勝手にインスタンス作ってIs Nothingでチェックの意味がないとかなんとかどっかで見たような
0357デフォルトの名無しさん
2010/09/25(土) 01:10:08As New って↑これのことか?
0358デフォルトの名無しさん
2010/09/25(土) 01:12:46これのことか
これは不気味だな
0359デフォルトの名無しさん
2010/09/25(土) 01:18:01Dim c As Class1
Set c = Nothing
c.Hoge ←実行時エラーが出る
一方
Dim c As New Class1
Set c = Nothing
c.Hoge ←実行時に自動的にインスタンス生成されHogeが実行される。途中にNothing代入してもだ
という話?
0360デフォルトの名無しさん
2010/09/25(土) 01:26:23左を向くのと、
右を向いて右を向いて右を向くのでは
結果は同じでも、やっている処理はぜんぜん違う。
最終的には同じように見えるかもしれないが
やっている内容はぜんぜん違う。
0361デフォルトの名無しさん
2010/09/25(土) 20:40:420362デフォルトの名無しさん
2010/09/25(土) 23:03:58このスレでもクラスをうまく理解してない人多いんだなぁ VB6erの俺としてはちょっとガッカリした
>>354がこんな疑問を抱いたのはたぶん
「オブジェクト変数の宣言文はAs Newと書く」と間違って覚えてるから
New宣言文はできるだけ使わないほうがいいよ、バグの温床になるし実行速度もやや下がる
>>356, >>357, >>358
不気味かな? 気持ち悪いのは単にこの仕様を知らずに使ってる人を見たときだけだろ
Form1なんかは有無を言わさず常にAs Newの動きをしてるんだが気付いてる?
たしか、As Formでインスタンス作ると普通の振る舞いをするが、As Form1で作るとAs Newと同じ動きをしてしまう
(破棄した後もアクセスすると復活してくる。仕様を知らなきゃゾンビみたいで気持ち悪かろう)
0363デフォルトの名無しさん
2010/09/25(土) 23:18:33破棄したのにアクセスしたらもどっちゃうんだっけ
たしかに気持ち悪かった
0364デフォルトの名無しさん
2010/09/25(土) 23:33:250365デフォルトの名無しさん
2010/09/25(土) 23:54:23俺は上の人たちと別人なので同じ見解かどうかわからないが、
やっぱり「気持ち悪い」のは、仕様の実態はNothingでアクセスされた時に
暗黙的にインスタンスが自動生成される特殊な変数宣言なのに、構文だけ見ると
一見変数を定義と同時に初期化しているように見えるからでしょ。
0366362
2010/09/26(日) 00:31:46あーごめん、よく考えたら質問の答え書いてなかった
以下の条件なら違いはない(ので=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
0367デフォルトの名無しさん
2010/09/26(日) 01:44:55参考: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
'続く
0368367
2010/09/26(日) 01:48:25Private 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
0369367
2010/09/26(日) 05:52:40どうもAPI側が別のアドレスに結果を書き込もうとしてるような…
つか眠たい…
0370367
2010/09/26(日) 06:54:32Declare文の「 ByRef pszString As String 」をByValに変更。
つかなんでByValで動くのでしょう? API側はなぜ書き換えが可能なんだろう? さっぱり腑に落ちません…
ByRefだとダメでByValだとうまくいく理由、どなたか解説して戴けませんか?
変数のポインタ周りの処理が絡んでるんでしょうけど…
ByValなら、相手側変数に対して値をコピー
ByRefなら、相手側変数にポインタをセット
APIにByValで渡すと、相手は値は分かっても変数のアドレスは分からないはずで、
呼び出し元の変数に対しては何も処理出来ない…と考えてるのですが。
実際は書き換えられてるから不思議…。
0371デフォルトの名無しさん
2010/09/26(日) 07:55:25値渡しでも値が返るのは、渡したStringの値がそもそもポインタ値を含んでるからじゃね?
俺はこれをうまく説明できない。
参照渡しだと落ちる理由も説明できない。
ただ、ByValでStringを渡すと、Stringのヘッダ(構造体)が相手にコピーされてるんじゃね?
相手のヘッダ(構造体)にはVB側変数の文字列の先頭アドレスが格納されてる事になるので
相手側が普通に読み書きを行うと、それはVB側の変数に対して行われるって寸法?
ByRefの場合は…VBが自動変換した結果、相手に違うポインタが見えてるじゃね?としか。
ところでこのAPI関数面白いな。
今度使いたいから誰か謎を解いてくれw
0372デフォルトの名無しさん
2010/09/26(日) 09:29:20まぁ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
0373デフォルトの名無しさん
2010/09/26(日) 09:54:04微妙にマーシャリングみたいなこともやってくれるし。
0374デフォルトの名無しさん
2010/09/26(日) 18:54:25普段は動けばお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付けた方が高速ってのはみんな知ってる話なのかな?)
0375デフォルトの名無しさん
2010/09/26(日) 19:12:44LPSTRはByVal Stringで渡します、ってのは、大昔からの決まり事なんだから、
「それでいい」んだよ。
0376デフォルトの名無しさん
2010/09/26(日) 20:15:190377デフォルトの名無しさん
2010/09/26(日) 20:37:43デバッガなんて、正直生粋のVB6erの俺にはわかんらんのだよw
つかなんで切れてるんだよ興味無ければスルーしてくれよw
>>376
ワレワレハ(略
自重する。
0378367
2010/09/26(日) 21:39:14どうかこの件で喧嘩しないで下さい(^^;
>>371-372, >>374
おぉぉ、本当に助かりました! 参考リンクもありがとうございます
すべて理解出来たわけではないですが、少なくともMSがValで渡せと説明してる時点で数倍安心できますw
配列初期化でPreserveのほうが早い、というのは驚きました
感覚的には遅くなるよう気がするのに…興味深いのであとで試してみますね
>>373
私も他人の宣言文を流用する際は「そういうもんだ」で済ましますけど、
さすがに自分で書き起こした宣言だと不安じゃないですか…?
今回のは特に「本当に正しく動いてるのか…?」という疑心暗鬼が払拭出来ずモヤモヤしてた次第です
>>375
私はその「大昔からの決まり事」を知らなかったため納得がいかず困ってたようです
「常識」としてすでに習得している方から見れば下らない無駄な内容だったかもしれません申し訳ありませんでした
0379デフォルトの名無しさん
2010/09/26(日) 21:51:150380デフォルトの名無しさん
2010/09/27(月) 02:00:51今すぐVB厨を金属バットで殴りまくって撲殺してしまおうぜ!!!
0381デフォルトの名無しさん
2010/09/27(月) 02:42:350382デフォルトの名無しさん
2010/09/27(月) 20:36:13講義でVisual Basic 6.0を使用して一つプログラムを作ることになったのですが、何か面白いプログラムアイディアは無いでしょうか?
漠然としていて申し訳ないのですが、使用者の観点からこういうのしたら面白いよ、などあったら教えてもらえないでしょうか?
よろしくおねがいします
0383デフォルトの名無しさん
2010/09/27(月) 20:53:020384デフォルトの名無しさん
2010/09/27(月) 20:58:32つかどんな相手を対象としたどのレベルの講義なんだ?
面白いってのはゲーム的な? それとも業務的な?
それにどんな事まで許すのか?
標準フォーム・標準コントロール以外ダメとか、
オブジェクト不可とかAPI不可とか。
数学レベルの計算は禁止(算数まで)とか。わからなければ星の数になるがな。
0385デフォルトの名無しさん
2010/09/27(月) 21:03:10講師のほうが質問してんの?
0386デフォルトの名無しさん
2010/09/27(月) 21:03:580387デフォルトの名無しさん
2010/09/27(月) 21:08:10とりあえずゲーム系。
Lineメソッドなどを使って動くスクリーンセーバーはどう? XP標準のにそっくりなの作れるけど。
あ、全画面表示にAPIが必要になっちゃうか…
じゃピクチャかイメージコントロールを複数使った15パズルとかは?
もっと高度でいいなら、ピクチャかフォームに直接描画するテトリスがいいと思う。
テトリスの作り方は検索すればいっぱいあるから困らないでしょ。
他言語だが1時間で作る動画もあるしw
0388デフォルトの名無しさん
2010/09/27(月) 21:08:360389デフォルトの名無しさん
2010/09/27(月) 21:32:26まずお前が講義受けて来い
初心者のお前に講義なんて出来るわけないだろ
0390デフォルトの名無しさん
2010/09/27(月) 22:08:250391デフォルトの名無しさん
2010/09/27(月) 22:33:40それならVBAやるよな
0392デフォルトの名無しさん
2010/09/27(月) 23:31:40な所が好きで使ってる人がいるわな。
0393デフォルトの名無しさん
2010/09/27(月) 23:35:51今から習うなら正直VB6よりそろばんのほうが役立つと思う
>>382
ともかく相手が誰で何の目的で講義するのかレスしないと話にならん
0394デフォルトの名無しさん
2010/09/28(火) 06:28:49普通はリッチテキストボックスを使う事になると思うのですが、
仕様という名のクセやバグが多すぎて出来るならば使いたくありません…
他にイケてるコントロールはないでしょうか?
0395デフォルトの名無しさん
2010/09/28(火) 10:09:360396デフォルトの名無しさん
2010/09/28(火) 22:43:18いまどきそろばんなんて役にはたたない。
どんなに計算が速くても、そろばんじゃ
何万件ってデータを一瞬で処理できないからね。
0397デフォルトの名無しさん
2010/09/28(火) 23:45:37text1.SelTextに代入すれば64KB以上もイケる、ってばっちゃが言ってた
でも16MB放り込んだら操作重すぎでキレそうだった(でも放り込める)
0398394
2010/09/29(水) 00:21:35そんな裏技があったとは…w
SelStartやSelLengthとかはおかしくなるようですが、
表示専用なのでこれでいってみます
ありがとうございました。
0399デフォルトの名無しさん
2010/09/29(水) 09:32:46Private 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
でいいよ
0400デフォルトの名無しさん
2010/09/29(水) 20:56:16↑これどういう意味? (1文字のテストデータ作ってんだろうけど)
0401デフォルトの名無しさん
2010/09/29(水) 21:01:250402デフォルトの名無しさん
2010/09/29(水) 21:03:420403デフォルトの名無しさん
2010/09/29(水) 21:07:16For i=0 to 800
s= s & s
Next
0404デフォルトの名無しさん
2010/09/29(水) 21:10:05いや、そんなとこはどうでもいいとこだし
0405デフォルトの名無しさん
2010/09/29(水) 22:46:43いや、特に意味はないならそれでいいんだけど
0406デフォルトの名無しさん
2010/09/29(水) 22:49:58いや、特に意味ないなら、別にそれでいいんだけど
0407デフォルトの名無しさん
2010/09/29(水) 22:51:56どうして「i」じゃないのかとw
0408デフォルトの名無しさん
2010/09/29(水) 23:18:54言わせんな
恥ずかしい
0409デフォルトの名無しさん
2010/09/30(木) 00:54:51速い i & ""
0410デフォルトの名無しさん
2010/09/30(木) 03:06:16CStr(i)
i
面白そうなので実験したが3つのうち「i&""」が一番遅かった件について…
0411デフォルトの名無しさん
2010/09/30(木) 03:54:5180000回も文字連結繰り返してるけどなんとなく重そうなイメージ
0412デフォルトの名無しさん
2010/09/30(木) 03:55:33Format(i)
も考慮してやってください
0413デフォルトの名無しさん
2010/09/30(木) 03:56:160414410
2010/09/30(木) 04:48:57やってみるお (でも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が不要)
0415410
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 ]
0416デフォルトの名無しさん
2010/09/30(木) 11:22:42Rightで切りだすんでしょ?Str(i)とFormat(i)
0417デフォルトの名無しさん
2010/09/30(木) 11:25:56自分でやりなさい
0418デフォルトの名無しさん
2010/09/30(木) 11:37:02低スペックのオンボロパソコンとかでやるなら重要な差になる
のかな?
0419デフォルトの名無しさん
2010/09/30(木) 12:23:550420デフォルトの名無しさん
2010/09/30(木) 12:37:020421デフォルトの名無しさん
2010/09/30(木) 12:52:28パソコンだけならいいんだけどな。
仕様書のこってたらいいんだけどな。
担当が今でも居ればいいんだけどな。
現状動いてるシステムの予算が楽に取れるといいんだけどな。
0422デフォルトの名無しさん
2010/09/30(木) 12:57:42オンボロパソコンが現役の企業が多いって
政府は何やってんだ?
ここに大きな需要とかあるだろ
この分野で経済対策すりゃあええんでないのか?
企業のオンボロパソコンからの買い替えに助成金とか出せばいいのに
エコカーなんかよりもマシだろ
0423デフォルトの名無しさん
2010/09/30(木) 12:58:440424デフォルトの名無しさん
2010/09/30(木) 12:59:310425410
2010/09/30(木) 13:23:39でもCStrの替わりにFormat? 単にオーバーヘッド増えるだけじゃ?と思ったけど
先入観はいかん!と無心で追試したら予定通りかなり遅くてガッカリしたおw (i&""とドッコイドッコイ)
s=Format(i) 10.957sec (Result="33000000" Len=8)
ちなみに遅いのはあくまでiを文字列として評価させるまでの話で
1文字切り出して連結していく処理全体ではどれもたいして違いはないお
(今回の場合、処理時間のほとんどが長大な文字列の連結部分であって、
Long型からの変換・切り出しにかかるコストなんて所詮はメクソほども無いお)
そもそも俺が知りたいのは「i&""が速い」という点の真相だお。
その話の根拠は一体どこから来てるんだお?
誰か補足して欲しいお
0426デフォルトの名無しさん
2010/09/30(木) 13:40:18数字を文字列に変えるときにi+""とかやったり
文字列を数字に変えるときにi-0とかやったりしたお
0427デフォルトの名無しさん
2010/09/30(木) 13:41:140428デフォルトの名無しさん
2010/09/30(木) 13:42:50i&"" ... 4タイプ (内 シフト打ち 3)
i&""のほうが速い!
0429デフォルトの名無しさん
2010/09/30(木) 13:46:45i&""はi&まではシフトキー以外は右手で打てる。""はシフトキー以外は左手で打てる
cstr(i)
i&
0430デフォルトの名無しさん
2010/09/30(木) 13:48:020431デフォルトの名無しさん
2010/09/30(木) 13:52:070432デフォルトの名無しさん
2010/09/30(木) 13:54:07Dim 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
0433デフォルトの名無しさん
2010/09/30(木) 14:01:42内部でどうやってるかはコンパイラ作った奴らにしか分からないから
どのやり方がより速いか実験して確かめる
先人たちがすでに実験していて結果を残してくれているのなら
ありがたい
余計な手間が省けるというもの
ありがとう
0434デフォルトの名無しさん
2010/09/30(木) 14:04:570435デフォルトの名無しさん
2010/09/30(木) 14:09:53Dim t1!,t2!,t3
t1=Timer
ここに処理
t2=Timer
t3=t2-t1
Debug.Print t3
でやったら
>432の処理 1.953125E-02
>399の処理 3.917969
になったお
0436デフォルトの名無しさん
2010/09/30(木) 14:11:550437デフォルトの名無しさん
2010/09/30(木) 14:18:420438デフォルトの名無しさん
2010/09/30(木) 14:31:000439410
2010/09/30(木) 15:36:30>>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 ]
0440デフォルトの名無しさん
2010/09/30(木) 15:54:06本当、関係ない方向へ大きく脱線したなあ
0441デフォルトの名無しさん
2010/09/30(木) 15:56:230442デフォルトの名無しさん
2010/09/30(木) 16:05:360443410
2010/09/30(木) 16:22:25そんな俺は趣味グラマー
そろそろ名無しに戻るおっお〜♪ ノ
0444デフォルトの名無しさん
2010/09/30(木) 16:23:17まぁ趣味でやってる俺には関係ない
0445デフォルトの名無しさん
2010/09/30(木) 16:37:57>>428が正解だお
0446デフォルトの名無しさん
2010/09/30(木) 16:51:58Dim s As String
s = Null & "" ' ok
s = CStr(Null) ' err94
0447デフォルトの名無しさん
2010/09/30(木) 22:10:48なるほど、そういう問題もあるか(Variant限定じゃないね)
If文入れるより軽そうだし短いし手軽だね
…コード見てもコメント無きゃ意味わからんだろうけどw
>>445 410ですけどぉ、俺にだけは謝れ
0448デフォルトの名無しさん
2010/09/30(木) 22:31:370449デフォルトの名無しさん
2010/09/30(木) 22:58:500450デフォルトの名無しさん
2010/09/30(木) 23:12:480451デフォルトの名無しさん
2010/09/30(木) 23:21:53過去スレにも何度も出てきたしな。
まあ、俺はVB2.0からのユーザーだけど。
0452デフォルトの名無しさん
2010/09/30(木) 23:24:190453デフォルトの名無しさん
2010/09/30(木) 23:41:02暗黙といえば$しか思い当たらないや(←そりゃ宣言だろ)
高校の時もうVB5だったよ 昔の事情はわかんないなぁ
0454デフォルトの名無しさん
2010/10/01(金) 03:08:56レスを楽しみに待ってたっていうのに
乗り遅れたがループなしで良くね?と思わず高速コード書いてみた
一瞬で完了。うちでは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倍速化しデカいほど負荷が下がるとか
0455デフォルトの名無しさん
2010/10/01(金) 06:33:360456デフォルトの名無しさん
2010/10/01(金) 07:29:07こだわってんだよw
SetWindowTextはありなのかなしなのか議論しろよw
0457デフォルトの名無しさん
2010/10/01(金) 09:17:45有名な最適化だね。
最初に必要なメモリを確保しておけば、内部的におこなわれている
メモリ確保→メモリコピー→メモリ解放の処理が無くなるから
大幅に速くなる。
VB.NETだと、その辺を考慮してやってくれるStringBuilderってクラス
が追加されていたりするんだけどね。
0458デフォルトの名無しさん
2010/10/01(金) 14:19:54ヘタレVB6趣味グラマーの俺にはもう元々の質問が何だったのかすら分からなくなっちゃったよ
0459デフォルトの名無しさん
2010/10/01(金) 20:00:28何も問題ないだろ?
0460デフォルトの名無しさん
2010/10/01(金) 21:33:08いやーそっちのが面白かったからさぁ、ついw
真面目な話、元の質問に対しては完了してるっしょ
そっちのほうはもうこだわりようがないんだよw
64KB以上放りこむ方法としてSelTextやAPIの提示で適切だろ
それともお前さんこの件で聞き出したいことが別にあったのかい?w
あるなら堂々と聞けばいいんじゃね?
(テキストボックスって言ったって所詮実体はEdit"ウインドウ"である以上
APIから文字列放り込む事に問題はないと思う。NT系のEditは2GB対応してるんだし)
0461デフォルトの名無しさん
2010/10/01(金) 21:39:32さも当然だろって感じで書いてみたら
テスト文字列作成の話題ばっかりでこれいいのかなと思ってたんだよ。
0462デフォルトの名無しさん
2010/10/01(金) 21:41:47Openでファイル開いてる状態で
処理中にプロシージャから脱出したいときって
Closeでファイルを閉じてからしたほうがいいの?
0463デフォルトの名無しさん
2010/10/01(金) 21:43:390464デフォルトの名無しさん
2010/10/01(金) 21:44:520465デフォルトの名無しさん
2010/10/01(金) 21:50:210466デフォルトの名無しさん
2010/10/01(金) 21:56:19乙、回答主だったのかw
そりゃ気になるわな でも大丈夫だと思うよ
テキストボックスのTextプロパティもたしかデータ実体はEdit側のはずだから
あとでセレクト位置もちゃんと取れるか調べてみるわ
>>462
そのプロシージャしかファイルのオープン事実を知らないんなら当たり前だろ
VB6は放置してスコープ抜けたら勝手に閉じてくれるんだっけ?
そこまで親切(お節介)じゃないだろう
どっちにしろ明示的にクローズ処理を書くべき
0467デフォルトの名無しさん
2010/10/01(金) 21:58:03一概に言えるわけがないでしょ。
何かファイルを閉じるのをおまじないか何かみたいに考えてないか?
そもそも何のためにファイルを閉じるのか考えればおのずから答えは出るじゃん
0468デフォルトの名無しさん
2010/10/02(土) 01:28:370469デフォルトの名無しさん
2010/10/03(日) 03:06:33他の言語とかで言えば
a=b=c=d=100;
みたいな感じの
0470デフォルトの名無しさん
2010/10/03(日) 03:09:02おまえの頭につまってるのはハナクソか?
0471デフォルトの名無しさん
2010/10/03(日) 04:13:42a=b=c=d=3
やったら
dの値と3の比較結果とcの値との比較結果をbの値と比較した結果をaに代入じゃん
0472デフォルトの名無しさん
2010/10/03(日) 04:16:350473デフォルトの名無しさん
2010/10/03(日) 07:51:46>>469
できない。
0474デフォルトの名無しさん
2010/10/03(日) 19:28:08Private Sub Hoge(v1, ParamArray v2())
Dim i
For i = 0 To UBound(v2)
v2(i) = v1
Next
End Sub
0475デフォルトの名無しさん
2010/10/03(日) 19:29:26Hoge 123, a, b, c
Debug.Print a, b, c
----------
123 123 123
0476デフォルトの名無しさん
2010/10/03(日) 23:26:350477デフォルトの名無しさん
2010/10/04(月) 00:53:52b=a
c=a
d=a
でいいじゃんよな
意味の無い余計なメソッド作る意味がわからない
0478デフォルトの名無しさん
2010/10/04(月) 00:59:22あまり無い。
0479デフォルトの名無しさん
2010/10/04(月) 01:27:37Private Sub Hoge(v1, ParamArray v2())
Dim i: For i = 0 To UBound(v2): v2(i) = v1: Next
End Sub
3行になった!
0480デフォルトの名無しさん
2010/10/04(月) 01:29:15そうめったに出現しないだろ
最初に一回だけとかなんだから
プロシージャ作ってまですることじゃないな
面倒でも全部手描きで書け
0481デフォルトの名無しさん
2010/10/04(月) 01:29:310482デフォルトの名無しさん
2010/10/04(月) 02:15:07どんな設計してんだ?
0483デフォルトの名無しさん
2010/10/04(月) 02:24:500484デフォルトの名無しさん
2010/10/04(月) 07:46:05なんか悔しそうだなw
0485デフォルトの名無しさん
2010/10/04(月) 10:27:48Windows95/98/Meだとリッチテキストコントロールにしないと駄目だが
そんな話がしたかったの?
0486デフォルトの名無しさん
2010/10/04(月) 10:41:42どうやったらわかるの?
0487デフォルトの名無しさん
2010/10/04(月) 11:23:160488デフォルトの名無しさん
2010/10/04(月) 21:25:260489デフォルトの名無しさん
2010/10/05(火) 00:01:120490デフォルトの名無しさん
2010/10/05(火) 00:34:120491デフォルトの名無しさん
2010/10/06(水) 02:25:50場合によって送信されるメッセージの順序が前後することがあり困っています。
大まかな動作
ホスト、クライアント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で、受け取るメッセージの順序が変わってしまいます。
これを解決するためには、イベントドリブンでメッセージを送らない(どこかのメインループでまとめる)、
受け取り側でソートする(後からメッセージが繰るかどうかは分からない)、
などの方法しかないような気がしますが、こういう場合一般的にはどうしているんでしょうか?
余計なイベントを起こさずにメッセージ送信をできればいいのですが…。
0492デフォルトの名無しさん
2010/10/06(水) 07:12:07>このようにDoEventsを入れないと、最後のクライアント以外のメッセージは消えてしまいます
そんな事はない。
貴方のプログラムがバグって居るだけ。
0493デフォルトの名無しさん
2010/10/06(水) 10:17:06DoEventsを入れずに多数の接続先に大量のデータを送ると
バッファがあふれて一部データが送信されない
このときTCPでもエラーは特に起きないので
原因不明の中間データ消失が発生しているような状態になる
送信データを独自のキューで管理してDoEventsセーフな設計にするか
余裕があるならバグの多いmswinsck.ocxは捨ててAPIを直接操作したほうがいい
0494デフォルトの名無しさん
2010/10/06(水) 10:36:52その辺をちゃんとしてないからバッファがあふれるんじゃない?
0495デフォルトの名無しさん
2010/10/06(水) 11:35:05SendCompleteとバッファの限界は別問題だし
0496デフォルトの名無しさん
2010/10/06(水) 11:46:580497デフォルトの名無しさん
2010/10/06(水) 12:01:52http://hibari.2ch.net/test/read.cgi/tech/1269343909/
0498デフォルトの名無しさん
2010/10/06(水) 12:41:27winsock側のバッファに空きがない場合はちゃんとエラーが発生するし
ネットワークは直接関係ない
0499491
2010/10/06(水) 20:31:25VBのWnsockコントロールを使うと避けられないんですね・・・。
提案していただいた、WinsockAPIを調べてみることにします。
#パケットに番号をつけて、受信時に連続したパケットが来なかったらDo〜Loopで待つ、
#というのも思いつきましたが、スタックがあふれそうなので怖くてやめました
0500デフォルトの名無しさん
2010/10/08(金) 11:43:39としてListBoxなど標準コントロールのインターフェイスを
継承する独自クラスは作成可能でしょうか?
0501デフォルトの名無しさん
2010/10/08(金) 12:10:12出来ないわけないだろ、試してみ…
たら、なんか妙なコンパイルエラー出るなw
非公式の公開関数名にアンダーバーを含んでるのかもしれん。
それがどれだかは分からんけど、もしそうならアウトっぽい。
0502デフォルトの名無しさん
2010/10/08(金) 12:58:45なんで対症療法ばかり考えるかね
オーバーフローしないように、フロー制御すればいいだろ。
一行分のメッセージを送ったら、ack応答が帰ってくるまで待つとかさ。
0503デフォルトの名無しさん
2010/10/08(金) 13:37:40まあ、ほっときましょう。
このタイプは体で覚えるしかない。
0504デフォルトの名無しさん
2010/10/08(金) 14:55:520505デフォルトの名無しさん
2010/10/08(金) 21:23:43VBにそんなインターフェイス最初からない。
クラスは派生できない。
だからポリフォーリズムもどきがしたいのなら、レイトバインディングを
上手く使うしかないんじゃない?
0506デフォルトの名無しさん
2010/10/08(金) 21:38:29>ポリフォーリズム
さすがVB6プログラマw
0507デフォルトの名無しさん
2010/10/08(金) 21:43:580508500
2010/10/09(土) 01:00:06そうなんですよ、アンダースコアがあるからダメって怒られるんです…
>>505
え、そうなんですか?(;−;)
用語に疎いため仰ってる言葉(や笑い所)はわからないのですが、
もう少しご説明頂けませんか?
引数をAs Listboxなどとして特定の標準コントロールを受け取る関数があり、
そこへ引き渡せるラッパークラスを作りたかったのですが、それは無理って事ですか?
(相手側をAs ObjectやAs Variant宣言に変えなければ不可能ですか?)
0509デフォルトの名無しさん
2010/10/09(土) 01:09:47独自メソッドつけたいとかなの?
リストボックスへの参照を含むクラスじゃダメなの?
0510デフォルトの名無しさん
2010/10/09(土) 01:46:33そうです。例えばAPIで制御する独自のメソッドやプロパティを追加したり、という事です。
ここでラッパーというのは単なる概念で話してます。(元の機能を包み込むクラスという意味です)
参照を含むだけのクラスはListBoxではないため相手にListBoxとして渡す事ができませんが、
Imprements出来ればListBoxとしても渡すことが可能になる、はずだったのですが。
既にリストボックスを対象として作られている補助関数へそのまま渡せるように
コーディングできないかな?と思っていました。
0511デフォルトの名無しさん
2010/10/09(土) 01:55:590512デフォルトの名無しさん
2010/10/09(土) 01:58:08ListBoxのメソッドは自分でコーディングしなきゃならなくならないか?
あれってインターフェースのやつだろ?
0513デフォルトの名無しさん
2010/10/09(土) 02:00:11Javaでいうところのスーパークラスじゃなくてインターフェースの使い方だから
ListBoxのAddだとかClearとか中身空っぽってことになるんじゃ?
0514デフォルトの名無しさん
2010/10/09(土) 02:02:040515500
2010/10/09(土) 02:05:47渡さなくてもいいんですが、まぁいろいろ試行錯誤中なのです
Target() As ListBoxといった配列変数にも入れられますし
通常のListBoxと一緒に処理できると便利な場面がいくつかあったもので
>>512
その部分は結局は内部的にListBoxオブジェクトを持って対処するんですけどね
関数コールのオーバーヘッドは…ひとまず我慢という事で…w
0516500
2010/10/09(土) 02:11:34Javaはわかりませんが、そんな感じです
ですから内部変数に対象ListBoxの参照を持って対処します
そういう事もあって「ラッパークラス」と表現しました
というか、Implementsに関する話以外は論点ではなくて、
どなたか>>505さんの言っている意味を話して頂けませんか…
0517デフォルトの名無しさん
2010/10/09(土) 02:18:10ListBox対象とした関数の引数はその作ったクラスやObjectに書き換えるとかして
その独自クラスにListBoxと同じ名前の関数やプロパティ作れば形的にはラッパーになるんじゃねえの?
よく知らんけど
0518デフォルトの名無しさん
2010/10/09(土) 02:18:20だから、自作のUserControlをListBoxとして扱うことは恐らく無理だろうから、
IListBoxみたいな適当なインターフェイスを作ってメソッドの引数の型をIListBoxにするか、
またはメソッドの引数をObject型にしてレイトバインディングでやるかでしょ。
前者の場合、ListBoxについてはIListBoxとして扱うためのラッパークラスを用意し、
UserControlについてはIListBoxを実装する必要がある。
で、例えばListBoxをIListBoxを実装したラッパークラスに変換するメソッドを用意して、
みたいな風にするのかな。
0519デフォルトの名無しさん
2010/10/09(土) 02:24:29ポリフォーリズム → ポリモーフィズム
レイトバインディング → 実行時バインディング
のことかと
ポリモーフィズム - Wikipedia
ttp://ja.wikipedia.org/wiki/ポリモーフィズム
実行時バインディング - Google 検索
ttp://www.google.co.jp/search?hl=ja&safe=off&q=実行時バインディング
0520デフォルトの名無しさん
2010/10/09(土) 02:34:49Private 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)
...引数名変更
0521デフォルトの名無しさん
2010/10/09(土) 02:41:260522デフォルトの名無しさん
2010/10/09(土) 02:44:26プロシージャやプロパティやイベントをListBoxと同じ名前の全部用意してやるってのはダメなの?
0523デフォルトの名無しさん
2010/10/09(土) 02:45:23質問者を混乱させるだろ
0524デフォルトの名無しさん
2010/10/09(土) 02:56:050525500
2010/10/09(土) 03:24:55もしかしたら何か突破口に繋がるかもしれませんし
>>519 補足ありがとうございます
Implementsを書いただけではだめで、すべてのメソッドやプロパティを同じ形で宣言し、
さらに実際に実装しなきゃいけないという事はわかっています
(通常の自作クラスとそれのImplementsなら一通り理解しているつもりです)
今日、ListBoxのすべてのプロパティとメソッドの型を調べて実装してみましたが、
結局コンパイルエラーが出てしまった次第です
(エラー時案内された説明は理解しにくく、エラー内容と解説が食い違っているのでは?と思えます)
私のコードにミスがあるせいなら頑張ればいいだけですが、もしかして
Implementsの後に来るキーワードにListBoxが使えないって事であれば、ガッカリだなーと
その場合は理由も知りたいなと思い質問しました
>>520
えーっと、クラスはそのようにコーディングしてそれにを付加する形になっています
その例で言うと「Module1.bas側にある関数の宣言型変更を行わずに対処出来ること」、
VB6のImplementsにとって、それこそが唯一のメリットと考えているのですが…
>>522
Implementsを使うのはタブーか何かなんですか?
>>524
…あなたは区別付いてますか?
0526デフォルトの名無しさん
2010/10/09(土) 03:43:110527デフォルトの名無しさん
2010/10/09(土) 04:04:44Sub 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
0528デフォルトの名無しさん
2010/10/09(土) 04:11:020529デフォルトの名無しさん
2010/10/09(土) 04:16:270530デフォルトの名無しさん
2010/10/09(土) 04:21:22Event 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
0531デフォルトの名無しさん
2010/10/09(土) 04:28:300532500
2010/10/09(土) 06:59:08> 構文 Implements [InterfaceName | Class]
>
> 必ず指定する引数 InterfaceName または Class には、タイプ ライブラリ内のインターフェイス
> またはクラスの名前を指定します。このインターフェイスまたはクラスのメソッドは、
> Visual Basic クラスの対応するメソッドにインプリメントされます。
これを読む限りクラスモジュールでなくともImplementsに指定できるようです
またListBoxはタイプライブラリ内に普通にありますし、指定すること自体は可能と読めます
…ただ、以下の記述もあり…
> メモ Visual Basic では、派生クラスまたは派生インターフェイスをインプリメントできません。
…もしかしたら、実はここが問題になるのかもしれません
すべての標準コントロールはControlクラスから派生しているはずで…
内部も1カウントと数えられちゃうなら、ここでアウト…という事なのでしょうか?
0533デフォルトの名無しさん
2010/10/09(土) 11:17:44VBで作成した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に値を渡せる方法はありませんでしょうか?
0534デフォルトの名無しさん
2010/10/09(土) 11:20:330535デフォルトの名無しさん
2010/10/09(土) 11:29:50呼び元のみにクラスモジュールを追加して、
DLL側の型指定をobject型等に変更する認識でしょうか?
0536デフォルトの名無しさん
2010/10/09(土) 11:31:250537デフォルトの名無しさん
2010/10/09(土) 11:36:27DLL側にクラスモジュールを置く。
で、呼び出し元はDLLを参照設定して、そのクラスを使う、って感じ。
0538デフォルトの名無しさん
2010/10/09(土) 11:51:14Set 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)
に変更してみました。
開発環境がないので確認していませんが。。。
0539デフォルトの名無しさん
2010/10/09(土) 14:05:10>Implements ステートメント
>
>
>クラス モジュール内にインプリメントされるインターフェイスまたはクラスを指定します。
>
>構文
>
>Implements [InterfaceName | Class]
>
>必ず指定する引数 InterfaceName または Class には、タイプ ライブラリ内のインターフェイスまたはクラスの名前を指定します。このインターフェイスまたはクラス>のメソッドは、Visual Basic クラスの対応するメソッドにインプリメントされます。
0540デフォルトの名無しさん
2010/10/09(土) 14:09:090541デフォルトの名無しさん
2010/10/09(土) 20:53:07実際問題Implementsには標準コントロールは渡せないらしいって
誰かから昔聞いた事がある。だから出来ないって思い込んでる。
俺自身そういうコーディングした経験ないから真実は知らないが、
とにかく出来ないんじゃないか?とは思ってる。
説明は出来ない、すまん。
>>538
DLL側と呼び出し元、両方に同じ名前のクラスが宣言してあったとしても、
それは単に名前が被ってるものと解釈され同一とはならない。
DLL側で定義し外部に提供しているクラスを呼び出し元で使いたいなら、
呼び出し元はそのDLL名.クラス名でオブジェクト変数を作らないと。
0542デフォルトの名無しさん
2010/10/10(日) 08:05:44この場合でもグローバル変数にアクセスする方法はありますか?
例えば以下のhoge関数内でグロバール変数iに値を入れることは出来ますか?
Dim i as Long
Sub hoge(i as Long)
i = 1
Debug.Print i
End Function
0543デフォルトの名無しさん
2010/10/10(日) 12:34:040544デフォルトの名無しさん
2010/10/10(日) 15:22:08それだと、グローバル変数が引数に渡され
引数に値がセットされ、VB6のデフォは参照渡しなので
グローバル変数に値がセットされる
ローカル変数でてこないじゃんw
0545デフォルトの名無しさん
2010/10/10(日) 19:36:350546デフォルトの名無しさん
2010/10/10(日) 19:56:010547デフォルトの名無しさん
2010/10/10(日) 21:06:52>>543, >>546
あ、もしかして…標準モジュールでもMeって使えるんですか!?
オブジェクト内(クラスやフォーム)でしか使えないものと思い込んでいましたw
今試せないのですがいけそうですね、ありがとうございました!
>>544
関数呼び出しのコードは書いておりませんので
名前が同じでも参照しているとは限りません
例の関数内ではローカル変数しか操作していません
0548デフォルトの名無しさん
2010/10/10(日) 21:21:43module1.i
とかでもいけるような
0549デフォルトの名無しさん
2010/10/10(日) 22:10:30>>543, >>546
あ、もしかして…標準モジュールでもMeって使えるんですか!?
オブジェクト内(クラスやフォーム)でしか使えないものと思い込んでいましたw
今試せないのですがいけそうですね、ありがとうございました!
>>544
関数呼び出しのコードは書いておりませんので
名前が同じでも参照しているとは限りません
例の関数内ではローカル変数しか操作していません
0550542
2010/10/10(日) 22:15:08>>548
> 標準モジュールでも名前ついてるよな
そうだったんですね、勉強になりました
ということは内部的にはクラスモジュールと同等(というかフォーム相当)の動作をしているんですか
ほえー、なるほどなるほど…
0551デフォルトの名無しさん
2010/10/13(水) 22:06:21件(くだん)の検事も上司も、パソコンのことをなんにも知らないんだからね。
ミスであんな書き換えが起こることなんて100%あり得ないのにね。
0552デフォルトの名無しさん
2010/10/14(木) 09:20:02使い慣れないなら使うなよ。
恥ずかしい奴
0553デフォルトの名無しさん
2010/10/14(木) 20:56:44まあこの手のタイプは得てして「病識」がないからなあ....
0554デフォルトの名無しさん
2010/10/14(木) 21:15:24検事(けんじ)を擁護(ようご)するとは・・・
オマイも検事(けんじ)の仲間(なかま)なのか? プッ。
0555デフォルトの名無しさん
2010/10/15(金) 07:15:430556デフォルトの名無しさん
2010/10/16(土) 00:39:53VB6なんて使わなくて済むのに・・・
全ては俺のパソコンのスペックの低さにある・・・
VB6でさえ・・・PEはインストール要件にあわずLEを買ったのに・・・
くそお・・・・くそお・・・・
0557デフォルトの名無しさん
2010/10/16(土) 09:21:320558デフォルトの名無しさん
2010/10/16(土) 09:23:190559デフォルトの名無しさん
2010/10/16(土) 18:56:17なんか興味深い仕様とか誰かないのん?
0560デフォルトの名無しさん
2010/10/16(土) 19:16:18骨董屋で新製品が入ったか聞くジョークみたいだな
0561デフォルトの名無しさん
2010/10/16(土) 21:45:22試しに7の64bitに入れてみたら基本的に問題なく動いてるみたいなんだが…
(フォームの作成画面が恐ろしく重いって問題があったけど、操作できないわけじゃない)
0562デフォルトの名無しさん
2010/10/16(土) 22:25:41自分で判断すりゃいいのに。
0563デフォルトの名無しさん
2010/10/16(土) 23:37:020564デフォルトの名無しさん
2010/10/16(土) 23:54:03MSがしぶしぶ延長はしてた気がしたが
0565デフォルトの名無しさん
2010/10/17(日) 07:59:32作ったexeはWindows 7でもサポートされる。
0566デフォルトの名無しさん
2010/10/17(日) 13:12:027の64bitでは開発はダメ(サポートしない)という事になっている
0567デフォルトの名無しさん
2010/10/17(日) 13:16:25開発環境はすでにサポート終わってるよ
0568デフォルトの名無しさん
2010/10/17(日) 14:31:37MSは開発環境がWin7/32bitでも動くと言ってるが、
同時にWin7/64bitでは動くかどうか知らない(チェックしない)と言ってる。
というか過去にわたってIDEは32bitでしか保証してない。
0569デフォルトの名無しさん
2010/10/17(日) 15:19:06ttp://msdn.microsoft.com/ja-jp/vbasic/cc707268.aspx
Windows Vista®、Windows Server 2008®、およびWindows 7における
Visual Basic 6.0 のサポートについて (日本語版最終更新日:2009年3月6日)
0570デフォルトの名無しさん
2010/10/18(月) 11:39:28http://www13.atwiki.jp/mediacoder/pages/68.html
このサイトのtaskenc.vbsに「全行程が終了した後スタンバイ」を付加したいのです。
OSはWin7/64bitで、実際にはMediaCoderではなくBontsdemuxを経由してffmpegでエンコードしています。
よろしくお願いします。
0571デフォルトの名無しさん
2010/10/18(月) 21:31:34つか「全行程が終了した後スタンバイ」って具体的にどうしたいの。
さっぱりわからんわ。
0572デフォルトの名無しさん
2010/10/18(月) 23:28:370573デフォルトの名無しさん
2010/10/19(火) 00:18:440574570
2010/10/19(火) 00:59:08色々見よう見まねで>>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
0575デフォルトの名無しさん
2010/10/19(火) 19:40:08どっちにしろ正式な用語じゃないだろ
0576デフォルトの名無しさん
2010/10/19(火) 20:27:40(スタンバイ、スリープ、サスペンド、ハイバネーション、休止状態、C1〜C2、E0〜E5・・・etc)
それはともかく、ShutdownWindowsを使ってしかもキーで操作しようってのは不適切だろ
コマンドラインで制御してもいいなら
Shell.Run "%systemroot%\system32\rundll32.exe powrprof.dll,SetSuspendState", 6,true
とか
0577デフォルトの名無しさん
2010/10/20(水) 19:58:08それ間違えてね?
RunDll32ではSetSupendStateをうまく呼び出せない
このAPIを呼べたとしても、引数が渡せないので自動復帰不能になっちゃうよ
RunDll32は特定の形式に乗っ取っている関数にしか引数を正しく渡せない
しかも外部から任意に引き渡せるのは文字列(LPSTR)のみで、何番目に引き渡すか指定も出来ない
さらに第1引数にはRunDll32のプロセスハンドルが勝手に引き渡されたりと、
RunDll32に対応していない関数を呼び出すのは十分検証しないとかなり危険じゃないかと
0578デフォルトの名無しさん
2010/10/25(月) 19:53:27使えるDLLってネットでダウンロードしてきたDLLも使えるの?
0579デフォルトの名無しさん
2010/10/25(月) 20:01:570580デフォルトの名無しさん
2010/10/25(月) 20:12:100581デフォルトの名無しさん
2010/10/25(月) 20:23:300582デフォルトの名無しさん
2010/10/25(月) 22:26:13全てのフィールドは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の文字がそのまま出ます。
0583デフォルトの名無しさん
2010/10/25(月) 22:40:07例えば有名なzlib.dllなんかも普通におk、のはず
実行ファイルの隣に置いておけばそれを呼び出せます
ただしVB6向けの解説なんてまずないでしょうから、当然多言語(主にC言語系)の読解力が必須になってきます
また引数や戻り値の型にはVB6でそう簡単に扱えない構造を求められる場合があり
これを正面から突破するにはかなりトリッキーだったりディープな知識を要するコーディングが必要です
普通に考えて、そういうタイプのDLLはCやらC++を間に挟みそっちで(VB6の外で)処理するほうが手っ取り早いんで
結果的にVB6だけで何が何でも対処するぜ!的なノウハウはネット上でもあまり見かけないという罠も待ってます
0584578
2010/10/26(火) 10:00:29とにかくさっそく試してみます
0585デフォルトの名無しさん
2010/10/27(水) 01:28:120586デフォルトの名無しさん
2010/10/27(水) 18:09:55Open "filename" For Append as #1
とやって、追記モードで開くファイルと、開いた後の追記には、何か制限があるでしょうか?
ググると、かなり巨大なファイル(10MBとか)を操作しているような記事もあるので、制限は無いのかもしれませんが
とりあえず無限とも有限とも見つからないので…
0587デフォルトの名無しさん
2010/10/27(水) 18:39:02>>586は VB6 でお願いします。
0588デフォルトの名無しさん
2010/10/27(水) 19:54:180589デフォルトの名無しさん
2010/10/27(水) 20:08:45ギガッ
…すると、ファイルシステム的な上限ってことかな?
0590デフォルトの名無しさん
2010/10/27(水) 20:11:420591デフォルトの名無しさん
2010/10/27(水) 21:23:380592デフォルトの名無しさん
2010/10/27(水) 22:41:18Long型で定義してあるからそれ以上を渡せないって寸法。
(VB6が内部的に使っているAPIは4GBまでいけるヤツのはずだけど、VB6は符号なし4バイト整数型ってのがない)
FSOも同じ理由で2GBの制限付いてたと思う。
今時のWindows(とりあえずNT系)ならそれ以上も読み書きできるAPIを普通に持ってる。
10GBとか100GBの読み書きしたい場合はこのAPIだね。名前は忘れたw
0593デフォルトの名無しさん
2010/10/27(水) 23:42:06なるほど…ありがとー
念のため警告でも付ける〜。
いやとりあえず、いつまで動かすか(というかいつ止めるか)判らないデータロガーみたいなものを作るハメになってですね。
データ自体はそんなに無い…ハズだけど1年ぶっ通しとかで使われるとどーかなーとかいうのが多少心配で…っていう。
0594デフォルトの名無しさん
2010/10/28(木) 00:55:310595デフォルトの名無しさん
2010/10/28(木) 01:00:45API使って操作すればいいんじゃね?
0596デフォルトの名無しさん
2010/10/28(木) 01:16:580597デフォルトの名無しさん
2010/10/28(木) 01:31:41無理だろ
0598>>597
2010/10/28(木) 08:00:52API間でそのまま扱えばいいだけだろ
1つとして扱いたければ8バイトのCurrency型にMoveCopyして1万分の一して扱えばいい
(多少扱える最大値が減るが、1000TB以上扱えるから問題にならないだろ)
0599デフォルトの名無しさん
2010/10/28(木) 22:20:47ファイルを適当なサイズに分割するとかできないの?
>>597
応用力なさ杉
0600598
2010/10/28(木) 23:39:26× 1万分の一して扱えばいい
○ 1万倍して扱えばいい
※Currency型の中身は符号付き8バイト(64bit)整数型と同等。(評価時に逐次1万分の1して扱ってるだけ)
ちなみに無理と言ってしまうのは、
4バイト整数型の符号付きと符号なしの違いを理解してないからだな。
分かってない人に無理とか言われても困る。
分かってるなら、符号付き整数型に符号なし整数値を入れた場合にどう評価されるか考えれ。おのずと答えは出る。
0601デフォルトの名無しさん
2010/10/29(金) 00:49:20n = HogeAPI()
k = n < 0&
p = n And &H80000000&
g = p
If k Then
g = g Or &H80000000&
End If
0602デフォルトの名無しさん
2010/10/29(金) 01:14:260603デフォルトの名無しさん
2010/10/29(金) 01:15:49○ &H7FFFFFFF&
0604デフォルトの名無しさん
2010/10/29(金) 14:24:49そこから自動でVPNやダイアルアップ接続できる
「RASAPI32.DLL」を使用したAPI(VBRAS32)なんだけど、
WINDOWS7では動かないみたいなのですが、
なにか対処法はご存知ないでしょうか?
0605デフォルトの名無しさん
2010/10/30(土) 18:35:58ダイアルアップは扱ったことないから詳しくは知らないんだけど、
昔から「Rasapi32.dllがない場合」という問題があるらしいので
特別Win7に限定した問題ではない、のかもしれない。
0606デフォルトの名無しさん
2010/10/30(土) 18:48:11visual basic 2010 で5.0 のファイルを扱う事はできないのでしょうか。
拡張子が .vbp(5.0?) .vbproj (2010) と違うようで、拡張子を変えて 2010 で開くと
『ルートレベルのデータだ無効です』と出ます。
また、もし(5.0 のファイルを) 利用したい場合、VB5.0 を購入する事になりますか?
0607デフォルトの名無しさん
2010/10/30(土) 18:51:05基本的には役に立たないけど。
0608606
2010/10/30(土) 19:16:47.vbp は開けないようです。visual studio をダウンロードして試してみようと思います。m(__)m
0609デフォルトの名無しさん
2010/10/30(土) 19:29:012008くらいまでは開けたと思うよ。
0610デフォルトの名無しさん
2010/10/30(土) 19:54:55う〜ん、探してみたんですが、過去のバージョンが
ダウンロードできなくなっているみたいです。ちょっとダメみたいですね。
0611デフォルトの名無しさん
2010/10/30(土) 21:08:03意図的に見つけにくいよう隠してあるけど、たしかまだDL出来るはずだよ
0612デフォルトの名無しさん
2010/10/31(日) 03:57:58途中でダウンロードエラーになるので、諦めるか別の方法を考えようと思います。
0613デフォルトの名無しさん
2010/10/31(日) 16:00:320614デフォルトの名無しさん
2010/10/31(日) 21:17:02エクスクラメーションマークを使うと、規定のプロシージャにアクセスできるようですが、
言語仕様としてはどのように定義されているのでしょうか?
同じようなことを他の言語でも実現可能なのでしょうか?
object!AAA = "bbb"
property let Test(a, b) '← aに"AAA"が、bに"bbb"が入る
0615デフォルトの名無しさん
2010/10/31(日) 21:21:540616デフォルトの名無しさん
2010/10/31(日) 21:36:22. と一緒。
0617デフォルトの名無しさん
2010/11/01(月) 03:21:15できました!ありがとうございました。
0618デフォルトの名無しさん
2010/11/01(月) 07:27:07レスありがとうございます。
エクスクラメーションマークに参照以外の意味はないということでしょうか。
う〜ん、もう少し自分で考えてみます。
0619デフォルトの名無しさん
2010/11/01(月) 23:14:53Form!テキストボックス なんかをさすときに使われた記号だよ。
VB5とかVB6とかではフォーム=クラスになったので、ピリオドのアクセスと同じ意味になった。
昔はフォーム=クラスではなかったから特別なアクセス記号が必要だった。
0620デフォルトの名無しさん
2010/11/02(火) 06:06:58VB6では主にDAOのレコードメンバ記述用に使用される。
意味的にはds!ABCはds("ABC")と同じ。
Formで使えるのはForm自身がメンバを自身の辞書で管理しているから。
propertyで機能するのは辞書構造を表現することが出来るからだが、
ユーザーが通常使う機能ではない。
0621デフォルトの名無しさん
2010/11/02(火) 06:23:20全然違う。AccessとVB、どっちが古いか知らんのか?
0622デフォルトの名無しさん
2010/11/02(火) 17:42:27参考サイトありますか?
型宣言や記述方法やtipsなど
0623デフォルトの名無しさん
2010/11/02(火) 19:49:140624デフォルトの名無しさん
2010/11/02(火) 19:52:030625デフォルトの名無しさん
2010/11/02(火) 19:53:180626デフォルトの名無しさん
2010/11/02(火) 19:57:00以前同じような事を調べたが、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 すげー便利だな。当時このサイトを見つけたかったわ。
0627デフォルトの名無しさん
2010/11/02(火) 20:04:01>>620
Dictionaryで使える機能だったんですね。
モジュール内での受け渡しに使えば、ロジックを簡潔に書けるのでは?と期待して調べていました。
Privateなユーザー定義型は同じモジュール内でも使えないですし、そもそもPrivateなクラスは定義できませんし。
JavaScriptのプロパティに近いイメージでした。
0628デフォルトの名無しさん
2010/11/02(火) 20:39:13自分で調べて備忘録作るしかないかのう
0629デフォルトの名無しさん
2010/11/02(火) 20:45:18すごい内容が良かった。
0630デフォルトの名無しさん
2010/11/02(火) 20:49:48国会図書館でコピーしてもらうとか
0631デフォルトの名無しさん
2010/11/02(火) 22:19:54質問主なら名前欄にアンカー入れないとわかんないよ。(このスレはID表示されないから)
>>629 ググってみたら見つかった、名前を覚えていてくれてありがとう。
Visual Basicユーザーに贈るWin32 APIの使い方 基礎編/実践編
「… Cとの違いと注意点、メモリ管理など…」これは面白そうだな、買おうかしら。
だがVB5向けとはかーなり古い本だなw
0632デフォルトの名無しさん
2010/11/02(火) 22:37:54その本を読んでヘッダからDeclare宣言を書き下ろしたりできるようになった。
機会があったら読んでみるといいよ。
0633デフォルトの名無しさん
2010/11/02(火) 22:41:530634デフォルトの名無しさん
2010/11/02(火) 22:43:070635デフォルトの名無しさん
2010/11/02(火) 22:48:17同じ努力ならC#なりVB.NETなりに対して払った方がずっと潰しが利く。
もちろん誰が何しようと勝手だけども。
0636デフォルトの名無しさん
2010/11/02(火) 22:52:190637デフォルトの名無しさん
2010/11/02(火) 23:05:19語るに落ちてるな。
0638デフォルトの名無しさん
2010/11/02(火) 23:08:200639デフォルトの名無しさん
2010/11/02(火) 23:09:55あと誰が何しようと勝手とか最後に逃げの言葉吐くならはじめから黙ってろ。
0640デフォルトの名無しさん
2010/11/02(火) 23:17:40どうもしないよ
0641デフォルトの名無しさん
2010/11/02(火) 23:34:430642デフォルトの名無しさん
2010/11/03(水) 01:13:02就職したIT企業が未だに古いVB使った企業と取引してるとか
もしくは
低スペックパソコンで古いOS使ってる趣味人とかだろ
0643デフォルトの名無しさん
2010/11/03(水) 02:11:40高スペックで動かすとVB6は十分高速に動き、必要以上のポテンシャルを持ってる
おかげで特に新しい言語覚える理由がなくなったんだ
思い通りのソフト作るにはそれに必要なVB6の知識を広げるだけでいいんだから
彼らはVB6を使わざるを得ないのではなくて、
たまたま選んだ言語がVB6だっただけ
VB6で十分実現可能な環境が延々と続いているから新しい言語が不要なんだ
趣味人にとってVB6のサポートが切れる云々は正直あまり大きな問題ではない
深刻なのはVB6のランタイムあるいはIDEが最新OSで動作しなくなった時からだ
新しい言語に移行するとしたらみんなそのタイミング(企業のほうもそうかもしれない)
64bit版Win7でVB6のIDEは非サポートとなったが、IDEは基本的に動作してしまっている
これはMSの戦略ミスだと思う VB6.exeは起動すら出来ない状態に追い込むべきだった
0644デフォルトの名無しさん
2010/11/03(水) 02:22:25つーかなんでお前はこのスレにいるんだ。端的に時間の無駄なんじゃないか?
同じ2chにレスするならC#なりVB.NETなりのスレ見た方がずっと潰しが利くはずだろ?
あぁ、もちろん誰が何しようと勝手なわけか
0645デフォルトの名無しさん
2010/11/03(水) 10:20:47という逆説を紹介してたけど、本当あの記事は正しいな。
0646デフォルトの名無しさん
2010/11/03(水) 16:58:23俺はVB6を肯定も否定もしないし「古い言語にしがみついてるヤツ」と見下されても構わないが、
どうせ話すなら新しい言語に移行する動機・メリットを説いて欲しい
同じ事が実現できるのなら、別に言語がなんであろうと構わないのだから
0647デフォルトの名無しさん
2010/11/03(水) 17:22:55スレ違い
0648デフォルトの名無しさん
2010/11/03(水) 18:07:00せめて畑の違う数学者同士か、物理学者同士で話してくれよ、不毛すぎるから
0649デフォルトの名無しさん
2010/11/03(水) 20:48:55それを俺に言うなよw
わざわざここに批判書いて行くなら、ついでに建設的誘導をして欲しいだけ
まぁ出来ると思ってないけど
0650デフォルトの名無しさん
2010/11/03(水) 21:11:170651デフォルトの名無しさん
2010/11/03(水) 21:23:290652デフォルトの名無しさん
2010/11/04(木) 09:58:33これで動的コード生成無しに単体で__cdecl呼び出しさえ出来れば完璧だったのだが
0653デフォルトの名無しさん
2010/11/04(木) 16:15:08ダイヤルアップ接続のダイアログを出すと
「接続先」に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
0654デフォルトの名無しさん
2010/11/04(木) 18:59:050655デフォルトの名無しさん
2010/11/08(月) 10:50:44Win32_DesktopMonitorのAvailabilityを監視するソフトを作成してみました。
しかし、省電力モードに移行しても、ステータスは、3のままで、モードの移行を
拾えません。
Win32_VideoControllerでやってみても同様でした。
何かよい方法はないのでしょうか??
0656デフォルトの名無しさん
2010/11/08(月) 11:27:160657デフォルトの名無しさん
2010/11/08(月) 17:03:44<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
こんな感じにやりましたが、ダメでした。
そもそも、ハンドルが取得できない。
どうしたものか??
0658デフォルトの名無しさん
2010/11/08(月) 17:18:320659デフォルトの名無しさん
2010/11/08(月) 17:51:48あーーー。
VB6まででした。
スレチ ゴメン。
消えます。
0660デフォルトの名無しさん
2010/11/09(火) 22:15:38SendKeysでパスワードを自動入力したいんですがパスワードダイアログがプロセスIDでもウィンドウ名でも取得出来ずに困っています
何か手はありますか?
Excelは2003です
0661660
2010/11/09(火) 22:17:180662デフォルトの名無しさん
2010/11/09(火) 22:19:060663660
2010/11/09(火) 22:31:21即レストン
パスワード指定して開けるのは知っているんですが
実際にやりたい事は下記通りで、その前段階でつまってるとこです
やりたい事
読み取りパスが掛かっていないExcelと同値パスの掛かったExcelファイルが複数ある
ExcelのアドインによりExcel起動時にAuto_Openイベントでvbsが実行される
vbsでの処理で開かれたExcelの読み取りパスを自動入力
パスが掛かっていない場合はSleepとカウンターで適当にvbs処理を終わらせる
できるならば複数Excelが開かれる場合にも複数同様に処理をしたい
で、そもそもでvbsからパスの掛かったExcelを開くとパスワードダイアログ入力で失敗する
現状はexcel.exe /r "hoge.xls"で呼び出してる
0664デフォルトの名無しさん
2010/11/09(火) 22:35:00APIを使える言語と組み合わせるしかないでしょ。
0665デフォルトの名無しさん
2010/11/09(火) 23:36:12誘導されたんだな、ガンガレ
0666デフォルトの名無しさん
2010/11/10(水) 00:40:04意味不明過ぎる
0667660
2010/11/10(水) 08:22:44やっぱ無理なのかなぁできそうなんだけどなぁ
vbsのウィンドウをアクティブにする手順じゃダメだめ?
>>665
よう!
向こうのスレでも散々だったが、こっちでもアウェイ感がw
>>666
パスワード掛ける意味はある
数人で同じExcelファイル回してて第三者にファイルだけ漏れてもパスワードにより開けない
アドインとvbsがないとね
0668デフォルトの名無しさん
2010/11/11(木) 00:43:51>パスワード指定して開けるのは知っているんですが
>実際にやりたい事は下記通りで、その前段階でつまってるとこです
知っているならやれば??やらない理由は?あえてVBSを使いたいの?
>できるならば複数Excelが開かれる場合にも複数同様に処理をしたい
"複数Excel"は、1Application内に複数のWorkbookを開く時にも同様に処理したいって事?
>現状はexcel.exe /r "hoge.xls"で呼び出してる
これじゃブックごとにExcel起動しちゃうもんな
アドインに、ブックを開くメソッドを作ってDDEで呼び出すってのはどう?
"[Run(""AddinBook!OpenBook"")];"
DDEならダブルクリック起動にも対応できるでしょ
0669デフォルトの名無しさん
2010/11/11(木) 10:22:39On 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"が出てしまいます。
これは回避できないんでしょうか?
0670デフォルトの名無しさん
2010/11/12(金) 08:29:37> 知っているならやれば??やらない理由は?あえてVBSを使いたいの?
1つのbookを指定する際にパスワードを指定して開くとなると
100個ファイルがある場合、100個のスクリプトを作らないとダメですよね?
ファイル選択ダイアログとかも使いたくないので
あくまで、Excelファイルのアイコンをダブルクリックした時に処理したいのです
> "複数Excel"は、1Application内に複数のWorkbookを開く時にも同様に処理したいって事?
パスワードダイアログを自動入力できるならば、どちらでも構いません
> >現状はexcel.exe /r "hoge.xls"で呼び出してる
> これじゃブックごとにExcel起動しちゃうもんな
その方がプロセスIDやウィンドウが取得し易いと思っているんですがダメなんですかね
> アドインに、ブックを開くメソッドを作ってDDEで呼び出すってのはどう?
> "[Run(""AddinBook!OpenBook"")];"
> DDEならダブルクリック起動にも対応できるでしょ
DDEから呼び出され、アドインによりブックを開く、このブックってのはExcel.exeの事?
0671デフォルトの名無しさん
2010/11/12(金) 09:40:200672デフォルトの名無しさん
2010/11/12(金) 11:30:09inputbox"pass"
' 何が入力されようが強制終了
にしておいて、
Application.EnableEvents = False
開いてTrueにする
にすりゃわざわざフォーカスだのなんだのしなくてよかろ
0673デフォルトの名無しさん
2010/11/12(金) 12:47:54プロセスIDは取得できてるんでWMIは今更感が…
他にWMI利用してできましたっけ?
>>672
それはvbsですか?vba?
Excelファイルダブルクリック
vbsにファイルパス引き渡してvbs内でパスワードと共に該当ファイルを開く
ってのでいけそうな気がしてきたので、やってみます
0674デフォルトの名無しさん
2010/11/12(金) 13:05:28>>671は>>669へのレスだ
0675デフォルトの名無しさん
2010/11/12(金) 13:20:09ググってみた
WMIでポートが有るか調べるってことでいいのかしら…やってみるっす。
ポートでのエラー以外は「実行時エラー」って出ないのかも気になったりもします。
とあるエラーをトラップさせようとしているのですが、そのエラーを起こせる実機が手元にないので
出先でデバッグってのもわりとつらい…
0676660
2010/11/12(金) 14:40:45DDEすら不要だったわ
ファイルオプションでvbsからbookをパスワード付きで開く処理追加しただけ
パスワードなしのbookもそのまま開ける
回り道した割りにあっさりできた
でも、色々と広い知識のスレ住人には世話になった
感謝する。ありがとう
0677デフォルトの名無しさん
2010/11/12(金) 15:29:028018って既にポートが開いてるとかいうエラーじゃない?
だとしたら
if MSComm1.PortOpen = False then
MSComm1.PortOpen = True
else
msgbox "既に開いてる"
end if
みたいにしてみては?
0678デフォルトの名無しさん
2010/11/13(土) 19:22:23VB+Cでいままで作ってたから画面まわりを作ってたVBが無くなるのは辛い
VCで画面なんか作ってたら気が狂いそうだし、C#あたりで作るのが無難なのかね…
C#もとっつきにくいんだが…歳のせいか?w
0679デフォルトの名無しさん
2010/11/13(土) 19:29:490680デフォルトの名無しさん
2010/11/13(土) 19:37:11VB.NETもかじってみたけど、なんだこの言語ってなった
VBの良さってササっと作れるとこだったんだけど
それにしてもVB.NETはもう別言語ですな
VBの悪いとことCの悪いとこを足したような感じ…
0681デフォルトの名無しさん
2010/11/13(土) 20:53:10いや、8018は開いているポートに対してできる操作です、みたいな事だったと思う。
なんでポートを開こうとしてそんなことを言われるのかも良くわからない。
0682デフォルトの名無しさん
2010/11/13(土) 22:14:490683デフォルトの名無しさん
2010/11/17(水) 08:26:52最初はそう思うけど後で自分はなんて恥ずかしいこと
言ってたんだと思うことになるからそれくらいにしとけw
0684デフォルトの名無しさん
2010/11/17(水) 11:26:38c#.netとvb.netなら、ほとんど差は無いんじゃねえの?
0685デフォルトの名無しさん
2010/11/17(水) 11:40:44慣れ親しんだ文法の壁だろ 多分
理解出来てりゃ文法とかはある程度吸収できるとは思うけど
0686デフォルトの名無しさん
2010/11/17(水) 12:41:56趣味で多少のもの作ってるだけだからWin7でも使えるなら無理して乗り換えはせん。
0687デフォルトの名無しさん
2010/11/18(木) 00:54:33N88BASICから、VB6まで何世代違うと思ってるんだよ。
QBASIC、Visual Basic for MS-DOS、VB1、VB2、VB3、VB4、VB5、VB6、
0688デフォルトの名無しさん
2010/11/18(木) 16:43:39さておき
Windowsが終了することでアプリが落とされる場合にステータスを保存したいような場合
処理が短ければUnLoad の中で問題ないんでしょうか?
やりたいことはUPSからシャットダウンされそうになったときに、データを保存するっていうようなことです。
UPSの付属ソフトは終了前に何かを実行させるという機能はあるから、
ソレからなにか情報を受けるのでもいいけど、それはそれで大層な気もする…。
0689デフォルトの名無しさん
2010/11/18(木) 16:55:18ほい
http://dobon.net/vb/dotnet/system/sessionending.html
0690デフォルトの名無しさん
2010/11/18(木) 23:04:20Excelが起動してる場合同じプロセスでbookを開きたいです
vbsでCreate.objectする前にGet.objectでExcel.applicationを取得して
エラーでなければCreate.objectしたいのですが
Errorの判定方法が分かりません
助けて
0691デフォルトの名無しさん
2010/11/18(木) 23:09:440692デフォルトの名無しさん
2010/11/19(金) 08:16:40スペシャルthx
0693デフォルトの名無しさん
2010/11/20(土) 11:37:15それぞれどういうものなのかよくわからん、困ったもんだ。
エクスプローラには、.dllが「アプリケーション拡張」で、
.ocxが「ActiveX コントロール」と書いてあるな。
ActiveX コントロールとは、フォームに張り付けるオブジェクトかも知れんな。
Declare ステートメントは、C言語等で作成されたdllの中の、クラスを使ってない
関数を呼ぶものかも知れんな。
参照設定って何だ。Declareは別に参照設定は不要なのかどうなのか。
少なくともWin32API関数は不要のようだが。
参照設定は.dllも.ocxのどちらも対象に入るのかどうか。
参照設定は、Microsoft OfficeのWordかExcelかAccessを、実行前からどういう
ものか認識できて、専用のデータ型の変数とNewキーワードを使えるのに対し、
それをしないとObject型変数しか使えず、実行してからでないとどういう実体なのか
わからなくて、CreateObject関数で変数の実体を生み出すぼろいやり方なんだな。
参照設定の対象になるオブジェクトって何て言うのか。あれをCOMと言うのか、
それともActiveXと言うのか、それともOLEと言うのか、それともオートメーション
と言うのか。
よくわからんわ、困ったもんだ。
0694デフォルトの名無しさん
2010/11/20(土) 11:44:340695デフォルトの名無しさん
2010/11/20(土) 19:55:03えーと… .NETから移植するってことでいいのかしら?
0696デフォルトの名無しさん
2010/11/20(土) 19:57:15.NETに移行するのでも
お前が早くやれると思う方を選べばいいと思うよ。
0697デフォルトの名無しさん
2010/11/20(土) 19:58:380698デフォルトの名無しさん
2010/11/20(土) 22:39:26後者はスレ違じゃね?
0699デフォルトの名無しさん
2010/11/27(土) 14:00:10このEXEは1つのEXCELファイルを検索し、見つけたら表示をするだけのEXEなのですが、ループ内で呼んでいるため複数ファイルが表示されることになります。
現状、複数のプロセスでEXCELファイルが表示されてしまうので、これを1つのプロセス内で複数ファイル表示させたいのですが、いい方法はありますか?
ちなみに、別EXEに修正はあまり加えたくありません。
0700デフォルトの名無しさん
2010/11/27(土) 20:36:36EXE1回実行で1つのファイルが見つかるものを、複数回呼んで複数ファイルを表示させると、呼んだ回数だけEXEタスクが増えるが
実行されているEXEを再度コールするなどで、タスクを増やさず現在動いてるEXEを再実行させたように動かしたいと?
EXEが多重起動による再実行オプションをもってるとか、コマンドの受付けを持っているとかだと楽だろうねえ。
マウスイベントとかキーダウンイベントで再実行できるならAPIでなんかあったような。
0701デフォルトの名無しさん
2010/11/27(土) 23:33:290702デフォルトの名無しさん
2010/11/28(日) 00:23:11別EXE内のEXCELを起動する場合にShellExecute()を利用するということでしょうか?
1つのアプリケーション内に複数のWorkbookを開きたいので、
Set obj = CreateObject("Excel.Application")でセットしたオブジェクトを
別EXEに起動引数で渡せれば、別EXE内でobj.Workbooks.Open(xlTestFile)し、
ループが終わったらVisible = Trueで全表示できるかな。。と単純に思ったのですが、
実現可能ですか?引数にオブジェクトを渡せるのかどうかは謎ですが、実行環境がないので
確認していません。
0703デフォルトの名無しさん
2010/11/28(日) 07:13:540704デフォルトの名無しさん
2010/11/28(日) 14:24:06だったら先に言ってくれ、答えづらい。
新規にActiveXEXE作ってそこにExcelへの参照変数持たせるとか。
後はGetObjectって使えたっけ?
起動中Excelへの参照が得られるやつ
0705デフォルトの名無しさん
2010/11/28(日) 14:38:17今、数合わせゲームを作っています。
デバックしたときに数字が表示されなくて困っています。
エラーとか警告は出てません。
わかる方がいましたら教えてください。
お願いします。
0706デフォルトの名無しさん
2010/11/28(日) 14:45:050707デフォルトの名無しさん
2010/11/28(日) 15:27:560708デフォルトの名無しさん
2010/11/28(日) 16:23:21あとで苦労した
0709デフォルトの名無しさん
2010/11/28(日) 16:29:35表示されるようにプログラムを書けばいいと思うよ。
0710デフォルトの名無しさん
2010/11/28(日) 21:49:38データ型指定せずともなんとなく動くとか、
例えばテキストボックスでhoge.text = "hoge"って書かずとも
hoge = "hoge"で代入できちゃうとか。
クラスとかわかってなくてもなんとなくいけるとか。
自分で関数は書けずとも、改造はできるとぬかすとか。
イベントハンドラに何から何まで書いちゃうとか。
0711デフォルトの名無しさん
2010/11/28(日) 21:58:05ソース管理が滅茶苦茶でどれが最新のソースなのかわからなくなっています。
現在動いているEXEはあるのだけど、逆コンパイルってできるのかな…
0712デフォルトの名無しさん
2010/11/28(日) 21:59:44かんたんなプログラムなら何とかなるかもしれないけど。
0713711
2010/11/28(日) 22:11:46ググッてみたけれども、使えそうなのはVB Decompilerくらいっぽいのですが、
他になにかあったら教えてもらえると助かります。
0714デフォルトの名無しさん
2010/11/28(日) 22:29:000715711
2010/11/28(日) 23:16:21明日試してみます。ありがとうございました。
0716デフォルトの名無しさん
2010/11/29(月) 12:46:17板の場所がわかりません。
だれか誘導お願いします。orz
0717デフォルトの名無しさん
2010/11/29(月) 15:10:05http://hibari.2ch.net/test/read.cgi/tech/1284423653/
0719デフォルトの名無しさん
2010/11/30(火) 13:00:220720デフォルトの名無しさん
2010/12/10(金) 03:15:180721デフォルトの名無しさん
2010/12/22(水) 22:28:210722デフォルトの名無しさん
2010/12/27(月) 20:09:50フォームにUIのパーツを貼り付けていって、走らせてみたら
Hello World が出る。
プログラミング初心者にとって重要なのは、制御文の使い方だったり
データ型であったり、また、VBの場合ならOOPとしての設計方法だったり
するけど、なまじUIが便利に出来ているから、初心者が独学でやろうと
すると、コピペだらけになり、肝心な部分がいつまでたっても成長しなかったりする。
本はたくさん持ってるけど、似たような入門本ばかりだったり。
0723デフォルトの名無しさん
2010/12/27(月) 20:28:320724デフォルトの名無しさん
2010/12/27(月) 23:23:320725デフォルトの名無しさん
2010/12/28(火) 01:02:080726デフォルトの名無しさん
2010/12/28(火) 17:35:26激しく同意する部分多々あり。
会社の偉いさんから
「ワシ、今、こんなソフト作ってる。これで会社が便利になるから
完成させてくれ」
と、渡されたソフトがVB6で作りかけられてはいるが
中身は目もあてられず。
Option Explicitつけただけで、コンパイルが通らない部分だらけになった。
一つのイベントハンドラに2000行ぐらいのコードがある。
中身何やってるかわからない。
コピペだらけで、IFやFORのインデント位置が無茶苦茶。
まず直す作業から入ったが大変だった。
0727デフォルトの名無しさん
2010/12/28(火) 19:02:23そうでもないか
0728デフォルトの名無しさん
2010/12/28(火) 19:34:000729デフォルトの名無しさん
2010/12/28(火) 20:43:51コードの整形ツールくらいどっかに転がってそうだけど、ないのかなあ?
探したことないけどw
0730デフォルトの名無しさん
2010/12/28(火) 21:12:400731デフォルトの名無しさん
2010/12/29(水) 00:07:230732デフォルトの名無しさん
2010/12/29(水) 14:06:26綺麗に整形させると共にコードの内容を理解させようって言う作者の意図なんだよ
0733デフォルトの名無しさん
2010/12/29(水) 18:56:00記述するとか、考えられん。
0734デフォルトの名無しさん
2010/12/29(水) 23:25:24で、この手法の名前を考えようぜ
0735デフォルトの名無しさん
2010/12/29(水) 23:33:52ありえないよなぁ
0736726
2010/12/29(水) 23:58:44クラスモジュール、標準モジュールには何も入ってない。
Form1があるだけ。
丁寧なところはOn Error Resume Next。
勘弁して下さい。
0737デフォルトの名無しさん
2011/01/02(日) 23:46:40お気の毒。
0738デフォルトの名無しさん
2011/01/03(月) 03:42:03?Val(Join(Array("&H","D495","%")))
?Val(Join(Array("&H","D495","&")))
0739デフォルトの名無しさん
2011/01/06(木) 01:36:340740デフォルトの名無しさん
2011/01/09(日) 02:06:44If 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弱ええ
0741デフォルトの名無しさん
2011/01/09(日) 02:10:40Call Hoge(24)
でオーバーフローだよ
(´・ω・`)VB使えねええ
0742デフォルトの名無しさん
2011/01/09(日) 21:12:44これはVBの問題じゃないだろ…
0743デフォルトの名無しさん
2011/01/09(日) 22:44:06つ int
範囲が明確だ
複数使うか配列に格納して任意の桁を実装できるぞ!
さらに勝手の良い型を使いたいなら
つ boolean
これは超最強。
常にtrueかfalseの二値しか格納しないから、判定も簡単。
組み合わせることで、二進法表記が出来る!
理論上は無数の数を表現できるぞ!
0744デフォルトの名無しさん
2011/01/10(月) 03:17:310745デフォルトの名無しさん
2011/01/10(月) 09:18:460746デフォルトの名無しさん
2011/01/10(月) 10:18:420747デフォルトの名無しさん
2011/01/10(月) 11:41:430748デフォルトの名無しさん
2011/01/14(金) 21:10:120749デフォルトの名無しさん
2011/01/15(土) 04:38:3210進数で表示するの大変じゃない?
Int型配列にして1こあたり3桁分の10進数でやったほうがよくない?
0750デフォルトの名無しさん
2011/01/15(土) 04:41:430751デフォルトの名無しさん
2011/01/15(土) 12:04:51確かにval型配列でTFの文字列を一個づつ格納して並べたほうが見やすくていいな!
0752デフォルトの名無しさん
2011/01/18(火) 14:52:52つかStrPtrとかVarPtrとかObjPtrとか初めて知ったわ・・・
0753デフォルトの名無しさん
2011/01/22(土) 16:15:04RLong = 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
0754デフォルトの名無しさん
2011/01/23(日) 02:28:360755デフォルトの名無しさん
2011/01/23(日) 13:41:230756デフォルトの名無しさん
2011/01/24(月) 02:30:400757デフォルトの名無しさん
2011/01/24(月) 06:01:400758デフォルトの名無しさん
2011/01/24(月) 14:17:330759デフォルトの名無しさん
2011/01/25(火) 17:33:21会社の上司から「この部分のスイッチの色を変えたいんだけど」
って工場の監視ソフト(他社作成)のEXEファイルを渡されたんですが
EXEからリバースエンジニアリングしろって事ですか?
自宅パソコンにはVisual Studio入ってますが・・・・
無知ですいません
0760デフォルトの名無しさん
2011/01/25(火) 17:35:510761デフォルトの名無しさん
2011/01/25(火) 20:53:52>EXEからリバースエンジニアリングしろって事ですか?
それしかないね。無理。とは言わないけど、難しいと思う。
VB6でp-codeコンパイルしてあるとか、.NETならあるいは。
0762デフォルトの名無しさん
2011/01/25(火) 22:21:14これはすでにプログラミングではなく、
ハッキングの領域だから。
ハッキングの領域で言えば、難しいって
までもないレベルではあるんだけどなw
仕事でビジネスソフトを作っているプログラマでは
知らなくて良い知識が必要になる。
工場の関係の人ならソースコード=設計図がなければ
手のだし用がありませんとでも言えば納得するんじゃない?
0763デフォルトの名無しさん
2011/01/26(水) 08:01:56>>762
>>762
レスありがとうございます。
上司も全く無知らしく、先輩にも助太刀してもらって
説明してみます。
0764デフォルトの名無しさん
2011/01/26(水) 10:36:410765デフォルトの名無しさん
2011/01/26(水) 16:08:56>知らない事を知っていると考えるよりも知らない事は
>知らないと考える方が優れている
そして、764>>が無知でないという証明は未だされてない。
0766デフォルトの名無しさん
2011/01/26(水) 16:23:31それよりもレスアンカーすら満足につけられないやつにいわれたくない罠
0767デフォルトの名無しさん
2011/01/26(水) 16:31:05そうでなくても普通のプッシュボタンならDLLインジェクションか何かで背景ブラシを差し替えるだけで簡単に出来るかもしれない
0768デフォルトの名無しさん
2011/01/26(水) 16:34:370769デフォルトの名無しさん
2011/01/26(水) 18:37:10これがムチ
0770デフォルトの名無しさん
2011/01/27(木) 22:21:45サブプロシージャを使ったプログラムで、配列(ex:x(10))を計算し、返すものです。
ただし、variant形式にしないために、サブプロシージャの中で変数宣言しなければなりません(必須)。
宣言しなければ動くのですが、サブプロシージャ内で配列を宣言することができません。
『Byref引数の型が一致しません』と出てしまいます。どうやって宣言すればよいのでしょうか?
0771デフォルトの名無しさん
2011/01/27(木) 23:33:14なあ、真面目な話、その文章で人に内容が伝わると思う?
0772デフォルトの名無しさん
2011/01/28(金) 16:12:22Private 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
0773704
2011/01/29(土) 00:11:12ありがとうございます!
なるほど、a()で型宣言できるのか・・・
0774デフォルトの名無しさん
2011/01/29(土) 02:53:05Private 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ってなんだよ
0775デフォルトの名無しさん
2011/01/29(土) 20:38:48Let Value = 100
とか書かないじゃん
Value = 100
だし
Call Hoge(Value)
と書かずに
Hoge Value
って書くし
0776デフォルトの名無しさん
2011/01/29(土) 21:18:20たとえば
With New Class1
みたいなNewで使うやつとか
With GetClass1()
みたいなクラスへの参照返すやつとか
0777デフォルトの名無しさん
2011/01/29(土) 21:39:270778デフォルトの名無しさん
2011/01/29(土) 22:51:18letは使ったこと無い
0779デフォルトの名無しさん
2011/01/30(日) 10:50:25VBのインタプリタで速度に差が出るかは試していない
0780デフォルトの名無しさん
2011/01/30(日) 20:46:520781デフォルトの名無しさん
2011/01/31(月) 01:12:590782デフォルトの名無しさん
2011/01/31(月) 02:59:290783デフォルトの名無しさん
2011/01/31(月) 10:34:30これは8bit機時代のマイクロソフト系ベーシックインタプリタと同様の構造であり
伝統的に「インタープリタ」とマイクロソフト自身も呼んでいる
VB5以降はexe生成時にPコードを格納するか機械語のネィティブコードを生成するかを選択できる
前述のPコードコンパイラではなくこのexe生成機能の事を特に「コンパイラ」と呼ぶ
機械語生成されたexeもランタイムに依存しているので直接機械語に翻訳されていないと勘違いされる事も多い
exe生成時にlink.exeが内部で実行される時に一時的に生成されるobjを逆アセンブルすれば実際に機械語が生成されている事実を確認できる
0784デフォルトの名無しさん
2011/01/31(月) 11:09:11VB6買ったのは金ない学生時代・・・アカデミパックでLEしか買えないとか昔は貧乏だったなあ
0785デフォルトの名無しさん
2011/01/31(月) 11:10:440786デフォルトの名無しさん
2011/01/31(月) 11:57:510787デフォルトの名無しさん
2011/01/31(月) 21:52:48引数を( )で囲んでないとわかりにくい。
元はCとかJavaやってたんで。
0788デフォルトの名無しさん
2011/02/01(火) 00:05:00If a<3 Then
じゃなくて
If (a<3) Then
とか書いてるのか
CやJavaからだと = が使いにくそう
0789デフォルトの名無しさん
2011/02/01(火) 00:22:36そこは大丈夫。
引数だけは目に馴染まない。
0790デフォルトの名無しさん
2011/02/01(火) 21:51:33VBからテープデバイスに書き込みを行いたいのですが、
WEBでプログラムからテープデバイスへのアクセスについて調べたところ
ttp://www.winapi-database.com/File/Tape/
に書いている関数使ったらいけると思って試してみたのですが、
うまく動きませんでした。
上記ページを読んだ感じだと
1.書き込みを行いたいファイルのハンドルをCreateFile()で取得
2.↑で取得したハンドルに対してBackupRead()で読み込み
3.テープデバイスのハンドルをCreateFile()で取得
4.2で読み込んだファイルを3で取得したハンドルに対してBackupWrite()で書き込み
でいけるのかと思ったのですが、書き込みエラーが出るどころか、全くテープデバイスが動いた様子もなく終了します。
どうも引数の設定がどうとか言う以前に関数の使い方を間違えているのではと思います・・・
WEBで調べてもBackupReadはともかくBackupWriteは使っているコードすら全然見つかりません
VBに限らずCとかでも構いませんので、テープデバイスに対して書き込みや読み込みを
行った経験がある方、もしくは↑URLを見て使い方が分かる方が居ましたらサンプルコードや
関数の使い方の説明等、ご教示頂けたらありがたいです。
0791デフォルトの名無しさん
2011/02/07(月) 09:34:21現在、シリアルから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でも、質問に来るかも知れないのでよろ
0792デフォルトの名無しさん
2011/02/07(月) 11:45:23Label1.Caption = Label1.Caption & MSComm1.Input
end if
ってすればいいんじゃないの
0793デフォルトの名無しさん
2011/02/07(月) 13:39:290794デフォルトの名無しさん
2011/02/07(月) 15:35:45ありがとうございます。
やってみました・・・
なんか変わらない orz
私のRS232Cの設定が悪いのだと思います。
もう一度検討してみす。
0795デフォルトの名無しさん
2011/02/08(火) 10:30:41現在作成しているアプリケーションでは計測中にデータをバイナリファイルに追記していきます。
計測中にはそのデータファイルを操作されたくありません。
(移動、リネーム、削除など)
そこで検討中の案は、最初にデータファイルが作成されたときに「Binary Access Read」でファイルをOpenし、
計測終了時にCloseする、というものです。
計測中は「Binary Access Write」でOpenしてデータを追記していきます。
上記のやり方では何か問題はありそうでしょうか?
また、このような場合、どのような処理を行うのが一般的なのでしょうか?
ご教示下さいますようよろしくお願いいたします。
0796デフォルトの名無しさん
2011/02/08(火) 10:40:510797デフォルトの名無しさん
2011/02/08(火) 13:59:28とか
Open FileName$ For Binary Access Write Lock Read Write As #1
とか
は?
Openステートメントあんま使ったことないからよく知らんけど
0798デフォルトの名無しさん
2011/02/08(火) 18:15:02For j As Integer = 1 To 2
For i As Integer = 1 To 5
x += i
Next i
Next j
このとき、xは33になりますよね・・・?
基本的な質問で申し訳無いですお願いします。
0799デフォルトの名無しさん
2011/02/08(火) 18:16:16はじめからWriteモードで開いてたらあかんの?
ファイルロックが目的ならそれで良さそうな気がするけど。
0800デフォルトの名無しさん
2011/02/08(火) 18:20:241 + 2 + 3 + 4 + 5 +
1 + 2 + 3 + 4 + 5
= 30
0801デフォルトの名無しさん
2011/02/08(火) 18:25:22即レスありがとうございます。
理解できました。
0802デフォルトの名無しさん
2011/02/08(火) 18:48:21>>797
計測中にファイル内容を読み込むこともあるんで、Lock Readはできないんですよ。
>>799
Writeモードで開きっぱなしっていうのが抵抗があったもので…。
ファイルに何か不具合があって、プログラムを見直す時に、
「開いて書いてすぐ閉じる」ってなってた方が分かりやすいし、安心かなと。
自信がないんです…。
0803デフォルトの名無しさん
2011/02/08(火) 19:48:12>計測中にはそのデータファイルを操作されたくありません。
ってなれば、Writeモードで開いているしかないと思われ。
0804デフォルトの名無しさん
2011/02/08(火) 22:56:16で、exeが実行されるものとされないものがあるのですが、
無理やり実行させる方法はありませんか?
0805デフォルトの名無しさん
2011/02/08(火) 22:58:390806デフォルトの名無しさん
2011/02/09(水) 00:01:24プログラムが強制終了したりしなかったりとかってある?
落ちるって言われた所の現象が再現出来なくて困ってる。
フォームが表示された後に数秒してから一部のフォームが落ちたらしくて
もう一度やり直したらちゃんと動いたっぽい。
フォーム表示後すぐじゃないからformload時とは別で落ちてるって事なんかな?
formload時以外でやってる処理は1秒毎にタイマーでラベルのcaptionに時間セットしてる所ぐらい。
タイマーが張ってあるのが最初に起動するメニューで
その後色んなフォーム開きつつ、ずっとタイマーが動いてるから
これが悪いのかな?
0807デフォルトの名無しさん
2011/02/09(水) 00:32:100808デフォルトの名無しさん
2011/02/09(水) 07:20:040809デフォルトの名無しさん
2011/02/09(水) 08:59:14ありがとうございます。
Readモードでは操作される可能性があるということでしょうか?
0810デフォルトの名無しさん
2011/02/09(水) 17:18:430811デフォルトの名無しさん
2011/02/09(水) 18:03:37yes
0812デフォルトの名無しさん
2011/02/12(土) 08:13:19> ありがとうございます。
> Readモードでは操作される可能性があるということでしょうか?
Readモードにせよ、Writeモードにせよ、Lockしていない以上操作される可能性はあるだろう。
Lockするのが嫌なら、アプリケーション専用にユーザーアカウントを作成して、
他のユーザアカウントからは操作されないようにするんだな。
0813デフォルトの名無しさん
2011/02/19(土) 16:40:58とか
On Error Resume Next
とか
使ったら
End SubやExit Subの手前で On Error Goto 0 を入れたほうがいいの?
そういうコード見かけるからなんでだろうと思ってさ
参照型の変数もよくプロシージャの終わりのほう Set abc = Nothing とか見かけるし
なんで?C言語とかならともかくVBって自動開放とかじゃないの?
0814デフォルトの名無しさん
2011/02/19(土) 18:58:44On Error Resume Next はGoto 0 を入れる必要は無いと思うけど
どの箇所で起こり得るErrorかを、他の人がコードを見た時に、
元々書いた人の意図が伝わるんじゃないですかね。
GoTo hoge とかでも一緒。
個人的には、On Errorの後は当然のようにインデントするんだから
インデントの終わりの場所にもOn Errorはあるべしと思う。
Set abc = Nothing は、意味ないです。
場合によっては必要になる事もあります。
0815デフォルトの名無しさん
2011/02/19(土) 19:09:17ありがとうございます
0816デフォルトの名無しさん
2011/02/19(土) 19:12:500817デフォルトの名無しさん
2011/02/19(土) 19:20:51独学なんでVBを覚えるのに使った書物はベーマガだけだし
ちゃんとしたVBの入門本とかにはそういうこと記載されてんのかな
0818デフォルトの名無しさん
2011/02/19(土) 19:48:32.99あとは>>814が言ってる理由も大きい。
自分でそう書いてるのに、なぜ結論が「Goto 0 を入れる必要は無い」になるのかは
理解に苦しむ。
0819デフォルトの名無しさん
2011/02/19(土) 20:12:34.67>End SubやExit Subの手前で On Error Goto 0 を入れたほうがいいの?
0820デフォルトの名無しさん
2011/02/19(土) 20:28:56.79すぐに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解除したほうがいいだろうな。
0821デフォルトの名無しさん
2011/02/19(土) 23:44:14.40なんとなくlocalの方使うようにしてるけど・・・あんま違いないのかな
0822デフォルトの名無しさん
2011/02/20(日) 08:59:23.450823デフォルトの名無しさん
2011/02/20(日) 09:02:26.46on local error xx は quick basicとの互換で残ってるだけじゃなかったかな。
VBのエラー処理は全てローカル扱いになるからlocalは不要。
0824デフォルトの名無しさん
2011/02/20(日) 12:04:11.710825デフォルトの名無しさん
2011/02/21(月) 10:18:52.15GoTo 0がないと思考の流れが滞るので困る。
0826デフォルトの名無しさん
2011/03/01(火) 21:53:04.98VisualBasic6エラーコーディング
ttp://www.amazon.co.jp/dp/4894712237/
この方針でExcelVBAも書いてる
0827デフォルトの名無しさん
2011/03/01(火) 22:26:51.710828デフォルトの名無しさん
2011/03/01(火) 22:31:37.40結構古い本ですね
VBSCRIPTでも使える本ですか?
0829826
2011/03/02(水) 00:28:56.89ちょろっとVBScriptへの移植性の記述がある
おいらはまだ怖くて本にソースがあるライブラリ以外ではバリアント引数は使えてない
ただ、考え方とかエラー処理のノウハウは参考にできると思う
0830デフォルトの名無しさん
2011/03/02(水) 01:05:38.97むしろ新しいでしょw
しかし、VBのエラー処理で一冊本を書いちゃうって随分マニアックな人だな。
そんなネタがあるとも思えないけど。
0831デフォルトの名無しさん
2011/03/02(水) 01:15:41.46中古品7点¥ 11より
安すぐるwww
0832デフォルトの名無しさん
2011/03/02(水) 02:52:35.650833デフォルトの名無しさん
2011/03/02(水) 02:56:02.500834デフォルトの名無しさん
2011/03/02(水) 03:41:11.44エラー処理の本で抜ける兵がいるなんて、まだまだ世の中捨てたもんじゃないな
0835デフォルトの名無しさん
2011/03/02(水) 04:48:45.22多言語にも応用利く?
0836デフォルトの名無しさん
2011/03/02(水) 04:49:58.820837デフォルトの名無しさん
2011/03/02(水) 04:52:03.230838デフォルトの名無しさん
2011/03/02(水) 04:54:02.07要はGoto先のラベルのうまい使い方の本だった気が。
Continue代わりにも使えるしな。
0840デフォルトの名無しさん
2011/03/06(日) 01:56:20.940841デフォルトの名無しさん
2011/03/06(日) 03:07:30.320842デフォルトの名無しさん
2011/03/07(月) 23:25:56.55XPや2000上では問題無く動く
開発はXP上のVB6.0でやってて、Win98にはexeだけ持って行ってVB6.0のランタイム入れてる
エラーは、xlBook=xlApp.Workbooks.Open("ファイル名")のとこで出てるぽい
xlBookもxlAppもObject型で指定してるんだけど、型が違うってことはxlBookはObject型
じゃダメってことなんかな
それともExcelのバージョンが関係してるのか、Win98は2000で、XPと2000は2003なんだ
0843デフォルトの名無しさん
2011/03/08(火) 00:15:51.70こんなところに長々と文章打ち込む前にgoogle様にお伺いを立てた方が建設的よ。
確か割とありがちな「落とし穴」だったはず。
0844デフォルトの名無しさん
2011/03/08(火) 00:51:44.400845デフォルトの名無しさん
2011/03/08(火) 01:07:14.460846デフォルトの名無しさん
2011/03/08(火) 15:59:47.600847デフォルトの名無しさん
2011/03/08(火) 18:52:10.07遅いしやたら固まるし2000かXPに変えたいけど、古いPCだとメモリも少ないし入らんよな
0848デフォルトの名無しさん
2011/03/09(水) 20:53:37.11OSがXPでも一緒。Excel2000に存在しない関数とかいっぱいあるから。
0849デフォルトの名無しさん
2011/03/15(火) 09:56:53.85いま、Visualbasic6.0の参考書とVisualbasic2010 ExpressEditionを使ってVBの学習を始めたんですが、
本についているVisualbasic6.0のサンプルコードCR-ROMのファイルが全く読めません。
どうやって読み込み(orインポート)すればいいんでしょうか?
0850デフォルトの名無しさん
2011/03/15(火) 10:10:08.79VB6とそれ以後は互換性が大層なくなってた気がするが
0851デフォルトの名無しさん
2011/03/15(火) 10:12:14.390852デフォルトの名無しさん
2011/03/15(火) 10:31:24.05ググったら
ttp://social.msdn.microsoft.com/Forums/ja-JP/vbexpressja/thread/55e23135-0025-404c-abef-b56bbf8bcb7a
とかはあるな
というかググった?
0853デフォルトの名無しさん
2011/03/15(火) 11:49:34.73ありがとう。
ググってるんだけど、あまりに解らない事が多すぎて頭がパニックになってます;;
0854デフォルトの名無しさん
2011/03/15(火) 20:14:23.796.0と2010はほぼ互換性が無いので、その学習環境は
極めて効率の悪い環境と言えます。
書き込みの内容から、プログラミング全般に渡って初心者である事がうかがえますが、
VBとかMicrosoft系言語は、UI(画面の事ね)が簡単に出来過ぎるので、
わかってないのにわかった気になってしまうのが欠点で、そういう意味では
プログラミングの最初の学習題材としては向いていません。
Javaあたりでコマンド使ったプログラムから始める方がいいと思います。
0855デフォルトの名無しさん
2011/03/15(火) 22:06:35.69>>854
どさくさに紛れてMicrosoft系言語とか広げて批判するなや
0856デフォルトの名無しさん
2011/03/15(火) 23:36:32.56コマンドラインな言語は賛成するが、Javaってのは微妙。
0857デフォルトの名無しさん
2011/03/16(水) 00:12:22.13勉強するのが悪いわけないと思う。
OOPというと機能的には不満足ではあるが、VB6もクラス作っていけるからな。
ポリモーフィズムも使えるし。
0858デフォルトの名無しさん
2011/03/16(水) 23:47:09.36既に実践してる内容も多かったけど、他にも参考になった。
が…
On Error goto next
による、インラインエラートラップって、
それするぐらいなら、エラーにならないようにできるのにとも思った。
0859デフォルトの名無しさん
2011/03/17(木) 00:08:35.32On Error Resume Next?
ソースをエラー出さなくするのはいいとして、デバイスやコントロールがエラーを返す場合はどうする?
0860デフォルトの名無しさん
2011/03/17(木) 09:29:31.460861デフォルトの名無しさん
2011/03/17(木) 19:05:37.45そういう場合、インラインエラートラップでなんとかなる?
0862デフォルトの名無しさん
2011/03/23(水) 18:44:34.05まず、timeGetTime関数とNow関数の戻り値をそれぞれ記憶します。
仮にこの時の値が0と0:00:00だとします。
約一時間後、timeGetTime関数の戻り値が3,600,000になった時、Now関数の戻り値は1:00:00になるはずですが、
0:59:59や1:00:01になったりなどの誤差は生じることはありますか?
一時間後というのは例で、たとえば24時間後や1週間後でも、誤差が生じるまでの期間は問いません。
0863デフォルトの名無しさん
2011/03/23(水) 19:36:47.850864デフォルトの名無しさん
2011/03/23(水) 19:38:44.060865デフォルトの名無しさん
2011/03/23(水) 19:49:08.16一時間ってのは誰が判断するの?
0866864
2011/03/23(水) 22:55:39.23どちらも同じところから算出するから、理論的にズレるはずがないのか、
それとも別のところから算出するから、ズレる可能性は十分になるのか。
どうなんでしょうか?
0867デフォルトの名無しさん
2011/03/24(木) 00:00:51.66回路的に独立した別のクロックなはずだから。
NowとかはRTC。
timeGetTimeはたぶん結局のところCPUのクロックを分周して作ってる。
0868デフォルトの名無しさん
2011/03/24(木) 01:28:59.53http://msdn.microsoft.com/ja-jp/library/cc428795.aspx
これに書かれてる情報からじゃ分からんわな・・・
0869デフォルトの名無しさん
2011/03/24(木) 01:31:49.72timeGetTimeの戻り値そのまま使えないじゃんか
0870デフォルトの名無しさん
2011/03/24(木) 01:36:15.11Now関数 ・・・ システムの日付と時間
まったくイコール関係ないじゃんか
0871デフォルトの名無しさん
2011/03/24(木) 01:38:22.86Nowは今日の日付と現在時間を返す関数で
timeGetTimeとやらはWindowsが起動してからの経過時間
単純比較出来んだろ
0872デフォルトの名無しさん
2011/03/24(木) 01:39:43.380873デフォルトの名無しさん
2011/03/24(木) 01:42:02.65ぜんぜん違う
0874デフォルトの名無しさん
2011/03/24(木) 01:43:47.97http://msdn.microsoft.com/ja-jp/library/cc429827.aspx
GetTickCountはシステムの分解能の影響受けるとある
これ以上API談義はスレチになる
VBのNowとの誤差について彼は知りたいんだろう?
0875864
2011/03/24(木) 07:42:17.59マザーボード上に実装されている、計時専用のチップ。
他のマザーボード上のチップと違って、電源が切られている間も内蔵電池から電源供給を受けて動作している(電源が入っている間は外部電源から供給を受ける)。
OSは起動時にリアルタイムクロックから日時を取得し、その後はOS側で独自に計時する方式を採っている。
↑この「独自に計時する方式」はtimeGetTimeの計時する方式とは違うのでしょうか?
この方式が共通であれば、理論的には誤差はないはずですよね?
0876デフォルトの名無しさん
2011/03/24(木) 20:46:06.43どこからのコピペか知らないけど、HWでRTC持ってるのにわざわざそれと別のに
ソフトウェアで時刻をカウントしているとは思えない。
0877デフォルトの名無しさん
2011/03/25(金) 09:32:42.580878864
2011/03/25(金) 11:22:00.82http://e-words.jp/w/RTC.html
ググったら一番最初に出てきました。
0879デフォルトの名無しさん
2011/03/25(金) 14:35:57.730880デフォルトの名無しさん
2011/03/25(金) 14:36:38.640881デフォルトの名無しさん
2011/03/25(金) 19:42:17.08その文章には「OS」としか書いてないけど....
逆にどこにそんな間抜けな二重管理をしなきゃならん必然性があるのか聞いてみたいもんだ。
そもそも歴史的にPCのクロックは精度必ずしも高くないのに
0882デフォルトの名無しさん
2011/03/25(金) 20:43:45.240883デフォルトの名無しさん
2011/03/25(金) 20:47:49.82気色悪い。
0884デフォルトの名無しさん
2011/03/25(金) 20:50:38.020885デフォルトの名無しさん
2011/03/25(金) 23:23:12.790886デフォルトの名無しさん
2011/03/25(金) 23:31:31.24気色悪い。
0887デフォルトの名無しさん
2011/03/25(金) 23:42:03.61VirtualBoxなどでゲストOSを中断→再開した時、ゲストOSの時刻は(ホストOSの時刻ではなく)
中断した時の時刻になるはずだが、そんなことが起こるかどうかやってみたら?
0888デフォルトの名無しさん
2011/03/26(土) 00:25:43.320889デフォルトの名無しさん
2011/03/26(土) 10:45:55.020890デフォルトの名無しさん
2011/03/26(土) 19:04:14.11>>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関数の呼び出しを
完全に同じタイミングで呼び出せないからには、必ずズレが生じる可能性があります。
0891デフォルトの名無しさん
2011/03/26(土) 20:27:46.340892デフォルトの名無しさん
2011/03/26(土) 23:20:03.05Windows の日付および時刻の管理方法
ttp://support.microsoft.com/kb/232488/ja
基本的に、時刻はソフトウエアで管理され、1時間に1回 RTC で補正される。
RTCにアクセスするためにはコストがかかるのでこんな仕様になってる。
timeGetTime は、マルチメディアタイマー(HPET)と呼ばれる高精度の
タイマーを基にしている。
したがって、一致することは保証されない。
0893デフォルトの名無しさん
2011/03/26(土) 23:34:34.450894デフォルトの名無しさん
2011/03/26(土) 23:36:06.750895デフォルトの名無しさん
2011/03/26(土) 23:37:47.82しねばいいのに。
0896デフォルトの名無しさん
2011/03/28(月) 19:39:04.91家で学んでおくべき事とかあったら教えてください。
0897デフォルトの名無しさん
2011/03/28(月) 21:38:34.60VB6などを触っている暇があったら、JavaとCを勉強して下さい。
いまVB6の案件は非常に少ないです。
0898896
2011/03/29(火) 15:20:07.360899デフォルトの名無しさん
2011/03/29(火) 18:17:17.310900デフォルトの名無しさん
2011/03/29(火) 20:25:36.35取引先がVB6全盛ってんなら解らなくもないが。
地方うんぬんより弱小企業のほうがVB6率高いかも。おもに移行コスト的な面で。
0901デフォルトの名無しさん
2011/03/29(火) 23:05:07.560902デフォルトの名無しさん
2011/03/29(火) 23:38:32.320903デフォルトの名無しさん
2011/03/30(水) 00:18:31.53しかし、想定外の地震や津波は来ないという前提で使われている
0904デフォルトの名無しさん
2011/03/30(水) 20:33:47.600905デフォルトの名無しさん
2011/03/30(水) 23:40:19.51半角スペースは効かないのでしょうか?
0906デフォルトの名無しさん
2011/03/31(木) 04:47:19.92""を半角スペースに置き換えれよ。
0907デフォルトの名無しさん
2011/03/31(木) 19:48:49.27Valueって何の事?
0908デフォルトの名無しさん
2011/03/31(木) 23:06:54.440909デフォルトの名無しさん
2011/04/03(日) 01:16:24.52データの値の事だろ
データに必ずしも値があるとは限らない
0910デフォルトの名無しさん
2011/04/03(日) 11:01:18.39そのまま訳してるだけやんw
>半角スペースを含むデータをValueで配列に入れ
特に何か意味を含んでいると思ったが。
0911デフォルトの名無しさん
2011/04/03(日) 11:30:06.350912デフォルトの名無しさん
2011/04/03(日) 14:09:25.57>>905の言葉のアヤじゃない?
特に意味はないと思う
0913デフォルトの名無しさん
2011/04/04(月) 12:59:25.250914デフォルトの名無しさん
2011/04/05(火) 11:36:49.770915デフォルトの名無しさん
2011/04/16(土) 23:45:27.18は当然、0バイト
これを右クリックして、「プロパティ」→「概要」タブの、例えば「コメント」のところに
何か入力しても、ファイルサイズは0バイトのまま。
これは、「ストリームデータ」だか「サマリーデータ」だか何だか知らないけど
ファイルシステムの管理する部分に保存される
ここに書き込みたいのですが、
"Shell.Application"ではGetDetailsOfだけで、
SetDetailsOfというメソッドは存在しないので書き込みはできない
それで探してきたのが、
MSI.DLLにあるMsiSummaryInfo系のAPIなんですが、
0916デフォルトの名無しさん
2011/04/17(日) 00:00:54.44APIの宣言で、
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
としました。
0917デフォルトの名無しさん
2011/04/17(日) 00:01:43.70Dim 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が返ってしまい、正常に動作していません
何故だか判る人いますか?
0918デフォルトの名無しさん
2011/04/17(日) 00:23:48.39これで、タイトル、コメント、作成者とか色々と出てきます
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
0919デフォルトの名無しさん
2011/04/17(日) 03:08:28.94ttp://www.bigresource.com/VB-How-to-read-summary-of-image-file-Tdi8SsaLAO.html#ia7d3ULln4
0920デフォルトの名無しさん
2011/04/17(日) 03:33:55.28ttp://park7.wakwak.com/~efc21/cgi-bin/exqalounge.cgi?print+200801/08010028.txt
0921デフォルトの名無しさん
2011/04/17(日) 03:34:54.83ttp://homepage1.nifty.com/MADIA/vb/vb_bbs2/200701/200701_07010059.html
0922デフォルトの名無しさん
2011/04/17(日) 03:35:41.11IPropertySetStorage
0923デフォルトの名無しさん
2011/04/17(日) 03:49:17.79読むのはいいけど書く場合は、新規の書き込みはできないとか
そんなことが書いてあったのでスルーしてましたが、もう一回調べてみます
0924デフォルトの名無しさん
2011/04/17(日) 04:42:41.94う〜ん、難しい!
無理そうなので下記、力ずくでやる方法にします
どうもでした
解析した内容を書いておきます
"C:\test\test.jpg" に対して "C:\test\test.jpg" + ":" + Chr$(5) + "SummaryInformation"
という見えないファイルがあって、ここに概要情報が入っている
最初は存在しないが、概要タブから何か書き込むと作られる
先頭の48バイトはヘッダで内容は固定ぽい
それ以降がデータ部で数値なら4バイトLong型で格納してある
0030にデータ部の長さ
0034に項目数
0038から項目IDと格納位置へのオフセットが登録項目数だけ並んでいる
項目IDとはコメントなら6、タイトルなら2
オフセットが示す格納位置にはデータの型を示す数値、1Eなら文字列らしい
次に、文字列なら長さ、文字列という具合で入っている
0925デフォルトの名無しさん
2011/04/18(月) 09:45:37.08できるよ。
以上。
はい次の方。
0926デフォルトの名無しさん
2011/04/18(月) 10:33:10.68知りもしないくせに。
以上。
はい次の方。
0927デフォルトの名無しさん
2011/04/19(火) 12:40:13.600928デフォルトの名無しさん
2011/04/19(火) 12:51:41.53ググれ
0929デフォルトの名無しさん
2011/04/19(火) 18:45:55.96標準モジュールだけで作る
0930デフォルトの名無しさん
2011/04/19(火) 18:49:23.40標準EXEを選択します。
2)標準モジュールで「Sub Main」に実行する内容を記述します。
Public Sub Main()
End Sub
3)プロジェクト−Project1のプロパティ−スタートアップの設定で「Sub Main」を選択。
作業はこれだけです。結構簡単です。
0931デフォルトの名無しさん
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
0932デフォルトの名無しさん
2011/04/20(水) 16:30:21.71この本読んでて思ったんだけど
エラー対処コードを一々完璧に書く手法ってアジャイル(笑)な開発手法と真逆な事をやってるんだなぁ
まぁVB系はその方が生産性も高いしリスクも少ないのかなとは経験上思う事ではあるけど
0933デフォルトの名無しさん
2011/04/21(木) 22:25:38.880934デフォルトの名無しさん
2011/04/22(金) 01:05:30.750935デフォルトの名無しさん
2011/04/22(金) 10:34:14.25コンポーネントは100%ではないし、DBもAccessのバージョンによってはヤバそうだ。
と思った。
0936デフォルトの名無しさん
2011/04/22(金) 11:52:42.380937デフォルトの名無しさん
2011/04/22(金) 12:16:37.240938デフォルトの名無しさん
2011/04/22(金) 12:38:24.830939デフォルトの名無しさん
2011/04/22(金) 13:46:49.200940デフォルトの名無しさん
2011/04/22(金) 15:15:01.89今の時点で動いてるならコンデンサ以外はそうそう壊れはしないという
0941デフォルトの名無しさん
2011/04/22(金) 16:45:38.00.NETへの移行で互換性がないってことから
これからもずっとWindows上で動くようにサポートされるはずだよ
0942デフォルトの名無しさん
2011/04/22(金) 18:11:23.23仕事が増える事になるはず。サポート終わらせてくれていいよ。
0943デフォルトの名無しさん
2011/04/22(金) 18:30:16.440944デフォルトの名無しさん
2011/04/22(金) 21:55:24.710945デフォルトの名無しさん
2011/04/23(土) 01:59:53.04Private Sub Command1_Click()
With New Form2
.Show vbModal, Me
End With
0946デフォルトの名無しさん
2011/04/23(土) 02:00:17.260947デフォルトの名無しさん
2011/04/23(土) 07:50:22.40そのうちメモリ不足になるよね
それとなぜWithを使うのか不明
0948デフォルトの名無しさん
2011/04/23(土) 08:07:22.88VB6は参照カウンタ型GCだからメモリ管理は問題ないよ。
内容的には次と同じだね。
Dim hoge As New Form2
hoge.Show vbModal, Me
WithがFormのスコープのように見えてしまうのを
プラスとマイナスどちらに評価するかは知らんけど。
0949デフォルトの名無しさん
2011/04/23(土) 08:11:10.51内容的に、2行で書けるものを3行で書くのは問題だな。
0950デフォルトの名無しさん
2011/04/23(土) 11:33:21.52そうなんだ
>>945がなんでボタン押される都度、Form2をNewしてるか想像すると
たぶん、Form2では最後にVisible=Falseで消してるんだね
で、次にForm2をShowした時にLoadイベントが発生しないもんだから強制的にNewしてるに違いない
Form2をUnLoadしないで何回もLoadするのは、
メモリ管理上問題ないようにVBがしてくれるにしても、とても気持ち悪いす
0951デフォルトの名無しさん
2011/04/23(土) 14:24:30.94そういう時にコロンがあるんだよ。
なんでも一行にかける。
0952デフォルトの名無しさん
2011/04/23(土) 14:32:08.62> たぶん、Form2では最後にVisible=Falseで消してるんだね
> で、次にForm2をShowした時にLoadイベントが発生しないもんだから強制的にNewしてるに違いない
それはあなたの想像でしょう?
この文脈では、Form2をshow(load, unload)することはないよ。
showするのはForm2から作られたhogeインスタンス。
withを使っているから、実際には書かれてないけど。
0953デフォルトの名無しさん
2011/04/23(土) 14:38:26.57newとloadの区別が付いてないね。
0954デフォルトの名無しさん
2011/04/23(土) 15:12:18.92そう、想像なんだけど、
Form2は参照しただけでインスタンスが作成されるのに、なぜわざわNewしてるのかという点。
それはForm2を使い終わった後でUnLoadしてないから(想像)
そうすると次にボタンを押した時にNewがないとForm2は表示するけど実行させたいLoadイベントが発生しない
で、メモリ不足を危惧したけどVBはシングルタスクだから
UnLoadせずに、何回インスタンスを作成しようが新たにメモリは食わないと
0955デフォルトの名無しさん
2011/04/23(土) 15:16:35.67どこか間違ってた?
0956デフォルトの名無しさん
2011/04/23(土) 15:45:24.10>UnLoadせずに、何回インスタンスを作成しようが新たにメモリは食わないと
これは訂正
いくつでもインスタンスは作成されちゃうよ
で、振り出しに戻るけど
hoge.Show vbModal
で実行が戻って来るのは、hogeをUnLoadするかVisible=Falseした場合。
hogeを毎回Newしてるのはhoge.Visible=Falseにして戻ってくるからに違いない
なら、ボタンを押すごとにhogeの新たなインスタンスが作成されてメモリ不足になるだろう
(Newしなければ新たなインスタンスは作成されない)
0957デフォルトの名無しさん
2011/04/23(土) 15:51:27.64故意にhogeを複数出したいという意図なら問題ないや
0958デフォルトの名無しさん
2011/04/24(日) 04:03:56.38Newして別のForm2のインスタンスが欲しいとか?
0959デフォルトの名無しさん
2011/04/24(日) 06:44:57.56だからなんで決め付けるのさ?
Form2のインスタンス側でフォーム閉じたかForm2にあるボタンで
Unload meしているかもしれんだろ。というかそっちの方が自然。
vbModalなんだから、何度もForm2がつくられることはない。
(つくろうと思えば可能がだ、自然な作り方ではない)
だからメモリ不足にもならない。
new使ってるのは、Form2が閉じられたらメモリを解放したいからとか
ボタンをおすたびにForm2を完全に0から作りたいからだろ。
(initializeで何かの初期化をしたい)
それに複数インスタンスを生成することも可能。
使用するときに毎回newして要らなくなったら完全になくなるほうが
柔軟で自然で分かりやすいだろ
withを使う書き方が気持ち悪いが、書き方の問題だけでコード上は問題ない。
0960デフォルトの名無しさん
2011/04/24(日) 20:33:54.93と
Dim hoge As New Form2
同じって話じゃないの?
With Form2にしようがWith New Form2にしようが内部処理かわんないでしょ?
0961デフォルトの名無しさん
2011/04/24(日) 20:59:14.820962デフォルトの名無しさん
2011/04/24(日) 22:30:33.08> と
> 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 とも違う。
0963デフォルトの名無しさん
2011/04/24(日) 22:30:52.95なるかなあ。
VB6は暗黙の宣言みたいなの、フォームにはあったよね?
0964デフォルトの名無しさん
2011/04/24(日) 22:32:35.880965デフォルトの名無しさん
2011/04/24(日) 22:32:59.90Form2.show
とかしても、フォームが現れちゃったと思うんだ。
マイクロソフトはこの方法を推奨してたかもしれない。
けど、インスタンスの生成を明示的に行わない方法は個人的には嫌だ。
0966デフォルトの名無しさん
2011/04/24(日) 22:43:22.78Dim hoge As Form2 で宣言したあとに、Newしないって前提か?
>>962
明示的にNewしたのに既定のインスタンスが戻ることがあったような気がする
状況によっては、Dim hoge As New Form2 が同じものになることがあるぞ
>>963
既定のインスタンスとか呼ばれてるやつな
そして、既定のインスタンスはVBのバージョンによって動作が違う
1回目のNewしたときに既定のインスタンスが戻る時もあったりなかったり
0967966
2011/04/24(日) 22:55:22.40既定のインスタンスがあるのは間違いないが、動作周りの話はちょっと違うかも
0968デフォルトの名無しさん
2011/04/25(月) 02:03:27.82こう書いちゃうと、hoge を参照するたびに
If hoge Is Nothing Then
Set hoge = New Form2
End If
が実行されてしまう。
>>966
VB.NET でもそんなことあるわけネー
なんかコーディングミスしてるだろ。
0969デフォルトの名無しさん
2011/04/25(月) 07:56:06.61いつも思うんだけど
ラベルを書くときどーすんの?
ラベルがあっても1行で書ける?
0970デフォルトの名無しさん
2011/04/25(月) 12:20:51.77Perlは省略されまくっている上に同じ文でもいくつか書き方があるから何が書いてあるのかすぐに理解できない
0972デフォルトの名無しさん
2011/04/25(月) 13:04:54.120973デフォルトの名無しさん
2011/04/25(月) 15:49:12.840974デフォルトの名無しさん
2011/04/25(月) 19:46:01.93貼りつけたりするだけでそれなりに動作するものが出来てしまうから
OOPわかってない初心者でも取っつき易いんだけど
それのせいでわけのわからん動作がある。
逆にそれが初心者にOOPをわかりづらくしている。
ということで、インスタンスは明示的に。
0975デフォルトの名無しさん
2011/04/26(火) 19:50:12.760976デフォルトの名無しさん
2011/04/27(水) 01:17:11.24どなたか存じませんが、どういたしまして。
0977デフォルトの名無しさん
2011/04/27(水) 08:37:33.47たしか、Initializeあたりに、
If Me Is Form2 Then
Err.Raise 適当なの
End If
ってすればForm2変数を使えなくできたはず。
(Isで参照しただけではForm2はNewされなかったはず)
逆にNotを付ければ、Form2変数だけ使えるようになる。
これ入れておくといいかもね。
0978デフォルトの名無しさん
2011/04/27(水) 17:06:02.930979デフォルトの名無しさん
2011/04/27(水) 20:11:48.130980デフォルトの名無しさん
2011/04/28(木) 01:40:34.56参照しただけで New されるぞ。
デフォルトのインスタンスを禁止するなら
Private Sub Form_Initialize()
Set Form2 = Nothing
End Sub
とする。
0981デフォルトの名無しさん
2011/04/28(木) 21:55:20.37Scripting.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")
フツーは、こうなのかな?
0982デフォルトの名無しさん
2011/04/28(木) 23:46:09.280983デフォルトの名無しさん
2011/04/29(金) 03:00:48.46されないよ。
Newされるのは、Formのプロパティを触ったとき。
0984デフォルトの名無しさん
2011/04/29(金) 14:42:10.59もっと、頭の良い人の居る所で質問しなおします。
何の意味もないプライドを傷つける様な事をしてしまってスミマセンでした。
でわ、誰も聞いてない罵詈雑言をお好きなだけ書き込むという意味の無い事を楽しんでください。ぺこ <(_ _)>
0985デフォルトの名無しさん
2011/04/29(金) 16:47:48.16>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つ作るっていうなら、なんでそんな事するのかわからない。
0986デフォルトの名無しさん
2011/04/29(金) 22:03:35.220987デフォルトの名無しさん
2011/04/29(金) 22:53:39.57SpringみたいなDIコンテナ…無理だろ
0988デフォルトの名無しさん
2011/04/29(金) 23:48:18.76なんで?
DIの肝は考え方であって、
実装技術はただのファクトリーパターンだと思うけど。
キー(文字列)があって対応表(XML)から引っ張ってきて
対応したクラスをつくるだけ。
0989デフォルトの名無しさん
2011/04/30(土) 01:01:07.22↓これで合ってる?今度はSpringというものをググって、XMLとかファクトリーパターンというのもググる
DIコンテナ【Dependency Injection Container】 - 仕事に役立つプログラミング・キーワード:ITpro
ttp://itpro.nikkeibp.co.jp/article/COLUMN/20060628/241982/
0990デフォルトの名無しさん
2011/04/30(土) 01:02:14.550991デフォルトの名無しさん
2011/04/30(土) 01:04:52.920992デフォルトの名無しさん
2011/04/30(土) 01:15:00.09正直、この説明ってどうなの?w
ただの多態をなぜもったいぶってDIなんて呼ぶのかこれじゃさっぱり分からん
0993デフォルトの名無しさん
2011/04/30(土) 01:17:33.90@IT:Spring Frameworkで理解するDI(1)
http://www.atmarkit.co.jp/fjava/rensai3/springdi01/springdi01_1.html
0994デフォルトの名無しさん
2011/04/30(土) 01:20:02.150995デフォルトの名無しさん
2011/04/30(土) 01:21:07.350996デフォルトの名無しさん
2011/04/30(土) 01:25:52.27インターフェースならVB6に普通にあるじゃん。
0997デフォルトの名無しさん
2011/04/30(土) 01:32:40.33いや違う。できなくはないだろうけど、コンパイルしたあとで
アプリケーションの動きを変えるのが目的ではない。
モジュール(クラス)間の依存度を少なくするのが目的。
モジュール間の依存度が少ないから簡単にテスト用の
クラスに入れ替え可能になる。
自分で頑張ってそういう仕組みを作ってもいいけど、
他の人が用意してくれたのがある。それがJavaならSpring
0998デフォルトの名無しさん
2011/04/30(土) 01:35:25.46だから、それならただの多態以上の物ではないでしょ。
0999デフォルトの名無しさん
2011/04/30(土) 01:38:18.37多態性は実装技術。DIは(実装技術を使って)つくられた製品。
比べるものが違う。
1000デフォルトの名無しさん
2011/04/30(土) 01:41:46.46だから、依存性の排除はインターフェイスを使えば自動的についてくる機能に過ぎず、
DIとやらによって初めて得られるものでは全然ない。
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。