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

VB.NET質問スレ(Part14)

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/01/31(火) 10:16:22
VB.NETの質問全般です

過去スレ
VB.NET質問スレ (Part13)
http://pc8.2ch.net/test/read.cgi/tech/1131755402/
VB.NET質問スレ (Part12)
http://pc8.2ch.net/test/read.cgi/tech/1121600038/
VB.NET質問スレ (Part11)
http://pc8.2ch.net/test/read.cgi/tech/1114217190/
VB.NET質問スレ (Part10)
http://pc5.2ch.net/test/read.cgi/tech/1109343613/
VB.NET質問スレ (Part9)
http://pc5.2ch.net/test/read.cgi/tech/1106577850/
VB.NET質問スレ (Part8)
http://pc5.2ch.net/test/read.cgi/tech/1102512868/
VB.NET質問スレ (Part7)
http://pc5.2ch.net/test/read.cgi/tech/1096683017/
VB.NET質問スレ (Part6)
http://pc5.2ch.net/test/read.cgi/tech/1088812165/
VB.NET質問スレ (Part5)
http://pc5.2ch.net/test/read.cgi/tech/1078134703/
VB.NET質問スレ (Part4)
http://pc2.2ch.net/test/read.cgi/tech/1065269043/
【老若】VB.net質問スレ【男女】 (Part3)
http://pc5.2ch.net/tech/kako/1056/10562/1056281084.html
【老若】VB.net質問スレ【男女】 (Part2)
http://pc2.2ch.net/tech/kako/1043/10436/1043629429.html
【老若】VB.net質問スレ【男女】
http://pc2.2ch.net/tech/kako/1025/10258/1025848458.html
0153デフォルトの名無しさん2006/02/06(月) 18:37:22
>>152
バカ

せっかく良いチャンスなんだから、
ちゃんと原因を突き止めてごらん

何でコンパイラがコンパイルエラーを出したのか、
どうすれば解決できるのか、
それが分からないでデバッグできるようになるはずがないよ。

まぁ、「とりあえず動けばいいや。後で苦しんでもしんでもいいや」と思ってるなら別だけどね。
0154デフォルトの名無しさん2006/02/06(月) 18:37:33
こういうところがVBの嫌いなところだ。
FontStyleとSingleは型違いだってコンパイル時にせめて警告ぐらい出せ。
0155最凶VB厨房2006/02/06(月) 18:39:24
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpref/html/frlrfSystemDrawingFontClassctorTopic4.asp
↑にマッチしていたが修正で
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpref/html/frlrfSystemDrawingFontClassctorTopic2.asp
↑にマッチしたということだろう。

Option Strict Onでもつけたほうがいいわな。
0156デフォルトの名無しさん2006/02/06(月) 18:39:35
>>154
ん・・・??
0157デフォルトの名無しさん2006/02/06(月) 18:40:55
なるほど
Font(string,single)なのか・・・ってそれじゃ>>137の参考書って・・・Σ
0158デフォルトの名無しさん2006/02/06(月) 18:43:02
>>157
ちょっと落ち着け
0159デフォルトの名無しさん2006/02/06(月) 18:43:20
>>157
Fontクラスのコンストラクタはそれ以外にも8種類近くある
>>137の参考書が使ってるのは、Font(Font, FontStyle)の方
0160デフォルトの名無しさん2006/02/06(月) 18:45:11
Option Strict Onは強力お勧めだが、今回のはそれじゃコンパイル時には分からんよ。
その形式でオーバーロードされてるんだから。
気付くとしたらインテリセンスで違うパラメータが出てくるってとこじゃない?
0161デフォルトの名無しさん2006/02/06(月) 18:46:22
enumにctype()かければ動くんか?
0162デフォルトの名無しさん2006/02/06(月) 19:00:03
trace.writeline の意味がいまいちよくわからない
本やhpを見る限り、メッセージボックスまたはdebug.printのような使い方なのだが、
実行してもどちらにもならない。
誰か教えてください
0163最凶VB厨房2006/02/06(月) 19:01:28
ま、まじや・・・w

C#だと明示的にキャストせなあかんな。
textBox1.Font=new Font(textBox1.Text,(float)(textBox1.Font.Style ^ FontStyle.Italic));

ほほぅ。
0164最凶VB厨房2006/02/06(月) 19:14:32
とりあえずデバッグウィンドウにでてくるが?
0165デフォルトの名無しさん2006/02/06(月) 19:46:50
>>162
トレース リスナ クラスを*.exe.configで追加してやるとファイルやコンソールに出力できる。
<configuration> 要素 の「トレースおよびデバッグ設定のスキーマ」を参照。
0166最凶VB厨房2006/02/06(月) 19:59:20
Option Explicit On
Option Strict On
Imports System
Imports System.Diagnostics

Public Class EntryPoint
Shared Sub Main(args() As String)
Trace.Listeners.Add(New TextWriterTraceListener(Console.Out))
Trace.WriteLine("aaa")
End Sub
End Class

vbc /r:System.Dll /d:TRACE=True a.vb

これでも一応でてきた。
0167デフォルトの名無しさん2006/02/06(月) 20:02:10
Explicitとかソースに書き込むヤツ居たんだ・・・
0168デフォルトの名無しさん2006/02/06(月) 20:03:42
そういう、大して役に立つとも思えん知識までよくカバーする気になるよな。
いや馬鹿にしてるんじゃなくて関心してるのよ、俺はそんなにモチベーションないから。
仕事でいやいやコード書いてる人間なんで。
0169最凶VB厨房2006/02/06(月) 20:03:46
オプション派なのけ?
0170最凶VB厨房2006/02/06(月) 20:11:48
何が役に立つかどうかなんてすぐにはわからんやんか・・・。
役に立ちそうにないからやらんとこってのは
やめたんだ。特にすぐに試してみればわかることは。ネ!
0171デフォルトの名無しさん2006/02/07(火) 00:33:17
オプションでつけたら自動でソースに書き込まれるんじゃなかったっけ
0172最凶VB厨房2006/02/07(火) 00:45:44
書き込まれんようだ。
0173デフォルトの名無しさん2006/02/07(火) 01:11:40
そうなんだ・・・VB6じゃ書き込まれるよね。
何でソースだけで再現できるようにしないのかなぁ
0174デフォルトの名無しさん2006/02/07(火) 01:20:51
VB.NETは基本的にそういう方向になってるような希ガス。
名前空間の設定とかもそうだねぇ。
0175デフォルトの名無しさん2006/02/07(火) 08:21:15
>>173
何でって、C系と違って、そもそもあのIDE環境で作ることが絶対前提の言語だから
0176デフォルトの名無しさん2006/02/07(火) 09:03:11
SDKでやってる自分の立場は
0177デフォルトの名無しさん2006/02/07(火) 09:25:14
SDKが何なのかわかってる?
0178デフォルトの名無しさん2006/02/07(火) 09:44:35
http://dobon.net/vb/dotnet/links/freedotnetide.html
こんな感じ
0179デフォルトの名無しさん2006/02/07(火) 13:07:34
C#だってそういう部分があるだろが
0180デフォルトの名無しさん2006/02/07(火) 13:10:53
Visual Basic コンパイラ オプション

/optionexplicit参照
Visual Basic コンパイラ オプション | /optionstrict | コンパイル コマンド ラインのサンプル | Option Explicit ステートメント
宣言されていない変数を使用している場合に、コンパイラによってエラーが報告されます。

---------------------------------------------------------
Visual Basic 言語リファレンス

Option Explicit ステートメント参照
Const ステートメント | Dim ステートメント | Function ステートメント | Option Compare ステートメント | Private | Public | ReDim ステートメント | Sub ステートメント | /optionexplicit | /optionstrict | /optioncompare:binary | /optioncompare:text
ファイル内のすべての変数を明示的に宣言するためにファイル レベルで使用します。
0181デフォルトの名無しさん2006/02/07(火) 15:46:15
>>178
そ れ の ど こ が V B
0182デフォルトの名無しさん2006/02/07(火) 15:53:24
>>181
流れはこんな感じ

>>175 VBの話からIDEの話になる
>>176 メモ帳か何かでコーディング派
>>177 「SDKが何なのかわかってる?」発言
>>178 IDE使わないでコーディングできる予感
>>181 急にVBに戻る
0183デフォルトの名無しさん2006/02/07(火) 15:55:05
VBが関係なくなってると思ってる>>182=178にワロタ
0184デフォルトの名無しさん2006/02/07(火) 15:58:10
>>183
そんな事はどーでもいいw よよよ。
0185デフォルトの名無しさん2006/02/07(火) 15:58:23
>>183
残念だけど>>182!=178
0186デフォルトの名無しさん2006/02/07(火) 16:01:31
>>183
たしかにワロスw
0187デフォルトの名無しさん2006/02/07(火) 16:39:18
>>182ってIDEって言葉を理解してないんじゃないの?
0188デフォルトの名無しさん2006/02/07(火) 16:58:19
>>187
つ [ttp://yougo.ascii24.com/gh/00/000090.html]
俺んちにもintegrated development environment 入ってないよ
0189デフォルトの名無しさん2006/02/07(火) 17:12:15
IDEってらっきょだろ?

・・・言ってみたかっただけ 吊ってくる。
確か統合開発環境・・・であってるよね?
あってるって言ってくれ。
0190デフォルトの名無しさん2006/02/07(火) 17:31:00
Dim Frm As Form

Frm = New Form1
Frm.Show()

て書いて関数抜けても実体は残るよね?
でも変数はもう参照できないんだけど実体はどこに入ってんの?
0191デフォルトの名無しさん2006/02/07(火) 17:34:31
フレームワークが保持してる。当たり前だが。
0192最凶VB厨房2006/02/07(火) 17:54:53
実体を誰が持っているかは謎・・・。
0193デフォルトの名無しさん2006/02/07(火) 19:45:48
倒錯してると思うけど。
枯れ木に花が咲くのが当たり前で、生木に花が咲くのを驚く、みたいなw

だってさ、参照がスコープから消えると抹殺される、ってことがむしろ
自然状態じゃないわけでさ。
0194デフォルトの名無しさん2006/02/07(火) 20:17:11
(゚д゚;;;)何言ってんのこいつ・・・・
0195デフォルトの名無しさん2006/02/07(火) 20:55:57
>>194
ふーん違うんなら反論どうぞ
できないだろうけどw
0196デフォルトの名無しさん2006/02/07(火) 21:01:20
>>195
ふーん違うんなら反論どうぞ(どうせ私びは)できないだろうけどw
0197デフォルトの名無しさん2006/02/07(火) 21:18:30
スコープ外れても消えないっていう基本を理解できていない。
0198最凶VB厨房2006/02/07(火) 21:41:57
ふぅ
0199デフォルトの名無しさん2006/02/07(火) 21:46:51
VB.NETとかjavaとかVB6とか、これらのプログラミング言語は一応OOPに則ってる節がある。
これらの言語で居移す売る概念は「オブジェクト変数は参照型である」というもの。
以下はこの前提に基づいて書いています。

参照型であるがゆえに、オブジェクト参照式の指す「実体」は別に管理する必要があり、
実体が「別に管理」されているから、「スコープ」という変数の生成/消滅とは別の生存の道を辿らざるをえなくなっている。

管理されている実体は、「いずれの”何か”からも参照されなくなった時点で存在を確認できなくなる」という性質を持つ。
ま、存在を確認できなくなったとたん、殺される運命を辿るわけだな。

---------------
ここまでは普通の話なのであまり面白くないが…
オブジェクトが可視性のあるコントロールの様なものの場合、「人の目に参照されている」というのが残る。
VB6とかはこの辺がごちゃごちゃで、わざわざFormsコレクションとか取り入れて、
Formというクラスが生成されると暗黙的にFormsコレクションによって参照されるようになってる。
はっきり言って気持悪い。
で、これを解消したのが VB.NET だと思っていたんだが…

〜つづぬ〜
0200デフォルトの名無しさん2006/02/07(火) 21:49:11
〜続き〜
> Dim Frm As Form
> Frm = New Form1
> Frm.Show()
このコードが一つのブロックの中にある(つまり、Frmがスコープから外れたときに消滅する)時、
本当かどうかわからんが、どーも
> て書いて関数抜けても実体は残るよね?
> でも変数はもう参照できないんだけど実体はどこに入ってんの?
らしいな。

これは「オブジェクト変数:Frmにしか参照されていないForm1の実体」が「Frmに参照されなくなっても生存している」
という矛盾がある。
本当なのか?
※明示にDispose()する必要があるかもしれないが、それは実体に対する働きかけであって、
 実体を殺すことではないはず。

俺、おかしいかな。
0201デフォルトの名無しさん2006/02/07(火) 21:58:29
だからスコープから外れた時に実態が処分される、ってのは
そのためのメカニズムがあってこそであって、それが自然状態ではないのw

Cとかでプログラム書いたことないのかな
0202デフォルトの名無しさん2006/02/07(火) 22:00:55
参照が切れたらその場で殺して欲しいね。
さもないとC++のnewとdeleteの嵐の二の舞だ
0203デフォルトの名無しさん2006/02/07(火) 22:05:11
見えないオブジェクトは消えてんの?
0204デフォルトの名無しさん2006/02/07(火) 22:06:49
>>203
gc働くような言語なら、どこからも参照されなくなったら勝手にgcしちゃいます
きっといつか
C++みたいに、プログラマが任意に殺して良いような言語はdeleteちゃんとしないとメモリ食べつくします
たぶん
0205デフォルトの名無しさん2006/02/07(火) 22:06:50
>>200
ヒント:自分が書いたコード以外の部分で参照を持っていることもある

>>201
スコープはともかく、GCは言語レベルで規定されているんだから、
参照がなくなったらインスタンスが消えるのはVB(少なくとも7以降)にとっては自然状態と言って差し支えないと思うが
0206デフォルトの名無しさん2006/02/07(火) 22:07:42
>>205
?
'on VB.NET
> Dim Frm As Form
> Frm = New Form1
> Frm.Show()
これしか書いてないのに、他に何か参照してるの?
マジで?
教えろエロい人
0207デフォルトの名無しさん2006/02/07(火) 22:42:10
Form1のコンストラクタ、Loadイベントで何やってるかによるわな。
0208デフォルトの名無しさん2006/02/07(火) 22:43:51
そういえばそういう方法もあった罠
視野狭くなってるのでちょっと目薬刺してきます
0209デフォルトの名無しさん2006/02/07(火) 23:04:19
むしろ目刺して視野0にしてこい
0210最凶VB厨房2006/02/07(火) 23:06:06
TLSが持つんかな。
まっよくわからんや。
0211デフォルトの名無しさん2006/02/07(火) 23:22:34
どっかが持ってる可能性はそれなりに高いと思うが、
仕様として不明な以上、いきなり消される可能性は否定出来ない。
0212デフォルトの名無しさん2006/02/07(火) 23:24:28
つうか2005ならUsingできれいに書けるのにね。
Using frm as new Form1
frm.ShowDialog
End Using

そうじゃなくモードレスフォーム表示だとしたら、ローカル変数にしてるって時点で設問としてありえんな。
0213デフォルトの名無しさん2006/02/07(火) 23:32:16
>>212なんの話かわからんよ
0214デフォルトの名無しさん2006/02/07(火) 23:33:49
FormがIDisposableインタフェイスを実装してるからusingブロックで確実にDispose()メソッド呼んでくれてうれしいなー
って思ってるだろうが、実はあんまり関係ない
0215最凶VB厨房2006/02/07(火) 23:34:39
>>211
重要な指摘だね。若干盲点だった。
0216デフォルトの名無しさん2006/02/07(火) 23:51:19
FormっていきなりDispose呼んでよかったんだっけ?
っていうか、そんな一瞬で花と散るフォームに一体なんの意味がw


0217デフォルトの名無しさん2006/02/07(火) 23:54:24
だから微妙にShowじゃなくShowDialogなんだが・・・。
でもって、普通Showするなら親フォームのフォームレベル変数にするべさ。
ローカル変数でShowしてどこ行った?って議論がナンセンス。
そんなことを考える必要があるソースは書かないのが正解。
0218デフォルトの名無しさん2006/02/08(水) 00:03:26
ああ、見落とした。。
スマン
0219デフォルトの名無しさん2006/02/08(水) 00:40:39
Showされた時点でFormは自分自身(MyBase)を参照してる
0220デフォルトの名無しさん2006/02/08(水) 00:50:21
>>219
まるでMyBaseが遊離してる雰囲気なのか?
0221デフォルトの名無しさん2006/02/08(水) 00:53:17
だから参照してるとかされてるとかの問題じゃなくて
ガベコレ抑制してるだけだっつーのw

つーか.NETの継承ってのはベースクラスのオブジェクトに委譲することによって
実現されてるのか?w
0222最凶VB厨房2006/02/08(水) 00:56:07
それ根拠あるのか?
推測か?
0223最凶VB厨房2006/02/08(水) 00:57:33
それ->ガベコレ抑制してるだけ
ね。
0224デフォルトの名無しさん2006/02/08(水) 01:02:57
>Showされた時点でFormは自分自身(MyBase)を参照してる
何が言いたいのかよくわからんが、念のため。
ルートからつながってない限り、循環参照は意味なし。
参照カウンタ方式なら別だけどね。
0225デフォルトの名無しさん2006/02/08(水) 01:07:11
>ガベコレ抑制してるだけだっつーのw
詳しく
0226デフォルトの名無しさん2006/02/08(水) 01:12:16
gc抑制とか何だ?
kwsk
0227デフォルトの名無しさん2006/02/08(水) 03:36:48
VB2005Expressで初めてVBに触れたんですが
参考にしてる資料(VB2003を使ってる)で、コードを書き込む際に
クラス名を全般、メソッド名をDeclarationsにして宣言しろってなってるんですが
メソッド名にDeclarationsが出てきません。

VB2005になってからの仕様変更なのか、Expressだから出来ないのか
この辺わかる方、教えて頂けませんでしょうか。
0228最凶VB厨房2006/02/08(水) 03:42:47
参考にしてる資料の
>コードを書き込む際に
>クラス名を全般、メソッド名をDeclarationsにして宣言しろ
と書いてある部分を正確に書き移してみて。
0229デフォルトの名無しさん2006/02/08(水) 03:58:15
コードエディタウィンドウ上部にある左側リストボックスから(全般)を
右側リストボックスから(Declarations)を選択し、以下のソースコードを入力します。

Private DownloadCount As Long     ’’注釈文
Private JVOpenFlg As Boolean      ’’注釈文

こんな感じのコードです。

えっと、参考にしてるのは、JRA-VANのソフト作成体験教室です
http://www.jra-van.ne.jp/dlb/sdv/trial.html
これのLesson 4で躓いてます。
0230最凶VB厨房2006/02/08(水) 03:58:27
あー。あれか。
GeneralとDeclarationsか。
気にしちゃだめだ。
無視して良し。
0231最凶VB厨房2006/02/08(水) 04:02:24
Windowsフォームデザイナで生成されたコードの下に書けばよい。
0232最凶VB厨房2006/02/08(水) 04:03:16
「Windowsフォームデザイナで生成されたコード」
な。
0233デフォルトの名無しさん2006/02/08(水) 04:11:19
>>232
その「Windowsフォームデザイナで生成されたコード」が出てこないんです
http://f61.aaa.livedoor.jp/~name/up/img/uuup9105.png

無理やりこんな感じで入れてみたんですけど、それでいいのかどうか?
0234最凶VB厨房2006/02/08(水) 04:14:47
2005はそんなんなってるのかー。
いいと思います。(動けば)
ちなみに宣言=Declarationsです。
0235デフォルトの名無しさん2006/02/08(水) 04:18:01
>ちなみに宣言=Declarationsです。

なるほど、では一番上の所に書き込んで置けば良さそうですね。
こんな夜中に有難う御座いました。
0236デフォルトの名無しさん2006/02/08(水) 07:55:26
初めてVB2005でBASICを始めたものです。
テキストを見ながら次のようなプログラムを実行してみました。
Dim a As Integer
a = 123
Trace.WriteLine(a)
MsgBox(a)
Debug.Print(a)
メッセージボックスは正常に表示されるのですが、デバッグ出力画面は
変化がありません。出力画面に表示させるにはどうすればよいのでしょうか。

よろしくお願いいたします。
0237デフォルトの名無しさん2006/02/08(水) 08:22:29
>>236
入門書でも買った方がいいんじゃないの
0238デフォルトの名無しさん2006/02/08(水) 10:15:17
DebugPrint・・・って何だ?
.net2003のキーワードには乗ってないけど?
Debug.WriteLine(a)でやってみ?

'的外れなら許せ
0239↑2006/02/08(水) 10:19:05
うわ 恥ずかしいこと書いてしまった。
TraceとDebugの違いってDebugはデバッグビルドのときのみ有効位しか違いがなかったのか
(恥の上塗りになったらどうしよう)
02402362006/02/08(水) 10:28:52
使い込まずに質問してしもてすまんかったです。

イミディエイトウィンドウと出力画面(デバッグ)を勘違いしていました。

イミディエイトウィンドウを表示するようにしたらできました。
ありがとうございました。
0241デフォルトの名無しさん2006/02/08(水) 10:39:37
わからん!どーしてもわからん。

フォームデザイン画面で配列型のテキストボックスが作れないのだ!
コピー→ペーストではダメなんですか?

0242デフォルトの名無しさん2006/02/08(水) 10:56:10
配列型のテキストボックスってなんだろう?
VB6.0のコントロール配列のことを言ってるのなら、VB.NETでは
そういう機能がなくなった。ほかの方法で同様の使い方ができるん
で、ぐぐって出てくるサンプルを参考にするといいかも。
0243デフォルトの名無しさん2006/02/08(水) 11:07:41
さんきゅ。頭の切り替えが必要みたいですね。


教えて君でスマンが、他の方法ってのは何ですか?
0244デフォルトの名無しさん2006/02/08(水) 11:44:26
ぐぐればすぐに見つかる
0245デフォルトの名無しさん2006/02/08(水) 12:26:23
Private Button_test(9) As Windows.Forms.Button


Button_test(0) = Button1
Button_test(1) = Button2
    ‥‥以下続く‥‥

こんな感じでしょうか。面倒。
0246デフォルトの名無しさん2006/02/08(水) 12:39:03
>>245
private button_clc as new system.collection.hashtable
for each ctl as control in me.controls
if typeof(ctl)=system.windows.forms.button then
button_clc.add ctl.hashcode(),ctl
end if
next

で、button_clcを使うとか?
0247デフォルトの名無しさん2006/02/08(水) 12:52:05
つうか無理に配列にしないでも、イベント関数を共有して使うなどは出来るわけだし。
プロパティのまとめ設定は確かに面倒だけど、ForEachでいける部分多いし。
0248デフォルトの名無しさん2006/02/08(水) 19:30:21
くだらないことかもしれませんが質問させてください。

文字列二項目程度のレコードを50件程度「何か」にいれて、サーバに送り付けたいと思います。
サーバではそのレコードをDBに挿入します。

この場合、レコードを格納するのは何が適当でしょうか?
配列?データセット?
0249デフォルトの名無しさん2006/02/08(水) 20:38:15
XML
0250デフォルトの名無しさん2006/02/08(水) 22:21:28
CSVが無難じゃない?
0251デフォルトの名無しさん2006/02/08(水) 22:24:02
SOAP
0252デフォルトの名無しさん2006/02/08(水) 22:24:15
>>250
無難じゃないかと
XMLなら可読性高いから保守簡単
■ このスレッドは過去ログ倉庫に格納されています