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

(*´д`*)アハァ… VB初心者質問スレ Part22

■ このスレッドは過去ログ倉庫に格納されています
0001HTML化チェック済みNGNG

  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/test/read.cgi/tech/1044028945/

VB.net関連スレ
【老若】VB.net質問スレ【男女】 (Part2)
http://pc2.2ch.net/test/read.cgi/tech/1043629429/

心得
壱.質問する前に過去ログにも目を通してみる。
弐.質問する前に MSDN などで調べてみる。
参.VBScript もこのスレでOK。
四.インストーラーなどの質問もOK。
五.下ネタもたまにならOK。
0175デフォルトの名無しさんNGNG
>>174
過去ログみてから発言しましょうね。
心得
壱.質問する前に過去ログにも目を通してみる。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
弐.質問する前に MSDN などで調べてみる。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
参.VBScript もこのスレでOK。
四.インストーラーなどの質問もOK。
五.下ネタもたまにならOK。
0176デフォルトの名無しさんNGNG
>>165
ロジックはともかく、GUIをメモ帳でコーディングするのは生産性が恐ろしく低い罠・・・。
0177デフォルトの名無しさんNGNG
CreateWindowでフォームもコントロール作れ。
だったらCレベルの生産性は維持できるだろ。
0178デフォルトの名無しさんNGNG
WebBrowserコントロールでMouseMoveのようなのできないですかね?
0179デフォルトの名無しさんNGNG
誰か、わかりやすくコールバックメソッドを使った非同期通知のやり方を教えておくれ。
イベント通知だとイベント処理メソッドの処理が終わらないと一方が止まってしまうので
困ってしまってね。Coffeeサンプルは複雑で漏れにはわからん。

ヘルプ嫁・・・・はいはい
0180デフォルトの名無しさんNGNG
ピクチャーボックスに文字を出力するのは
Print Picture1 "aiueo"
だと失敗したんだけど・・・正解をキボンヌ。
0181ひきプロNGNG
Picture1.Print "aiueo"
0182180NGNG
>>181
ありがとう。微妙におしかった。
0183デフォルトの名無しさんNGNG
>>182
見た目は微妙だが、
考え方は180度間違っている。
0184105NGNG
すいません、やはりマルチキャストの受信だけができません。
UDPを使って、お互いのIPをRemoteHostに設定して
ユニキャストで文字列のやりとりはできるし、
マルチキャストを使っての送信はできる(確認は受信側でVC製の別のマルチキャスト受信ソフトで行った)のですが…
>>105の設定だけではだめなんでしょうか?
0185182NGNG
>>183
オブジェクト メソッド 引数の順で書いていけばよかったと今頃思った。
0186デフォルトの名無しさんNGNG
win98でMicrosoft Windowless Controls 6.0のWL コンボ ボックスを使った
プログラムを作ったのですが、windows2000とXPで、実行しようとすると
「コンポーネントMSWLESS.OCXまたはその依存関係のひとつが適切に
登録されていません。ファイルが存在しないか、あるいは不正です。」
とエラーが出て実行できなかったらしいです。 
どうすれば解決できるでしょうか?
0187デフォルトの名無しさんNGNG
珍しいとは思うけどAccessとの絡みで質問でつ。

Accessのテーブルデータと連携した画面を作っています。
MSHFlexGridにDetaSourxeを設定してデータを表示させるまでは
できるのですが、その中からユーザに選択させるために
左側にチェックボックスを並べたいのです。
普通に並べても、FlexGridのデータをスクロールバーで上下させてしまうと
チェックボックスの選択と同期が取れなくなってしまうし、
かといってテーブルに選択の列を追加しても
DBデータと連携できるチェックボックスコンポーネントなんてないし。

理想は、FlexGridの横一列とチェックボックスを対応付けて
スクロールバーに連携させ、かつ離れた列の複数選択を可能にすることです。
どうにか方法ないものでしょうか?
素直にFlexGridのセルをクリックして選択させたほうが楽でしょうか?
0188デフォルトの名無しさんNGNG
>>184
スマソ、ブロードキャストと勘違いしてた…。
マルチキャストを受信するには、アプリケーションからOSにその旨登録しないと
駄目みたいな様子なので、API使うか何かする必要があるような感じ?
IGMPがどうたらこうたら…。
漏れにはお手上げ(ρ_;)
0189189 ◆7WYWM3doQ. NGNG
プログラミングしてるとオレって天才と思うときがたびたびある。
0190デフォルトの名無しさんNGNG
そう思うことは個人の自由だから何も言わないが、
それを公言するのは人間としてなんか間違っていると思う
0191デフォルトの名無しさんNGNG
つまり、




(・A・)イクナイ!





0192デフォルトの名無しさんNGNG
MXって何ですか?
0193デフォルトの名無しさんNGNG
GeForc(ry
0194デフォルトの名無しさんNGNG
>>189
少なくともVB使ってたら思わないな...
0195デフォルトの名無しさんNGNG
>192
アレだろ、ごつごつしたタイヤのオートバイで天高くジャンプしたりする競技?
0196デフォルトの名無しさんNGNG
VBで関数ポインタを呼び出すにはこうすればいいと分かったのですが、
CallWindowProcは引数が4つ余計です。他に良いAPIはありませんか?

Option Explicit

Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Sub main()
Dim adr(2) As Long
adr(0) = AddPtr(AddressOf func0)
adr(1) = AddPtr(AddressOf func1)
adr(2) = AddPtr(AddressOf func2)

Dim i As Long
For i = 0 To 2
Call CallWindowProc(adr(i), 0, 0, 0, 0)
Next i
End Sub

Public Function AddPtr(ByVal Address As Long) As Long
AddPtr = Address
End Function

Public Function func0(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Debug.Print "func0"
End Function
Public Function func1(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Debug.Print "func1"
End Function
Public Function func2(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Debug.Print "func2"
End Function
0197デフォルトの名無しさんNGNG
>>196
EnumWindowとか、SetTimerとか試してみたら?
つーか、なんでパラメータを無視するんだよぅ(笑
0198デフォルトの名無しさんNGNG
>>197
EnumWindowで出来ます? SetTimerはタイムラグがありそうだし、
TIMERPROC型がWNDPROCと同じ個数の引数なので意味なさそうです。

> つーか、なんでパラメータを無視するんだよぅ(笑
だって、この場合必要ないし。


たいした問題じゃないんですが、名前を変更してみました。
これで一見、「どうやってるんだ?」って思わせられるはず(w
Option Explicit

Public Declare Function CallFunc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal Param1 As Long, ByVal Param2 As Long, ByVal Param3 As Long, ByVal Param4 As Long) As Long

Sub main()
Dim adr As Long
adr = FuncPtr(AddressOf func)

Debug.Print "ret:" & CallFunc(adr, 0, 0, 0, 0)
End Sub

Public Function FuncPtr(ByVal Address As Long) As Long
FuncPtr = Address
End Function

Public Function func(ByVal Param1 As Long, ByVal Param2 As Long, ByVal Param3 As Long, ByVal Param4 As Long) As Long
Debug.Print "func"
func = 1
End Function
0199名無しさんだよもん ◆ZAYX.QGihc NGNG
CallWindowProcはメッセージのフックで使うのが普通
(引数がSendMessageと同じところに注目)

例えば func(param1 As String, param2 As Object) の様な引数を持った関数はVBでは呼べません

言い切ってしまえば VB で関数ポインタは扱えません
関数ポインタを呼び出す部分をCでDLLするしか方法は...(以下省略
0200デフォルトの名無しさんNGNG
>>198
いまいち意図がつかみにくいけど、要するに関数のポインタを変数に入れて、
コールバックで扱いたい、ってこと?
こんな感じかい?

Option Explicit
Public Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Public Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long

Sub main()
  Dim ptrFunc As Long
  
  ptrFunc = FuncPtr(AddressOf TimerProc)
  Call SetTimer(0, 0, 1000, ptrFunc)  ' AddressOf TimerProc)'本来はこっちの書き方

End Sub

Function FuncPtr(ByVal AddressOfFunc As Long) As Long
  
  FuncPtr = AddressOfFunc

End Function

Public Sub TimerProc(ByVal hwnd&, ByVal uMsg&, ByVal idEvent&, ByVal dwTime&)
  
  Call KillTimer(0, idEvent)
  Debug.Print dwTime

End Sub
0201デフォルトの名無しさんNGNG
>>199
> 例えば func(param1 As String, param2 As Object) の様な引数を持った関数はVBでは呼べません
そういう時はね、StrPtrやObjPtrでアドレス値に変換してから
呼び出し先でアドレスをローカル変数に代入すればいいんだよ。
0202デフォルトの名無しさんNGNG
タイプライブラリって何ですか?
0203デフォルトの名無しさんNGNG
>202
ほれ。
http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&oe=UTF-8&q=%E3%82%BF%E3%82%A4%E3%83%97%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%A8%E3%81%AF
0204デフォルトの名無しさんNGNG


:::::::::::/           ヽ::::::::::::
:::::::::::|  ば  じ  き  i::::::::::::
:::::::::::.ゝ か   つ   み  ノ::::::::::: 
:::::::::::/  だ  に  は イ:::::::::::::
:::::  |  な。       ゙i  ::::::
   \_         ,,-'
――--、..,ヽ__  _,,-''
:::::::,-‐、,‐、ヽ. )ノ      _,,...- 
:::::_|/ 。|。ヽ|-i、      ∠_:::::::::
/. ` ' ● ' ニ 、     ,-、ヽ|:::::::::
ニ __l___ノ     |・ | |, -、::
/ ̄ _  | i     ゚r ー'  6 |:: ←>202
|( ̄`'  )/ / ,..    i     '-
`ー---―' / '(__ )   ヽ 、   
====( i)==::::/      ,/ニニニ
:/     ヽ:::i       /;;;;;;;;;;;;;;;;
0205名無しさんだよもん ◆ZAYX.QGihc NGNG
>>201 その方法があったのね...

フックとStrPtr思い出したんだが
過去に『TextBoxにタブが入力されたら半角スペースに変換』たる機能を作ろうとした
ペーストされた時・外部アプリからの変更も考えて フックし

�@ コールバックの引数(ペーストされる文字列のアドレス)をStringに MoveMemory
   ↓
�A String のタブを半角スペースに置換
   ↓
�B �Aの結果を�@のアドレスに入れる(StrPtrを使って)

という方法でやってみたのだが
文字列のサイズが小さいと成功し大きいと失敗(異常終了)します
違うやり方があったら教えてくれ

『入力されたら半角スペースに変換』は簡単なのだが...
0206デフォルトの名無しさんNGNG
>>205
その方法ってAPI呼び出すときに使ってるだろ。
0207デフォルトの名無しさんNGNG
Form1とForm2を持っているソフトのexeファイルを作ると、
exeファイルのアイコンがForm1のアイコンになっちゃうんだけど、
Form2のアイコンをexeに表示させるにはどうすればいいの?
エクスプローラでexeを見てみるとForm1のアイコンしかexeのアイコンとしては表示できないみたい。
0208ひきプロNGNG
EXEを作る時に
オプション → アプリケーション → アイコン
で変更
0209デフォルトの名無しさんNGNG
今更ながら、VS6(VB6だけでもいいけど)を買おうと思うんですけど、
もう入手困難?
昔の会社でVB6使ってたけど、転職した会社になかったので
(ソフトハウスではないですので当然ですが)
どーせなら、VB6を買って、アップ版のVS.NETを買おうと
思ってるので。

もし、通販できるサイトがあれば教えてくださいませ
0210207NGNG
>>208
本当にこんなことができたなんて。
すごい!すごすぎる!
0211デフォルトの名無しさんNGNG
http://store.prod-one.co.jp/ms/dept.asp?dept%5Fid=23
0212もう一度書かせて下さい。NGNG
win98でMicrosoft Windowless Controls 6.0のWL コンボ ボックスを使った
プログラムを作ったのですが、windows2000とXPで、実行しようとすると
「コンポーネントMSWLESS.OCXまたはその依存関係のひとつが適切に
登録されていません。ファイルが存在しないか、あるいは不正です。」
とエラーが出て実行できなかったらしいです。 
どうすれば解決できるでしょうか?

0213デフォルトの名無しさんNGNG
>>211
どうもありがとう!
0214デフォルトの名無しさんNGNG
VBでzipファイルを解凍するプログラムをキボンヌ
0215デフォルトの名無しさんNGNG
>>214
統合アーカイバプロジェクトに行け(´ー`)
サンプルがたくさん落ちてるぞ。

inflateまで自前で実装したいなら茨の道っていうか漏前には無理。
0216ひきプロNGNG
>>212
アプリのフォルダにMSWLESS.OCXを開発環境からコピーすれば
動くようになると思います。
>>214
http://www.google.co.jp/search?q=zip%E8%A7%A3%E5%87%8DVB&ie=UTF-8&oe=UTF-8&hl=ja&lr=
0217214NGNG
>>215-216
キミたちがクレタほんのちょっとの情報だけでオレはつくる!グヘヘ
0218214NGNG
>>217
偽者は引っ込んでください。

>>215-216
ありがとうございます。
0219デフォルトの名無しさんNGNG
ここ数日ム板にも厨房が増えたな。やっぱ春休みか。
0220デフォルトの名無しさんNGNG
質問者はなるべくトリップをつけよう!
0221デフォルトの名無しさんNGNG
化学物質だらけの世の中だから生まれつき変な人増えてもおどろくなかれ
0222214 zip ◆IKup9Hv/8E NGNG
おーう、できたぞ。
zip解凍先フォルダの指定がこのときは解凍できずになやみになやんだ。
Outdir = App.Path
だがしかし、unzip32.dllで大事なのは、解凍先フォルダの指定でフォルダ文字列の最後に\をつけることだ。
Outdir = App.Path & "\"
とすれば見事に解凍できる。
覚えておくといいぞ、これからVBでzipを扱うのに興味を持ったヤシは。
0223デフォルトの名無しさんNGNG
>>222
そのソースだとダメな場合がある(だろう)ってのを覚えておいたほうがいいぞ。
どういう場合にダメなのかは自分で考えるように。
0224214 zip ◆IKup9Hv/8E NGNG
>>223
はっきりいわないと世界中のソフトがバグをかかえたままになるぞ。
なにが悪いんだ?
0225214 zip ◆IKup9Hv/8E NGNG
>>223
Right関数使えとかいうだろうな。
0226デフォルトの名無しさんNGNG
>>224
まともなプログラマはそんなソース書かないから大丈夫だw
自分で考えろって言ってるのに2分で即レスとはすげーヤシだな。
ちなみにRight関数は”あまり”関係ない。
0227214 zip ◆IKup9Hv/8E NGNG
>>226
今のオレには考えてもなにも思い浮かばん。こたえをズバリ言ってくれ。
0228デフォルトの名無しさんNGNG
つーかな、App.Pathの仕様が腐ってるだけともいえるな。
いちいち面倒だってば。
0229214 zip ◆IKup9Hv/8E NGNG
>>228
App.path vb バグ
で検索しても情報がなかったからオレは気にせずにApp.Pathを使うことにする。
0230デフォルトの名無しさんNGNG
>>227
断る

>>228
たしかに・・・
俺は最近は手抜きして、その手の処理にはFSO使うことが多い。何かと便利だし。
0231デフォルトの名無しさんNGNG
バグと仕様の区別もつかないアフォが一匹紛れ込んでるわけだが。
0232214 zip ◆IKup9Hv/8E NGNG
けっ。FSOはノートンに実行許可を与えないと使えないぜ。ノートンが反応すればユーザはそれだけで
いいソフトにも拒否反応を示すというのは事実だ。
0233デフォルトの名無しさんNGNG
C:\ で実行すると、App.Path は C:\ になる。
C:\hoge\ で実行すると、App.Path は C:\hoge になる。

ルートで実行するやつなんかシラネ、って考えなら問題なし。
0234デフォルトの名無しさんNGNG
初心者スレだし、ヒントくらい出すか。

*い ろ ん な と こ ろ で* App.Path

以上。
0235234NGNG
>233
ぎゃふん
0236214 zip ◆IKup9Hv/8E NGNG
>>233
おれはApp.Pathの戻り値の右端に\があるかどうかを求めればいい。
という考えで上記事にRight関数の名を出したわけだから、なにげにもうこちらも解決してたってわけだな。
0237214 zip ◆IKup9Hv/8E NGNG
>>230-235
というわけでごくろうさま。
0238デフォルトの名無しさんNGNG
今日はさむいな
             ∧_∧
         .:' ': :..,, .( ´A` )  、_,..ノ⌒ヽ、,
         ゙::...::゙" (ヾ.,,三,.彡'_,,... -‐、.,, 彡
               ヽ くV > ヽ、 \   ゙"
              ヽ<iゝ  l>  )
               〉・ ・ / ./
                 / ・ ・ \イ         、
                  ∧     'i,         〈キ〉
             / 人     'i,         `'
            ,/ / /'i,     ヽ
             l' i'ヽ(  ヽ     >
           / ,|⌒l   |'i,  /
           ヽノ  l   ! レ''.              ,-、,
               |  |                く_ツ
              | .|
              _/  l
    ,.-'l           (___/
    ゝ '
0239デフォルトの名無しさんNGNG
餌を与えるのも程々にしましょう >ALL
まだ間違ってるようだが、本人納得してるようなので放置しよう・・・
0240デフォルトの名無しさんNGNG
>>214
いくつか重要な事実をおしえてくれてるね。おれは感謝してるよ。
0241デフォルトの名無しさんNGNG
Public Function AddBackSlash(Byval strPath As String) As String
If Right$(strPath, 1) <> "\" Then strPath = strPath & "\"
AddBackSlash = strPath
End Function
0242デフォルトの名無しさんNGNG
ノートンか、なるほど。
0243214 ◆IKup9Hv/8E NGNG
>>241
もう消える。
0244デフォルトの名無しさんNGNG
ジサクジエンの悪寒・・・ (´д`;)
0245デフォルトの名無しさんNGNG
>237

>238

この流れで話はおわりとおもたのに・・・・。
0246214再び ◆IKup9Hv/8E NGNG
Unzip32.dllはスペースを含んだフォルダにzipファイルがあると解凍できないようなんだが
みんなもそうだろうか?
0247214 ◆IKup9Hv/8E NGNG
そぅいえば
Unzipするときにパラメータを渡すが、パラメータはスペースで区切っていたな。
つまりパラメータ用デリミッタのスペースとフォルダ名のスペースが混ざったいると。
さてどうしたものか。
0248214 ◆IKup9Hv/8E NGNG
パラメータをダブクォで囲ってみる。
0249214 ◆IKup9Hv/8E NGNG
うまくいった。
0250212NGNG
>>216
ありがとうございます。さっそく相手にメールで送って試してもらいます。
0251214 ◆IKup9Hv/8E NGNG
App.pathの詳細とInetコントロールやその他の手段でRefererを変更する方法をキボンヌ。
0252デフォルトの名無しさんNGNG
前スレにもこんなのがいたな
同一人物か?
0253デフォルトの名無しさんNGNG
すみません。めっちゃ素人の質問させてもらいます

ある文字列○○○の右から数個目のアルファベットを
アルファベットよって任意の数字をあたえる
プログラムってどうすればいいんですか?

例
○○○○○(単語)の右から3つ目のアルファベットが
A、b、c…1
d、e、f…2
その他…3
にしたい場合


本当お手数かけてすみません
0254デフォルトの名無しさんNGNG
str = "AbCdEf"
rightOne = Left(Right(str, 3), 1)

あとはてめえでやれ。

0255デフォルトの名無しさんNGNG
(・◇・)アヤヤー
0256デフォルトの名無しさんNGNG
>>253
素直にコードにするとこうなるわけだが

Select Case Mid$("ここに対象となる文字列", 3, 1)
Case "A", "b", "c"
hoge = 1
Case "d", "e", "f"
hoge = 2
Case Else
hoge = 3
End Select
0257253NGNG
>>254
>>256
何となくわかりました。
お手数かけてすみません

本当すぐおしえていただきありがとうございました
0258デフォルトの名無しさんNGNG
>>252
性器表現と同じお方のようだ
0259デフォルトの名無しさんNGNG
イベントの意味を優しく教えて下さい。
0260デフォルトの名無しさんNGNG
>>259
トイレでブツがぼっとんすればはねかえりがある、それがイベントだ
0261デフォルトの名無しさんNGNG
>>260
余計意味がわからなくなりそうなのですが・・・。
0262デフォルトの名無しさんNGNG
Form1 が ロード された
Form1 が 表示 された
Command1 が クリック された

こういうのがイベント
0263デフォルトの名無しさん NGNG
>>260
お前が「トイレでブツがぼっとん」しても
俺には「はねかえり」を感知できない。

よってそれはイベントではない。
0264デフォルトの名無しさんNGNG
>>261
オブジェクトでクライアントに有益な事象が発生したときに、クラスからクライアントへ通知する方法のこと
0265デフォルトの名無しさんNGNG
コンピュータに何かが起こればそれはすべてイベント
0266デフォルトの名無しさんNGNG
>>262がわかりやすい
0267デフォルトの名無しさんNGNG
>>265
アキュームレータがインクリメントされるのもイベントが?
0268デフォルトの名無しさんNGNG
サイモンとガーファンクルが来る、コンサートやる。これがイベント
0269265NGNG
>>267
VB限定のイベントという意味では、VBにとってはイベントでない、といえる。
0270デフォルトの名無しさんNGNG
壁がはがれた。色を塗りなおす。これがペイント。
0271253NGNG
質問君でごめんなさい
ある単語(例えば「opendata」)という言葉から
あるアルファベット(例えば「o、a」)の数の合計を数えるプログラムってどうすればいいんですか?

本当2回もすみません!!
0272デフォルトの名無しさんNGNG
イベントってイベントドリブンの略じゃねーの?
0273デフォルトの名無しさんNGNG
>>271
あなたの近くに何十人もわかる人がいるが、回答者は、自分以外の誰かが答えるだろうと思って自分では回答を見合わせている状態なのだ。
0274デフォルトの名無しさんNGNG
>>273
本当簡単な質問ですみません
独学でプログラム作り始めたんですけど
参考書のここまでのってなく詰まってしまって…
■ このスレッドは過去ログ倉庫に格納されています