1 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 11:19:36 ] 前スレVB.NET質問スレ (Part19) pc11.2ch.net/test/read.cgi/tech/1168585041/
83 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 22:25:02 ] DataGridでマウスでドラッグして行を選択するのだけど、mousemoveイベントの 間隔が遅すぎてまだらにしか選択されないんです(ゆっくりなら全部選択される) この間隔ってどこかで設定とか出来る?
84 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 22:29:50 ] もう一つDataGrid そうやってドラッグして選択していった時に、ドラッグしたまま下にはみ出すと スクロールしながら次々選択されてくってのは何イベント使えばいい? mouseleaveだと上に抜けたか下に抜けたか分からないし…
85 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 22:30:58 ] それ本当にDataGridか?
86 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 22:44:34 ] どぼん参考にアクセスのlistboxみたいな動作するようにしてるけど (rowheader無しで1行全部選択される)それ以外は普通のdatagridだけど
87 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 23:12:09 ] 小出しにされてもなあ・・なぞなぞじゃないんだし とりあえず手元に現物が無いから、そっちで原因を洗うしかないんじゃないか?
88 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 09:05:33 ] >>86 DataGridViewをフォームに貼り付けて こんな感じはダメ? Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim a As New DataTable("test") a.Columns.Add(New DataColumn("1")) a.Columns.Add(New DataColumn("2")) a.Columns.Add(New DataColumn("3")) a.Columns.Add(New DataColumn("4")) For i As Integer = 0 To 49 Dim r1 As DataRow = a.NewRow r1(0) = "a" r1(1) = "b" r1(2) = "c" r1(3) = "d" a.Rows.Add(r1) Next DataGridView1.DataSource = a DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect End Sub
89 名前:デフォルトの名無しさん [2007/03/13(火) 10:58:06 ] 質問があります。 ActiveXのレジストリ登録についてなのですが、 ActiveXを使うには、DLLをレジストリ登録すると思います。 そのとき、 C:\test01\hoge.dll C:\test02\hoge.dll とテストバージョンを2つ作ったとして、両方ともレジストリ登録したとしたら、 どちらが適用されるのでしょうか? regsvr32 /s C:\test01\hoge.dll regsvr32 /s C:\test02\hoge.dll ↓ piyo.exe また、regeditでいちいち検索せずに、hoge.dllが今どういう登録がされているのか を調べるとしたら、どうすれば良いのでしょうか?
90 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 11:09:51 ] >>89 VB.NETで作ったCOMならregsvr32ではなく、regasmを使え。 普通のActiveXの話ならすれ違いっぽいが一応答えておこう。 基本は後勝ち。OleView.exeで調べる。
91 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 11:48:22 ] >>90 「後勝ち」 確認しました。ありがとうございます。 regsvr32 /s C:\test01\hoge.dll ↓ regsvr32 /s C:\test02\hoge.dll とやったら、C:\test01\hoge.dll が C:\test02\hoge.dll で上書きされる ようですね。
92 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 19:35:29 ] 確か1とか2とか憑かなかったっけ?
93 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 19:50:03 ] COMはGUIDとか使ってそれなりに複雑な固体識別してたはずだよね。 っていうか、上書きって意味わからんw
94 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 20:43:29 ] 全く同じCLSID, ProgID持ってるんだろ
95 名前:デフォルトの名無しさん [2007/03/14(水) 11:00:29 ] 質問です! 下のようなCSVファイルがあるとします。だいたい1000行くらいのログです。 aaa,a,aaa,01,01 bbb,b,bbb,01,02 ccc,c,ccc,02,01 ccc,c,ccc,02,02 ・・・・・ このCSVにおいて例えば左から4番目のカラムが04のレコードのレコード数を取得したいのです。 既存アプリが吐くログなのでカラム名もないしSQLが使えるかも不明です。 VBSかVB.net2003で上記プログラムを作成したいのですが適切なロジックが浮かびません。 Do〜Loopで一行ずつ読み込んでカンマでセパレートして配列変数に代入し、 検索条件にヒットしたらカウンタを1UPしていく方法くらいしか思い浮かばないのですが、 ほかにもっとシンプルな方法をご存知の方は教えてください。
96 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 11:03:25 ] >>95 その方法でいいじゃん。正規表現とか覚えてる間に作れちゃうよ。
97 名前:デフォルトの名無しさん [2007/03/14(水) 12:59:59 ] DataSetに展開してSELECTする手もあるな
98 名前:デフォルトの名無しさん [2007/03/14(水) 13:00:32 ] 連投スマン >>97 DataTableだわw
99 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 13:08:22 ] >>95 ADO.NETでCSV読ませれば? そんでSQLでやるべし
100 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 13:16:17 ] ODBC Text DriverはMDACにまだ入ってるのかな?そろそろレガシーな気もする。 ReadLineしてString.Splitで十分な気もするが、 VB.NET的にはMicrosoft.VisualBasic.FileIO.TextFieldParserを使うのが推奨だろう。
101 名前:デフォルトの名無しさん [2007/03/14(水) 14:34:24 ] VB.NETの型付データセットでデータ取得する時にNULLを扱いたいがエラーにはしたくない Nothing返すようにしてるけど・・・なんとなく外道なのかな? 2005ならNullable.型 で返すんだけど2003だと如何するのがオヌヌメなんだろう・・・
102 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 16:07:32 ] 1000行程度なら、オレならエクセルで読み込んで処理するが…どうしてもVBなの?
103 名前:デフォルトの名無しさん [2007/03/14(水) 16:11:53 ] すみませんが、こちらでもよろしければ教えてください。よろしくです。 Windows.Form上で使うControlクラスを継承して新しいコントロールを作成し、 そのBaseクラスのプロパティすべてを、一回の属性設定だけでプロパティウインドウに 表示されなくすることは可能でしょうか。 目的はアプリケーションに関係のない項目はプロパティウインドウに表示させず、 関係のあるごく少わずかの項目だけを表示させたいからですが、このためには 一つ一つのプロパティを継承作成して全部そこにAttribuetes設定しないといけないでしょうか? できれば、既存の項目は全部まとめて表示させないようにしてから、自分で追加した プロパティだけを表示させるようにしたいのですが、こうしたことは可能でしょうか? (本件はC#スレッドでもお聞きしていましたがお答えがほしくこちらでも質問させて 戴きました、すみませんよろしくお願いします)
104 名前:95 mailto:sage [2007/03/14(水) 16:50:45 ] >>96-100 皆さん、様々なアドバイスありがとうございます。 皆さんのヒントを元にヘルプやwebページを漁ってみましたが、大変参考になりました。 まずは ttp://dobon.net/vb/dotnet/file/readcsvfile.html あたりのページを参考に、やったことのない方法でやってみようと思います。 >>102 オフィス製品を導入していないサーバーで動かすため、アプリかスクリプトを作るしかありません。 バッチファイルかなにかで済ませられればそれに越したことはないのですが・・・
105 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 18:00:33 ] VB.NETをまだ勉強していないのですが、よろしければ質問させてください 現在C、C++、WIN32APIを用いてウィンドウアプリを作成しているのですが VB.NETでUIを作成し、Cでイベントハンドラのソースを書くことは可能なのでしょうか? また、その場合CとWIN32のみで作成した場合と処理速度に差がでるのでしょうか? (現在作っているプログラムはリアルタイム処理なため、処理速度が重要) 理由はデータベース関連の書籍やサイトがほとんどVB、C#、perl、JAVAなどのため MFCでUIとデータベースを実装するよりも、VB.NETに移行した方がいいのかと思ったからです C++/CLIなるものがあるようなのですが、何分C以外の言語はほとんど無知なため よろしければご教授願います
106 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 18:07:23 ] >>95 set n=0 for /f "delims=, tokens=4" %%0 in (hoge.csv) do if %%0=04 set /a n+=1 echo %n%
107 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 18:33:18 ] >>105 結局ナニが知りたいのかよく読み取れないが、 とりあえずPInvokeでググってみたらどうかな cで作ったdll内の関数を呼び出せるか、という意味ならそれは可能。
108 名前:105 mailto:sage [2007/03/14(水) 19:31:17 ] >>107 わかりにくい文章ですいません VBを使ってウィンドウを作成し、自分でCで作った関数を呼び出して使えるのか ということが知りたかったんです どうやら可能なようですね PInvokeもかなり参考になりました ありがとうございました よろしければ、VBでCを呼び出した場合と、WIN32+Cの場合で処理速度に 差がでるか教えていただければ幸いです wikipediaのVBの概要に 「ただし、実行速度はC/C++で記述したネイティブプログラムに比べ 10倍から20倍遅いと言われている。」 と書いてあったもので、あまりにも処理速度に差がでるならば使えないので・・・ これはCで書いた関数をVBで書き直した場合、これほどの差がでるということなのでしょうか?
109 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 19:55:57 ] >>106 if %%0=04 ↓ if %%0==04
110 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 20:31:54 ] >>108 日本のwikipediaなんか話半分に聞いとかなきゃダメでしょw それたぶんVB6以前の話だと思うし。 VB6だってメモリを直接操作できないことによるオーバーラップがネックになるような ごく一部の処理(特定の文字列操作)以外はそんな遅くなる理由がないし。 っていうか、あんたの用途に適合的かどうかはあんた自身で試すしかないでしょ。
111 名前:105 mailto:sage [2007/03/14(水) 20:39:37 ] >>108 wikipediaを信頼しすぎたようですね 大丈夫なようで安心しました 時間はかかると思いますが、自分で試して頑張ってみることにします ありがとうございました
112 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 20:41:20 ] アンカーミス・・・>>110 でした スレ汚し失礼
113 名前:デフォルトの名無しさん [2007/03/14(水) 21:47:44 ] 10万行くらいあるテキストファイル(1行100文字前後)の最後の100行を 読みたいのだけれどもっとも高速な方法を教えてくれ。
114 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 22:01:17 ] 頭から読むしかない。 文字列配列を要素100個分用意して放り込んでいき、 最後まで埋まったら頭から上書きしていく。
115 名前:デフォルトの名無しさん [2007/03/14(水) 22:07:49 ] >114 >頭から読むしかない。 げげ、ほんまかいな。困った。 じゃあ、逆にファイルを書き出すときに末尾に追加するのではなくて、 先頭に行を追加することはできるかい?それが出来れば 読むときは頭から100行読めばいいので。どう?
116 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 22:12:02 ] そんな馬鹿なw 天然無脳(つまり114のことだが)だって1万ページある本の最後の1000行を 書き出すのに巻頭から全部目を通さないだろう
117 名前:デフォルトの名無しさん [2007/03/14(水) 22:21:19 ] >116 その方法を教えてくれ。たのむ。
118 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 22:25:14 ] ケツからファイルポインタをデクリメントしていって1000個目の改行コード探すだけじゃん。 そこから先は普通にテキストとして読めばいい。
119 名前:デフォルトの名無しさん [2007/03/14(水) 22:32:41 ] >118 サンプルコードを教えてくれ。たのむ。俺は、ファイルポインタなんて 使った経験がない。 StreamReaderでファイルを開いてReadLine() で一行ずつなら読める。
120 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 22:35:27 ] 氏ねよ
121 名前:デフォルトの名無しさん [2007/03/14(水) 22:39:37 ] >>119 FileStreamクラスを使うんじゃよ
122 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 22:43:56 ] >>113 >>119 ってもしかしてテキストファイルなら、TextBox系でLoadFileしておいてTextを String変数に代入してLength目から逆追いするってのと同じじゃないだろうか。 それなら直ぐ書けるのじゃないだろうか。 って俺はとてもヒマないからやってはあげはしないがw
123 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 22:45:37 ] あ、ただTextBoxBaseは最大文字数に制限あったっけ??
124 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 22:49:38 ] >>122 ,123は論外
125 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 23:18:39 ] プログラム始めてから数ヶ月の俺にも出来たぜw
126 名前:デフォルトの名無しさん [2007/03/14(水) 23:24:16 ] >125 それを俺に教えてくれ。たのむ。
127 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 23:36:37 ] >>126 Dim a As New IO.FileStream("C:\a.txt", IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.None) Dim count As Integer Dim Bytes(a.Length - 1) As Byte For I As Integer = a.Length - 2 To 0 Step -1 a.Position = I If a.ReadByte() = 13 And a.ReadByte() = 10 Then count += 1 If count = 1000 Then a.Read(Bytes, 0, a.Length - I) TextBox1.Text = System.Text.Encoding.GetEncoding("Shift-jis").GetString(Bytes) Exit For End If End If Next a.Close() エンコードはシフトJIS 勘で作ったから保障はしないよ
128 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 23:44:13 ] 色んな物がメチャクチャだなぁ
129 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 23:50:53 ] >Dim Bytes(a.Length - 1) As Byte これで台無しだな
130 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 23:58:43 ] >>126 だからFileStreamクラスを調べろっつってんだろがボケ!!! でもSeekとかPositionの性能が本当に良いかどうかは知らんよ。
131 名前:デフォルトの名無しさん [2007/03/15(木) 00:01:41 ] >127 おおーーー、超サンキュウ! さっそく試してみるわ。 >130 >ボケ だから質問してるんだよ。俺に優しく教えろ!
132 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 00:06:09 ] だから悩んだり試したりする前にMSDNに目を通せと(ry
133 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 01:02:05 ] >>130 はツンデレ
134 名前:デフォルトの名無しさん [2007/03/15(木) 05:04:45 ] フォーム上にお絵かきするソフトで下記の例外がまれに発生するんだけど、 なんのことやらさっぱり分からん。 「InvalidOperationException:バッファ操作が現在進行中であるため、BufferedGraphicsContext を消去できません」 作り方が悪いのか? どういう場合に発生する例外なのか、VBプロフェッショナル達よ、教えてくれ。
135 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 08:09:55 ] 頭が悪いんだよ、きっと。 いや、確実に。 作り方が悪いのか?、だと? お前さん以外にそういうトラブルを申し立てている人間がいるのかよw
136 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 08:15:47 ] >>127 そいつのベンチマークが見たいな。
137 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 09:51:10 ] >>125 こんなのでどうか Public Function ReadTailLines(ByVal filename As String, ByVal lineCount As Integer) Dim sep() As String = {vbCrLf} Using ifs As IO.FileStream = IO.File.OpenRead(filename) Dim allBuf As New List(Of Byte) Dim len As Integer = lineCount * 100 Dim pos As Long = ifs.Length Dim lines() As String Do pos -= len If pos < 0 Then len += pos pos = 0 End If Dim tmpBuf(len) As Byte ifs.Seek(pos, IO.SeekOrigin.Begin) ifs.Read(tmpBuf, 0, len) allBuf.InsertRange(0, tmpBuf) lines = Text.Encoding.Default.GetString(allBuf.ToArray(), 0, allBuf.Count).Split(sep, StringSplitOptions.None) Loop While pos > 0 And lines.Length < lineCount (続く)
138 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 09:52:07 ] If lines.Length <= lineCount Then Return lines Else Dim ret(lineCount - 1) As String Array.Copy(lines, lines.Length - lineCount, ret, 0, lineCount) Return ret End If End Using End Function 初めてVB.NETでプログラム組んだのでちょいと汚いがな
139 名前:137 mailto:sage [2007/03/15(木) 09:52:57 ] >>113 の間違いだ。すまん
140 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 12:22:10 ] >>134 どんな時にその例外が投げられるかはMSDN見れ。 なんで、もしくはどこで、出てるのかは お前さんにしかわからない。 とりあえずコード上での発生箇所を探るしかないとおもう
141 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 12:26:42 ] 例外発生ネタは発生個所を晒してもらわないことには回答のしようがないんだよな
142 名前:デフォルトの名無しさん [2007/03/15(木) 12:50:39 ] 134だけど、例外の発生箇所は下記のとおりだよ。 場所 System.Drawing.BufferedGraphicsContext.Dispose(Boolean disposing) 場所 System.Drawing.BufferedGraphicsContext.Dispose() 場所 System.Drawing.BufferedGraphicsContext.AllocBufferInTempManager(Graphics targetGraphics, IntPtr targetDC, Rectangle targetRectangle) 場所 System.Drawing.BufferedGraphicsContext.AllocBuffer(Graphics targetGraphics, IntPtr targetDC, Rectangle targetRectangle) 場所 System.Drawing.BufferedGraphicsContext.Allocate(IntPtr targetDC, Rectangle targetRectangle) 場所 System.Windows.Forms.Control.WmPaint(Message& m) 場所 System.Windows.Forms.Control.WndProc(Message& m) 場所 System.Windows.Forms.ButtonBase.WndProc(Message& m) 場所 System.Windows.Forms.Button.WndProc(Message& m) 場所 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 場所 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 場所 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 自分の作ったコード内ではないので、困ってるんだよ。
143 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 12:54:43 ] そんな内部のことはどうでもいいから最後に実行された自分のコードを確認してくれ
144 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 13:56:01 ] >>142 > 自分の作ったコード内ではないので、困ってるんだよ。 俺たちも自分の作ったコード内じゃないことの上にソースすらないからどうしようもないんよ(・ω・)
145 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 14:14:50 ] >>144 ソースがないと直しようがないじゃないか・・・ なんか ちらつき防止のダブルバッファの使い方を 間違えたんじゃないかと思うんだが? どうなの、詳しい人? それと、思い出したんだが.VisualStudioに逆アセンブラがついてた気がする。 難読化されていなかったらソース解析できる可能性があるよ。
146 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 14:16:38 ] ごめん>>144 と>>142 が同一人物だと勘違いした。OTZ
147 名前:デフォルトの名無しさん [2007/03/15(木) 14:49:56 ] >137 誰かこれをVB.NET2003に翻訳してくれ。たのむ。
148 名前:デフォルトの名無しさん [2007/03/15(木) 16:47:19 ] VB.netを使って、サーバーやサイト上のデータ(htmlとかtxtとか)をダウンロードし、 PC内にためこんでデータベース化するソフトを作りたいんですが、 どういう機能を使えばいいのかわかりません。 どういう機能を使えばweb上のデータをDLできるのでしょうか?ADO?ASP? また、それを学ぶのにお勧めの本などありましたら教えていただけると幸いです<(_ _)>
149 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 18:12:11 ] >>148 MSDN
150 名前:デフォルトの名無しさん [2007/03/15(木) 18:43:47 ] VB.NETで作成したEXEファイルを自動的に配布するツールとかないですかね? クライアントはIEが前提で ノータッチデプロイメントでいいやって思ってたら、社外からのインターネットアクセスはTAMってやつが邪魔するのよ
151 名前:デフォルトの名無しさん [2007/03/15(木) 19:00:29 ] んーーーーーいろいろ考えたけど IISにローカルのEXEファイルとサーバサイドのファイル更新日時比較するスクリプト仕込んだポータルサイトを置いといて そのスクリプトでFTPダウンロードする方式しか思いつかんな でもかっこ悪いよなこんなやり方 セキュリティ警告のダイアログがウザそうだし
152 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 19:11:05 ] フロッピーで郵送
153 名前:デフォルトの名無しさん [2007/03/16(金) 00:00:19 ] if x < 1e10 then って書いたら、勝手に if x < 10000000000 then ってなるのだが、ゼロが並んでいると分かりにくいので、1e10のまま にしたいのだが、方法はあるか?
154 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 00:22:53 ] VBって16進も勝手に整形するよね。もうアホかと。 Const tenBillion as Integer = 1000000000 とか、 if x < 10^10 then ぐらいか、手の打ち所は?
155 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 00:31:47 ] >>153 自動整形機能を切るのはダメ?
156 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 00:40:54 ] Int64.Parse( "1e+10", NumberStyles.AllowExponent ) ww
157 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 00:49:55 ] >>137 それだと、lines.Length=lineCountのとき、戻り値の最初の行が途中からにならないか。
158 名前:デフォルトの名無しさん [2007/03/16(金) 04:51:37 ] 134だよ。 ソースを提示したいけど、サイズがでか過ぎてムリだよ。 ミニマムコードを示せればいいんだけど。。。 とりあえず、情報を探してみたけど、 forums.microsoft.com/MSDN/ShowPost.aspx?PostID=200483&SiteID=1 www.codeproject.com/cs/samples/swarmscreensaver.asp?df=100&forumid=185924&exp=0&fr=26&select=1139791 似た現象はあるようだけど、解決策はかいてなかった。 下のは、Graphics.Flushを呼べと書いてあるけど、効果は不明。 う〜ん、はまった。。。
159 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 10:09:26 ] VB.NET2003でソフトを動作させていると IOExceptionが発生し、内容は このコマンドを処理するのに必要な記憶域をサーバーで確保できません こんなエラーが時々出る様子 やっている処理は以下のようなもの(普通にありえないんだが別会社のソフトの関係で仕方なくこうなっている) OSはすべてXPのSP2 ウィルスバスターインスコ済み 一定間隔(処理完了から次の処理開始までが10秒ほど) PC2〜10からPC1にある大量のファイル(10000ほどある時もある)を全てなめて計算しているんだが このときに出ている模様 で、検索してみるとサービスで使用しているスタック領域が不足しているので(XPのデフォは15)、これを現在の値から引き上げてやる模様 これが不足する理由ってのがよくわからないけど、他の人は単純に20とか30にまで引き上げてやれば解決しているみたい 外部から共有フォルダに接続してガリガリ読み込むと単純にネットワークサービスが使うメモリが不足するって事なのかな? あと、これは・・・PC1に対して行うのかPC2〜10に対して行うんだろうか・・・ PC1だとは思うけどレジストリなのでおいそれと変えたくない予感 もし、何か知ってる人居たら教えてくれないか?
160 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 10:42:42 ] >>159 その質問に答えられるのはエスパーかペテン師ぐらいだろう。 VB.NET2003でどんなソフトを作ってんのよ。WinFormアプリかサービスか、 通信は共有フォルダなのか独自にやってるのかはっきりしろ。
161 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 10:54:54 ] >>160 ごめ、説明不足 WinFormアプリで PC1の共有フォルダを介してPC1のファイルを PC2〜10のWinFormアプリ各々がチェックしに行ってる状態 PC1のレジストリにはIRPStackSizeの項目は設定されていない また、パフォーマンスの詳細設定で パフォーマンスの優先はプログラム メモリ使用量はプログラム なぜか仮想メモリは370〜700固定 IRPStackSizeの変更後の値をネットで調べると15が多いようだが マージンとってそれよりも大きな値(20〜30とか)に設定しても大丈夫なのかな? 出来れば設定値の基準値が知りたいところではあるけれど・・・ また、PC1では基本的に操作しないのでパフォーマンス設定も サーバOSのデフォのように変えてやったほうがいいんだろうか? PC1の大まかなスペックはP4 2.8Gでメモリ512M ん〜・・・説明へたでゴメ
162 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 11:00:38 ] >>148 Webサービスでがんばれ
163 名前:デフォルトの名無しさん [2007/03/16(金) 12:45:40 ] TextBoxのMaxLengthプロパティってディフォルトで32767文字もあるけれど、 10文字で十分なのだけれど、この値が大きくても小さくても、プログラム 起動してタスクマネジャでメモリ使用量比べても、余り違わないのだけれど、 これはどういうこと?1000個のTextBoxでテストしてみたが良く分からない。
164 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 12:48:18 ] 入力を制限しているだけでそれ以上の意味はない
165 名前:デフォルトの名無しさん [2007/03/16(金) 12:55:23 ] >164 知らんかった。39!
166 名前:デフォルトの名無しさん [2007/03/16(金) 13:41:02 ] 馬鹿のイメージでは、メモリアロケーションしてるんかい? きょうびの高級言語、そんなにせこせこしてねーよ。
167 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 15:04:28 ] 意味が分からない
168 名前:デフォルトの名無しさん [2007/03/16(金) 19:06:31 ] 質問、Excelなんかが公開してるCOMオートメーションをVB.NETから使う時なんですが。 Excel側のイベントでチェックボックスのチェック状態を変更すると、以下の例外が出ます。 System.Reflection.TargetInvocationException' の初回例外が mscorlib.dll で発生しました。 COMのイベント内で自アプリのフォーム上のコントロールなんかを操作ってどうやったらいいでしょう。 とりあえずExcel側で新しいブックが作成された時のイベント(NewWorkbook)を使ってみたサンプルが 以下です。 Public Class Form1 Private WithEvents m_objExcel As Excel.Application Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load m_objExcel = New Excel.Application m_objExcel.Visible = True CheckBox1.Checked = False End Sub Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed m_objExcel = Nothing End Sub Private Sub m_objExcel_NewWorkbook(ByVal Wb As Excel.Workbook) Handles m_objExcel.NewWorkbook CheckBox1.Focus() CheckBox1.Checked = True End Sub End Class VB6だと動きますが、やっぱりVB.NETだとお作法が違いますよね
169 名前:デフォルトの名無しさん mailto:sage [2007/03/16(金) 20:19:54 ] ワロタ
170 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 21:18:29 ] おまえらって賢いな
171 名前:168 mailto:sage [2007/03/18(日) 01:11:07 ] 解決しました .NET Fremawork1.1のC#しか扱ったことなかったのですが、2.0以降ではサブスレッドから Windowのコントロールにアクセスすると例外が起こるんですね。 1.1の時はたまたま動いていたと。 orz ちなみにInvoke()呼び出しと、m_objExcelの操作をサブスレッドで実行するように変更したら 動くようになりました。 めったに.NETのC#もVBも使わないんで結構忘れますね。 あと書き忘れてましたが VisualStudio2005使ってます。(最近買いました)
172 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 01:19:03 ] >>171 ついでにCOM相互運用とかも見とくといいんでない?
173 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 01:22:41 ] ttp://jeanne.wankuma.com/tips/programing/releasecom.html こんな開放ってやっぱり必要なの?
174 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 01:25:39 ] 自分しか使わないもんなら不要。 それで困らなければ不要。 立ち上げてすぐ落とすようなもんなら大抵不要。 そうでなければ必須。
175 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 01:26:36 ] >>174 thx
176 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 01:28:38 ] >>172 ちょうどHELPでそこ読みながらやってました でも.NETメインじゃないんで熟読するの辛いですね >>173 やらないとアプリ終了時に例外が出ますね でも、やらなくてもCOMのローカルサーバーはちゃんと終了するんで 参照カウントはデクリメント(Release)されてるのかも
177 名前:デフォルトの名無しさん [2007/03/18(日) 12:09:49 ] >>173 やっとかないアンマネージドリソースはフレームワークが勝手に開放するような仕組みもって無いんで解放できないんじゃ・・・? というわけで仕方なくCOM使う場合は必ず使ってる ただ、ラッパクラスAをさらにラップしたクラスB作ったら、Bの解放のタイミングでフレームワークがCOMオブジェクトリリースしてくれないかな? とか淡い期待抱いてるけど
178 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 12:21:01 ] >>173 使うことが推奨だが、 >COM オブジェクトを扱う場合は、参照の解放を常に意識する必要があります。 >使用した COM オブジェクトの参照カウントが、正しくデクリメントされていないと「メモリ リーク」を起こします。 は明らかな間違い。いい加減なおして欲しいよ。
179 名前:デフォルトの名無しさん [2007/03/18(日) 12:35:03 ] >>178 何が間違ってんだ、とぼけたこと抜かしてんなよボケ
180 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 12:36:46 ] >>178 ”メモリリーク”を何に直せばいいの?
181 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 13:03:03 ] 微妙な問題ではあるが、MSDNフォーラムのこの話題が参考になりそう。 forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=748277&SiteID=7 COMの参照カウンタはRCWが管理している。 ReleaseComObjectはCOMの参照カウンタそのものではなくRCWの参照カウンタを管理するもの。 RCWの参照ポインタがゼロのなるかGCされればCOMの参照カウンタはデクリメントされる。 RCWはReleaseComObjectで開放すべきであり、GCによる開放はフェイルセーフ的なものと考えるべき。
182 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 13:30:27 ] >>180 >COM オブジェクトを扱う場合は、参照の解放を常に意識する必要があります。 COM オブジェクトを扱う場合は、参照の解放を意識する必要があります。 >使用した COM オブジェクトの参照カウントが、正しくデクリメントされていないと「メモリ リーク」を起こします。 使用したRCWの参照カウントが正しくデクリメントされていないと期待するタイミングでCOM オブジェクトが開放されません。
183 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 13:32:24 ] >>182 あらゆる意味で不完全燃焼だ