VB.NET質問スレ(Part2 ..
[2ch|▼Menu]
159:デフォルトの名無しさん
08/03/05 09:52:48
>>157
ボタンです

バージョンが古いからできないのかなって思った
version.7.1.6030です


160:デフォルトの名無しさん
08/03/05 10:07:24
そのバージョンのボタンが見つからない、
VB.Net 2008だけど、バージョンは全部2.0になってる

161:デフォルトの名無しさん
08/03/05 10:11:03
>>159
2003のリファレンス
URLリンク(msdn.microsoft.com)
Focus メソッドはあるけど、バージョン情報までは分からんな。

162:デフォルトの名無しさん
08/03/05 10:15:08
フレームワークは
framework 1.1 バージョン1.1.4322 SP1
です

バージョンの問題か・・・。



163:デフォルトの名無しさん
08/03/05 19:17:16
LINQに挑戦してるんだけど、SqlClientやレコードセット使ってやってたことを実現するのに一苦労です。
まだ時期尚早でしょうか。というかこれから流行るのでしょうか。

164:デフォルトの名無しさん
08/03/05 22:35:41
LINQの目玉はデータベースじゃなくてコレクション操作

165:デフォルトの名無しさん
08/03/05 23:18:19
>>151
こんなの日常茶飯事だよ
フォームを継承していると多いような気がする
たいていの場合はビルドして再表示で直るけどね

直らない場合はdesignerを修正しちゃう
修正しちゃうから日常茶飯事なのかもしれないがw

166:デフォルトの名無しさん
08/03/05 23:29:41
日常茶飯事ってこともないけどね。
前にも書いたと思うけど、GUI部品は別のプロジェクトにしとけばまず起こらないわけで。

167:デフォルトの名無しさん
08/03/06 00:13:12
>>163
一般論として、ver1はバグがたくさんあるとか、次ので仕様変更が、とか
あるので、今すぐやる必要がなければ、やらなくていいと思う。

168:デフォルトの名無しさん
08/03/06 00:39:23
>>164
>>167
なるほど、今無理してやる必要もないですね。
変態SQLいじってるみたいで面白いんだけど、細かい部分が良くわからない。

169:デフォルトの名無しさん
08/03/06 01:25:55
VB.NETもC#スレのように初心者スレほすいなぁ

170:デフォルトの名無しさん
08/03/06 10:14:51
いまXMLファイルの書き出しをしているんですが、
10個の設定を書き出すのにシリアル化するべきか、
ドキュメントからXMLへの変換で書き出すか迷っています。

速度的にドキュメント変換の方が断然処理が早いですし、
コードも書きやすいです、

どっちにするべきですか?

171:デフォルトの名無しさん
08/03/06 11:44:51
>>169
君が立てて告知

172:デフォルトの名無しさん
08/03/06 18:09:45
>>170

どっちでも好きな方で
設定を格納するための型が既にあるとか値の型が色々あって面倒とかならシリアライズ

173:デフォルトの名無しさん
08/03/06 20:25:32
シリアル化を挫折してしまったので
(見えない格納は意味不明w)
ドキュメント変換にしました

で、また問題にぶち当たったんですが
XMLファイルの要素を指定して、その要素のテキストを読み込むにはどのようにしたらいいのでしょうか?

<?xml version="1.0"?>
<Microg_Windows_Vista_UAC_RELEASED>
<UAC項目>
<UAC_Number_0>
<Message>OFF</Message>
<AD>TEST</AD>
</UAC_Number_0>
</UAC項目>
</Microg_Windows_Vista_UAC_RELEASED>

このようなXMLファイルの場合、<UAC_Number_0>の<Message>のテキスト「OFF」のみを読み込みたいんですが、
xmlRoot.ChildNodes(0).InnerText
のようにしてしまうと、OFFTESTになってしまって<Message>のテキストと混ざってしまいまいます。

174:デフォルトの名無しさん
08/03/06 21:34:16
ノード辿ってけば良いじゃん
SelectSingleNode で XPath でもいいけど

175:デフォルトの名無しさん
08/03/06 22:07:27
辿りかたがちょっとわからなくて・・・

xmlDoc.Load(XMLファイルパス)
Dim xmlRoot As XmlElement = xmlDoc.DocumentElement
msgbox(xmlRoot.SelectSingleNode("//UAC_Number_0/Message").Value)

としたんですがうまくいきませんでした。
(エラーではなく空白NULLが返ってくる)

XPathが間違っているのか、構文が間違っているのか全くわからない状態です。
何度もすいません。

176:デフォルトの名無しさん
08/03/06 22:15:26
SelectSingleNode が XmlNode を返すのは分かるよな?
Value プロパティをヘルプで調べてみ

177:デフォルトの名無しさん
08/03/06 22:29:17
エクセルのすぷれっと見たいにテキストが出てくる物だと思ってました。
(xmlRoot.SelectSingleNode("//UAC_Number_0/Message/text()").Value)
これで何とか「OFF」のみ排出されているので成功したと思います。
ありがとうございました!

178:デフォルトの名無しさん
08/03/07 14:07:32
悪いこと言わんからシリアライズにしとけ…

179:デフォルトの名無しさん
08/03/07 14:10:00
プリコンパイルしとけばXmlSerializerはヘタに自分でやるより速いよ

180:デフォルトの名無しさん
08/03/07 15:25:13
VB.NETでデバイスドライバは書けますでしょうか

181:デフォルトの名無しさん
08/03/07 16:56:18
>>180
宿題やったらしょんべんして寝ちまえ

182:デフォルトの名無しさん
08/03/07 18:59:47
>>180
簡単に書けるけどお前には無理


183:デフォルトの名無しさん
08/03/07 21:38:55
>>181-182
自演乙

184:デフォルトの名無しさん
08/03/07 21:42:24
URLリンク(www.xlsoft.com)

185:デフォルトの名無しさん
08/03/08 13:37:09
URLリンク(www.geocities.jp)

186:デフォルトの名無しさん
08/03/08 13:45:26
コピペ君って馬鹿だな、まで読んだ。

187:デフォルトの名無しさん
08/03/08 17:17:56
WebBrowserで選択状態にする方法、または選択状態を取得する方法がわかりません。
私のほうで引き続き調べていますが、ご存知な方がいらっしゃいましたら、教えていただけると助かります。

よろしくお願いいたします。

188:187
08/03/08 17:18:44
追記ですが、
選択状態とは、Webページ内の文字列の選択状態ということです。

189:デフォルトの名無しさん
08/03/08 17:20:14
WebBrowserで選択状態
だけでも結構Googleに引っかかるようだが

190:デフォルトの名無しさん
08/03/08 18:30:21
ようするにDOMじゃん

191:デフォルトの名無しさん
08/03/09 18:45:20
       ∧ル∧
 ニ= ,, _/-@∀@)__
    〈ヘ_|i    Θ) ノ   ,,   ∧NY∧
  ̄=圧|__|ニ(二二(,ニニニ(二(),, _/-@∀@)__
 ニニ= ゝ9コア/ {ジ、  ~ .〈ヘ_|i     Θ) ノ   ,,  ∧朝∧ < オオニシ! フィリップ!
 =‐ ̄-=;/____|_|_〉   圧|__|ニ(二二(,ニニニ(二()_/-@∀@)__ ジェット・ストリーム・アタックをかけるぞ!
  ( ⌒ヾ,,〉几〈  〉0卩    ゝ9コア/ {ジ、   〈ヘ_|i     Θ) ノ   ,,
 (⌒ヾ,,γ/[]ヘ,)r'__/ヾヽ、 -=;;/____|_|_〉   圧|__|ニ(二二(,ニニニ(二()
   ̄ ̄  ̄ ̄   ̄ ̄ ̄(⌒ヾ,,〉几〈  〉0卩    ゝ9コア/ {ジ、   ~
             (⌒ヾ,,γ/[]ヘ,)r'__/ヾヽ、 -=;;/____|_|_〉
              ̄ ̄  ̄ ̄   ̄ ̄ ̄(⌒ヾ,,〉几〈  〉0卩
                         (⌒ヾ,,γ/[]ヘ,)r'__/ヾヽ、

192:デフォルトの名無しさん
08/03/10 01:16:58
messagebox.show()と、msgbox()は、同じ動きをしますが、どのように違うのでしょうか?

193:デフォルトの名無しさん
08/03/10 01:21:22
URLリンク(d.hatena.ne.jp)

194:デフォルトの名無しさん
08/03/10 08:08:21
>>193
さんくすこ

195:デフォルトの名無しさん
08/03/10 18:11:56
アプリケーションの「軽い」「重い」は処理以外に「ソフト自体の容量」も関わりますか?
たとえば、フォームロードでは何も行わない「1000KBの*.exe」と「100KBの*exe」にはメモリ使用率などの違いがでるんでしょうか

196:デフォルトの名無しさん
08/03/10 18:31:53
フォームに3つくらいタブ付けてそれぞれに40個くらいツリーボックス付けてみ
ソフト自体の容量はあまり無いが起動に1〜2分くらい掛かる

容量で重くなるって事はあることはあるな


197:デフォルトの名無しさん
08/03/10 21:27:41
なんとなくわかったような気がしますw
ありがとうございました。m(_ _)m

198:デフォルトの名無しさん
08/03/11 00:34:34
多分木を視覚的に表現するにはどうしたらいいの?

199:デフォルトの名無しさん
08/03/11 01:26:31
Console.WriteLineの書式文字列の詳細な仕様はどこに載ってるのか。
標準入力はConsole.ReadLine(とRead)か。
数値を入力する手段は、まず文字列として代入してから、数値に変換する
しかないのかな。

200:デフォルトの名無しさん
08/03/11 01:34:19
>>199
MSDN

201:デフォルトの名無しさん
08/03/11 01:46:49
>>199
なに言ってのかわかんね

202:sage
08/03/11 03:42:57
>>199
キーボードから文字でなく、数値を入力してみろよ

203:デフォルトの名無しさん
08/03/11 06:36:47
>>201 >>202
何でお前らは頭が狂ってるのか

204:12
08/03/11 10:59:07
>>203

>>202は只の突っ込みだろ?
条件反射レス恥ずかしいぞw
プログラミングの前に読解力を鍛えろ。

205:デフォルトの名無しさん
08/03/11 12:05:49
>>199
URLリンク(msdn2.microsoft.com)(VS.80).aspx
URLリンク(msdn2.microsoft.com)(VS.80).aspx

Stringから変換するのではなく直接数値型として読み取る方法はないのかという意味だろ
ない。

206:デフォルトの名無しさん
08/03/11 15:34:48
起動されたアプリケーションを判断したいのですが、
プロセスのネイティブハンドルで判断するのは妥当でしょうか?

Dim hProcess As System.Diagnostics.Process
System.Diagnostics.Process.Start("メモ帳")

のとき

hProcess.Handle.ToStringで取ってきた整数で比較する方法で正確に判断できますか?

207:デフォルトの名無しさん
08/03/11 15:44:00
プロセスハンドルはプロセスが生きてる限り一貫して同じ値
ただしそのプロセスが死んだ後そのハンドルは他のプロセスに再利用されうる

208:デフォルトの名無しさん
08/03/11 15:49:57
>>207
書き込みありがとうございます。

メモ帳と同じハンドルで存在するアプリケーションは存在しないということでしょうか?

アプリケーションの終了を判断したいので、「〜後そのハンドルは他のプロセスに」
は問題ないです。

209:デフォルトの名無しさん
08/03/11 15:57:57
>>208
ToStringでわざわざ文字列にする必要はないと思われる。
逆にToInt32()でInteger型にして比較するほうが妥当だと思われるが。
まあ、IntPtr型とInteger型(UInt32型)は直接比較することもできる。
Dim pi As New System.Diagnostics.ProcessStartInfo
pi.FileName = "c:\windows\notepad.exe"
Dim hProcess As IntPtr = System.Diagnostics.Process.Start(pi).Handle
Dim pHnd As UInt32 '取得したプロセスハンドル
If hProcess = pHnd Then '判断
MsgBox("メモ帳です")
Else
MsgBox("メモ帳じゃない")
End If

プロセスハンドルは、OSがそのプロセスを特定するための値なので同じ値は存在しない。

210:デフォルトの名無しさん
08/03/11 16:01:00
わざわざ、訂正までありがとうございますw
無事解決しました。
ありがとうございました!m(_ _)m

211:デフォルトの名無しさん
08/03/11 16:55:50
dsofile.dllで拡張情報のコメント読み書きしてみたのだけど、XPで書いたコメントは2000で読めず
2000で書いたものはXPで読めないというワケワカ状態です
(これはエクスプローラで見てもそうなので、書き込まれていないとかじゃ無いです)
2000とXPでは違う場所に書き込んでるんですかねえ…

212:デフォルトの名無しさん
08/03/11 17:40:43
同じだと思うけど?
XPと2000の切り替えはデュアルブートとか?

213:デフォルトの名無しさん
08/03/11 21:29:24
>>212
2000サーバのファイルを2台のXPマシンと2台の2Kマシンで見てみた
エクスプローラで同時に同じファイルのコメント表示してる筈なのに違ってるってもう…
一度iPropertyStorageで試してみるかな

214:デフォルトの名無しさん
08/03/11 21:35:08
えーっと、ローカルじゃないドライブでもNTFSの機能って使えるんだっけ?

215:210
08/03/11 21:38:42
またプロセス関係で躓きました。
「起動中のプロセスのハンドルを全て列挙して、
それらから記録していたハンドル整数を検索して見つからなかった場合、それが終了した」
といった風でさせているのですが、もっと簡単な方法があるのでしょうか?
>>216

216:210
08/03/11 21:41:33
書き込めない

217:210
08/03/11 21:45:45
'XMLファイルから読み込んだファイルを監視起動
Public Sub LoadedXML_EXE_MonitorShell()
AddHandler hProcess.Exited, AddressOf EXEShell_Exited
End Sub

'監視対象アプリが終了
Private Sub EXEShell_Exited(ByVal sender As Object, ByVal e As System.EventArgs)
'何が終了したか判断するために、今あるアプリケーションのハンドル一覧から、記録しているハンドルと比較する
@@@@@@@ここで比較しています@@@@@@@
End Sub

できれば、 hProcess.Exitedで終了したハンドルが取得できればスッキリするのですが、
どうすればいいのでしょうか?

218:デフォルトの名無しさん
08/03/12 00:31:14
ハンドル整数(WIN32のProcessIDのことかな?)
からプロセスハンドルを開いて、終了を待てばいいじゃん。

219:210
08/03/12 07:50:10
Process.Handleです、
非同期でやりたいので、できれば217のプログラム構造を壊さないで
終了したプロセスのハンドルを取りたいのですが、
イマイチ方法がわかりませんでした、
もう少しやってみます。

220:デフォルトの名無しさん
08/03/12 08:54:07
>>209
IntPtr型のまま比較すべきでは?
64ビットではプロセスハンドルも64ビットなんだから、
pHndだってIntPtrであるべき。

221:デフォルトの名無しさん
08/03/12 08:57:16
>>219
終了した後にハンドルを得るのは無理に近いから、起動したときに得たハンドルを取っておけ。
Process.HasExitedはだめなの?

222:210
08/03/12 09:27:21
監視するアプリケーションは20を超える数になることがあるので、
的確に、何が終了したかをしりたいので
 |監視対象だった数個の内の、どれかが終了したときに
 |一体何が終了したのか?
を調べたかったんです。

起動したときに、ハンドルは取得できているので
現在のプロセスのハンドルを全て列挙して、記憶している数個のハンドル整数から比較、
消えているもので判断しようと思います。

Process.HasExitedでは一つを対象にした場合なので、
使えませんでした。

223:デフォルトの名無しさん
08/03/12 10:12:45
20 程度、Process をコレクションでもっときゃいいじゃん
ハンドルも次の新規プロセスで再利用されうるんだから死んだ後使うのは危険

224:デフォルトの名無しさん
08/03/12 11:06:45
>>220
WindowsAPI使ってプロセスハンドル取得してる場合も少なからず考えられるからさ、
一応、Integer型でも比較できるというのを言いたかったんだ。

225:デフォルトの名無しさん
08/03/12 11:37:31
はぁ?

226:210
08/03/12 11:41:07
一応コレクションは管理していますが、アプリケーションを監視している際にも、
そのアプリに関する情報も管理しないといけないので
膨大になっています。

これ以上増やすことはゴメンなんでw、
「現在のプロセスハンドル比較」の方法で行います。
ありがとうございました。m(_ _)m

またお世話になることがあると思うので、そのときも、またよろしくお願いします。

227:デフォルトの名無しさん
08/03/12 11:45:48
断る

228:210
08/03/12 11:48:24
工エエェェ(´゜д゜`)ェェエエ工

229:デフォルトの名無しさん
08/03/12 16:19:28
>>222
Process.Exitedイベントとか、
監視用のスレッドを作ってWaitHandle.WaitAnyとかはどう。

230:210
08/03/12 18:39:37
出来るだけループ処理は避けたいです、
長期間監視する場合や、スペックが低い場合
単純なタイマー監視などでも予期しないことが起こったりしてしまいそうなのでw

'何が終了したか判断するために、今あるアプリケーションのハンドル一覧から、記録しているハンドルと比較する
Dim ps As System.Diagnostics.Process() = System.Diagnostics.Process.GetProcesses()
'配列から1つずつ取り出す
Dim p As System.Diagnostics.Process
'全てのプロセスハンドルを取得する
Dim All_Process As String = ""
For Each p In ps
Try
'プロセス名を出力する
All_Process = All_Process & (p.Handle.ToString) & vbCrLf
Catch
End Try
Next p
'比較開始(正規表現****\r\n)記憶させたキー全てを検索する
Dim MoniPro_Count As Integer = nvc.Keys.Count - 1 'カウント数と実際のインデックス数は違うから「-1」
For i = 0 To MoniPro_Count
If Not Regex.IsMatch(All_Process, "\b" & nvc.GetKey(i).ToString & "\r\n") Then '正規表現で検索
Dim End_EXE_Pro As String = nvc.Keys(i).ToString '0番目から検索して消えていたハンドル
nvc.Remove(End_EXE_Pro) '登録から抹消
MoniPro_Count = nvc.Keys.Count - 1 'カウント調整
MsgBox(nvc.Count)
Exit For
End If
Next

成功しているので張っておきます

231:デフォルトの名無しさん
08/03/12 19:01:16
>>224
そりゃDeclareが悪い。そっちをIntPtrに直せ。

ところで230はループを避けたいと言いつつ、
そこにあるコードはループして使うしかなさそうに見える件。

232:210
08/03/12 19:12:46
監視しているアプリケーションがどれか終了したときだけ10回程度ループします、
秒間隔でループするのではないので、負荷は掛からないと思います。

>>217

233:デフォルトの名無しさん
08/03/12 19:13:30
>>231
多分なんかのイベント発生のタイミングで検証させたいとかじゃね?
常に回っている必要は確かにないかもね

234:デフォルトの名無しさん
08/03/12 21:25:15
各プロセスハンドル毎に
ThreadPool.RegisterWaitForSingleObject
使えばおしまいだとおもったけど・・・

235:デフォルトの名無しさん
08/03/13 11:29:13
ちょっとおしえてください
VB.NETでもC#でもなんですが・・・

private sub aaa()
 dim a as new class1
 dim aa as new class1
 call XXX(a,aa)
end sub
private sub XXX(byval B as class1 , byref BB as class1)
 B = nothing
 BB = nothing
end sub
private class1
 public ABC as string
end class

このときに XXXを通過した後何故 変数aはNothingにならずに変数aaはNothingになるのかがわかりません。
オブジェクトなので両方参照っぽい動きになるのはわかるのですが・・・・
片側はポインタのポインタみたいな動きになっているのが関連しているのでしょうか…
出来れば詳しくしえていただけると助かります。

よろしくお願いします。


236:デフォルトの名無しさん
08/03/13 11:46:57
ByRef だからとしか。
参照渡しで調べるといいよ。

237:デフォルトの名無しさん
08/03/13 11:58:36
>>236
レスありがとうございます。
普通の値型のIntegerとかの動作でなら
ByValの時に変更できないByRefの時は直接変更される
というのも納得できるのですが
Objectのインスタンスを渡したときの動作がなんとなく違うと思うんです。

Objectを値型で渡し、渡した先でプロパティを変更すると渡したもとのプロパティも変更されているようになりますよね?
参照渡しでも同様だと思います。

ではなぜXXXで操作した結果が異なるのか・・・この場合
単純に参照渡しだから直接元の参照位置をNULLにする=渡した元のオブジェクト変数のメモリ参照がNULLになる としたら
値渡しの場合・・・・どうなるんでしょう?

238:12
08/03/13 12:01:38
>>235
逆に聞くが、お前が何故疑問に思うのか分からない。
関数を経由させずに考えるんだ。

dim a1, a2 as class1
a1 = new class1()
a2 = a1 '現在のa1の参照を代入
a2 = nothing 'null参照を代入、つまりa2の参照するオブジェクトが変更されただけ

このときa1の参照がNothingになったらおかしいだろ?
参照渡しのときは
a1 = new class1
a1 = nothing
こういう結果になっているだけだ。


おそらく次のケースと混同しているんだと思うが、

dim a1, a2 as integer()
a1 = new integer() { 0, 1, 2, 3 }
a2 = a1
a1(2) = 5

このときというのは、a1及びa2が参照しているものが一緒。
んで、その参照しているオブジェクト自体を変更している。
ゆえに当然どちらの参照もinteger() { 0, 1, 5, 3 } となる。



239:238
08/03/13 12:06:20
>>237
やっぱりそういうことか。
根本的なオブジェクトと参照という概念のとらえ方が違う。
オブジェクトの参照先を変更するのと、オブジェクトを変更するのとでは全く違うぞ。

240:デフォルトの名無しさん
08/03/13 12:09:24
>>237
単純に、値渡しの場合 
新たにインスタンスがその処理内で作成される、
と考えればよいのでは。
コンパイラーがそう作られている。と

241:デフォルトの名無しさん
08/03/13 12:15:38
>>238
あ〜!!!!!
すっごい納得がいきました。

素人みたいな質問で申し訳なかったですが・・・
スッキリしたんで助かりました
ありがとうございました。

PS.おっしゃる通り後者と混同してました

242:デフォルトの名無しさん
08/03/13 12:20:08
>>239
>>240
遅くなりましたがレスありがとうございます。
完璧に勘違いしてました
すっごいお恥ずかしい話ですが…・

243:デフォルトの名無しさん
08/03/13 12:39:19
> Objectを値型で渡し、
> 渡した先でプロパティを変更すると
> 渡したもとのプロパティも変更されているようになりますよね?

出来たことに驚き・・;
知らなかった。

素人が変なこと書いてすみません<(_ _)>
>>240は無視して下さい。

244:デフォルトの名無しさん
08/03/13 15:24:01
引数のbyRef,byValの他にもこれが関係してるんじゃないの?
URLリンク(www.microsoft.com)

245:243
08/03/13 16:35:34
横からすみません。

>>244 参考にさせていただきました。
そして、
URLリンク(www.microsoft.com)
図 3-18 値型と参照型の引数 (配列の例ですが)

参照渡しの場合
 呼び出し側で生成したインスタンス=ポインタ変数。
 で、ポインタ変数そのもののアドレスが渡される。

値渡しの場合
 ポインタ変数の中身(呼び出し元のインスタンスのアドレス)が渡される。
 渡されたアドレスの入れ物はSub内に作られる。
 
そこで
 参照渡しでも値渡しでも
 呼び出し側で生成したインスタンスのアドレスを扱うことになるので
 どちらの場合でもインスタンスのメンバーを操作できる。

しかし
 値渡しの場合、
 Sub側では、呼び出し元のポインタ変数の内容、をクリアすることは出来ない。

という事で・・・
余計な一言を追加します。すみません。<(_ _)>

246:デフォルトの名無しさん
08/03/13 18:50:20
.NETでは参照渡し(参照型の値渡しじゃなくてByRefの方)は滅多に使わない
C#と違って呼び出し側から見分けがつきにくいし

247:246
08/03/13 19:02:25
参照型の値渡しじゃなくて,参照型のオブジェクトへの参照の値渡し
(ByVal a As Objectみたいなの)というべきか
ややこしいなあ

248:デフォルトの名無しさん
08/03/13 19:11:50
>>246
C#も.NETなんですが・・・

249:デフォルトの名無しさん
08/03/13 19:15:03
c#にはoutってのがあってだなあ・・・
まあ調べれば分かると思うけど>>246の言うとおりだよ

250:デフォルトの名無しさん
08/03/13 19:16:36
>>248
246の言う.NETはVB.NETの省略だろう。

251:246
08/03/13 20:16:06
いや.NET全般のことを指して言ったんだ。C#でもあまり使われないよ。
コピーが嫌なら構造体じゃなくてクラスを使えばいい。
それに加えて,VBでは呼び出し側から参照渡しなのか値渡しなのか見分けられない欠点がある。
(C#ではメソッドを呼び出すときに参照渡しの引数にはrefやoutをつける必要がある)
Dictionary.TryGetValueみたいなのはあるけどあくまで例外。

252:デフォルトの名無しさん
08/03/13 20:53:59
>>246の日本語が崩壊してる点


253:デフォルトの名無しさん
08/03/13 21:02:30
>>251
どういう根拠でそんなこと言っちゃってんのよ。
初級程度のコーディングなら参照渡しはあまり使われないのかもしれんが、
"構造化プログラミング"というものを突き詰めていくと、参照型の参照渡しが必要になることは結構ある。

単純なプログラムしか書いたことない人間には想像つかんのだろうね。
OOPを理解できている奴の自作ライブラリとかで、しばしば参照型の参照渡しを見ることがある。

254:デフォルトの名無しさん
08/03/13 21:25:59
それはちょっと信用できなさすぎる例ではないか

255:デフォルトの名無しさん
08/03/13 21:31:10
中では必要に応じて使うけどライブラリで外に見せるのは格好悪い

256:デフォルトの名無しさん
08/03/13 21:48:55
>>253
むしろ「可読的コーディング」を突き詰めればそんなことは「したくない」と思うのが普通だろうし、
そもそも必要になることもまず無いと思うけどねw

まあ確かに俺自身、「例外を起こす代わりに例外オブジェクトを返り値として返す」
といった場面でしばしば使ってるけど、メソッドの直感性を考えたらこんなことはしたくないのが本音。

257:デフォルトの名無しさん
08/03/14 07:43:14
まぁ、世の中にはガベージコレクションがない言語もあるわけで。

258:デフォルトの名無しさん
08/03/14 07:45:25
EVENTを自分で作る利点をWEBで調べたけどいまいち理解が難しい
管理が簡単になるってことかいな、関数を自分でつくってもやれそうなのに

259:デフォルトの名無しさん
08/03/14 08:02:29
そりゃ何か状態の変化を通知したいからだろう
利点とかの問題ではない

260:デフォルトの名無しさん
08/03/14 08:04:09
>>259
どうやって確認しますでしょか?
コードでのデバッグでしかわからないですかね

261:デフォルトの名無しさん
08/03/14 08:09:21
・・・?
確認ってなにを?

色々説明が足りてない気がするので詳しく

262:デフォルトの名無しさん
08/03/14 08:12:21
>>261
すません、
確認って言うのは状態の変化を確認するって言うことです
参考書とか見ても何かのイベント(たとえばClick)を実行して、それにつづけてRaiseEventを実行してるってのが多かったので

263:デフォルトの名無しさん
08/03/14 08:28:49
>>258
多分、というか確実に、それは「イベントを自作する利点」が分かってないのではなく、
イベントそのものの意義が分かってないだけだね。

イベントの実態は確かに相手のメソッドを呼び出しているに過ぎないわけだけど、
イベントの利点は、イベントを起こすオブジェクトのコードを書いている時点で
「相手」のことを知らなくていい点。

イベントをモーニングコールに例えるとして、
ホテルに就職した時点でモーニングコールの相手がプログラムされてるホテルマンは使えないでしょw
モーニングコールを欲しい人自身が、ホテルマンの予定帳に自分の番号を「登録」できないと困る。

264:デフォルトの名無しさん
08/03/14 09:24:27
もっと具体的な例を挙げるとすると、モードレスダイアログなんかがいいか。
ShowDialogじゃなくてShowで表示するサブフォーム。IEの検索ダイアログみたいな。
モーダル(ShowDialog)なら入力文字列プロパティを用意しておけばShowDialog呼出し後に呼び出し元が勝手に取っていくけど、
モードレスの方は「検索」ボタンが押されたことを通知する必要がある。
このときにイベントを発生させる。SearchClickとかそんな感じの。
呼び出し元はこのSearchClickイベントで検索を開始する。

265:デフォルトの名無しさん
08/03/14 10:33:21
>確認って言うのは状態の変化を確認するって言うことです

オブジェクト自身が自分の状態の変化を見て、イベントデリゲートを実行するんだよ。
オブジェクト外から変化を確認するってのはナンセンス。それイベントじゃないよ

266:デフォルトの名無しさん
08/03/14 10:43:00
WindowsServer2003には.NETFramework2.0はプレインストールされて
ましたっけ?(WindowsServer2008には確かにされているけど)
でもFrameworkのインストール自体はMicrosoftUpdateとかで簡単に
インストールされるからインストールの手間とか気にする必要はないのかね?

267:デフォルトの名無しさん
08/03/14 10:43:41
>>258
デリゲートの概念が全く分かっていないからだ。
つか、利点が分からないようならイベントを自作する必要に迫られていないということだから、
別に作らなくていいじゃん。

カスタムユーザーコントロールを自作するようになったときに、イベントデリゲートが必要になるときがくる。
OOPが分かってくるようになったらそのときには分かると思うから、今は気にしないことだな。

268:12
08/03/14 10:48:49
>>266
気にする必要なし。

うちの会社では俺がシステム管理者なんだが、HFSLIPでNFX20SP1と30SP1と35を
全部統合インストールするようにカスタマイズしているし。
そうじゃなくたってNFX20SP1のサイレントインストールパッケージを作っておいて
それを実行させるだけならワンタッチでいけるっしょ。


269:デフォルトの名無しさん
08/03/14 10:57:02
>>268
おお、サンキュウ!そういうものなのか。

270:デフォルトの名無しさん
08/03/14 11:46:41
イベントってデリゲートが隠されてるから余計分かりにくいんだよね
実体はデリゲート専用の特別なプロパティみたいなもの

271:デフォルトの名無しさん
08/03/14 12:38:23
>>270
そりゃおかしい。
そもそもイベントとデリゲートでは概念の抽象度が違う。

List(of T)って配列が隠されてるから余計分かりくいとか、
配列ってメモリ確保とポインタ操作が隠されてるから余計わかりにくいとか
普通は思わないでしょ。

272:デフォルトの名無しさん
08/03/14 12:46:08
>>264
それイベントの利点の説明になってないことないか?w

イベントの利点は263にあるとおり、依存関係を逆転させされることだよ。

273:デフォルトの名無しさん
08/03/14 12:46:48
デリゲートとイベントの違いってフィールドとプロパティの違いみたいなもんだよ
どのみちデリゲートの存在を意識しないといけないでしょ

274:デフォルトの名無しさん
08/03/14 16:11:43
deligateって、ただの引数の順列を定義しただけの「型」宣言だと腿ふんだが。

275:デフォルトの名無しさん
08/03/14 18:28:00
>>273
だから抽象度が違うってw
イベントはデリゲートを「利用」してるだけで概念的には全く別物。
メソッドは内部で変数を使ってるから変数みたいなものだ、というぐらいトンチンカンな
物言いだぞそれ。

っていうかイベント使うときにデリゲート意識するかよ。
少なくとも意識「しないといけない」か?

276:デフォルトの名無しさん
08/03/14 18:30:09
C#だとデリゲート型は意識しないといけないな
匿名メソッドや型推論で緩和されたが
VBだとHandlesがあるから意識度は一段低い

277:デフォルトの名無しさん
08/03/14 18:33:14
>>275
AddHandlerとかAddressOfとか使うんだからデリゲート意識するだろ普通。
あ、そうですか。イベントハンドラ作成のときは全てIDEに任せる初心者でしたか、失礼しました。

278:デフォルトの名無しさん
08/03/14 18:46:33
>>277
だからそれは「使ってる」だけでしょ。
Integerを引数にとるメソッド呼び出しを書くときに君は「Integerの存在を意識する」の?w

まあ言葉遣いの問題かもしれんが、
普通「意識」っていう言葉はそういう場面で使わないだろう。

279:デフォルトの名無しさん
08/03/14 19:11:27
イベントを自分で作るときの話だろ
使う分には理解してなくてもいいけど作るなら仕組みをきちんと理解しないと
Public Event MyEvent As EventHandler
これだけ見たら「イベントはデリゲート型のPublicフィールドなんだ」と誤解しそう

280:デフォルトの名無しさん
08/03/14 19:15:27
>>279
作るときは尚更意識しないと思うけどね。
カスタムイベントのことをいってるのなら同意するけども。

281:デフォルトの名無しさん
08/03/14 19:15:57
Public Event MyEvent(sender As Object, e As EventArgs)
なら?

282:デフォルトの名無しさん
08/03/14 19:18:39
今まであまりイベント作成時にデリゲート意識してなかった者なんですが、
イベントでデリゲート使ってるってことは、共通のリソースに対してイベントを
発生させた場合には競合状態も発生しうるっていう認識でよろしい?
危なそうならSynLockあたりかけておくのが基本なんですかね?

283:デフォルトの名無しさん
08/03/14 19:21:59
>>278
>イベントはデリゲートを「利用」してるだけで概念的には全く別物。

VB脳の恐ろしさが分かる発言だな。
お前が何と言おうとイベントの実体はデリゲート。
「デリゲートを利用してるだけ」なんて発言からレベルの低さが見て取れる。
お前がデリゲートを意識しないでもイベントを扱えてるからといって、嘘を言ってはいかんよ。

284:デフォルトの名無しさん
08/03/14 19:23:44
イベントハンドラ(デリゲートの呼び出し対象)は通常はそれを呼び出したスレッドで実行されるよ
カスタムイベントアクセサ使ったイベントを一度自分で作ってみたら
イベントとデリゲートの関係は完璧に理解できるからやってみるといいよ

285:デフォルトの名無しさん
08/03/14 19:27:59
>>283
自分の無知と無分別を自覚できない君は幸せでいいね
VB脳ってお前のことじゃんw

というか、別の概念だから別の名前が与えられているんだけどね。
まあ君は抽象化ということの意味が分からないのだろう。

286:デフォルトの名無しさん
08/03/14 19:39:52
イベントはデリゲートを登録解除する機能
だけどまあ根本的な概念の方が重要だわな


287:デフォルトの名無しさん
08/03/14 19:40:45
デリゲート型のpublicフィールドを使ってもイベントは実現できそうだけど
それだとクラス外から好き勝手に書き換えたりできちゃうから
イベントハンドラを追加するメソッドや削除するメソッド(アクセサ)を使って仲介して
直接デリゲートに触らせないようにするんだよ
それらのアクセサをひとまとめにしたのがイベント
コンパイラがデリゲート型の変数やアクセサを自動生成してる

288:デフォルトの名無しさん
08/03/14 19:44:54
>>285涙目wwww


289:デフォルトの名無しさん
08/03/14 19:54:32
まあ正直いうとイベントとデリゲートの区別がつかない人の気持ちは一応わかる
俺も最初そうだったから。

そういう人は抽象化という発想が理解できてないこと以上に、
イベント以外のデリゲートの用途が想像できないんだろうな多分。

そういう人は匿名メソッドでも理解すれば自分の勘違いに気がつくんじゃないのかな。

290:デフォルトの名無しさん
08/03/14 19:58:24
抽象化は抽象化でもカプセル化と言ったほうが適切

291:デフォルトの名無しさん
08/03/14 20:05:29
graphicsつかって線引いたりしたのがウィンドウサイズとか変えると消えるのって
そのたび書き直さなきゃいけないの?

292:デフォルトの名無しさん
08/03/14 20:06:55
うん
それが嫌ならBitmapに描いてPictureBoxにでも入れとけ

293:デフォルトの名無しさん
08/03/14 20:22:35
>>289
カプセル化くらいで何を偉そうに。
カプセル化なんぞOOPの基本だろうが。
自分が中級プログラマだと勘違いしているやつの典型的口調だな。
最近匿名メソッドを覚えたことでちょっと優越感を覚えている感じかw

294:デフォルトの名無しさん
08/03/14 20:29:48
ふーん偉そうに他人を「偉そうだ」と言うのは偉そうじゃないんだ。
本当馬鹿ってのはどうしていつでも自分自身の言葉を自分に適用できないんざんしょ不思議。

まあ基本であることに全然異議はないんだけど、その基本すら理解できない御仁がいらっしゃるから
「偉そうに」貴殿はまちがっておられるぞよ、と進言差し上げたしだいなんでございますがね。

295:デフォルトの名無しさん
08/03/14 20:37:12
>>289
随分必死だなお前。

URLリンク(msdn.microsoft.com)

URLリンク(msdn.microsoft.com)

どうみてもデリゲートです。本当にありがとうございました。
「全く違う概念」とか「デリゲートを利用してるだけ」とかいうから突っ込まれるんだよ。
>>283の言っていることは正しい。
定義を読んでみると間違いなく実体はデリゲートだな。
要するに外部からは追加削除を許可して、自由に呼び出したりできないように制限されたデリゲートなんだよ。
まあ目的がカプセル化だということは知っていたみたいだが、「全く違う概念」という発言は明らかに間違い。


296:デフォルトの名無しさん
08/03/14 20:38:56
>>294涙目で逃走wwww

297:デフォルトの名無しさん
08/03/14 20:48:10
Public Custom Event MyEvent As EventHandler
    AddHandler(handler As EventHandler)
    End AddHandler
    RemoveHandler(handler As EventHandler)
    End RemoveHandler
    RaiseEvent(sender As Object, e As EventArgs)
        Console.WriteLine("イベント発生")
    End RaiseEvent
End Event
やろうと思えばこういうこともできるが
// 意味があるかどうかは別

298:デフォルトの名無しさん
08/03/14 20:48:51
>>295
まあ馬鹿がそう思いたいなら思うのは止めんよ別に。
好きにすれば?
まともなプログラマで君の意見に同調する人間がいるとは絶対に思えないけどw
本当に馬鹿だな。

カプセル化が基本とか言ってる割に物事を抽象化・概念化するってことの意味が全然わかってないじゃんw

299:デフォルトの名無しさん
08/03/14 20:50:20
>>295
まあそういうことだな。
ただカプセル化されただけのデリゲートとそうでないデリゲートを
”根本的に違う概念”と言っちゃったのが間違いだったな。

public readonly Str as string

public str as string

この二つを全く違うと言っているようなもんだ。
どっちもStringには変わりない。
これと同様に、event修飾子があるかないかだけで実体はデリゲートには変わりないよな。

300:デフォルトの名無しさん
08/03/14 20:51:46
引っ込みが付かなくなって発狂している>>298がいると聞いて飛んできました。


301:デフォルトの名無しさん
08/03/14 20:53:08
>>298
完全に日本語が崩壊してるなw

302:デフォルトの名無しさん
08/03/14 20:53:31
>>298の人気に嫉妬


303:デフォルトの名無しさん
08/03/14 20:54:18
>>299
君もアホだなあ。。
イベントが「デリゲート」を使って実現されいるということと、
イベントという概念が何を意味しているかは全然別の問題。

だから前にも書いたが、配列の「実体」はメモリ確保とポインタ操作だが、
「配列」という概念はポインタという概念とイコールなのかよって

馬鹿な奴ってのはこういう抽象的思考ができないから馬鹿なんだよね。

304:デフォルトの名無しさん
08/03/14 20:56:14
もっと低レベルなたとえが必要かもしれんね。

車の機能はエンジンを使って実現されているが、「自動車」という概念と
「エンジン」という概念はイコールなの?

305:デフォルトの名無しさん
08/03/14 20:56:15
>>303
       巛ミヾヾ  \
       /   ミ     ヽ
       f,    ミ       }
     ┏v'┳_━━ r、    |
     yバノ゙’' ̄ '''  } }゙    }
     ‘ーj`'    :  //   /
      L_ヽ  i  V   /
     ("  ` !      _/
      \ _,. -‐ '  ̄  !_
      /|~   /  ̄    \

    ヒッシ・ダナー [Hissy Danner]
     (1901〜1997 イギリス)

306:デフォルトの名無しさん
08/03/14 20:59:03
そういうのは人に「必死だな」と言われれば傷ついちゃう弱っちい自分を語ってるだけだと思うよw
必死だったら何?

307:デフォルトの名無しさん
08/03/14 21:01:34
>>303
何"イベントという概念"ってwwww
PGならイベントといったらEventHandler<T>のことを指すもんだと思っていたが・・・
VB脳恐るべし。

308:デフォルトの名無しさん
08/03/14 21:03:57
>>304
論理のスリ替えにワロタw
そろそろ可哀想を通り越してあきれてきたぞw

309:デフォルトの名無しさん
08/03/14 21:12:13
VBスレってガキオヤジが多くてこまるな

310:デフォルトの名無しさん
08/03/14 21:19:12
用語の問題だったらたったこれだけのこと
デリゲート : 型の種類。クラスや構造体や列挙体と同列。
イベント : 型のメンバの種類。プロパティと同列。

311:デフォルトの名無しさん
08/03/14 21:32:32
>>310
そういうのはただの分類学だね。
そういう分類上の問題じゃなくて概念の問題なんだけどね。

構造体は「構造体」という概念(概念が難しければアイデアと言い換えてもいいけどね)に意味があるのであって
「構造体とは型の種類である」などと言っても意味がないのと一緒で。

312:デフォルトの名無しさん
08/03/14 21:35:37
>>292
そうか、産休
線を書き直すようにする
どうせ何度でも書き直すのはPCだし

313:デフォルトの名無しさん
08/03/14 21:45:33
粘着キチガイが沸いてるな

314:デフォルトの名無しさん
08/03/14 21:49:00
いろいろわかんないことありすぎるが、仕事は上流に近いことをするので最低限のことを覚えるつもり
仕様書とかネゴはきつい

315:デフォルトの名無しさん
08/03/14 22:09:45
              ,r;;;;ミミミミミミヽ,,_
           ,i':r"    ノ(`ミ;;,
           彡     ⌒ ミ;;;i
           彡 ,,,,,、 ,,,,、、 ミ;;;!、
           ,ゞi" ̄ フ‐! ̄~~|-ゞ,  
          ヾi `ー‐'、 ,ゝ--、' 〉;r'
           `,|  / "ii" ヽ  |ノ
  ∧、        't ー―→ )/イ            ∧_
/⌒ヽ\        ヽ、  _,/ λ、       . . //~⌒ヽ
|( ● )| i\     _,,ノ|、  ̄/// / \     /i |( ● )|
\_ノ ^i | _,,..r''''" ノ | \`', /  /  / ̄`''ー | i^ ゝ_ノ
 |_|,-''iつl/´    ヽノ| /\   / 、│     l⊂i''-,|_|
  [__|_|/〉ヽ、  / |/ );;;;/\/   'く    /〈\|_|__]
   [ニニ〉  ',  ヽ. | /⌒| /   ゚/    / 〈二二]
   └―'                        '─┘

 ナン・トーユー・キティ GUY[Num tooyou kitty GUY]
            (1847〜 大韓民国)

316:デフォルトの名無しさん
08/03/14 22:11:35
       ,,ィ≦テ三三テ≧ュ- 、
      ィ州ii} |!{ヾ(((ヾ(((ハ三ミミ 、
     〃/ノノリ |ヽ.._ノヽ   }}ミミミミh、
    〃//〃  |      ヽ=ノ ;'⌒ヽ}}ミl、
   ,}}| 川|{   ノ     ((⌒ ノ     }}}li
   /川||}!}i|           ̄      }州
   レ {!州!|     ,x‐  ̄ ヽ   ,.z==〃/
   l!( リノ川      <( ハ〉 ノ   { ,ィTヽ /
   トvソノ}}ハ)、        ̄ ノ    l ` ̄ {
   ))ト〃 }|::ヽ            i     ′
    /ノ》州}}}ィ::、     イ    l   ′
    ((∧  州}ソ,ノ   / ` = _ノ   ′
     }  \  ヾィ    ノー- __ -  ,'
    ′   \  ` 、    -‐-  イ
    ′       \   `   __ ,/ l
   ′        \ ヽ       |

  モーネ・アホカト[Maulnen Ahoccato]
     (1666〜1738 フランス)

317:デフォルトの名無しさん
08/03/14 22:31:02
幼稚臭

318:デフォルトの名無しさん
08/03/14 22:51:01
>>312
そのためのPaintイベント

319:デフォルトの名無しさん
08/03/15 00:17:40
303と307が違うことを説明してるけど
俺はどっちも正しいこと言ってると思うよ。
303が言いたいのはプログラムにおけるイベントとデリゲートの違いで
307が言いたいのはVB.NETにおけるイベントとデリゲートの違いでしょ。


320:デフォルトの名無しさん
08/03/15 03:53:34
>>319
正しい正しくない以前に、>>303は馬鹿とかアホとか連発してるところが幼稚すぎる。
どんだけ必死なんだと。

あと、.NETでイベントと言えば俺はbutton.Clickとかそういうイベントデリゲートを想像するけどな。
少なくとも本当に分かっている人間だったら捉え方の違いだってことはすぐに気づくだろうし。
「イベントとデリゲートを一緒の仲間と考えるなんてバカじゃね?」とか必死に連発するってのは
やっぱり意味不明だな。
それはすなわちイベントデリゲートという言葉の存在意義を100%否定していることになる。

321:デフォルトの名無しさん
08/03/15 08:53:29
デリゲートの事を分かってない俺からすると、
お互い違う論点で争っているだけにしか見えない。

車は車であってエンジンが有るか無いか知らなくても運転できる、と言う主張と、
エンジンの事わかってなくて車の性能は引き出せないだろ、という主張

デリゲート童貞の俺を惑わせないでくれw

322:デフォルトの名無しさん
08/03/15 09:50:12
dllのファイルバージョンを取得する方法がわかりません。
さっきからGoogleで調べてるのですが・・・。

ご存知な方がいらっしゃいましたら教えていただけると助かります。

323:322
08/03/15 09:53:27
見つけました
失礼しますた^^

FileVersionInfo info = FileVersionInfo.GetVersionInfo("");

324:デフォルトの名無しさん
08/03/15 10:55:45

やっぱり、deligateって、ただの引数の順列を定義しただけの「型」宣言だと腿ふんだが。
これって違うの?


325:デフォルトの名無しさん
08/03/15 11:16:16
重要なのはそれを呼び出せること

326:デフォルトの名無しさん
08/03/15 11:25:29
デリゲートは型
型だからインスタンスを作れる
そのインスタンス自体もしばしばデリゲートと呼ばれる

327:デフォルトの名無しさん
08/03/15 11:50:41
>>325
もちろん宣言だから、そこに修飾子つきでスコープがあれば
それなりに使えてそれでその型になるようにインスタンスなりイベント
なりを宣言できるってだけかと

>>326
それで、たまたまあるイベントが「定義された」ときにそれがその型に
ある引数をもてるようになるってだけですよね、

でここまでの混乱した話って、要するに、その、
 「そのインスタンス自体もしばしばデリゲートと呼ばれる」
ってことにあるだけのように見えますよね。この受け取り方でOK
ですよね?


328:デフォルトの名無しさん
08/03/15 13:22:18
イベントはデリゲート(型のことじゃなくて機構の意味で)を使って実装される
プロパティと違ってイベントの実装を変えることなんてあまりないから
VB.NETやC#ではイベントを定義したクラス内でなら通常はそのイベントを
あたかもデリゲートのフィールドのように扱える(実際はコンパイラが頑張ってる)
そのへんが混同しやすいところではあるけど混同してもなんとなく使えちゃうようになってる

329:デフォルトの名無しさん
08/03/15 13:45:17
なんか倒錯してる奴が多いね
そもそもインスタンスが何者であるかを表現するときに
型名と違う呼称をする型ってあるのかよw

たぶんこういう人は、プログラムミング言語におけるデータ型であれなんであれ、
「機構」というものは、まず最初に概念なり理念なりアイデアなりがあって、それを実現されるために
生み出されたものだ、という物事の順番がわかってないんだろうね。

だからくだらない分類学にとらわれちゃう。
「整数型」とか「配列」とか「ポインタ」とか「FIFO」とか「デリゲート」とか「イベント」だとかは
概念なりアイデアの名前だってことがわかってないから、それが型だとか何だとかいう分類学に意味があるように
勘違いしてしまう。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4554日前に更新/174 KB
担当:undef