2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

VB.NET質問スレ(Part31)

1 :デフォルトの名無しさん:2009/08/22(土) 17:44:56
前スレ

VB.NET質問スレ(Part30)
http://pc12.2ch.net/test/read.cgi/tech/1242522019/l50

テンプレは>>2

2 :デフォルトの名無しさん:2009/08/22(土) 17:46:03
MSDN
http://msdn.microsoft.com/ja-jp/library/ms229284.aspx
どぼん!のVB道のトップページとTipsページ
http://dobon.net/vb/
http://dobon.net/vb/dotnet/index.html
Insider.NET
http://www.atmarkit.co.jp/fdotnet/index.html
宇宙仮面の C# プログラミング
http://uchukamen.com/
.NET TIPS
http://www.atmarkit.co.jp/fdotnet/dotnettips/index/index.html
緑のバイク ★ 初めてのC# プログラム全般
http://homepage3.nifty.com/midori_no_bike/CS/
VB.NETとC#でデザインパターン
http://hccweb1.bai.ne.jp/tsune-1/
匣の向こう側
http://www.ne.jp/asahi/nami/mei/index.html
WisdomSoft
http://wisdom.sakura.ne.jp/
じゃんぬねっと
http://jeanne.wankuma.com/
どっとねっとふぁん - C# Tips And Samples -
http://homepage3.nifty.com/dotnetfan/index.html
http://dotnetfan.org/
C#プログラミングTips
http://www.atmarkit.co.jp/fdotnet/csharptips/index/csharptips_index.html


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

4 :デフォルトの名無しさん:2009/08/22(土) 17:47:37
Windows Api programming in C# , VB.NET, and VB6. Examples of P/Invoke and DllImport with Source code
http://custom.programming-in.net/
CodeZine
http://codezine.jp/
ConvertCSharp2VB
http://www.kamalpatel.net/ConvertCSharp2VB.aspx
@IT:.NET Tools
http://www.atmarkit.co.jp/fdotnet/tools/index/index.html
SharpLibrary Redirector
http://www.sharplibrary.com/
MSDN アカデミック アライアンス 技術資料
http://www.microsoft.com/japan/msdn/academic/articles/
「300 秒でズバリ !!」&「10 行でズバリ !!」シリーズ
(VS2005) http://www.microsoft.com/japan/msdn/thisweek/300x10/
(VS.NET 2003) http://www.microsoft.com/japan/msdn/thisweek/wednesday/
PAPA'n VB
http://papanvb.i-love-vb.net/
(旧コンテンツ) http://www.mitene.or.jp/~sugisita/index_old.html
VB レスキュー花ちゃん
http://www.bcap.co.jp/hanafusa/dotnet/index.html
VB中学校
http://homepage1.nifty.com/rucio/main/main.htm
初心者から中級者のためのVB
http://www7b.biglobe.ne.jp/~vb_beginner2008/

テンプレここまで

5 :デフォルトの名無しさん:2009/08/22(土) 19:38:31
乙と言わざるを得ない

6 :デフォルトの名無しさん:2009/08/22(土) 21:02:00
乙。

7 :デフォルトの名無しさん:2009/08/22(土) 22:44:39
前スレ>>997

For I = 1 To 10
PictureBox@.Image = ???
Next

というコードで@の部分にfor~nextの I を入れたいのですがどうすれば入れられるでしょうか

おねがいします

8 :デフォルトの名無しさん:2009/08/22(土) 22:50:07
またこれネタか

9 :デフォルトの名無しさん:2009/08/22(土) 23:26:15
BindingFlags指定とか無視しているけど、大体こんな感じ?
DirectCast(Me.GetType().GetField("PictureBox" & CStr(I)).GetValue(Me), PictureBox).Image = ???

10 :デフォルトの名無しさん:2009/08/22(土) 23:33:23
アホに変なこと吹き込むなよ・・・

11 :デフォルトの名無しさん:2009/08/22(土) 23:33:41
テキストボックスに表示してある下のような16進数なのですが

01-02-03-04-05-1A-1B-1C-1D-1E-1F

これをバイト配列に入れたいのですがどうしたら良いでしょうか。

Dim b() As Byte
b = Split(TextBox1.Text, "-")

これだとStringはByteから派生していない為配列に変換できないというエラーになってしまいます。
お願いいたします。

12 :7:2009/08/22(土) 23:41:23
>>9 ありがとうございます。そのコードを使って作ってみます。

13 :デフォルトの名無しさん:2009/08/23(日) 00:09:10
>>11
いったん String 型の配列にとって、ループで Byte に変換しながら突っ込んでいけばいいじゃん。

14 :デフォルトの名無しさん:2009/08/23(日) 00:12:37
>>11
CByte(Val("&H" & str)) 'VB的な書き方
Convert.ToByte(str, 8) '.NET的な書き方
お好きな方をどうぞ。

一行に押し込めるならこんな感じか。
Dim b = TextBox1.Text.Split("-"c).Select(Function(arg) Convert.ToByte(arg, 8)).ToArray()

15 :14:2009/08/23(日) 00:27:51
よく見たら、Array.ConvertAllの方が良かったかも。まあいいや。

16 :デフォルトの名無しさん:2009/08/23(日) 00:41:14
>>13-15
両方の方法を試してみたいと思います。
どうもありがとうございます。

17 :14:2009/08/23(日) 01:22:09
何で8進数やねん > 俺
すまないが、Convert.ToByte(str, 8)の8は16に直しておいてくれ。

18 :デフォルトの名無しさん:2009/08/23(日) 09:19:49
そういうもんは BitConverter.GetBytes で一発変換できて欲しいけどね。
ToStringの逆も面倒見ろよ。
CByteのValっていらなくない。

19 :デフォルトの名無しさん:2009/08/23(日) 10:23:21
試してみたら、確かにVal要らないわ。
だけどドキュメントにはその明確な記述が見つからない……
定数宣言の際に使える表記である以上、
VB関連の関数では当然扱える、と解釈すべきなんだろうか。

20 :デフォルトの名無しさん:2009/08/23(日) 10:58:49
>>19
CByteの実体は、
Microsoft.VisualBasic.CompilerServicesのConversions.ToByte メソッド で
これにはObjectとStringのオーバーロードがある

IDEでは、CByte(Object As Expression) As Byte とポップアップが出るけど
Expression型って何やねんw

21 :デフォルトの名無しさん:2009/08/23(日) 13:08:38
誰も言わないからあえて言うけど、
VB厨呼ばわりされたくなかったら、CByteは論外として
Converter使うより型(この話の場合はByte)のParseメソッドを
使ったほうがいいと思うよ。

>>18
BitConverterの存在理由を考えればそれはないんじゃないの。

22 :デフォルトの名無しさん:2009/08/23(日) 13:29:45
>>21
本物のVBプログラマは ToString() は使わないで CStr() を使う。
何故ならばVB IDEで色が変わるからだ。
それのほうがソースが見やすい。


23 :デフォルトの名無しさん:2009/08/23(日) 13:36:43
>>21
CByte("&H" & str)
Convert.ToByte(str, 16)
Byte.Parse(str)

VBのコーディングとして下になるほど str(16進文字) をバイト型に
変換しているのが直感的に分かりにくくなると思うがどうかな?

24 :デフォルトの名無しさん:2009/08/23(日) 13:38:47
好きなのを使えばいい。

25 :デフォルトの名無しさん:2009/08/23(日) 13:39:31
その通り。でも1つのソースの中で混ぜるなよw

26 :デフォルトの名無しさん:2009/08/23(日) 13:51:14
>>14
>Dim b = TextBox1.Text.Split("-"c).Select(Function(arg) Convert.ToByte(arg, 8)).ToArray()

目からウロコ。
1バイトずつList(Of Byte)に入れてからToArray()してたよ orz

27 :デフォルトの名無しさん:2009/08/23(日) 13:54:13
>>23
俺には理解できな発想だ。

普通に考えれば、Byte.Parseは直感的どころか明示的(ズバリそのまま)なわけで、
これ以上の分かりやすさはないと思うが。

28 :デフォルトの名無しさん:2009/08/23(日) 13:59:09
>>26
そんなネタみたいなコードにひょっとして本気で関心してるの?
悔い改めた方がいいよそういう発想。

VBerに限らず、ダメなプログラマっていうのは行数が短いことに価値がある、
という妄信に取り付かれている。

で、数ヵ月後自分で書いたコードが自分で理解できなくて困ってやがるw

プログラムっていうのは、コンパクトさよりも可読性をより優先しなくちゃダメ。

29 :デフォルトの名無しさん:2009/08/23(日) 14:04:40
>>28
こういうトリッキーなのもあるのだと関心していただけですよ〜
実際のコーディングに使ったらかなり鬼畜です。

30 :デフォルトの名無しさん:2009/08/23(日) 14:07:50
>>27
CByte("&H" & str) なんて.NET的にはお馬鹿なコーディングだけど
VB厨には分かり易いんじゃないですか?

31 :デフォルトの名無しさん:2009/08/23(日) 14:09:44
>>30
どうもそうらしいね。
俺には理解できんけど。

32 :デフォルトの名無しさん:2009/08/23(日) 14:18:11
ついつい
○ = ★ : ● = ◎ : ▼ = "あばばばば"
とか
○ = × : ● = □ : ▼ = "くぁwせdrftgyふじこlp;"
みたいにして一行に12,30文字ぐらい普通に詰めてしまう俺でごめんなさい

短めな所で改行された方が縦に長くなって見づらいんです

33 :デフォルトの名無しさん:2009/08/23(日) 14:23:08
>>31
Java屋さんですか?
.NET(特にVB.Net)はJavaと違って「ぬるい」ところがあるのが好きですw

VB.Netだとフォームのコントロールの規定値がFriendだったりします。
よそから丸見え〜w (C#.NetだとPrivate)

あまり堅苦しいこと言っちゃぁVBなんてつつけません。

34 :デフォルトの名無しさん:2009/08/23(日) 14:31:41
>>32
If ○ = ● Then ◎ = ★ : Dim □ = ▲ : △ = "うあああ"

くらいやってください。

35 :デフォルトの名無しさん:2009/08/23(日) 14:32:18
>>33
言語は関係ないよ。
何も教条主義的なことを言ってるわけじゃない。

VB6から.NETに移行した人でも「CByte("&H" & str) 」式の書き方をする人と
しない人がいる。

前者の人は、要するにあたらしい事を覚えることを拒否してるだけ。
言い換えれば、例えばちゃんと.NET Frameworkについて少しは勉強して
Byte.Paraseメソッドを知ってる人であえてCByteを使う人はまずいない。

36 :デフォルトの名無しさん:2009/08/23(日) 14:41:23
>>35
>Byte.Paraseメソッドを知ってる人であえてCByteを使う人はまずいない。

知っていてあえてCByteを使う人だって居ますよ。
新しいことを覚える事を拒否すると .NET Frameworkなんてものは使えません。
そういう人たちはVB6.0に留まってますし未だVB6.0のゴミのような保守の仕事もある。

37 :デフォルトの名無しさん:2009/08/23(日) 14:48:04
断言するけどいないよw

いやいるかもしれんが、そういう人は(そういうメソッドが存在することを)「知っている」
だけに過ぎず、ちゃんと理解してはいないんだろ。

38 :デフォルトの名無しさん:2009/08/23(日) 14:48:19
そんなん、使い分ければいいだけだろがよ。

VB6 からの移行モノとかで、周りが Choge() ばっかり使ってるなら、
CByte() でもなんもおかしくないし。

知らないから使えない、以外にも、知ってるけどわざと使わない、って選択肢もあるんだよ。

39 :デフォルトの名無しさん:2009/08/23(日) 15:01:23
>CByte("&H" & str)
VB厨てきな書き方だけど &H があるので str が16進数だと言うのはすぐにわかる。

>Convert.ToByte(str, 16)
これもToByteで16があるのでstrは16進数かなと思う

>Byte.Parse(str)

Byte.Parse メソッド (String)
数値の文字列形式を、それと等価の Byte に変換します。
パラメータ
s: 変換する数値を格納する文字列。文字列は、Integer スタイルを使用して解釈されます。
戻り値: s に指定されている数値と等価の Byte 値。

Integer スタイルって何やねん? ってことになってInteger スタイルを調べると
NumberStyles 列挙体にたどりつくと

数値基本型クラスの Parse メソッドに渡される数値文字列引数で使用できるスタイルを決定します。
この列挙体には、メンバ値のビットごとの組み合わせを可能にする FlagsAttribute 属性が含まれています。

ますます何やねん?でいまだにstrが16進数なのかどうかわからず。

こんなことになるのであえて CByte("&H" & str) を使うと。。


40 :デフォルトの名無しさん:2009/08/23(日) 15:15:05
その善し悪しは別にしても、自分が知らなかったやり方に関心(感心?)するのは普通の感覚じゃない。
いけない発想だと、無理に押さえ込む必要はないと思うけど。

41 :デフォルトの名無しさん:2009/08/23(日) 15:17:24
日本語でOK

42 :デフォルトの名無しさん:2009/08/23(日) 15:20:04
ごめんなさい、ひらがなでかけばよかったかな?

43 :デフォルトの名無しさん:2009/08/23(日) 15:23:05
>34
If 〜 Then の後に代入式三つは横スクロール必要になる事が多そうだなー
i = 1 : s = "a" : c = "."c
レベルの短さでコメント不要そうな内容なら考えるかも知れん

44 :デフォルトの名無しさん:2009/08/23(日) 15:25:43
IIfもあるよ

45 :デフォルトの名無しさん:2009/08/23(日) 15:25:56
- 感覚じゃない。(否定)
- 感覚じゃない?(肯定しつつ同意を求める)

この使い分けができない人が増えたよね。


46 :デフォルトの名無しさん:2009/08/23(日) 15:30:42
>>43
マルチステートメントはCase文でしか使わないな〜

Select Case hoge
 Case 1 : a = 2
 Case 2 : a = 3
End Select

47 :デフォルトの名無しさん:2009/08/23(日) 15:32:17
>>44
それはoption strict onだとcastしないといけないからキライ

48 :デフォルトの名無しさん:2009/08/23(日) 15:35:14
>>40
???だらけのソースだけど他のをみてもそうなので仕方なく
それに合わせる小心者なオレがいる。

49 :デフォルトの名無しさん:2009/08/23(日) 15:37:57
本物のプログラマはVBなど使わない。一般に、12歳以上になって VB を使うプログラマなどいない。

50 :デフォルトの名無しさん:2009/08/23(日) 15:43:13
>>45
なるほど、関心(感心?)した。

51 :デフォルトの名無しさん:2009/08/23(日) 15:45:09
腹へったじゃない。

52 :デフォルトの名無しさん:2009/08/23(日) 15:48:04
↑は否定、同意? 日本語って難しいな。

53 :デフォルトの名無しさん:2009/08/23(日) 15:50:36
中国語(北京語)なんか語尾の抑揚で意味が変わるらしいけどね

54 :デフォルトの名無しさん:2009/08/23(日) 15:54:49
否定や同意だけじゃないよ。

ヒント:
もぉ、おかけで仕事が増えちゃったじゃない。


55 :デフォルトの名無しさん:2009/08/23(日) 16:07:05
>>49
働いたことないの?言語選ぶなよ

マジレスだぞ☆

56 :デフォルトの名無しさん:2009/08/23(日) 16:17:01
C#で書いたものをVBのコードに変換すればいいじゃない

57 :デフォルトの名無しさん:2009/08/23(日) 16:20:40
プログラマの意図通りに100%変換できるものなの?

58 :デフォルトの名無しさん:2009/08/23(日) 20:43:17
>>39
誰も突っ込みを入れないので

Byte.Parse(str) は、10進数の変換で
Byte.Parse(str, Globalization.NumberStyles.AllowHexSpecifier) としないと16進数変換になりません。

ついでに速度も測ってみた (結構いいかげんな測定なのであまり信用できないが)

(1) Dictionary(Of String, Byte)
(2) Convert.ToByte(str, 16)
(3) Byte.Parse(str, Globalization.NumberStyles.AllowHexSpecifier)
(4) CByte("&h" & str)

(1)はジェネリックなハッシュテーブルに00〜FFをセットしてテーブル引きする方法でこれが最速
(1)を基準にすると速度は

(1) 1.0
(2) 1.8
(3) 2.8
(4)20.0

CByte("&h" & str) が予想外に遅い。
文字連結の "&" が遅いのかと思って連結をやめてもたいして変わらない。


59 :デフォルトの名無しさん:2009/08/23(日) 23:45:46
印刷ダイアログでファイルに出力をチェックして
***.prnファイルになったファイルを
VBでプリンタ(LPT1)に出力したいのですがどのようにしたら出来るでしょうか?

60 :59:2009/08/24(月) 00:24:30
すみません。出力したいのはLPT1ではなくて
USBにつないだ通常使うプリンタに設定したプリンタです。




61 :デフォルトの名無しさん:2009/08/24(月) 01:02:17
VBスレらしい質問でよいな〜

62 :デフォルトの名無しさん:2009/08/24(月) 02:08:28
>>58
マジか。CByteとかのChangeType系は
パフォーマンスが稼げるってMSDNに載ってたが、
一体、何と比較したんだろうなMS。

ParseがConvertより遅いのも意外だな。
Parseのが厳密に文字列表現を見るから、
速いかと思い込んでた。

63 :デフォルトの名無しさん:2009/08/24(月) 03:12:58
>>58
CTypeのテストをする時に、
shareのエロ動画DLが始まったんだろ。


64 :デフォルトの名無しさん:2009/08/24(月) 04:39:43
>>62,63
俺も信じられなかったんで検証してみた
たしかにCByte(str)はConvert.ToByte(str, 16) より10倍程度遅かった

Val(str)はConvert.ToByte(str, 16)より早かった
Valの戻りはDoubleらしいのでバイト型に(暗黙の変換で)代入した

そしてここで驚くべき結果
CByte(Val(str))はConvert.ToByte(str, 16)より速い
Val(str))より若干遅いだけ

Cxx関数のヘルプ見ると、インラインコンパイルされるのでパフォーマンスが向上するときもあります、とw
CByte(string)は遅いがCByte(Double)はかなり早い

CByteに文字列渡したときにいったいどんなコードにコンパイルされてるんだろうねぇ


65 :デフォルトの名無しさん:2009/08/24(月) 06:11:07
Utils.IsHexOrOctValue() ってのが遅そうだな。


66 :デフォルトの名無しさん:2009/08/24(月) 19:49:06
>>63
そういうもんにはDL専用のPCがあるw

>>64
Valなんて前世紀の遺物くらいに思っていたがやるもんだな〜

>CByte(string)は遅いがCByte(Double)はかなり早い

それは、.NETのボックス化、アンボックス化が絡んでいると思う。
参照型と値型の相互変換が遅いってやつ。

67 :デフォルトの名無しさん:2009/08/24(月) 20:00:25
何を訳のわかんないことをしたり顔で言ってるんだw
どう考えてもそんなもの無関係

68 :デフォルトの名無しさん:2009/08/24(月) 20:05:42
>>64
CByte(Val(str))とVal(str)は同じコードが生成されているので速さの違いは測定誤差だと思う。

>>67
では何が関係しているのでしょう?


69 :デフォルトの名無しさん:2009/08/24(月) 20:14:03
クリップボードからrichtextboxに貼り付けるとき、
gettext で 例えば aa の間に bを挿入したいんですが、
これやると aab になっちゃんです。 
対処法お願いします。

70 :デフォルトの名無しさん:2009/08/24(月) 20:14:05
>>64
>CByteに文字列渡したときにいったいどんなコードにコンパイルされてるんだろうねぇ

CByte(str)   ⇒ Conversions.ToByte(str)
CByte(Val(str)) ⇒ CByte(Math.Round(Conversion.Val(str)))

全然違うものになってる w

71 :デフォルトの名無しさん:2009/08/24(月) 20:31:24
>>14
皮肉にもVB厨な構文の勝利に終わったわけだなwww

72 :デフォルトの名無しさん:2009/08/24(月) 20:34:54
>>65
それが速さの原因

73 :デフォルトの名無しさん:2009/08/24(月) 23:00:14
>>47
VB9からIf演算子が追加されたよーC系の?:演算子と同等の記述ができるよー

74 :デフォルトの名無しさん:2009/08/25(火) 23:11:34
>>67
>では何が関係しているのでしょう?

いくらなんでもボックス化は関係ないわ


75 :デフォルトの名無しさん:2009/08/25(火) 23:21:01
>>74
なんで?

76 :デフォルトの名無しさん:2009/08/25(火) 23:26:38
ボックス化って何なのさ。
厨なオレに分かるように説明してください。

77 :デフォルトの名無しさん:2009/08/25(火) 23:27:48
タカ&トシの新しいネタです

78 :デフォルトの名無しさん:2009/08/26(水) 00:05:11
>>76
LabelからTextBoxに値を入れること。
Label同士、TextBox同士の値の代入は速いが相互にやると遅い。
ComboBoxとTextBoxの間では速度低下はない。

79 :デフォルトの名無しさん:2009/08/26(水) 00:13:04
Sub aaa(ByVal hoge as hogeClass)
とByValで渡しているのにhogeの中身が書き換えられるのは何故なんでしょう?
Sub aaa()の中でhogeが書き換えられなくするにはどうしたらいいの?

80 :デフォルトの名無しさん:2009/08/26(水) 00:19:55
> とByValで渡しているのにhogeの中身が書き換えられるのは何故なんでしょう?
hogeClassが参照型だから

> Sub aaa()の中でhogeが書き換えられなくするにはどうしたらいいの?
ディープコピー作るとか構造体にするとかあるけど
まあ普通気にしないでいいよ

81 :デフォルトの名無しさん:2009/08/26(水) 00:33:14
>>79
変数hogeの中に入っている「値」とは、hogeClassのインスタンスの
メモリ上の位置を表す「値」だから、とでも考えるよろし。

書き換えられたくないのなら、インスタンスのクローンを作ってそれを渡す、とか
ReadOnlyプロパティだけを並べたインターフェイスをhogeClassに実装させて
aaaはそのインターフェイスを引数に取るようにする、などの工夫が必要。

参照型と値型の違いとそれぞれの意味は、最初にちゃんと理解しとかないとマズいね。

82 :デフォルトの名無しさん:2009/08/26(水) 00:48:07
>>81
>ReadOnlyプロパティだけを並べたインターフェイスをhogeClassに実装させて

元のメンバーをPrivateにして新しくPublic ReadOnlyのを作るわけですか?

83 :デフォルトの名無しさん:2009/08/26(水) 00:50:40
横レスだけど何で.NETにはC++のconstな値渡しみたいなのは無いのだろうか。

84 :デフォルトの名無しさん:2009/08/26(水) 03:20:32
constな値渡しって何?

85 :デフォルトの名無しさん:2009/08/26(水) 07:05:39
>>84
ttp://www.s-cradle.com/developer/sophiaframework/tutorial/Cpp/const.html


86 :デフォルトの名無しさん:2009/08/26(水) 07:54:52
dクス
半分くらいわかった。

87 :デフォルトの名無しさん:2009/08/26(水) 07:59:42
DataGridViewで行を下げて行くにはどうすればいいでしょうか?
ループを使いたいと思っています

for i = 0 to 10
DataGridView1.Rows(i).Cells(1).Value = 0
next
↑ではエラーが出てお手上げ状態です
お願いします

88 :デフォルトの名無しさん:2009/08/26(水) 10:51:02
行を下げるっていうのは、下の行を表示させるということ?

89 :デフォルトの名無しさん:2009/08/26(水) 14:37:21
どういうエラーが出てどうお手上げなんだよ
やりたい事をもっと正確に書けよ

90 :デフォルトの名無しさん:2009/08/26(水) 14:41:41
全然意味わかんねーけど、多分行が11行もないんじゃないの

91 :87:2009/08/26(水) 20:23:07
すいません詳しく書くと
別のDataGridView(DataGridView2とします)の行数をRowCountでiに行数を入れており
DataGridView2と同じ行数で内容は入っていないDataGridView1が出来ています
iが3だとするとDataGridView1のRows(0)からRows(2)までに0を入れたいと考えています

そこでループで行けるかと思い>>87のコードでやってみたところRowsの()の中は変数は使えないみたいでした
再度よろしくお願いします・・・

92 :デフォルトの名無しさん:2009/08/26(水) 20:28:09
どうしてエラーの内容を隠匿しようとするんだろうね?

93 :デフォルトの名無しさん:2009/08/26(水) 20:29:55
使えるから。

94 :デフォルトの名無しさん:2009/08/26(水) 20:34:11
詳しいエラー内容

イミディエイト ウィンドウ
'System.ArgumentOutOfRangeException' の初回例外が mscorlib.dll で発生しました。

例外ヘルパ
インデックスが範囲を超えています。負でない値で、コレクションのサイズよりも小さくなければなりません。 パラメータ名: index
ArgumentOutOfRangeException

i = DataGridView2.RowCount
が問題でしょうか?

95 :デフォルトの名無しさん:2009/08/26(水) 20:42:58
そんなコード書いてないじゃん。

>>90 の言うとおりだな。

96 :デフォルトの名無しさん:2009/08/26(水) 20:44:07
こいつには教えなきゃならんことが多すぎて教える気もなくなるわ

97 :87:2009/08/26(水) 20:45:06
すいませんでした。失礼します

98 :デフォルトの名無しさん:2009/08/26(水) 22:56:44
String型は値型なのでしょうか参照型なのでしょうか?

99 :デフォルトの名無しさん:2009/08/26(水) 22:59:36
ttp://msdn.microsoft.com/ja-jp/library/system.string.aspx
VB だと Class か Structure かで分かる

100 :デフォルトの名無しさん:2009/08/26(水) 23:06:41
>>99
参照型ですね。
でも他の参照型と違う動きをしますよね。(謎

101 :デフォルトの名無しさん:2009/08/26(水) 23:07:03
>>87
とりあえず動いた。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

  '列の設定
  Me.DataGridView1.ColumnCount = 1
  Me.DataGridView2.ColumnCount = 1

  'グリッド1に3行追加
  Me.DataGridView1.Rows.Add("hoge1")
  Me.DataGridView1.Rows.Add("hoge2")
  Me.DataGridView1.Rows.Add("hoge3")

  'グリッド2にグリッド1の行数を追加
  Dim Count As Integer = Me.DataGridView1.Rows.Count
  Me.DataGridView2.Rows.Add(Count)

  'グリッド2に値を代入
  For i As Integer = 0 To Count - 1
   Me.DataGridView2.Rows(i).Cells(0).Value = "hoge" & (i + 1).ToString
  Next

End Sub

102 :デフォルトの名無しさん:2009/08/26(水) 23:45:19
>>100
不変クラスとかimutable classで調べてみると分かる。

103 :デフォルトの名無しさん:2009/08/27(木) 00:07:15
>>102
ぐぐったらJavaのばかり出てきました。
上のほうで出てきてるシャローコピーとかディープコピーとかもJavaですね。

104 :デフォルトの名無しさん:2009/08/27(木) 00:11:22
どれも概念の話であって言語は関係ないな

105 :デフォルトの名無しさん:2009/08/27(木) 00:19:38
そういう概念ってVBだけやってると永久に辿り着けそうに無いな。。

106 :デフォルトの名無しさん:2009/08/27(木) 00:23:18
VB的にはStringは基本型のひとつという位置づけ。
でも不変参照型というのが分かってないと
なんでStringBuilderが必要なのか理解できない。

107 :デフォルトの名無しさん:2009/08/27(木) 00:40:22
>>106
それは参照型のString型を値型と同等に扱える仕組みと言うことで理解してOK?

108 :デフォルトの名無しさん:2009/08/27(木) 00:43:20
よくない

109 :デフォルトの名無しさん:2009/08/27(木) 00:45:30
>>108
Orz

110 :デフォルトの名無しさん:2009/08/27(木) 00:50:42
VB.Netで不変参照型なのはString型だけなの?

111 :デフォルトの名無しさん:2009/08/27(木) 00:58:55
そういう風に設計すればいくらでも
標準ライブラリでぱっと思いつくのはSystem.Drawing.Font

112 :デフォルトの名無しさん:2009/08/27(木) 07:37:08
>>111
有難うございます。
System.Drawing.Font 見たけど不変参照型みたいな事は書いてないですね。
不変参照型って自分でも作れるんですかね。。

教えてくんになってしまっているので自分で勉強して出直してきます orz

113 :デフォルトの名無しさん:2009/08/27(木) 10:34:53
クラスと構造体を別々に作るのと、クラスの中に構造体を作るのとでは、
どういう違いがあるのでしょうか
ストラクチャ名だけでインスタンスを作るとグローバルな感じで、
入れ子にすると[クラス名].[ストラクチャ名]でインスタンスを作れるから、
どの目的のための構造体なのかがわかりやすい、というだけ?

あと、構造体のインスタンスは
  Dim Hote As [ストラクチャ名]
これで暗黙的にNewされてインスタンスが作られている、
という理解で間違いないですか?

114 :113:2009/08/27(木) 10:36:49
あ、それと下の質問がその通りであれば、
  Dim Hoge As [ストラクチャ名]
  Dim Hoge As [ストラクチャ名] = New [ストラクチャ名]
この2つは同義で、どっちを使ってもおkということですか?

115 :デフォルトの名無しさん:2009/08/27(木) 11:01:04
ストラクチャ名……なんだろうこの違和感

ネストされた型の大きなメリットはアクセス制御をPrivateやProtectedにできること
内部の型から外部の型のPrivateメンバにアクセスできること

> 入れ子にすると[クラス名].[ストラクチャ名]でインスタンスを作れるから、
> どの目的のための構造体なのかがわかりやすい
名前空間と型名だけで表現できてなかったらすでに命名がまずい

> この2つは同義で、どっちを使ってもおkということですか?
IL レベルで違いはあるがまあ同じと考えて良い

116 :113:2009/08/27(木) 12:44:11
>>115
ありがとうございます、よくわかりました
違和感のところはすみませんでした

117 :デフォルトの名無しさん:2009/08/27(木) 18:19:23
>>101までの流れを読んでて思ったけど、
真面目に回答してた奴は、
質問者が拗ねてしまって、
危険な流れとばかりにスルー。
煽った奴は、相手がスレからつまはじき者にされて
自分の煽りの影響力にご満悦。

>>101のようにスレのルールに忠実な結果報告だけが
残る。2chって無責任な場所ですよね。
10年前から知ってましたが。


118 :デフォルトの名無しさん:2009/08/27(木) 18:36:43
今更痔ろう

119 :デフォルトの名無しさん:2009/08/27(木) 20:11:54
10年前にこっ酷い目に会って、今漸く帰って来たのですね。わかります。
でないと、こんな青臭いレスなんてできないよな。

120 :デフォルトの名無しさん:2009/08/27(木) 20:57:56
わかります(笑)
こういうのに限って「スイーツ(笑)」とかやってたりするんだよねw

121 :デフォルトの名無しさん:2009/08/28(金) 02:38:25
だよねw

122 :デフォルトの名無しさん:2009/08/28(金) 03:48:15
>>119
「青臭い」って・・・実際、他人に使ってみたことある?
きっと、言われた方は、喜ぶと思うよ。


123 :デフォルトの名無しさん:2009/08/28(金) 07:57:52
イカ臭い

124 :デフォルトの名無しさん:2009/08/28(金) 08:02:29
きっと、言われた方は、喜ぶと思うよ。

125 :デフォルトの名無しさん:2009/08/28(金) 10:51:05
WindowsVista64Bit VS2008で開発してます。
ある画像を表示する為に、APIのStretchDIBitsを使用しています。
ピクチャーボックスのPaintイベントで画像を描画する為、
引数のe.GraphicsからHDCを取得して使っています。
このHDCですが、なぜかLabelなどに一度値を出力しないと、画像が描画されないんですが、
似たような経験された方はいらっしゃらないでしょうか?

126 :デフォルトの名無しさん:2009/08/28(金) 19:26:52
>>125
画像のパスを設定するとか
外部の設定によって描画内容(描画ロジック)に変更ある?
変更あるなら変更のタイミングで描画命令を発行
変更ないならロジック晒すべし


127 :デフォルトの名無しさん:2009/08/28(金) 19:27:02
>>125
初め表示される時には、画像が無かったってオチかなあ。
XPと違ってVista以降はあまり再描画が発生しないし。
偶々そのLabelの変更がきっかけになっている、とか。

ウィンドウ表示後に画像が用意されるのなら、
ピクチャーボックスを明示的にInvalidateなりしないと。

128 :デフォルトの名無しさん:2009/08/29(土) 05:45:41
俺125じゃないけど、基本的なこと聞いていい?

Paintイベントのヘルプみると
>コントロールが再描画されると発生します。
ってあるんだが、これは

コントロールが再線画されようとしたら発生
コントロールの再線画が完了したら発生

のどっち?
日本語を素直にとらえると後者なんだが、
例とかみてると前者じゃないとおかしな動作しそうだし

129 :デフォルトの名無しさん:2009/08/29(土) 11:17:18
コントロールで質問です
コマンドボタンのような見た目で、押した時に凹んだままになり、
もう一度押すと元に戻るボタンをなんというのでしょうか?

130 :デフォルトの名無しさん:2009/08/29(土) 11:23:17
>>129
トグルボタンかな

131 :デフォルトの名無しさん:2009/08/29(土) 11:24:01
旧VBを知らないからコマンドボタンというのがなんなのかは知らんが、
トグルできるButton風のコントロールはCheckBoxで扱う

132 :129:2009/08/29(土) 11:25:31
>>130-131
もうコマンドボタンっていわないんですね、失礼しました
ありがとうございました

133 :デフォルトの名無しさん:2009/08/29(土) 12:50:01
>>128
コントロールが<コントロール自身によって>再描画されると

134 :デフォルトの名無しさん:2009/08/29(土) 15:17:36
>>133
コントロールの描画は、OnPaintメソッドで行われるらしいので、
このメソッドの中でPaintイベントを発生させてるってこと?

そうなると、描画が完了してからイベント起きるか、完了まえにイベント起きるかは
そのコントロールの実装次第、ってことになるのかな?

135 :デフォルトの名無しさん:2009/08/29(土) 16:08:57
だから、省略してある言葉を補った文章のとおりでしょ

『コントロールが<コントロール自身によって>再描画されると』

これを描画前に呼ばれる可能性もありうると読み取るようなら、
日本語のセンスがちょっとヤバいんじゃないかと思うけど。

136 :デフォルトの名無しさん:2009/08/30(日) 01:35:35
Paintイベントを発生させるControl.OnPaintをいつ呼ぶかは、実装に拠るからなあ。
Control.OnPaintのサンプルだと頭で呼び出しているけど。

137 :デフォルトの名無しさん:2009/08/30(日) 02:09:36
だから、MSDNライブラリっていうのはチミやオレが実装したコードについて、
ではなく、MSの中の人が実装したコードについて「こうなってます」っていう
解説書だから、そういう物言いはナンセンス以外の何物でもない。
当たり前のことだと思うんだけどね。

138 :名無しさん@そうだ選挙に行こう:2009/08/30(日) 04:00:29
Paintイベントは、
コントロールが再描画された後、追加の描画をユーザーに提供する目的で発生します。
一部のコントロールではこのイベントが発生しないこともあります。

こんな感じ?

139 :名無しさん@そうだ選挙に行こう:2009/08/30(日) 04:26:41
そもそもMSDNで日本語を正確に読み取ろうとしても意味はない。
正確に読み取りたければ英語のを読め。


140 :デフォルトの名無しさん:2009/08/30(日) 21:16:21
>>128
Paintイベントはコントロールが再描画されようとしたときに発生するから。
なので、コントロール自身の再描画処理は、MyBase.Paint()で行う。
このMyBase.paint()を呼ばなければ、コントロール自身の再描画は行われない。

141 :デフォルトの名無しさん:2009/08/30(日) 21:31:09
全然違う
コントロールの描画処理はOnPaintというメソッドの中に書かれている。
描画が終わった後,最後に基底クラス(Controlクラス)のOnPaintを呼ぶ。(呼ばなくてもいい)
ControlクラスのOnPaintメソッドの中にはPaintイベントを発生させる処理だけが書かれており,
Paintイベントが発生する。
だから,派生クラスを作ってOnPaintをオーバーライドしてその中に描画処理を書けば
基底クラスの描画処理は行われない。

142 :140:2009/08/30(日) 22:17:53
すまん、MyBase.OnPaint()の間違い。
あと、一番最後の「コントロール自身の再描画は行われない。」は「基底クラスの描画処理が行われない。」
の間違い。
いいたかったことは、>>141と同じこと。

143 :デフォルトの名無しさん:2009/08/31(月) 04:22:17
>>141
>描画が終わった後,最後に基底クラス(Controlクラス)のOnPaintを呼ぶ
これなんだが、MSDNの例だと最初に呼んでる
最後に呼ぶと線画完了後にイベント起きることになる

俺がMSDNで調べた限りでは、
まず、最初にMyBase.OnPaint(e)を呼び出し、Paintイベントを発行させて、
その引数eをもとにレンダリングするのが正しい作法じゃないかな

したがって、
Paintイベントは再描画される前に発生し、そのイベントの引数により描画内容を変更することができる
が正解だと思う

実際すべてのコントロールがそのように実装されてるかどうかはしらね


144 :デフォルトの名無しさん:2009/08/31(月) 09:42:22
実際にはすべてのコントロールが描画後にMyBase.OnPaintを呼んでる
通例,On○○をオーバーライドするときには基底クラスのOn○○を先に呼ぶことが多いんだけど
OnPaintの場合は後で呼ばないとPaintイベントで描画した内容が見えなくなるだろ

145 :144:2009/08/31(月) 10:03:26
捕捉
コントロールがControlクラスから直接派生している場合は,OnPaintには何の描画処理も書かれておらず,
ただPaintイベントを発生させる処理だけが書かれているので,後で呼ぶことができる。
こうしておけば,コントロールのユーザがPaintイベントを使うことによって描画を上書きできる。
でも,Buttonなど既にOnPaintに描画処理が書かれているコントロールから派生する場合は話が違ってくる。
そのようなサンプルで先にOnPaintを呼んでるのは,まず基底クラスに描画させてその上に描画するため。
その場合,その自作コントロールのPaintイベントは描画が行われる前に呼び出されてしまうので使えなくなる。
(そのコントロールのユーザがPaintイベントで描画してもOnPaintでの描画に上書きされてしまうから)

146 :デフォルトの名無しさん:2009/08/31(月) 19:58:56
言っちゃ悪いけど、そんなこと普通MSDNの記述を読んでちょっと考えればわかる
当たり前のことじゃないか?

少なくとも俺はそうだったが・・・

147 :デフォルトの名無しさん:2009/08/31(月) 22:20:05
>>146
Paintイベントのヘルプだけ見てもここまでわからないだろ
まあ、関連しそうなところ全部読んで理解すればわかるんだろうが

MSDN全部読んで調べろっていうなら、質問スレの質問ほとんどがそれで済む
すくなくともここは初心者お断りじゃないだろう

148 :デフォルトの名無しさん:2009/08/31(月) 22:44:30
まあ145まではいかなくても,落ち着いて自分の頭で考えたら少なくとも>>143みたいな早とちりには至らないわな

149 :デフォルトの名無しさん:2009/08/31(月) 23:14:45
VB.netのくだすれが無い以上、ここにくだすれ向けの質問も書かざるを得ないとは思う。
くだすれ作れよってことなら立てるだけなら誰でもできるが、果たして質問に答える方の人材はどうだろうかとも。

150 :デフォルトの名無しさん:2009/08/31(月) 23:29:31
多分答える人たちは両方のスレで同じ

151 :デフォルトの名無しさん:2009/09/01(火) 12:04:31
まあ、あれだ。
標準のクラスがどうやってるかは Reflector で調べるのが確実。

152 :デフォルトの名無しさん:2009/09/01(火) 14:31:02
くだらん質問ですみません。

VB6で書いたコードをVB2008で読み込んで自動でコードを
変換させました。

CommonDialog1.CancelError = True

VB2008のCommonDialogクラスにはCancelErrorなんてプロ
パティは無いそうで、変換できないといわれました。

VB2008のコモンダイアログでCancelボタンを押したときの
値ってどこで取得したらよろしいんでしょう?

なにとぞよろしこ

153 :デフォルトの名無しさん:2009/09/01(火) 14:35:36
ShowDialogの返値

154 :デフォルトの名無しさん:2009/09/01(火) 14:43:33
resultってVB6もあったよね?

155 :152:2009/09/01(火) 14:45:29
DialogResult.Cancelっていう値を返していたのね。
分かりました。へっぽこですんません。ありがd

156 :デフォルトの名無しさん:2009/09/01(火) 23:27:33
おまいらが思う、世界の歴史上最も美しいオープンソースのVB.NETを紹介しろよ。

157 :デフォルトの名無しさん:2009/09/01(火) 23:32:08
美しいとかいう以前に無いから
.NETのオープンソースはほとんど全てC#

158 :デフォルトの名無しさん:2009/09/02(水) 09:17:15
ほとんどなのか全てなのかはっきりしろ

159 :デフォルトの名無しさん:2009/09/02(水) 09:43:43
じゃVB.NETはまれによくあるんだろうか

160 :デフォルトの名無しさん:2009/09/02(水) 09:48:12
まれなのかよくあるのかはっきりしろ

161 :デフォルトの名無しさん:2009/09/02(水) 10:02:09
CodePlexなんかにはVB.NETで書かれたものもほんの少しはあるけど
C#とは比べ物にならないので,そういうの漁るならC#は必須
ほとんど一緒だから慣れたら脳内翻訳できる

162 :デフォルトの名無しさん:2009/09/02(水) 10:09:32
質問です。
あるクラスから Form が呼び出されている場合、その Form で自分の呼び出し元クラスを取得する方法はありますでしょうか?

呼び出し元クラスの他のメソッドを実行したいのです。

現在は下記のように書いていますが、もっとスマートな方法はありますでしょうか?
フォーム frmX でクラス HOGE を New してっていうのが違和感があります。
HOGE.A() で f.Tag = Me とすれば frmX で
Call Ctype(Me.Tag, HOGE).B()
としてもいけそうですが、これもスマートではない気がします。

それとも、呼び出し元クラスのメソッドを実行する設計自体が問題あるのでしょうか?

Public Class HOGE
  Public Sub A()
    Dim f as New frmX
    f.Show()
  End Sub

  Public Sub B()
    MessageBox.Show("Hello!")
  End Sub
End Class

Public Class frmX
  Private Sub Button1_Click(Byval sender as System.Object, Byval e as System.Eventargs) Hanles Button1.Click
    Dim H As New Hoge
    Call H.B()
  End Sub
End Class

163 :デフォルトの名無しさん:2009/09/02(水) 10:12:28
frmXのコンストラクタの引数として渡す
一般に,呼び出し元に依存するような設計は良くないんだけどVBならどうでもいいよ

164 :162:2009/09/02(水) 10:25:14
>>163
ありがとうございます。
なるほど!です。

frmX で

Private _Caller As HOGE
Public Sub New(Caller As HOGE)
  InitializeComponent()
  _Caller = Caller
End Sub

Private Sub Button1_Click(〜
  Call _Caller.B()
End Sub
とすることでできました。

Form の既定のプロパティに呼び出し元を取得できるものでもあれば、と思っていたのですが
見つけることはできませんでした。

呼び出し元に依存するような設計の良くないと言われるのはどういった点でしょうか?
今後の参考にさせていただきたいので、お教えいただければと思います。

165 :デフォルトの名無しさん:2009/09/02(水) 10:29:37
逆に言うとそのHOGEがないと呼び出せないということになる
HOGEの中身によるけど,あんまりその場に依存した具体的なクラスだとfrmXが使い回しできなくなる

166 :162:2009/09/02(水) 10:44:48
開発しているシステムに「HOGE」「FOO」「BAR」みたいに3つの機能があるとします。
で、それぞれの機能をクラスに分けようと思っています。
もっと言うと別Dllにしてしまおうと考えています。

各機能で固有の機能や画面は各クラスで実装するつもりで、メインプログラムから
例えば処理HOGEを行う場合は、クラスHOGEのインスタンスを作成し、そのクラスの
メソッドを実行しようとしています。

frmX を他のクラスから使いまわすということはないです。

複数のクラスから使いまわす予定のものは呼び出し元クラスに依存しないような設計に
すれば問題ないですか?

167 :デフォルトの名無しさん:2009/09/02(水) 11:41:21
他でも使う機能なら、フォームのクラスに載せないで、
共通機能として別クラスに作るだけでいいんじゃないの?

168 :デフォルトの名無しさん:2009/09/02(水) 12:10:05
>>162 >>164
「呼び出し元」て…

frmX にイベントを追加するのが一般的じゃね?

Class HOGE
  Public Sub ...
    Dim f As New frmX
    AddHandler f.押された, AddressOf B    ' ←─ ここでハンドラ追加
    f.Show()
  End Sub
  :
  Public Sub B(ByVal self As Object, ByVal e As EventArgs)
    MessageBox.Show("Hello!")
  End Sub
End Class

Class frmX
  :
  Public Event 押された(ByVal self As Object, ByVal e As EventArgs)
  :
  Private Sub Button1_Click(...
    RaiseEvent 押された(Me, New EventArgs)
  End Sub
End Class

169 :デフォルトの名無しさん:2009/09/02(水) 12:15:11
これ全然一般的じゃないだろw

170 :デフォルトの名無しさん:2009/09/02(水) 12:17:27
使い回さないって言ってるんだから普通にHOGEのメソッド呼べばいいと思うよ
>>166を読む限り,frmXの処理は密接にHOGEに結びついてるみたいだから
無理にイベントを使っても強くHOGEを意識する形になると思われるのであまり意味がない
本当に分離するなら,frmXで触るデータを保持するクラスをHOGEとは別に作る

171 :デフォルトの名無しさん:2009/09/02(水) 14:07:34
VB2008を使っています。
関数の処理時間を計ろうと以下のクラスを作成しました。

Public Class ProcTime
Private dtDiff As DateTime

Public Sub New()
dtDiff = DateTime.Now
End Sub

Protected Overrides Sub Finalize()
Debug.Print(DateTime.Now.Subtract(dtDiff).Milliseconds.ToString())
End Sub
End Class

'時間を計る関数に
Private Sub Test()
Dim pt As New ProcTime
'〜処理〜
End Sub

とした場合、正しく計れないのですが間違っていますか?

172 :デフォルトの名無しさん:2009/09/02(水) 14:11:06
Finalizeはいつ呼ばれるかわからないから,そういう使い方はできない。
そういうパフォーマンス計測にはSystem.Diagnostics.Stopwatchという専用のクラスがあるからそれを使う。

173 :171:2009/09/02(水) 14:22:34
早速の回答ありがとうございます。

時間を計測したい関数の最初と最後に Start、Stop を配置して
計測するんですね、分りました。

174 :デフォルトの名無しさん:2009/09/02(水) 16:54:24
c++で作ったDLLの関数が次のような場合
>int Foo(void **param) 実際はparamが複数ある
>ダブルポインタを渡してオブジェクトのポインタ値を取得する。NULL値も許容する。
VB.net2003での宣言を以下のようにしたらNothingを渡してもNULL(0)になりませんでした。
>Declare Ansi Function Foo Lib "hoge.dll" (ByRef param As IntPtr) As Int32
VBからポインタ値の先を直接参照するわけではなく、ハンドル的な使い方をしたいのです。
NULL値も渡せるようにするにはどうしたらいいのでしょうか?

175 :174:2009/09/02(水) 16:56:48
書き漏れがありました。
C++のDLLはネイティブ(アンマネージド)DLLです。

176 :デフォルトの名無しさん:2009/09/02(水) 17:02:17
ByVal param As IntPtr()

177 :デフォルトの名無しさん:2009/09/02(水) 17:13:36
NULLに相当するのはIntPtr.Zero

178 :デフォルトの名無しさん:2009/09/02(水) 17:20:35
>>176
Declare Ansi Function Foo Lib "hoge.dll" (ByVal param As IntPtr()) As Int32
としたところ「型 'System.IntPtr' の値を 'System.IntPtr の 1 次元配列' に変換できません。」とエラーになってしまいました。
呼び出し側も何か書き方があるのでしょうか?
>Dim param As IntPtr
>Dim b = Foo(param, Nothing)  '引数が2個の場合

179 :デフォルトの名無しさん:2009/09/02(水) 17:25:03
配列知らないって言われても困る

180 :デフォルトの名無しさん:2009/09/02(水) 17:38:14
VB2008で「ビルド|発行」を実行したら、setup.exeを含むインストーラっ
ぽいのができてしまいました。setup.exeを実行すればなんとなくインスト
ールされて立ち上がります。しかし、インストールされた実行ファイル等は
programfilesのフォルダには影も形もありません。

そもそもVB6の時のように、インストール不要のexeファイルを作りたいの
ですが、VB.Netではできないのでしょうか?

181 :デフォルトの名無しさん:2009/09/02(水) 17:43:44
基本的に/bin/Release以下のファイルをコピーするだけでいい

182 :180:2009/09/02(水) 17:48:36
>>181
ありがと〜

183 :デフォルトの名無しさん:2009/09/02(水) 18:19:14
ゴミを入れんなよゴミを

184 :デフォルトの名無しさん:2009/09/05(土) 04:06:17
今後vb.netで開発を行っていくのにはどのバージョンが適切なのでしょうか?
vb2005、vb2008はどちらかというと個人向けとwikiに書かれていました。
vb.net 2003が良いのでしょうか?
ご教授願います。

185 :デフォルトの名無しさん:2009/09/05(土) 04:50:09
>>184
特に事情がなければ新しいのを使えよ

186 :デフォルトの名無しさん:2009/09/05(土) 04:53:04
どのwikiに書かれてたのか知らんけど、多分誤読してる

187 :デフォルトの名無しさん:2009/09/05(土) 09:35:14
>>185
>>186

ありがとうございます。
>>186さんの言うとおり誤読でした。
vb2008を検討してみます。

188 :デフォルトの名無しさん:2009/09/05(土) 09:36:56
>>184
いまどき2003は無いよ。IDEボロだし。
WPFとか最新機能を使わないのなら2005でOK
2008でも良いけどIDEが劇重い

189 :デフォルトの名無しさん:2009/09/05(土) 09:40:19
そうか?
まともなPCなら2008の方が体感速度は速い気がする

190 :デフォルトの名無しさん:2009/09/05(土) 09:44:53
たいして変わらん

191 :デフォルトの名無しさん:2009/09/05(土) 09:48:36
Core2 T550 1.67GHz は今時のまともなPCではありませんか Orz

192 :デフォルトの名無しさん:2009/09/05(土) 09:49:16
T5500だった

193 :デフォルトの名無しさん:2009/09/05(土) 09:53:08
2008は型推論とかXMLリテラルとか便利だよ

194 :デフォルトの名無しさん:2009/09/05(土) 10:09:39
Eclipseの方がいいよ。VBは使えないけど

195 :デフォルトの名無しさん:2009/09/05(土) 10:19:14
Excel VBA のエディタよりは使いやすいな。>Eclipse

196 :デフォルトの名無しさん:2009/09/05(土) 10:24:35
VB2008は使いやすいよ
インテリセンス超速いし,徹底的に洗練されてる感じ
ゴテゴテのEclipseとは対照的

197 :デフォルトの名無しさん:2009/09/05(土) 10:56:54
ゲイツ乙

198 :デフォルトの名無しさん:2009/09/05(土) 11:49:02
俺が、VB2008がEclipseよりも劣っていると思うこと。

・スコープを考慮した変数名の一括置換が出来ないなど各種リファクタリング機能が無い叉は貧弱。
・編集ウィンドウのタブに閉じる「×」が無いため閉じるのが面倒。また全てを一度に閉じる機能も無い。
・プライベート変数からプロパティを自動生成する機能が無い。
・プラグインが作り難い。
・Javaで書かれたEclipseよりもなぜか重く感じる。


199 :デフォルトの名無しさん:2009/09/05(土) 11:52:07
あ、もうひとつあった。最大の欠点は、Windows専用であることだな。

200 :デフォルトの名無しさん:2009/09/05(土) 11:53:45
>>198
初心者が誤解するので、Express しか使ったことがないなら
そう書いて欲しいもんだ。

201 :デフォルトの名無しさん:2009/09/05(土) 11:54:43
じゃ、使わなきゃいいじゃん。

202 :デフォルトの名無しさん:2009/09/05(土) 12:01:26
あと、タブクリックで最大化する機能も欲しいな。

203 :デフォルトの名無しさん:2009/09/05(土) 19:40:47
スコープを考慮した変数名の一括置換はできる。
全てのドキュメントを閉じる、は付いてる。
プロパティはコードスニペットを使う。

いつからEclipseがVBに対応したのか知らないけど。

204 :デフォルトの名無しさん:2009/09/05(土) 20:08:08
このウインドウ以外全て閉じるはあったけど、全てを閉じるってあったっけ?
あんま使わないから覚えてないけど。

既にあるプライベート変数から、プロパティ作るのと
prop->のコードスニペットは別の動作だと思う。

205 :デフォルトの名無しさん:2009/09/05(土) 20:51:58
×ボタンとか

206 :デフォルトの名無しさん:2009/09/05(土) 20:54:57
EclipseよりVS2008が使い易いとか言ってる奴は素人だろ

207 :デフォルトの名無しさん:2009/09/05(土) 21:19:24
IDE付属のテキストエディタ如きで満足している奴は皆素人ってことだろ。
まあ、俺はテキストエディタ素人だから、JavaはNetBeans、.NET系はVisualStudio使うけど。

208 :デフォルトの名無しさん:2009/09/05(土) 21:55:18
釣りとは思うが時代錯誤な見解だね。

でも今時になってもリアルで「エディタにこだわる俺はお前らとは違うんだ」っていう
痛い奴がいたりするからあまり笑えないかも。

209 :デフォルトの名無しさん:2009/09/06(日) 02:09:57
Eclipseがいいと思うなら思えばいい
だがここはVB.NETスレだからEclipseとかいらん

210 :デフォルトの名無しさん:2009/09/06(日) 03:14:44
だがC#と同じぐらいのリファクタリング機能はVBにもつけてほしいのう

211 :デフォルトの名無しさん:2009/09/06(日) 03:25:34
VBプログラマはリファクタリングの意味すら分ってないから不要だろ

212 :デフォルトの名無しさん:2009/09/06(日) 03:35:27
ここで〜してほしいって愚痴るぐらいなら
VS2010ベータ試してフィードバックに投げた方がよほど建設的なの

213 :デフォルトの名無しさん:2009/09/06(日) 03:54:20
>>210
ツールがあったはず。
C#と同等のリファクタリング機能とか謳ってた記憶があるが名前忘れた。
少なくともメソッドの抽出は出来たはず。
'どうせウチの環境じゃ入れてもらえないけど…

214 :デフォルトの名無しさん:2009/09/06(日) 08:04:21
Refactor!ってやつがなかなかいいよ

215 :デフォルトの名無しさん:2009/09/06(日) 16:12:39
Function GetItems(type As Type) As Object()
  Dim items As Object()
  〜
  If type Is GetType(String) then items = new String() {}
  〜
  return items
End Function

Dim names() As String = GetItems(GetType(String))

とすると「InvalidCastException」になりました。
CTypeやDirectCastも試してみましたが同じ結果でした。
要素を1つずつコピーすれば出来ると思うのですが、もっと単純な方法はありませんか?

216 :デフォルトの名無しさん:2009/09/06(日) 16:17:17
普通に Generics 使えよ。

217 :デフォルトの名無しさん:2009/09/06(日) 16:19:54
そんなメソッドの使いどころが全く分からない

218 :デフォルトの名無しさん:2009/09/06(日) 16:29:30
戻り値やitemsの型をArrayにしたらいいんじゃね
普通はジェネリック使うべきだけど

219 :デフォルトの名無しさん:2009/09/06(日) 16:32:56
>>215
何がしたいのか意味が全然わからないが、
呼び出し側でString()を常に期待する(>>215のコードを見る限り、そう取れる)
のなら、GetItems()の返り値の型をString()にすれがいいんじゃないの?

Typeオブジェクトで指定した型の配列を返すようにしたいってこと?
それはできないから、どうしてもというならObject(Object()ではない)を
返すようにして、呼び出し側でキャストするしかない。

220 :デフォルトの名無しさん:2009/09/06(日) 16:41:48
  If type Is GetType(String) then items = new String() {}
  If type Is GetType(Integer) then items = new Integer() {}
  If type Is GetType(Double) then items = new Double() {}

みたいなことをやりたいんじゃないの?

221 :デフォルトの名無しさん:2009/09/06(日) 17:04:54
それだったら
Function CreateArray(Of T)(ByVal size As Integer) As T()
Return New T(size){}
End Function

222 :デフォルトの名無しさん:2009/09/06(日) 17:15:10
単純にArray.CreateInstance()使えば?

223 :デフォルトの名無しさん:2009/09/06(日) 17:31:59
要素コピーとかいってんだから配列作るだけじゃないんだろ

224 :デフォルトの名無しさん:2009/09/06(日) 17:37:53
>>215です。
やりたいこととしては>>220に近い感じです。
〜Collectionとかの要素をオブジェクトの配列として参照したり文字列の配列として参照したりしたかったのです。
ジェネリックは2005から使えるみたいなので私の使っている2003では使えませんね。
Object()ではなくObjectにすればキャスト出来るみたいなので試してみます。

225 :デフォルトの名無しさん:2009/09/06(日) 18:38:15
ああ、2003のことを忘れてた

226 :デフォルトの名無しさん:2009/09/06(日) 18:40:53
先に言えよハゲ

227 :デフォルトの名無しさん:2009/09/06(日) 21:26:59
はじめから配列も〜CollectionもIListとして扱えばいい
すべて共通のコードで扱える

228 :デフォルトの名無しさん:2009/09/06(日) 21:36:45
2003なんですが質問です。

DataGridで特定の行に色設定し、さらに行選択もできるようにしたいんです。
DataGridで特定の行に色設定することは、
DataGridTextBoxColumnを継承してクラスを作成し、
Paintメソッドをオーバーライドすることで出来ました。

行選択もHandles DataGrid1.Paintしたメソッドに
DataGrid1.Select(DataGrid1.CurrentRowIndex)
を書けばできました。

でも両方をいっぺんにやる方法が分かりません。><
たぶん、オーバーライドしたPaintクラスから
DataGrid1.Selectが出来れば良いんだと思いますが、
やり方が分かりません。
どなたか教えてくださいませんか?

229 :デフォルトの名無しさん:2009/09/07(月) 08:06:28
SELECT * FROM npcname_jp jp INNER JOIN npc eg ON jp.id=eg.id

上記SQLでセレクトしたテーブルをリストボックスに入れて
DisplayMemberpを jp.id などにすると、なぜかそのような列が見つからないようで、表示に反映されません。

なぜだか分かる方いませんか(;´Д`)

230 :デフォルトの名無しさん:2009/09/07(月) 08:20:00
SELECT jp.id as hoge, * FROM npcname_jp jp INNER JOIN npc eg ON jp.id=eg.id

としてhogeにしてみたら?


231 :デフォルトの名無しさん:2009/09/07(月) 08:54:12
超ありがとう
積年の恨みが一瞬で解決した
痔は治らないが

232 :デフォルトの名無しさん:2009/09/07(月) 11:30:19
「なぜそうなるのか」がわかってないと解決とは言えないと思うんだぜ?

233 :デフォルトの名無しさん:2009/09/07(月) 19:10:56
と思うんだが?
と思うぜ?

234 :デフォルトの名無しさん:2009/09/08(火) 14:00:12
>>233

まあ最近見ない表現だから解らんのも無理はない。<「〜だぜ?」

235 :デフォルトの名無しさん:2009/09/08(火) 15:55:32
表現だぜ?
無理だぜ?
と言っても
見ないんだぜ?
解らんだぜ?
とは言わなんだぜ?

236 :デフォルトの名無しさん:2009/09/08(火) 23:24:19
vb2008express editionを使っています
ウインドウ左上のアイコンを変更するにはどうすればいいでしょうか?
ちなみにアイコンそのものは変更してみましたが変わりませんでした

237 :デフォルトの名無しさん:2009/09/08(火) 23:45:02
ttp://www.google.co.jp/search?q=vb.net+アイコン+変更

238 :デフォルトの名無しさん:2009/09/09(水) 00:13:38
>>237
アイコンの変更は試しましたがウインドウの左上の絵がかわりませんでした

239 :デフォルトの名無しさん:2009/09/09(水) 00:27:29
>>238
どっちの?

240 :デフォルトの名無しさん:2009/09/09(水) 00:46:36
>>239
どっち?

241 :デフォルトの名無しさん:2009/09/09(水) 03:08:40
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt
このキーに新しいキーを追加してメニューから自作アプリを起動たいのですが
レジストリキーの既定のところに
c:\test.exe
と書いても起動しないのですが他にどんな設定をしたら良いでしょうか?

242 :デフォルトの名無しさん:2009/09/09(水) 08:10:19
スクリプトしか実行できないんじゃなかったっけ?

243 :デフォルトの名無しさん:2009/09/09(水) 15:15:40
他にどんな設定をしてもだめ

244 :デフォルトの名無しさん:2009/09/09(水) 17:30:28
すみません初歩的な質問です。
今まで独学でvb.net+mdbのデータベースを勉強しているのですが、サンプルに使っているSQL文がそのままだとJETに使えないため、いっそMySqlに乗り換えようと試みています。

いろんなサイトでMySqlのデータベースを作成することはできたのですが、なぜかそのファイルが生成されていないみたいです。
「ファイル+vb.netで作ったアプリケーション」を人に渡して使ってもらうようにしたいので、どうしてもファイルが必要です。
また、渡した相手のローカルコンピュータにはMySqlは基本的にありません。

もしくはvb.netのソースコード側でMySqlのデータベースファイルを生成する方法でもあるのでしょうか?
よろしければ教えてください。

245 :デフォルトの名無しさん:2009/09/09(水) 18:51:00
sqliteを使えばいいかと

246 :デフォルトの名無しさん:2009/09/09(水) 19:01:26
http://www.dbonline.jp/sqliteinstall/index.html

これですね、ちょっとやってみます。
中の文面を流し読みした感じ、SQLiteの特徴として「単一のファイルでデータベース管理できるので簡単」とありましたが
つまり普通のデータベースではそういう管理をしないということなのですね

247 :デフォルトの名無しさん:2009/09/09(水) 19:21:02
データベースって何?って事を理解したらいいかと思う

248 :デフォルトの名無しさん:2009/09/09(水) 20:31:03
データベースといっても色々あるがな

249 :デフォルトの名無しさん:2009/09/09(水) 21:08:08
SQLiteかわいいよSQLite

250 :デフォルトの名無しさん:2009/09/09(水) 23:59:08
>>242-243
ありがとう。他のアプリの設定を見たら全部スクリプトになってました。

251 :デフォルトの名無しさん:2009/09/10(木) 14:15:24
あの 昨日の244ですけど
結局何がしたかったかっていうと、勉強がてら、某ゲームのデータベースを作ってたんです。
が、そのSQL文がSQLiteには通りませんでした(;´Д`)

やむを得ずMySqlに変えてSQL発行してみると普通に通ってしまいました。
http://www.l2jdp.com/svn/trunk/datapack_development/sql/raidboss_spawnlist.sql
↑SQLのソースはこれです。

あ、今回は特に質問ではないですが事後報告ということで。
お答えくださった方、ありがとうございました。

252 :デフォルトの名無しさん:2009/09/10(木) 16:51:08
あー、そりゃ通らねぇだろうなあ。
MySQL と PostgreSQL 以外にこの構文受け付けるやつってあったっけ?

253 :デフォルトの名無しさん:2009/09/11(金) 03:55:27
2009/09/10
【国際】 中国 「IT製品、ソースコード開示せよ。情報漏洩はないから」…日本側が撤回求めるも、予定通り実施へ
★5http://s01.megalodon.jp/2009-0910-2351-20/tsushima.2ch.net/test/read.cgi/newsplus/1252552869/
★4http://s04.megalodon.jp/2009-0910-1154-15/tsushima.2ch.net/test/read.cgi/newsplus/1252535413/
★3http://s04.megalodon.jp/2009-0910-0825-37/tsushima.2ch.net/test/read.cgi/newsplus/1252516744/
★2http://s03.megalodon.jp/2009-0910-0347-50/tsushima.2ch.net/test/read.cgi/newsplus/1252499899/
★1http://s02.megalodon.jp/2009-0910-0347-12/tsushima.2ch.net/test/read.cgi/newsplus/1252487422/

254 :デフォルトの名無しさん:2009/09/11(金) 08:38:04
2005から2008ってどう変わったの?
乗り換えるメリットある?

255 :デフォルトの名無しさん:2009/09/11(金) 09:54:21
・VB9(LINQ, ラムダ式, 型推論, XMLリテラル)
・.NET3.0&.NET3.5(WPF,WCF等)
・.NET2.0の部分は変更なし
WPFとか使わないならそんなに変わらない
どうせWinFormsはVS2010以降も放置だろうけどな

256 :デフォルトの名無しさん:2009/09/12(土) 23:24:55
VBでTCP、UDP通信ができるプログラムを作りたいのですが、
VB6でwinsock使ってやってたのですが、
VB2008やらVB.netでも同様にできるのでしょうか?

257 :デフォルトの名無しさん:2009/09/12(土) 23:40:13
ググってみつからないようなことならまだしも、
ググればその手の情報はいっぱい出てくるじゃん。

258 :デフォルトの名無しさん:2009/09/13(日) 00:36:19
でてこねーからいってんだろ

259 :デフォルトの名無しさん:2009/09/13(日) 00:39:10
>>258
そりゃぁ、回線を首に巻いて首吊って回線切れてんだから
ぐぐっても出ねぇよw


260 :デフォルトの名無しさん:2009/09/13(日) 00:49:11
こういうことを実現したくて、調べたところこういうことがわかりましたが、
このソースのこの部分がよく分りません。そこでこういうふうにしてみましたが、
こういうエラーが出てうまく行きません。このエラーはこういう意味みたいなので、
ここをこうしてみましたが同じエラーがでます。他にエラーの原因として考えられる
ことはあるでしょうか?

...みたいな努力のあとは欲しいわな。いくらゆとりとはいえ。

261 :デフォルトの名無しさん:2009/09/13(日) 00:55:58
「VB.NETでTCP/UDPを扱う」じゃなくて
「VB.NETでWinsockを使う」って考えで調べるからダメなんじゃないだろうか、この手の人

262 :デフォルトの名無しさん:2009/09/13(日) 00:57:47
>>256
winsockってwinsock.ocxの事かな?
であればvb.netでもocxは使えるので同じように作れるけど。

263 :デフォルトの名無しさん:2009/09/13(日) 02:54:39
VB6って言ってるから「dll」の方だと思われ

264 :デフォルトの名無しさん:2009/09/13(日) 03:50:19
わしが男塾塾長 江田島平八である!!

265 :デフォルトの名無しさん:2009/09/13(日) 07:57:05
GroupBoxとPanelの違いは?

266 :デフォルトの名無しさん:2009/09/13(日) 08:12:30
お前のレスそのままグーグルで検索かけろ

267 :デフォルトの名無しさん:2009/09/13(日) 09:53:34
>>263
ocxじゃ無くなったんですか。
vb.netでもCOMなdll呼べるし、Dllimportでwinsock APIも呼べるし
ソケットプログラムには不自由しませんね。

268 :デフォルトの名無しさん:2009/09/13(日) 10:01:47
いや、普通にSystem.Net.Sockets.TcpClientとか使えばいいから。

269 :デフォルトの名無しさん:2009/09/13(日) 10:22:24
空気嫁

270 :デフォルトの名無しさん:2009/09/13(日) 14:20:51
>>268
それじゃ全然オプションないだろ
使い物にならなくね?
UNIXみたいに自由にできん

271 :デフォルトの名無しさん:2009/09/13(日) 14:37:14
>>270
System.Net.Sockets.Socket クラス使えばOK

272 :デフォルトの名無しさん:2009/09/15(火) 00:45:00
Winsockより自由に扱えるんだっけ?
UNIX波に

273 :デフォルトの名無しさん:2009/09/15(火) 04:10:50
開発環境の違いにより同じアプリを作るにもコードの書き方が変わったりしますか?

数年前発売されたVisualStudio6.0を持っているのですが
マイクロソフトから提供されているフリーの.NETをインストールするか悩んでいます。

.NET開発環境ではマウス操作だけで出来ることをVC6.0ではシコシココードを書かなければいけないというふうな
違いがあるのであればVC6.0で勉強するだけ無駄になりますし。




274 :デフォルトの名無しさん:2009/09/15(火) 05:50:39
ここVB.NETのスレなんだが?
とりあえず.NET以前のVBとVB.NETは別物と思った方がいいぐらい違う


275 :デフォルトの名無しさん:2009/09/15(火) 05:54:08
VB6からVB 2005に移行しました。

今まで
pos = Arrary( x, y)
のような表記だったのをそのままビルドしようとすると
>エラー 1 'Array' は型です。有効な式ではありません。
と前回ビルドに成功したものが実行されます。
左辺値は別アプリ(Photoshop)のオブジェクトライブラリのメンバで、As Variant, unit value(?)以外の詳細が分かりません。。

これを、
dim ops as Object
ops = New Object(){x, y}
pos = ops
とやると、実行時に最後の行でCOMエラーが起きます。どのように修正すべきなのでしょうか・・・。

まだ切り替えたばかりで調べつつなので、書くべき情報が少なかったらすいません。必要あれば追記します。

276 :デフォルトの名無しさん:2009/09/15(火) 10:02:47
>>272
MSDNくらい参照したら?

277 :デフォルトの名無しさん:2009/09/15(火) 12:46:49
>>275
> 左辺値は別アプリ(Photoshop)のオブジェクトライブラリのメンバで、As Variant, unit value(?)以外の詳細が分かりません。。
じゃあ誰も分からん
.NETでのCOMとの相互運用はVB6みたいな「よくわからないけどなんとなく使える」じゃ通じない

278 :275:2009/09/15(火) 22:41:14
レス遅れました。
277さんありがとうございます。
COM自体あまり良く理解してないと思うので、大人しくこのツールはVB6現行のまま作ろうと思います。
Photoshopのスクリプティングガイド等にもそこまで詳しい情報は載ってませんでした。orz

279 :デフォルトの名無しさん:2009/09/15(火) 22:52:52
COM参照できそうなもんだが
つーか詳細が分かりませんって、スクリプティングガイドあるんだからちょっとは調べろー

280 :275:2009/09/15(火) 23:20:15
すいません、もう一度じっくり読んだら型がDoubleと書いてあるのにLongで宣言してたのが原因でした・・・。
型宣言を書き換えたらエラー無し。 .NET以前の問題で申し訳ありません。。orz...

281 :デフォルトの名無しさん:2009/09/16(水) 23:47:28
すみません、VB.netは超初心者なんですが。
将来的にMS ACCESSの制御をやることになりそうなので、練習ということで、
ソリューション エクスプローラの参照設定を右クリックして、
"Microsoft Access 10.0 Object Library"を登録して、そこまではうまく行ったんです。
そのあと、しばらく色々と遊んで、
そのあと、参照設定の参照ツリーから何かの拍子にAccessを削除して、もういちど登録したら、
黄色い三角に「!」の警告マークがでて、参照ができなくなってしまったんです。

過去にClick Onceのテスト用にビルド&発行してあった場所に、interop.access.dllというのが
あったので、それをインポートしたら復旧したのですが、このDLLが自PCのどこを探しても
ないのです。

いろいろググって、PIA
http://support.microsoft.com/default.aspx?scid=kb;ja;328912
がタイプライブラリ(的なもの)の詰め合わせ、と思ってダウンロードしてインストールしたら、
名前が、
×Access.Application
○Microsoft.Interop,Access.Application
でないと呼び出せなくなってしまってたんですね。どうも不可解で、
「ああ、それはこの辺がクサいよ」というエスパーの方、おられませんでしょうか?
結局、修復インストールまでしたのですが、だめ。(上に書いたinterop.access.dllが必須)
念のため書いておくと、Accessの参照を登録してから、他にやった(かもしれない)こととして、
・dotNetFx35setup.exe という最新版を落として入れた。
・MicrosoftR WindowsR Software Development Kit for Windows ServerR 2008 and .NET Framework 3.5
 というのを入れた
というのがあります。
なにとぞご協力を。多少熟練した暁には、私も回答お手伝いしますので。

282 :デフォルトの名無しさん:2009/09/16(水) 23:49:28
OS から再インストールしろよ

283 :デフォルトの名無しさん:2009/09/17(木) 07:37:29
>>281
単に、以前は参照設定でMicrosoft.Interopが入っていただけじゃないのか?

284 :デフォルトの名無しさん:2009/09/17(木) 11:29:31
System.IO の Directory.Exists() や File.Exists() を実行すると、そのたびに
メモリーを消費しているような感じなのですが問題はないのでしょうか?

メモリー消費のチェックには、
http://www.forest.impress.co.jp/lib/sys/wincust/taskservice/prcsxplorer.html
を使いました。これを起動して、該当するアプリケーションのプロセスを
右クリックして[Properties]→[Performance]タブで[I/O]欄内のOtherを
モニターしてみると、上記メソッドを実行するたびに数バイトずつ増加していきます。
そのとき同時に同タブ内の[VirtualMemory][PhysicalMemory]の値も増加していました。

Directory.Exists() や File.Exists() の後ですぐに GC.Collect() を行なうと、
原則として[VirtualMemory][PhysicalMemory]の値は増加しないようでした。
しかし[I/O]欄内のOtherは増加していました。GCを使ったのはこれが初めてです。

これはいわゆる言うところのメモリーリークなのでしょうか、すみませんがご指導を
お願いします。

285 :デフォルトの名無しさん:2009/09/17(木) 11:33:31
馬鹿?

286 :デフォルトの名無しさん:2009/09/17(木) 11:35:54
web browserを作ったのですがweb browser.applicationから.exeにするにはどうしたらいいのでしょうか?

287 :284:2009/09/17(木) 11:36:19
関連するように思われたこの質問でも
http://social.msdn.microsoft.com/Forums/ja-JP/vbgeneralja/thread/95c45070-46f7-4c77-8cfa-a6c011a4ab73
やはり Directory.Exists() が使われていました。もしかするとこれも関係して
いるような気もしました。

何卒、よろしくお願いします。

288 :284:2009/09/17(木) 11:42:35
>>284
>Directory.Exists() や File.Exists() の後ですぐに GC.Collect() を行なうと、
原則として[VirtualMemory][PhysicalMemory]の値は増加しないようでした。
しかし[I/O]欄内のOtherは増加していました

この GC.Collect() を使った場合でも、それまでに GC.Collect() を使わないで
累積してしまった[VirtualMemory][PhysicalMemory]は減らないようでした。



289 :デフォルトの名無しさん:2009/09/17(木) 11:46:04
「気にしない」が正解

290 :284:2009/09/17(木) 11:51:46
>>289
どうもです。一応、このメソッドを使ったときには、上記のように直後に
GC.Collect()を実行しておくべきでしょうか?それとも不要でしょうか?

一応、先ほどの
http://www.forest.impress.co.jp/lib/sys/wincust/taskservice/prcsxplorer.html
を使って加速テストをやってみます。仮にそれで実質的なメモリー消費が
起きている場合には何か対策が必要になるでしょうか?

291 :デフォルトの名無しさん:2009/09/17(木) 12:12:23
Fileのメソッドに限らず,メモリを割り当てないメソッドなんかほとんどないぞ?
何のためにGCがあると思ってるんだ

292 :デフォルトの名無しさん:2009/09/17(木) 12:32:09
一時的にせよ、意図しないメモリが増えるのが気に入らない人の選択肢:
  C++ (unsafe)

293 :デフォルトの名無しさん:2009/09/17(木) 12:35:09
一時的なオブジェクトはたいがいGen0の高速なGCで消えるから放置して問題ない
FullGCしたら無駄に遅くなるだけ

294 :デフォルトの名無しさん:2009/09/17(木) 13:01:38
284「私は必ずメモリ消費は抑えるぞ。他の何を犠牲にしてもだ。
  そのためなら処理速度だってくれてやる。OSが壊れたって構わない。
  データの不整合? 頻発する強制終了? BIOSから進めない? 知ったことか。
  私はメモリという1つの美しい空間が1の状態に励起されることが、
  そのような乱暴な行いが、それらのすべてが許せないのだ!!!!」

295 :デフォルトの名無しさん:2009/09/18(金) 02:02:51
数バイト増えたからGC.Collect()
基地外かよ



296 :デフォルトの名無しさん:2009/09/18(金) 02:13:32
2ちゃんに書き込むパケットはどうすればいいの?
POSTを使うのはわかるが、リファラとか構成がわかわん

297 :デフォルトの名無しさん:2009/09/18(金) 04:37:15
VB.NETじゃないけどjaneのソース見れば分かるしググればいろいろ出てくるぞ

298 :デフォルトの名無しさん:2009/09/18(金) 05:06:27
2000*3000程度のjpgをPictureboxに入れてスクロールバーでスクロールさせてみるとものすごく処理が遅いのですが
何か高速化の方法があれば教えてください。
今のところ自分の試した方法は無駄な描画を減らすことですが、大した変化はありませんでした。
コードは以下のような具合です。

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.ClientSize = PictureBox1.BackgroundImage.Size
Me.SetStyle(ControlStyles.ResizeRedraw, True)
Me.SetStyle(ControlStyles.Opaque, True)
End Sub
Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
MyBase.OnPaint(e)
e.Graphics.DrawImage(PictureBox1.BackgroundImage, Me.ClientRectangle)
End Sub

また、下記のサイトでVB.NETのとっている画像処理方式が最悪であり、遅いといわれていることが分かりました。
http://www.nextftp.com/swlabo/m1_vbnet/hp_experiment/exp001.htm
これってつまり、これ以上はどうしようもないということでしょうか。
このサイトにはなにやら方法が書いてあるようですが、書いてあるコードは宣言もしていない変数を当たり前のように使っているし理解不能でした。

299 :デフォルトの名無しさん:2009/09/18(金) 08:03:08
そのページには、SetPixelが遅いと書かれているようにしか見えないのだが。

まあそれはともかく、クリッピング任せで毎回全部描画するのを止めれば良いんじゃないかな。
表示領域の範囲だけ転送するようにするだけでも大分マシになると思う。

300 :デフォルトの名無しさん:2009/09/18(金) 08:59:12
>>296
…パケット?

301 :デフォルトの名無しさん:2009/09/18(金) 11:05:33
rep2のソースを見ればいいと思う

302 :デフォルトの名無しさん:2009/09/18(金) 13:56:04
VB.NET 2008 で、MouseMove に Beep() だけを書き込んだ次のプログラムで

Public Class Form1

Private Sub Form1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
Beep()
End Sub

End Class

マウスカーソルをフォームの上に置いて、移動しなくても 約1秒ごとにBeep() が実行されます。
つまり、移動しなくても MouseMove は定期的に呼ばれています。これは、仕様ですか?
それとも環境が悪いのでしょうか。 Windows 7 Ult のほぼ素の状態で実行してます。

303 :デフォルトの名無しさん:2009/09/18(金) 19:50:13
家の環境は x64 Windows7 Pro だが、全く再現しないな。

304 :302:2009/09/18(金) 20:09:13
>>303 ありがとう。

あのぉ すまん。
再起動したらならなくなった。

原因は不明だが、そんな仕様なわけないわな。
すれ汚しすまん。

305 :デフォルトの名無しさん:2009/09/19(土) 01:23:49
VBというわけでもないのですが、数値データを使って
地図上に線を引きたいのですが、そういうことが出来る地図ソフトはあるでしょうか?
有料でも良いので知っていたら教えて

306 :デフォルトの名無しさん:2009/09/19(土) 01:48:12
GoogleMap

307 :デフォルトの名無しさん:2009/09/19(土) 09:46:15
>>305
vb全く関係ないな

308 :デフォルトの名無しさん:2009/09/19(土) 10:34:55
VBで使えるコントロールってことじゃね?

309 :デフォルトの名無しさん:2009/09/19(土) 13:03:55
ソフトって言ってるからただのスレチ

310 :デフォルトの名無しさん:2009/09/21(月) 07:21:45
出来合いのアプリケーションが欲しいって話なら寧ろイタチ

311 :デフォルトの名無しさん:2009/09/22(火) 15:36:35
VS2005のデザイナー上で、ボタンとかのコントロールを
あるコンテナ上から別のコンテナ上にカット&ペーストで移動すると
Handles句で書かれたハンドラーからHandles句が削除されたままになります。
これを回避するためには、ハンドラをAddhandlerで関連付けする以外にない
でしょうか?

312 :デフォルトの名無しさん:2009/09/22(火) 17:15:23
削除されたHandles部分を書き直せばいいだけじゃないのか。

VSが自動で書いたコードと人が書いたコード、全く同じ文字列だった場合でも動作に違い生じるとでも?

313 :デフォルトの名無しさん:2009/09/22(火) 17:27:49
まあ、アホみたいにイベント紐付けしてるとそれが面倒、ということでしょ。

>>311
そもそもカット&ペーストする必要があるの?
VS2003まではコンテナの外に出すにはカット&ペーストしか方法がなかったような気がしたけど
2005以降はマウス操作でそれも可能になってるのに。

普通にマウスかキー操作で移動すればいいじゃん。

314 :デフォルトの名無しさん:2009/09/22(火) 17:30:21
あとはあれかね、小手先のテクニックだけど
カット&ペーストする前にイベントハンドラをコメントアウトしておく、とかかね。

普通同じコントロールのイベントハンドラはまとめてあるだろうから、
それならたいして手間はかからないんじゃないかな。

315 :デフォルトの名無しさん:2009/09/22(火) 18:36:54
つか、どーなって欲しいのかが判らん。
まさかハンドラを別フォームに置きたいとか、そういうトンデモなことをしたいのか?

316 :デフォルトの名無しさん:2009/09/22(火) 20:50:46
>>315
それはさすがにお前さんの側の問題だと思うよ。
別に>>311はそう変なことは言ってない。

317 :デフォルトの名無しさん:2009/09/22(火) 22:27:25
デザイナでコントロール選択してイベントのドロップダウンボックスで選び直したら

318 :デフォルトの名無しさん:2009/09/23(水) 17:38:56
質問です。
フォームを開いてるときにフォームの外(スタートとか)の操作をさせない方法ありますか?
タスクに表示させないのは出来るんですけど、スタートボタンの禁止ができません。
今作ってるのは、ユーザーを選択して起動したあと、パスワードを入れて正確じゃないと他の操作に進めないっていう奴です。
私はアドミニストレータじゃないので、ユーザーのパスワードだけだとアドミニストレータにばれてしまうんです。

319 :デフォルトの名無しさん:2009/09/23(水) 17:54:59
>>318
日本語でおk

320 :デフォルトの名無しさん:2009/09/23(水) 17:56:21
ありません。

そういうのは、普通 GINA で作ります(XP までは)。

321 :デフォルトの名無しさん:2009/09/23(水) 17:56:58
>>319 同意

322 :デフォルトの名無しさん:2009/09/23(水) 18:03:26
>>319
すいません。
プログラムを操作中に、プログラムの操作(ボタンをクリックするとか)以外をしないように出来ますか?という事です。
やっぱりできないですかね?

323 :デフォルトの名無しさん:2009/09/23(水) 18:16:47
>>322
一番簡単なのは、昔のインストーラーでよく使われてた、
タイトルバーがないウィンドウを最大化してしまう方法かね。

もちろんこれではウィンドウズキーまでは抑止できないけど。

システムモーダルなんて方法もあった気もするけど、ドトネトのWinフォームは
システムモーダルに対応してなかったはず。

というか、そもそも普通はそんなアホな仕様のプログラムはありえないと思う。
本当にそんなアホな仕様が必要なのかね。
9割り方君がそう思い込んでるだけだと思うよ。

324 :デフォルトの名無しさん:2009/09/23(水) 18:21:38
>>323
どうしてもアドミニストレータが入ってくるのを抑えたくて、その方法がこれしか思いつかなかったんです。
やっぱ最大化しかないですかね。ウィンドウズキーがありますからね…
ありがとうございます。

325 :デフォルトの名無しさん:2009/09/23(水) 18:24:12
Administrator うんぬんはまた別の話だろ。
何をやりたいのか、まったく理解できないけど。

326 :デフォルトの名無しさん:2009/09/23(水) 18:31:11
>>325
アドミニストレータは制限付ユーザーのパスワードが分かってしまうので、ばれないようにしたかったんです。
でも無理みたいですよね。ありがとうございました。

327 :デフォルトの名無しさん:2009/09/23(水) 18:34:47
そりゃ、クラックすればわかるし、パスワード変更はできるけど、
VB とはまったく関係ない話。

328 :デフォルトの名無しさん:2009/09/23(水) 18:45:17
プログラム実行中はできなくしたとしても、プログラム終了させたらできちゃうから意味なくね?

329 :デフォルトの名無しさん:2009/09/23(水) 18:55:04
>>327
ごめん、なんでそんな仕様にするの?って聞かれたから理由を言ったんだ

>>328
パスワード入力して正しくない場合は、×押したときに強制的にキャンセル

330 :デフォルトの名無しさん:2009/09/23(水) 18:56:59
だから GINA で作れって言ってんだろハゲ

331 :デフォルトの名無しさん:2009/09/23(水) 19:02:15
なんでそんな仕様にするの?って聞かれたから理由を言ったんだ。キリッ

じゃねーよw

332 :デフォルトの名無しさん:2009/09/23(水) 19:15:52
システム部を持たない会社が「おい、おまえパソコン詳しいよな」みたいなノリで
社員に社内向けツールを作らせようとするとそんな要求仕様になりやすいな(経験者談)

333 :デフォルトの名無しさん:2009/09/23(水) 19:20:12
まあ、率直にいってそういうことがしたいなら、
今はUSBドングル使ってシステムをロックする製品なんてのもあるみたいだから
そういうのを使った方が確実だろうね。

それ以前に、まあ普通は隠蔽したいものは何らかのデータなんだろうから、
そういうことなら暗号化すりゃいいだけだね。

しかし、そんな信頼できない奴がシステム管理者ってのがそもそも間違ってる気もしますが。

334 :デフォルトの名無しさん:2009/09/23(水) 20:39:25
>>330
ごめんそっち勉強するよ。
>>331
いやそんなつもりはw
とりあえずできないのはわかったんでやめます。
ありがとうございました。

335 :デフォルトの名無しさん:2009/09/24(木) 21:34:44
すいません 教えてください
マウスの移動で線を描画したいのですが pictureboxでdrawlineで書いていますが 太さを1以上にすると
汚い描画になります、VB6のときはこんなことはなかったのですが、どなたか教えてください

336 :デフォルトの名無しさん:2009/09/24(木) 21:36:30
Graphics のプロパティをいろいろ調べてみれ。

337 :デフォルトの名無しさん:2009/09/24(木) 22:57:22
>>336
SmoothingMode はいくつか試しましたが、だめでした。
太さを大きめにすると目立ちます

なぜだろう? もっと違うところ?

338 :デフォルトの名無しさん:2009/09/24(木) 23:59:51
これ見てダメならあきらめろ。

http://dobon.net/vb/dotnet/graphics/antialias.html

339 :デフォルトの名無しさん:2009/09/25(金) 00:07:04
>>338
いっちゃ悪いけどそういうトンマな回答もどうかね。
「VB6のときはこんなことではなかった」と言っているから、
そういう問題ではないはずだ。

>>335
「汚い描画」なんていう抽象的な表現では誰にも問題が正確に伝わらない。

こういう場合は(というよりほとんどの場合そうあるべきだが)くどいぐらいに
具体的に君の問題を表現しなきゃダメだよ。

340 :デフォルトの名無しさん:2009/09/25(金) 00:13:13
>>339
わからないならレスしないでください。

341 :デフォルトの名無しさん:2009/09/25(金) 00:34:38
御託はいいからコードを出せ、ってことだな。

342 :デフォルトの名無しさん:2009/09/25(金) 00:36:18
まず問題あるっていうコードを出すのがスジだな。

343 :デフォルトの名無しさん:2009/09/25(金) 03:04:53
汚い描画してるからじゃね?

344 :デフォルトの名無しさん:2009/09/25(金) 07:08:26
>341
Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
'position
Dim POS_X As Integer
Dim POS_Y As Integer

Dim g As Graphics
g = PictureBox1.CreateGraphics()

' Create a new Pen object.
Dim Pen As New Pen(Color.Green)

' Set the width to 10.
greenPen.Width = 10

If e.Button = Windows.Forms.MouseButtons.Left Then
g.DrawLine(Pen, POS_X, POS_Y, e.X, e.Y)
End If

POS_X = e.X
POS_Y = e.Y

' Dispose of the custom pen.
Pen.Dispose()
End Sub

345 :デフォルトの名無しさん:2009/09/25(金) 07:10:04
>344 一部ミス

Public Class Form1

Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
'position
Dim POS_X As Integer
Dim POS_Y As Integer

Dim g As Graphics
g = PictureBox1.CreateGraphics()

' Create a new Pen object.
Dim Pen As New Pen(Color.Green)

' Set the width to 10.
Pen.Width = 10

If e.Button = Windows.Forms.MouseButtons.Left Then
g.DrawLine(Pen, POS_X, POS_Y, e.X, e.Y)
End If

POS_X = e.X
POS_Y = e.Y

' Dispose of the custom pen.
Pen.Dispose()
End Sub
End Class

346 :デフォルトの名無しさん:2009/09/25(金) 09:50:06
ボリューム・シャドウ・コピーをVB.NETで行うには
どうやったらいいでしょうか?

347 :デフォルトの名無しさん:2009/09/25(金) 17:58:49
Dim threads(n) As Threading.Thread
threads(0) = New Threading.Thread(AddressOf Foo)
threads(1) = New Threading.Thread(AddressOf Hoge)
・・・
For Each thread As Threading.Thread In threads
  thread.IsBackground = True
  thread.Start()
Next

でスレッドを作っています。
この後どれかのスレッドが終了するまで待って、その後全てのスレッドを終了させるにはどうしたらいいでしょうか?
(WIN32APIでいうところのWaitForMultipleObjectです)

348 :デフォルトの名無しさん:2009/09/26(土) 01:22:31
TrackBarコントロールでマウスをクリックしたときに、
その座標が目盛りのいくつなのかを取得したいのですが、
方法を御存知の方、いらっしゃいましたら教えてください。

349 :デフォルトの名無しさん:2009/09/26(土) 03:07:38
スレッド自体からはWaitHandle取れないみたいだから、
ManualResetEvent1個用意しといて
各スレッドは終了時にSet
かつ随時タイムアウトなしでWaitしてSetされてたら終了
呼び出し側は単にWait
でいいんじゃね?
まあ効率を気にするなら各スレッドでのチェックのために
終了フラグ一個追加した方がいいかも知れんが。


350 :デフォルトの名無しさん:2009/09/26(土) 03:08:28
>かつ随時タイムアウトなしでWaitしてSetされてたら終了
タイムアウトなしじゃなくて0指定の間違い。


351 :デフォルトの名無しさん:2009/09/26(土) 11:03:31
オレはそんなに沢山のスレッドを作って何がしたいのかが知りたい

352 :デフォルトの名無しさん:2009/09/26(土) 12:33:25
そんな面倒なことしなくてもベタにやるだけだと思うけど・・・

全スレッドを終了するメソッドを用意して、各スレッド内の処理の最後で
それを呼び出すようにするだけじゃん。
悩むような問題かね。

353 :デフォルトの名無しさん:2009/09/26(土) 15:31:50
MSChartでY軸を右側にしたいのでYAxisTypeをSecondaryに設定すると
AxisY2.MinimumとMaximumは自動でセットされないんだね。
Primaryなら自動でセットされるのに。
これって仕様?
なんか理由があるんだろうか?

354 :デフォルトの名無しさん:2009/09/26(土) 16:02:16
>全スレッドを終了するメソッドを用意して、各スレッド内の処理の最後で
>それを呼び出すようにするだけじゃん。

そのコード書いてみな。
絶対問題ありのコードになるから。


355 :デフォルトの名無しさん:2009/09/26(土) 16:26:19
>>354
そりゃトンマなお前さんが書けばそうなるんじゃないの。

俺に言わせりゃ、こんなので問題起こす奴の方がオカシイと言わざるを得ない程度の、
超初歩的な内容だと思うけど。

356 :デフォルトの名無しさん:2009/09/26(土) 16:28:52
>>353
事故レスだけど
IsStartedFromZeroの設定でした^^;

357 :デフォルトの名無しさん:2009/09/26(土) 16:30:29
>>355
だから書いてみてよ。
全部のスレッドを終了するメソッドを問題ないように書いてみなよ。


358 :デフォルトの名無しさん:2009/09/26(土) 16:39:46
>>357
逆にチミが「問題」が発生するコードを書いてみれば?w

俺は馬鹿に説明するためにそれなりに長くならざるをえないサンプルコードを
書くなんてまっぴら御免だけど、ダメなコードのどこがダメでどう直せばいいかを
解説するぐらいの手間は払うよ。

359 :デフォルトの名無しさん:2009/09/26(土) 16:44:20
あーつまり書けないのか?かけるんなら書けよ。
超初心者でも間違う方がおかしいコードなんだろ。
すぐ書けるだろ。
俺は>>349辺りでどうかなって書いたんだからさ。

まあ絶対書かないよな、お前そういう奴だよ。
>俺に言わせりゃ、こんなので問題起こす奴の方がオカシイと言わざるを得ない程度の、
>超初歩的な内容だと思うけど。
いきなりこういう反応をするやつで、自分からまともに何かを示すやつを見たことがない。

何を言ってもはぐらかすだけで、自分からは絶対に書かないんだよ、


360 :デフォルトの名無しさん:2009/09/26(土) 16:46:53
単純に字義通りに取った場合、最初のスレッドの処理が終わったら
他のスレッドの処理が途中であっても終了するということになる。
それを指摘してるんだろ。

361 :デフォルトの名無しさん:2009/09/26(土) 16:49:00
>>359
俺は「かけるんなら書くべき」なんていう妙な価値観を持ってない。

もちろん君がそういう価値観を持つのは勝手ではあるが、
その価値観を他人に振りかざして無理強いする前に、君自身が自分の価値観を
実践したらどうなのか。

362 :デフォルトの名無しさん:2009/09/26(土) 16:50:28
>>360
誰に向かって何が言いたいの?

363 :デフォルトの名無しさん:2009/09/26(土) 16:55:40
>>358
クソワロタ
どんなコードをイメージして簡単だと言ったのかなんて>>358以外分からん


364 :デフォルトの名無しさん:2009/09/26(土) 16:56:30
>>362
>352に対して、言葉は正しく正確にと。

365 :デフォルトの名無しさん:2009/09/26(土) 17:00:25
>>364
>>360がそんな偉そうなことが言えるような文章なのか。

366 :デフォルトの名無しさん:2009/09/26(土) 17:06:15
まあ、汎用的な用途を考えるんじゃなくてスレッドの処理内容を全部自分で書くなら
全部のスレッドを強制終了させるようなコードでもまずまず問題はおこらならいだろうと期待はできるけど、
普通にスレッドを扱うようなプログラムを書くやつは、そもそもスレッドを強制終了させようなんて発想しないよね。

>>349みたいなやり方を発想するのがごく普通というか常識な感覚であって、
>>352みたいな発想は出てこない。
>>352みたいな発想はまともにマルチスレッドのプログラムを書いたことがないようなやつの
典型的な発想パターンだよね。


367 :デフォルトの名無しさん:2009/09/26(土) 17:10:18
>>366
俺はスレッドをアボートする、なんて一言も書いてないが。

先に「問題」があるコードをまず提示しろ、って言ってるのはそのあたりの
微妙な問題もあるからなんだけどね。

368 :デフォルトの名無しさん:2009/09/26(土) 17:12:21
アボートする以外にどうやって全部のスレッドを終了するメソッドを書くのか教えてくれ。


369 :デフォルトの名無しさん:2009/09/26(土) 17:13:46
>>368
だから、そんなものはスレッド内の処理に依存する問題であって、
一意にこうだ、なんて言えない。

だから先に「問題」があるコードを提示しろと言ってる。

370 :デフォルトの名無しさん:2009/09/26(土) 17:14:17
>>367
基地外だなこいつ。

>先に「問題」があるコードをまず提示しろ、って言ってるのはそのあたりの
>微妙な問題もあるからなんだけどね。

>俺に言わせりゃ、こんなので問題起こす奴の方がオカシイと言わざるを得ない程度の、
>超初歩的な内容だと思うけど。

おいw


371 :デフォルトの名無しさん:2009/09/26(土) 17:16:16
>>370
意味がわからん。

372 :デフォルトの名無しさん:2009/09/26(土) 17:19:06
>>369
だんだんこいつが何を言ってるのか分からなくなってきた

>そんな面倒なことしなくてもベタにやるだけだと思うけど・・・

>全スレッドを終了するメソッドを用意して、各スレッド内の処理の最後で
>それを呼び出すようにするだけじゃん。
>悩むような問題かね。

そのやり方を教えろってんだよ。
>>349に対して
>そんな面倒なことしなくてもベタにやるだけだと思うけど・・・
なんだったらもっとシンプルなべたな方法があるんだろ?

スレッドをアボートしない方法でそんな方法は思いつかないが。


373 :デフォルトの名無しさん:2009/09/26(土) 17:22:34
>>372
スレッドをアボートするのとスレッドを終了させることはイコールじゃないよ。
こんなことから説明しなきゃならんのかよ。

例えばスレッドの中身が単純なwhileループなら、外からループ条件をfalseに
設定してやればスレッドは終了する。

っていうか、>>347の問題とスレッドの終了方法は直接関係がない。

374 :デフォルトの名無しさん:2009/09/26(土) 17:26:42
だからそれってほとんど>>349だろ?

それよりもベタな簡単な方法が、
「全スレッドを終了させるメソッドを最後に呼ぶ」
なんだろ?

かつその方法はアボートしないんだろ?

じゃあどうすんの?


375 :デフォルトの名無しさん:2009/09/26(土) 17:28:25
>>373
>>349見たら明らかだがどうみてもそんなこと分かってるっていうか最初からそう書いてる。


376 :デフォルトの名無しさん:2009/09/26(土) 17:28:27
単純化して言えば、>>347の問題は>>352に書いたとおり、
各スレッドを終了させる方法(メソッド)が用意されていれば、
全てのスレッドに対応するそのメソッドを呼び出すメソッドを作って、
それを各スレッドの一番最後の処理から呼び出すようにするだけ。

もちろん、自分のスレッドの終了を待つような馬鹿なミスを犯して
デッドロックしないよう注意は必要だよ。

377 :デフォルトの名無しさん:2009/09/26(土) 17:36:45
>単純化して言えば、>>347の問題は>>352に書いたとおり、
>各スレッドを終了させる方法(メソッド)が用意されていれば、
>>354

>各スレッドを終了させる方法(メソッド)が用意されていれば、
www

そのメソッドを示さないと悩むだろw
>悩むような問題かね?
ってんだからさ、悩まないようにしてやれよ。

>各スレッドを終了させる方法(メソッド)が用意されていれば、
>全てのスレッドに対応するそのメソッドを呼び出すメソッドを作って、
>それを各スレッドの一番最後の処理から呼び出すようにするだけ。

>もちろん、自分のスレッドの終了を待つような馬鹿なミスを犯して
>デッドロックしないよう注意は必要だよ。

これが、>>349に対して、
>そんな面倒なことしなくてもベタにやるだけだと思うけど・・・
の面倒なことしないベタなやり方なんだな。


378 :デフォルトの名無しさん:2009/09/26(土) 17:38:19
一番笑えるのは全部後だしでヒントが出た瞬間に反応してくることだな。


379 :デフォルトの名無しさん:2009/09/26(土) 17:39:50
メインスレッドで終了フラグ立ててサブスレッドは
そのフラグが立ってれば終了すればいいんじゃないの?


380 :デフォルトの名無しさん:2009/09/26(土) 17:42:33
>>376
>もちろん、自分のスレッドの終了を待つような馬鹿なミスを犯して
>デッドロックしないよう注意は必要だよ。

デッドロックって言葉が思いついたのか?
この話の流れでは自分自身の終了を待つなんて状況自体が発生しないはずだけどな。
それとも>>376のどこかで終了を待つようなコードを書いてしまう可能性があるのかい?
どこで書くんだろうなそんなこと。


381 :デフォルトの名無しさん:2009/09/26(土) 17:47:42
他所でやれ

382 :デフォルトの名無しさん:2009/09/26(土) 17:47:54
>>379
メインからは分からないから終了フラグは立てられない。
だから、終了フラグみたいなのを立てるのはスレッド側になる。
>>349のようにイベントを使うか、
もしくはフラグだけにしてメインからは全スレッドにJoinするか、くらいだな。

まあイベントの方が普通なやり方だけど。
Joinだと結局全スレッドが終わるのを待つ感じになるからね。


383 :デフォルトの名無しさん:2009/09/26(土) 17:56:39
どう見ても>>352が素人で病気
以上、終了


384 :デフォルトの名無しさん:2009/09/26(土) 18:25:35
>>380
ダメグラマらしい意見だね。

全てのスレッドを終了させるメソッドは、それ自身が終了させようとする
スレッドの中の一つから呼ばれる。

スレッドの終了処理は、実際にターゲットのスレッドが終了したかどうかの
確証をするのが普通だから、例えばそれをベタにJoin()を使って行うとデッドロックする。

385 :デフォルトの名無しさん:2009/09/26(土) 18:27:55
っていうか、結局起こりうる「問題」って何のことなのかね。
まったく意味がわからん。

386 :デフォルトの名無しさん:2009/09/26(土) 18:33:59
普通じゃないし今回の話でも確証なんて意味がない。
止まらない可能性まで考慮するならそもそもJoinなんて使っちゃダメで
自分自身だからどうという話ではない。

まだ続ける気?
なら>>352の例を示してほしいんだがな。

387 :デフォルトの名無しさん:2009/09/26(土) 19:07:39
>>385
>>349に対して>>352で面倒なことしなくてもって言ってるんだから
しかもスレッドを終了させるって言ってるんだから、
普通に考えればアボートすると言ってるとしか読み取れない。
本来そんな事しないでもすむのにスレッドをアボートするってだけで既に問題ありとされるのが普通。
スレッド使う上での常識としてね。

で、どっちにしても書き方からスレッドに関して素人なのが明らかだから、
コード書かせりゃそれ以外にもどっかに問題あるコードになる可能性が高いと思ってな。

まあ必要ないのにアボートする時点で常識的に問題ありとみなしていいレベルだが。

まさかフラグ立ててスレッド側で監視しつつ終了待機するメソッド作るのが>>349よりベタとは思わないし、
フラグ立てるだけなら普通スレッドを終了するメソッドとは言わないし
そもそもメソッドにするだけで面倒が増えてるだけ。
>>349ですら面倒で、よりベタとなるとアボートするくらいしかない。


ってのが>>354の意図。
ああ長い。


388 :デフォルトの名無しさん:2009/09/26(土) 19:15:15
まあ正直いうと単に>>354みたいに書いたら
どっかでボロを出すかと思ったのも有るけどな。
>>352も微妙な問題があるって自分で言ってるんだから、
本人じゃないならあとは>>352に微妙な問題について聞いてくれよ。



389 :デフォルトの名無しさん:2009/09/26(土) 19:18:48
>>387
なーんか2ch脳らしい強引な物の言い方だね。
何度も言うように

 スレッドの終了 ≠ スレッドのアボート

君が両者をイコールだと思うのは完全に勝手だが、
「俺にスレッドの終了=スレッドのアボートだと思わせるのはお前のせい」
みたいな自己中心的な物言いをされても、「恥を知れ」以外に返す言葉がない。

まあ、>>352の発言が言葉が足りずミスリーディングなのは認めるけど、
要は、スレッドで実行したい処理をクラスでラップする「ベタ」な方法を取るべきであって、
>>349的なスパゲティーコードはよくないって事だよ。

390 :デフォルトの名無しさん:2009/09/26(土) 19:31:52
お前>>349のやり方の意味分かってるのか?
かなりベタでスパゲッティとかいうようなやり方じゃないぞ。
だいたい>>349はプリミティブレベルの考え方に近いもので
クラス化するとかどう書くかは別にやりたきゃ好きにしろってレベルだぜ。

つかクラスでラップってまたいきなり初めて出てきたな。
>>352がそういう意図ってお前エスパーでも相手にしてるのか?
流石にそのベタなコードとやらを示してもらわないと分からない。
あっ余計な事言ったか、またループだな。


391 :デフォルトの名無しさん:2009/09/26(土) 19:35:23
スレッドで実行したい処理をクラスでラップする、なんていうのは、
「ベタ」、つまり説明不要の定石だから説明しなかったまで。

っていうか、もういいわ別に。
一人かどうか知らんけど君みたいな馬鹿言い負かしても意味ないし。


392 :デフォルトの名無しさん:2009/09/26(土) 19:38:21
こんな感じ?待っていれば他のスレッドも終了するという前提だけど。

Static testArr() As Boolean = New Boolean() {False}

SyncLock testArr
 Dim testRes As Boolean = testArr(0)
 testArr(0) = True
 If testRes Then Exit Sub
End SyncLock

For Each thread In threads
 If Not Object.ReferenceEquals(thread, thread.CurrentThread) Then
  thread.Join()
 End If
Next

testArr(0) = False


393 :デフォルトの名無しさん:2009/09/26(土) 19:53:18
>>391
今回は元々やりたい処理がそれぞ別メソッドになってるけど、
それでも「処理」をクラスでラップするのが常識かな?
一般に処理をクラスでラップするのが常識なのは、
処理に必要なデータをクラス側で管理するためで
今回のはどちらかと言えばスレッドの制御をクラスの機能として実装し、
処理はデリゲートとしてスレッド制御のクラスに渡すってのが普通な気がする。

C#なら匿名メソッドやらラムダ式使えばすごいシンプルに出来るんだがな。
今のVBって複数行のラムダ式使えたっけ?
次のバージョンからだったかな?


394 :351:2009/09/26(土) 20:17:09
だから〜、沢山スレッド作っておいて一等賞を取ったスレッド以外を
終了させるなんていったい何がしたいんだ〜?

395 :デフォルトの名無しさん:2009/09/26(土) 21:13:59
>>391
>スレッドで実行したい処理をクラスでラップする、なんていうのは、
>「ベタ」、つまり説明不要の定石だから説明しなかったまで。

>>347のでどうやんだよこれ…?


396 :347:2009/09/26(土) 21:22:45
盛りあがってますね
>>349の方法でやってみます。ありがとうございました。

>>351
最小で1つ、多くてもせいぜい3つぐらいなんですけどね>スレッド数
内容は禁則事項です♪

397 :デフォルトの名無しさん:2009/09/26(土) 22:45:23
そんなスパゲッティで面倒な方法はだめだ。
>>352
>>376
>>389
>>391
を見てクラスでラップする「ベタ」な方法でやるんだ。
こんなの定石だから>>351はあえて教えてくれないぞ。
コードができたら問題点を指摘してくれるから見せてみるんだ。


398 :デフォルトの名無しさん:2009/09/26(土) 22:49:50
言っとくがこんな超初歩なところで問題あるコードなんて書いたら
ちょっとオカシイってことだからな、超初歩以前に君がおかしくないかがためされるんだぞ。
心してかかるんだ。


399 :デフォルトの名無しさん:2009/09/26(土) 22:54:17
そろそろウザイ。

400 :デフォルトの名無しさん:2009/09/26(土) 23:16:42
テンプレ
Q. 〜のやり方を教えてください
A. クラスにラップしてベタに書け

401 :デフォルトの名無しさん:2009/09/27(日) 03:41:35
デリゲートでマルチスレッドし、AsyncCallbackでコールバック関数で残りすべてのスレッドを終了させればOK

402 :デフォルトの名無しさん:2009/09/27(日) 09:27:16
>>401
BackgroundWorkerでよいのじゃないか

403 :デフォルトの名無しさん:2009/09/27(日) 11:06:32
ダメとは言わないが向いてないね。
意味がない。


404 :デフォルトの名無しさん:2009/09/27(日) 13:13:46
>>401
AsyncCallback関数の中をどうやって実装するのだろう?
なんか振り出しに戻る予感。。

405 :デフォルトの名無しさん:2009/09/27(日) 13:49:39
BackgroundWorkerが一番楽だと思う。
WorkerCompleteあるし、CancelAsyncあるし。
>>401は、どうやってほかのスレッド終了させるんだろう。

406 :デフォルトの名無しさん:2009/09/27(日) 13:50:11
結局大して変わらないよね。


407 :デフォルトの名無しさん:2009/09/27(日) 13:52:23
>>405
どっちも大して変わらんて。


408 :デフォルトの名無しさん:2009/09/27(日) 13:55:10
Environment.Exit()

409 :デフォルトの名無しさん:2009/09/27(日) 13:56:59
VB2008の555だったかの究極?技?何とか言う本
立ち読みしてみたら酷かった。
この手の本はあんま進歩しないなあ。
ちゃんと理解してる内容だけ書けばいいのに。
.NET系って本に間違いが多すぎる気がする。


410 :デフォルトの名無しさん:2009/09/27(日) 13:58:55
>>408
それだとプロセスが終了しちゃうじゃん。

411 :デフォルトの名無しさん:2009/09/27(日) 13:59:05
>>347っぽいコードをそれぞれのやり方で書いてみれば
どれがやりやすいか、あまり差がないか
よく分かると思うぞ。


412 :デフォルトの名無しさん:2009/09/27(日) 15:00:04
>>410
>>347は全てのスレッドを終了させると書いているので間違いではないな。

413 :デフォルトの名無しさん:2009/09/27(日) 15:03:56
>>409
ドボンちゃんのサイト等があるのに今どきそんな本を買う人が居るのかね〜?

414 :デフォルトの名無しさん:2009/09/28(月) 16:08:22
詳しく

415 :デフォルトの名無しさん:2009/09/28(月) 20:01:14
継承されるクラスを作成するときに
オーバーライドとイベント実装をどこで切り分けていますか?

416 :デフォルトの名無しさん:2009/09/28(月) 20:02:24
>>414
ドボンを?

417 :デフォルトの名無しさん:2009/09/28(月) 20:05:00
継承を前提にするんだったらイベントはいらん
継承しないで外からアクションを挿入するためにイベントを使うんだ

418 :デフォルトの名無しさん:2009/09/28(月) 20:15:19
>>415,>>417
二人とも何を言ってるのか意味不明すぎる。
エスパー同士の会話なのかアーパー同士なのかどっちなんだ。

419 :417:2009/09/28(月) 20:23:03
「継承されるクラスを作成」と書いてあるから,抽象クラスでも作ってるのかと思った
たぶん勘違い
Formの派生クラスを作ったときにFormのOnPaintをオーバーライドするべきかPaintイベントを使うべきか
というような話なら,一般的にはオーバーライドした方がいい(少なくともMSDNにはそう書いてある)

420 :デフォルトの名無しさん:2009/09/28(月) 22:50:51
>>419
Formは必ず派生クラスで使うのにOnHogeとHogeイベントの両方があるのかって話し。
実行効率が良いのはOnHogeだけど使いやすいのはHogeイベントかなと。
だったらイベントだけで実装しても良いのではないかと思っただけです。

421 :デフォルトの名無しさん:2009/09/28(月) 23:04:15
OnHogeはオーバーライドされるためだけにあるんじゃない。
派生クラスから基底クラスのOnHogeを呼ぶことでHogeイベントを発生させるためにも使われる。
.NETのガイドラインで決まってることだから黙って従え

422 :デフォルトの名無しさん:2009/09/28(月) 23:15:33
>>420
まあ>>421みたいな教条主義もどうかと思うが、
自分で発生するイベントを自分で受信する、普通に考えれば間抜けチックなプログラミングを
「使いやすい」と感じるセンスには疑問を持った方がいいと思うよ。

それはおかしい。かなり変てこなセンスだ。

423 :デフォルトの名無しさん:2009/09/28(月) 23:20:18
WPFになるとOnHogeを持たず派生クラスでもイベントハンドラを使うしかないイベントが多く出てくるよ。
まあWPFは設計が全然違ってて機構上そうなってるんであって
WinFormsではおとなしくOnHogeを使うべき。

424 :420:2009/09/28(月) 23:25:16
オレの説明がとっても変だったか。。
仮想メソッドを使うかイベントデリゲートを使うかって話です。
便利と言うのはIDEがイベントを挿入してくれるから。

425 :デフォルトの名無しさん:2009/09/28(月) 23:27:33
仮想じゃなくて抽象メソッドだった。

426 :デフォルトの名無しさん:2009/09/28(月) 23:44:41
>>422
IDEとトータルで考えない方がセンスがないだろう。
全部イベントなのにフォームとコントロールでわざわざ使い分けるのがセンスがいいのか?


427 :デフォルトの名無しさん:2009/09/28(月) 23:45:41
>>425
つまり、別の言い方をすればprotectedなイベントは有りかって話かな?
少なくとも.NETクラスライブラリの中にはあるね。
個人的はそういう方法を取りたい場面に当たったことがない。

428 :デフォルトの名無しさん:2009/09/29(火) 11:14:14
>>424
継承と委譲の区別は出来てるか?

429 :デフォルトの名無しさん:2009/09/29(火) 16:05:39
>>416
冗談w

430 :デフォルトの名無しさん:2009/09/29(火) 20:06:10
>>428
抽象メソッドとデリゲートは結果的の同じだが。

431 :デフォルトの名無しさん:2009/09/29(火) 21:44:31
イベントは引数の形式が決まってるだろ(従わないことも可能だが完璧なガイドライン違反)
テンプレートメソッド作る度にいちいちHogeEventArgsやHogeEventHandler用意すんの?
それに抽象メソッドなら派生クラスで実装することを強制できる

432 :デフォルトの名無しさん:2009/09/30(水) 11:48:08
>>424
便利かなぁ…?
とりあえず overrides空白 まで入れればインテリセンスは利くわけだし。

>>430
つまり「よくわからない」ってことね。
そのフォームを他のフォームのインスタンスに含めるのであれば
いちいち派生させずともイベントを追加してやればいいし
常に派生させるんだぜ!というのなら Protected Overridable なメソッドを
用意してやればいい。
まあ両方用意しとくのが無難だし、>>422 には同意しとく。

>>431
>いちいちHogeEventArgsやHogeEventHandler用意すんの?
特に追加情報がなければ EventArgs をそのまま使えばいいし、
そーすっとデリゲートも
Public Event Hoge(ByVal sender As Object, ByVal e as System.EventArgs)
の一行で済む。

433 :デフォルトの名無しさん:2009/09/30(水) 11:49:17
VB終了のお知らせ
http://gigazine.net/index.php?/news/comments/20090930_security_essentials/

434 :デフォルトの名無しさん:2009/09/30(水) 19:09:43
なんでM$製のアンチウィルスソフツがVBに関係するのか、>>433には説明を求む。
文中検索掛けてもVBもVisualも引っかからなかったのだが。

435 :デフォルトの名無しさん:2009/09/30(水) 19:18:59
古典的ネタにマジレスカコイイ

436 :デフォルトの名無しさん:2009/09/30(水) 19:37:14
>>432
>とりあえず overrides空白 まで入れればインテリセンスは利くわけだし。

お〜、そんなんが出来るんだ。
知らなかった。ありがと〜ん。


437 :デフォルトの名無しさん:2009/09/30(水) 19:38:10
ネタだったのかYO!
何かVB.NETの動作を阻害するものが入って動かなくなるのかと心配しちゃったじゃないかw

438 :デフォルトの名無しさん:2009/09/30(水) 19:50:32
インテリセンスとGoogleが無いとプログラミングが出来ない身体になってしまった。

439 :デフォルトの名無しさん:2009/09/30(水) 19:51:46
それでいいのだ

440 :デフォルトの名無しさん:2009/09/30(水) 20:23:36
>>428
オブジェクト指向で言う委譲とデリゲートの委譲は別のものでしょ?

441 :デフォルトの名無しさん:2009/09/30(水) 20:54:58
同じだ
オブジェクト指向でいう移譲を手軽に使えるようにするための仕組みがデリゲート

442 :デフォルトの名無しさん:2009/09/30(水) 21:04:15
どこがどういうふうに手軽なの?

443 :デフォルトの名無しさん:2009/09/30(水) 21:09:17
Javaやればありがたみがわかるよ
いちいちイベントハンドラごとに内部クラス作ってインターフェイス実装するんだぞ
やってることは本質的にデリゲートとまったく同じだけど糞面倒で可読性も悪い

444 :デフォルトの名無しさん:2009/09/30(水) 21:19:01
別に内部クラスとかつくらなくても、クラス自身でインターフェース実装して、
addActionListener(this);
とかできるじゃん。
全然面倒くさくないし、簡潔明瞭じゃん。

445 :デフォルトの名無しさん:2009/09/30(水) 21:25:55
同じ型のリスナを複数実装したいときは?
それに,直接実装するならpublicにしないといけないだろ?
イベントハンドラが全部publicで同じ名前(実際には無理だけど)ってどう思う?

446 :デフォルトの名無しさん:2009/09/30(水) 21:37:32
引数で区別できなかったっけ? publicで何か不都合ある?
どうしても不都合なら、別に内部クラスとかつくるのもそれほど面倒とは思えんが。

447 :デフォルトの名無しさん:2009/09/30(水) 21:44:33
>>446
443じゃないけど、面倒に決まってるでしょ。
だいいち、ただコールバックして欲しいだけなのに
本質的でないインターフェイスが必要になる点で鬱陶しすぎる。

448 :デフォルトの名無しさん:2009/09/30(水) 21:48:43
>>446
Javaやってるとはとても思えないな
カプセル化ってわかってる?
コントロールを削除したらpublicメンバを削除して継承してるインターフェイス減らすの?

449 :デフォルトの名無しさん:2009/09/30(水) 21:58:47
インターフェースが必要かデリゲートが必要かの違いだから面倒くささ度の観点からみれば対して変わらん。
インタフェースの方が実装の有無が他クラスから判断できるとか、使い回しができるとか、便利な面もある。
実際、AOPではインターフェースのそういった性質が多用されている。

同様にインターフェイス外すのも、デリケート外すのも俺的には面倒くささはいっしょ。特にC#とJavaでは。
VB.NETのは場合メソッド削除するだけだから幾分簡単に見えるが大した違いではない。あとIDEの自動化による
簡便性の違いは多少あると思う。


450 :デフォルトの名無しさん:2009/09/30(水) 22:01:14
Javaは単一のactionPerformedで全部受けてifでイベントの発生源ごとに分岐するパターンが最悪
WndProcかよ

451 :デフォルトの名無しさん:2009/09/30(水) 22:24:35
orz

452 :デフォルトの名無しさん:2009/09/30(水) 23:49:19
>>449
デリゲートはあくまで委譲のための(処理をカプセル化するためといってもいい)しくみなんだし、
いわゆる一般的な意味でのインターフェイスに関して
インターフェイスかデリゲートかっていうものではないでしょ。

javaだってイベントは普通委譲モデルで、ほとんどデリゲートとおんなじことやってるだけだし。
この使い方においてはインターフェイスもデリゲートも大した違いはない。
まあ専用のしくみであるデリゲートの方がよっぽど分かりやすいと俺は思うが。

.NETの言語だって、本来の意味でのインターフェイスの代わりに
デリゲートを使うなんてことは普通はしない。

ただし、フォームのイベントなんかは、実質考え方自体がイベントなんだから、
自分自身のイベントもコントロールなんかと同じようにイベントハンドラでやっても
何らおかしいことはない。


453 :デフォルトの名無しさん:2009/09/30(水) 23:59:22
問題はIDEとの相性の悪さ
JavaでIDEにイベントリスナを自動生成させたりするとものすごーく分かりづらいコードが出来上がる

454 :デフォルトの名無しさん:2009/10/02(金) 10:13:13
DataBindingしてるソースの方を変更したとき、コントロールに同期させるには
どうすればいいでしょうか?
IPropertyChangedを実装する方法はわかったのですが、そういった準備なしに
どこかのメソッドを呼び出す形で同期することはできないでしょうか?

455 :デフォルトの名無しさん:2009/10/02(金) 23:58:40
ResetBindings

456 :デフォルトの名無しさん:2009/10/04(日) 09:56:55
Form2からForm1のTextBox1.Textを設定できネーよなんとかしろ

457 :デフォルトの名無しさん:2009/10/04(日) 11:07:58
>>456
するな、そんな阿呆なこと。

Form1 に、TextBox1.Text を取得/設定する
Public なプロパティを定義するのが常套。

458 :デフォルトの名無しさん:2009/10/04(日) 11:09:59
むしろVBだからこそ、そんな阿呆なことができるべき

459 :デフォルトの名無しさん:2009/10/04(日) 11:11:00
VBだからどうでもいいよw
Form1のデフォルトインスタンス使えばおk
コントロールのアクセスレベルはデフォルトでinternalだからそのままアクセスできる

460 :デフォルトの名無しさん:2009/10/04(日) 11:34:49
>>459
>デフォルトでinternalだから
Friend じゃなくて?

461 :デフォルトの名無しさん:2009/10/04(日) 11:40:35
ああC#とごっちゃになってた

462 :デフォルトの名無しさん:2009/10/04(日) 11:52:15
>>458
規定のアクセスレベルがFriendなので同じプロジェクト内からは
出来てしまうアフォな仕様ですよ。
気に入らぬのでPrivateに変えてます。

C#だとPrivateなんだけどな。

463 :デフォルトの名無しさん:2009/10/04(日) 12:24:08
規定
ガイテイってよむの?

464 :デフォルトの名無しさん:2009/10/04(日) 12:45:39
ttp://dictionary.goo.ne.jp/
ほれ

465 :デフォルトの名無しさん:2009/10/04(日) 12:50:24
>>463
のりさだ (人名) です。

466 :デフォルトの名無しさん:2009/10/04(日) 14:13:36
>>463
既定と間違うのはよくあること。
時々“規定クラス”と変換してしまうのは個人的によくあること。

467 :デフォルトの名無しさん:2009/10/04(日) 19:12:43
>>463
ガイテイ
概定ってかくの?

468 :デフォルトの名無しさん:2009/10/05(月) 00:53:43
オマエらどんな餌にでも食いつくんだなw

469 :デフォルトの名無しさん:2009/10/06(火) 14:35:51
失礼します
Convert.ToStringで、数値を16進数にし、さらに1桁の場合は頭に0をつけて文字数を揃えるのを一括して行う方法はあるのでしょうか?
現在は16進数の文字列にしたあと、文字数をチェックして1桁なら0をつけているのですが、書き方が汚くなってしまうので・・・。
すいませんがよろしくお願いします。

470 :デフォルトの名無しさん:2009/10/06(火) 15:02:32
>>469
Convert.ToString(Int32, IFormatProvider)
IFormatProviderとしてNumberFormatInfoを使う。
なんて面倒なことしないで、
string.Format("{0:X04}", 100)
じゃ駄目?

471 :デフォルトの名無しさん:2009/10/06(火) 15:11:02
>>470
できました、ありがとうございます

472 :デフォルトの名無しさん:2009/10/06(火) 16:50:49
むしろ100.ToStringで

473 :デフォルトの名無しさん:2009/10/06(火) 20:14:58
("{0:X04}", 100)
{0:X04}と100のイミは?

474 :デフォルトの名無しさん:2009/10/06(火) 21:22:52
前後をある文字で埋めるだけなら、String.PadLeftやPadRightもあるね。

>>473 複合書式指定文字列と書式設定するObject

475 :デフォルトの名無しさん:2009/10/07(水) 00:39:12
うーむ・・

476 :デフォルトの名無しさん:2009/10/07(水) 01:55:32
もとの質問は2ケタでいいらしいぞ

大昔のBASICちっくに
Right$("0" & Hex$(数字),2)とかどうだ


477 :デフォルトの名無しさん:2009/10/08(木) 17:19:21
データグリッドビューでデータを表示させたとき
上の方をクリックすると勝手に列ごとにソートしてくれますが
そのときのイベントを取得することってできますか?
どうしたらよいかおしえてください

478 :デフォルトの名無しさん:2009/10/08(木) 17:26:43
Sortedイベントとかあるけど

479 :デフォルトの名無しさん:2009/10/08(木) 19:29:40
>>469
i.ToString("X02")

480 :デフォルトの名無しさん:2009/10/08(木) 22:42:50
タイマの使い方がわかりません。以下のソースで試してみましたが、
Threading.Timerは時間通りに実行されず、他の2つは実行もされません。
Timers.TimerとWindows.Forms.Timerはデザイナの方で定義し、パラメータはデフォルトです。
イベントハンドラはすべてtimeout=trueとしているだけです。
どなたか教えてください。よろしくお願いします。

Dim timeout As Boolean
Private Sub Button1_Click(略) Handles Button1.Click
  timeout = False
  Dim ThreadingTimer As Timer = New Timer( _
    New TimerCallback(AddressOf ThreadingTimer_Tick), Nothing, 0, 1000)
  While timeout = False
  End While
  ThreadingTimer.Dispose()

  timeout = False
  TimersTimer.Interval = 3000
  TimersTimer.AutoReset = False
  TimersTimer.Enabled = True
  While timeout = False
  End While
  TimersTimer.Dispose()

  timeout = False
  FormsTimer.Interval = 2000
  FormsTimer.Enabled = True
  While timeout = False
  End While
  FormsTimer.Dispose()
End Sub

481 :デフォルトの名無しさん:2009/10/08(木) 22:51:51
無限ループやめろ

482 :デフォルトの名無しさん:2009/10/08(木) 23:19:11
直接は関係ないけどDisposeの書き方が悪い
Try-FinallyのFinallyの中でDisposeするか,Using文を使ってDisposeは書かない

483 :デフォルトの名無しさん:2009/10/08(木) 23:23:45
まあ普通はタイマを一つのメソッド内でDisposeするなんてないだろうけどな

484 :デフォルトの名無しさん:2009/10/08(木) 23:25:12
CPU目いっぱい使ってループしてんだから、
1コアだとかなり反応悪いだろうな。
2コア以上ならそれなりに動くかも知れないが。

で、デザイナではっつけてる方はそもそもUIスレッドでイベントが発生するしくみになってるから
これじゃ動くわけがない。


485 :デフォルトの名無しさん:2009/10/08(木) 23:30:18
何でModule使ったら駄目なんですか?便利なのに
Myとか最高

486 :デフォルトの名無しさん:2009/10/08(木) 23:32:08
どこで何やってるかわからなくなるからだよ。
こんなこと言っても解らないだろうけど,クラスを使うのは余計なことを考えなくて済むようにするため。

487 :デフォルトの名無しさん:2009/10/08(木) 23:43:04
どういう文脈か知らんが、
Module使ったらダメってのは
Moduleを自分で作るな
ってことじゃないのか?


488 :デフォルトの名無しさん:2009/10/09(金) 00:18:08
>>481-484
ありがとうございます。
原因がわかったのでなんとかできました。
タイムアウト付きの処理を行いたかったのですが、
Thread.Joinで希望する処理ができました。

489 :デフォルトの名無しさん:2009/10/09(金) 10:26:07
>>485
便利なのは作った本人だけ


490 :デフォルトの名無しさん:2009/10/09(金) 10:49:02
すべてのクラスはnewして使うべき

491 :デフォルトの名無しさん:2009/10/09(金) 11:13:39
はあ?

492 :デフォルトの名無しさん:2009/10/09(金) 11:25:50
ふぅ

493 :デフォルトの名無しさん:2009/10/09(金) 14:27:10
4次元ベクトルを作ろうと
Public Class Vector4D(Of T)
をつくり、この中で加算を定義するために T型 の変数同士の加算を使ったら定義されていないというエラーになりました。

このクラスはベクトルなので T型 の集合は加減乗除やべき乗に閉じていなければならないのですが、そのような制限をつけるために Of T 「As
...」 などで対応し、結果として T型 の変数同士の加算がエラーにならないようにすることはできますか?

(練習用なのでこの方向で解決できるのかどうかをまず知りたいです。4次元固定のベクトルクラスが .NET Framework
に存在するならば、さらにそれを教えていただけるとありがたいです。)

494 :デフォルトの名無しさん:2009/10/09(金) 14:39:59
演算部分はデリゲートなりインターフェイスなりに委譲するようにする

495 :デフォルトの名無しさん:2009/10/09(金) 17:35:50
>>493
演算子 オーバーロード でぐぐれ

496 :デフォルトの名無しさん:2009/10/09(金) 17:38:28
演算子オーバーロードはジェネリックには使えないよー

497 :デフォルトの名無しさん:2009/10/09(金) 18:14:03
Of T
ってどんなイミが

498 :デフォルトの名無しさん:2009/10/09(金) 18:46:21
>>496
2008で実験してみたが
ジェネリックに使えなくはないけど、型ごとにオーバーロードしないとだめっぽい

Public Shared Operator +(ByVal a As Vector4D(Of Integer), ByVal b As Vector4D(Of T)) As Vector4D(Of Integer)を定義
Public Shared Operator +(ByVal a As Vector4D(Of Double), ByVal b As Vector4D(Of T)) As Vector4D(Of Double)を定義
...以下延々と必要な型に対して定義していく

使う方は楽かもしれんが、定義する方はジェネリックの利点がなくなるなぁ

499 :デフォルトの名無しさん:2009/10/09(金) 18:58:13
使う方にもデメリットがあるよ
オーバーロードされていない型のVector4Dをまともに使うことができなくなる
Vector4Dの外部から演算子オーバーロードを定義はできないから

500 :デフォルトの名無しさん:2009/10/09(金) 19:42:46
そもそもベクトルをジェネリックにする意義がよくわかりません。
どういう意図なんだろ。よーわからん。

501 :デフォルトの名無しさん:2009/10/09(金) 20:16:14
そこは疑問もつとこじゃないだろ。

あと今回問題なのは、Vector4Dの実装側で、
Tに対して算術演算が出来ないことなんだから、
演算子のオーバーロードは何の役にも立たん。


502 :デフォルトの名無しさん:2009/10/09(金) 20:28:44
>>501
時々君みたいなこという人がいるけど、
そもそも必要性が疑わしいものの実現可能性を考えてなんの意味があるの?

ベクトルをジェリックにして何の意味があるんだよ。
意味ないでしょ。

503 :デフォルトの名無しさん:2009/10/09(金) 20:51:47
System.Linq.ExpressionとかDynamicMethodとか使えばできなくはないよ
算術演算を行うメソッドを動的に生成してしまえばいい

504 :デフォルトの名無しさん:2009/10/09(金) 21:03:29
float,double,decimal,固定小数点数型辺りで使い回したいとか?

505 :デフォルトの名無しさん:2009/10/09(金) 21:06:19
C++ではたいていベクトルはテンプレートになってるけど
実際doubleやfloat以外に使われてるのを見たことがない

506 :493:2009/10/09(金) 22:23:58
皆さん、レスありがとうございます。最初に DynamicMethod を勉強して >>503 を試してみることにしました。

>>494
もう少し具体的に書いていただけると助かります。

>>504
主な目的はその通りです。

507 :デフォルトの名無しさん:2009/10/09(金) 22:28:27
DynamicMethodは無謀すぎる
インラインアセンブラみたいなことするんだぞ
自分は.NETオタだと自負できるようになってから出直せ

508 :デフォルトの名無しさん:2009/10/09(金) 22:56:46
命令口調クンって馬鹿だな、まで読んだ。

509 :デフォルトの名無しさん:2009/10/09(金) 23:05:40
やっぱりそもそもの発想がおかしいと思うけどねえ。
パフォーマンスが重要でないなら一番「大きな」型だけで演算を定義して
あとの型はその型との相互の変換だけ考えればいいし、パフォーマンスが重要なら・・・

そもそも演算誤差の扱いっていう泥臭い問題の存在を忘れてないか

510 :デフォルトの名無しさん:2009/10/09(金) 23:43:06
テンプレートみたいな何でもできるものをイメージしてたら、
Vectorをジェネリックに定義するのは何もおかしくない。
別に数値要素だけでしか使わないものではない。


511 :デフォルトの名無しさん:2009/10/10(土) 12:07:29
ジェネリックデリゲート使って演算定義から取り出すやり方も出来ないことはないぜ。
そこまでする価値があるかは別問題として。
DynamicMethodよりは楽だけど。


512 :デフォルトの名無しさん:2009/10/10(土) 12:08:17
あとどっちにしてもパフォーマンスは若干悪くなるな。


513 :デフォルトの名無しさん:2009/10/10(土) 18:48:11
>>511
Int32等のCLI組み込み型については演算子がオーバーロードされてるわけじゃないから無理
DynamicMethodを使わないのであれば,
Int32とInt32の足し算,Int32とByteの足し算,…みたいにすべてのケースに対する演算処理を
定義しておくしかない

514 :デフォルトの名無しさん:2009/10/10(土) 20:50:23
ExpressionTreeを使えばこういう事も可能だが
ttp://ufcpp.net/study/csharp/sm_genericop.html

515 :デフォルトの名無しさん:2009/10/10(土) 20:52:22
それDynamicMethodで実装されてるんだけどな

516 :デフォルトの名無しさん:2009/10/11(日) 00:52:44
サイトのソースデータをString変数に入れたら&という文字が&に置き換わっているのですが
これを一括して元に戻すにはどのような方法で戻したら良いでしょうか?
他にも置き換わっているものがあると思うので&に限定したReplaceではない方法が
あれば教えていただきたいです。

517 :デフォルトの名無しさん:2009/10/11(日) 00:54:09

なんか消えてしまったみたいです。
&が&amp; になってしまいます。(本当は半角)

518 :493:2009/10/11(日) 00:55:17
DynamicMethod を使う方法と並行して、>>514 を試しています。

http://ufcpp.net/study/csharp/source/Operator.cs より、C# のコード

public static readonly Func<T, T, T> Add = Lambda(Expression.Add);

を VB にすると

Public Shared Add As New Func(Of T, T, T)(AddressOf
まではわかったのですが、この右に何をつければよいでしょうか?


519 :デフォルトの名無しさん:2009/10/11(日) 00:57:25
>>517
HtmlEncode/HtmlDecode

520 :493:2009/10/11(日) 00:58:02
>>516
HTMLの実体参照ですね。頻出のものは
&amp; ←→ &
&gt; ←→ >
&lt; ←→ <
ですが http://www.ne.jp/asahi/minazuki/bakera/html/reference/charref などで一覧を見ることができます。

521 :デフォルトの名無しさん:2009/10/11(日) 01:03:25
>>519-520
ありがとうございます。
おかげさまで無事対処できそうです。

522 :デフォルトの名無しさん:2009/10/11(日) 02:24:22
特殊な文字があるutf-8のwebページのソースをファイルに保存したいのですが
WebClientでutf-8を指定してダウンロードしてStreamWriterで、書き込み時にutf-8を指定して
書き込んでいるのですが、保存されたテキストを見るとその文字が?になってしまっています。

teraPadというエンコードを指定できるテキストエディタでutf-8を指定して確認しているのですが
元の文字は消えてしまっているようです。
WebClientでダウンロードした直後にString変数に入れて、デバッグを一時停止して
カーソルを当てるとその特殊文字は正常に表示できているのですが、
そのままConsole.WriteLineに出力すると?になってしまっています。

ブラウザのソース表示から直接TeraPadでソースを開いても?になってしまいます。

これはどのようにして保存したら正しく保存できるでしょうか?
ちなみに文字は〜という文字の波を上下に反転したような形の文字です。
よろしくおねがいします。

523 :デフォルトの名無しさん:2009/10/11(日) 04:19:54
文字の確認はバイナリエディタでやった方が良い
DownloadFileすればプログラム上でエンコーディング悩む必要もないけど?

524 :デフォルトの名無しさん:2009/10/11(日) 05:27:02
コンソールとかエディタが使ってるフォントがその文字表示できないってオチじゃないだろうな

525 :デフォルトの名無しさん:2009/10/11(日) 10:25:50
>>522
全角チルダの上下反転表示とくれば、
FullWidthTilda(U+FF5E) と WaveDash(U+301C) の変換問題だな。
TeraPadは内部コードがShift_JISらしいので、
WaveDashが化けてしまっているんじゃないかな。
一度、WikipediaのUnicodeの所を読んでみると良いよ。

526 :デフォルトの名無しさん:2009/10/11(日) 11:02:18
>>518
Public Shared ReadOnly Add As Func(Of T, T, T) = Lambda(AddressOf Expression.Add)

Public Shared Function Lambda(ByVal op As Binary)
Return Expression.Lambda(Of Func(Of T, T))(op.Invoke(x)).Compile()
End Function

試してないけどだいたいあってるはず
Imports Binary = Func(Of ParameterExpression, ParameterExpression, BinaryExpression)
を忘れずに

527 :526:2009/10/11(日) 11:05:56
訂正
Return Expression.Lambda(Of Func(Of T, T, T))(op.Invoke(x)).Compile()

528 :デフォルトの名無しさん:2009/10/11(日) 11:43:33
内部SJISのエディタでutf8開くなんて無謀すぎだ。

529 :デフォルトの名無しさん:2009/10/11(日) 11:54:46
どちらかというと、今時内部SJISのエディタの存在自体が無謀な気もw

530 :デフォルトの名無しさん:2009/10/11(日) 14:29:59
>>522
chcp 65001
hoge.exe >file

531 :522:2009/10/11(日) 22:12:39
レスありがとうございます。
素直にメモ帳で開いたら正しく表示できました。
正しく保存できているのにteraPadで表示しようとあれこれやっていたんですね;
助かりました。

532 :デフォルトの名無しさん:2009/10/12(月) 04:13:45
comboboxで選択された内容を配列に格納すんのってどうやんの?
簡単におせーて

533 :デフォルトの名無しさん:2009/10/12(月) 08:08:19
SelectedItem

534 :デフォルトの名無しさん:2009/10/12(月) 10:50:40
>>532
一つしか選択できないのに何故ゆえに配列?

535 :デフォルトの名無しさん:2009/10/12(月) 17:01:01
なにゆえゆえ?


536 :デフォルトの名無しさん:2009/10/12(月) 17:45:30
>>534
細けーこたぁいいんだ
>>533
こいつをどうにかすればいいんだな?

537 :デフォルトの名無しさん:2009/10/12(月) 19:00:52
いやまず君自身の頭の悪さをどうにかしないとダメだよ

538 :デフォルトの名無しさん:2009/10/12(月) 19:56:07
無茶ゆうな

539 :デフォルトの名無しさん:2009/10/12(月) 20:37:04
掲示板とかのメッセージみたいなツリー構造のデータをファイルに保存するのに良い方法があったら教えて

540 :デフォルトの名無しさん:2009/10/12(月) 20:41:01
2ちゃんみたいに、フラットにしちゃうのが楽。

541 :デフォルトの名無しさん:2009/10/12(月) 21:11:49
>>539
JSON

542 :デフォルトの名無しさん:2009/10/12(月) 21:23:05
>>539
尻洗いズ

543 :デフォルトの名無しさん:2009/10/12(月) 21:24:34
>>537
オレもそう思う。

544 :デフォルトの名無しさん:2009/10/12(月) 23:25:45
羽山博いきてる?

545 :デフォルトの名無しさん:2009/10/13(火) 14:41:09
すいません、
コンボボックスのドロップダウンをEnableをFalseにせずに
出ないようにしたいんですが、これってvb.netじゃできないもんでしょうか?


546 :デフォルトの名無しさん:2009/10/13(火) 19:20:06
For I = 1 To 1000
System.Threading.Thread.Sleep(1)
Application.DoEvent
Next

これで約1秒待機しているのですが以前は大体1秒、2秒だったのですが
最近はすごい長くなってきました。
10000でも10秒位だったのですが、1分近くかかるようになりました。
これはどういう部分に原因がありそうでしょうか?
そういえばパソコンの動作も鈍い感じがします。
CPUやメモリには全然余裕がある状態でも同じです。

547 :デフォルトの名無しさん:2009/10/13(火) 20:00:29
そういうコードを書かない、でいいじゃないか

548 :デフォルトの名無しさん:2009/10/13(火) 20:27:24
>>546
お前はあほか


549 :526:2009/10/13(火) 20:28:24
UIスレッドでSleepはご法度

550 :デフォルトの名無しさん:2009/10/13(火) 20:49:55
>>547
どう書けばいいですか?

551 :デフォルトの名無しさん:2009/10/13(火) 20:51:33
タイマを使う

552 :デフォルトの名無しさん:2009/10/13(火) 20:52:52
待機が必要になるような処理をUIスレッドでやらない

553 :デフォルトの名無しさん:2009/10/13(火) 20:53:40
API剥き出しw

554 :デフォルトの名無しさん:2009/10/13(火) 21:10:41
必死な馬鹿が一人紛れてるな

555 :デフォルトの名無しさん:2009/10/13(火) 21:52:55
作り方はともかく、Sleepは最小の待機時間しか保証しないからな。
その何倍も経過した後で戻ってきても何の不思議も無い。
Do-LoopとStopwatchクラスで1秒経過するまで待てばそれなりに動かせるけど、
設計自体見直したほうがいいだろうな。

556 :デフォルトの名無しさん:2009/10/13(火) 21:57:18
DoEventsで時間食ってるんだろ

557 :デフォルトの名無しさん:2009/10/13(火) 23:39:55
今無職なのでVBで食っていこうかなって思ってます。オスッ

558 :デフォルトの名無しさん:2009/10/14(水) 10:43:08
ぼくも無職ですがVB覚えたい
昨日駅前のパソコンスクールに言って
「VBありますか?」
って聞いたら無いって言われました
やはり独学しかないのか

559 :デフォルトの名無しさん:2009/10/14(水) 12:33:00
スクールなんぞ金の無駄でしかない。


560 :デフォルトの名無しさん:2009/10/14(水) 17:34:42
じゃ、本で独学がいちばん?

561 :デフォルトの名無しさん:2009/10/14(水) 20:18:58
わざわざ始めるならJavaにしとけよ

562 :デフォルトの名無しさん:2009/10/14(水) 21:59:49
>>546
キミのその糞なコーディングにパソコンが嫌気がさして来たからだと思う。

563 :デフォルトの名無しさん:2009/10/15(木) 01:54:10
メディアプレイヤを起動してみるんだ


564 :デフォルトの名無しさん:2009/10/15(木) 09:28:09
>>562
終わった話に後から煽るだけ、ってのやめれ。
頭悪そうにしか見えない。

565 :デフォルトの名無しさん:2009/10/15(木) 09:56:30
>>560
今からなら C# いいよ

566 :デフォルトの名無しさん:2009/10/15(木) 20:47:26
JavaとC#を同時にやるのがいいと思う
VBはC#ができれば自動的にできるからあえてやる必要はない

567 :デフォルトの名無しさん:2009/10/15(木) 20:56:44
なにゆえ同時に

568 :デフォルトの名無しさん:2009/10/15(木) 22:12:58
Dim Arr As New ArrayList
Dim R As New Regex("hoge.+?")
Dim M As MatchCollection
M = R.Maches(hogeString)

上のような正規表現のMachesでマッチした結果を
ArrayListに入れたいのですが
どのように書いたら良いでしょうか?

569 :デフォルトの名無しさん:2009/10/16(金) 00:07:41
>>568
あっどれんぢ

570 :デフォルトの名無しさん:2009/10/16(金) 10:08:57
じゃあC#解説のおすすめのサイトと本教えてよ

571 :デフォルトの名無しさん:2009/10/16(金) 11:21:47
■@IT:連載  改訂版 C#入門
http://www.atmarkit.co.jp/fdotnet/csharp_abc2/index/index.html
入門とは書いてあるけど、これ全部理解できればまず困る事はないと思う

このサイトには他にもカテゴリが山ほどあって
目的の情報を探すのが大変かもしれないけど
凄く役に立つサイトですよ

もっと簡単そうなサイト?あったら俺も知りたい^^

572 :デフォルトの名無しさん:2009/10/16(金) 13:11:26
VBってそういう言語面からきちんと解説してるサイトや書籍が少ないよな
変数,演算子,制御構造終わったらあとはコピペ用Tipsばっか

573 :デフォルトの名無しさん:2009/10/16(金) 13:17:09
動けばいいから

574 :デフォルトの名無しさん:2009/10/16(金) 19:21:06
>>569
すみません具体的にどう書いたら良いですか?
Arr = AddRange(〜〜〜)
ここがわかりません。


575 :デフォルトの名無しさん:2009/10/16(金) 20:02:47
お前のコンパイラはエラーが発生すると爆発でもするのか?少しは試せよ。

576 :デフォルトの名無しさん:2009/10/16(金) 21:23:28
色々試しすぎて爆発したから質問してみた

577 :デフォルトの名無しさん:2009/10/16(金) 21:50:04
すこしはググれよ

578 :デフォルトの名無しさん:2009/10/16(金) 22:02:27
もうググり杉って出た
はやく教えて

579 :デフォルトの名無しさん:2009/10/16(金) 22:10:39
ヘルプ嫁

580 :デフォルトの名無しさん:2009/10/16(金) 22:27:02
もういい聞かない
もったいぶりすぎ質問スレじゃなかったのかよ

581 :デフォルトの名無しさん:2009/10/17(土) 00:53:48
>>580
質問スレだが回答スレではない。

582 :デフォルトの名無しさん:2009/10/17(土) 00:55:37
>>574
× Arr = AddRange(〜〜〜)
○ Arr.AddRange(〜〜〜)

583 :デフォルトの名無しさん:2009/10/17(土) 03:27:23
800*600のjpgを640*480にしてpngなどで保存するにはどんなコードを書けば

584 :デフォルトの名無しさん:2009/10/17(土) 08:48:35
BitmapクラスとGraphics.FromImage

585 :デフォルトの名無しさん:2009/10/17(土) 08:56:31
VBでChar.IsDigit("66t"),Char.IsDigit("3E5")がTrueになりますが、普通に10進数の数字だけで判断することはできませんか?

586 :デフォルトの名無しさん:2009/10/17(土) 09:08:59
普通に10進数の数字だけで判断してるけどな、Char.IsDigit
なぜそれでTrueを返すかはヘルプ見ろ

Int32.TryParseとかで変換しちまえばいいんじゃね

587 :デフォルトの名無しさん:2009/10/17(土) 13:12:05
それで実現できました。ありがとうございました。

588 :デフォルトの名無しさん:2009/10/17(土) 17:18:21
テキストボックスを、選択・コピーできるテキスト表示領域として使おうとしています。

したいこと
@キャレット非表示
A方向キーでのキャレット移動無効化
BSHIFTでの選択無効化

@はAPIのHideCaretで出来たのですが、他がさっぱりわかりません。
TextBoxBaseの該当メソッドをオーバーロードすればいいのでしょうか?
そうだとして、そのメソッドはどれでしょうか?

589 :デフォルトの名無しさん:2009/10/17(土) 17:45:22
キャレットを非表示にしてどうやって選択すんの?

590 :デフォルトの名無しさん:2009/10/17(土) 18:07:31
>>589
表示されて無いだけで選択は出来ます。
つまり、マウスだけで選択できる状態にしたいのです。

591 :デフォルトの名無しさん:2009/10/17(土) 18:12:22
Shift キーと方向キーを殺せばいいんじゃね?

592 :デフォルトの名無しさん:2009/10/17(土) 18:16:32
おすすめの
有料追加コントロール
無料追加コントロール
紹介して

593 :デフォルトの名無しさん:2009/10/17(土) 19:29:54
>>591
方向キーでスクロールをしているので、それが出来ないんですよね……

594 :デフォルトの名無しさん:2009/10/17(土) 19:58:11
なーんかユーザビリティを毀損するとしか思えない妙な俺様仕様に
こだわる人って時々いるけど、正直理解できんな。

明らかに便利で合理的な仕様であれば実現に向けて努力するのもわかりもするんだが。

595 :デフォルトの名無しさん:2009/10/17(土) 19:59:28
>>593
殺した上でスクロールスりゃいいだろハゲ

そんな Windows の流儀にそわない動きしたいなら、少しは自分で工夫しろよ。

596 :デフォルトの名無しさん:2009/10/17(土) 20:10:34
WebBlawserもどきを作りたいって言ったほうがよかったかな。

597 :デフォルトの名無しさん:2009/10/17(土) 20:11:23
WebBlawser・・・

598 :デフォルトの名無しさん:2009/10/17(土) 20:21:15
Browser....

599 :デフォルトの名無しさん:2009/10/17(土) 20:56:59
Brassiere...

600 :デフォルトの名無しさん:2009/10/17(土) 21:08:29
Brothers...

601 :デフォルトの名無しさん:2009/10/17(土) 22:31:21
>>596
ブラウザは普通シフトキーは受け付けるでしょ。
だから単に→←キーだけ握りつぶせばいいだけじゃないの?

ま、別にカーソルキーで範囲選択ができても何も困らないと思うが・・・

602 :デフォルトの名無しさん:2009/10/17(土) 23:48:11
>>595
出来たよ。
みんなありがとね。

603 :デフォルトの名無しさん:2009/10/18(日) 01:20:18
ウソつかなくてok


604 :493:2009/10/18(日) 02:07:29
T型の変数どうしの演算を行うことは >>514 の方法でできました。
次に内部メソッドとして「要素の平均」を実装しようと試みています。
作業用のT型の変数に 0 をそのまま代入したり特定の数値で割るとエラーになりますが、これも同様の方法で回避できるものでしょうか?


605 :デフォルトの名無しさん:2009/10/18(日) 12:46:21
0の代わりにNothingを代入する。
特定の数値で割るのは当然Expression Treeで生成したコードを使えばいいだろ。

606 :デフォルトの名無しさん:2009/10/18(日) 12:56:03
策士策に溺れる、っていうのはこういう人のことを言うんだろうなたぶん。

607 :デフォルトの名無しさん:2009/10/18(日) 12:59:12
確かに手段が目的になっている気がする。

608 :605:2009/10/18(日) 13:03:30
あー最後に要素数で割るのが難しいな
public static readonly Func<T, int, T> DivideByInt32;
static Operator()
{
var left = Expression.Parameter(typeof(T), "left");
var right = Expression.Parameter(typeof(int), "right");
DivideByInt32 = Expression.Lambda<Func<T, int, T>>(
Expression.Divide(left, Expression.Convert(right, typeof(T))), left, right).Compile();
}
これ使えばいけるはず
でも平均値だったらLINQ使ってitems.Average()でいいと思う(itemsがジェネリック型の場合は不可)

609 :デフォルトの名無しさん:2009/10/18(日) 13:04:57
Timer_Tickイベント実行中はTimer1.EnabledをFalseにしますか?
Falseにしない場合、Timer_Tickプロシージャ内の処理が多くて次のTickとダブってしまうこともありますか?

610 :デフォルトの名無しさん:2009/10/18(日) 13:10:48
Falseにする必要はありません。
Timer.TickはUIスレッドで実行されるので次のTickとダブることはありえません。

611 :デフォルトの名無しさん:2009/10/18(日) 13:12:51
ありがとうございます。了解です。

612 :デフォルトの名無しさん:2009/10/18(日) 13:58:27
.NET 一般のことかもしれませんが、String.Format の逆、C の scanf のようなメソッドや関数はありますか?

こんな感じで使えればいいなイメージ:
    Dim s As String ' フォーマットを表す文字列
    Dim inputString As String = getInput() ' たとえば s のフォーマットでファイルに保存してあるものを読み込んだ結果
    Dim i As Integer
    Dim l As Long
    Dim d As Double
    inputString.hoge(s, i, l, d) ' i, l, d に値が入る
    Dim o As String = String.Format(s, i, l, d) ' o = s となる


613 :デフォルトの名無しさん:2009/10/18(日) 14:03:01
正規表現でキャプチャしてInt32.Parseとか使ってパース

614 :デフォルトの名無しさん:2009/10/18(日) 16:47:54
■最近VBAを勉強し始めました、初心者です。よろしくお願いします。

VB.NETというのをしりました。
 
wiki等には、VBと違いNET関係の機能が追加された、とかいてありました。
いったいこの.NETではなにができるのですか?
VBのことも詳しく知りませんが、
わかりやすく.NETのすごさを教えてください。
例えば、、、こんなことができるよ。、、、みたいな感じで。
そのすごさや有用性のようなものを簡単に教えてください。
すみませんが、よろしくお願いします。

615 :デフォルトの名無しさん:2009/10/18(日) 17:09:36
こんなことができるよ、以前に、すでに VB はなくなりました。
あとは、.NET 上で動く VB (いわゆる、VB.NET) しかありません。

616 :デフォルトの名無しさん:2009/10/18(日) 17:40:34
ぶっちゃけ似た構文を採用しただけで殆ど別物。
JavaScriptとJava位の違いはある。

617 :デフォルトの名無しさん:2009/10/18(日) 17:54:43
何が出来るってまた難しいことを。
大抵のことは出来るw

618 :デフォルトの名無しさん:2009/10/18(日) 18:18:06
>>615
”すでに VB はなくなりました”

→  .NETでもVBみたいなことはできるんですよね??

>>617
■例えば、自動で発動するようにして、
あるサイトに自動ログインして文章をコピーして
エクセルシートに貼り付ける。この作業を1時間おきにしたいんですけど可能?
つーかこのくらいはVBAでもできちゃうのかな??
わからんので教えてください。


619 :デフォルトの名無しさん:2009/10/18(日) 18:22:16
できる。

620 :デフォルトの名無しさん:2009/10/18(日) 18:24:12

自動ログイン〜〜〜はVBAでもできちゃう??

621 :デフォルトの名無しさん:2009/10/18(日) 18:25:32
VBA だろうと、XmlHttpRequest() すればいいだけ。

622 :デフォルトの名無しさん:2009/10/18(日) 19:11:07
自動ログインはちょっと難しい

623 :デフォルトの名無しさん:2009/10/18(日) 19:20:47
>>622
ちょいむずい、、、はVBAだと?
.NETならできちゃう?かな?

624 :デフォルトの名無しさん:2009/10/18(日) 21:54:18
TextBoxをMultiLineにしてあるのですが、AppendTextで100行に達したら上から消していきたいのですが
どんな関数を使えばスマートにできるでしょうか?ヒントください。

625 :デフォルトの名無しさん:2009/10/18(日) 21:59:10
>>610
Application.DoEventsとかやってると割り込まれるが。。。

626 :デフォルトの名無しさん:2009/10/18(日) 22:39:35
>>623
どっちでもたいして変わらんよ。

627 :デフォルトの名無しさん:2009/10/18(日) 23:10:37
>>624
正規表現でも使うか。
っていうか素直にListBox使えば?

628 :デフォルトの名無しさん:2009/10/19(月) 11:29:38
特に何かした覚えが無いのに何故かデバッグの時にbinに作るのとbin\debugに
作るのがあるけどどこで設定するんでしたっけ

629 :デフォルトの名無しさん:2009/10/19(月) 23:21:58
vb5で作ったソース(frmファイル)があって、
使えるとこは使いまわしていきたいと思ってます。

が、vb.netだと、frmファイル読めないですね。
何か変換するいい方法ありますか?

630 :629:2009/10/19(月) 23:28:18
vbpを開くと普通にアップグレードしてくれるね
とりあえずやってみる。

631 :デフォルトの名無しさん:2009/10/19(月) 23:32:52
動かないけどね
VB.NETはVBと見た目が似てるだけと考えた方がいい

632 :デフォルトの名無しさん:2009/10/19(月) 23:37:13
質問させてください

Visual Studio2008を使っているのですが、動画をプログラム内で表示させたい場合はどうしたらよいのでしょうか?
たとえばmpeg2形式の動画をVBで作ったプログラム内で再生させたいのです。

633 :デフォルトの名無しさん:2009/10/19(月) 23:46:10
ほれ
ttp://www.google.co.jp/search?q=vb.net+%e5%8b%95%e7%94%bb+%e5%86%8d%e7%94%9f

634 :デフォルトの名無しさん:2009/10/20(火) 00:01:16
ありがとうございます
動画だとパソコン側でデコードしてくれるから上記の通りでいいと思うのですが

LANや同軸などで繋ぐライブカメラなどの映像をVBで作ったソフトウェア内に埋め込みたい場合はどうしたらよいのでしょうか?

LAN、同軸などの映像をデコードしてくれる専用のハードウェアがいるということなんでしょうか?

そもそも基本的にぜんぜん分かっていないのですが、こういった関連を調べたい場合は何と調べたらよいのでしょうか?

635 :デフォルトの名無しさん:2009/10/20(火) 00:09:55
「ソフトウェア内に埋め込む」って何?

636 :デフォルトの名無しさん:2009/10/20(火) 00:13:10
VBで作ったソフト上に映像を表示したいということでした。

637 :デフォルトの名無しさん:2009/10/20(火) 00:35:02
DirectShowを使うのが一般的だけど
DirectShow自体の知識とDirectShowをVBで使うための知識と両方必要だし大変よ

> そもそも基本的にぜんぜん分かっていないのですが、こういった関連を調べたい場合は何と調べたらよいのでしょうか?
オレ用語を排除して一般的な単語で検索すりゃ大体引っかかるもんだ
「VB.NET WEBカメラ 再生」とか

638 :デフォルトの名無しさん:2009/10/20(火) 00:37:42
抽象的過ぎて、考えるだけ時間の無駄だな。
とりあえず市販のライブカメラを片っ端から調べればいいんじゃね?
VBでどうするかなんてずっと後の話だ。

639 :デフォルトの名無しさん:2009/10/20(火) 07:17:09
OpenCVが一番簡単だよ

640 :デフォルトの名無しさん:2009/10/20(火) 10:01:49
VB.NETというより.NETアプリのことなんですが
ネットワーク上の他のPCの共有フォルダに置いた.NETアプリの実行ファイルを
ローカルにコピーせずに、共有フォルダ上で直接実行しようとする場合
.NETの設定ツールでセキュリティの設定をしていないと
Security.SecurityExceptionが発生して実行できませんが
セキュリティの設定等の専門的な操作をせずにこれを回避してアプリを実行する方法は無いのでしょうか?

641 :デフォルトの名無しさん:2009/10/20(火) 10:03:42
著名すればいいんじゃない?

642 :デフォルトの名無しさん:2009/10/20(火) 10:06:36
署名www

643 :デフォルトの名無しさん:2009/10/20(火) 19:15:52
3.5 SP1にしてしまえ。

644 :629:2009/10/20(火) 22:41:06
>>631
VB5から、vb.netへの移行企んでみましたが、
全然だめですね。VB6入れろだの、エラーでとまりすぎ。
フォーム生かす以外にアップグレードの使い道無いですね

645 :デフォルトの名無しさん:2009/10/20(火) 22:46:25
フォームだけでも変換できる事が驚き

646 :デフォルトの名無しさん:2009/10/20(火) 22:53:39
VB6から変えすぎたせいで、VB7が大コケしたからな…。

647 :デフォルトの名無しさん:2009/10/20(火) 22:56:14
変えたっていうか一応バージョン番号が続いてるだけで全くの別物だから

648 :デフォルトの名無しさん:2009/10/20(火) 23:22:05
別物のクセに名前だけは引き継いだから尚更悪いって話かね

649 :デフォルトの名無しさん:2009/10/20(火) 23:37:31
ちゃんとVB.NETって別の名前にしてたよ!

650 :デフォルトの名無しさん:2009/10/20(火) 23:39:55
まあ、VB厨の皆様が言うほど変っちゃいないんだけどね。
「大コケ」してるのはVB7以降じゃなくてVB厨の方だろ、っていうw

また例のわんくまの人のブログの記事貼っといた方がいいのかな。

651 :デフォルトの名無しさん:2009/10/21(水) 00:07:06
.NETの最新機能はC#に任せてVBはVB6互換でよかったのにな

652 :デフォルトの名無しさん:2009/10/21(水) 01:03:44
>>640
Win32Apiとか使ってるからでしょ?

653 :デフォルトの名無しさん:2009/10/21(水) 08:04:40
VB2008です
壁紙をレジストリいじって変更するプログラムを組んでいます。
それでWallpaperstyleキーを2にすれば拡大できるというのはわかったのですが
これは縦横の比を無視して画面を埋めてしまいます。
エクスプローラの右クリのような、縦・横どちらかにあわせるようにするにはどうしたらいいのでしょうか。

654 :デフォルトの名無しさん:2009/10/21(水) 09:35:41
エクスプローラで設定してみてどうなってるのか確認したら?

655 :デフォルトの名無しさん:2009/10/21(水) 18:04:17
人に配布する時ってobjの中のファイル?それともbin?

656 :デフォルトの名無しさん:2009/10/21(水) 18:22:20
セットアッププロジェクト使うがな

657 :655:2009/10/21(水) 18:30:39
セットアップは使わない予定です

658 :デフォルトの名無しさん:2009/10/21(水) 18:44:33
objもbinの中も同じ気がするんだがwww
どっちでもいいんじゃね?

659 :デフォルトの名無しさん:2009/10/21(水) 19:48:16
うちの環境でみたら、objの方はTempPEとかいうフォルダが作られてた
たぶん配布するのにこんなフォルダは不要だと思うので
binフォルダに1票

660 :デフォルトの名無しさん:2009/10/21(水) 20:00:54
そういうの除いて配布するもんじゃないの?

binの方にもxmlとかpdbとかあるじゃん

661 :デフォルトの名無しさん:2009/10/21(水) 20:03:56
発行使えよ。

662 :デフォルトの名無しさん:2009/10/21(水) 21:03:23
Visual Studio 2008 Express Edition で次のソフトを作るにはどうしたらいいでしょうか。
Windows のエクスプローラーを開いて開いたフォルダ内に下記のようなファイルがあるとします。


1234★日本語の全て.doc
1235★韓国語の全て.doc
1236★英語の全て.doc
1237★フランス語の全て.doc


ファイル名は頭に半角数字4桁の後に★がつくように付けてるのですがこれを


日本語の全て 1234★日本語の全て.doc
韓国語の全て 1235★韓国語の全て.doc
英語の全て 1236★英語の全て.doc
フランス語の全て 1237★フランス語の全て.doc


左側は半角数字4桁と★と拡張子を抜いて、右側には取得したファイル名を、
その間は上は半角スペースで書きましたがタブ文字で区切ったファイルを作りソフト
自体には表示させなくてもいいので結果をクリップボードへ貼り付けるソフトを作れ
ないかと思ってます。

今まではエディタを開いて dir でテキストを取得し編集してましたがこれができると
かなり便利です。

なにか具体的な例やアドバイスがあればよろしくお願いします。

663 :デフォルトの名無しさん:2009/10/21(水) 21:26:14
プログラミングの素養があれば簡単にできますがそうでなければ遠い道のりです
基礎から勉強する気がないなら作ってくれと丸投げした方がマシだと思います

664 :デフォルトの名無しさん:2009/10/21(水) 21:29:05
>>663
ちなみにこの手のを格安で作ってくれるとこはどのようにして見つけるのでしょうか。
ソフトウェア屋さんのホームページとか見ると大がかりなのしか作ってないみたいで。

665 :デフォルトの名無しさん:2009/10/21(水) 21:29:54
>>663
正直に言えば、このソフトに限ってはすぐに欲しいです。勉強はそれから
取り組みたいので。

666 :デフォルトの名無しさん:2009/10/21(水) 22:04:42
作った
アップするからちょっと待って

667 :デフォルトの名無しさん:2009/10/21(水) 22:09:24
標準入出力経由のWSHで十分な気がしないでもない。

668 :デフォルトの名無しさん:2009/10/21(水) 22:17:46
http://www.dotup.org/uploda/www.dotup.org287238.zip.html
はい

669 :662:2009/10/21(水) 22:54:59
>>666
>>668
ありがとうございます。結果を見てみたのですが

日本語の全て 1234 ★ 日本語の全て.doc
韓国語の全て 1235 ★ 韓国語の全て.doc
英語の全て 1236 ★ 英語の全て.doc
フランス語の全て 1237 ★ フランス語の全て.doc

(区切りはタブ)になってます。下記のように

日本語の全て    1234★日本語の全て.doc
韓国語の全て    1235★韓国語の全て.doc
英語の全て      1236★英語の全て.doc
フランス語の全て    1237★フランス語の全て.doc

みたいに(区切りはタブ)になれば嬉しいのですが。CS ファイルというのは VB ではなく
C 言語か何かのファイルでしょうか。


670 :662:2009/10/21(水) 22:57:47
>>667
WSH を検索してみたのですが Visual Studio 2008 Express Edition より
取っつきやすいのでしょうか。

671 :デフォルトの名無しさん:2009/10/21(水) 23:06:53
>>669
それただの表示の問題
余計なスペース入れたりすると扱いづらくなる

>>670
WSHは回りくどい。VB(6)の経験がある人には分かりやすいだけ。
PythonとかRubyとかPerlとか有名な他のスクリプト言語の方がいいと思う。

672 :662:2009/10/21(水) 23:16:11
>>671

ここにはタブが表示できないので上手く表現出来ないようです。テキストファイルに
アップしました。

http://www.dotup.org/uploda/www.dotup.org287549.txt.html

673 :668:2009/10/21(水) 23:34:03
http://www.dotup.org/uploda/www.dotup.org287636.zip.html
見間違えてた。修正した。ついでに必要に応じてファイルに出力できるようにコンソールにも結果を出力するようにした。
VBの環境が今手元にないのでC#を使ってる。C#はVBの兄弟みたいなもんで見た目が違うだけでほとんど同じ。

674 :662:2009/10/21(水) 23:46:35
>>673
ダウンロードして確認しました。ありがとうございます。まさに求めていたプログラムです。
ちなみに数字の桁数が変わった場合とか数字の後の★が別の名前になった場合を
ソースプログラムを見て自分で修正したいのですが、cs ファイルはどのようにして実行
ファイルの exe にするのでしょうか。Windows Vista の HomeBasic を使ってます。

今回は Visual Studio 2008 Express Edition の中から VisualBasic を入れましたが
ホームページで説明ページを見たりしても見比べとか大変そうなのでやはり書籍を
購入する必要があると感じました。

675 :662:2009/10/21(水) 23:48:21
>>673
すみません、修正版にはソースファイルがないようなので合わせて頂けないでしょうか。

676 :668:2009/10/21(水) 23:59:37
http://www.dotup.org/uploda/www.dotup.org287761.txt.html(ソースコードのみ)
あとはVBに読み替えるなりVisual C# 2008 Express Edition入れるなり好きにしてくれ
VBがC#がどうとかいうより正規表現がポイントなんで改造するならまず正規表現を勉強してね

677 :662:2009/10/22(木) 00:10:44
>>676
ありがとうございます。今は中を見てもほとんどわからないですが、このようなツールが作れると
とても便利だと思いました。楽しみになりました。

678 :デフォルトの名無しさん:2009/10/22(木) 01:29:12
優しすぎだろ…

679 :523:2009/10/22(木) 02:35:37
プロセスのリターンコードの返却方法について教えてください。

プロセスで返却値を設定して終了する場合、メインスレッドから「Return 結果コード」、
「Environment.Exit(結果コード)」等で呼び元へのリターンコードを返却することができました。

しかし、プロセスのメインスレッド実行中、別に発生するイベント内で異常が起きた場合に、プロセスを
終了し、結果を呼び元に返却する機能が必要になりました。
異常が発生したイベント処理内で「Environment.Exit(結果コード)」としたところ、プロセスは終了したの
ですが、プロセスの呼び元にはゼロが返却されてしまいました。

メインスレッド外からプロセスを終了して返却値を戻すためにはどうすればよいのでしょうか。



680 :デフォルトの名無しさん:2009/10/22(木) 06:00:25
いったんメインスレッドに戻せばいいんじゃね?

681 :デフォルトの名無しさん:2009/10/22(木) 10:27:48
2日考えてわからなかったので質問させてください。
フォーム上でツリーとグリッドを左右に並べて
ツリーの展開などの動きとグリッドのデータを連動させたい
のですが上手くいきません。。
グリッドのデータは
ノードID,親ノードID,レベル,展開FLG,コード・・・
といった感じです。

よろしくお願いします。

682 :デフォルトの名無しさん:2009/10/22(木) 10:35:36
スレッドのExit(結果コード)で終了してるな。
imports System.Threading
module Program
 sub Main()
  dim th = new Thread(addressof Run)
  th.Start()
  Console.ReadLine()
  Environment.Exit(1)
 end sub
 sub Run()
  Thread.Sleep(5000)
  Console.WriteLine("Exit 9")
  Environment.Exit(9)
 end sub
end module


683 :デフォルトの名無しさん:2009/10/22(木) 15:58:58

>>681
何使ってるか知らないけど
DataGridViewなら

FirstDisplayedCell
FirstDisplayedScrollRowIndex
DisplayedRowCount

とか組み合わせたら出来ないかな?
スペルは間違ってる可能性あるけど こんな雰囲気のやつだっ気がする

684 :683:2009/10/22(木) 16:00:57
>>681
骨髄反射でレスして読み返して気づいた・・・
見当違いのことしゃべってるわ

というかノード作るところまでは出来ててその状態をグリッドに表示させたいだけ?

685 :デフォルトの名無しさん:2009/10/22(木) 16:48:08
>>684
そうです!
開閉に合わせてグリッドも変わるみたいな
感じです。

686 :デフォルトの名無しさん:2009/10/22(木) 16:53:04
>>685
それはクリックしたノードの情報使えばいけると思うけど・・・

自分でノード作ってるんなら最初にTAGにでも内容をカンマ区切りとかで入れとくとか
ちゃんとやるなら 選択ノードからParentとかその他のプロパティ使って辿ってくんじゃないかな?
具体的なコードをお求めで?

687 :デフォルトの名無しさん:2009/10/22(木) 18:42:24
1ビットだけでいいのですが外部のハードウエアの出力を監視したいのですが、
何か簡単な方法(ハードウエア込みで)は有りませんでしょうか?
まともにやるならUSB接続の拡張ポートとかを使うのだと思うのですが、
1ビットだけのために買うのもどうかなと思いまして、、、

688 :デフォルトの名無しさん:2009/10/22(木) 18:48:47
キーボードのキーを一個外してその接点にでも繋げば?w

689 :デフォルトの名無しさん:2009/10/22(木) 19:12:50
>>687
USBとかでいけるんじゃないかな?
どんな外部接点か知らないけどDIOとかでやるとか?

690 :デフォルトの名無しさん:2009/10/22(木) 19:24:10
>>687
Arduinoがいい

691 :687:2009/10/22(木) 22:23:53
おお〜、いろいろ即レスありがとうございます。
>>688
おもしろいっすね。
キーボードだと信号そのままじゃなくてリレーみたいなので繋げばいい?
ONしたままだとまずいかな。
>>689
基本はこれですね。
安いのが有ればいいのですが。
>>690
ああ、PCWatchとかで紹介されてましたね。
3000円位で買えそうですね。
これで行こうかと思います。
PICとかでもUSBドライバ付きで安いのって有るのかな?

692 :デフォルトの名無しさん:2009/10/22(木) 22:46:56
マウス1個潰してclickdownイベントでやると\500程度
トラ技付録のTinyマイコンで、もう売ってないか
外には出てないけどマザーにはレガシなパラレルポートが自縛霊として生き残ってるハズこいつを叩け

693 :デフォルトの名無しさん:2009/10/22(木) 22:50:38
>>691
そのHWの「外部のハードウエアの出力」がOC出力なら
232CのDTRとDSRのを使えば追加ハードなしで出来ると思うよ。

安物マザーじゃなきゃまだCOMポートって標準で付いてくるんじゃないのかな。

694 :691:2009/10/22(木) 23:04:05
皆さん、いろいろとご存知でw
>>692
USBマウスとかキーボードって複数繋いだらどうなるのでしょう。
>>693
なるほど。232C-USB変換ケーブルでも使えるってことですね。
えーとDTRとかDSRってどうやって読めばいいのしょうか。

695 :デフォルトの名無しさん:2009/10/22(木) 23:15:49
>>694
>えーとDTRとかDSRってどうやって読めばいいのしょうか。
Data Terminal ReadyとData Set Readyだったかな?
まああんまり深い意味がある頭辞語じゃないと思うからそこにこだわってもね。
そのラインの操作法はMSDNのSerialPortクラスにも載ってるはず。

ただ、232Cを使う方法はお手軽だけど、既に書いたようにOC出力か12V出力でしか使えない。

696 :デフォルトの名無しさん:2009/10/23(金) 23:24:19
VBでイーサネットを使った通信を行いたい場合、何を勉強したらよいのでしょうか?
シリアル通信はコンポーネントが用意されているので分かりやすいのですがイーサについてはまったく・・・
TCP/IP??ソケット通信?

697 :デフォルトの名無しさん:2009/10/23(金) 23:29:06
socket

698 :デフォルトの名無しさん:2009/10/23(金) 23:32:19
OSI参照モデルとかの基礎をまずかじるぐらいはするべきじゃないか?

699 :デフォルトの名無しさん:2009/10/24(土) 13:33:38
VB2008 Express バージョンに下記の C# のソースをネットの変換のページに入れて
貼ってもエラーが出ます。気をつけないといけないのはどのへんでしょうか。

http://www.dotup.org/uploda/www.dotup.org296509.txt.html

700 :デフォルトの名無しさん:2009/10/24(土) 13:44:14
>ネットの変換のページ
ってなんだ?そこの管理人に文句を言ったらいいんでない。

701 :デフォルトの名無しさん:2009/10/24(土) 19:57:49
C#3.0に対応してないんだろ

702 :デフォルトの名無しさん:2009/10/24(土) 21:58:46
>>696
ttp://itpro.nikkeibp.co.jp/article/MAG/20081120/319631/?ST=nsw#200911

703 :デフォルトの名無しさん:2009/10/24(土) 22:08:59
フォームAを継承したフォームBを作ろうと思っています。

フォームAには引数付きのコンストラクタのみがあります。
フォームBのコンストラクタで,フォームAのコンストラクタを呼び出して初期化しています。
ここまでは大丈夫だと思うのですが,フォームBのデザイナ画面を出そうとすると
「データが失なわれる可能性を防ぐため、デザイナの読み込み前に以下のエラーを解決する必要があります。
型"フォームA"にコンストラクタが見つかりませんでした。」
となってしまいます。

引数付きのコンストラクタがあるフォームは継承できないのでしょうか?

704 :デフォルトの名無しさん:2009/10/24(土) 22:10:55
フォームの継承自体やらない方がいい
共通部分があるならユーザーコントロール使えばいい

705 :703:2009/10/24(土) 22:12:43
>>704
了解しました
ユーザーコントロールはまだ知らないので
今から勉強したいと思います

706 :デフォルトの名無しさん:2009/10/24(土) 23:14:27
フォルダ内のファイルを一つずつ調べるループなのですが
どちらの方が速いでしょうか?

Dim filename As String
filename = Dir("c:\hogehoge\")
Do While filename <> ""
Console.WriteLine(filename)
filename = Dir()
Loop


Dim filename2 As String()
Dim str As String
filename2 = IO.Directory.GetFiles("c:\hogehoge")
For Each str In filename2
Console.WriteLine(str)
Next

707 :デフォルトの名無しさん:2009/10/24(土) 23:22:37
どう考えても後者の圧勝

708 :デフォルトの名無しさん:2009/10/24(土) 23:27:39
やってみればいいじゃん。

709 :デフォルトの名無しさん:2009/10/24(土) 23:35:56
試すまでもないだろ
結局DirもPathクラスを使って実装されてるわけで,前者の方が無駄な処理が多いだけ

710 :デフォルトの名無しさん:2009/10/25(日) 03:30:27
>>703
継承できるけど、デザイナで表示できない(対応していない)だけ。

711 :デフォルトの名無しさん:2009/10/25(日) 09:25:21
>>703
フォームAに引数付きと無しのコンストラクタを用意しとけば良いんでないか?
デザイナが引数無しのコンストラクタを使って画面を描画してるので無しは駄目なんでしょ。

712 :デフォルトの名無しさん:2009/10/25(日) 09:33:38
あ、引数なしのがデザイナから呼ばれると引数を使って追加のロジックを
入れているところがエラーになるのでDesignMode プロパティ で回避する必要があるかも

713 :デフォルトの名無しさん:2009/10/25(日) 11:54:39
VB2008の引数を三つ取るIf文なんですけど
これは戻り値を受け取らないと使えないの?

714 :デフォルトの名無しさん:2009/10/25(日) 11:56:31
副作用があるようなのを三項演算するな

715 :デフォルトの名無しさん:2009/10/25(日) 12:53:16
>>713
そのIfは演算子。戻り値じゃないから無理だな
IIfは関数だから、戻り値は無視できる

というか、値がいらないならIf Then Else でいいと思うんだが


716 :デフォルトの名無しさん:2009/10/25(日) 12:56:39
>>714
「副作用」が何を意味するかは関数型言語を知らないVB厨には理解できないと思う。

717 :デフォルトの名無しさん:2009/10/25(日) 12:58:55
別に副作用は関数型言語に限った話じゃないけどな。

718 :デフォルトの名無しさん:2009/10/25(日) 13:01:35
そんなことより、新型ウィルスワクチンの副作用が心配

719 :デフォルトの名無しさん:2009/10/25(日) 13:42:17
>>718
死人が出るだろうね〜
ま、オレの所までには配給来ないだろうから関係ない。

720 :デフォルトの名無しさん:2009/10/25(日) 14:14:53
Ifは括弧付けないといけないのが嫌だな
ショートサーキットに見えない

721 :デフォルトの名無しさん:2009/10/25(日) 15:23:38
Form1にBottan1を貼り付け

Form2にtextbox1を貼り付け

Form1のBottan1を押すと
dim frm2 as Form2
frm2.textbox1.text="abc"
が動作させたいのはなぜどうするばいいのや

722 :デフォルトの名無しさん:2009/10/25(日) 15:31:05
Form2.Show()
Form2.textbox1.Text = "abc"
VB以外でこんなことやったら死刑だけどね

723 :デフォルトの名無しさん:2009/10/25(日) 15:49:26
ふーん

724 :デフォルトの名無しさん:2009/10/25(日) 15:52:47
bottantって猪料理か何かかね

725 :デフォルトの名無しさん:2009/10/25(日) 18:13:15
>>722
そんなもんで死刑になるか〜
日本で死刑になるのは殺人罪か国家反逆罪だけだ。

726 :デフォルトの名無しさん:2009/10/25(日) 19:28:38
>>724
古代ラテン語らしいよ。

日本語もかなり微妙だし、過去から飛ばされて来たのかね?

727 :デフォルトの名無しさん:2009/10/25(日) 22:36:01
インターネット上のファイルをダウンロードする際にファイルがあるかないか分からない状態の場合
無いファイルをダウンロードしようとした時の処理がしやすいダウンロード手順はどんな方法でやれば良いでしょうか
無い場合はできるだけ手早くないことを認識して次の処理へ進みたいです。

728 :デフォルトの名無しさん:2009/10/25(日) 22:37:25
なかったら 404 が出るだろ普通。
なので、どの方法を使っても大差ない。

729 :デフォルトの名無しさん:2009/10/25(日) 22:51:14
>>727
それだけの内容で答えられるヤツは居ない。
>>728はきっとエスパー。

730 :デフォルトの名無しさん:2009/10/25(日) 23:08:06
ただのダウソ厨の誤爆かと思った。
確かに>>728はエスパー。

731 :デフォルトの名無しさん:2009/10/26(月) 13:25:15
フォームを常に最前面に設定してあるのですが、他のアプリ(フルウインドウ)
を起動すると裏にいってしまいます。
どのようにすれば常に最前面にくるようにできますか?

732 :デフォルトの名無しさん:2009/10/26(月) 19:53:41
MCI命令で無圧縮waveファイルを開いても、音量調節が出来ないのですが出来るように出来ますか?
また、一部のVBRなMP3ファイルが再生されません。

733 :デフォルトの名無しさん:2009/10/27(火) 00:09:58
systemIOでtxtに書き出した"500"というデータが
readしたときには先頭のみが文字コードとして認識されてしまいます。
500という数値として読み込みたいのですがどうすれば

734 :デフォルトの名無しさん:2009/10/27(火) 00:21:25
>>733
質問は日本語でお書き下さい。

735 :733:2009/10/27(火) 00:30:58
事故解決しました、

736 :デフォルトの名無しさん:2009/10/27(火) 01:37:49
プログラムの中からBIOSに触ることは出来ないよね?

737 :デフォルトの名無しさん:2009/10/27(火) 07:09:36
>>736
BIOS情報の取得くらいはできるよ。

738 :デフォルトの名無しさん:2009/10/27(火) 09:31:59
>>737
RTCAlarm触ってオンタイマーに出来ないかなと
昔ThinkPadでWindows上からBIOS設定出来るのがあったけど
あれは例外だよね

739 :デフォルトの名無しさん:2009/10/27(火) 13:50:15
mp3タグの編集をしたいのですが
shell32の機能でタイトルなどを取得する事はできました
編集は出来ないでしょうか?

参考にしたのはこのサイトです
ttp://dzone.sakura.ne.jp/blog/2009/06/vbnet-mp3-2getditailsof.html

よろしくお願いします

740 :デフォルトの名無しさん:2009/10/27(火) 17:31:13
ゼロから学ぶ! 最新Visual Basic
こだか かおる著, 日経ソフトウエア編
http://ec.nikkeibp.co.jp/item/books/180900.html
■A4変型判,204ページ+付録DVD-ROM
■定価 2520円(税込)
■発行 日経BP社
■発売 日経BP出版センター
■ISBN978-4-8222-2845-3

初級編
その2 MP3ファイルを解析して楽曲データを編集する
http://itpro.nikkeibp.co.jp/article/MAG/20081113/319258/08vbmook.zip?ST=develop

741 :デフォルトの名無しさん:2009/10/27(火) 20:06:57
>>740
ありがとうございます
参考にしてみます!

742 :デフォルトの名無しさん:2009/10/27(火) 21:19:58
↑こういう人は掛け声だけは威勢がいいが
参考にするとは言わない。みますと云って逃げに走る
決して最後まで完結させない。きっとそうだ。そうに違いない。

743 :デフォルトの名無しさん:2009/10/27(火) 22:33:11
HAHAHA

744 :デフォルトの名無しさん:2009/10/27(火) 23:01:56
Webカメラの映像を映すソフトをVBでプログラミングしたい場合はどうしたらよいのでしょうか?

745 :デフォルトの名無しさん:2009/10/27(火) 23:05:17
USBカメラ プログラミング とかでググれば腐るほど出てくるだろ
もちろんVBは見つからないかもしれないが,最低でもC++だろうとC#だろうと読める程度のレベルでないとどうせ無理だ

746 :デフォルトの名無しさん:2009/10/27(火) 23:08:46
>>744
OpenCV

747 :デフォルトの名無しさん:2009/10/27(火) 23:45:43
またお前か

748 :デフォルトの名無しさん:2009/10/28(水) 00:01:16
.NET2008でEthanetを使った通信を行いたい場合
Winsock以外に方法はありますか?

749 :デフォルトの名無しさん:2009/10/28(水) 00:06:08
はい。

750 :デフォルトの名無しさん:2009/10/28(水) 00:07:23
それはなんですか?

751 :デフォルトの名無しさん:2009/10/28(水) 00:08:52
あ、未完成なWinInetは除いてです。

752 :デフォルトの名無しさん:2009/10/28(水) 08:25:33
普通に.NETの標準ライブラリでできるだろ

753 :デフォルトの名無しさん:2009/10/28(水) 10:09:03
System.Net.Sockets.Socket クラスでいいじゃないの。
Rawソケットもサポートしてるから、大抵のことはできる。
あれも内部的には Winsock のスタック使ってるから嫌だ、っつー話なら
そりゃー無茶だと答えるしかないが。

754 :デフォルトの名無しさん:2009/10/28(水) 16:29:13
はじめまして
質問させてください。

Windows7でタッチパネル操作をハンドリングしたいのですが
VB.netで実装する場合は
マウスクリックやマウスオーバーで画面操作を取得できるのでしょうか?


現在、開発要件で確認を求められている状態です。
どこにも情報がない有識者の方助けてノдT


755 :デフォルトの名無しさん:2009/10/28(水) 16:31:56
普通のはそれでいい。マルチタッチは知らん。

756 :デフォルトの名無しさん:2009/10/28(水) 16:33:46
Visual Studio 2010を待て

757 :デフォルトの名無しさん:2009/10/28(水) 16:34:22
>>755
マルチタッチはいらんので問題なすです。
ありがとうございます
非常にたすかりました。

758 :デフォルトの名無しさん:2009/10/28(水) 16:37:07
む・・・まとめると以下でFA?
1、タッチパネル式マウスと同じ動きで乳首を攻めるエロゲ開発
通常のマウスと同じ
2、マルチタッチで乳首つかむエロゲ開発
Visual Studio 2010を待て


759 :デフォルトの名無しさん:2009/10/28(水) 18:08:55
画面を指でタッチするとソフトが反応するプログラムはVB.NETでどう書けば。

760 :デフォルトの名無しさん:2009/10/28(水) 18:09:36
まずタッチパネルを用意します

761 :デフォルトの名無しさん:2009/10/28(水) 21:33:12
>>662
どなたか 662 を実現できるソフトを C# で頂きましたが VB2008 で中をいじれるように
ソースで頂けないでしょうか。

762 :デフォルトの名無しさん:2009/10/28(水) 21:39:26
C#らしい固有の機能は全く使われてないのでVBでもほとんど変わらないぞ
弄れるレベルになればだいたいC#でもわかる

763 :デフォルトの名無しさん:2009/10/28(水) 22:05:22
C# から VB に変換するツールとか Web サイトとかあるんだから、
少しは自分でやれよ。

764 :デフォルトの名無しさん:2009/10/28(水) 22:06:58
他人にやらすなら金払えよ

765 :デフォルトの名無しさん:2009/10/28(水) 22:14:54
作ってもらってから今までちゃんと勉強してたら
C#わからなくてもなんとなく自分でVBに書き換えられるくらいのレベルには十分なってたはずだぞ

766 :デフォルトの名無しさん:2009/10/28(水) 22:17:56
つーか PCで出来る事はCかアセンブラさえあれば全部書けるわけよ
ActiveXもな

767 :デフォルトの名無しさん:2009/10/28(水) 22:23:40
VB スレで何言ってんの? バカなの? 死ぬの?

768 :デフォルトの名無しさん:2009/10/29(木) 11:49:55
>>767
開発もやったことない聞きかじりの知識だけのやつが言ってるんだ
あんま相手にしたら開発能力のレベルが下がるぞ

769 :デフォルトの名無しさん:2009/10/29(木) 22:46:57
>>766
おおっさくらたんのエロ画像もCで書いてアプッてください

770 :デフォルトの名無しさん:2009/11/02(月) 06:24:27
Visual Basic プログラマだと思い込んでいる、
ただの Visual Basic ユーザー、Visual Studio ユーザー
って多いよね。
プログラマではなく、ただの統合環境(IDE)ユーザーでしかない人。

IDEをそれなりに使いこなして、アプリっぽいものを作れる人と、
IDEがあってもなくても、アプリをガツガツ組める人とは
雲泥の差がある。


771 :デフォルトの名無しさん:2009/11/02(月) 06:42:32
で?

772 :デフォルトの名無しさん:2009/11/02(月) 09:27:00
目的のものが作れればいいじゃない
手段に拘るな

773 :デフォルトの名無しさん:2009/11/02(月) 09:48:25
「で?」←この返しは、ゆとりの反撃のような幼稚な煽り返しだと思っていたが
こうまで同意する「で?」は初めてだ

774 :デフォルトの名無しさん:2009/11/02(月) 13:16:11
>>728
httpはそうだけど、ftpはちゃうんじゃね(調べるのめんどい・・)

775 :デフォルトの名無しさん:2009/11/02(月) 15:44:06
>>772
同じ目的(動作)のものが
同じ時間で
メンテしやすいもの

同じ目的(動作)のものが
同じ時間で
グッダグダで再利用もクソもなく、処理時間も無駄に長い

どっちがいい?

例えばIDEだけでも掲示板程度なら簡単に作れるだろうがそんなんで書かれたクソソースコードは万死に値すると思う


776 :デフォルトの名無しさん:2009/11/02(月) 15:58:54
>>775
後者を経て前者になるだろ
いきなりいいプログラム書けるわけあるか

777 :デフォルトの名無しさん:2009/11/02(月) 16:38:41
俺はクソコードよりソフトの出来だと思う
結果良ければどんなコードなんて関係ないね

778 :デフォルトの名無しさん:2009/11/02(月) 17:04:32
>>776
へ?
どんだけ時間のないプロジェクトばっかやってるブラックだよ

779 :デフォルトの名無しさん:2009/11/02(月) 17:31:49
プログラマは、こうじゃないと認めないっていうタイプ多いな。嫌われるタイプ。

780 :デフォルトの名無しさん:2009/11/02(月) 18:12:13
無能はスレ違いだって事にも気付けない。

781 :デフォルトの名無しさん:2009/11/02(月) 19:15:07
>>775顔真っ赤ですね

782 :デフォルトの名無しさん:2009/11/03(火) 08:34:27
正しい意見に統一する必要があるからな

783 :デフォルトの名無しさん:2009/11/03(火) 13:22:59
>>777
気持ちは分かるけど、くそコードのメンテやらされるのもたまらんぞ
#作るだけで、メンテしない立場ならそういうと思うけどね

784 :デフォルトの名無しさん:2009/11/03(火) 14:30:07
俺は糞コードめんてするの楽しいぞ
工数も糞だからってことで水増し請求できるし


785 :デフォルトの名無しさん:2009/11/03(火) 15:28:39
IDEだからクソってわけじゃないだろ普通は。


786 :デフォルトの名無しさん:2009/11/04(水) 02:23:12
質問です。
・同じ一連の処理を短いコードで呼び出せるようにしたいのですが、どうすればできますか?
・設定ファイルをLocal Settings内ではなく、exeフォルダに置くことはできませんか?

787 :786:2009/11/04(水) 07:35:59
すみません。・1は寝ぼけていたので撤回です。

788 :デフォルトの名無しさん:2009/11/04(水) 09:02:38
>>786
>・設定ファイルをLocal Settings内ではなく、exeフォルダに
「アプリケーション構成ファイル」?
なら、設定の「スコープ」を「アプリケーション」にすればそっちを使うようになる。

789 :デフォルトの名無しさん:2009/11/04(水) 17:44:59
>>788
的確な回答をありがとうございました。

790 :デフォルトの名無しさん:2009/11/04(水) 21:43:44
設定ファイルって未だにiniファイル使ってるけど、
vista以降ってProgramFiles以下に書込みできないんだねぇ…
ちょっとはまった

791 :デフォルトの名無しさん:2009/11/04(水) 22:19:38
XPでも2kでも普通のユーザは書けねぇよ

792 :デフォルトの名無しさん:2009/11/04(水) 22:34:37
そういや2008はマニフェスト書かなくてもデフォでUAC対応になってるんだっけ?
それともその辺りは2005から変ってない?

793 :デフォルトの名無しさん:2009/11/04(水) 22:40:09
2005は知らんが、2008はプロパティからマニフェストのテンプレートを表示できるようになってるな

794 :デフォルトの名無しさん:2009/11/04(水) 23:26:02
あーデフォでリダイレクトをキャンセルするマニフェストがくっついてるんだね。
マニフェストファイルを直接変更する必要がある点は変らずか。

795 :デフォルトの名無しさん:2009/11/05(木) 06:43:16
ウィンドウズフォームアプリケーション作ろうとしたら
ツールボックスってのに大量のツール(ボタンとかテキストボックスとか)

あれに自分で何かつくって追加したいんだけどExpress Editionだと自作不可能なの?

796 :デフォルトの名無しさん:2009/11/05(木) 07:12:53
できるよ

797 :デフォルトの名無しさん:2009/11/05(木) 07:48:42
新規作成にそれようのプロジェクトがあるでしょう。

無料版は知らんけど。

798 :デフォルトの名無しさん:2009/11/05(木) 16:07:09
TreeView(@Windows.Form/VS2005)についての質問、
指定したTreeNodeを最適な位置にスクロールしたいのだが、良い方法が
あったら知りたく。WindowsVistaのExplorerでのフォルダツリーのような
動作を希望。どうもメソッドやプロパティに該当しそうなものがなく。
ググってみたのですがわかりません。

799 :デフォルトの名無しさん:2009/11/05(木) 16:13:06
>>798
調べ方が・・・

このメソッドは何だっけ?
ttp://msdn.microsoft.com/ja-jp/library/system.windows.forms.treenode.ensurevisible(VS.80).aspx


800 :デフォルトの名無しさん:2009/11/05(木) 16:19:25
>>799
どうもです。ただEnsureVisible()だと長い名前のときに
NodeのImageが左側に隠れてしまうのが不便で、
VistaのExplorerのフォルダツリーのようにインテリジェント風味な
動きをしてちょうどいい感じの見やすい位置に持って行ければベターと
いう思い。見ると適度にスクロールさせられればいいのだが、
どうもスクロール系のメソッドがなさそうに思われ・・・。


801 :デフォルトの名無しさん:2009/11/05(木) 18:50:57
結局、TreeViewにはScroll系のメソッドはなさそうというのは間違いない
ですかね?なんとか見やすい位置に制御したいのだが、やはり無理だろうか?

802 :デフォルトの名無しさん:2009/11/06(金) 14:42:31
VB2008Express でD&Dされたテキストファイルの内容を処理するアプリを作成しているのですが、
エクスプローラーからファイルをD&Dすると、処理している間エクスプローラーが固まってしまいます。
この現象を回避する方法はないでしょうか?

803 :デフォルトの名無しさん:2009/11/06(金) 14:51:22
>>802
いったん手元にコピーして編集終わってからコピーして返す

804 :デフォルトの名無しさん:2009/11/06(金) 17:05:19
>>803
コピーしたファイルを処理するという発想はありませんでした、
試してみたいと思います。

もし他にも方法がありましたらよろしくお願いします。

805 :デフォルトの名無しさん:2009/11/06(金) 18:48:11
Control.BeginInvokeしてその中で処理する。

806 :デフォルトの名無しさん:2009/11/06(金) 21:22:25
>>805
Control.BeginInvokeについて調べてみました。
正直難しくてすぐには使いこなせそうではないのですが、
関連情報の載ったページが色々と見つかったので勉強してみたいと思います。
情報ありがとうございました。とても参考になりました。

807 :デフォルトの名無しさん:2009/11/06(金) 22:40:31
VB.NETってはやってないの?
VB.NETやってみたいんだけど、なにを
ダウンロードすればいいの?

808 :デフォルトの名無しさん:2009/11/06(金) 22:44:28
そんなこと言ってるようじゃ無理
プログラミングで一番大事なのは必要な情報を自分で調べられること

809 :デフォルトの名無しさん:2009/11/06(金) 22:49:23
http://www.microsoft.com/japan/msdn/vstudio/Express/
ここにあるよ

810 :デフォルトの名無しさん:2009/11/06(金) 23:44:19
VBっていうと(笑)感が漂うんですがなんででしょうか?

C系最強厨が多いのどうして?

811 :デフォルトの名無しさん:2009/11/06(金) 23:49:36
VBScriptってVisualBasicScriptの略なんですか?、どこがビジュアルなんですか?

812 :デフォルトの名無しさん:2009/11/07(土) 02:04:30
>>810
が勝手に妄想してるだけじゃね?
別に目的のものがつくれれば手段は何でもいいとおもうし普通みんなそうだと思うけど?

VBではC++とかみたいにローレベルな部分ができないとかはあるだろけど
VBも.netになったらC#と変わらんし

813 :デフォルトの名無しさん:2009/11/07(土) 02:10:01
>>811
固有名詞だと思えば?


釣りにマジレスしてる俺暇人
つうか落ちた鯖復旧待ちorz

814 :デフォルトの名無しさん:2009/11/07(土) 15:28:32
ADO.NETなんかどうなるんだよ。
どこがActiveXだ。


815 :デフォルトの名無しさん:2009/11/07(土) 21:07:04
今のVBって製品名というより言語の名前なんだぜ

816 :デフォルトの名無しさん:2009/11/07(土) 21:51:00
高校数学でBasicとかいうプログラミング言語をしった人が
初めて手にして違いに愕然とするVB

817 :デフォルトの名無しさん:2009/11/08(日) 00:27:38
あのー、VBもC#も変わらんってのは本当ですか?
逆に一番の違いって何ですか?
プログラム初心者ですが先輩に「今からならC#」って断言されたんですけど、、、

818 :デフォルトの名無しさん:2009/11/08(日) 00:31:51
>>817
片方できれば両方できるくらい同じ

819 :デフォルトの名無しさん:2009/11/08(日) 00:36:56
VB.NETとC#なら、
VB.NETのほうが、
すこしだけかんたんなの?

820 :デフォルトの名無しさん:2009/11/08(日) 00:41:29
どっちも知らないなら同じ
VBやってた人はVB.NETが簡単
Javaやってた人ならC#が簡単

821 :デフォルトの名無しさん:2009/11/08(日) 05:05:40
VBは内部的にどう動いてるかわからなくていい人向け

型とかポインタとかの情報が隠蔽されてる。
ソースファイルも余計なもの見せてくれない。

c#はunsafeでもうポインタ使いまくり。ソースファイルも全部見せてくれる。

822 :デフォルトの名無しさん:2009/11/08(日) 09:09:00
いやC#でもポインタはほぼ使わないが
C/C++に比べて限定的だからそんなに旨みないし

823 :デフォルトの名無しさん:2009/11/08(日) 09:29:39
最近FileSystemObjectを使わないのはなでぜしょう

824 :デフォルトの名無しさん:2009/11/08(日) 09:36:23
Visual Studio 2008 Express Edition で下記のようなファイルがあり

1234★日本語の全て.doc
1235★韓国語の全て.doc
1236★英語の全て.doc
1237★フランス語の全て.doc


ファイル名は頭に半角数字4桁の後に★がつくように付けてるのですがこれを

日本語の全て 1234★日本語の全て.doc
韓国語の全て 1235 ★韓国語の全て.doc
英語の全て 1236★英語の全て.doc
フランス語の全て 1237★フランス語の全て.doc

左側は半角数字4桁と★と拡張子を抜いて、右側には取得したファイル名を、その間は上は半角スペースで書きましたが
タブ文字で区切ったファイルを作りソフト自体には表示させなくてもいいので結果をクリップボードへ貼り付けるソフトを作れ
ないかと思い下記のように書いてみたのですがうまくクリップボードへ貼り付けてくれません。チェックポイントをお教えください。

825 :デフォルトの名無しさん:2009/11/08(日) 09:42:15
http://a-draw.com/uploader/src/up4081.zip.html

826 :デフォルトの名無しさん:2009/11/08(日) 09:58:01
面倒だからソースは見てない。

あのね、切り分けって知ってる?

ファイルを列挙するところ、ファイル名を取得するところ、タブを挿入するところ、
クリップボードに追加するところ、などなど・・・

プログラムはいくつかの部分に分けられるのよ。ブレイクポイントを貼って
動作を確認するなりして、どの部分が悪いのか自分で調べてみなよ。

827 :デフォルトの名無しさん:2009/11/08(日) 10:09:00
できた
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(".\")
for each objf in objfolder.files
 d = split(objf.name, "★")
 if ubound(d) > 0 then
  e = split(d(1), ".")
  if ubound(e) > 0 then
   s = s & d(0) & vbtab & e(0) & vbcrlf
  end if
 end if
next

set objIE = WScript.createObject("InternetExplorer.Application")
objIE.navigate "about:blank"
while objIE.busy
 wscript.sleep 10
wend
objIE.document.parentWindow.clipboardData.setData "text", s
objIE.quit



828 :824:2009/11/08(日) 10:30:13
>>826
ブレイクポイントを貼るという操作はどのようにしたらよいのでしょうか。

>>827
ありがとうございます。後で試してみます。

829 :デフォルトの名無しさん:2009/11/08(日) 10:31:29
VB.netで演習問題見たいなサイトないですか。
1000行以下でかけるような。

仕事でVB.netやり始めて1か月だけど、
クラスが多数で行数も1万超えだし、理解するのに苦労している。
型がクラスとかわけわかめです。

830 :デフォルトの名無しさん:2009/11/08(日) 10:35:20
> 型がクラスとかわけわかめです。
演習だのなんだのより先に基礎を解説した本なりサイトなり読むべきじゃないか

831 :デフォルトの名無しさん:2009/11/08(日) 10:37:52
>>830
一応クラスやオブジェクトの意味と意義はよんだつもり。
実践でこなしていきたいと思ってるんだ。

832 :デフォルトの名無しさん:2009/11/08(日) 10:39:53
>>831
http://homepage1.nifty.com/CavalierLab/lab/vb/clsmdl/index.html

833 :デフォルトの名無しさん:2009/11/08(日) 10:43:29
>>832
ありがとう。一応下記とかも読んでVB.net2008でやってるんだけどね。。
http://itpro.nikkeibp.co.jp/article/COLUMN/20060921/248617/

834 :デフォルトの名無しさん:2009/11/08(日) 10:46:40
そんなことより、まず構造化設計を学べよ。
カプリングとコヒージョン、きっちり身についてる?

835 :デフォルトの名無しさん:2009/11/08(日) 10:51:26
VBにはフォームというのが用意されているのでクラスとか気にせずに良い

836 :デフォルトの名無しさん:2009/11/08(日) 11:07:36
最近は、結合度・凝集度という言葉は使わないのか。
素で何のことかと思っちゃったよ。

837 :デフォルトの名無しさん:2009/11/08(日) 11:17:18
もしかして
VBって行の最後に
;セミコロンいらねーのか?

838 :デフォルトの名無しさん:2009/11/08(日) 11:28:35
いらねーよ
Basicだもん

839 :デフォルトの名無しさん:2009/11/08(日) 11:39:42
VB expressみたいにして
javascriptを書くソフトってあるの?

ボタンをドラッグしてきて
そのボタンをダブクリでコードを書く画面になる

もしボタンをおしたら、、、
ってところまで勝手にコードが書かれていて、
実際に押されたらどうなるか、って
部分だけを自分で書く、っていう。

840 :デフォルトの名無しさん:2009/11/08(日) 19:52:29
>>823
昔のVBからの変換を容易にするために用意されてるだけなので新規に使ってはいけない
そのうち消えても知らないよ

841 :デフォルトの名無しさん:2009/11/08(日) 22:42:13
は?WSHのオブジェクトでしょそれ。
何を言ってるんだ。

842 :デフォルトの名無しさん:2009/11/08(日) 22:44:46
>>823
使う必要がないだろ。


843 :デフォルトの名無しさん:2009/11/09(月) 06:45:36
Windowsのファイル名に使えない文字列は?

844 :デフォルトの名無しさん:2009/11/09(月) 06:55:41
\ / : * ? " < > |

845 :デフォルトの名無しさん:2009/11/09(月) 15:40:29
それは使えない文字で、使えない文字列じゃなかろう?

846 :デフォルトの名無しさん:2009/11/09(月) 15:43:09
>>841
は?何を言ってるんだ。
VB6、VBAのオブジェクトでしょそれ。

847 :デフォルトの名無しさん:2009/11/09(月) 16:19:59
>>843
con
nul
...

848 :デフォルトの名無しさん:2009/11/09(月) 17:48:41
>>816

N88とQuickBasic触ってたから大して違和感なかった。

849 :デフォルトの名無しさん:2009/11/09(月) 17:55:26
>>846
!?

850 :デフォルトの名無しさん:2009/11/09(月) 18:27:36
>>849
ttp://msdn.microsoft.com/ja-jp/library/cc376843.aspx
Office の VBA に新しく追加されたオブジェクトには FileSystemObject および Dictionary の 2 つのオブジェクトがあり、

851 :デフォルトの名無しさん:2009/11/09(月) 18:29:57
ttp://msdn.microsoft.com/ja-jp/library/cc440853.aspx
Visual Basic 6.0 でフォルダやファイルを作成する場合、 FileSystemObject の CreateFolder メソッド、CreateTextFile メソッドを使用します

852 :デフォルトの名無しさん:2009/11/09(月) 19:23:43
rs.movenextというメソッドは消えてしまったん?

853 :デフォルトの名無しさん:2009/11/09(月) 19:53:50
>>850
なんかこういう人ってマジで言ってそうでちょっと怖いw
さっすがVBty(以下略

854 :デフォルトの名無しさん:2009/11/09(月) 21:13:00
マジで言ってるな


855 :デフォルトの名無しさん:2009/11/09(月) 21:41:06
知ったかで出鱈目言うもんじゃないな

856 :デフォルトの名無しさん:2009/11/10(火) 00:23:16
>>846
COMオブジェクト

857 :デフォルトの名無しさん:2009/11/10(火) 01:59:42
>>856
は?何を言ってるんだ。

858 :デフォルトの名無しさん:2009/11/10(火) 15:40:40
VB と VC# の違いについて

Visual Studio の各機能を正しく使いこなす知識さえあれば、
VB と VC# の違いはほとんど意識する必要がない。
(それが、VS の売り。)

VB プログラミングも VC# プログラミングも
要は Visual Studio をどう使いこなすかにかかっているので、
VB だろうと VC# だろうと覚えることは一緒。

片方覚えれば、もう片方もできるようになる。

別の言い方をすれば、VB プログラマも VC# プログラマも、
プログラマというより、Visual Studio ユーザー。
そこまで Microsoft は開発者をサポートする開発環境の開発に
注力してくれている、ということです。


859 :デフォルトの名無しさん:2009/11/10(火) 16:16:28
>>858
>要は Visual Studio をどう使いこなすかにかかっているので、
その程度のアプリケーション開発者にとっては
そうなんでしょうね。

860 :デフォルトの名無しさん:2009/11/10(火) 16:18:05
極限の効率化/高速化を求めていない趣味グラマーにとってはVBもVCもかわらん。

861 :デフォルトの名無しさん:2009/11/10(火) 16:56:20
極限w
そんなの求めるのは趣味グラマだけだよ


862 :デフォルトの名無しさん:2009/11/10(火) 18:04:48
>>858
は一体何を言いたかったのか

エスパーしてみると
聞きかじりの知識をひけらかして偉そうにしてみたかった!
ですよね〜?

つうか、今頃顔真っ赤にしてるんだろうなぁ・・・

863 :デフォルトの名無しさん:2009/11/10(火) 18:34:48
自作自演自滅ですか?

864 :デフォルトの名無しさん:2009/11/10(火) 20:27:39
C++なのかC#なのか

865 :デフォルトの名無しさん:2009/11/10(火) 22:00:01
IcoFxで作成したアイコンを読み込むとコンパイル時に”指定されたイメージ ファイルはリソース セクションを含んでいません。”
というエラーを起こしてしまいます、サイズは32 x 32で色数はTrue Color + Alpha Channel (32bit)
OSはXPSP3、バージョンは2005です

866 :デフォルトの名無しさん:2009/11/10(火) 22:26:02
なるほど

867 :デフォルトの名無しさん:2009/11/11(水) 00:42:57
同一のプロジェクトでForm1をUI的な表示あるいわ操作用のWindowsアプリケーション、Form2を主に計算処理等を行わせるコンソールアプリケーションで作りたいと思っています
この場合この二つのフォームは、それぞれ自動でマルチスレッティングで働いてくれるのでしょうか?

要するにForm1でユーザーが操作しているときにForm2のよりが止まってしまわないかが心配ということです。
よろしくお願いします。

868 :デフォルトの名無しさん:2009/11/11(水) 08:49:45
>あるいわ


>止まってしまわないかが心配
止まるに決まってるじゃないか。
プログラマがスレッド作らない限りシングルスレッドだ。

869 :デフォルトの名無しさん:2009/11/11(水) 09:20:55
> Form2を主に計算処理等を行わせるコンソールアプリケーションで

お前は何を言ってるんだ?

870 :デフォルトの名無しさん:2009/11/11(水) 11:21:40
初心者です。質問させていただきます。

1つのテキストボックス内で、
yahoo検索のような、空白によるand、or検索ができる
ものを作成したいと思います。
検索機能はできているのですが、1つのテキストボックスに複数語を入力して、

それを認識することができません。何かアイディアがあったらお願いします。

わかりにくくてすみません。

871 :デフォルトの名無しさん:2009/11/11(水) 11:29:12
普通全角か半角でSplitしてない?

872 :デフォルトの名無しさん:2009/11/11(水) 11:31:15
>>871
全角か半角のスペース

と書きたかったんだい!

873 :デフォルトの名無しさん:2009/11/11(水) 21:54:23
>>867
計算がメインなら計算用のスレッドを自分で起動する
間違ってもイベントハンドラの中でやらないように

874 :デフォルトの名無しさん:2009/11/11(水) 22:29:34
設定ファイルで、アプリケーションスコープで普通に読み書きできませんか?
やりたいのは、ユーザーフォルダではなく.exe直下に設定ファイルを置く事です。

875 :デフォルトの名無しさん:2009/11/11(水) 23:17:56
複数ユーザが同時にログオンして起動してたりしたらまずいだろ
だから読み取り専用になってるんだろ

876 :デフォルトの名無しさん:2009/11/12(木) 00:15:16
ん?

877 :デフォルトの名無しさん:2009/11/12(木) 00:29:30
>>874
別に制限が多い「アプリケーション設定」なんか使わず、
自分で設定値の保存/取得をするコードを書けばいいだけ。

シリアル化を使えば手間は「アプリケーション設定」と大差ない。
(むしろこっちの方が手間が少ない場合の方が多い。)

ただ、そうしたところで

- プログラムがProgramFiles以下のディレクトリにインストールされている場合、
  Vistaでは実行ファイルと同じ場所に設定ファイルの作成はできない。

- Vistaでなくても、デフォの設定では通常ユーザーで実行した場合は
  設定ファイルを作成できない。

ってだけのこと。

878 :デフォルトの名無しさん:2009/11/12(木) 15:22:18
アプリケーションスコープの設定はAll Usersに保存されるんだっけ

879 :デフォルトの名無しさん:2009/11/12(木) 16:39:38
されないよ。
そもそも変更不可だ。


880 :デフォルトの名無しさん:2009/11/12(木) 20:28:48
VBはビジュアルベーシック
.NETは何の略?

881 :デフォルトの名無しさん:2009/11/12(木) 21:33:06
あえていうならMicrosoft.NETの略

882 :デフォルトの名無しさん:2009/11/12(木) 23:22:16
Visual Studio 2008 Express Editionでプログラムを作成しています。
開発しているPCではエラーも発生せず動作するのですが
あまりメモリを積んでいないPC(512MB)ではSystem.OutOfMemoryExceptionが発生します。

エラーが発生する環境を開発環境で再現するためにApplication Verifierを導入し,
Low Resource Simulationにチェックを入れて実行するとSystem.OutOfMemoryExceptionが発生しました。

メモリが足りないことがエラーの原因だと思いますが,FormにPictureBoxを数個置いているだけのプログラムでして
それほどメモリを使用しているとも思えません。CloseやDisposeで解放するようにしましたが状況は変わりません。

こうした問題はどうやって解決すべきでしょうか?

883 :デフォルトの名無しさん:2009/11/12(木) 23:38:10
>>882
そんなの知るかよ。

それほどメモリを使用しているとも思えません?
煽り抜きでいかにもダメな奴が言いそうな台詞だね可哀想。

884 :882:2009/11/13(金) 00:07:33
メモリの使用状況についてですが以下のような感じです。

Working Set - 20,684KB
Peak Working Set 20,800KB
仮想メモリ
Private Bytes - 18,912KB
Peak Private Bytes - 19,088KB

正直メモリ使用量の定義がよく分からないのでそれっぽい値を書き出しただけなんですが
コントロールの無いFormを表示させるだけのプログラムで以下のような感じなので
それほどメモリを消費してるとは思えないのです。

Working Set - 13,228KB
Peak Working Set 13,228KB
仮想メモリ
Private Bytes - 14,052KB
Peak Private Bytes - 14,052KB

885 :デフォルトの名無しさん:2009/11/13(金) 00:50:37
メモリ増やせばいいじゃん

886 :デフォルトの名無しさん:2009/11/13(金) 01:05:57
分からないなら分からないって言えよ

887 :デフォルトの名無しさん:2009/11/13(金) 04:07:16

VB2010ベータ1をインスコして勉強がてら遊んでみた。
最近はマルチコアのCPUも多くなったし、重いループ処理は極力マルチコアで処理させようと考えて
次のようなコードで試してみたんだけど・・・

  Private counter As Integer
  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
   counter = 0
   System.Threading.Parallel.For(0, 10000, AddressOf proc)
   Console.WriteLine(counter)
  End Sub

  Private Sub proc(ByVal index As Integer)
   counter += 1
   For i As Integer = 0 To 1000000
  
   Next
  End Sub

counterの値が10000になると思ったのに何故か9998とかになっちまうじゃねえか!この野郎!
あと、System.Threading.Parallel.ForEachも試してみたが、これも同じ様に列挙が抜け落ちる!
言うまでもなく例外など出ない(笑)

俺がおかしいのか??それともベータだから未完成ってことなのか?


888 :デフォルトの名無しさん:2009/11/13(金) 05:32:11
>>887
そもそも += はスレッドセーフじゃなかったと思う

889 :デフォルトの名無しさん:2009/11/13(金) 05:39:45
>counter += 1
Interlocked.Increment(counter)

VBってvolatileにあたるのってなかったっけ?


890 :デフォルトの名無しさん:2009/11/13(金) 09:37:39
スレッドセーフってなんだよ!意味わからない専門用語つかうな!バーカ

891 :デフォルトの名無しさん:2009/11/13(金) 09:38:28
>>887
当たり前であって馬鹿はお前だ。
どういう事か理解できないならパラレルとかマルチスレッド絡みには
手を出さない方がいいぜ。

892 :デフォルトの名無しさん:2009/11/13(金) 10:15:42
>>890
MSDNのクラスのリファレンスに必ず「スレッドセーフ」があるんだが。
それでいて”意味がわからない専門用語”といってる時点で、あんたがココに来る資格ないよ

893 :デフォルトの名無しさん:2009/11/13(金) 13:19:11
質問しといて分からない単語が出てきたら調べる努力もせずに逆ギレって・・・

894 :デフォルトの名無しさん:2009/11/13(金) 21:54:46
0〜9、a〜vの32文字のうち1文字をランダムで表示したいのですが
どんな方法があるでしょうか。
下を思いついたのですが、どうも力技な感じがして…

s = "0123456789abcdefghijklmnopqrstuv"
o = s.Chars(Int(32 * Rnd())

895 :デフォルトの名無しさん:2009/11/13(金) 22:55:29
VB.NET(VS2005/2008)で画面に用いるコントロールを作ろうとしているのですが
・メモリリークなどのリソース解放漏れ
・同じくリソース使用量の推移
をチェック/トレースしてくれるおすすめツール(プロファイラって言うんでしょうか?)
ありませんでしょうか?
CLR Profilerなるものを調べてみたのですが何か取っつきずらそうでして
もう少しリスト的な出力をしてくれると非常のありがたいです
・個人使用ですが2,3万まででしたら購入することも検討します
 その場合、トライアル版があるとうれしいです
・ざっと検索してみると日本語版よりは英語版の方が多いようです
 インターフェースが難しくなければ英語版でもOKです

抽象的質問で恐縮ですが、教えていただけると幸いです

896 :デフォルトの名無しさん:2009/11/14(土) 13:06:54
昨日いきなり尋ねてきた知り合いに、「お前はVBの神が憑いてる。VBになれる」
って言われました。彼はそれだけ伝えて帰ったのですがk、VBの神とはなんでしょうか?
彼は、ある上流企業のプログラマーやってたはず。

897 :デフォルトの名無しさん:2009/11/14(土) 13:28:41
>>896 神社でおはらいしてもらった方がいいよ。

898 :デフォルトの名無しさん:2009/11/14(土) 13:54:39
>>896 ウィルスバスターの神に決まってるじゃないか。

899 :デフォルトの名無しさん:2009/11/14(土) 14:08:41
http://www.magosido.com/tips/beer/img/vb01_s.jpg

これか。

900 :デフォルトの名無しさん:2009/11/15(日) 10:21:14
>>892
今から VB.NET を趣味で使おうと思うのですが、趣味の人でも質問できる適当な
スレはどれになるのでしょうか。

901 :デフォルトの名無しさん:2009/11/15(日) 11:01:31
プログラミング関係の人は排他的、初心者は一人で黙々とネットや本で勉強してるのがいいよ

902 :デフォルトの名無しさん:2009/11/15(日) 13:08:43
>>900
ここで良いよ。
ここはVB.NET超初心者からVB.NET中の人まで幅広く居るスレ。

903 :デフォルトの名無しさん:2009/11/15(日) 13:52:37
>>894
いえ、それが最適解です。

904 :デフォルトの名無しさん:2009/11/15(日) 18:05:23
ClickOnceに対応した無料HPサービスっ何か無いかな?
ジオシティーズはダメみたいで

905 :デフォルトの名無しさん:2009/11/15(日) 19:00:44
別のファイルを自分のEXE内にくっつける方法があったら教えてください。
(ちなみにDLLファイルです。使う時は外に書き出して使います。)

906 :デフォルトの名無しさん:2009/11/15(日) 19:02:18
リソースに取り込んどけば?

907 :デフォルトの名無しさん:2009/11/15(日) 22:44:23
それはどうやってやりますか?

908 :デフォルトの名無しさん:2009/11/15(日) 22:50:26
ヘルプ読めよ。

909 :デフォルトの名無しさん:2009/11/15(日) 22:57:09
リソースにファイルとして取り込んで、Properties.Resouces.名前 として取得すれば OK だな。
BinaryWriter でバイト配列をファイルに書き出せばいいし。

910 :デフォルトの名無しさん:2009/11/15(日) 23:06:31
>>909
出来そうです。
ありがとうございました

911 :デフォルトの名無しさん:2009/11/15(日) 23:13:50
そういうことするとDLLのロードがめんどくさい
インターフェイスだけまた別のDLLに定義するとか特殊な扱いが必要になる

912 :デフォルトの名無しさん:2009/11/16(月) 13:02:50
入力用のテキストボックスと、出力用のリストボックスがある別の起動しているアプリケーションに、
テキストボックスに値を入れて、出力されたリストボックスの文字列を取得する事ってどうやったら出来るのでしょうか?

913 :デフォルトの名無しさん:2009/11/16(月) 13:33:30
>>912
Win32APIのSendMessage等を使ったほうが楽かな。(つーかこの方法しか俺は思いつかない)

914 :デフォルトの名無しさん:2009/11/16(月) 16:56:53
AssemblyResolveイベントで自動解決とかできんかな?
まあNGENとか使ったら破綻するだろうけどまあ使わんだろうし。
ILMergeでできるものならそれが手っ取り早いけど。


915 :デフォルトの名無しさん:2009/11/16(月) 17:17:03
俺も前似たような事やろうとしたわ
>>921の言うSendMessageで値を送るのは出来るんだが、
特定のコントロールから値を読み込む事ができなくて挫折した覚えがある

916 :デフォルトの名無しさん:2009/11/16(月) 18:50:36
πの計算結果をテキストファイルに出力させたいのですが、
計算結果の型をdoubleにすると16桁までしか表示されないと思うのですが、
もっと1000桁,10000桁と表示させたいです。
手法の概略を教えてもらえませんか?

917 :デフォルトの名無しさん:2009/11/16(月) 19:38:42
1. 服を脱ぎます。
2. 「.net 多倍長演算」 でググります。

918 :デフォルトの名無しさん:2009/11/16(月) 20:48:47
Active Accessibility が結構楽。

919 :デフォルトの名無しさん:2009/11/17(火) 00:20:44
フラッシュなどのページを表示すると以降は勝手にデータが送られてきますが
このページにWebRequestとWebResponseでアクセスしているのですが
送られて来た際にそれをイベントで受け取る方法を教えて頂きたいです。

920 :デフォルトの名無しさん:2009/11/17(火) 10:28:19
WinCEベースの携帯端末(バーコードリーダー)のプログラムに挑戦中です。
AccessVBAなら触れる程度のレベルでは難しかったかも..Invokeがよく判りませぬ..

ソースを書いて良いのか判らないので概略で..
・フォーム(Form1)が1つとその上にテキストボックス(Textbox1)が配置してあります。
・フォームオープン時の処理にメーカーから提供されたAPIを利用してバーコード読み取りを開始しています。
・スキャンイベント(読取完了、エラー、タイムアウト等)発生をハンドラとするプロシージャを同クラス内に1つ作成しています。
・スキャンイベント正常終了時にTextbox1.Textに読み取り結果を入力しようとすると下記のエラーが発生します。
 「System.NotSupportedException はハンドルされませんでした。別のスレッドで作成されたコントロールと対話するには、Control.Invoke を使用してくだ
さい。」

そこでttp://www.atmarkit.co.jp/fdotnet/dotnettips/312ctrlinvoke/ctrlinvoke.html等を読んで
Invokeを使ってみようと思ったのですが
スキャンイベントをハンドラとして動くプロシージャをこの中でどう記述したら良いのか見当が付きません。
もしかしてInvokeの概念を理解し損ねてるのかも..

アドバイスをお願いします。



921 :デフォルトの名無しさん:2009/11/17(火) 10:45:52
> スキャンイベントをハンドラとして動くプロシージャ
意味が分からん
イベントは動作のトリガーだろ?
スキャンイベントのイベントハンドラでInvokeを実行する

それともそのスキャンイベントとかいうのはなんか特別な意味でもあるのか

922 :デフォルトの名無しさん:2009/11/17(火) 10:55:39
スキャンエンドみたいなイベントがあるのかな?
どんなAPIなんかわからんが…

古いNECのCE端末についてたBRは普通にキーボードのイベントと同じで
テキストボックスにフォーカスあてとけば勝手にいれてくれたけどな・・・

でCRLF辺り最後にくっつけてその辺で処理のトリガにするとかしてたけど・・

923 :デフォルトの名無しさん:2009/11/17(火) 11:07:16
直接フォームのテキストに入れないで
フォームのクラスにString変数を用意して
スキャンイベント正常終了時はその変数に代入しておいて
フォームのスレッドではタイマーでString変数に値が入ったら
そのテキストボックスに入れるようにすればいい

924 :デフォルトの名無しさん:2009/11/17(火) 11:21:20
なんだ 別スレッドで呼び出されるだけじゃないか

だったら InvokeRequired == true の時にBeginInvokeかInvoke噛ませて呼んでやればいいだけじゃないのか?

portected void イベントなんたら()

if (this.InvokeRequired == true)
{
this.BeginInvoke(なんかのイベント);
return;
}

}

もちろん>>923の方法でもいけるだろうけど本当に別スレッドなんだったら一応ロックかませるべきだろうし・・

925 :デフォルトの名無しさん:2009/11/17(火) 11:28:24
vbスレにc#で書いちゃうオレカッコいーってかw

926 :デフォルトの名無しさん:2009/11/17(火) 11:30:21
>>925
あ、いや
素で間違った。ごめん

927 :デフォルトの名無しさん:2009/11/17(火) 11:30:54
できたぜ
Imports System.Threading
Public Class Form1
  Private s As String = ""
  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Timer1.Interval = 1000
    Timer1.Enabled = True
  End Sub
  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim t As Thread = New Thread(AddressOf hoge)
    t.Start()
  End Sub
  Private Sub hoge()
    s = "hoge"
  End Sub
  Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    TextBox1.Text = s
  End Sub
End Class


928 :デフォルトの名無しさん:2009/11/17(火) 11:40:06
先生!
1秒間に2回読んでしまったらどうなるんですかっ!!

929 :デフォルトの名無しさん:2009/11/17(火) 11:41:54
そんな早業は人間には無理です!

930 :デフォルトの名無しさん:2009/11/17(火) 11:45:40
もしくは運用でカバー

931 :920:2009/11/17(火) 11:50:46
うわわ、早速たくさんのレスありがとうございます。
とりあえず頂いたコードでやってみます。

#アホな社員がいるのか会社PCが規制中..携帯からですorz

932 :デフォルトの名無しさん:2009/11/17(火) 13:07:22
リストボックスの中の
ある項目をひとつ上にずらす方法がわからん

933 :デフォルトの名無しさん:2009/11/17(火) 13:10:39
removeしてinsertatで指定の位置に差し込むのはだめ?

934 :デフォルトの名無しさん:2009/11/17(火) 13:26:59
VBやC#がリアルタイム処理に向いてないことは何となく分かるのですが、、
どちらかしか分からない初心者に急ぎの仕事でちょっとあせっています。
具体的には50ミリ秒間隔で測定データを読み取って機器を制御します。
処理自体は簡単なものなのですが、そもそも可能でしょうか。
しいて言えばVBとC#のどちらがマシでしょうか?

935 :デフォルトの名無しさん:2009/11/17(火) 13:38:59
一緒
でも正確に50ミリ秒毎とかは、
OSとFrameworkとその機器のドライバの都合で遵守できない気がする

936 :デフォルトの名無しさん:2009/11/17(火) 14:04:34
>>934
Arduino使うのがいいよ

937 :デフォルトの名無しさん:2009/11/17(火) 14:12:05
一応安定して30mSec程度で稼働させてるけど(つっても1日8時間程度を1年程)
プログラムも計量化して止まらないようにしたうえでOSのサービスとかそのへんも全て切らないといけないかな…
ちょっとHDDにアクセスされたりしただけで処理遅延起きるだろうし



938 :リリン ◆1Fyv5SRcNU :2009/11/17(火) 17:42:47 ?PLT(36666)
VB.netでホームページ作成用補助具を作っております´`
テキストボックスに入力した文字列でHTMLを吐き出して自動でリンク貼るようにしたのですが・・・。


<p>タグと<br>タグをボタンクリック時にテキストボックスに表示したいのです´`

・行末に一括して<br>タグを入力
・改行して一行空けたところに<p>タグを一括して挿入とかできますですか?´`

できるならヒントだけください´`

939 :デフォルトの名無しさん:2009/11/17(火) 18:23:29
クラウドとかArezっていうのは.NETをマイクロソフトが捨てた代わりのもの?

940 :デフォルトの名無しさん:2009/11/17(火) 18:42:22
>>938
つ[TextBox.Lines プロパティ]

941 :リリン ◆1Fyv5SRcNU :2009/11/17(火) 18:52:43 ?PLT(36666)
>>940
Dim i As Integer

For i = 0 To txtWrite.Lines.Length - 1
txtWrite.Text = txtWrite.Lines(i) + "<br>"
Next

こんなんじゃダメですか?´`
ダメでした。

もうちょっと調べてみます。

942 :デフォルトの名無しさん:2009/11/17(火) 19:23:02
Lines は読み取り専用なので
StringBuilder を用意して、1行読んでは "<br>" つけて
AppendLine していって、最後に Text プロパティに再設定すればいいんでは。

943 :リリン ◆1Fyv5SRcNU :2009/11/17(火) 19:27:52 ?PLT(36666)
>>942
やってみまふ´`

944 :デフォルトの名無しさん:2009/11/17(火) 21:18:30
一番楽な方法だとこんな感じ?
If txtWrite.TextLength > 0 Then
 txtWrite.Text = String.Join("<br>", txtWrite.Lines) & "<br>"
End If
一文字も入っていない時の対応が微妙に格好悪いけどw
Array.ConvertAll+ラムダ式とかなら正確にできるけど、そこまでするほどじゃないしなあ。

945 :リリン ◆1Fyv5SRcNU :2009/11/17(火) 21:23:17 ?PLT(36666)
>>944
わざわざすみませぬ´`

946 :デフォルトの名無しさん:2009/11/17(火) 21:37:36
改行コードを"<br>"+vbCrLfに置換すればいいんじゃないか?
改行コードがCrLfじゃないときは適当に工夫してくれ

947 :デフォルトの名無しさん:2009/11/17(火) 21:46:41
VS2005のプロパティで読み取り/書き込みをPublic/Privateみたいに分けたいんですが無理ですか?
あと、定数宣言って一般的にはどういう風に皆さんは定義していますか
モジュールは使わずにクラスで定義して試用する方がやっぱりよろしいのでしょうか

948 :デフォルトの名無しさん:2009/11/17(火) 21:49:37
できる
相応しいクラスに記述する あとConstは普通使わない

949 :デフォルトの名無しさん:2009/11/17(火) 22:23:08
定数はReadOnlyフィールドだな
Constは余計なトラブルのもとになるので特に理由がなければ避ける

950 :デフォルトの名無しさん:2009/11/17(火) 22:37:34
そんな俺様ルールが普通なんだろうか。
俺には合理性があるルールには思えんな。
むしろReadOnlyなんてプリミティブ型で使いたくない

951 :デフォルトの名無しさん:2009/11/17(火) 22:43:45
アクセスレベルがアセンブリレベル以下なら問題ないが
アセンブリ外から見える定数にConstを使ってはいけない。後で値を変更できなくなる。

952 :デフォルトの名無しさん:2009/11/17(火) 22:48:38
>>951
俺が知らない問題についていってるのかもしれんが、意味不明に聞こえるなあ。
「後で値を変更できなくなる」の「後」って何?

コンパイル後のこと?
バージョンアップのことを「後」って言ってるのか?

前者なら、そもそもそれがConstの意義だから何の問題もない。
後者なら、全然そんなはずはない。

953 :デフォルトの名無しさん:2009/11/17(火) 22:54:50
クラスライブラリがバージョンアップしたときに中のConstの値が変更されたら
それを参照してるものはすべてコンパイルし直さないといけなくなる。
>http://msdn.microsoft.com/ja-jp/library/ms229057%28VS.80%29.aspx
>const 値を変更すると、必ず互換性に関係する問題が生じます。

954 :デフォルトの名無しさん:2009/11/17(火) 22:55:15
変更しなきゃOK

955 :デフォルトの名無しさん:2009/11/17(火) 23:00:51
>>953
Constだとコンパイル時に即値に変換されちゃうって訳ね。
なるほど納得したすまん。


956 :デフォルトの名無しさん:2009/11/17(火) 23:03:10
皆あまりConstは積極的に使ったりせんのか

957 :デフォルトの名無しさん:2009/11/17(火) 23:16:04
>>948
http://msdn.microsoft.com/ja-jp/library/01143ea4%28VS.80%29.aspx
できるようですね、MSDNにもちゃんと明記されていました・・・

定数についてはちょっと考えを改めていこうと思います
Cだとヘッダ、VB6だと標準モジュールに定数を羅列するような感じで
今まで使っていたのですが、VB.NETだと毛色が違うようでいろいろと
他人のソースを見て回ってきます

958 :デフォルトの名無しさん:2009/11/18(水) 01:09:19
Constって積極的につかっちゃ遺憾のか…
ちょっと目鱗かなぁ…

不変な物ならつかってもいいですか?
┃゚д゚)チラッ

959 :デフォルトの名無しさん:2009/11/18(水) 01:20:04
Friend/Privateならお好きに

960 :デフォルトの名無しさん:2009/11/18(水) 10:36:02
そもそも、定数だろうと何だろうと
フィールドを公開するなんて下策は普通とらない。

961 :デフォルトの名無しさん:2009/11/18(水) 10:53:14
リッチテキストボックスに貼り付けた画像を
ファイルに保存したいのですが、どうすればできるでしょうか?

962 :デフォルトの名無しさん:2009/11/18(水) 11:20:42
int.MaxValue
とかはどうなのよ?

963 :デフォルトの名無しさん:2009/11/18(水) 13:28:36
値型や不変オブジェクトの読みとり専用や定数は公開することだってあるわな。


964 :デフォルトの名無しさん:2009/11/18(水) 14:53:03
後で後悔するんだよな

965 :デフォルトの名無しさん:2009/11/18(水) 15:14:59
【審議中】
    ∧,,∧  ∧,,∧
 ∧ (´・ω・) (・ω・`) ∧∧
( ´・ω) U) ( つと ノ(ω・` )
| U (  ´・) (・`  ) と ノ
 u-u (l    ) (   ノu-u
     `u-u'. `u-u'

966 :デフォルトの名無しさん:2009/11/18(水) 19:22:09
質問です

<input type="submit" value="次へ"/>
<input type="hidden" value="001" name="action"/>

上のような形のsubmitボタンが複数あり
その中からhiddenが001のボタンを自動でclickするようにしたいのですが
方法はありませんか?

967 :デフォルトの名無しさん:2009/11/18(水) 19:33:10
ASP.NET で聞けばいいんじゃないかな?

つうかhiddenが001てボタンじゃ無くね?

968 :デフォルトの名無しさん:2009/11/18(水) 19:44:05
>>966
javascriptで

969 :デフォルトの名無しさん:2009/11/18(水) 19:44:21
VB2008Expressなのでここで聞こうと思ったのですがスレ違いですか
001ってのは仮です

970 :デフォルトの名無しさん:2009/11/18(水) 21:12:44
VB2005のテキストボックスを質問させてください。

textboxでpaddingの効果を得るにはどうすればいいのでしょうか?
入力した後の表示で左側を大文字スペース1個分ぐらい開けたいのですがやり方がわかりません。

あとは下側に表示を行いたいのですが、
textalignもleft,center,rightで、
bottomleftがないですし・・・
bottomと同じ効果はpadding上設定で出来るとも思っていますが。

サイトへの誘導などでもよろしくお願いします。

971 :デフォルトの名無しさん:2009/11/18(水) 21:20:02
Dim hdoc As HtmlDocument = Me.WebBrowser1.Document
For Each frm As HtmlElement In hdoc.Forms
For Each elm As HtmlElement In frm.GetElementsByTagName("hidden")
If elm.GetAttribute("value") = "001" And elm.Name = "action" Then
frm.InvokeMember("submit")
End If
Next
Next
こんなかんじでやるしかないんじゃない

972 :デフォルトの名無しさん:2009/11/18(水) 21:21:06
アンカ忘れ
>>971>>969

973 :デフォルトの名無しさん:2009/11/18(水) 21:23:49
>>970
フォーカスはずれたときにTextの頭に全角スペース突っ込んで、フォーカスが来たら頭のスペースを削除するとかw

974 :デフォルトの名無しさん:2009/11/18(水) 21:36:26
最近PGやらされてて
グローバル変数?でコメントもなくて
aflgとかbflgとかわけわかんなくて
いたるところで値が書き換えられててわけわかんないんだけど、
こういう分かりづらいソースを保守するコツみたいな物ありますか?

まじでPG難しい

975 :デフォルトの名無しさん:2009/11/18(水) 21:38:06
中を触らない
ブラックボックスとして扱う

976 :デフォルトの名無しさん:2009/11/18(水) 21:54:34
>>973
ありがとうございます。
その手もありましたね。
いくつか案を出して他者と検討しますので、案に上げさせてもらいます。

今現在は、ラベルのborderstyleで表示枠を作って、
textboxのmultilineで丁度いいサイズを作成し、
全角1マス分ラベルの左側から離して、bottomleftの位置になるように
内部に配置という方法も考えていたり・・・

なんでプロパティでpadding設定できないんでしょうね。。。

他に同じように表示できる方法をご存知の方よろしくお願いします。


977 :デフォルトの名無しさん:2009/11/18(水) 21:57:29
C#でObject型の変数objに
 obj = (object)new byte[count];
と代入しているのをVBに変換する場合、
Dim bts As Byte() = New Byte() {}
ReDim bts(cbPidl - 1)
obj = bts
こういう仕方で行なえばよいでしょうか?よろしければご指南ください。


978 :デフォルトの名無しさん:2009/11/18(水) 21:59:28
>>977 訂正
Redimのところは ReDim bts(count - 1) でした、すみません。

979 :デフォルトの名無しさん:2009/11/18(水) 22:55:15
たくさんあるTextBoxにFor Nextで全部に同じ文字を入れたいのですが
どうやれば良いでしょうか?

For I As Integer = 1 To 50
TextBoxI.Text=""
Next

こういうことなのですが・・・

980 :デフォルトの名無しさん:2009/11/18(水) 22:58:55
>>977
C#と全く同じ
obj = New Byte(count) { }

981 :デフォルトの名無しさん:2009/11/18(水) 23:04:55
>>979
Dim tbxs As TextBox() = New TextBox() {TextBox1, TextBox2, TextBox3, TextBox4, TextBox5}
For Each tbx As TextBox In tbxs
tbx.Text = "ABC"
Next

982 :デフォルトの名無しさん:2009/11/18(水) 23:05:36
>>980
配列のサイズの指定方法がVBとC#では違うよ。

983 :デフォルトの名無しさん:2009/11/18(水) 23:07:40
>>981
ありがとうございます。
出来ました。
でもTextBox1, TextBox2, TextBox3, TextBox4, TextBox5。。。。。というのは必ず1度は書かないとだめでしょうか?

984 :デフォルトの名無しさん:2009/11/18(水) 23:09:53
>>983
そのTextBoxが、たとえばフォームに配置されている場合
For Each ctl As Control in Me.Controls
If ctl.GetType().Name = "TextBox" Then
CType(ctl, TextBox).Text = ""
End If
Next
といった感じでできるが、Controlsコレクションに追加されているのが前提である(デザイナでフォームに配置した場合は追加される)

985 :デフォルトの名無しさん:2009/11/18(水) 23:10:25
>>982
要素型() 変数名 = New 要素型(サイズ) { }
の形式で書けばほぼ同じ
最後の{}が格好悪いけど仕方ない

986 :985:2009/11/18(水) 23:11:21
変数名 As 要素型() = New 要素型(サイズ) { }
すまんこうだった

987 :デフォルトの名無しさん:2009/11/18(水) 23:13:21
>>984
ありがとございます。
できました!!

988 :デフォルトの名無しさん:2009/11/18(水) 23:13:45
>>980
どうもです!!countについては一応 count-1 ですよね?

989 :デフォルトの名無しさん:2009/11/18(水) 23:15:25
>>985
だから違うよ。
C#(というかC系統の言語)は配列の要素数を指定する。
ところがVBは伝統的に配列の最後のインデックスを指定することになってる。
ヤバイんじゃないの?今までこれ知らずにコード書いてたとしたらw

990 :デフォルトの名無しさん:2009/11/18(水) 23:17:32
遅レスだが
>>976
よく使うなら一個そういうカスタムコントロール作っとけば?

フォーカスがない場合はPaint時に自分で全角をくっつけて描画
フォーカスがある場合はコントロールのペイントに任せるとか


991 :デフォルトの名無しさん:2009/11/18(水) 23:18:06
>>971>>972
これからいじくってみます
ありがとうございました

992 :デフォルトの名無しさん:2009/11/18(水) 23:19:31
>>985
ありがとうございました!!同じ形式で書けるのですね!わかりました!


993 :デフォルトの名無しさん:2009/11/18(水) 23:21:01
>>989
わかりました!!ありがとうございます!!

994 :デフォルトの名無しさん:2009/11/18(水) 23:40:23
たしかに真央のジャンプはチートが多いけど、見た目奇麗だからいいのだ。気にしないよ。

995 :デフォルトの名無しさん:2009/11/18(水) 23:41:13
すまん、誤爆した。

996 :デフォルトの名無しさん:2009/11/19(木) 00:41:29
>>989
>VBは伝統的に配列の最後のインデックスを指定することになってる
つか、大昔のBASICの名残で、配列は1からだったんだよ
なんで指定するのは個数だともいえたわけだ。VBになって、配列は0からか
1からか指定できるようになったんだよ(3からとか10からとかでも指定できたがw)
そしてVB.NETになって0からのみになった
その間上限の指定方法はずっと変わってないんだ

997 :デフォルトの名無しさん:2009/11/19(木) 01:23:45
数字の質問で申し訳ないのですが
1.234 と
50 という2つの数字から
1.250を得たいのですが、
1.290と10だった場合は1.310を得たいです。
また1.8と1だったら2.1だったり
桁数が変動するのですがどんな感じでやれば良いでしょうか?

998 :デフォルトの名無しさん:2009/11/19(木) 02:30:08
法則がよく分からんが
第一引数の小数部の桁数をm、第二引数の桁数をnとしたとき
第一引数の小数点以下第n位を四捨五入して、それに
第二引数を10^mで割った数値を加えたい?

999 :デフォルトの名無しさん:2009/11/19(木) 07:37:15
999

1000 :デフォルトの名無しさん:2009/11/19(木) 07:38:26
1000

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

241 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)