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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/02/03(金) 22:58:33
VisuarlStudio
0243デフォルトの名無しさん2006/02/07(火) 13:13:26
>>242
> コントロール(ActiveXコントロール)として使えるもの
よくわからん・・MCISendString()を内部で使っているコントロールを作ることも不可?
02442272006/02/07(火) 13:30:58
大発見をしました。
タイマーイベントの中でReadFileの前でWriteFileも実行すると
送信データが受信できました。

はて、これの意味するものはなんでしょう??
でも一歩前進です。
0245デフォルトの名無しさん2006/02/07(火) 13:32:29
ここはお前の日記帳じゃねえんだ
02462272006/02/07(火) 13:39:23
いえ、まだ解決したわけではないので引き続けお力添えお願いいたします。
02472332006/02/07(火) 13:41:03
>>243
不可です。

>>242で書いたように常用するプレイヤーではないので、
目的の機能だけを実装出来れば、あとは重くても低機能でもいいから
とにかく手軽に使いたいので、とりあえず既製コントロール限定で探してます。
どうしても無さそうなら、そのときはちゃんと作ることも考えますが。
0248デフォルトの名無しさん2006/02/07(火) 13:48:18
>>247
ふーん
・・ま、人それぞれだからな。

----------
ふっつーにcurrentpositionじゃだめなの?
0249デフォルトの名無しさん2006/02/07(火) 14:07:11
よくわからんが、家で動いたのを載せておく

Option Explicit
'Windows Media Player 6.4.09?
'MediaPlayer:MediaPlayer1を貼り付ける
'Timer:Timer1を貼り付ける
Private Sub Form_Load()
Const FilePath As String = "" '<-ここにファイルパスを突っ込む
Me.MediaPlayer1.Open FilePath
End Sub

Private Sub Timer1_Timer()
With Me.MediaPlayer1
If .PlayState = mpPlaying Then
Debug.Print Format$((.CurrentPosition - .SelectionStart) / (.SelectionEnd - .SelectionStart), "###.###%")
End If
End With
End Sub
0250デフォルトの名無しさん2006/02/07(火) 14:37:21
>>240
つうか、その根本が間違ってる。
.netはアンマネージドコード(WinAPI)の利用は推奨されてません。
移行の為にVB6側で作り直すぐらいなら、.netに移植した後でそこを作り直せばいいじゃん。

まず、MSの移行ツールの出来に関してなんか情報集めたの?
その上でAPIのほうが良いってどこかに情報あった?
なんか一歩目を大間違いして藪の中突進してるよ、あんた。

で、.netでシリアル通信・・・って.netになってからシリアルなんてやってねーや。w
工場とかの制御機器もソケットでつながっちゃう御時世、シリアル通信ってあまりつかわんよね・・。
0251デフォルトの名無しさん2006/02/07(火) 14:41:01
知らないなら黙ってろ
0252デフォルトの名無しさん2006/02/07(火) 14:41:54
>>250
新規はつかわんが、保守せにゃならん
プログラムは変えられてもハード変えるのはなぁ
0253デフォルトの名無しさん2006/02/07(火) 14:43:05
>>244
大発見て。
もしかして、普段からそんな風に開発してるの?
まさか仕事でやってる訳じゃないよね。

>>247
やりたい事とやる方法がごちゃごちゃになってるな。
0254デフォルトの名無しさん2006/02/07(火) 14:45:20
>>252
意味不明ですよ。なんでハード変えるの?

VB6でMSCOMMのプログラムが現状として、
それをAPIに変えてから.net化するのと、
.net化してからその部分を.net流儀で書き換える。

やることは変わらんし、どっちが安定するかは自明。
頭固いんじゃないの?
0255デフォルトの名無しさん2006/02/07(火) 14:48:24
>>254
やってみればいいさ
02562332006/02/07(火) 14:54:19
>>248,>>249
CurrentPositionでいけました。
ありがとうございます。
02572272006/02/07(火) 14:59:49
>>253
すみません。仕事でやってますw
いつもあたってくだけろで砕けてますw

>>254
意外と移行ツール使えますよ。VB6側を先に移行ツールの
わかりやすいように修正してやると。
0258デフォルトの名無しさん2006/02/07(火) 15:05:17
>>257
馬鹿にされてヘラヘラするな低脳
0259デフォルトの名無しさん2006/02/07(火) 15:07:33
>>257
(V)(´Д` )(V)
0260デフォルトの名無しさん2006/02/07(火) 15:13:42
移行ツールのご機嫌とってコード書き直して移植するなら、作り直したほうが早いし安定するし・・・。
あんなコメントアウトでごめんなさいだらけの移行ツールを使う奴の気がしれん。

で、どこにAPI化してから移植しろってあるんだよ。

.net2.0しか入ってないからあれだけど。
System.IO.Portsの下にシリアルあるから、それで作り直す方を勧める。
あんた程度で知らないAPIで通信通したと思ってる程度のプログラムよりは、ましな移植になるんじゃないの?
02612272006/02/07(火) 15:14:06
>>258
すみません。馬鹿にされていたんですね(´Д⊂グスン

ところでWriteFileを入れるとなぜReadFileが
うまくいくのかわかる方いませんか〜

かわりにClearCommErrorとかいれてみたけどダメですね
0262デフォルトの名無しさん2006/02/07(火) 15:16:07
API使うなら、ヘルプの該当関数とその関連情報を死ぬほど読んでからにしろよ。
それで理解できないなら、勉強不足か能力不足、100年早いってこと。あきらめろ。
02632272006/02/07(火) 15:16:10
>>260
.net 2003なのです。system.io.portsは無いのです(´Д⊂グスン
0264デフォルトの名無しさん2006/02/07(火) 16:08:26
>>257
そんな仕事のやり方をどうして上司が許してるの?まじで信じられないんだが。
メソッドや関数や引数やAPI等の意味や役割や動きや働きに関して一切理解しようともせず、
「適当に思い付きでReadFileの前でWriteFile」で受信出来ました万歳?ふざけるなよお前。
「これの意味するものは何?」「一歩前進」だ?あぁ?
てめぇの様な阿呆が居るから、プログラマの地位が何時迄経っても向上しねぇんだよ糞が。
二度とプログラム書くな。すぐ転職しろ。貴様には徹底的に向いてない。死ね。
0265デフォルトの名無しさん2006/02/07(火) 16:12:52
>>264
いや、多分どんなことしても仕事上のプログラマの地位は変わらないとおもう
よくて頭の回る土方だよ
所詮ソフトなんてそんなもんなのさ (´;ω;`)
0266デフォルトの名無しさん2006/02/07(火) 16:30:16
日本人らしい職人気質な人って減ったよねぇ
自分の仕事にプライドもってほしいよ
地位だの金だの忙しさだのは別問題
0267デフォルトの名無しさん2006/02/07(火) 16:40:07
>>265
きちんとした仕事をしてから、そのせりふをほざけ。
02682272006/02/07(火) 16:47:45
今までWriteFileしなかったらReadFileの戻り値が0だったのですが
dim rData as String * 100
dim rLen as long
dim dLen as long
dLen = 100
dummy = ReadFile(hComm, ByVal rData, dLen, rLen, 0)

としたところWriteFileしなくてもReadFileの戻り値が1になりました。
そしてデータを受信するとVBごと落ちてしまいました。
また一歩前進しましたワーイヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノワーイ
0269デフォルトの名無しさん2006/02/07(火) 16:50:06
いい加減日記かくのはチラシの裏にしろ。
他人の警告も聞けないなら、ここじゃ有効な回答得られないってことでどっかいけ。
0270デフォルトの名無しさん2006/02/07(火) 16:52:39
>>269
頭のおかしい人を相手にしてはいけません。相手の思うつぼです。
それともジサクジエンですか?
0271デフォルトの名無しさん2006/02/07(火) 17:26:00
>>268
どんどん後退してる様にしか見えないが。
0272デフォルトの名無しさん2006/02/07(火) 17:35:31
>>212
死ね
0273デフォルトの名無しさん2006/02/07(火) 17:36:26
再帰を利用してフォルダの最深部にフォルダを作ろうとしたけど、一つ手前のフォルダに出来てしまう
これって当たり前?最深フォルダの名前を取得してんだけど、そこで作ると一つ手前に出来てんだよな
0274デフォルトの名無しさん2006/02/07(火) 17:45:03
メニューについて質問させていただきます。
例えば、"最近使ったファイル"というメニューがあります。
MSDNを見るとコントロール配列を使うみたいなんですが、
記載されていた方法が、まずメニューエディタで一つずつ作成し、非表示にし、インデックス値を設定するとの事です。

この場合、こういった方法しか無いのでしょうか。
実行時にメニューを生成できないものでしょうか。

皆様のお知恵を拝借させてください。
0275デフォルトの名無しさん2006/02/07(火) 18:13:17
>>273
プログラムは、糸色文寸に書いた通りにしか動きません。
もしそうなるならば、そうなるコードを貴方が書いている、って事。
現象が再現する最小限のVBを起動して貼り付けるだけですぐ実行出来るコードを示せと何度(ry
0276デフォルトの名無しさん2006/02/07(火) 18:14:35
>>274
Load すりゃいいんじゃね?
02772272006/02/07(火) 18:21:14
みなさま、ついにWriteFileをしなくても受信できました。

dim ret as long
dim er as long
dim gcom as COMSTAT
ret = ClearCommError(hComm, er, gcom)
if gcom.fDsrHold > 0 then
  dim rdata as string
  dim dlen as long
  dim rlen as long
  dlen = gcom.fSdrHold
  rdata = space(dlen)
  dummy = ReadFile(hComm, byval rdata, dlen, rlen , 0)
end if

問題はfDsrHoldが何者かということですが・・・・
0278デフォルトの名無しさん2006/02/07(火) 18:25:20
>>212
死ね
02792732006/02/07(火) 18:25:53
>>275
ごめん
Sub kn(ByVal oFo As Object)
For Each oF In oFo.SubFolders
Call kn(oF)
o1 = oF & "001"
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.CreateFolder(o1)
Set f = Nothing:Set fs = Nothing
Cells(ic, 1) = oF.Path: ic = ic + 1
Next oF
02802272006/02/07(火) 18:39:17
すみません。COMSTATの定義が間違ってました。
ネットから拾ってきたものではなく
APIビュアーからコピーしたらcbInQueがfSdrHoldの値でした。
これなら意味もばっちりあっています。
では嫌われもののわたしめはこれにて失礼いたします。
0281デフォルトの名無しさん2006/02/07(火) 18:44:59
>>277
日記はチラシの裏。
0282デフォルトの名無しさん2006/02/07(火) 18:46:05
>>280
2回以上死ね。
0283デフォルトの名無しさん2006/02/07(火) 19:58:42
っていうか.NETでもCOMコントロールは普通に使えるよ。
もちろんMSCommもね。
0284デフォルトの名無しさん2006/02/07(火) 21:17:09
>>283
ActiveXをラップしてもらって使うのはいまいちだよ。
まあ、屑な彼にはお似合いだと思うけどね。

こねくり回した挙句に作り直しになるに一票。
0285デフォルトの名無しさん2006/02/07(火) 21:18:41
>>284
イマイチってどの辺が?
実際使ってから物いってるかなw
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`)
■ このスレッドは過去ログ倉庫に格納されています