[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 06/08 14:41 / Filesize : 240 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

VB.NET質問スレ (Part10)



1 名前:最凶VB厨房 mailto:sage [05/02/26 00:00:13 ]
VB.NETの質問全般です

過去スレ
VB.NET質問スレ (Part9)
pc5.2ch.net/test/read.cgi/tech/1106577850/
VB.NET質問スレ (Part8)
pc5.2ch.net/test/read.cgi/tech/1102512868/
VB.NET質問スレ (Part7)
pc5.2ch.net/test/read.cgi/tech/1096683017/
VB.NET質問スレ (Part6)
pc5.2ch.net/test/read.cgi/tech/1088812165/
VB.NET質問スレ (Part5)
pc5.2ch.net/test/read.cgi/tech/1078134703/
VB.NET質問スレ (Part4)
pc2.2ch.net/test/read.cgi/tech/1065269043/
【老若】VB.net質問スレ【男女】 (Part3)
pc5.2ch.net/tech/kako/1056/10562/1056281084.html
【老若】VB.net質問スレ【男女】 (Part2)
pc2.2ch.net/tech/kako/1043/10436/1043629429.html
【老若】VB.net質問スレ【男女】
pc2.2ch.net/tech/kako/1025/10258/1025848458.html

601 名前:デフォルトの名無しさん mailto:sage [2005/04/03(日) 22:33:41 ]
他の人のベンチマークまだぁ?

602 名前:デフォルトの名無しさん mailto:sage [2005/04/03(日) 22:51:44 ]
>>601
お前のは?

603 名前:デフォルトの名無しさん mailto:sage [2005/04/03(日) 23:17:50 ]
>>579のデータがおかしいと言うのなら、まず自分で数値出さないとねぇ。
C#とVB.NETなんて速度ちっとも変わらねぇよとでも言いたいのか?
そう言いたいならハッキリそう言えばいい。

604 名前:デフォルトの名無しさん mailto:sage [2005/04/03(日) 23:29:21 ]
折れのでは、C#:VB.NET = 1:1 だった。
変わんない

605 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 01:58:32 ]
C#とVB.NETに速度の違いがあるとすると整数のオーバーフローチェックの
デフォルトの違いくらい。それほど違いが出るものかな?
/removeintchecks
/checked

606 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 05:06:16 ]
関数使ってると変わってくるんじゃないのか

607 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 09:38:39 ]
>>603
それ以前の問題であることに早く気付いてください。
>>590とかで乱暴ながらも指摘されてるのに
気付かなかった?

608 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 10:06:37 ]
> まず自分で数値出さないとねぇ。

利用規約違反ですね。タイーホします。

609 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 10:33:22 ]
>>608
だな。

おまえら、EULAをちゃんと嫁。
このうんこやろう。



610 名前:デフォルトの名無しさん [2005/04/04(月) 10:33:49 ]

If button Is TBB0 Then
'TBB0のときに必要な処理

ElseIf button Is TBB5 Then
'TBB5のときに必要な処理

End If

↑こんなコード(button、TBB0、TBB5はいずれもButton型)
をSelect Caseで整理しようとしてるんだが、Select Caseでは
Button型は使えないみたいで、CObj()を通してもだめで、
しかたなく

Select Case button.Text
Case TBB0.Text
'TBB0のときに必要な処理
Case TBB5.Text
'TBB5のときに必要な処理
End Select

こんなごまかしで動かしていますが、もっとうまい方法はないものでしょうか?
(TBB0.Text=TBB5.Textになっちゃうとおかしくなりますし)


611 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 11:07:56 ]
>>610
どうしてもというなら.Nameで分岐するとか。

612 名前:610 [2005/04/04(月) 12:07:59 ]
>>611

うう、ありがとうごぜぇますだ。さっそく試すべ。。。
あれ、なんか違うかも?ん?、Button型じゃなくてToolBarButton型?
え、なんでNameプロパティないの?

すみません、質問するまえにもうちょい下調べしないと。
でもオブジェクトを確実に識別できるプロパティを探せばいいわけだし、
がんばってみます。

613 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 12:27:50 ]
>>607
いちいちソース書くのめんどくせ

614 名前:デフォルトの名無しさん [2005/04/04(月) 12:42:10 ]
下手したら30代超えのオッサンが「うんこ野郎」だの「タイーホ」だの言ってるかと
思うと反吐が出るな。

幼稚臭っ。キモ過ぎる。

615 名前:デフォルトの名無しさん [2005/04/04(月) 12:43:25 ]
なんでVB使いにはこんな幼稚な奴が多いんだ?

616 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 16:02:32 ]
>>612
.Tagがあるなら、好きなのを定義して分岐のキーにできる。

617 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 16:11:07 ]
ToolBarButtonなら、ToolBarのButtons.IndexOf(button)でインデックスベースという手もあるが。

618 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 16:35:05 ]
>>610
ヘルプぐらい読め。

619 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 16:59:12 ]
>>613
発想がおかしい。省略していいかどうかの判断ができていない。
それにソースだけではないとも指摘されているが
それについて触れようともしていない。

結論。アホ。



620 名前:610 [2005/04/04(月) 18:02:49 ]
>>616

Tagは真っ先に考えたのですが、フォームが多数あって
Tagを入れ忘れるやつがいないとも限らないので
(VBのToolbarでKeyの入れ忘れを散々やってます(汗))
他の方法がないかと勉強してたところなのです。
(入れ忘れさえなければいい方法なのですが)


>>617

With TB1.Buttons
Select Case .IndexOf(button)
Case .IndexOf(TBB0)
Case .IndexOf(TBB5)

こんな感じになりますた。だいぶすっきりだし、判定もまちがいなさそうです。


>>618

すまぬ。ヘルプみたのだがいい方法が見つからなんだ。

621 名前:デフォルトの名無しさん [2005/04/04(月) 19:41:17 ]
素直にIf...ElseIfで書いたほうが後々理解しやすいと思うけど。。

622 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 20:25:05 ]
これのことかと思ったんだけど、勘違いかな?
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vbcon/html/vbtsktriggeringmenueventsfortoolbarbuttons.asp

623 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 20:26:18 ]
>>621
まあまあ。こういう輩にそんなこと言ったって
わかんないんだって。分かりやすいプログラムを書ける人が
PGとして高く評価されることにそのうち気付くかなぁ。

624 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 20:57:04 ]
>>621 現場の事わかってない厨か学厨でしょ しょせん
自分でマスかいて、高度な事やってるつもりでも
周りはいい迷惑なんだって
おまえが責任もって最後まで虫取り保守やれっていいたくなる

625 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 21:14:15 ]
やっぱり、バカが集まるところだ。ここは。

626 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 21:28:21 ]
>>624
現場を気取ってるが多分学生だな。
多分本当に現場にいるPGなら後半2行にそのことを
露呈した記述があることにすぐ気付くと思うが。
>>625はそれを指摘してるんだよな。

627 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 21:35:33 ]
一人芝居が上手なスレはここですか?

628 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 21:44:22 ]
>>626
げっ
ばれましたか
さすがです...ショボーン

629 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 22:08:57 ]
>>626
はい。626は私ですよ。
一人芝居は>>627-628ですね。
それじゃ。



630 名前:629 mailto:sage [2005/04/04(月) 22:09:38 ]
あー、アンカーは626じゃなくて628にするべきだったね。
まーどうでもいいけど。

631 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 22:13:44 ]
>>619
数値だけ出して読む側がそれを信じようが信じまいが問題なし
別に何をどう書こうが自由だしw

632 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 22:55:13 ]
>>631
まだ分かってないみたい。信じる信じない以前に
判断を下しようがない、って言ったら分かる?

分かりやすいように、君がやったことを極端な例にしてあげようか?

パフォーマンス測定しました!
VB.NETは1秒、C#では100秒でした。
終わり。

633 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 23:50:52 ]
>>632
まだ分かってないみたい。読み手が判断を下す以前に
何を書こうがどんな書き方をしようが自由だって言ったらわかる?
終わり。

634 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 23:53:12 ]
>>633
それはいいけどその後の君の対応はNG。

635 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 23:55:05 ]
>>633
はいはい。このスレを君の落書き帳として使わせてくださいってことね。
それに対しては「いいよ、通報されない程度にね」としか
言いようがないな。

636 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 23:55:59 ]
>>633
分かりました。あのデータがどんな条件やどんなソースから
得られた数値なのか興味があるのですが、提示して頂けませんか?

637 名前:デフォルトの名無しさん mailto:sage [2005/04/04(月) 23:56:14 ]
>>634
どんな対応をしても自由だしw、NGだと思っているだけだろう

638 名前:デフォルトの名無しさん mailto:sage [2005/04/05(火) 00:03:29 ]
必死になりすぎて恰も別人を装っているかのように思える。
>>635
もし荒らしだと思っているなら、それに反応するのも荒らしだな。
荒らしを助長していることになる。
>>636
めんどくせ

639 名前:デフォルトの名無しさん mailto:sage [2005/04/05(火) 00:17:07 ]
>>638
捏造データ?じゃないですよね。
ソースはもう消してしまったんですか?



640 名前:デフォルトの名無しさん mailto:sage [2005/04/05(火) 00:20:41 ]
>>639
ごめんなさーい、もう消してしまったんですぅーm(_ _)mペコリ

641 名前:デフォルトの名無しさん mailto:sage [2005/04/05(火) 00:24:12 ]
>>640
ふーん

642 名前:デフォルトの名無しさん mailto:sage [2005/04/05(火) 00:26:58 ]
>>641
あきらめてね〜

643 名前:デフォルトの名無しさん mailto:sage [2005/04/05(火) 00:41:21 ]
>>642
ソース見て叩こうと思ったけど無理みたいだから諦めます。

644 名前:デフォルトの名無しさん mailto:sage [2005/04/05(火) 00:42:51 ]
>>642
よっぽど他人には見せられない代物だったんだろうなぁ。

645 名前:デフォルトの名無しさん mailto:sage [2005/04/05(火) 00:50:21 ]
>>643
暇つぶしができると思って期待してたのかな?相手できなくてごめんね
>>644
見せられないのではなく、何度も言っているように見せるのがめんどくさいんだよ。
やっとわかってくれたかな?

646 名前:質問age [2005/04/05(火) 00:57:13 ]
しつもんです!そもそも>>633さんは何が訊きたかったのでつか?

647 名前:デフォルトの名無しさん mailto:sage [2005/04/05(火) 01:01:22 ]
>>646
その何かがわかるまでスレッドの中を何度も繰り返し読んでみよう!
きっと何かがわかってくるはずだよ。

648 名前:646 mailto:sage [2005/04/05(火) 01:13:06 ]

世の中は春休みだという事がわかりますた。。。_| ̄|○

649 名前:デフォルトの名無しさん mailto:sage [2005/04/05(火) 01:14:26 ]
わかるの遅っ



650 名前:最凶VB厨房 mailto:sage [2005/04/05(火) 01:14:47 ]
世の中は春休みだったのか・・・。
俺がいる世界はもしかしてあの世なのか?!
こりゃまいったわぃ

651 名前:デフォルトの名無しさん mailto:sage [2005/04/05(火) 01:23:38 ]
わかるの遅っ

652 名前:デフォルトの名無しさん mailto:sage [2005/04/05(火) 07:07:22 ]
>>645
あれー?削除しちゃったんじゃなかったんだー。
コロコロ変わるねーw

653 名前:デフォルトの名無しさん mailto:sage [2005/04/05(火) 09:09:00 ]
普通に組んでC#の方が速いならC#で作りたいなぁ


654 名前:デフォルトの名無しさん mailto:sage [2005/04/05(火) 09:12:28 ]
普通に組んでC++の方が速いからC++で作るといいよ。

655 名前:デフォルトの名無しさん mailto:sage [2005/04/05(火) 09:19:03 ]
C++は難しいのでやめておきます。

656 名前:デフォルトの名無しさん mailto:sage [2005/04/05(火) 09:36:16 ]
>>652
削除したことどこでも否定してないけどw 頭大丈夫?
まぁ、めんどくさいと言っても削除しちゃったから見せることすらできないけどねw

657 名前:デフォルトの名無しさん [2005/04/05(火) 16:40:23 ]
www.atmarkit.co.jp/fdotnet/winexp/index/index.html
↑サンプルアプリケーションがあったのでちょっと拝見

しかし、こんなもの見て「よし、これやってみよう」なんてプログラマいないよな?
まんど臭い機能つけて後で突っ込み浴びて却下とかなったら、破壊したくなるもんなあ。
Sのプログラマは駄目かと思われ・・受身が一番で常。

ただRAD手法は絶対必要だと思う。んでもって強気にいかないと(仕様変更をあの手この手で防がないと)、納期に間に合いません!

フィックスって言ってたやん・・なんて愚痴は何百回言ったことでしょうか・・

658 名前:デフォルトの名無しさん mailto:sage [2005/04/05(火) 23:54:06 ]
>>656
>>656
>削除したことどこでも否定してない
まさにあなたはそこを突っ込まれたのですよ。
理解してから書くか、理解できてないのならダンマリでよろしく。

659 名前:デフォルトの名無しさん mailto:sage [2005/04/06(水) 00:58:46 ]
そろそろウザいので相手するな。



660 名前:デフォルトの名無しさん mailto:sage [2005/04/06(水) 03:24:21 ]
>>658
いやぁ以前にも書いたけどどんな書き方しようが自由だからね。
そんなに僕ちゃんのおふざけが気に入らなかったかなw

661 名前:デフォルトの名無しさん mailto:sage [2005/04/06(水) 07:11:59 ]
>>659
うん。

662 名前:デフォルトの名無しさん mailto:sage [2005/04/06(水) 11:31:39 ]
あるプロセスが起動中か確認したいのですが
どうのようにすればよいでしょうか?
例えばhoge.exeか起動中かどうかというのを
確認したいです。


663 名前:デフォルトの名無しさん mailto:sage [2005/04/06(水) 11:40:31 ]
System.Diagnostics.Process.GetProcessesByName

664 名前:デフォルトの名無しさん mailto:sage [2005/04/06(水) 11:43:15 ]
>>663
さんくす

665 名前:デフォルトの名無しさん mailto:sage [2005/04/06(水) 15:03:27 ]
>>661
アホだったらいちいち相手しないよ。

666 名前:デフォルトの名無しさん mailto:sage [2005/04/06(水) 16:05:06 ]
WebBrowserコンポーネントで開いたExcelのイベントを取ることは可能だろうか?

667 名前:初歩的な質問なのですが [2005/04/06(水) 16:05:18 ]
初歩的な質問なのですが、vb.netを使ってアプリケーションを作成し、
セットアッププロジェクトでインストーラーを作成しています。

その際に作成した「プロジェクトファイル名\obj\Release」に作成したアプリケーションが出来ますが、
これをセットアッププロジェクトの「アプリケーションフォルダ」にドラックアンドドロップして、作成したアプリケーションを含めてビルドを行うと、依存関係が見つかりませんと出ます。

アプリケーション単体でビルド行った際には出ないのです。
もちろん、必要なCOMなどは参照設定で登録しております。

これは何が問題なのでしょうか?


668 名前:デフォルトの名無しさん [2005/04/06(水) 20:51:32 ]
>>667
理解しようとする意欲がないのに、最初からいきなり複雑なことを
成し遂げようって発想が理解できない。
韓国人のパリパリとかいう主義みたい。

そういう場合はまず手始めにフォームだけの空っぽのアプリのインストーラを
作ってみる。小学生でもわかる定石でしょ。
話はそれから。

669 名前:デフォルトの名無しさん mailto:sage [2005/04/06(水) 22:28:25 ]
年齢を生年月日から求めたいのですが
DateDiffで年の差を求めると月/日が無視されてしまいます。
困りました。



670 名前:デフォルトの名無しさん mailto:sage [2005/04/06(水) 22:37:12 ]
DateTimeのSubtractメソッド、TimeSpanのTotalDaysプロパティ、除算。

671 名前:デフォルトの名無しさん [2005/04/06(水) 22:40:51 ]
>>669はただ「困った」って言ってるだけじゃん。
何も質問してないぞ。

672 名前:デフォルトの名無しさん mailto:sage [2005/04/06(水) 22:42:07 ]
>>670
それって365日と366日で結果が違ったりしませんか?
超てきとー

>>671
(・∀・)ニヤニヤ

673 名前:デフォルトの名無しさん [2005/04/06(水) 23:25:48 ]
VBを始めようと思っているのですが、周りの人はCにしておけといっています。
VBの欠点を教えてください。

674 名前:デフォルトの名無しさん [2005/04/06(水) 23:49:21 ]
>>673
数日前もだれかに言った気がするが・・・
馬鹿に思われるからやめなさい

675 名前:デフォルトの名無しさん mailto:sage [2005/04/07(木) 00:59:11 ]
>>673
早く挫折できる。

676 名前:デフォルトの名無しさん [2005/04/07(木) 11:34:46 ]
以下のようなエラーが出ます。
> 'System.ObjectDisposedException' のハンドルされていない例外が mscorlib.dll で発生しました。
> 追加情報 : 閉じている TextWriter に書き込むことはできません。
エラーが出るのは下のソースで「_WriteText.Flush()」です。
Finalize()でFlush()を呼ぶ前にClose()は呼んでません。
なぜこんなエラーが返るのか検討がつきません。知っている方、ご教授願います。

  Public Class TextOut
   Private _FStream As FileStream
   Private _WriteText As StreamWriter
   Public Sub New()
     _FStream = New FileStream("log.txt", FileMode.Append, FileAccess.Write)
     _WriteText = New StreamWriter(_FStream, Encoding.GetEncoding("Shift_JIS"))
   End Sub
   Protected Overrides Sub Finalize()
     _WriteText.Flush()
     _WriteText.Close()
     _FStream.Flush()
     _FStream.Close()
     _WriteText = Nothing
     _FStream = Nothing
     MyBase.Finalize()
   End Sub
  End Class

677 名前:デフォルトの名無しさん mailto:sage [2005/04/07(木) 13:24:02 ]
.NETでの正規表現の質問はここでいいのでしょうか。

パターンAからパターンBが「最初」に出てきたところまで、
というパターンを作りたいのですがうまく行きません。

pA〇〇〇〇〇pBpA×××pBpA△△△△△△△△pBpA・・・・

↑から pA〜pBまでのセットを取りたいのです。

ここで、 pA.+pB とやると最初から最後まで引っかかってしまいます。

ただ、 pA[^pB]+pB とやれば意図したように動くのですが、
実際にはパターンA、パターンBとももう少し複雑なので
なにかいい方法はないでしょうか。


678 名前:デフォルトの名無しさん mailto:sage [2005/04/07(木) 13:25:30 ]
最短一致は「?」

679 名前:デフォルトの名無しさん mailto:sage [2005/04/07(木) 13:30:19 ]
VB.NETの質問スレだろ?なんでVB否定するヴォケがいるの?ROMってろよ、ゴラァ



680 名前:デフォルトの名無しさん mailto:sage [2005/04/07(木) 14:43:02 ]
>>678
ありがとん
pA.+?pB で思うようにできました。

681 名前:デフォルトの名無しさん mailto:sage [2005/04/07(木) 17:40:37 ]
普段はエラーなど起きないのに、ごく稀に発生するエラーに悩んでおります。
発生するエラーは2種類あります。

System.NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。
at System.Data.Common.Dbnetlib.ConnectionError(HandleRef pConnectionObject, IntPtr& netErr, IntPtr& netMsg, IntPtr& dberr)
at System.Data.SqlClient.TdsParser.ProcessNetlibError(IntPtr errno)
at System.Data.SqlClient.TdsParser.ReadNetlib(Int32 bytesExpected)
at System.Data.SqlClient.TdsParser.ReadBuffer()
at System.Data.SqlClient.TdsParser.ReadByteArray(Byte[] buff, Int32 offset, Int32 len)
at System.Data.SqlClient.TdsParser.ReadEncodingChar(Int32 length, Encoding encoding)
at System.Data.SqlClient.TdsParser.ReadValue(_SqlMetaData md, Int32 length)
at System.Data.SqlClient.TdsParser.ProcessRow(_SqlMetaData[] columns, Object[] buffer, Int32[] map, Boolean useSQLTypes)
at System.Data.SqlClient.SqlDataReader.PrepareRecord(Int32 i)
at System.Data.SqlClient.SqlDataReader.GetValues(Object[] values)
at System.Data.Common.DbEnumerator.MoveNext()
at System.Web.UI.WebControls.Repeater.CreateControlHierarchy(Boolean useDataSource)
at System.Web.UI.WebControls.Repeater.OnDataBinding(EventArgs e)
at System.Web.UI.WebControls.Repeater.DataBind()
at hoge.hogehoge.Button1_ServerClick(Object sender, EventArgs e)
at System.Web.UI.HtmlControls.HtmlInputButton.OnServerClick(EventArgs e)
at System.Web.UI.HtmlControls.HtmlInputButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
at System.Web.UI.Page.ProcessRequestMain()

続く...(本文長すぎって。。。)


682 名前:681 mailto:sage [2005/04/07(木) 17:41:27 ]
...続き

System.InvalidOperationException: データ リーダーが閉じているときに、無効な操作 Read をしようとしました。
at System.Data.SqlClient.SqlDataReader.Read()
at System.Data.Common.DbEnumerator.MoveNext()
at System.Web.UI.WebControls.Repeater.CreateControlHierarchy(Boolean useDataSource)
at System.Web.UI.WebControls.Repeater.OnDataBinding(EventArgs e)
at System.Web.UI.WebControls.Repeater.DataBind()
at hoge.hogehoge.Button1_ServerClick(Object sender, EventArgs e)
at System.Web.UI.HtmlControls.HtmlInputButton.OnServerClick(EventArgs e)
at System.Web.UI.HtmlControls.HtmlInputButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
at System.Web.UI.Page.ProcessRequestMain()

以下、ソース抜粋
Repeater1.DataSource = SqlDataReader1
Repeater1.DataBind() ★ ここで稀にエラーが発生
SqlDataReader1.Close()
SqlConnection1.Close()
SqlConnection1 = Nothing

データベースを検索して結果を表示する、といった簡単なものなのですが、
結果の件数が100件程度だと再現せず、1000件ほどになると稀に発生します。
よい解決案などありましたら、ご教授おねがいいたします。


683 名前:デフォルトの名無しさん mailto:sage [2005/04/07(木) 18:24:18 ]
>>681
Repeater1が何ものか知らないが
DataSourceにReaderをつっこむのではなく
DataTableのDefaultViewを設定してみては?


684 名前:デフォルトの名無しさん mailto:sage [2005/04/07(木) 18:31:49 ]
.netフレームワークのバージョンって
どうやって調べるの?

685 名前:デフォルトの名無しさん mailto:sage [2005/04/07(木) 18:48:52 ]
>>676
_FStreamのファイナライザが既に動いてCloseしてるからだろう。
ttp://www.ascii.co.jp/pb/msdn/article/a09_0003.html
が参考になるかも知れない。

そもそも、どうせFileStreamがGCされた時にFileStreamのファイナライザが動いてフラッシュして閉じるので、
こちらでわざわざファイナライザを実装してCloseさせちゃいけない。

StreamWriterを使うと、デフォルトではStreamWriterがバッファリングしてストリームにすぐには書き込まないので、
書き込み内容が損失するわけだ。StreamWriterのファイナライザはストリームに操作しないから。
確実にはStreamWriter.Closeが喚ばれない場合の解決策としては、
StreamWriterを使わずWriteやWriteLineメソッドを自前で実装してFileStreamに直接書き込むとか、
StreamWriterを使うなら、AutoFlushをTrueにする手もある。

こういう場合はIDisposableを実装させてDisposeメソッドにファイル閉じる動作を書いて、
プログラマにDispose呼出を明示するのがベターなんだけどな。
VB2005でUsingステートメントもサポートされるようになるし。

ちなみに、StreamWriter.Closeは、自動でFlush動作もするので_WriteText.Flushは必要ないし、
基底のストリームも閉じてしまうのでその後の_FStream.Flushとかできない(意味無い)。

686 名前:デフォルトの名無しさん mailto:sage [2005/04/07(木) 19:01:57 ]
>>684
コード上から(実行時に)調べる、というのなら
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/278clrversion/clrversion.html

687 名前:676 mailto:sage [2005/04/07(木) 21:05:29 ]
>>685
レスありがとうございます。凄く×∞参考になりました。m(_ _)m
ついでに、自分のバカさ加減がよ〜くわかりました…
全て685さんの指摘どおりです。
私はVB.NET歴2日の上、JavaやC++(こっちは4年くらいやってる)と同じ
程度の処理が出来ると思ってました(爆)。

StreamWriter.CloseがFileStream.Closeを呼び出すのはいいとして、
Finalize()の呼び出し順序が明確に決まってない事には驚きました。
指摘にあったDisposeの実装で対応するしかなさそうです。
Finalize()を使った「後始末はおまえにまかせる」は無理っぽいですね。
書き込みの精度は、一定のWriteをした直後にFlushするようにします。


StreamWriterとFileStreamの問題は有名なんですね。
しかもStreamWriterのFinalize()が何もしないっては……orz

688 名前:デフォルトの名無しさん mailto:sage [2005/04/08(金) 01:06:57 ]
何かしてくれるとバグに気づきにくい可能性があるからだよ。


689 名前:デフォルトの名無しさん mailto:sage [2005/04/08(金) 03:00:17 ]
>>679
あなたはVBスレでVB万歳なレスだけみていてそれで満足なんですね?
たまには自己否定も必要なんですよ。



690 名前:デフォルトの名無しさん [2005/04/08(金) 05:20:35 ]
VB6からの移行組です。
簡単な通信(チャット)を行うプログラムを作ろうと思います。
Winsockコントロールが標準で無いのでSystem.Net.Socketsを
使う方法を初歩から学習中です。

そこで分からないのは、Winsock.ocxのデータ受信イベント
(DataArrival)の代わりの方法についてです。

WithEvents 付きで System.Net.Sockets.TcpClient を宣言すると
「WithEvents変数はイベントを発生させません」と怒られます。

何か、Eventドリブン式で書く方法は有りますでしょうか?

とりあえず、Threadクラスを使ってループ待ちさせる方法を見つけ
自作イベントのような形では実現できましたが、こっちのスレッド
方式と、Event方式とどちらが一般的でしょうか?

VB6の時にクラスは使ってましたが理解度は低めです。
よろしくお願いいたします。


691 名前:デフォルトの名無しさん mailto:sage [2005/04/08(金) 05:33:58 ]
わざわざイベントで書く必要がないんだが。
送受信を行うNetworkStreamは、データが来るまで自動的にブロッキングしてプログラムの流れを中断させる。
別スレッドでReadさせておけばいい。

692 名前:デフォルトの名無しさん [2005/04/08(金) 06:04:23 ]
>691 レスありがとうございます!それでは現在テストで動いた以下の
スレッド方式でも、悪い方ではないと考えていいでしょうか?
Private Sock1 As New System.Net.Sockets.TcpClient
Private Stream As NetworkStream
Private myThread As Threading.Thread
-----ボタンクリック
Private Sub Button1_Click(〜) Handles Button1.Click
   Sock1.Connect("www.yahoo.co.jp", 80)
   TextBox1.Text = ""
   Stream = Sock1.GetStream()
   Dim ByteSend As Byte() = System.Text.Encoding.ASCII.GetBytes("GET / HTTP/1.0" + vbCrLf + vbCrLf)
   Stream.Write(ByteSend, 0, ByteSend.Length())
   myThread = New Threading.Thread(AddressOf DataArrave)
   myThread.Start()
End Sub
-----自作SUB
Private Sub DataArrave()
   Dim ByteRead(2000) As Byte
   Dim strText As String
   Dim intLength As Integer
   Dim lngRevcnt As Long
   Dim lngRevByt As Long
   Do
     intLength = Stream.Read(ByteRead, 0, ByteRead.Length())
     lngRevcnt += 1 : lngRevByt += CLng(intLength)
     Me.Text = "受信パケット数:" & lngRevcnt & " (" & lngRevByt & " byte)"
     strText += System.Text.Encoding.ASCII.GetString(ByteRead, 0, intLength)
     If intLength < 1 Then Exit Do
     Sock1.Close()
   Loop
   TextBox1.Text = strText
End Sub

693 名前:690=692 [2005/04/08(金) 06:08:49 ]
↑すみません、レスの改行制限で見づらくなりました。
とりあえずの確認用なので、単に、HTTP-GETを送信して
自作スレッドで受信させているだけのショボプログラムです。

とりあえずこんな感じでも、アリでしょうか?


694 名前:デフォルトの名無しさん mailto:sage [2005/04/08(金) 06:21:05 ]
>>692
Readがパケットごとに実行される保証はどこにもないはずだがね。

> strText += System.Text.Encoding.ASCII.GetString(ByteRead, 0, intLength)

まあASCIIだからいいけど、shift_jisとかだとデコードに失敗する可能性があるよ。
最後の1バイトが2バイト文字の1バイト目だった場合に。
受信中はMemoryStreamに蓄えて、受信が完了してから一気にGetStringしたほうがいい。

> Do
(略)
>   If intLength < 1 Then Exit Do
>   Sock1.Close()
> Loop

このSock1.Close()はコピペミスかな?
Loopの外に出さなきゃいけないね。

> Me.Text = "受信パケット数:" & lngRevcnt & " (" & lngRevByt & " byte)"
> TextBox1.Text = strText

やっかいなのはこいつだ。
別スレッドからコントロールを操作しちゃいけない。
Invoke/BeginInvokeを使う必要がある。
ttp://dobon.net/vb/melma/index.html
の19から26、とくに25を良く読んでマルチスレッドに関する問題を良く把握してくれ。

695 名前:690=692 [2005/04/08(金) 06:33:44 ]
>694
うぉ!ありがとうございます!

1Read=1パケとは限らないのですね。分かりました!
確かに、逐次デコードはまずいですね。了解です。

> このSock1.Close()はコピペミスかな?
> Loopの外に出さなきゃいけないね。

そうなんです。実は少し悩んでました。
手持ちの書籍「VB..net逆引き大全500」の初歩サンプルに
こういった記述があったもんで丸写ししながら疑問に感じてました。
試してみたらコレでも動くんです。
今試したら外へ出しても動きますね。理屈通り外へ出します!

> Invoke/BeginInvokeを使う必要がある。

了解です。教えていただいた所を良く読んで勉強します!
とても丁寧に分かり易いレスを本当にありがとうございました!


696 名前:デフォルトの名無しさん mailto:sage [2005/04/08(金) 07:12:06 ]
>>689
理由が書かれていませんね。

697 名前:デフォルトの名無しさん mailto:sage [2005/04/08(金) 08:29:05 ]
>>686
遅くなりましたがありがとうございました。

698 名前:デフォルトの名無しさん [2005/04/08(金) 13:11:00 ]
comboboxでデータソース指定だと、表示(DisplayMember)と値(ValueMember)を指定できるけど、
自分で項目を設定した場合は、そういった指定はできないものなのですか?

699 名前:デフォルトの名無しさん mailto:sage [2005/04/08(金) 13:14:27 ]
どういう効果を求めているの?



700 名前:デフォルトの名無しさん [2005/04/08(金) 13:18:05 ]
表示は

東京
大阪
名古屋
・・・(略)

などと表示して、内部の値としては

34
21
15
・・・(略)

などように、取り出せるようにしたいです。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<240KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef