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

VBプログラマ質問スレ(6.0以前) Part46

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/02/03(金) 22:58:33
VisuarlStudio
0286デフォルトの名無しさん2006/02/07(火) 22:06:05
>>284
っつーか、まともに動作するブツは作れないと思う。
0287デフォルトの名無しさん2006/02/07(火) 22:15:44
>>212
OnAmbientPropertyをVBで実装って具体的にどうやるんだろうか。。。
誰か分かる人いたらおせーてくれ
0288デフォルトの名無しさん2006/02/07(火) 22:43:33
>>285
ラップするクラス作ってる時点で性能面で難が出る。
.netなのに、ActiveXのインストールが必要な時点でメリットがほとんどすっ飛ぶ。
0289デフォルトの名無しさん2006/02/07(火) 22:44:21
性能より機能重視
0290デフォルトの名無しさん2006/02/07(火) 22:47:01
機能より保守性重視
0291デフォルトの名無しさん2006/02/07(火) 22:49:55
>>288
よくわからんデメリットだなw
体裁を気にするガキが自作のソフト配るわけでもあるまいし。

あのねえ、プロパティやメソッドに一回アクセスするのにnSオーダーの
オーバーヘッドが出るのがそんなに性能面で問題あるのかいw
02922272006/02/07(火) 22:50:23
.net移行完了しますた!
っていってocx使ってたらぬっころされますw
0293デフォルトの名無しさん2006/02/07(火) 22:56:37
>>291
.netで代替できる手段があるのに、わざわざレガシー使うほうがおかしい。
それに、体裁じゃないよ。
構造をシンプルにすることも、後のメンテナンス性には重要。
あんたは何時までActiveXを引っ張るんだい?

それに、MSCOMMって.netにはついてないよね。
もしそれ込みで開発・再配布するなら、VB6などMSXOMMが付いている開発環境も必要。
0294デフォルトの名無しさん2006/02/07(火) 22:59:20
>>293
再配布可能

というか.NETでMSCOMMと同等の処理をするにはどのクラスを使えばいいんですか?
0295デフォルトの名無しさん2006/02/07(火) 23:04:26
>>294
2005なら今日の流れの中で出てる。
2003ならぐぐれば出てくる。
0296デフォルトの名無しさん2006/02/07(火) 23:06:31
>>294
>>260
0297デフォルトの名無しさん2006/02/07(火) 23:06:33
>>293
スレの文脈を無視するわけ?
>>227の彼の話をしているわけね。
227はVB6持ってないってかw

ついでにCOMは現役だし、.netにMSCommの代替手段などないよ。
Win32とか文脈無視した寝ぼけたこと言わないでくれよ。
0298デフォルトの名無しさん2006/02/07(火) 23:09:42
2005なんて全然使われてないじゃん
それこそCOM以前の問題だよ
何考えてるの>>295?
0299デフォルトの名無しさん2006/02/07(火) 23:11:11
>>298
普通に仕事で使うけど。次の開発2005だし。
あんたがいまだにVB6とかActiveXに固執してるロートルなだけ。
0300デフォルトの名無しさん2006/02/07(火) 23:12:53
>>299
物凄く怖いな
0301デフォルトの名無しさん2006/02/07(火) 23:15:27
いまだにサポートが切れるVB6使うほうがよっぽど怖いわ。
.netは普通に安定してるし。
VBって言語限定があるなら、どっちのリスクも大差ねーよ。

単に自分が着いていけないだけなのに、もっともらしく理屈つけてるんじゃないの?w

03022272006/02/07(火) 23:16:49
みなさまはお客様から.net移行の依頼を受けて
VB6.0のocxをそのまま利用するのでしょうか?

例えばソースも納品するとしたらどうしますか?
開発環境にはVB6.0も入れてくださいね!とか言うのでしょうか・・・
0303デフォルトの名無しさん2006/02/07(火) 23:17:10
>>301
いや.net2003は使ってる
しかし.net2005なんてまだまだ怖いとおもってるんだが・・
System.IO.File.Createだったか?のバグどーなってる?
0304デフォルトの名無しさん2006/02/07(火) 23:17:13
それをVB質問スレで書いてるチミは何なのさw
馬鹿じゃないの。
0305デフォルトの名無しさん2006/02/07(火) 23:18:26
>>301
新しいのを使うより枯れた方を使うのが普通
0306テンプレよめ2006/02/07(火) 23:19:47
ここは Visual Basic 〜6.0 の質問スレです。
質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、
「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。

前スレ >>3


VB.NETは別物なので専門スレで、
VBS、APIの質問もそれぞれのスレで。
VBAは、Officeアプリの操作以外ならばこのスレで質問しても大丈夫です。

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/
※「まず自分で調べる」クセを身につけよう。
0307デフォルトの名無しさん2006/02/07(火) 23:19:47
>>302
仕事の仕方は上司に聞け。
お客様からの依頼というか、仕様、用件はお客様に聞け。

なんつうか、典型的な出来ない奴だな。
近くにいたら絶対ぶっ飛ばしてる。

仕事請けてから聞くことか?
ソースはどうする、移植時にOCXの使用有無なんて、そんなの要求定義、用件定義の段階だろ?
0308デフォルトの名無しさん2006/02/07(火) 23:19:52
>>302
ちゃんと参照設定してやってれば
デプロイメントプロジェクト(早い話がインストーラ)で
普通にCOMをちゃんとインストールしてくれるようなインストーラが作れるよ。

つまりVB6までと何もかわらん。
0309デフォルトの名無しさん2006/02/07(火) 23:20:20
>>305
枯れたと終わったは違いますよ。
0310デフォルトの名無しさん2006/02/07(火) 23:21:46
.NETは終わってる
03112272006/02/07(火) 23:22:56
>>307
あなたならどう提案しますか?
ocxを使うのですか?私なら使わないということです。
0312デフォルトの名無しさん2006/02/07(火) 23:25:43
>>311
客に導入先に対して何をインストールしてよいのかとか、条件を聞くのが普通。
あんた、いい加減うせろ。すれ違いだし、散々喚き散らすだけだし。
0313デフォルトの名無しさん2006/02/07(火) 23:28:55
客にCOMとかActiveXとかいってわかるのかw
いや、そりゃ俺の世界が下衆なだけかもしれんけどね。
0314デフォルトの名無しさん2006/02/07(火) 23:30:49
それを分かる言葉で説明するのも仕事。
そんなこと出来ないとか考えが及ばないから、
あなたの周りがそういう世界になってるんじゃないのか?
客は教育するもの。
0315デフォルトの名無しさん2006/02/07(火) 23:32:20
>>313
ところでSystem.IO.File.Createのバグって何?
0316デフォルトの名無しさん2006/02/07(火) 23:34:32
自分がバグってただけだったりしてなw
0317デフォルトの名無しさん2006/02/07(火) 23:34:36
別にCOM登録したからって害があるわけでもなし、
説明責任があるとは思えんが。。
0318デフォルトの名無しさん2006/02/07(火) 23:36:57
>>317
なんとなくDLLHellが・・・

かといって過去と完全に決別できたわけじゃないし
.NETの出現で現状はより混沌になったと言うべきか・・?
0319デフォルトの名無しさん2006/02/07(火) 23:37:16
DLL Hell
十分実害じゃん。
0320デフォルトの名無しさん2006/02/07(火) 23:38:43
今度はCOMじゃなくてDLLになったぞw
0321デフォルトの名無しさん2006/02/07(火) 23:39:19
>>320
あんた勉強不足。
じゃあCOMって何?
0322デフォルトの名無しさん2006/02/07(火) 23:39:24
誤解があるようだけどCOMはDLL Hell関係ないよ。
すくなくとも回避するメカニズムをちゃんと持ってる。
0323デフォルトの名無しさん2006/02/07(火) 23:39:37
(´Д`;)・・・(コイツ・・)
0324デフォルトの名無しさん2006/02/07(火) 23:40:11
>>321
COMじゃないDLLもあるって知ってますか?w
0325デフォルトの名無しさん2006/02/07(火) 23:40:38
>>322
あのバージョン管理がちゃんとしてると。
なるほど。良く分かった。
0326デフォルトの名無しさん2006/02/07(火) 23:41:45
ちゃんとしてるだろ。
互換性が無いCOMにはまったく違う
GUIDが割り当てられるんだし。
0327デフォルトの名無しさん2006/02/07(火) 23:42:07
>>324
ちょっとまて、それが何をいみs(ry
0328デフォルトの名無しさん2006/02/07(火) 23:42:18
>>324
逆なら反論になってるけど、それじゃ反論になってないよ。
DLLじゃないCOMもあるってしってます?ってなら反論だけど。
COMじゃないDLLがあってもだから何?って。

>>322
メカニズムを持っていても、一般に使えないメカニズムは持っているとはいえない罠。
そんなに回避できるならば、誰も苦労はしてないわけで。
0329デフォルトの名無しさん2006/02/07(火) 23:42:32
それを言ったら、COMではない
DLLにもあてはまるんだけどな。
ついでに、Linux系なんかの.soなどにも当てはまる。
0330デフォルトの名無しさん2006/02/07(火) 23:43:59
なぁ、DLL HellはCOMだから発生するわけじゃないのわかってるか?
普通のDLLでもWindows以外でも発生する問題なんだが。

なんにでも発生する問題を出して、
ほらCOMは危険といわれてもなぁ。
0331デフォルトの名無しさん2006/02/07(火) 23:45:03
とりあえずGUIDがどーのとか言う前に、
「全部一枚岩の上に乗っかっている以上、こんがらかってくるのは必至なわけで」
みんなが整然と領域まもってくれればなんてことはなかったんだろうがなぁ・・・
0332デフォルトの名無しさん2006/02/07(火) 23:45:11
>>382
そもそも君Dll Hellの意味わかってないんじゃないの?

COMの作者が余程トンマじゃないかぎり、COMでDll Hellなんてないよ。
0333デフォルトの名無しさん2006/02/07(火) 23:45:43
>>330
あんたが、>>317を書いたならば、書いてることが矛盾しまくり。

別人だとしたら、>>317からの流れなんだから流れ嫁。
0334デフォルトの名無しさん2006/02/07(火) 23:45:50
>>332
安価ミスもHellの一歩手前です
0335デフォルトの名無しさん2006/02/07(火) 23:47:04
>>332
だとしたら、MSの製作者ってとんまばっかりですね。
0336デフォルトの名無しさん2006/02/08(水) 00:09:02
何を揉めてるんだ?
0337デフォルトの名無しさん2006/02/08(水) 00:10:12
そんな話はもういいから>>287の質問に誰か答えてくれぇぇー
0338デフォルトの名無しさん2006/02/08(水) 00:58:13
やっべ、スレが凍ったw
答えられる人がいない予感!!orz
0339デフォルトの名無しさん2006/02/08(水) 01:10:05
とりあえず最寄の掲示板から引っ張ってきた
(=゚ω゚=)ノシ
ttp://hpcgi1.nifty.com/MADIA/VBBBS2/wwwlng.cgi?print+200406/04060091.txt
ttp://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200408/04080028.txt
ttp://msdn.microsoft.com/workshop/browser/hosting/wbcustomization.asp
ttp://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200511/05110055.txt
ttp://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200512/05120033.txt

間違っても個人メールは打つなよ
俺じゃないから
0340デフォルトの名無しさん2006/02/08(水) 01:31:58
>>276
ありがとうございます。
APIとLoadステートメントを組み合わせてメニューオブジェクトを動的に生成できるという事ですか?
もしよければ何のAPIを使用すればよろしいか教えていただけないでしょうか。
0341デフォルトの名無しさん2006/02/08(水) 01:39:36
>>340
いやLoad関数だけで十分だとおもうぞ?
0342デフォルトの名無しさん2006/02/08(水) 04:52:22
>>339
ありがとん
でも肝心の答えが載ってない・・・('A`)
0343デフォルトの名無しさん2006/02/08(水) 08:11:49
>>340
APIは必要ないんだが。
0344デフォルトの名無しさん2006/02/08(水) 08:12:29
>>342
答を載せてしまっては、貴方の成長の妨げになるから・・・
0345デフォルトの名無しさん2006/02/08(水) 08:18:49
>>344
ぶっちゃけ、答えられる奴はこのスレに居ないだろ
素直に分からないって言えばいいんだよ
さも知ってるかのように気を持たせるのはどうかと思うぞ
まあ俺も分かんないけどねww
0346デフォルトの名無しさん2006/02/08(水) 10:26:46
アンカーが339で切れてるから、元の質問が分からん。
0347デフォルトの名無しさん2006/02/08(水) 14:10:28
excelのvbaでとあるHPのHTMLを取得する方法はどんなものがありますか?
又それぞれのメリット・デメリットも知りたいです。
0348デフォルトの名無しさん2006/02/08(水) 14:25:53
>>347
とりあえず一番簡単なCOM使って取得する方法を覚えろ。話はそれからだ。
何も解ってない初心者に表面的なことだけ詰め込んでも仕方ないからな。
0349デフォルトの名無しさん2006/02/08(水) 14:50:04
Winsock APIでバイナリデータを受信する引数の渡し方がわかりません。
送信側も間違っている?かもしれません。
ご教授願います。

以下、試したものです。
Public Declare Function recv Lib "wsock32.dll" (ByVal s As Long, ByVal buf As Any, ByVal lngLen As Long, ByVal flags As Long) As Long
Public Declare Function send Lib "wsock32.dll" (ByVal s As Long, buf As Any, ByVal lngLenlen As Long, ByVal flags As Long) As Long

Dim bytData(100)

bytData(0)=1
略
lngRet = send(lngSock, bytData(), 100, 0)

受信側
Dim bytRec(100) as byte
lngRet = recv(mlngSock, bytRec(0), 100, 0)

Any型の部分が問題だとは思いますが・・・。
0350デフォルトの名無しさん2006/02/08(水) 14:53:15
bufferwritecount = send(lngSock,bytData(lbound(bytData)), ubound(bytdata)-lbound(bytdata), 0)
みたいな。

もちろんByte()をStreamの様に扱えるクラスはあるんだろうな?
無いと苦しいぞ
0351デフォルトの名無しさん2006/02/08(水) 14:54:27
>>350
> bufferwritecount = send(lngSock,bytData(lbound(bytData)), ubound(bytdata)-lbound(bytdata), 0)
こっちだな
bufferwritecount = send(lngSock,bytData(lbound(bytData)), ubound(bytdata)-lbound(bytdata) + 1, 0)
0352デフォルトの名無しさん2006/02/08(水) 15:08:38
Byte-StreamというかStringって、API使うなら普通にStrConvでやってるソースがごろごろしてるべ。
0353デフォルトの名無しさん2006/02/08(水) 15:11:33
lngRet = send(lngSock, ByVal bytData(0), 100, 0)
lngRet = recv(mlngSock, ByVal bytRec(0), 100, 0)

じゃね?
0354デフォルトの名無しさん2006/02/08(水) 15:16:19
>>352
(どんなソケット使ってるか分からんけど)
TCPっぽいならByte()のストリームが帰ってくるからさ、
Byte()を自由に繋げたり、任意の長さだけ切り取れるようなものを作っておくといいよってこと。
String関係ない。

>>353
イジメ発覚
03553492006/02/08(水) 15:34:32
配列の添え字がいい加減になってしまいましたが・・

lngRet = recv(mlngSock, bytRec(0), 100, 0)
このbytRec(0)の変数の型が一致しません。
0356デフォルトの名無しさん2006/02/08(水) 15:45:26
宣言間違ってる?
> Public Declare Function recv Lib "wsock32.dll" (ByVal s As Long, ByVal buf As Any, ByVal lngLen As Long, ByVal flags As Long) As Long
Public Declare Function recv Lib "wsock32.dll" (ByVal s As Long, BYREF buf As Any, ByVal lngLen As Long, ByVal flags As Long) As Long
0357デフォルトの名無しさん2006/02/08(水) 15:46:53
俺が昔使った宣言:
Public Declare Function recv Lib "ws2_32.dll" (ByVal s As Long, ByRef buf As Any, ByVal buflen As Long, ByVal flags As Long) As Long
Public Declare Function send Lib "ws2_32.dll" (ByVal s As Long, ByRef buf As Any, ByVal buflen As Long, ByVal flags As Long) As Long
03583492006/02/08(水) 18:05:43
宣言が間違ってました。
どおりで配列を受け付けないわけですね。
ありがとうございました。
0359デフォルトの名無しさん2006/02/08(水) 18:27:35
次のソースで不具合が発生します。
デバックしたところlngA、lngB、lngCには0&以外の値が入っているのですが、
IF文の条件式がFalseを返す場合が多々あります。

strVal="ABCを含む文字列"
lngA = InStr(strVal, "A")
lngB = InStr(strVal, "B")
lngC = InStr(strVal, "C")
If _
  lngA And _
  lngB And _
  lngC Then
End If

IF文を入れ子にしたり、lngA <> 0&と条件を明示することでTrueを返すようにはなるのですが、
上記コードの場合なぜFalseを返すことがあるのか分かる方みえませんか?
0360デフォルトの名無しさん2006/02/08(水) 18:29:06
>>359
And:
 論理演算-論理積
 ビットごとの演算-ビットごとの論理積

例)
dim a as long,b as long,c as long
a=1:b=2:c=4
debug.? a and b and c
debug.? cbool(a) and cbool(b) and cbool(c)
0361デフォルトの名無しさん2006/02/08(水) 18:58:53
javascriptにあるような連想配列ってVBにはありませんか?
あれば使い方を教えてください。お願いします。
0362デフォルトの名無しさん2006/02/08(水) 19:01:14
>>361
collectionオブジェクト

dim c as collection
set c=new collection
c.add 10,"a"
debug.? c("a")
0363デフォルトの名無しさん2006/02/08(水) 19:01:16
>>360
ありがとうございます。
コードを簡潔にしたいがあまりに基本的なことを忘れていました。
03642732006/02/08(水) 19:51:28
>279ではやはりできないのかな。最深のフォルダを取得してるっぽいんだけどな
0365デフォルトの名無しさん2006/02/08(水) 20:17:40
>>364
じゃなくて、VB起動して貼り付けただけではこれっぱかしも動作しないからでは。
変数宣言もないし、End Sub もないし、呼び出すコードもないし Cells とか謎のオブジェクトもあるし。
全部直して動く様にして検証する気になる人なんて皆無。
0366デフォルトの名無しさん2006/02/08(水) 22:35:08
テキストボックスに OLE Drag,Drop Mode を設定すると
選択文字列の上にマウスカーソルをあわせても I ビームが表示されません。

よってコンテキストメニューも開けないわけなんですが、解決策はありませんでしょうか?
0367デフォルトの名無しさん2006/02/08(水) 22:48:04
>>366
手動でDrag()を呼び出す・・・じゃないかぁ
0368デフォルトの名無しさん2006/02/09(木) 00:24:06
>>346
>>278

>>366
>テキストボックスに OLE Drag,Drop Mode を設定すると
原因をはっきり特定しろよ、OLEDragModeを自動にしたときだけだろ
選択文字列の上で I ビームにならないのは、Dragするんだからあたりまえだ
コンテキストメニューがまったく出ないのは、文字をすべて選択したときだけだ(こっちの仕様は意味不明だけどなw)
挙動が気に入らなければ、OLEDragModeを手動にして自分でやれ
0369デフォルトの名無しさん2006/02/09(木) 00:37:04
>>368
素晴らしい!正解です!
そうなんです、自動です、しかし選択文字列の上で I ビームにならないんじゃくて、選択しなくてもならないんです
挙動が気に入らないですけど、現状のままで行きます、癖をつければなんてこと無いでしょう。
だって僕しか使わないソフトですからね!しかし未だにソフトを公開したことナインですけど公開すると後悔しますか?
0370デフォルトの名無しさん2006/02/09(木) 00:53:37
>>369
>しかし選択文字列の上で I ビームにならないんじゃくて、選択しなくてもならないんです
それはテキストを全選択したときだけだ、3文字入力して1文字だけ選択して確かめてみろ
まあOLEDragの自動は、コンテキストメニューも含めておかしいと思うがね
ついでに言うと、テキストの後ろから数文字を選択してドラッグを開始、
Escを押してキャンセルすると、なぜかキャレットが先頭に移動する
ぶっちゃけ自動は使えないと思ったほうがいいだろうな

>しかし未だにソフトを公開したことナインですけど公開すると後悔しますか?
ここで公開するとボコボコに叩かれて、たぶん後悔する
Vectorで公開すれば、とりあえずDL数見て自己満足に浸れる
好きにしなさいw
0371デフォルトの名無しさん2006/02/09(木) 01:10:41
>だって僕しか使わないソフトですからね!
だったら公開する必要無くね?
0372デフォルトの名無しさん2006/02/09(木) 01:12:49
>>371
ったく、この朴念仁が!
0373デフォルトの名無しさん2006/02/09(木) 01:15:07
そうですそうです、一桁分のテキストボックスなんですけど、それが横一杯パンパンになるとどこに置いても通常のマウスカーソルのままでして、
そしてあろう事かその状態なら選択しなくてもそのままドラッグできるんです、そして別のテキストボックスにドロップすると全文移動するんです、不思議ですよね!

手動にしてみようと思ってコードを書いていたんですが、途中で挫折してしましてね、もう自動でいいです。

ここで公開するとボコボコにされるんですか、恐いですね。
たぶんにボコボコにされる対象はソースコードでしょうね、だけど実行ファイルのみで公開しても誰も触ってくれないでしょうし、ハハハ。
0374デフォルトの名無しさん2006/02/09(木) 01:21:13
ソーっすね
0375デフォルトの名無しさん2006/02/09(木) 01:22:52
>>374
全米が泣いた
0376デフォルトの名無しさん2006/02/09(木) 10:21:03
xmlDoc.async="false"
ってどういう意味ですか?
0377デフォルトの名無しさん2006/02/09(木) 10:43:36
>>376
class hoge{
public string async;
}
で
hoge xmlDoc=new hoge();
xmlDoc.async="false";
でもしたのかしら?
0378デフォルトの名無しさん2006/02/09(木) 10:49:20
>>369
公開と後悔を掛けたなっ!

>>376
async に "false" を設定した。
って、xmlDoc.async = False の様な気もするが。
0379デフォルトの名無しさん2006/02/09(木) 10:50:48
しまった
最近javaとC++とVB6といろいろ渡り歩いてるもんだから混ざっちまったぜ・・
0380デフォルトの名無しさん2006/02/09(木) 11:00:23
xmlDoc.async = False
でした。ごめんなさい。
これってどういう意味ですか?
0381デフォルトの名無しさん2006/02/09(木) 11:06:52
>>380
378に答えも書いてあるじゃん。
asyncをFalseにするとどうなるかは、
これだけの情報では何とも言えないけど。
0382デフォルトの名無しさん2006/02/09(木) 11:07:03
>>380
xmlDocのメンバasyncにFalse値を設定したっていう意味
0383デフォルトの名無しさん2006/02/09(木) 11:15:12
xmlDoc.Loadの前にあるんですけど
無いとだめなんでしょうか?
0384デフォルトの名無しさん2006/02/09(木) 11:19:56
ネタくさいので放置決定
ネタじゃないとしたら勉強不足
0385デフォルトの名無しさん2006/02/09(木) 11:21:58
>>383
名前に惑わされすぎるのはよくないから、
>>377とか>>378は xmlDoc というモノを不明なものとして扱って書いてるわけ。

特に、>>377は xmlDoc が hoge というクラスのインスタンスで async というメンバを持つという具体例を挙げているだろ?
こんな風にもとのクラスが何なのか、具体的に書いてくれないとさっぱりなわけ。
ちょっと説明下手すぎるんじゃない?
■ このスレッドは過去ログ倉庫に格納されています