1 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 11:19:36 ] 前スレVB.NET質問スレ (Part19) pc11.2ch.net/test/read.cgi/tech/1168585041/
191 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 17:20:00 ] アウトプロセスサーバなCOMでプロセス起動するようなやつだと 解放しないとプロセスが残るやん メモリリークどころじゃないやん その時点でアウトやん
192 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 17:22:07 ] >>190 循環参照とかにつかうんよ >>191 参照カウントをデクリメントするのと、「解放」するのは全く別物
193 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 17:24:48 ] 循環参照でもそれらが孤立してたらGCされるだろ
194 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 17:27:18 ] >>193 .NETはね VBは参照カウントだから無理
195 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 17:39:01 ] 以下VB6の話。スレ違いなのでこれくらいにしておく。 「別の処理」のときにObjを確実に終わらせいたいときはNothingの代入は意味がある。 Sub XX Dim Obj As New ActiveX.Hoge ' いろいろな処理 Set Obj = Nothing ' ここで参照が0になったら即開放される。ここはVB.NETと異なる。 ' 別の処理 End Sub Objはローカルに宣言された変数だからEnd Sub時点でObjは消失してNothingの代入相当の処理 つまり参照カウンタの減算は行われる。このため「別の処理」が存在しないときにNothingの代入は意味がない。
196 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 17:39:55 ] COM使うの止めればいいじゃん。特にサーバでは。
197 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 17:41:26 ] >>196 サーバー用途だとエンタープライズサービスがもろCOM+だからねぇ
198 名前:デフォルトの名無しさん [2007/03/18(日) 23:17:22 ] しかし、これからはComは使わないだろ FW1.1とかでAPI使わずにVB6のMSCOMM使ってる連中が多かったから FW2.0でCOMM通信のコンポーネント追加したんだろう DataGrid使いづらいからってMSFLEXGRID使ってた連中もいたし それでDataGridView追加したんだろうけどなぁ… すべてはCOMから移行していくんだよ全て
199 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 23:28:50 ] とはいえ、マイクロソフトの主要プロダクトはほとんどCOMじゃないか。
200 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 23:34:01 ] >>198 FWってFrameworkのことか? 普通はFxと略すが
201 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 23:37:47 ] Fxは.NET Framework 3.0(旧称WinFX)のことだと誤解されそう
202 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 23:39:29 ] >>200 うはw初めて知った。 それって公式な略称なんですか?
203 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 23:39:53 ] マイクロソフトの出す資料には.NET Fxと書いてある。
204 名前:デフォルトの名無しさん [2007/03/18(日) 23:40:14 ] >>200 FXは俺も3.0とオモタw そういえばみんなフレームワークなんて呼んでるんだろうな? 俺は普通にフレームワーク2.0とかの書き方なんだが略し方とかあるのか? VisualStudio2005=VS2005みたいに
205 名前:デフォルトの名無しさん [2007/03/18(日) 23:41:16 ] Clipboard.SetDataObject(Me.PictureBox.Image, True) で、クリップボードにコピーしようとしたら、10回に8回くらいは、以下のエラーが出るんだけれど 何でかな? System.Runtime.InteropServices.ExternalException: 要求されたクリップボード操作が失敗しました。 at System.Windows.Forms.Clipboard.SetDataObject(Object data, Boolean copy)
206 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 23:46:05 ] >>205 他所のアプリがクリップボードをロックしてる時にでもエラーになってんじゃね?
207 名前:デフォルトの名無しさん [2007/03/18(日) 23:50:34 ] >206 サンキュウ。うーん、でもね、他のアプリは確かに沢山動いているけれど、 クリップボードをロックしているはずはないのだけれど。 例えば、このエラーが出たあとPaintを起動してクリップボード使っても 何も問題なく使える。うーん、おかしい。
208 名前:デフォルトの名無しさん [2007/03/18(日) 23:53:12 ] その前後のプログラムのソース見ないといまいちわからんかもしれんなぁ・・・ なにやってんだ? 俺はクリップボード問題なさそうなんだが
209 名前:デフォルトの名無しさん [2007/03/19(月) 00:05:22 ] プログラムはFormを3つ開いて、Form3のPictureBoxに絵を描いて Buttonを押したらその絵をクリップボードにコピーするという簡単なもの。 このサンプルをそのまま使っている。 ttp://www.bcap.co.jp/hanafusa/dotnet/zu02.htm#no4 プログラムの中には、スレッドを使って別の処理を並行してやらせるようなルーチンも あるのだけれどプログラム起動直後はそういうルーチンは全然実行していないので、 スレッドなどは関係ないと思う。
210 名前:デフォルトの名無しさん [2007/03/19(月) 00:15:10 ] >>209 COM関連だよなInterRop そうおもってググってみたら同じような質問があった でうまくいったみたいだけど参考になるかな?
211 名前:デフォルトの名無しさん [2007/03/19(月) 00:15:56 ] 貼り忘れ 連投スマソ piza.2ch.net/tech/kako/977/977112364.html //********************* 232 名前: 名無しさん♯ 投稿日: 2001/04/17(火) 17:21 >>230 COMのスレッドの問題よん。 ここを参考にしてちょ。 質問 discuss.develop.com/archives/wa.exe?A2=ind0011B&L=DOTNET&P=R26673 回答 from Microsoft discuss.develop.com/archives/wa.exe?A2=ind0011B&L=DOTNET&D=0&P=38177 233 名前: デフォルトの名無しさん 投稿日: 2001/04/18(水) 00:39 >>231-232 ありがとうです。 using System.Threading; して Thread.CurrentThread.ApartmentState = ApartmentState.STA; をMainの一番初めに入れればいいんですよね。 この方法で試してみたけど、うまくいったりいかなかったり…。 で、今試したら100%うまくいくようです。 ちょっと謎ですが、たぶん大丈夫でしょう。 どうもありがとうございました。
212 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 01:00:10 ] 普通はSTAThreadAttributeついてると思うんだけど、つけてないの?
213 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 01:01:36 ] >>207 そりゃ問題なく使えて当然。そんな長時間クリップボードをロックしっぱなしするようなことはフツーしない。
214 名前:デフォルトの名無しさん [2007/03/19(月) 02:05:54 ] >211 サンキュウ。 Thread.CurrentThread.ApartmentState = ApartmentState.STA っていうのを入れてみたが効果なし。 おかしい。
215 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 07:39:15 ] >>214 .NETのVersionはなに?.NETのVersionが2.0なら >Thread.CurrentThread.ApartmentState = ApartmentState.STA は既にレガシーで機能しない。 メインスレッドは属性[STAThread]で指定し、それ以外のスレッドならスレッド開始前に Thread.SetApartmentStateで初期化する必要がある。 それからPictureBoxはGUIコンポーネントだから、もしメインスレッド以外から PictureBox.Imageを参照してるならおかしくなるのは当たり前だけどそこは大丈夫?
216 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 08:08:45 ] マイクロソフトはレガシーって呼ぶのか…。obsoleteとか言ってくんないとわからんw
217 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 08:37:32 ] >>215 もうだめだ .Image が .Invoke に見えた(orz
218 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 08:44:50 ] それは目がピンヴォケですね
219 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 09:05:56 ] …
220 名前:デフォルトの名無しさん [2007/03/19(月) 10:06:46 ] Directoryクラスについて教えてください。 ヘルプに、 「Directory クラスの静的メソッドは、すべてのメソッドでセキュリティ チェックを実行します。 オブジェクトを何回か再利用する場合は、このようなセキュリティ チェックが必ずしも必要では なくなるため、これらの静的メソッドの代わりに DirectoryInfo の対応するインスタンス メソッドを 使用することを検討してください」 とありますがこのセキュリティチェックというのは、Windows固有の機能でのチェックでしょうか、 それともウイルス対策ソフトにチェックをしてもらうということでしょうか? このヘルプの意味するところは、「初回は必ずDirectoryクラスを使い、一度使ったフォルダは すぐ次ではDirectoryInfoクラスを使うようにする」ことで、ウイルスチェックなどがしっかり掛かる ということを意味しているのでしょうか?それともこれらのセキュリティチェックとは、いわゆる コードアクセスセキュリティのようなもののことでしょうか?すみませんがよろしくお願いします。
221 名前:デフォルトの名無しさん [2007/03/19(月) 10:09:02 ] また、逆に言うと、Directoryクラスを使わず、DirectoryInfoクラスだけを使ってしまうと セキュリティチェックが掛からず、ウイルスに汚染されてしまう危険がある、といったことをも 意味するのでしょうか?これもあわせてお願いします。
222 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 10:13:30 ] CASの事だよ。 ウィルスとか関係ない。 DirectoryInfoでもチェックは入るが、 例えばインスタンス作成時だけチェックすれば済むとか、 そういう話だよ。
223 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 10:24:35 ] >>217 とりあえずもちつけ 落ち着いて理論的に考えていけばきっと解決できる問題だ!!
224 名前:デフォルトの名無しさん [2007/03/19(月) 10:32:50 ] >>222 ありがとうございます。やはりコードアクセスセキュリティのことだったのですか、 >DirectoryInfoでもチェックは入るが、 >例えばインスタンス作成時だけチェックすれば済むとか ということは、ヘルプの言ってることは、原則として、 インスタンス作成時は Direvtoryクラスを使い、 それ以降そのインスタンスの使用は DirevtoryInfoクラスを使ってください と考えてよいということでしょうか?そしてみなさんもそういう原則を踏襲して 日々コードを作成しておられると考えてよいでしょうか?
225 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 10:44:13 ] >>224 どこをどう読めばそう曲解できるのか不思議だが、書いてあるとおりだよ。 CASにかかる時間が気になるほど回数呼ばないならどっちでもいいってことだ。
226 名前:デフォルトの名無しさん [2007/03/19(月) 11:07:57 ] >>225 たびたびすみませんです。 まだよく理解できていないのですが、DirectoryInfoでもDirectoryでも、 CASに関しては同等なのでしょうか、それともやはり顕著に異なるのでしょうか? もし同等なのであれば、どちらを使ってもよい、ということになりコード作成で 気にする必要がなくなってありがたいのですが、ヘルプではやはり異なるように 書かれてあるようにも感じられます。CASをやってくれるのがDirecotryだけであるなら、 1.たくさんの回数呼ばないのなら、すべて 「Direcotry」 で済ませてよい、 しかし 2.もし同じフォルダーをたくさん回数呼ぶようであれば、最初だけはDirectoryを 使って、あとは DirectoryInfo を使うようにするべきである、 ということでしょうか?そしてこの原則をはずしてすべてを DirectoryInfo だけで 記述してしまうと、.NETのプログラムとしては大きく欠陥となる、ということを意味する のでしょうか?この辺が気になっています。VB6ではこういうことを考える必要が なかったもので戸惑っています。
227 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 11:32:46 ] なんでそうなる
228 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 11:35:12 ] プログラミングがあまりに論理的なので忘れてしまうことが在る プログラミングはスポーツ、つまり活動的な行為なのですよ 人に聞くなんて恥ずかしい行為は慎むとよい
229 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 11:36:24 ] DirectoryInfoはチェックしないなんて どこに書いてあんだよ。 同じディレクトリに対して操作を繰り返すんだから、 最初のインスタンス作成時にチェックするだけで済むだろ。 だからコンストラクタとかその辺でチェックしてるってことだよ。
230 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 11:39:44 ] そろそろさじ投げてもいいほど俺たちは堪えてるよな?
231 名前:デフォルトの名無しさん [2007/03/19(月) 12:07:46 ] >>229 >DirectoryInfoはチェックしないなんてどこに書いてあんだよ。 >>220 で挙げたようなヘルプの説明はそういった意味かと思いました。 これは意味が異なるのでしょうか。いろいろお聞きしてすみません。 >同じディレクトリに対して操作を繰り返すんだから、 >最初のインスタンス作成時にチェックするだけで済むだろ。 >だからコンストラクタとかその辺でチェックしてるってことだよ。 ということは、コンストラクタを使う限りは、DirectoryでもDirectoryInfoでも CASが掛かるということでしょうか、そうであれば、初めから両者の差は、 コンストラクタ以外のメソッドでのみ異なるということになるわけなのでしょうか。 たびたびお聞きしてすみません。
232 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 12:19:11 ] reflector.netでも使えばいいんじゃないか?
233 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 12:32:20 ] 諦めた、もう無理w
234 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 12:37:29 ] どうやってDirectoryのコンストラクタを使うんだ。 どうやってコンストラクタを使わずにDirectoryInfoを使うんだ。 って言ったらコンストラクタ使わずに使えるよ、とか言われんだろな。 そういうことじゃないんだ、そういうことじゃ…
235 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 12:38:41 ] >>231 そのセキュリティチェック云々のたわ言は別にして DirectoryとDirectoryInfoの違いはわかってるのか?
236 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 12:43:29 ] >>231 ・・・なんという電波解釈wwww
237 名前:デフォルトの名無しさん [2007/03/19(月) 12:46:37 ] >>235 >DirectoryとDirectoryInfoの違いはわかってるのか? それもあいまいなのですした。すみませんです。 >そのセキュリティチェック云々のたわ言は別にして この件はそれほど気にしなくてもいいという感じでいいでしょうか?
238 名前:デフォルトの名無しさん [2007/03/19(月) 12:54:47 ] TextBoxに入力した内容を次にソフトを立ち上げた時に表示するように保存しておくようにしたいんですけど。 どうやるんですか? データファイルとかソフト本体以外のファイルは作らないでやりたいんです。
239 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 12:57:52 ] 1回のCASの検査にかかる時間はせいぜい1/1000秒かそれ以下。 1000回繰り返したら1秒遅くなることになるが、これが気になるならうまくやれってこと。
240 名前:デフォルトの名無しさん [2007/03/19(月) 13:01:52 ] >215 サンキュウ。 VS.NET2003です。 その後のテストで、以下の事実が判明しました。ここで教えてもらったスレッド関係の設定をしなくても、 別のDELLマシンでは、何の問題もなくpictureBoxクリップボードにコピーできる。 エラー発生するのは最初に開発していたマシンのみ。 エラー発生しても、プログラムの実行を継続してやれば、2回目以降は成功する。 というわけで、よく分からない状態です。たまたま解決したのか、また、別のマシンで発生する可能性があるのか考えるとちょっと怖い。 お客さんのマシンで発生したら最悪。。。
241 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 13:02:17 ] >>238 情報量増やさずに情報を増強するのは無理 普通は外部ファイルとして保存するかアプリケーション構成とかに保存するんだろうが、 嫌なら諦めろ
242 名前:デフォルトの名無しさん [2007/03/19(月) 13:04:20 ] >>238 念じるしかないんじゃないの? 増やさないで情報を保存するなんて、エスパーしかできねーし。
243 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 13:04:37 ] >>238 レジストリに格納できないか?
244 名前:デフォルトの名無しさん [2007/03/19(月) 13:14:38 ] >>239 >1回のCASの検査にかかる時間はせいぜい1/1000秒かそれ以下。 >1000回繰り返したら1秒遅くなることになる そうだったのですか。わかりました、ということは原則としてアクセス回数が 少ないものの場合は、Directoryですべてまかなう方がむしろよい、というふうに つまりCASを必ず通すという考えでやれば間違いはない、ということなのですね。 どうもありがとうございました。 あとは、DirectoryとDirectoryInfoの違いについてまた調べてみますです。 どうもでした。
245 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 14:16:26 ] おめでとうございます。 日常生活でのコミュニケーションに障害を感じるレベルです。
246 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 15:36:42 ] >>238 アプリ本体のアセンブリ自身を書き換えてやればいいんじゃないか?
247 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 15:40:19 ] >>243 それも外部ファイルいじってるやんw >>238 みたいなのはもう居なくなれよwwwww 常識的に考えてそんなことしねぇよwwwww
248 名前:デフォルトの名無しさん [2007/03/19(月) 15:41:53 ] まあ、彼がファイルとか作りたくないっていう理由が全くわからんけどね。 Assembly自身の書き換えは、厳格名を持ってる場合に問題出るだろうし、そもそも最近のセキュリティソフトが嫌うと思う。 EXEの書き換えなんて。 普通にapp.configに書き出せばいいのに。
249 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 15:52:26 ] >>247 少なくとも新規作成はしない罠
250 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 15:55:27 ] >>249 確かにw しかしまぁ、何故新規作成したくないというか・・・・ きっとダメな理由でもあるんだろうけどなぁ
251 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 15:59:14 ] それならSystem32あたりで適当なファイルをランダムに選んで乗っ取れ
252 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 16:04:16 ] ブートローダ乗っ取ればいいんじゃね?
253 名前:デフォルトの名無しさん [2007/03/19(月) 16:05:35 ] PCに残せないなら、前回の最終入力を作業者の脳内に残してもらえばいいじゃん。 それを画面起動時に入力してもらう。
254 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 16:08:58 ] ふっかつのじゅもんか。
255 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 16:11:21 ] 設定サーバを立ててオンラインで保存・読み込みすればいいんじゃね
256 名前:デフォルトの名無しさん [2007/03/19(月) 16:13:15 ] まあ、普通に馬鹿な仕様を変更すればいいだけだろ? ローカル保存可とするか、保存する場所ないならば前回入力なんぞ保持しないか。
257 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 16:38:26 ] VBでいうAsc関数はフレームワークではどの様に記述するのでしょうか? Microsoft.VisualBasic.Strings のメンバではなくてです。
258 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 16:38:54 ] system.math 名前空間の中じゃねぇの?
259 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 16:44:21 ] Reflectorで覗いてみたら? 自己責任で
260 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 16:44:27 ] >>257 普通にInt32にキャストしろ
261 名前:257 mailto:sage [2007/03/19(月) 17:18:27 ] たくさんの回答ありがとうございます。 >>258 名前からして違うと思います。一応確認しました。 >>259 リコンパイラ以前使ったのですが、どこに入れたのか忘れちゃいました。 Platform SDK か何かをインスコしたパスの中に実行体があるんでしたっけ? >>260 キャストですか?
262 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 17:28:34 ] Dim row as DataRow row("ID") = 3 みたいに、括弧をつけてアクセス出来るようにするには、 クラス定義の時、どのようなメソッドを追加すれば良いのでしょうか。
263 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 17:34:18 ] 引数設定すればいいんじゃね? Public Property Row(ByVal ColName As String) As DataRow Get return HOGEHOGE End Get Set(ByVal value As DataRow) _HOGEHOGE= Value End Set End Property
264 名前:デフォルトの名無しさん [2007/03/19(月) 17:34:47 ] とりあえずHashMapとかディクショナリとか。 .netになって意識してないけど、デフォルトプロパティもあるんだっけ? 上記の場合、Row.Item("ID")な書き方が正なように思う。 で、ItemってのがHashMapなりディクショナリで実装。 DataRowのデフォルトプロパティがItemだから、row("ID")でもアクセスできる。 かな?
265 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 17:46:36 ] >>264 あ、そっち方面の話だったのねwww
266 名前:デフォルトの名無しさん [2007/03/19(月) 18:22:31 ] >>263-265 どうも丁寧にありがとうございました。
267 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 18:38:05 ] ちょっと質問です VB.NET 2005のWinアプリでXSDスキーマ(スキーマA)使ってデータを読み込んだりしようとしている。 このスキーマAはプロジェクトAのSchemaフォルダに配置されていて実行時にこれを読み込みたい (ただし、直でファイルパスを切りたくないので相対パスでアクセスしたい) 開発環境では、プロジェクトAのBinフォルダ以下のReleaseやDebugフォルダの中に保存されてしまい、 インストーラからインストールした時は、実行ファイルと同じ階層にSchemaフォルダがあるため、相対パスではアクセスできないので 相対パスで開発環境でも、実行環境でも同じ相対パスでアクセスしたい。 インストール時のフォルダ構造を開発環境に合わせればいいじゃないかといわれればそうだけど、 もし特に設定ナシで目的が達成できるならと思い質問させてもらいました。 説明が下手で伝わりにくいかもしれませんが、よろしくお願いします。
268 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 19:09:56 ] exeファイルにNTFSストリームをくっ付ければ hoge.exe:hoge.txt とかに保存すれば
269 名前:268 mailto:sage [2007/03/19(月) 19:11:17 ] >>238 です
270 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 22:04:50 ] >>267 Schema フォルダのパスを設定ファイルに書いとけばいいんじゃね?
271 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 22:08:41 ] >>257 これでわかるかい? Dim s As String = "abcABC" For Each c As Char In s Dim a As Integer = Convert.ToInt32(c) Console.WriteLine("{0}: {1}", c, a) Next
272 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 22:34:45 ] Ascをreflectorで見た 何気に気合入ってたよ Unicode<->ASCII(MS-shiftjis?)
273 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 22:39:15 ] Microsoft.VisualBasic.Asc() じゃダメ?
274 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 23:16:11 ] >>271 それはAscW
275 名前:デフォルトの名無しさん [2007/03/19(月) 23:34:22 ] >>270 やっぱそうなっちゃいますよね? あんまり、パスの直書きはしたくなかったんで聞いてみたんですが とりあえずいい案思いつくまでそれでしのごうかと思います (というか、そのままになりそうな予感) レスサンクスでした
276 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 00:03:30 ] 質問。StreamReader.Read(Char(), Int32, Int32) で文字列を読み込んだら、空白部分がnothing扱い(!?)になるんだが、 空かどうかはどう判定すればいいの?C#では普通にナル文字が入ったんだけどなぁ・・・。
277 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 00:11:46 ] VB の Nothing は C# では default(T)。 default(Char) は '\0' だな。 で、空白とか空とかって何?
278 名前:デフォルトの名無しさん [2007/03/20(火) 00:20:32 ] この質問はVBの質問とはちょっと違いますが、 Windowsの仕組みを良く知っている人が多そうなここで質問させていただきます。 間違っていたらごめんなさい。 質問は、 Cでコンパイル済のEXEファイルAがあって、それはある種のシミュレーションを 繰り返し計算して、計算結果の数値を画面にずらずらと出力しています。 i=1 数字1 数字2 数字3 i=2 数字1 数字2 数字3 i=3 数字1 数字2 数字3 ... ... こんな感じです。そのソースを入手できないのですが、何らかの方法でこの出力している数字を リアルタイムで取得して、それを別プロセスで動いているVBで作ったグラフ描画ソフトBに データとして送りたいのです(ファイルマッピングか何かの方法で)。 問題は、画面の数字を取り込む方法なのですが、何か良い方法はありますか?
279 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 00:26:53 ] タイマで WM_GETTEXT 投げてりゃ良いんじゃね
280 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 00:27:19 ] ProcessStartInfo.RedirectStandardOutput プロパティがそれっぽい ProcessStartInfoはProcess.Startの引数として使う やったことないから合ってるかは知らんが
281 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 00:32:33 ] > 画面にずらずら もうプログラムとか横においてだな、 詳しく書かないといけないところを省略するなよ OCRが最も汎用的だな
282 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 00:38:37 ] ちょwwwOCRてwwwww まずデジカメが必要だから買ってきて
283 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 00:45:04 ] フォント固定で種類が数値+α程度なら、パターンマッチも そんなに難しくはないだろうね、
284 名前:デフォルトの名無しさん [2007/03/20(火) 00:59:23 ] >280 ありがとうございました。教えてもらった方法で、 意外にも簡単にできました。でも一つ問題がありまして、 出力をリダイレクトしたら、画面の表示が出なくなりますが、 希望としては、画面にも今までどおり出しながら、同時にリダイレクトして 取り込みたいのですが、それは無理でしょうか?
285 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 01:00:52 ] 受け取った出力をそのまま標準出力に流せばいいじゃない
286 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 01:09:57 ] そのためのtee
287 名前:デフォルトの名無しさん [2007/03/20(火) 01:14:27 ] >285 VBからシミュレーションソフトを起動していますが、そのConsoleに AttachConsoleする方法が分かりません。 >286 TeeってDOSにありますか?探してみたのですが無いようでした。 もっと簡単に、リダイレクトしながらconsoleにもそのまま出力する というプロパティ設定があるといいのですが。。
288 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 07:18:16 ] 無いならダウンロードするか作れよ。
289 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 09:41:48 ] 自分でコンソール作ればいいじゃないか
290 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 10:32:04 ] あるテーブル2つのデータを持つDataSetがあります TableA TableB がデータセットに格納されており、2つのテーブルは TablA:TableB=1:Nの関係でリレーションが張られています。 TableA/TableB共にデータを追加・更新・削除した後にDBに繁栄させるためにUPDATEメソッドを実行したいのです。 ここで普通データアダプタで更新する場合 Tableという名前のDataTableがUpDateメソッドで反映される為 TableAの名前をTableに書き換えてデータアダプタでUpDateしています。 その後TableAの名前を元に戻し、 TableBの名前をに書き換えてデータアダプタでUpDateしています。 2回データアダプタを作成し、更新していますが、 同一コネクション内でトランザクションをかけている為、同時実行時などは問題なく処理できています。 しかし、この処理が非常にスマートでない気がします。 なにかもっと簡単にリレーションの張られたデータを更新する手法があるのではないかと情報を集めてみたのですが、うまい解決方法が見つかりません。 もし、なにかスマートな解決方法や考え方があるよ?とか、俺はこうしている などの情報を少し分けてもらえないでしょうか? よろしくお願いします。
291 名前:デフォルトの名無しさん mailto:sage [2007/03/20(火) 10:35:25 ] アダプタで出来るのは単純な更新のみと割り切って、SQLでごいごいと書く。