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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2010/06/01(火) 22:06:37
ここは Visual Basic 〜6.0 の質問スレです。
質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、
「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

あとは正しいと思い込んでるアドレスかポートが実は間違ってるとか
0027デフォルトの名無しさん2010/06/11(金) 14:05:57
>>26
SQLマシンは自作マシン、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:51
おい、そのサーバにつながらないマシンからIPアドレス指定でping通るのか?
0030デフォルトの名無しさん2010/06/11(金) 14:11:06
pingやポートスキャンは通るのかな
MySQLの層の話じゃなさそうな気はする
0031デフォルトの名無しさん2010/06/11(金) 14:11:23
>>28
ちょいと覗いてみます

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

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

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





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

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

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

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



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

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

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

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

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


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

Dim Hoge As New ClassHuga

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

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



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

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

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

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

不可能。

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

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

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

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

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

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

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

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

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

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

これまで見たプログラム言語で1番良かったのは、潮田氏のフリーソフト
「N88互換BASIC for Windows95」 だな。・・ for windows95 と書いてあっても、
実際は XP でも問題なく使える(多分、vista や 7 でも)。プログラム自体では
16色しか使えないけど、windows の画面で使えるので そのままグラフィック
ソフトに移せば、1677万色を使っての色変更も簡単に出来る。
当分は、VBを勉強しながら、「N88互換BASIC」 を使って行こうと思っているよ。
      
0118デフォルトの名無しさん2010/06/29(火) 21:03:59
あきらめろよ。
0119デフォルトの名無しさん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:04
コピペ君って馬鹿だな、まで読んだ。
0121デフォルトの名無しさん2010/06/29(火) 21:48:31
互換といったらFBASICとかいうの無かったっけ?昔ベーマガで見たような気がする
0122デフォルトの名無しさん2010/06/29(火) 21:56:13
互換といったらActiveBASICだろ!
他のなんてクズだ!ゴミだ!クソだ!
0123デフォルトの名無しさん2010/06/30(水) 10:59:26
>>121
F-BASIC は昔のF-BASICを昔のFM系マシンな画面で使える上に、Windowsライクなソフトも組める、わりとおもしろ言語。
ttp://www.fmworld.net/product/soft/fbasic/
0124デフォルトの名無しさん2010/06/30(水) 23:52:29
試用版じゃなくてVB.NET 2008 Express Editionだ。
ttp://www.microsoft.com/japan/msdn/vstudio/2008/product/express/
0125デフォルトの名無しさん2010/07/01(木) 11:20:25
んで、スレ違いなわけだけども
0126デフォルトの名無しさん2010/07/01(木) 19:47:50
>>123
F-BASIC はWindows XP 以降は使えないから、問題外だよ。
  
  
0127デフォルトの名無しさん2010/07/01(木) 20:13:05
>>122
ActiveBasic の公式ページって呼び出しても出て来ないよ。
もう閉鎖されたのかな?
結局、普及しなかったんじゃないの?
  
0128デフォルトの名無しさん2010/07/01(木) 20:29:37
勝手に閉鎖とか言ってんじゃねえよ!ちゃんとwikiとかいっぱいあるんだよ!
しらねえで言うな!
0129デフォルトの名無しさん2010/07/01(木) 20:38:36
>>128

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Public 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
ggrks
話はそれからだ
0198デフォルトの名無しさん2010/08/14(土) 00:45:13
>195
Call .Line((x1,y1)-(x2,y2))
0199デフォルトの名無しさん2010/08/14(土) 00:46:05
ごめんうそついた
0200デフォルトの名無しさん2010/08/14(土) 02:05:43
>>194
With使う時はオブジェクトブラウザにある書式でやればおk
Sub Line(Flags As Integer, X1 As Single, Y1 As Single, X2 As Single, Y2 As Single, Color As Long)
↓
With Picture1
Call .Line(Flags,X1,Y1,X2,Y2,Color)
End With
0201デフォルトの名無しさん2010/08/14(土) 02:13:52
Flagsは
かなり面白いよ

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

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

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

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

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

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

この本かって、Amazonで100万円ぐらいで売れるんじゃねーの?
Amazonでついてる2千万という値段からすれば、格安だろ。
儲けられるぜ
0208デフォルトの名無しさん2010/08/15(日) 10:43:18
>>206
アマゾンは中古本の査定なんてしない。
っていうか、君質問者自身じゃないのか
0209デフォルトの名無しさん2010/08/15(日) 12:27:23
なんで今更VB6?
0210デフォルトの名無しさん2010/08/16(月) 03:30:14
>>209
VB6のシンプルな文法が好きって人も多いかも
(VBAのほうが良いのだろうがコンパイラがない)
.NETのVBは難し杉
まぁ一部文法以外はほとんど使う必要などないのだろうが
新しい文法を使ってみたいというのが人情というもので無理に
使う奴が必ず居てそれを読まされたりして苦労する
0211デフォルトの名無しさん2010/08/16(月) 06:37:08
そういう意味じゃなく、既にディスコンになって久しく、サポートも終了、入手困難、この先使い潰しの利かない
VBを勉強してどうなるのか、って話。参考書が必要なレベルなら素直にC#にするべきだと思うがな。
VBはやりたいことが素直にできないことが多い、無駄の多い言語環境だと思うよ。意味不明な仕様も多いし。
0212デフォルトの名無しさん2010/08/16(月) 06:48:46
単に、そういう仕事があるから「やれ」って言われただけじゃね?
0213デフォルトの名無しさん2010/08/16(月) 17:23:30
VB6以前で作られたソフトウェアのメンテナンス?まだ使ってる企業あるの?
0214デフォルトの名無しさん2010/08/16(月) 20:12:13
あるよ。システム入れたら、15年、20年使う企業もあるし、
2000年当時、VB6は現役だったしね。
0215デフォルトの名無しさん2010/08/16(月) 21:43:22
まだVB4ですが・・・
0216デフォルトの名無しさん2010/08/17(火) 09:01:16
>>213
うちは .NET に移行してるけど
まだ VB5 のバージョン使ってるお客さんも居るよー
大人の事情で面倒見ないとイカンのよね
0217デフォルトの名無しさん2010/08/17(火) 09:53:52
VB.NETはC#以上に「何でもあり」な言語だからなw
その点は十分に注意しなければならないが
0218デフォルトの名無しさん2010/08/17(火) 14:33:47
は?
0219デフォルトの名無しさん2010/08/17(火) 15:03:01
http://wiki.shos.info/index.php?%A1%DA.NET%A1%DBVB.NET%20%B5%DA%A4%D3%20C%A2%F4%20%A4%CE%CE%C9%A4%A4%C5%C0%A1%A6%B0%AD%A4%A4%C5%C0
0220デフォルトの名無しさん2010/08/17(火) 15:06:52
>>207
添付CDがないからその価格
添付CD付きだと最早3000万円らしい
0221デフォルトの名無しさん2010/08/17(火) 17:24:23
よほど重要なファイルが添付
CDにあるんだろうな
0222デフォルトの名無しさん2010/08/18(水) 00:04:07
未だにN88BASICが稼動している会社があるぐらいだから
VB6は余裕で現役
0223デフォルトの名無しさん2010/08/18(水) 00:37:30
ついに突破!
37,887,200
0224デフォルトの名無しさん2010/08/18(水) 21:14:47
触るな汚れる
0225デフォルトの名無しさん2010/08/18(水) 23:35:27
>>222
うちの大学でも実験用装置の動作プログラムがN88BASICだった・・・
古いプログラムで新しいの作れる人いないからずっと使い続けてるって言ってたな・・・
0226デフォルトの名無しさん2010/08/20(金) 00:21:43
>>204
8千万円!
幾ら何でもなんかありそう
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
バージョン名を明記の上でWindows板で再質問
>>204でわかるようにVBスレで質問すると
高くつくよw
0229デフォルトの名無しさん2010/08/20(金) 14:23:47
>>227
open "\\192.168.0.2\c$\data\hoge.dat" for output as #1
02302272010/08/20(金) 14:29:19
>228,229
ありがとうございました。
0231デフォルトの名無しさん2010/08/20(金) 14:31:48
ネットワークドライブはネットワークドライブにマ
ウントしてアクセスするのがマナー
(IPアドレス直書きはできてもしないで澄むのならし
ないようにしたいもの)
0232デフォルトの名無しさん2010/08/20(金) 16:25:06
>>229
こんなこと出来るのか・・・知らんかったわ
0233デフォルトの名無しさん2010/08/20(金) 19:52:56
そんなマナーないよ。
0234デフォルトの名無しさん2010/08/20(金) 20:27:37
>>231 マナーじゃなくてセオリーね
¥¥IP-addrで識別してくれるかはネットワーク構成に依存だったような
記憶。
0235デフォルトの名無しさん2010/08/20(金) 20:29:44
ソース出せよ
適当なこといいすぎ
0236デフォルトの名無しさん2010/08/20(金) 20:30:07
そんな依存もないよ。

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

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

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

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


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

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



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


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

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


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

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

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

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



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


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

それは分かった
それで結論は?何が言いたいのか分からないんだけど。主張は何?
0269デフォルトの名無しさん2010/08/21(土) 16:21:55
うずまきナルトは下忍だけど木の葉で一番強いんじゃなかったっけ?
0270デフォルトの名無しさん2010/08/21(土) 16:22:43
下忍のナルトさんが暁のメンバーを何人か倒してたよな
0271デフォルトの名無しさん2010/08/21(土) 16:23:35
忍者Perl ◆M5ZWRnXOj6 - Google 検索
http://www.google.co.jp/search?q=%E5%BF%8D%E8%80%85Perl+%E2%97%86M5ZWRnXOj6
0272デフォルトの名無しさん2010/08/21(土) 20:53:51
Perlやってる自宅警備員、か。
0273デフォルトの名無しさん2010/08/21(土) 23:23:52
このスレはいつもこの程度の話題で盛り上がるよね
0274Perl忍者仙人モード ◆M5ZWRnXOj6 2010/08/22(日) 20:27:06
この程度ってほざいてる時点で、笑いにクオリティ求めてる
お笑いブームに便乗したチンパンジーニアスですね。









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

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

君の言動そのものですよ


大人の対応=無視

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

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

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

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


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

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




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

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

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

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

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

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

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

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

Call test(hoges)
End Sub

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

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

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

↓

Dim hoges(4) As IHoge

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

>>313

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

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

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

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

korekusyon.Add hoge1

For Each v In korekusyon

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

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

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



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

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

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

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

って、

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

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

Dim o As Control
For Each o In Me.Controls
 If o.GetType Is GetType(TextBox) Then
  o.Enabled = False
 End If
Next
0348デフォルトの名無しさん2010/09/17(金) 16:00:29
3行目を
If TypeName(o) = "TextBox" Then
か
If TypeOf o Is TextBox Then
とか?
0349デフォルトの名無しさん2010/09/17(金) 16:12:11
>>348
ありがとうございます。できました。
0350デフォルトの名無しさん2010/09/20(月) 10:09:01
VB6.0のDTPickerについて教えて下さい。

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

・年入力→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:26
そーゆーのは無理。やりたければ、keybd_eventなりSendInputなりで、
TAB押下をエミュレート。
0353デフォルトの名無しさん2010/09/20(月) 14:58:18
>>352
回答ありがとうございます。
そちらの方法でやってみますm(__)m
0354デフォルトの名無しさん2010/09/24(金) 18:54:42
Collectionを空にするときって
Dim c As New Collection
というコレクションとして

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

と

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

とどういう違いあるの?
0355デフォルトの名無しさん2010/09/24(金) 22:11:23
前者は既存のインスタンス内のitemを1つずつ除去
後者は新しくインスタンスを生成
0356デフォルトの名無しさん2010/09/25(土) 00:42:27
As New
ってアリなの?
なんかその変数にアクセスした段階で勝手にインスタンス作ってIs Nothingでチェックの意味がないとかなんとかどっかで見たような
0357デフォルトの名無しさん2010/09/25(土) 01:10:08
ttp://www.atmarkit.co.jp/fdotnet/vb6tonet/vb6tonet09/vb6tonet09_01.html

As New って↑これのことか?
0358デフォルトの名無しさん2010/09/25(土) 01:12:46
ttp://blogs.wankuma.com/ognac/archive/2006/11/24/46934.aspx

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

>>376
ワレワレハ(略

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

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

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

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

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

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

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

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

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

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

速い i & ""

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

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

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

StrA & StrB & StrCと3つなら上記処理をこう繰り返す→ (StrA & StrB) & StrC
Midステートメントが速い理由は入力先に対して直接処理するからだと思うお(4,5が不要)
04154102010/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:42
何も指定せずFormat(i)を・・・CStr(i)と同じように扱ってやってください・・・
Rightで切りだすんでしょ?Str(i)とFormat(i)
0417デフォルトの名無しさん2010/09/30(木) 11:25:56
>>416
自分でやりなさい
0418デフォルトの名無しさん2010/09/30(木) 11:37:02
最近のスペックのパソコン上でやるなら些細な差だけど
低スペックのオンボロパソコンとかでやるなら重要な差になる
のかな?
0419デフォルトの名無しさん2010/09/30(木) 12:23:55
俺のCPU100MHzメモリ16MBの糞PCの出番か
0420デフォルトの名無しさん2010/09/30(木) 12:37:02
VB6で作ったシステム使い続けてる企業はパソコン買い換える予算も無いのか?
0421デフォルトの名無しさん2010/09/30(木) 12:52:28
>>420
パソコンだけならいいんだけどな。
仕様書のこってたらいいんだけどな。
担当が今でも居ればいいんだけどな。
現状動いてるシステムの予算が楽に取れるといいんだけどな。
0422デフォルトの名無しさん2010/09/30(木) 12:57:42
Xpはいよいよサポートがヤバくなってきてるのに
オンボロパソコンが現役の企業が多いって
政府は何やってんだ?
ここに大きな需要とかあるだろ
この分野で経済対策すりゃあええんでないのか?
企業のオンボロパソコンからの買い替えに助成金とか出せばいいのに
エコカーなんかよりもマシだろ
0423デフォルトの名無しさん2010/09/30(木) 12:58:44
そんなことこのスレで言ってもなあ
0424デフォルトの名無しさん2010/09/30(木) 12:59:31
古い言語が一掃されるのはありがたい・・・か?
04254102010/09/30(木) 13:23:39
>>416 そういう意味だとは思わなかったお…
でもCStrの替わりにFormat? 単にオーバーヘッド増えるだけじゃ?と思ったけど
先入観はいかん!と無心で追試したら予定通りかなり遅くてガッカリしたおw (i&""とドッコイドッコイ)
s=Format(i) 10.957sec (Result="33000000" Len=8)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

Hoge 123, a, b, c

Debug.Print a, b, c

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Dim Output As clsTEST

Set Output = New clsTEST

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

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

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

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

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

■DLL側
Public Function DLL_test (Output As Object)

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

0540デフォルトの名無しさん2010/10/09(土) 14:09:09
なにがしたいの?
0541デフォルトの名無しさん2010/10/09(土) 20:53:07
>>533
実際問題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:04
おそまつ君のイヤミの一人称で出来なかったっけ
0544デフォルトの名無しさん2010/10/10(日) 15:22:08
>>542
それだと、グローバル変数が引数に渡され
引数に値がセットされ、VB6のデフォは参照渡しなので
グローバル変数に値がセットされる

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Function processCheck( pName )
processCheck = False

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

Dim colProc
Set colProc = objPWMI.ExecQuery("Select * from Win32_Process WHERE Name='" & pName & "'")
If colProc.Count > 0 Then processCheck = True
End Function
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
>>576
それ間違えてね?
RunDll32ではSetSupendStateをうまく呼び出せない
このAPIを呼べたとしても、引数が渡せないので自動復帰不能になっちゃうよ

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

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

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

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

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

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

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

Open "filename" For Append as #1

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

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

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

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

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

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


g = p
If k Then
 g = g Or &H80000000&
End If
0602デフォルトの名無しさん2010/10/29(金) 01:14:26
なんという意味のないコードだ
0603デフォルトの名無しさん2010/10/29(金) 01:15:49
× &H80000000&
○ &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:11
すみません、ちょっとお聞きしたいのですが、
visual basic 2010 で5.0 のファイルを扱う事はできないのでしょうか。
拡張子が .vbp(5.0?) .vbproj (2010) と違うようで、拡張子を変えて 2010 で開くと
『ルートレベルのデータだ無効です』と出ます。

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

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

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

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

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

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

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

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


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

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

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

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

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

機会があったら読んでみるといいよ。
0633デフォルトの名無しさん2010/11/02(火) 22:41:53
今からVB覚えてどうするのマジで。
0634デフォルトの名無しさん2010/11/02(火) 22:43:07
そういうツッコミはノーサンキュー。
0635デフォルトの名無しさん2010/11/02(火) 22:48:17
突っ込みっていうか、端的に時間の無駄だと思うけど。
同じ努力ならC#なりVB.NETなりに対して払った方がずっと潰しが利く。
もちろん誰が何しようと勝手だけども。
0636デフォルトの名無しさん2010/11/02(火) 22:52:19
そうせざるを得ない状況がある、ってくらい、想像できないの? 幸せだねぇ。
0637デフォルトの名無しさん2010/11/02(火) 23:05:19
何だよその痛々しい反応。
語るに落ちてるな。
0638デフォルトの名無しさん2010/11/02(火) 23:08:20
ほんと、痛々しい。
0639デフォルトの名無しさん2010/11/02(火) 23:09:55
どうすんのと言われても、俺の場合はVB6が趣味だからなぁ。
あと誰が何しようと勝手とか最後に逃げの言葉吐くならはじめから黙ってろ。
0640デフォルトの名無しさん2010/11/02(火) 23:17:40
べつにVB6しかできないわけじゃないしな・・・
どうもしないよ
0641デフォルトの名無しさん2010/11/02(火) 23:34:43
VB「すらも」できないかわいそうな子なんだろう・・・
0642デフォルトの名無しさん2010/11/03(水) 01:13:02
今から古いVB覚える
就職した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
>>635
つーかなんでお前はこのスレにいるんだ。端的に時間の無駄なんじゃないか?
同じ2chにレスするならC#なりVB.NETなりのスレ見た方がずっと潰しが利くはずだろ?
あぁ、もちろん誰が何しようと勝手なわけか
0645デフォルトの名無しさん2010/11/03(水) 10:20:47
わんくまの人がブログで「VB6を相対的に評価する人は実はVB6を使いこなせてない人である」
という逆説を紹介してたけど、本当あの記事は正しいな。
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
>>647
それを俺に言うなよw
わざわざここに批判書いて行くなら、ついでに建設的誘導をして欲しいだけ
まぁ出来ると思ってないけど
0650デフォルトの名無しさん2010/11/03(水) 21:11:17
時代からして仕方がないが、UNICODEをまともにサポートしてないからもうダサい
0651デフォルトの名無しさん2010/11/03(水) 21:23:29
内部でUnicode使ってる、ってのがさらに悲しいね。
0652デフォルトの名無しさん2010/11/04(木) 09:58:33
Short配列で何の問題もなくUnicodeを扱うことができるのでC/C++と状況は大差ない
これで動的コード生成無しに単体で__cdecl呼び出しさえ出来れば完璧だったのだが
0653デフォルトの名無しさん2010/11/04(木) 16:15:08
Windows7で「wininet.dll」の「InternetDial」API関数を使用し
ダイヤルアップ接続のダイアログを出すと
「接続先」にVPN接続のエントリーだけが表示されません。
VistaやXPではこの様な症状はなかったのですが何が原因でしょうか?

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

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

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

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

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

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

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

Public Shared Sub PowerState()

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

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

MsgBox(Pw)

End Sub


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

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

あーーー。

VB6まででした。

スレチ ゴメン。

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

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

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

で、そもそもでvbsからパスの掛かったExcelを開くとパスワードダイアログ入力で失敗する
現状はexcel.exe /r "hoge.xls"で呼び出してる
0664デフォルトの名無しさん2010/11/09(火) 22:35:00
よくわからんけど、VBSじゃAPIは使えないので、
APIを使える言語と組み合わせるしかないでしょ。
0665デフォルトの名無しさん2010/11/09(火) 23:36:12
どっかで見たと思ったらExcelのあれか
誘導されたんだな、ガンガレ
0666デフォルトの名無しさん2010/11/10(水) 00:40:04
自分のパスワードを自分で解除するってパスワード掛ける意味あるのかw
意味不明過ぎる
06676602010/11/10(水) 08:22:44
>>664
やっぱ無理なのかなぁできそうなんだけどなぁ
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:39
MSCommでポートが無い時は終了する、という処理を作っているのですが

On Error Resume Next

MSComm1.CommPort = 5
MSComm1.PortOpen = True

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

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

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


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

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

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

にしておいて、

Application.EnableEvents = False

開いてTrueにする

にすりゃわざわざフォーカスだのなんだのしなくてよかろ
0673デフォルトの名無しさん2010/11/12(金) 12:47:54
>>671
プロセス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
>>671
ググってみた
WMIでポートが有るか調べるってことでいいのかしら…やってみるっす。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

会社の偉いさんから

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

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

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

まず直す作業から入ったが大変だった。
0727デフォルトの名無しさん2010/12/28(火) 19:02:23
インデントだけなら直すのは難しくないんじゃ・・・とも思ったけど
そうでもないか
0728デフォルトの名無しさん2010/12/28(火) 19:34:00
大変だな。・・・
0729デフォルトの名無しさん2010/12/28(火) 20:43:51
>>727
コードの整形ツールくらいどっかに転がってそうだけど、ないのかなあ?
探したことないけどw
0730デフォルトの名無しさん2010/12/28(火) 21:12:40
1行づつ読み込んで改行食らわしながら張ってけば整形してくれるだろう
0731デフォルトの名無しさん2010/12/29(水) 00:07:23
インデント修正なんて正規表現で直ぐ直せるだろ
0732デフォルトの名無しさん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
まあインデントを直さないといけないっていうのが
ありえないよなぁ
07367262010/12/29(水) 23:58:44
データアクセスもビジネスロジックも全部イベントハンドラに入ってる。
クラスモジュール、標準モジュールには何も入ってない。
Form1があるだけ。
丁寧なところはOn Error Resume Next。
勘弁して下さい。
0737デフォルトの名無しさん2011/01/02(日) 23:46:40
>>736
お気の毒。
0738デフォルトの名無しさん2011/01/03(月) 03:42:03

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

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

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

つ int


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


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

つ boolean


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

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

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

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

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

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

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

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

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

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

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

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

レスありがとうございます。
上司も全く無知らしく、先輩にも助太刀してもらって
説明してみます。
0764デフォルトの名無しさん2011/01/26(水) 10:36:41
その上司を無知と言うのかね、君が。
0765デフォルトの名無しさん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:37
VBのフォームってダイアログリソースじゃなくね?
0769デフォルトの名無しさん2011/01/26(水) 18:37:10
766
これがムチ
0770デフォルトの名無しさん2011/01/27(木) 22:21:45
VBAのプログラミングの質問です。
サブプロシージャを使ったプログラムで、配列(ex:x(10))を計算し、返すものです。
ただし、variant形式にしないために、サブプロシージャの中で変数宣言しなければなりません(必須)。
宣言しなければ動くのですが、サブプロシージャ内で配列を宣言することができません。
『Byref引数の型が一致しません』と出てしまいます。どうやって宣言すればよいのでしょうか?
0771デフォルトの名無しさん2011/01/27(木) 23:33:14
>>770
なあ、真面目な話、その文章で人に内容が伝わると思う?
0772デフォルトの名無しさん2011/01/28(金) 16:12:22
こういうことかな
Private Sub Command1_Click()

Dim a(10) As Integer

a(5) = 5

MsgBox hoge(a)

End Sub

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

hoge = a(5)

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

End Sub

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

End SubやExit Subの手前で On Error Goto 0 を入れたほうがいいの?
そういうコード見かけるからなんでだろうと思ってさ
参照型の変数もよくプロシージャの終わりのほう Set abc = Nothing とか見かけるし
なんで?C言語とかならともかくVBって自動開放とかじゃないの?
0814デフォルトの名無しさん2011/02/19(土) 18:58:44
>>813
On 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:50
むしろGoto 0書かなくてもいいって感覚が理解できない。
0817デフォルトの名無しさん2011/02/19(土) 19:20:51
MSDNにはGoto 0を書かなくてもプロシージャの終わりにエラー処理ルーチンが無効になるって書いてあるからさ
独学なんでVBを覚えるのに使った書物はベーマガだけだし
ちゃんとしたVBの入門本とかにはそういうこと記載されてんのかな
0818デフォルトの名無しさん2011/02/19(土) 19:48:32.99
だから、プロシージャの終わりまでエラーが検出できないのは問題。
あとは>>814が言ってる理由も大きい。

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

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

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

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

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

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

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

中古品7点¥ 11より

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

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

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

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

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

エラーは、xlBook=xlApp.Workbooks.Open("ファイル名")のとこで出てるぽい
xlBookもxlAppもObject型で指定してるんだけど、型が違うってことはxlBookはObject型
じゃダメってことなんかな
それともExcelのバージョンが関係してるのか、Win98は2000で、XPと2000は2003なんだ
0843デフォルトの名無しさん2011/03/08(火) 00:15:51.70
>>842
こんなところに長々と文章打ち込む前にgoogle様にお伺いを立てた方が建設的よ。
確か割とありがちな「落とし穴」だったはず。
0844デフォルトの名無しさん2011/03/08(火) 00:51:44.40
Win98をサポート外にすれば解決だ
0845デフォルトの名無しさん2011/03/08(火) 01:07:14.46
参照設定だかコンポーネントだか知らんがExcelのバージョンの問題だよね
0846デフォルトの名無しさん2011/03/08(火) 15:59:47.60
参照設定なんかしちゃだめだよ
0847デフォルトの名無しさん2011/03/08(火) 18:52:10.07
会社の古いPCにWin98入ってるわ
遅いしやたら固まるし2000かXPに変えたいけど、古いPCだとメモリも少ないし入らんよな
0848デフォルトの名無しさん2011/03/09(水) 20:53:37.11
事前バインディングの方法にしても、Excel2000では落ちるよ。
OSが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.79
VB2010 EE に、VB6のサンプル読ませるのか?
VB6とそれ以後は互換性が大層なくなってた気がするが
0851デフォルトの名無しさん2011/03/15(火) 10:12:14.39
サンプルプログラムをのフォーム配置とコードを見たい程度なので動かなくてもいいんですが、やはり無理でしょうか?
0852デフォルトの名無しさん2011/03/15(火) 10:31:24.05
俺はVB6しか持ってないからわからんが
ググったら
ttp://social.msdn.microsoft.com/Forums/ja-JP/vbexpressja/thread/55e23135-0025-404c-abef-b56bbf8bcb7a
とかはあるな
というかググった?
0853デフォルトの名無しさん2011/03/15(火) 11:49:34.73
>>852
ありがとう。
ググってるんだけど、あまりに解らない事が多すぎて頭がパニックになってます;;
0854デフォルトの名無しさん2011/03/15(火) 20:14:23.79
>>849
6.0と2010はほぼ互換性が無いので、その学習環境は
極めて効率の悪い環境と言えます。

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

hour が12
minute が34
second が56

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

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

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

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

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

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

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

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

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

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

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

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

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

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

For i% = 0 To 50
  Debug.Print fld.GetDetailsOf(, i%) + ":" ;
  Debug.Print fld.GetDetailsOf(fld.ParseName("test.jpg"), i%)
Next
Set fld = Nothing
Set shl = Nothing
0919デフォルトの名無しさん2011/04/17(日) 03:08:28.94
Visual Basic :: How To Read Summary Of Image File
ttp://www.bigresource.com/VB-How-to-read-summary-of-image-file-Tdi8SsaLAO.html#ia7d3ULln4
0920デフォルトの名無しさん2011/04/17(日) 03:33:55.28
テキストファイルのプロパティについて
ttp://park7.wakwak.com/~efc21/cgi-bin/exqalounge.cgi?print+200801/08010028.txt
0921デフォルトの名無しさん2011/04/17(日) 03:34:54.83
ファイルの概要の編集
ttp://homepage1.nifty.com/MADIA/vb/vb_bbs2/200701/200701_07010059.html
0922デフォルトの名無しさん2011/04/17(日) 03:35:41.11
DSOFile.dll

IPropertySetStorage

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

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

先頭の48バイトはヘッダで内容は固定ぽい
それ以降がデータ部で数値なら4バイトLong型で格納してある
0030にデータ部の長さ
0034に項目数
0038から項目IDと格納位置へのオフセットが登録項目数だけ並んでいる
項目IDとはコメントなら6、タイトルなら2
オフセットが示す格納位置にはデータの型を示す数値、1Eなら文字列らしい
次に、文字列なら長さ、文字列という具合で入っている
0925デフォルトの名無しさん2011/04/18(月) 09:45:37.08
>>923
できるよ。
以上。
はい次の方。
0926デフォルトの名無しさん2011/04/18(月) 10:33:10.68
>>925
知りもしないくせに。
以上。
はい次の方。
0927デフォルトの名無しさん2011/04/19(火) 12:40:13.60
VB6でコンソールアプリ(コマンドプロンプトで動作する奴)って作れるの?
0928デフォルトの名無しさん2011/04/19(火) 12:51:41.53
作れる
ググれ
0929デフォルトの名無しさん2011/04/19(火) 18:45:55.96
>>927
標準モジュールだけで作る
0930デフォルトの名無しさん2011/04/19(火) 18:49:23.40
1)プロジェクトを作成します。
 標準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
>>826
この本読んでて思ったんだけど
エラー対処コードを一々完璧に書く手法ってアジャイル(笑)な開発手法と真逆な事をやってるんだなぁ
まぁVB系はその方が生産性も高いしリスクも少ないのかなとは経験上思う事ではあるけど
0933デフォルトの名無しさん2011/04/21(木) 22:25:38.88
Windows7でのデータベース(.mdb)のアクセスでたまにフリーズしたかと思うぐらい時間がかかることない?
0934デフォルトの名無しさん2011/04/22(金) 01:05:30.75
Win7でVB6は相性悪いって話なの?
0935デフォルトの名無しさん2011/04/22(金) 10:34:14.25
Win7は実行は保証されてるが、開発環境は保証されてないし
コンポーネントは100%ではないし、DBもAccessのバージョンによってはヤバそうだ。

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

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

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

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

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

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

で、メモリ不足を危惧したけどVBはシングルタスクだから
UnLoadせずに、何回インスタンスを作成しようが新たにメモリは食わないと
0955デフォルトの名無しさん2011/04/23(土) 15:16:35.67
>>953
どこか間違ってた?
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.38
ModelessなForm2のインスタンスが別に存在して
Newして別のForm2のインスタンスが欲しいとか?
0959デフォルトの名無しさん2011/04/24(日) 06:44:57.56
> hogeを毎回Newしてるのはhoge.Visible=Falseにして戻ってくるからに違いない

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

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

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

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

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

withを使う書き方が気持ち悪いが、書き方の問題だけでコード上は問題ない。
0960デフォルトの名無しさん2011/04/24(日) 20:33:54.93
Dim hoge As Form2
と
Dim hoge As New Form2
同じって話じゃないの?
With Form2にしようがWith New Form2にしようが内部処理かわんないでしょ?
0961デフォルトの名無しさん2011/04/24(日) 20:59:14.82
つ 実行時エラー 91 オブジェクト変数またはWithブロック変数が設定されていません。
0962デフォルトの名無しさん2011/04/24(日) 22:30:33.08
> Dim hoge As Form2
> と
> Dim hoge As New Form2
> 同じって話じゃないの?
違う

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

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


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

Form2.show

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

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

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

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

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

が実行されてしまう。

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

ということで、インスタンスは明示的に。
0975デフォルトの名無しさん2011/04/26(火) 19:50:12.76
みなさんのアドバイスのおかげでVB6+DirectXでサウンドメーターが無事作れました。ありがとうございました。
0976デフォルトの名無しさん2011/04/27(水) 01:17:11.24
>>975
どなたか存じませんが、どういたしまして。
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.93
Dim Form2 As Integer
0979デフォルトの名無しさん2011/04/27(水) 20:11:48.13
>>12-14あたりの話か?>>975
0980デフォルトの名無しさん2011/04/28(木) 01:40:34.56
>>977
参照しただけで New されるぞ。

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

Private Sub Form_Initialize()
  Set Form2 = Nothing
End Sub

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

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

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

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

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

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

>WScript.CreateObject("Scripting.FileSystemObject")

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

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

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

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


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

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

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

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

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

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

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