VB.NET質問スレ(Part25)at TECH
VB.NET質問スレ(Part25) - 暇つぶし2ch1:デフォルトの名無しさん
08/02/22 12:14:02
前スレ

VB.NET質問スレ(Part24)
スレリンク(tech板)

テンプレは2~5くらいまでの間にある予定

2:デフォルトの名無しさん
08/02/22 12:14:48
MSDN
URLリンク(msdn2.microsoft.com)
どぼん!のVB道のトップページとTipsページ
URLリンク(dobon.net)
URLリンク(dobon.net)
Microsoftクイック スタート チュートリアル
URLリンク(ja.gotdotnet.com)
Insider.NET
URLリンク(www.atmarkit.co.jp)
宇宙仮面の C# プログラミング
URLリンク(uchukamen.com)
.NET TIPS
URLリンク(www.atmarkit.co.jp)
緑のバイク ★ 初めてのC# プログラム全般
URLリンク(homepage3.nifty.com)
VB.NETとC#でデザインパターン
URLリンク(hccweb1.bai.ne.jp)
匣の向こう側
URLリンク(www.ne.jp)
WisdomSoft
URLリンク(wisdom.sakura.ne.jp)
じゃんぬねっと
URLリンク(jeanne.wankuma.com)
どっとねっとふぁん - C# Tips And Samples -
URLリンク(homepage3.nifty.com)
URLリンク(dotnetfan.org)
C#プログラミングTips
URLリンク(www.atmarkit.co.jp)

3:デフォルトの名無しさん
08/02/22 12:15:22
CodeProject
URLリンク(www.codeproject.com)
the GotDotNet Home Page
URLリンク(www.gotdotnet.com)
KEN's .NET
URLリンク(www5b.biglobe.ne.jp)
Cetus Links: 19,498 Links on Objects and Components / .NET
URLリンク(www.cetus-links.org)
HIRO's.NET
URLリンク(vbdotnet.fc2web.com)
@IT:特集 .NET開発者のためのオンライン・リソース・ガイド
URLリンク(www.atmarkit.co.jp)
.NETでいきまっしょい!
URLリンク(santamartadotnet.hp.infoseek.co.jp)
これがほしかった!厳選サンプルツール集
URLリンク(anetm.com)
ぬーやんのdotNET講座
URLリンク(www.geocities.jp)
PINVOKE.NET
URLリンク(www.pinvoke.net)
WinAPI Database for VB Programmer
URLリンク(www.winapi-database.com)

4:デフォルトの名無しさん
08/02/22 12:15:54
Windows Api programming in C# , VB.NET, and VB6. Examples of P/Invoke and DllImport with Source code
URLリンク(custom.programming-in.net)
CodeZine
URLリンク(codezine.jp)
ConvertCSharp2VB
URLリンク(www.kamalpatel.net)
@IT:.NET Tools
URLリンク(www.atmarkit.co.jp)
SharpLibrary Redirector
URLリンク(www.sharplibrary.com)
MSDN アカデミック アライアンス 技術資料
URLリンク(www.microsoft.com)
「300 秒でズバリ !!」&「10 行でズバリ !!」シリーズ
(VS2005) URLリンク(www.microsoft.com)
(VS.NET 2003) URLリンク(www.microsoft.com)
PAPA'n VB
URLリンク(papanvb.i-love-vb.net)
(旧コンテンツ) URLリンク(www.mitene.or.jp)
VB レスキュー花ちゃん
URLリンク(www.bcap.co.jp)

5:デフォルトの名無しさん
08/02/22 13:00:22
VB.NETにおいて、Tips系とは違う方向で、主要なコントロールの紹介と
使い方をまとめたサイトはないでしょうか。

6:デフォルトの名無しさん
08/02/22 13:21:42
VB使いはキモイイと効いたのですが本当ですが

7:デフォルトの名無しさん
08/02/22 13:23:21
>>5
@IT

8:デフォルトの名無しさん
08/02/22 13:25:31
VBは初心者向け言語と効いたのですが本当ですgか??_

9:デフォルトの名無しさん
08/02/22 13:27:13
本当だからどっかいけ、もうくんな

10:デフォルトの名無しさん
08/02/22 13:30:32
ここは初心者に優しくないと聞いたのですが本当ですgか??_

11:デフォルトの名無しさん
08/02/22 13:32:40
確かにVBは初心者向けかもしれないが、第二言語としてこれほど適しているのはないと思うが

12:前スレ968
08/02/22 13:38:17
前スレの>>989ー990

VBでデリゲートを呼び出すのはInvokeメソッドを使うということか。
俺がただ知らなかっただけでした。すんません。
C#と違って、たかだかデリゲートを扱うのにAddHandlerとかAddressOfとかInvokeとか、
VB用の新しいキーワードが必要になるんだなあ。
ちなみにVBだと
(デリゲート名).Invoke(引数)
C#だと
(デリゲート名)(引数)
で呼べる。
やっぱり俺はC#のシンプルなコーディングの方が好きだわ。

まあとにかくVBの勉強にはなったわ、ありがとう。

13:デフォルトの名無しさん
08/02/22 13:40:31
>>7
kwsk

14:前スレ968
08/02/22 13:41:19
お礼といってはなんだが、新スレ建てておいた。
VBスレの住人は新スレ誰も建てないのにビックリw
C#erの俺が建てちまったよ。

15:デフォルトの名無しさん
08/02/22 13:46:41
>>13
断る。
何をもって"主要なコントロール"と言っているのかがまず不明。
とりあえずツールボックスに出ているすべてのコントロールを片っ端から勉強するべき。

MSDNが読めるレベルになるまでは、@ITとかTipsとかで調べるのが定石だと思うが。
ローマは一日にしてならず。努力する姿勢がないやつにはプログラミングなんて無理。


16:デフォルトの名無しさん
08/02/22 14:11:11
>>14
テンプレに「○番超えたら話し合って次スレを立てて下さい」
と入れてくれればよかったのに。

17:12
08/02/22 14:24:55
あーごめん、頭こんがらがってる。
てかInvokeとかC#にもあるし。

C#でいうところの
(デリゲート名)(引数)
と同値なのはVBの
RaiseEventだったし。

なんかやっぱり俺デリゲートがよく分かってないわ。
前スレで指摘された通りでした。
俺の発言は全部スルーしてくだされ。
もうちょっとデリゲートを勉強してみます。
スレ汚し失礼しました。

>>16
そうだね、気付かんかったスマソ

18:前862
08/02/22 15:09:38
お礼が遅くなりました。レスくれた方方ありがとう。
抱きしめてキスしたい気分です。

19:デフォルトの名無しさん
08/02/22 15:18:22
人前だぞぉ

20:デフォルトの名無しさん
08/02/22 15:48:23
VB#ってなんでないですか

21:デフォルトの名無しさん
08/02/22 15:50:53
>>20
これならある
URLリンク(www.geocities.co.jp)

22:デフォルトの名無しさん
08/02/22 16:05:42
VB.Netで設定を保存する場合どの形式を使うべきですか?

いままでVB6だったんでINIを使おうかなと思ったのですが、
NetになってXMLが準備されているのでMSが望むようにXML形式で作ったほうがいいんでしょうか?

それとも自由なんでしょうか?

23:デフォルトの名無しさん
08/02/22 16:10:27
>>22
基本的には自由だと思うよ。設定を保存するのをクラスにまとめて
しまえば、後々変更するのも容易になるからね。
ただ、.NET FrameworkにはXMLに保存する機能が充実しているから、
そっちを使った方が早いから推奨しているのだと思う。
URLリンク(dobon.net)

24:デフォルトの名無しさん
08/02/22 16:58:50
ありがとうございます、XMLを試してみます、
m(_ _)m

25:しんじん
08/02/22 19:34:40
すみません、急ぎでの質問です(VB2005)

string型のデータ "200802010030" を
なんとかして "2008/02/01 00:30"という文字列に変換できないものでしょうか?

FormatやCDate等をつかってもやはりうまくいきませんでした。
よろしくお願いします

26:デフォルトの名無しさん
08/02/22 19:49:16
駄目だったコードぐらい書け

27:デフォルトの名無しさん
08/02/22 21:28:54
Excelのセルに値を入れるのはわかってるんですけど、
Excelのセルに例えば<A>と書き込んで、プログラムから
その<A>があるセルに値を入れたい場合、いい方法ってありますか?


28:デフォルトの名無しさん
08/02/22 21:52:12
VBって関数型言語みたいにアルゴリズムの評価もできるのですか?

29:デフォルトの名無しさん
08/02/22 21:54:15
>>25
アホか
文字列でいいなら
Dim a As String = "200803011030"
a = a.Insert(4, "/").Insert(7, "/").Insert(10, " ").Insert(13, ":")
だけど本当に文字列でいいのか?

30:デフォルトの名無しさん
08/02/22 22:02:31
まわりくどいのがいいならw
a=
datevalue(a).tostring("yyyy/MM/dd HH:mm")

31:デフォルトの名無しさん
08/02/22 22:22:50
VisualStyleをXpスタイルで使用しているときの TabControl のTab
の出ている位置についてですが、これを「上」以外の位置にしたとき、
Tab の表示されている向きが上向きになっていて違和感がありました。

これがVisualStyleをクラシックスタイルにしてあると、表示される向き
が、位置に対して逆向きになってくれて正常でした。VisualStyleがXp
スタイルの場合でも正常な向きにしたいのですが、方法はありましたら
教えてください。よろしくお願いします。


32:デフォルトの名無しさん
08/02/22 22:28:37
>>31(すみません訂正します)>方法はありましたら→方法がありましたら


33:31
08/02/22 23:07:18
VisualStyleに関係する現象としてもうひとつあるのですが、
ListViewでのIconの表示についてです。

アイコンがStrechされるのかアイコンの画像がぼやけてしまうこと
があり、どうもVisualStyleをXpスタイルにしてタイトルバーの幅を細く
するとなることがわかりました。もしこの現象を経験された方で解決
の方法知っておられる方いらっしゃったらどうか教えてください。

IconのImageがStrechされないようにする方法があればお聞きしたい
です。PictureBoxのようなそうしたプロパティはばいようで、しかも
これがVisualStyleがクラシックスタイルだと起きず、Xpスタイルのとき
にだけ起こるようでした。

34:しんじん
08/02/22 23:27:04
>>29-30
おお~ありがとうございます!
時間なくて結局普通に&で連結しちゃいましたが
そういうやり方やっぱりあったんですね~
ど素人なものですみません

35:31
08/02/23 07:58:27
>>31ですが、

Tabの位置が左と右の場合、VisualStyleがクラシックスタイルだと
Textが表示されるのに、XpスタイルだとTextが表示されない状態
になります。

TabControlのTabをXpスタイルで正常に表示するテクニックはある
でしょうか・・・。

36:デフォルトの名無しさん
08/02/23 09:19:01
ListViewから値の取得方法を教えてください。
たとえば
01 02 03 04 05
11 12 13 14 15
21 22 23 24 25
31 32 33 34 35
のようなListViewから4列3行目の(24)を取得したい。
また、4列3行目の(24)の値を変更したい。

VB2005です
よろしくお願いします。

37:デフォルトの名無しさん
08/02/23 11:07:48
ListView.Items
ListViewItem.SubItems

38:31
08/02/23 17:15:59
VisualStyleについては、一応

<System.STAThread()> _
Public Shared Sub Main()
Application.EnableVisualStyles()
Application.DoEvents()
System.Windows.Forms.Application.Run(New frmTaskTypeManager)
End Sub 'Main

も入れてみましたが、このTabControlのTab表示が対応しない状況は
直りませんでした(OSはXpPro(32Bit)なので、Helpによれば効かない
のかもしれません)。

仮にOwnerDrawするとしたら、Tabの表示Rectangle自体を描画する
必要があるかと思いますが、そういうことは可能なのでしょうか?
どうもGetTabRect()はあるのですが、このRect自体を描くことは
可能なのでしょうか、ご指導くださればありがたいです。

39:デフォルトの名無しさん
08/02/23 19:00:42
なにそのDoEvents

40:デフォルトの名無しさん
08/02/23 19:34:39
>>39
どうもです。一応、
VisualStyle有効時にTabControlのタブに画像が表示できないことがある
URLリンク(forums.microsoft.com)
を参考にして入れてみました。

ところで、TabControlのTabAlignmentは、みなさんXpでVisualStyle
を使っているときに、「上」以外にして正常に表示されているでしょうか、
その辺まず知りたいのですが、いかがでしょうか?


41:デフォルトの名無しさん
08/02/23 19:43:52
Win32APIのmouse_eventでマウスのホイール操作をしようと思い次のコードを書いたのですが、うまく動作しません。

'宣言
Private Declare Sub mouse_event Lib "user32.dll" (ByVal dwFlags As Integer, ByVal dx As Integer, ByVal dy As Integer, ByVal dwData As Integer, ByVal dwExtraInfo As Integer)

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
System.Threading.Thread.Sleep(2000)
Call mouse_event(&H80, 0, 0, 120, 0)
End Sub

このコードを動作させると、例えばブラウザをアクティブにしておいても、スクロールされません。(マウスのホイールではスクロールされる)
他のクリックなんかは問題なく動作するんですけど…。
mouse_eventではホイールはサポートされてないんでしょうか?
それとも、値が間違っているのでしょうか?

42:デフォルトの名無しさん
08/02/23 19:51:47
定数間違えてる

43:デフォルトの名無しさん
08/02/23 20:09:21
>>42
どこが間違っているのでしょうか…。
MOUSEEVENTF_WHEELで検索しても、スクロールする定数は&H80でdwDataの値は120となっているものが多いのですが…。
色々な値で試してみても、ミドルクリックがされるくらいで、スクロールされるものはありません。

44:デフォルトの名無しさん
08/02/23 21:23:10
URLリンク(www.google.co.jp)
おいらの目には80には見えない

ていうかWin32API呼び出すならWindows SDK入れろと
ヘッダ見るのが一番確実なんだから

45:デフォルトの名無しさん
08/02/23 22:22:43
>>44
Call mouse_event(&H800, 0, 0, 120, 0)
にしたら無事動作致しました。

ただ、最初のテストコードではスクロールできなかったので、次のようなコードでテストしました。
Dim i As Integer = 0
Do
System.Threading.Thread.Sleep(500)
mouse_event(MOUSEEVENTF_WHEEL, 0, 0, 120, 0)
i += 1
Loop Until i = 10
&H80はXButtonを押す動作でしたね…。
今、Windows SDKをダウンロードし終わったので、以後Windows SDKで調べるようにします。
Windows SDKでWin32APIの詳細がわかることは知りませんでした、勉強になりました。
大変ありがとうございました。

46:31
08/02/24 08:52:39
>>40>>38 (自己レス)
やってみると、TabControlのAlignmentによってTop以外の位置に来たときは
OwnerDrawで普通にRectangleをe.Boundsから取得してそこを適当な
BrushでFillすれば、その形は正常な向きのTabになってくれるようでした。
この件は解決とします。

後は>>33ですが、これもまさかOwnerDrawで解決とかでしょうか・・・
(一応、タイトルバーの幅には一定の許容限界があるようで、18より
小さくするとNGのようです)

47:デフォルトの名無しさん
08/02/24 23:08:31
初心者です。よろしくお願いします。

i = 0 J = 0
if aryData(i,j) = aryData(i+1,j) then

(0,0) = (1,0)
(0,0) = (1,1)
(0,0) = (1,2)
(0,0) = (1,3)
(0,0) = (1,4)
という感じで表で言うと斜めに比較を繰り返して行きたいのですが
(同じ数があるかを1つ1つ調べたい)
j = j+1 をすると左のaryData(i,j)のjも+1されてしまいます。
どうすればよいのでしょうか。




48:デフォルトの名無しさん
08/02/24 23:30:05
もう一つkでも用意すりゃいいんじゃねって言うか正直意味分からん

49:デフォルトの名無しさん
08/02/24 23:31:05
つFor~Next

50:デフォルトの名無しさん
08/02/24 23:38:22
書き方悪くてすいません。
     i , j i,j
if aryData(0,0) = aryData(1,0) then
if aryData(0,0) = aryData(1,1) then
if aryData(0,0) = aryData(1,2) then
というように、       ↑
   同じaryDataって配列のここの数値だけを動かしたいんです。


51:49
08/02/24 23:38:45
Dim r As Integer = 0
Dim c As Integer = 0

If aryData(r,c) = aryData(r + 1,c) Then
For j As Integer = 0 to 9
(0,0) = aryData(r,c + j)
Next j
End If

こういうことだと思うが1行目がなんか気持ち悪い

52:デフォルトの名無しさん
08/02/24 23:39:09
ずれた orz

53:デフォルトの名無しさん
08/02/24 23:40:55
>>51
そうやればいいんですか!ありがとうございました!


54:デフォルトの名無しさん
08/02/24 23:46:46
>>51
すいません。もう1つ質問いいでしょうか。
(0,0) = aryData(r,c + j)
で、次に(0,0)を(0,1)にして
(0,1) = aryData(r,c + j)
としていくにはどうすればいいのでしょうか。。

55:デフォルトの名無しさん
08/02/25 08:54:24
>>54
応用もできないならプログラム辞めた方がいいよ。

56:SIN
08/02/25 11:30:50
すみませんVB2005でWebページを作成しているのですが
とある条件のときに、例えば

・TextBox1の入力内容が「A」ならそのまま処理実行
・TextBox1の入力内容が「B」ならばメッセージボックス(OK/キャンセル)を表示してOKのときだけ処理を実行する

といったことはどう記述すれば良いのでしょうか?

☆Botton1.Attributes("onclick") = "return confirm('実行します 宜しいですか?')"

といった記述を
Protected Sub Botton1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Botton1.Click

End Sub

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

End Sub
に入れてみましたが、ボタンクリック2回目以降はメッセージボックスが表示されるのですが
1回目に表示されません。(Botton1_Click内は押されたあとなので当然ですが・・^^;)

なにか良い方法がありませんでしょうか?

57:デフォルトの名無しさん
08/02/25 12:21:30
VS2005Proでイミディエイト・ウインドウが出せずに困りました。
[デバッグ]-[ウインドウ]でもその中にイミディエイト・ウインドウが
ありません。オプション設定が必要なのでしょうか?

58:57
08/02/25 12:36:53
>>57
設定でした、解決。
URLリンク(tukaenai-pg.cocolog-nifty.com)


59:デフォルトの名無しさん
08/02/25 14:13:22
>>56
こっちの環境では1度目のボタンクリックでメッセージボックスは表示されたぞ。

これとは違う話で、テキストボックスでenterキーが押されたときの処理
などが関係してるのでは、と思ったけど、どうかな?
VB2005+VWD2005

60:SIN
08/02/25 15:12:23
>>59
あ、すみません、説明がわうかったです^^;
ベタでPageLoadに
☆Botton1.Attributes("onclick") = "return confirm('宜しいですか?')"
を書いちゃうといつボタンを押しても必ずMsgBoxでちゃうんですけど
そうじゃなくて特定のIF条件のときだけMsgBoxをだしたかったんです。

ちなみに今 難しくて頭おかしくなりそうですがJavaScriptを使って

Protected Sub Page_Load(・・・) Handles Me.Load
 Dim sc As String
 sc = "<SCRIPT LANGUAGE='JavaScript'>"
 sc &= "function aaa(){"
 sc &= " var str='';"
 sc &= " with(document.form1){"
 sc &= " if(条件式){"
 sc &= " str = 'OK?\n';"
 sc &= " return confirm(str);"
 sc &= " };"
 sc &= " }"
 sc &= "}"
 sc &= "</SCRIPT>"
 Page.ClientScript.RegisterStartupScript(Me.GetType, "InputChk", sc)
 Me.Button1.Attributes.Add("onclick", "return aaa();")
End Sub

みたいな感じでやろうとしてます
もっと簡単な方法があればよかったんですけど・・・

61:デフォルトの名無しさん
08/02/25 15:19:12
>>60
Webアプリである以上、ある条件を満たした時のメッセージボックスは
JavaScript等を使わないと無理だね。
JavaScriptなしで実現しようとするのならば、メッセージボックスにあたる
ページを別でページを作り、とかしか方法は無いね。

ASP.NETは、検証コントロールを使えば良いという考え方があるから、
そういう機能がついてないのかもしれない。

62:デフォルトの名無しさん
08/02/25 15:41:59
>>60
Me.Button1.Attributes("onclick") = "if(document.getElementById('" & Me.TextBox1.ID & "').value == 'A'){return confirm('宜しいですか?');}"
といった感じでいいんでない?

63:デフォルトの名無しさん
08/02/25 15:58:52
ああ、そうだな。javascriptって改行関係ないぞ。
試しにメモ帳使って書いてみたら分かる。

64:SIN
08/02/25 16:01:17
>>61-62
ありがとうございます
参考にさせていただきます~もっと簡単にできる機能つけてくれないかな~VS2009とかで^^;

65:SIN
08/02/25 16:02:41
>>63
thx!そうなんですね

66:デフォルトの名無しさん
08/02/25 16:19:47
あるフォームAから別のフォームBを呼び出して、Bが閉じられたら Aで特定の処理をしたくて、
↓みたいにやってんだけど、この場合もRemoveHandler しとかないとないとまずいのかな?

フォームA
Private Sub ButtonA_Click
    with new フォームB
       .Show
       AddHandler .OnCloseB, AddressOf A
    End With
End Sub

Private Sub A
           ← ここでRemoveHandler は必要?
End Sub


フォームB
Public Event OnCloseB(ByVal sender As Object, ByVal e As EventArgs)
Private Sub B_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    RaiseEvent OnCloseB(Me, New System.EventArgs)
End Sub


67:デフォルトの名無しさん
08/02/25 16:31:06
ShowDialogじゃだめなのか?

68:デフォルトの名無しさん
08/02/25 16:48:07
フォームAでは、リアルタイムで変わる状況をモニタリングしてるから
ShowDialogじゃまずいんですよね
現状、特に動作には問題ないんだけど>>66 は少し気になってて、
プログラミングに詳しい人からすると、まずいやり方なのかな?と思って聞いてみた

69:デフォルトの名無しさん
08/02/25 17:22:15
起動中に何万回とShowCloseするなら問題あるね。

70:デフォルトの名無しさん
08/02/25 22:41:09
Timerって同時にどれくらい使えるんだろ。 制限とか注意事項とかあんのかな?

71:デフォルトの名無しさん
08/02/25 23:26:47
スペックが許す限りb

72:デフォルトの名無しさん
08/02/25 23:42:53
Timerは一定時間ごとにコードを実行するだけだから、同じ間隔で複数実行するようにしても、一つ終わって次ってなるだけ。
わかってると思うがBackGroundWorkerみたいに別スレッドで処理するわけじゃないから、Timerのコードを処理してる間は同じスレッドの処理は止まる。
スペックっていうより、処理の重さでGUIの反応が無くなるのに耐えれる限りだと思うな。

73:デフォルトの名無しさん
08/02/26 00:03:51
別にInterval自体は長くできるわけで、
そういう意味ではスペックだとおもうけどなー

74:デフォルトの名無しさん
08/02/26 00:05:58
Timerって安全なDoWorkって意識だったけど違うの?

75:デフォルトの名無しさん
08/02/26 00:11:40
処理が瞬時に終わるならね。

76:デフォルトの名無しさん
08/02/26 00:14:59
Timerってどのタイマの話だよw
どのタイマの話としても72の話はナンセンスに思うけど。

77:デフォルトの名無しさん
08/02/26 00:16:33
当然、ポトペタで落とせるタイマでそ。
System.Windows.Forms.Timer

78:デフォルトの名無しさん
08/02/26 00:18:02
だとしたら「同じスレッドの処理は」ってくだりは何?

79:デフォルトの名無しさん
08/02/26 00:18:33
っていうか、System.Timers.Timerもポトペタできるよw

80:デフォルトの名無しさん
08/02/26 00:22:29
今、LABEL継承して、内部にTimerかませて時刻表示するユーザコントロールつくって
テストしてみた。配置したら自動で時計になるやつね
で、フォームに180個貼り付けて実行してみたら、CPU頑張ってたけど無事に使えてた
画面は圧巻だったよ

81:デフォルトの名無しさん
08/02/26 01:28:31
System.Net.Sockets.UdpClientを使って指定したIPにデータを送信する事を試しているのですが、byte型以外のデータを送る事って可能でしょうか?

と、言いますのも、"-1"の値を送りたくて色々と試しているんですが、どうしても"45,49"という形になってしまうのです。

82:デフォルトの名無しさん
08/02/26 02:08:42
-1という文字列を送りたいわけ?ASCIIで?

83:81
08/02/26 02:47:29
>82様
出来れば数字として送りたいです。
byte型だと0~255しか使えなかったので、それ以外の型ならなんとかなるかな?という安易な発想で調べてます。

色々と調べて試していますが、正直解らずじまいで困ってます…。

もうちょっと調べてみます。
って、こんな時間ですね orz

84:デフォルトの名無しさん
08/02/26 03:09:23
コンピュータ上では、どんなデータも1か0のビットの並びでしかない。
そして.NETのByteはビットを8つ並べただけの型。
故に、UdpClientはByteの配列しか扱えないが、
(8ビット単位という制約付で)どんなデータでも送れる。

あるバイト(もしくはビット)の並びがどういう意味を持つかは、
情報の送り手と受け手の解釈次第。

-1を表すのに45, 49というデータを送ったとして、受け取った側が-1と解釈すれば、
それは立派に-1という情報を送ったことになる。

さて、MemoryStreamとBinaryWriter使えば83の考えていることに近いのかな。

85:83
08/02/26 04:37:36
>84様
MemmoryStreamとBinaryWriterで調べなおしたら「構造体へのポインタからByteの一次元配列へのキャスト方法」という所にたどり着き、そこを参考にしてテストPGを起こしています。

とりあえず理解しながらやらないといけないと思うので、ここを参考にして、どこで何をやっているかをじっくり学びながらやっていきます。

ありがとうございました!

86:デフォルトの名無しさん
08/02/26 10:10:26
いや、ポインタとかこの件では関係ないんじゃないか

87:デフォルトの名無しさん
08/02/26 14:03:33
Vistaのエクスプローラにあるアドレスバーって、中にコンボボックス
とか配置してるようだけどあれって.NET標準では無いよね?
ユーザーコントロールとかで作ってるんでしょうか??すげーえぐい
動作するんだけど・・・

88:デフォルトの名無しさん
08/02/26 15:03:25
>>87
コントロールを配置してそれで終わりってわけじゃないみたいだね。
こういうのは見つけたけれど、内部的にどうやって実現しているのかまでは
分からなかった。
URLリンク(www.forest.impress.co.jp)

89:デフォルトの名無しさん
08/02/26 17:36:18
すみません初心者ですがVB.NETでの質問です

あぁあああああああああぁあ~~ああああぁ~~あ~ああ~~あああ!!!

どうすればいいでしょうか?

90:デフォルトの名無しさん
08/02/26 17:44:34
VBAで遊ぶ

91:デフォルトの名無しさん
08/02/26 17:55:26
>>89
それVB.NETじゃなくてC#じゃね?

92:デフォルトの名無しさん
08/02/26 20:58:39
>>89
スレ違い
スレリンク(tech板)

93:デフォルトの名無しさん
08/02/26 21:19:30
>>88
おぉ!情報サンクスです。やっぱし手練の人は自作してたんですね。

94:デフォルトの名無しさん
08/02/26 23:14:43
Private Const NIM_ADD = &H0
Private Const NIM_MODIFY = &H1
Private Const NIM_DELETE = &H2

たとえばこのように定数を定義するときに&H0と指定するのはどういう意味があるんでしょうか?
Hが16進数を示していることだとは思いますが、C言語だと&を使うとアドレスを使うのでそれに近いことでしょうか

95:デフォルトの名無しさん
08/02/26 23:17:42
ヘルプで &H 引け
あと型を明示しろ

96:デフォルトの名無しさん
08/02/27 03:48:45
BindingSource.Insert(index,value)

↑のvalueはヘルプを見るとObject型らしいのですが
実際にvalueには何を指定すればよいのでしょうか?
null(VisualBasicではNothing)も設定できるようですが
わかる方教えてください。お願いします。

97:デフォルトの名無しさん
08/02/27 08:20:43
好きなもの入れれば。

98:デフォルトの名無しさん
08/02/27 08:25:07
>>96
それだけの内容では答えようが無い。
もっと具体的な事を言わないと。

ソースコードなり、自分のやりたいことなり。

99:デフォルトの名無しさん
08/02/27 11:53:14
>>96
好きなもの入れて使う。
StringでもIntegerでもString()でもなんでもいい。
使うときにObject型から元の型にキャストするべし。

100:96
08/02/27 23:13:24
言葉足らずですみません。
やりたいことは現在DataGridViewのDataSourceにDataTableを設定して
DataTableの行を操作(クリックした位置に新しい行を挿入等)を行っているのですが
その操作をBindingSourceを使って出来ないか考えていました。
メソッドを見ていたらInsertというのを見つけたので使ってみたんですが、
valueの部分だけ何を指定しても"外部のデータは挿入できません"みたいな
エラーが出て困ってました。

BindingSource.Insert(BindingSource.IndexOf(BindingSource.Currect),value)

これって使い方間違えてるでしょうか?

101:デフォルトの名無しさん
08/02/27 23:43:13
System.Windows.Forms.TabControlで作ったタブって、
違うタブが選択された直前にイベントを起こすことってできませんか?
SelectedIndexChangedだと、タブが選択されて他のタブが表示されてからイベントが起きますが、
タブがクリックされる→クリックされたタブの内容が表示される
の内容が表示される前にイベントを実行して、その後タブ移動をしたいのです。

その間を補うイベントって作ったりする方法があれば教えてください。

102:101
08/02/27 23:49:43
いまmsdn見たら、deselectingイベントとかは全部2.0で追加みたいですね・・・
1.1じゃどうしようもないのかなぁ・・・

103:デフォルトの名無しさん
08/02/28 00:11:33
>>102
初期バージョンは変なバグもあるから、なるべくなら新しいのをお勧めする。

104:デフォルトの名無しさん
08/02/28 00:27:35
コントロール関係のバグは2.0の方が多い印象があるけどね個人的にはw

105:デフォルトの名無しさん
08/02/28 05:34:25
どっちでもいいじゃない

106:デフォルトの名無しさん
08/02/28 06:09:19
親のWndProcでWM_NOTIFY/TCN_SELCHANGING

107:デフォルトの名無しさん
08/02/28 16:06:54
MSDN を見ると ActiveDirectory の (LDAP の場合の) Path の書式でいくつかあるようですが、
たとえばこの二つは同じだと思っていいでしょうか?

書式A: "LDAP://onecity/CN=Users,DC=onecity,DC=corp,DC=fabrikam,DC=com"
書式B: "LDAP://CN=Users,DC=onecity,DC=corp,DC=fabrikam,DC=com"

(書式Aは、MSDN=DirectoryEntry.SchemaClassName プロパティ の項にある例、
 書式Bは、MSDN=DirectoryEntry.Path プロパティ の項の説明での書式から書ける
 はずの例です)


108:107
08/02/28 16:38:54
また、
URLリンク(msdn.microsoft.com)
では、
書式A: “LDAP://host1/OU=Sales, DC=ArcadiaBay,DC=COM”

のようになっている場合は、host1ドメインは、必ず ArcadiaBay.COM ドメイン
の上位ドメインということなのでしょうか?それとも下位ドメインなのでしょうか?

>>107のように、onecityドメイン=onecity.corp.fabrikam.comドメインで
 あっても、それを LDAP://onecity/~ のように重複するように書くことも
 あるのでしょうか?)

109:デフォルトの名無しさん
08/02/28 16:42:49
すみません。DataGridViewの使い方に関する質問です。

以下のプログラムは、Formのnew()メソッドにコードを記述する形式としていますが、
フォーム上にコマンドボタンを配置し、このコードをそのままButton1_Click()に移しても、
DataGridViewには、データが表示されません。一番下に、「DataGridView1.Refresh()」という
コードを付け加えてみても、表示はされませんでした。
ボタンをクリックした時にデータが表示されるようにするにはどうしたらよいのでしょうか。
(Accessの場合はRequeryというメソッドがあって、こういう場合はそれを追加するだけで
いけたのですが。)
URLリンク(www.microsoft.com)

110:12
08/02/28 18:20:21
>>109
リンク先全部読んだのか?
コード移しただけじゃだめだ。

リンク先の”図3 列の追加”という準備が必要。
要するに列が一個もないから行を追加しても表示されないってこと。

111:デフォルトの名無しさん
08/02/28 18:40:29
>>110
レスありがとうございます。

列の追加作業はやっています。
Formのnew()にコードをかいたら、データが表示されるところまでは確認しています。
そして、そのコードをそのままButton1_Click()に移すと、列見出しのみが表示されるだけで、
実データが表示されないのです。

112:110
08/02/28 19:51:09
>>111
それは失礼した。

コンストラクタ内とButton1クリックイベント内で動作が違うというのはおかしいね。
FormのLoadイベントか何かでDataGridView1のプロパティを書き換えてたりしない?
コンストラクタ以降でButton1_Clickイベント以前のイベントで何かやらかしてる悪寒。

113:109
08/02/29 10:21:40
>>112
レスありがとうございます。
アドバイスをいただいたので、とりあえず昨日動かしてみて
動かなかったプロジェクトを開いて実行してみると、きちんと動作しました。
あれから設定は何も触っていませんし、別なプログラムも組んでいません。
コードもいじっていないので、これは、IDEの不具合の可能性が高いと
思われます。どうしてデータの表示だけが出来なかったんでしょうね。
ご迷惑おかけしました。

114:デフォルトの名無しさん
08/02/29 11:57:23
質問させてください。
VB2003で他のアプリケーションにファイルを送ることは可能でしょうか?
やりたいことはフォームでユーザーが指定したフォルダにある画像ファイルを、ひとつのビューアーでまとめて閲覧するという動作です。
よろしくお願いします

115:デフォルトの名無しさん
08/02/29 12:04:41
他のアプリケーションってのは自作?
それとも他人の作品?

116:デフォルトの名無しさん
08/02/29 12:05:33
自作ではないフリーのビューアーです

117:デフォルトの名無しさん
08/02/29 13:31:09
Process使ったらどうだったの?
例えば、
Process.Start(@"C:\Program Files\free_viewer.exe", @"C:\guro001.jpg");
とか。

118:デフォルトの名無しさん
08/02/29 14:27:12
そのビューアはファイルのD&Dにしか対応していないのか、
もしくはコマンドライン引数でパス渡せば開いてくれるのか、その辺は調べた?
後者なら>>117

119:114
08/02/29 14:28:01
>>117
ビューアーによってはそのやり方で開きますが、今回使用するビューアーはダメみたいです。
ちなみに開く画像ファイルは医療用のDicom画像ファイルなので、使えるビュアーは限られています

120:デフォルトの名無しさん
08/02/29 15:54:35
>>119
VBで表示するところまでを作りこむ検討をするか、
もしくは、別に、その医療用のなんとかという画像を自動で
jpgに変更するバッチ処理させるのを検討するかになるだろうね。
ビューアーが対応してないんだから。

121:デフォルトの名無しさん
08/02/29 17:06:34
>>114
ここみるとVBでDicomとやらを開けなくもなさそうだぜ。
URLリンク(www.nbrains.net)

使い慣れたビューワで表示したいってのなら見当違いなレスですまんが。


122:114
08/02/29 17:41:20
VBでDICOMを表示するのはできなくはないですが、
viewerの細かい機能まで実装するとなると、作業量が膨大になるので一介の病院勤務PGもどきにはちっと厳しいです。
いろいろ調べていたらsendMessageで何とかなりそうな気もするのでもう少し調べてみます。
ありがとうございました

123:デフォルトの名無しさん
08/02/29 17:50:07
業者に頼まないのか・・・

124:114
08/02/29 18:07:29
医療用ソフトウェアは非常に高価かつ病院独自のいろいろなカスタマイズが必要なため、
自分で作れる範囲ではすべて自作しています。
今は病院の経営も楽ではないようです。

>>121の openDICOM.NET のこれに非常に興味を持ちましたが当然日本語の解説なんてないよなー
とりあえず紹介ありがとうございました

125:デフォルトの名無しさん
08/02/29 20:54:46
すみません、型変換について教えてください。
Integer型のNumericUpDownカスタムコントロールを作成していて気になったのですが、
内部でどういった型変換をしているのでしょうか?

作成した自作コントロールは以下の構文を追加したのみ。VB.2005で作成。
ValueにSetしたときにTextにもSetしています。

  Private _Value As Integer
  Public Shadows Property Value() As Integer
    Get
      Return _Value
    End Get
    Set(ByVal value As Integer)
      If _Value = value Then Return
      _Value = value
      MyBase.Text = value.ToString ・・・(ア)
      'MyBase.Value = value ・・・(イ)
    End Set
  End Property

この自作コントロールと標準コントールの速度比較をしてみました。
方法はValueに代入する値を変化させながら100件ループ。
結果、標準コントロールでは約100ミリ秒、自作コントロールの(ア)では約250ミリ秒、
(イ)では約100ミリ秒となりました。
自分でTextにSetする(ア)よりもMyBase.Valueを介した(イ)が2.5倍ほど速いとなると
ToStringの変換が遅いというよりMyBase.Valueの中でどのようにTextにSetしているかが
気になるところです。
型変換の方法?もしくはTextにSetされるタイミングの問題?なのか分かりませんが
何かご存知の方いらっしゃいましたら教えてください。よろしくお願いします。

126:デフォルトの名無しさん
08/02/29 22:03:22
baseのText使えば文字列を数値にパースするんだもの
より遅いに決まってるだろjk

つまりbase.Textに設定する意味はない

127:デフォルトの名無しさん
08/02/29 22:09:05
NumericUpDown.Textはインフラストラクチャだぞ

128:125
08/02/29 22:15:50
>>126
>>127
レスありがとうございます。

それでは画面に表示させるにはどのように設定したらよいのでしょうか?

129:125
08/02/29 22:54:07
MyBase.Text = value.ToString

Me.Controls(1).Text = value.ToString
に変更したら約100ミリ秒まで短縮することができました。
この方法でよいのでしょうか?

130:125
08/03/01 00:17:14
なんか基本からダメみたいです。
ボタンクリックから入力したときにValueプロパティにSetしてくれないみたいです。
MyBase.ValueプロパティがSetしているプライベートフィールドの変数名は何ていうんでしょうね。
側だけIntegerにしてGet Return MyBase.Value、Set MyBase.Value = Valueってするのが手っ取り早そうな気がしてきました。

131:デフォルトの名無しさん
08/03/01 00:23:39
>Integer型のNumericUpDownカスタムコントロール
というものの存在意義がまずないからね

132:125
08/03/01 00:38:06
>>131
受取り側の変数がDecimal型以外の場合に使用する予定です。
専用コントロールを用意しておけば変換を意識しなくていいので。

133:デフォルトの名無しさん
08/03/01 00:57:44
VBとは関係ないんですが「自動修復情報の保存」の頻度って変えられないでしょうか?
デザイン画面弄ってると頻繁に作業中断させられて困ります

134:デフォルトの名無しさん
08/03/01 01:31:05
>>133
メニューバーから「ツール」-「オプション」を選択して「環境」-「自動バックアップ」

135:デフォルトの名無しさん
08/03/01 01:35:42
>>134
ありがとうございました。5分から15分にしてみました。

136:デフォルトの名無しさん
08/03/02 09:59:45
MonthCalendarの色がVistaで変更されないのはなんで?

MonthCalendar.TitleBackColor = System.Drawing.SystemColors.Control
MonthCalendar.TitleBackColor = System.Drawing.SystemColors.ControlText
MonthCalendar.BackColor = System.Drawing.SystemColors.Control
MonthCalendar.ForeColor = System.Drawing.SystemColors.ControlText

こんな感じでセットしてもXpでは変更されるがVistaでは変更されない。


137:デフォルトの名無しさん
08/03/02 13:59:25
VS2005の[ツール]-[オプション]の「デバッグ」の設定で、
「出力ウインドウへの出力をすべてイミディエイトウインドウにリダイレクト」
にすると、
 Debug.Print("・・・")
 Console.WriteLine("・・・")
 TraceSourceオブジェクトのTraceEventなどの出力
も全部イミディエイトウインドウにリダイレクトされていましたが、これを
イミディエイトウインドウに出したいものだけを出すようにしたい場合の
設定がありましたら教えてください。

138:デフォルトの名無しさん
08/03/02 15:35:34
>>136
事故解決しました。

「Xp Visualスタイルを有効にする」を無効にしたらVistaでも変更されました。
なんだよ、コモンコントロールなのにVista未対応かよw

139:デフォルトの名無しさん
08/03/03 01:30:12
半月ほど前からプログラミングを勉強し始めてVB2008を使ってるんですが、
iniファイルからの数値の読み取りはできたんですが、
文字列の読み取りが上手くいきません。
ググって出てきた、iniからの読み取り方法を紹介してる
いくつかのページとにらめっこしならがら試しているのですが、
コピペしつつ何度試してみても、
読み取れなかった場合のデフォルトの文字列が返されてしまいます。
VB2008だと何か仕様が違うとかなのでしょうか?
参考になりそうなページがあれば教えてもらえると助かります・・・。
ちなみにOSはXPです。

140:デフォルトの名無しさん
08/03/03 01:44:52
URLリンク(homepage1.nifty.com)
VisualBasic中学校

141:デフォルトの名無しさん
08/03/03 01:48:14
それかコレ
URLリンク(jeanne.wankuma.com)
iniファイルの読み込みまたは書き込みの提供するクラス

142:デフォルトの名無しさん
08/03/03 04:10:50
>>140-141
VBプログラミングに関してはVisualBasic中学校で勉強してました。
VB.NET以降でのAPIの扱い方のページがまだ書かれてなかったため、
今回紹介してもらったページも含め各所で調べてたのですが上手くいかなかったので、
今回質問させていただきました。

前置きはこのくらいにして、>>141で紹介してもらったライブラリを使用したところ、
数値も文字列も問題なく読み込むことに成功しました。
どうもありがとうございました。

ライブラリの使用方法がわからず調べまわってる内に、気付けばこんな時間・・・。

143:デフォルトの名無しさん
08/03/03 22:05:20
.net 1.1です。
数字のみ入力可能のテキストボックスが20個ある画面で、
その入力値に重複がある場合
重複しているテキストボックスをすべて黄色にする。
というものをつくりたいのですが、
何かスマートなアルゴリズムはありますか?

現在のところ、入力値をキーにハッシュテーブルに格納していき、
重複ができたらそのキーのテキストボックスを黄色にするという案を思いつきましたが、
もっとスマートなのがあれば教えてください。

144:デフォルトの名無しさん
08/03/03 22:13:48
入力しているかいないかを判別するための変数を20個作り、
入力されていれば他の入力されているデータと比較してみる手はどうですか?
20個のTextAlignChangedイベントに書いておいたら逐次判断するよ

今すぐに考えたらこんなものしか思い浮かばない・・・

145:デフォルトの名無しさん
08/03/03 22:14:57
それかバックグラウンドでずっとデータを見張らせるとか
そっちの方がお手軽かな

146:デフォルトの名無しさん
08/03/03 22:28:44
そういえばラッピングってどうやるのですか?
Cなどで書いたコードをVB.NETの処理系を用いて実行形式に変換するらしいのですが、
どういう処理をしているのか分かりません。
詳しく知っている方教えてください。

147:デフォルトの名無しさん
08/03/03 22:29:00
>>143
List(of TextBox)を継承して同じテキストを持つテキストボックスのグループを
あらわすクラスをとりあえず作ったら?

っていうか「グループ」が複数あっても全部黄色でいいの?w

148:デフォルトの名無しさん
08/03/03 22:39:23
>>146
ラッピングって言葉自体はサランラップと同じ意味しかない

149:デフォルトの名無しさん
08/03/04 11:49:34
>>146
言ってることがむちゃくちゃだけどP/Invokeのこと?
ヘッダ見ながらひたすらDllImport宣言を書きまくるだけ

150:デフォルトの名無しさん
08/03/04 12:08:49
そうなんですか
Thxです

151:デフォルトの名無しさん
08/03/05 00:09:41
デザイナの読み込み時に 1 つ以上のエラーが発生しました。エラーは以下に一覧表示されます。
コードの変更が必要なエラーもありますが、プロジェクトを再度ビルドすると解決できるエラーもあります。


VB2005で開発していたら突然このようなエラーが発生しました。
リビルド、再起動と試しましたがダメでした。
検索しても困ってる人は多いということが分かったのですが、
それらしい答えが見付かりませんでした。
デザイナは開けるが実行は出来るという人もありましたが実行も出来ません。

解決方法教えてください。

152:デフォルトの名無しさん
08/03/05 00:51:42
>>151
情報が足りないからなんともいえんな。
フォーム内のコントロールの種類とか、Designer.vbをいじってないかとか、
継承コントロールを使ったりしてないかとか。

それすらも書けないようなやつはプログラミングやめとけ。
向いてないから。

153:デフォルトの名無しさん
08/03/05 01:18:49
>>151
それってVB.NETの頃からの致命的なエラーだよ。
2008になっても修正されていないと聞く。

154:デフォルトの名無しさん
08/03/05 09:15:37
VB.NET 2003なのだが
画面をロードしたときにフォーカスの設定をしたいのだがやり方が解らない。

Me.ActiveControl = Me.フォーカスを移したいコントロール名.Focus

をやろうとしても、「Me.」の後に「ActiveControl」が出ない
無視して入れたとしてもエラーになる
だれか解る方いらっしゃいます?

155:デフォルトの名無しさん
08/03/05 09:27:37
Me.フォーカスを移したいコントロール名.Focus
だけじゃだめかい?

156:デフォルトの名無しさん
08/03/05 09:35:30
>>151
経験ある。その時はデザイナ系触ってなくてロジック層のクラスを触ってただけなのにフォームに表示を戻しただけでそうなったんだよな。
どうにもならなかったら新しいプロジェクトを作成して、そこに元のファイルを順に追加するしかないのかな?

>>154
Call Me.フォーカスを移したいコントロール名.Focus()
でいけると思う。

157:デフォルトの名無しさん
08/03/05 09:41:22
>>156
「フォーカスを移したいコントロール名」の後にfocusが出てこない。
無理やり入れたとしてもエラーになる

使えないのかな

158:デフォルトの名無しさん
08/03/05 09:44:56
>>157
そのコントロールはなんですか?

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