5 :
デフォルトの名無しさん :2007/09/06(木) 09:30:57
テンプレ終り。 質問者そっちのけで住人同士の議論のぶつけ合いになることが多々あります。 議論のぶつけ合いは互いの成長に良き糧となりますが、そういった場合は文字通り 別スレッドを立てて、裏で処理してください。 また、このスレにTry-Catch文が書かれていた場合、自分の発言が例外としてCatchされないか、良く考えてから書き込みをして下さい。
8 :
デフォルトの名無しさん :2007/09/06(木) 14:17:11
あんだけ騒いで、Usingでいいじゃんの話題にならないのね。 まあ2003で止まってる人かもしれんが。
>>8 開放の話ならUsingの話題になっただろうが、ヒートアップしてたのは例外処理の話題だからなw
10 :
デフォルトの名無しさん :2007/09/06(木) 14:30:54
最初は解放の話だったよね。 Finallyで解放するのが普通だとかどうだとか。 ちゅうか、Using使ったらもう戻れません。w
非同期例外もとりあえずキャッチしておけばいいとかってあたりは少し怖かった。 いやもちろんキャッチした後、正しくリカバリできるならそれがベストなんだろうけど、 普通はできないでしょ。
12 :
デフォルトの名無しさん :2007/09/06(木) 14:55:29
すいません、質問させていただきます。 .net2003でデータグリッドを使ってファイル操作を行っているんですが、 データグリッド内のTabキーの動きを制限したいんですが、やり方がわかりません。 自分のしたい動きは、Tabを横移動させないで、下にだけ移動させたいんですけど。。。 どなたか教えてください!!
RCWはなぜかIDisposableじゃないんだよ。usingは使えない。 ReleaseComObjectを呼ばないとインターフェイスが開放されないと思ってる人が多いが、 ファイナライザでも開放される。 Disposeに対するFinalizeと同じ位置づけで、ある種のフェイルセーフ。 場合にもよるが異常系でのReleaseComObjectはそれほど神経質になる必要はない。
14 :
デフォルトの名無しさん :2007/09/06(木) 15:01:27
つうか、どどねとになってCOM経由でのOFFICE連携は超大変。 丁寧に作る or ラップするクラスを作ってオブジェクト管理しっかりならOKだけどさ。 暗黙のオブジェクトでNGってのはちょっと。 仕事だったら、安定性も考えて市販のライブラリが安い。
>>12 KeyDownとかで拾えない?
TabKey押下時、もともとの動きをe.handle=trueでキャンセルして、CurrentCellを現在のCellからRow+1する。
>>10 だからそんな話は誰もしてなかったんだよw
かってにそういう話だと思い込んじゃった人が少なくとも一人はいたというだけのこと。
>>13 >ReleaseComObjectを呼ばないとインターフェイスが開放されないと思ってる人が多いが、
>ファイナライザでも開放される。
やっぱりそうだよね
ReleaseComObject読んでおかないとエクセルのプロセスが残る、
とかいう話がまことしやかに言われているが、個人的にはそんな経験は
まったくしたことがないんだよね。
個人的に、この手のことを喧伝してる人はそれ以外のところで
何か妙なことをやっているんだろうなあと思ってる。
あと、こういうことを言う人って何故か「プログラムで作成したエクセルの
プロセスはプログラムで<絶対に>終了しなければならない」という
妙な思い込みにとりつかれていることが多い。
いやプロセスは残るだろw
>>17 ちょっと説明が舌足らずだったけど、「エクセルのプロセスが残る」という主張を
する人のその言葉の意味は、Application.Quit呼んでエクセルを終了した
はずなのにエクセルのプロセスが残るってことらしいよ。
しかもエクセルを起動したアプリを終了しても残るんだとさ。
>>18 プロセスが終了する条件はインターフェイスがすべて開放されてかつ
Workbook.CloseとApplication.Quitの両方が実行されている。
(もちろんWorkbookを開いたり、Addしてない場合はCloseは不要なのだけど)
Quitしてるのに残ってる場合はCloseしてないか見当違いなものをCloseしている。
前スレのソースはそれだった。
>>18 JScriptの例だけど、Microsoftの文書で
Application.Quitを呼んでも、参照が残っているとExcelのプロセスは完全に破棄されない。
すぐにExcelのプロセスを終了させるためには参照を破棄するためにガベージコレクション
を強制的に引き起こしてやる必要がある。
と明示的に書かれた記事はある。
ttp://support.microsoft.com/kb/266088/ja なので、Application.Quitを呼んだだけでは不十分で、その後、速やかに
参照を破棄する、というのは正しいのではないの?
>しかもエクセルを起動したアプリを終了しても残るんだとさ。
これは分からない。
Application.Quit読んでれば問題ないと思うけどね。
21 :
デフォルトの名無しさん :2007/09/06(木) 19:46:37
以下の関数をXPで実行するとIPV4の文字列が返って来るのに Vistaで実行するとIPV6の値が返ってきてしまいます。 なんとかIPV4のほうのアドレスを取得できないものでしょうか? Public Function GetLocalIpAddress(Optional ByVal ipNo As Integer = 0) As String Dim temp As System.Net.IPAddress() = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName).AddressList If temp.Length <= 0 Then Return System.Net.Dns.GetHostName & ":IpUnKnown" Else Return temp(temp.Length - 1).ToString End If End Function
>>21 V4, V6あったらV6が優先されるようだからそうなるのかな。
Dns.GetHostAddressesなら両方戻ってくるはず。
>>20 >なので、Application.Quitを呼んだだけでは不十分で、その後、速やかに
>参照を破棄する、というのは正しいのではないの?
それはたぶん正しいと思う。
疑問なのはReleaseComObjectが本当に必要かどうか。
エクセルを起動したアプリを終了してもエクセルのプロセスが消えない問題は
VB6の時は確かにあった。
ドトネドでは、たとえばメソッド内で使う一時的なオブジェクトでも必ず変数に
入れて使用後はそれにNothingを入れる、というような面倒なことをしなくても
そういった問題は経験してないなあ。
>>22 レスありがとうございます。
どうやらGetHostAddressesを調べながらテストしてみたら
もとの提示したサンプルでもIpAddressのArrayの中の一つにV4形式のアドレスがあるようでした。
これってVistaのV4を切っていなければ必ず入っているものなんでしょうか・・・・
とりあえずIPV4が有効なことを前提に、ループで回して適当な正規表現を取得してみることにします。
参照の破棄なんかいらんよ大抵は その場でガベージコレクションするなら別だが 問題なのはガベージコレクションじゃ実際にいつ解放されるのか分からんて事だ。
ファイナライザで解放されるってのもみんな分かってると思うが。 たんにそれがあまり望ましい動きじゃないってだけで
>>11 そんなこと誰も言ってなかったぞ?
勘違いしてたやつはいたみたいだが…
Try内でリターンしてもFinallyは実行されるという動作を理解してない人もいるということ
かといってガベージコレクションを明示的に呼ぶのもあんまりしたくないから 結局まっとうな手段としては漏れなく解放してやるしかない はっきりいってあまり現実的じゃないから ガベージコレクションでごまかしたくなる 開発者に徹底するなんてまず無理だもんorz
30 :
デフォルトの名無しさん :2007/09/07(金) 07:54:19
ListView のカラムの移動について教えてください。 ListView で、カラムを摘んで別のカラム位置にD&Dして移動することができましたが、 これで ListView.ColumnReordered イベント が発生しますが、 そこで ColumnReorderedEventArgs.OldDisplayIndex プロパティ や 同NewDisplayIndex プロパティ を知ってカラムの並び順を記憶する配列などを更新することができ、 それを使って、次回にその並び順に Columns (=ColumnHeaderCollection クラス ) の メンバーItemを並べ替えることはできるのですが、 それだけですと、データ部の ListViewItem の各カラムはそれに伴って同様に移動しては くれませんでした。 この場合、このデータ部分のカラムもいっしょに移動する(D&Dで移動するのと同じ効果) 方法はありますでしょうか? よろしくお願いします。
>>30 が、が、が、
こういう日本語使う人ってたまにいるね。
君はListViewItemtというものを根本的に勘違いしてないか?
おまけにどうしようもなく知恵がない。
カラム(ヘッダ)の順番が分かっているなら、カラムの順番に対応して
サブアイテムを設定するだけだと思うんだが。
>>31 訂正
×ListViewItem
○ListView
>>31 >カラム(ヘッダ)の順番が分かっているなら、カラムの順番に対応して
>サブアイテムを設定するだけだと思うんだが。
確かにその通りで、ListViewItem.ListViewSubItemCollection クラス の説明をみますと
そのように行うことが可能なようなのですが、D&Dで一発で実行されていることを考えると
どうも一発系のメソッドかプロパティがあるのでは・・・・・?と思ったのです。
もう一度Helpを探してみてもどうやら見つからないところを見ると、やはりおっしゃるように
ひとつひとつ ListViewItem をForループで回して対応するしかないのかもしれないです。
ものすごく大量の ListViewItem があった場合に時間がかかりそうなのも懸念された
のですが、それしか方法がない場合はしかたないですね、とりあえずこれでやってみる
ことにします。ご指導どうもでした。
34 :
デフォルトの名無しさん :2007/09/07(金) 08:54:17
もう、ぷログラミングなんてやめなよ。まっとうじゃないよ
>>34 やっぱりもっといい方法あるでしょうか。それ知りたいのですが、よろしければ
ご指導をよろしく。
実際、Explorer ではちゃんと実現されているので、やはり簡単にできるのではとは 思っているのですが、どうも Help が読みこなせていないのかもしれません。 やはり一発系があれば知りたいのですが・・・
>>23 >エクセルを起動したアプリを終了してもエクセルのプロセスが消えない問題は
>VB6の時は確かにあった。
VB6でのこの問題はClose/Quit操作漏れの他に、
End命令や捕捉されていない例外で終了した場合にCOMオブジェクト破棄がなされないことにある。
この場合COMオブジェクトがアウトプロセスサーバーの場合はそのプロセスが残る。
一方、全フォームがUnloadか閉じるで終了した場合は後処理でオブジェクトの破棄はなされる。
COMへの参照をグローバルやstatic変数に置くとNothingを設定しない限り
終了時まで参照が残るため、Endで終了した場合は後処理が省かれプロセスが残ってしまう。
さらにFormの暗黙のインスタンスの問題がある。Formで暗黙のインスタンスを使った場合、
そのFormのインスタンスはUnload(閉じるを含む)したとしても、プロセスの終了まで破棄されない。
ただしUnload(閉じるを含む) とSet Form1 = Nothingの両方の操作を行った場合は破棄される。
このためFormのフィールドにCOMの参照を置いた場合もグローバルやstatic変数に置くのと
同じ問題が発生する。あとケースとしてはまれだが循環参照があった場合も同様。
>>37 続き
VB.NETの場合はEnvironment.Exitで終了しても未補足の例外で異常終了した場合も
オブジェクトの終了処理はなされるので問題はおきにくい。
例外はCLR自体が~C操作やOS側の例外での終了した場合。
Formの暗黙のインスタンスはVB6と似た動きをするので早期に参照を破棄したい場合は
同様の注意が必要になる。
暗黙のインスタンスではForm1のメソッドにアクセスする時に、
Form1が初期状態(Nothing)または既にDispose(Close)された状態であれば
新規にForm1のインスタンスを生成してForm1に設定する。
VB6と違ってUnload(Dispose)後の再利用はしないが、
参照が破棄されるのは次のForm1を新たに操作し始めたタイミングになる。
Dispose後速やかにGCの対象にするためにはSet Form1 = Nothingの操作が必要になる。
まあそこまでわかってる人は暗黙のインスタンスなんか使わないよなあ
Inherits System.Windows.Forms.Formにてウィンドウを作成したのですが、 このウィンドウクラスを変更するにはどのような手段を用いればよろしいのでしょうか? VC++ですとPreCreateWindowをオーバーライドしろ、とあるのですが・・・
42 :
41 :2007/09/08(土) 20:26:48
誤:ウィンドウクラス 正:ウィンドウクラス名 失礼しました・・・
Loadを実装しれ private void Form1_Load(object sender, System.EventArgs e){}
44 :
43 :2007/09/08(土) 22:49:24
C#だったorz こっち Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load VBだとイベント明示しないといけないのね
>>41 CreateParams オーバーライドすれば書き換えられるが、
確か自前で事前に RegisterClass しなけりゃ駄目だった気がする
47 :
46 :2007/09/09(日) 05:12:19
つっても内部でサブクラス化されて結局 .NET 特有の修飾名は追加されるみたいだな
VB.NETで静的メソッドばかりを集めたクラスを作る場合、 MustInheritを付けてコンストラクタをPrivateにするのが普通ですか?
間違えましたNotInheritableです
VB2005(VB8)なら Shared Class も使える。 Module にするのも一般的かもしれない。 まあ静的クラス作ることはあんまり無いはずだが。
>Shared Class それは初耳
VB6以前スレに間違えて投稿してしまったのでこちらで再度質問です。 VB2005を使っているのですが、 VB6のときにあった、ディストリビューションウィザードがなくなって セットアップディスクが作成できなくて困ってます。 別のツールかなにかで作るのでしょうか? お勧めがあったら教えてください。
>>52 VS2005STD以上には付いてるよ。
ただフロッピーにはしてくれない。
>>52 @itに解説があるだろ。
なんでウダウダいってる間に自分で調べようとしないの?
初歩的な質問ですいません プロジェクト全体にスコープを持つ変数を設定したい場合には どこにどう書けばいいのでしょうか・・・・。
57 :
デフォルトの名無しさん :2007/09/10(月) 17:13:02
つうか、グローバル変数なんて基本的に不要だっぺ。 もし、各フォームで共通の変数とか必要でも、その所有フォームなり所有プロセスってものがあるっぺさ。 どこに書くか知る前に、本当に必要かかんがえろって。 グローバル変数は普通許可制だよな。 プロジェクトリーダに申請書出して審議委員会が決定して使える。
58 :
デフォルトの名無しさん :2007/09/10(月) 17:16:25
>56 ありがとうございました!!!
>>57 VBを使わせてること自体がそのなんとか委員会の落ち度だろ。
あるものはありがたく使おうぜ。
今VBAの糞コードを移植してる 自責の念に駆られつつ盛大にグローバル変数使ってる
61 :
デフォルトの名無しさん :2007/09/10(月) 17:47:20
>59 VB..netにかぎらないっぺ。 Public で Static なクラス変数作れば、モジュールと同じだっちゅーの。 VBだからとかいってると、はじかくど。
62 :
60 :2007/09/10(月) 17:50:11
頭にクラス名が付くだけましだよ g_とかプリフィックス付けてくれてたらまだ許せるけど そういうのも一切なくて殴りたくなる
モジュールだとモジュール名の修飾なしでグローバルになるね。
64 :
デフォルトの名無しさん :2007/09/10(月) 17:52:16
i とか buf とかがグローバルってのは、よくある屑プログラムだね。 それがWebだったりしたら、もう萌え萌え。
65 :
デフォルトの名無しさん :2007/09/10(月) 17:54:52
それにしても、何できれいなプログラムを組める言語になったのに、 そういう人種はクズで汚れたプログラムを組む努力を怠らないのだろう・・・。 たとえば、グローバル変数を作るのにしたって、ここで聞いたら勉強しないでまたやるだけじゃん。 そのグローバル変数を .net とか Java でどう実現するかって、非常に勉強になるよ。 つうか、その勉強と労力考えたら、普通作らないよね。 シングルトン実装とかいろいろ出てくるからいい勉強なんだが。
Javaはstatic importを導入しやがったけどなw
67 :
デフォルトの名無しさん :2007/09/11(火) 17:50:16
Private Structure struct1 Dim st As struct2() End Structure Private Structure struct2 Dim a, b, c As String Dim uniqueID As Integer End Structure Private structAry As struct1() 上記のような構造体を使っています。 uniqueIDだけが情報として分かる状態において、そのuniqueIDに対応する a,b,c as String を取り出したいのですが、どのようにすればよいでしょうか。 環境は、VB2005pro、WinXPproSP2です。 System.Array.Find()を使うのかと思いましたが、Predicateのインスタンシング自体がよく分かりません。 Dim ch As Predicate(Of struct1) = New Predicate(Of struct1)(AddressOf 〜〜〜) とか書くのでしょうか? 宜しくお願いします
>>67 struct1にstract2の配列を持ってるのに、
さらにstract1を配列にしてるのはどして?
>>68 Private Structure struct1
Dim structID,Length,etc As Integer
Dim st As struct2()
End Structure
Private Structure struct2
Dim a, b, c As String
Dim uniqueID As Integer
End Structure
Private structAry As struct1()
失礼しました。必要ないと思って書きませんでしたが、各構造体には他にもいろいろなメンバがあります。
必要があって、構造体配列の中に構造体配列が入っているような状況です。
普通にDictionary使えばいいじゃん。
>>69 こういう構造になってるわけだろ。検索ロジックも2重に使うわけかな?
stractAry - struct1 - struct2
+ struct2
+ struct2
+ struct1 - struct2
+ struct2
+ struct1 - struct2
>>70 に同意。
Array.Find/Predicateは匿名デリゲートが使えないとありがたみがないからね。
いまのVBだと意味なし。
配列が二重なのをやめて単純な構造にした場合。 Structure struct2 Dim a, b, c As String Dim uniqueID As Integer End Structure Module Program Private structAry As struct2() Sub Main ReDim structAry(3) structAry(0).uniqueID = 1 structAry(0).a = "a1" : 略 structAry(2).c = "c3" Dim rslt As struct2 = Array.Find(structAry, AddressOf MyProduct) Console.WriteLine("{0} : {1}, {2}, {3}", rslt.uniqueID, rslt.a, rslt.b, rslt.c) End Sub Function MyProduct(ByVal st2 As struct2) As Boolean Return st2.uniqueID = 2 End Function End Module
74 :
67 :2007/09/12(水) 10:27:07
>>70 このクラスの存在を知りませんでした。
とても便利そうなのでこれを使ってみようと思います。
>>72 配列が二重になっているせいで、Array.Find()を使うのが難しいようですね。
しかしながら、おかげさまで単純配列におけるArray.Find()の使い方が分かりました。
ブール値を返す関数を作って、それに対してAddressOfを指定すれば良いのですね。
勉強になりました、ありがとうございます。
75 :
デフォルトの名無しさん :2007/09/14(金) 15:07:14
コード・エディタ上で右クリックして出てくるコンテキスト・メニューで、 「すべての参照の検索」 がありますが、そのとき、検索する範囲を 「現在のドキュメント」「現在のプロジェクト」などと 自分で限定する方法があれば知りたく。よろしく。
ちょいと質問なのですが、Graphics.DrawLineメソッドが指定した座標を描画してくれない現象ってあります? (0,0)-(15,0)を指定しても描画されず、 (0,1)-(15,1)だと実際には(0,0)-(14,0)を描画。 SetPixelや、DrawRectangleとか他のメソッドは想定した座標を描画してくれるのですが・・・
78 :
77 :2007/09/15(土) 06:41:11
自己解決。 PixelOffsetModeプロパティをHighQualityにしてたせいでした。
>>77 それたぶん解決してないよ。
根本的なことが分かってないと思うな。
グラフィックデバイスの点はモザイク画のタイルみたいなものであって
数学的な「点」とは違う。
たぶん当たり前のことに聞こえると思うけど、
これをとことん理解してないとそういう不可解な現象(実際は本人の勘違い)に
いろいろ出くわすことになるよ。
Graphicsのメソッドで指定する座標っていうのは論理座標(数学の座標に近いもの)
であって、大きさを持つタイルの位置ではない。
グローバル変数・関数が大好きだからVB選んだのだけど正解だった。
グローバル変数・関数が大嫌いだからVB使っててもC#のつもりで書いてる
namespaceがあるらグローバル変数なんていわれても(ry
日本語…
84 :
デフォルトの名無しさん :2007/09/16(日) 06:23:45
質問です ビジネスロジックとFormをオブジェクトバインディングで紐付けた場合 Validationをビジネスロジックに記述します このとき、データ更新のときは、Validationにより適切に処理されますが データ作成(登録)のときは初期値を設定した時点で Validationエラーとなります(必須項目など) 回避する方法は無いでしょうか?
85 :
デフォルトの名無しさん :2007/09/19(水) 19:19:17
お世話になっております ソケット通信を行うプログラム(ホスト側)を作成しています ぐぐったサンプルを参考にし、受信データが0文字の際、接続が切れたとみなし 再接続を行う処理を実装したいのですが 実際に接続が切れた状態でデータを読み出そうとすると、IOExceptionが発生し、処理を行うスレッドが終了しています。 文字列で接続を判断するのでなく、ポーリングで接続を判断し、再接続処理を行いたいのです。
86 :
85 :2007/09/19(水) 19:22:45
書いてみたコード ''クライアントからの接続を受け付ける Dim client As TcpClient = server(intMachineNo).AcceptTcpClient() Dim stream As NetworkStream = client.GetStream() While True Dim ReadData(100) As Byte Dim SendData(2) As Byte Dim len As Integer Dim strQR As String ''受信データの読み出し len = stream.Read(ReadData, 0, ReadData.Length) '' ここで切断時エラー strQR = System.Text.Encoding.ASCII.GetString(ReadData, 0, len) ''受信データありの場合 If len > 0 Then ''クライアントに応答し処理を実行 ''len = 0 は、接続が切れたとみなす Else ''クライアント受入モジュールのリフレッシュ client = server(intMachineNo).AcceptTcpClient() stream = client.GetStream() End If End While
87 :
デフォルトの名無しさん :2007/09/19(水) 19:50:18
Imports System Imports System.IO Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim n As Integer For n = 0 To 1000000 Dim fs1 As FileStream = New FileStream("test.jpg", FileMode.Open, FileAccess.Read) Next End Sub End Class 上記コードを実行させても、メモリの使用量が増えません。 GCが働いてるからでしょうか。 あと、読み取り専用ならば、上記のようにストリームを閉じる必要ないでしょうか。
ないわけがない。
90 :
85 :2007/09/20(木) 05:23:47
あいや、Try Catchの中に書いてある 長くなるから省いてあります
>>90 どの範囲でTry Catchしてるのよ?
閉じたら0を返すの動作が必要なら、SocketクラスのReceiveを直に使おう。
92 :
90 :2007/09/20(木) 15:17:43
このコードが範囲 Receiveでも同じで0は返ってきませんでした
93 :
デフォルトの名無しさん :2007/09/20(木) 15:24:53
ばかばかしいからprogramなんかやめろって。 そんなの無駄な努力だよ。ほとんどのばあい。
Socketが閉じたら IOExceptionが起きるのがNetworkStreamの仕様なんだろ? だったらこれでいいじゃん。 Try len = stream.Read(ReadData, 0, ReadData.Length) '' ここで切断時エラー Catch Ex As IOException len = 0 End Try
VS2005、XPsp2、インストーラー作成時の質問です。 インストール時に、インストールPCのレジストリ内の値(ディレクトリパスを格納している)を読み込んで、 そのディレクトリに対してdllをインストールするようにしたいのですが、どうしたらよいでしょうか。 やりたいことは、Setup>ファイルシステム>カスタムフォルダ このカスタムフォルダのDefaultLocationに、インストール時にPCから取得したレジストリの値を 入れ込みたいのです。 よろしくおねがいします。
>>92 通信の終端判定はNetworkStreamでもReceiveでも受信サイズ0で可能。
IOExceptionはMSDNにあるとおりソケットを閉じた後に操作した場合に発生する。
エスパーするにコードを省略してる部分でソケットを閉じてるのだと思うよ。
''受信データありの場合
If len > 0 Then
''クライアントに応答し処理を実行
client.Close() '' ここでこういうことをしてないか?
>>92 接続が切れててclientにOKメッセージを返してたのが問題だったようです
ありがとうありがとう
スタックトレースしてもその位置でエラーは発生してない不思議。
99 :
デフォルトの名無しさん :2007/09/21(金) 22:44:49
すんません Dim myDirectries as Object myDirectories = My.Computer.FileSystem.GetDirectories(Me.TextBox1.Text) のようなコードがあったとしてmyDirectriesはObjectで配列ですよね これをObjectじゃなくてStringの1次配列にとりたい場合はどんな方法を使えば良いでしょう? For〜Nextで回す方法以外であれば教えてください
ObjectじゃなくてReadOnlyCollection(Of String)で受けろ CopyToでいける
というか、なんでわざわざMyなんか使うのよ。 特別便利ならともかく、標準のライブラリの機能になにかプラスされてるとも 思えないんだけどそれ。
Directory.GetDirectoriesならはじめからString配列で取れるな
103 :
デフォルトの名無しさん :2007/09/21(金) 23:49:02
>>100 こんなクラスもあるんですねぇ。勉強になりました。
>>101 >>102 特に便利とか優れてるからとか理由はないんですが
せっかくの新しいオブジェクトだしちょっとだけ打ちやすい読みやすい感じがして
System.IOと両方使ってます。
ありがとうございました。
あぁ、Settingは重宝してますね
え〜雪隠具なんて使う奴いたのかよw あれ全然使えねえと思うんだけど。 全ユーザー共通の設定は残せないし、アンインストールしてもゴミ残すし。 なにより融通がきかない。 普通に自分でシリアル化してレジストリなり実行ファイルのディレクトリなりに 保存する方が融通が利くし、手間もほとんど変わらないだろう。
実行ファイルのディレクトリw
手間はぜんぜん違うだろうw
>>107 微妙な差だとは思うが、個人的には自分でシリアル化して保存した方がむしろ手間は少ないと思う。
すくなくとも精神的にはるかに楽だ。
シリアル化なんて自分でライブラリ化(といってもシリアライズとデシリアライスの静的メソッド
のペアに過ぎないが)しておけばメソッド一発呼ぶだけだぞ。
自作だとアンインストールでごみが残らないの?
もう仕様とか好み問題だと思う
>>105 なんでも極端なこと言いたがる馬鹿って多いよね。
以前にC#スレで聞いたら、VBのほうがC#より少ないコードでプログラミングできると言っていたのだけど、これって本当?
ものによる Officeオートメーションなら確実にVBの方が少ないな
全く同じ動作で同じ意味のコードを書くなら C#の方が構文が簡潔でインテリセンスも親切で速く書けるよ(Excel操作なんかは例外だけど) 使う上で同じ動作をしているように見えるコードならVBの方が短くなることもあるよ 短いことが必ずしもいいこととは限らないよ
短ければスクロールする必要がないから便利。
.NET 2005についての質問です。 TrackBarを使ってシステム音量を操作するプログラムを製作しているのですが、 音量の取得や設定の仕方がよくわかりません。 詳しい方ご教授願います。
VB2005でのTCP/IP通信を行いたいのですが、 サーバー側 Dim host As String = "localhost" Dim port As Integer = 2001 Dim ipAdd As System.Net.IPAddress = System.Net.Dns.Resolve(host).AddressList(0) Dim listener As New System.Net.Sockets.TcpListener(ipAdd, port) listener.Start() クライアント側 Dim host As String = "localhost" 'サーバーのホスト名 Dim port As Integer = 2001 'サーバーのポート番号 Dim hostadd As System.Net.IPAddress = System.Net.Dns.Resolve(host).AddressList(0) Dim tcp As New System.Net.Sockets.TcpClient(host, port) 'TcpClientを作成し、サーバーと接続する 1台のマシンでのTCP/IP通信はこれで上手くいくのですが、 クライアント側のサーバー名を host = "192.168.1.13"とローカルマシンのIPアドレスにしたら うまくいきません。なにか間違ってるのでしょうか? 実際は、このアドレスを、グローバルアドレスに設定して、遠距離で通信したいと考えています。
118 :
デフォルトの名無しさん :2007/09/23(日) 17:21:48
両方IPにしてみた?
>>117 サーバー側がLoopbackアダプタでリスニングしてるせいだろう。
全アダプタでリスニングする。
Dim ipAdd As System.Net.IPAddress = System.Net.IPAddress.Any
>119さんの方法でうまくいきました。 ありがとうございます。 次は、ポートを開放してから、このサーバーを起動したまま、場所を移して クライアントをグローバルIPにして試してみます。
スレッド内でTimer動かしても動いてくれないのは仕様でしょうか?
どうやってスレッド外でコードを動かすのか教えてくれ
動くし そんな仕様ありえないし Timerってもいろいろあるし 今日は雨だし
>>121 Timerってなに?(いや実際自分で作れるし)
むしろ ベつスレッド内からタイマーコントロールの開始・停止を行うんじゃないかと予想してみる
126 :
デフォルトの名無しさん :2007/09/24(月) 02:00:31
>>72 質問した人と別人なんですが、このとき
Return?st2.uniqueID?=?2
の2を引数で渡すにはどう書くんでしょうか。
それともそういう使い方はしないのでしょうか。
>>126 C#ではこうかける。
int findID = 2;
struct2 rslt = Array.Find(structAry,
delegate(struct2 st2){ return st2.uniqueID == findID; });
C#3.0ではさらにラムダ式ですっきり。
int findID = 2;
struct2 rslt = Array.Find(structAry, st2 => st2.uniqueID == targetID);
VB.NETではfindIDをクラスのメンバー変数に持つしかない。
>>71 で
>Array.Find/Predicateは匿名デリゲートが使えないとありがたみがないからね。
と言ってるのはこのためだろう。
C#3.0と同じタイミングでVBでもラムダ式が使えるようになるさ XMLリテラルキモス
VBにどういう形で匿名メソッドやラムダ式を導入するか情報がなかなか出てきませんね。 VSのBeta2では今のところまだのようで、 LINQ文自体はC#のより拡張しててラムダ式なしで書けるようにしているようです。 文法的にタイトそうなのでどういう形でサポートするか興味があります。 こんな関数内関数でクロージャをサポートするんじゃないかと予想していますがどうなんでしょうね。 Dim k As Integer = 123 Function MyProduct(ByVal st2 As struct2) As Boolean Return st2.uniqueID = k End Function Dim rslt As struct2 = Array.Find(structAry, AddressOf MyProduct)
匿名メソッドやラムダ式 を使うタイミングってのが今一歩よくわかんない まぁ、書籍で読んで「こんなことできますよ」くらいしか知らないからで 実際にやってみたら何かいい使い道が浮かぶのかもしれないが
もう破綻してるんだね言語として また大改造するのかな
DEF FNが復活したらBASICのOLDファンにはうれしいな
そもそも特殊な言語使用など使う事はまずない。
Dim rslt As struct2 = Array.Find(structAry, AddressO Function MyProduct(ByVal st2 As struct2) As Boolean Return st2.uniqueID = k End Function
じゃなくて Dim rslt As struct2 = Array.Find(structAry, AddressOf Function(ByVal st2 As struct2) As Boolean Return st2.uniqueID = k End Function
匿名メソッドはどうなんの? ってかAddressOfもないだけかな? おう、3項演算子も導入されるのね…
おやB2からサポートされてたのか。 結果の型を推定する、遅延バインディングあたりは面白そうだ。 ステートメント本体を含むラムダとか匿名メソッドはまだっぽいけど?
>>139 beta2に間に合わなかった機能は多分無理なんじゃないかな
というかC#と同じ機能を持たせるみたいな公約とかあったっけ?
141 :
デフォルトの名無しさん :2007/09/24(月) 23:05:52
今、C#で作成したDLLのメソッドをVBのScriptからDLLのクラスを 生成しようとしているのですが、以下のエラーが出てしまいます。 ====================================================== コンパイラ エラー メッセージ: BC30188: 宣言が必要です。 行 8: t_class = New CSTEST.MyClass ソース ファイル: C:\test\test.aspx 行: 8 ======================================================= DLLの配値に関して特別な事をしなければいけないのでしょうか。 環境はIIS 5.1をWindowsXP SP2上で動作 test.aspxをC:\Inetpub\wwwroot\test CSTEST.dllをC:\Inetpub\wwwroot\test\bin にいれています。 test.aspxソース <%@ PAGE LANGUAGE="VB" %> <%@ Import namespace="CSTEST" %> <Script runat="server"> Dim val As Integer = 111 Dim t_class As CSTEST.MyClass Dim valrtn As Integer t_class = New CSTEST.MyClass t_class.setValue(val) valrtn = t_class.getValue() </Script> <html><head></head> <body>value = <%= valrtn %></body></html>
142 :
デフォルトの名無しさん :2007/09/25(火) 02:34:36
VS2003でMySQL5.1を使っています MySqlDataReaderを使ってデータを取得していますが、データの数を取得する方法がわかりません Public Dr As MySqlDataReader (略) While (Dr.Read()) i = i + 1 End While 現在こんな感じで取得する方法しか思いつきませんが、なにかプロパティとかあるのでしょうか?
countとかないの?
142で言うDr.countというのは見当たらないのです 今までは特に問題なかったのですが、Whileの前にレコード数を取得する必要が出てきて困ってます
>>142 IDataReaderは消火ホース型だから読み終わらないと件数は確定しない。
事前に件数が必要というのは固定の配列に格納したいのだろうけど、
可変のコレクションにつっこむのをすすめる。
select count(*) のクエリーを先に発行することで件数を求めることも出来るが、
当然実際にレコードを読み取るときには件数が変動している可能性はある。
>>141 Error ID: BC30188
このエラーを解決するには
非宣言ステートメントをプロシージャの本体に移動します。
147 :
142 :2007/09/25(火) 03:44:39
できないのですか・・・ 無理やりやるしかないですね フィールドのカウントはできるのにレコードのカウントが出来ないというのも困ったちゃんだ
あたりまえだろそれ…
149 :
デフォルトの名無しさん :2007/09/25(火) 19:58:18
>>128 なるほどー。
ありがとう、よくわかりました。
VISUAL BASIC
VBいらね C#だな
まあ同じことが,記述量がほぼ等しくて尚且つVB以上のこともできるからな 否定はしないが工程もしない
質問です、教えてください。 VS2005の日本語版で開発したアプリケーションは、表示用の文字列をすべて英語にしたとして、 それをそのままビルドして配布したら、.NET Framework がインストールされている英語圏の WindowsOSでも(Framework の Version が一致するものがインストールされてさえいれば)、 日本語圏と同様に動作すると考えていいでしょうか?
うん
>>154 あーそうだったんですか、ありがとうございました!!
言語別にリソースのサテライトアセンブリ作れ
157 :
デフォルトの名無しさん :2007/09/26(水) 15:44:11
VB2005でちょっとしたソフトを頼まれて開発しているのですが、 Text1に入力した数字を使って、Text2のフォントサイズをリアルタイムで 変更することはできないのでしょうか? Text2.Font.Size=Text1.Text では、ReadOnlyなのでダメとエラーが出るため、 困っています。
その都度フォントオブジェクトを作って代入すればできるだろうけどさすがにそれはやめたほうがいいよ
・Fontのコンストラクタ ・float型とstring型 ・リアルタイムというならTextChangedイベント
notifyiconから左クリックでもコンテキストメニュー出すにはどうすればいいでしょう
しかしなぜDataTableに取り込まないんだろうな そこまで大きなデータなんだろうか…・
>>160 コンテキストメニューをShowしてやればいいんじゃね?
DoWorkイベントに記述したコードから他のメソッドを呼び出したら、 呼び出したメソッドはバックグラウンドで実行されないんでしょうか?
BackgroundWorker の名前ぐらい出せ あとスレッドってもんを勉強して来い
165 :
163 :2007/09/27(木) 00:26:25
ありがとうございます。すいません、省略しすぎました。 もうひとつお聞きしたいのですが、本来BackgroundWorkerの DoWorkイベントに記述するコードが長すぎて一部を別のイベントかメソッドに 分割したいのですが、DoWorkイベントに引数を渡すことは可能でしょうか?
>>166 戻り値?でしょうか?
メソッド作ると値渡しか参照渡しで別のメソッドから引数を渡せますよね
同じような感じでDoWorkイベントに引数を渡す方法がないかな、と思いまして
説明下手ですいません
名前入れ忘れました
DoWorkから呼び出されるメソッドのはずがなぜかDoWorkを呼び出す話になる不思議
170 :
163 :2007/09/27(木) 01:08:20
>>169 一応お断りしましたが、最初の質問と2番目の質問は関連性はありますが別件です
紛らわしくてすみません
つうDoWorkイベントの引数くらい自分で調べてみろや
は? DoWorkに書く内容が長すぎて分けたいんだろ? つまり処理の一部を別メソッドに書いて、それをDoWorkから呼び出すんだろ? 分割したいのですが と DoWorkイベントに引数を が別の文章だとか言わないよな
173 :
163 :2007/09/27(木) 01:20:45
>>172 まことにおっしゃるとおりです
というかおっしゃるとおりでなかったのでおっしゃるとおりにします
脳みそ沸いててごめんなさい
ありがとうございました
174 :
デフォルトの名無しさん :2007/09/27(木) 01:22:04
もうバックグラウンド処理しないほうがいいよ おとなしくタイマーコントロールでも使ってれば? どうせフォーム終了させるときも同期とらずに終わらせそうだし
おれもしないほうがいいと思うわ。 はっきり言ってマジで。
177 :
163 :2007/09/27(木) 02:23:49
>>174 処理を途中で中止することができるようにするのが目的ですが
タイマーコントロールでもできるでしょうか?
マルチスレッドかApplication.DoEvents以外で実現できる方法があれば
お願いします
>>175 お慈悲に感謝
1.されます 2.可能です
>>162 その時にコントロールと位置を指定しろって言われるのだけど、コントロールって?
notifyicon入れてもだめだったし…
>>179 左クリックでWM_CONTEXTMENUでも自分に投げてやればいいんじゃね?
基本的な質問で申し訳ないですが 複数の変数をまるごとファイルに入出力する、セーブ&ロード機能は どのように書けばいいでしょうか?
182 :
181 :2007/09/27(木) 07:20:04
失礼; XMLエンコードシリアルで解決しました;
183 :
デフォルトの名無しさん :2007/09/27(木) 10:58:49
テキストファイルを書き換えたり、中身を削除するプログラムをVB 2005で作成しています。 iniファイルの中にアクセス先のファイルパスを書き込んであり、ファイルパスを読み込んでからファイルにアクセスするようになっています。 iniファイルからファイルパスを読み込んだまではよかったのですが、変換先のテキストファイルを読み込むときにエラーが発生します。 Dim path As String path = getIni(iniファイルのパス) Dim sr As New System.IO.StreamReader(path, System.Text.Encoding.Default) ここでSystem.ArgumentExceptionが発生します。 読み込み先のパスを”でくくっていないのが悪いのかと思い、 path = """" + getIni(iniファイルのパス) + """" と、書き換えてみたのですが、イミディエイトウィンドウでは ""変換先テキストファイルのパス と、表示されます。 iniファイルのパスは "iniファイルのパス" と、ダブルクォーテーションでくくられているのでその辺がまずいのかとあたりをつけてみたのですが、これ以上わかりませんでした。 変換先のファイルにアクセスするにはどのようにすればいいのでしょうか?
getIniの戻り値に無効な文字がふくまれてるんじゃね? \0とか
185 :
183 :2007/09/27(木) 17:04:52
解決しました GetPrivateProfileStringAの戻り値をStringで受けていましたが、System.Text.StringBuilderで受けるようにしたらきちんとパスを取得できました。
VB2005をインストールして初めて使ったのだけどびっくり! メニューバーコントロールとかが青になっているじゃないの。 これが売りなのかな
むしろプログラマでルナを有効にしてる奴がいることにびっくりだよ。 あんな曼荼羅みたいな原色のUIでよく作業する気になるねw
プログラマでってw どうみても個人の好みです。本当にあr(ry
クラシックか、青くならないVisualStyleにしてると 新しいメニューバーは綺麗に見えるね
極端な意見をさも当たり前のように言う人が多いね
使う人や標準の環境に合わせることも多いだろ。
いや、まあ確かに俺は世間が広い方ではないのは確かだが、 それにしても日常的にルナ使ってるプログラマって本当見たことないよ。 三流のなんちゃってPGみたいな人は例外として。
>>192 自分が三流でないことに気付いてない時点でおわっt
おれはLUNAにしてるお
LUNA SEA
>>195 イヴにライヴがあるらしいですね、らっしゃい
ルナシー行きたいな。 昔好きだった。
ToolStripRendererを継承してRendererを自前で用意すればどんなメニューでも
動画ファイルをデータベースを自作しようとしています その中のサブ機能で、動画ファイルから適当な時間で画像を抜き出して保存する (サムネイル作成みたいなイメージ) という事をやりたいのですが、VB.netではこういう時に一般的にどういう手段が使われるのでしょうか? aviファイルだとVFWとかいうwin32APIを使えば色々いじれるらしいのですが、 wmvファイルからだったりmpg2ファイルからだったりrmファイルからだったり 汎用的に対応できるようにする為の定番みたいなのはあるんでしょうか?
ListBoxで選択した複数項目をボタンで上下に移動できるようにしたいのですが 方法が思い浮かびません。 選択項目が1つの時はSelectedItemを一度削除して上または下のインデックスに 挿入してました。 何か良い方法があればお願いします。
NotifyIconから左クリックでコンテキストメニュー、出すのは出せたんだが 今度は閉じることが出来ない メニューアイテムクリックすると閉じるが、メニュー以外をクリックして閉じることが出来ない 仕方ないんでダミーアイテム入れてるけどみっともないし… どうすりゃいいんでしょ
205 :
デフォルトの名無しさん :2007/09/29(土) 14:29:22
F8連打キー作りたいんですが F8を押したらどうなるってコードは書けるけど F8を押すってコードは書けないんでしょうか?
206 :
デフォルトの名無しさん :2007/09/29(土) 15:10:51
保存しておいたプロジェクトを開こうとしたら、 関連データソースがありません とでてしまいました。 開く方法はありませんでしょうか?
>>205 timerかなんかでF8を押された時のメソッドを呼べばいいんじゃね?
>>202 1つの時と同じじゃね?
どこからどこまで選択されているか判断するプロパティくらいあるんじゃね
>>206 普通に考えて、存在しないものはどうしようもないのでは・・
参照ミスでデータソースがどこにあるか分っている場合は
プロジェクトファイル自体がさほど大きくはないので
XMLのように直接編集する手があります
211 :
210 :2007/09/29(土) 17:15:53
初心者かな ちょっと追記 SendKeysはVB6以前からある、キー押し発動機能 リアルなシミュレートがしたい場合は普通のモードを使うが 他ウィンドウ等に対して、遠隔操作や情報伝達等、 何かしら期待する動作がある場合、 確実に動作させるのがWaitモードでこちらを利用することが多い 特定の予約文字列を直接引数に送れば、後はSendKeys側で勝手に解釈してくれる 概要はこんなとこ MSDNも見てください
212 :
209 :2007/09/29(土) 17:32:13
>>206 まとめるとエラーのあるプロジェクトを強引に開く方法は2つ
1.プロジェクトファイルの中身をメモ帳で変更(データソース部を削除等)
2.新しくプロジェクトを作って、他の.vbファイルを手動で全部追加
お試しください
VB6使って以来最近になってVB2005使ったんだけど、 普通の関数を作成しようと思ってフォームのモジュールに書いたのだけど、 VB.NETからは標準モジュールにしか作成できなくなったのね・・・
何を言ってんだ?
215 :
デフォルトの名無しさん :2007/09/29(土) 17:59:59
化石VB6脳ですね。 入院加療の必要があります。
と、童貞が騒いでいます。
218 :
デフォルトの名無しさん :2007/09/29(土) 20:47:20
ToolTip クラスを使ってToolTip テキストを設定した場合、一応ヘルプにあるような ' Set up the delays for the ToolTip. toolTip1.AutoPopDelay = 5000 toolTip1.InitialDelay = 1000 toolTip1.ReshowDelay = 500 ' Force the ToolTip text to be displayed whether or not the form is active. toolTip1.ShowAlways = True ' Set up the ToolTip text for the Button and Checkbox. toolTip1.SetToolTip(Me.button1, "My button1") のような形では設定しているのですが、 ToolTip テキストが初めの数回だけは表示されるものの、その後は Mouseがホバーしても表示されない状態でした。 これは設定が不正なのでしょうか? この設定はFormのLoadイベントではなく、プログラムの途中で動的にコンストラクトした ユーザーコントロールに対して設定していました。
219 :
デフォルトの名無しさん :2007/09/29(土) 21:11:42
どうも、toolTip1.AutoPopDelay = 5000 の5秒の時間を連続して消費してしまうと その後はMouseホバーしてもToolTipを表示しなくなるような感じでした。 なので新しく該当のユーザーコントロールをコンストラクトして新たにToolTipが 設定されるとまたその5秒間が設定され、それが連続消費されるまでは表示できる ような感じでした。 この5秒を連続して消費しても、再びMouseホバーしたらまたToolTipを表示される ようにならないでしょうか?
221 :
デフォルトの名無しさん :2007/09/30(日) 02:17:38
>>220 あ、バグだったんですか。うわーん期待してたのになー・・・・
ガックシ。教えてくださったところ見て方法考えてみます。。。
2005はGUI関係バグ多いね。 MenuStripでもVisible = Falseのサブ項目を持ってるMenuStripItemをキーで 操作すると……。 間抜けすぎるなw
223 :
デフォルトの名無しさん :2007/09/30(日) 13:25:27
>>222 2005というか、「.NET Famework 2.0 のバグ」 ですよねこれって・・・
3.0 にUpしたら直ってるとか?あるいはその上までダメ???
>MenuStripでもVisible = Falseのサブ項目を持ってるMenuStripItemをキーで操作すると……。
これってのもVisible = Falseの場合に何か対策して解決できるのでしょうか??
Remove/Insertでそのつど対処するしかないんじゃね Reflection使って内部動作いじるのも面倒くさいし
標準モジュールに関数作ってそれを.NETの他の言語から使う事って可能ですか? それともクラスモジュールじゃなければ駄目なのかな?
標準モジュールなんてVB6の段階で既に 「VBの仕様上仕方なく使う」代物だったのにw 恥書きたくなかったら出来てもやらない方がいいんじゃないの? まあ見方によってはc#のスタティックなクラスの相当品だと言えなくもないのかもしれんが。
.NETになってからも標準関数は追加されている。 VB言語設計者も積極的に使っていると言ってる。
関数wwwww
うんちゃらモジュールだって実体はクラスでしょ? そとからアクセスできるか知らんが
>>225 VBモジュールの実体はsealedクラスになってるから、C#からは「モジュール名.関数名()」でアクセスできる。
ちなみにC#でVBの標準モジュール相当のものを作る場合
using Microsoft.VisualBasic.CompilerServices;
[StandardModule]
public static class StdModule {
public static int Mul(int i, int j) { return i * j; }
}
>>229 コンパイラ製作者の視点から見れば
本当はそれ逆に考えるべきなんだけどねw
わざわざ作っても大してありがたくもないけどね。
>>208 遅くなりましたができました。ありがとう。
abc\1\1 abc\1\10 abc\1\2 abc\10\1 abc\2\1 のようにアルファベット順に並んでいる文字列を 番号順に並べ替えるメソッドや関数などはないでしょうか?
まず日本語書けよ。 お前さんの意図をエスパーして作動するような関数があるとでおおもってんのかw
> あるとでおおもってんのかw
>>237 ありがとうございます。何とか実装できそうです。
239 :
238 :2007/09/30(日) 23:32:19
234でした。
>>238 が本人だとして,
ヘルプっつーかgoogleで根気良く3回くらい調べれば直ぐに出てきそうなんだがなぁ
「何とか実装できそう」なんて言い放っちゃってるけど,どうせまた「〜はどうすればいいでしょうか?」
ってどこかに聴きにいくのが落ちなんだろうねぇ
本人じゃないなら市ね
市ねは言い過ぎだと思うが、まあ書いてる文章からすると 正しい推測だと俺も思うね。 ダメグラマは説明能力がない。説明能力がない、という自覚もない。 なにより、説明能力がないならないなりに、自分の意図を他人に理解してもらおう、 という努力が見られない。
ここの住人は極論大好きなのな
自分で調べる人だらけになったらこのスレは必要なくなるぜ?
いいことじゃまいか。
245 :
238 :2007/10/01(月) 00:49:12
>>240 間違いなく本人です。
検索が下手なので教えてもらったページは知りませんでした。
ヘルプではIComparerまでたどり着いてましたし、Array.Sortは使ってますが
ほかの手段もあるかもとおもい、抽象的に質問しました。ごめんなさい。
>>237 さんの回答はベストアンサーです。
>>241 とりあえず
>>237 さんには理解してもらえたようです。
理解するほうに努力を求めるな。
247 :
237 :2007/10/01(月) 01:40:47
IComparerとSortを知ってて他の手段を知りたいならそう書けばいい。
>>241 の言っていることは間違ってないと思う。
ただ「でおおもうよ」って書きたかっただけ。
自然ソートの質問だと思ったが違うの?
VB.NETでWindowsアプリケーションを作る際に、 エラーメッセージなどのメッセージ表示部分を クラスライブラリにしようと思います。 そこで質問なのですが、メッセージの定義内容 (メッセージ本文やアイコンなど)を どういう形で持たせるのが一般的か、ご教授いただきたいのです。 参考になりそうなサイトの情報提供も有り難いです。 よろしくお願いします。
>>249 > そこで質問なのですが、メッセージの定義内容
> (メッセージ本文やアイコンなど)を
> どういう形で持たせるのが一般的か、
リソースとして持たせるのが一般的なんでねーの?
多言語対応するんじゃないなら、ベタにハードコードしちまうのが 結局一番分かりやすいと思う。
252 :
249 :2007/10/02(火) 00:40:29
>>250 ありがとうございます。
やはりリソースが一般的ですよね。
ただ、今回はひとつのメッセージIDに複数の情報(メッセージ本文、アイコン、ボタン種別など)を
持たせたいと言うことで、他の方法を考えようと思います。
>>251 ありがとうございます。
なるほど。確かにそれが一番シンプルですよね。同感です。
ただ、今回は敢えて外に切り出すという前提条件なので、他の方法を検討します。
>>252 複数持たせる場合も普通はリソースですけどねぇ
逆に他に何があるか聞きたいですよ
IEのアドレスバーのComboBoxのように、ComboBoxのテキストの先頭に アイコンを付けることは可能でしょうか?ComboBoxの何かのプロパティに アイコンをセットするとかできれば簡単なのですが・・・それとも新しくコントロール を作成しないといけないでしょうか?
>>252 データベースって知ってる?
知らないならググるといいナリよ。
>>256 なるほどーそういうときにOwenerDrawって使うのですか!
でもこれ結構面倒そうですね・・・時間掛かるだろなぁ・・・
わかりました、やるかどうか考えて見ます。どうもでした。
クライアント/サーバーアプリケーションを作ろうとした場合、 クライアント側からサーバーへの問い合わせをし、 サーバーアプリケーションがそれに返答する、というタイプの方式では、 通常はどんな形態の応答構造を使うでしょうか? データベースを利用してしまうのが一番楽でしょうか? それともデータベースは使わない場合、あるいは データベース等のインストールや設定をせずに簡単に済ませる方法 としてはどのような方式がお勧めでしょうか。Webサービスなどの方が 便利でしょうか、それとももっと楽な方法があるでしょうか? よろしくお願いします!
>258 まずは、クライアント/サーバーのどういったアプリケーションを作ろうとしている訳?
>>259 たとえばですが、クライアント側がもつべき設定上の要件をサーバーで
集中的に管理して持ち、クライアントは自分の起動時にその設定を問い合わせて
から作業に入れるといった場合、簡単な情報だけにかぎられるためデータベース
にするまでもなくやれないものかと思いまして、データベースなどをインストールさせずに
解決できれば楽でいいのではと。こうした目的でも本当なら通常はデータベースで行う
べきでしょうか・・・
情報の一元管理をするってことか。 DBでもXMLでも好きなの使えばいいじゃん。
>>261 それと、あと情報を公開でなく中身の情報はあくまで秘匿してモロにファイル
を晒さず、管理者だけがその情報を管理して変更可能とするとしますと、
やはり専用のサーバーアプリケーションを置いてそれを情報の出入り口にしておく
ようにしたほうがいいのではと思ったのでしたが、そういう場合は普通は
やはりデータベースにするべきでしょうか?
Xmlを使った場合でもファイルは暗号化、復号化して隠しファイル等にできるかと
思うので、その場合でも出入り口をどうするとクライアントとの通信ができるか
ということなんですが、その場合はIISも設定しない、データベースもインストールしない、
という方法として、後はDCOMとかになるのでしょうか?それもまだ勉強してないため
よくわからないのはありますが・・・。。
265 :
デフォルトの名無しさん :2007/10/02(火) 20:36:36
配列の中身を「文字順」ではんく「数値順」でソートしたいのですが、 どうすればいいのでしょうか?
>>263 .NETリモーティングというものを初めて知りました。ありがとうございました。
>>264 言葉の使い方からわかりませんでした。別PCのデータにその別PCでの
アプリケーション実行を通してアクセスする、あるいは情報をもらう、という
意味でした。
そのようなIComparerで比較してソートすればよか
>>265 IComparerはもちろん自分で実装するんだよ
そのようなIComparerって何ですか?とは聞くなよ
269 :
デフォルトの名無しさん :2007/10/02(火) 22:36:24
自前で実装しなければいけないのですね。 数値順でソートするアルゴリズムの定石を教えて下さい。
ちとずれてるんだなそれは
>>269 あなたにソートを自前で実装しろなんて無茶なことは言いませんよ
自前で実装するのはIComparer/IComparer<T>.Compareメソッドだけでいい
MSDNのArray.Sortのオーバーロードを調べることをお勧めする
272 :
デフォルトの名無しさん :2007/10/02(火) 23:03:36
ID変わりましたが269です。 もちろん自前でソートのアルゴリズムを書くわけではありません。 数値順でソートするときの比較関数の定石が知りたいのです。
定石も糞もIDもねーよw
わからないなら黙ってればいいのに
ちとずれてるんだなそれは
return Int32.Parse(1つ目の引数の数値部文字列).CompareTo(Int32.Parse(2つ目の引数の数値部文字列)) でよかったかな
277 :
269 :2007/10/03(水) 00:09:22
あ、すみません、数値だけならdoubleかfloatに型変換すればいいのはわかるのですが、 ファイル名をXP以降のエクスプローラのようにソートしたいのです。 APIが用意されていますが自前でやりたいなと。 でもこのすれで聞いたのは間違いなきがしてきました。。 ちなみにいい案が出てこなかったら、数値部分を16桁ぐらいに展開して野郎と思っています。
野郎
>>277 Array.Sortじゃだめだったの?
すんげー情報後出し……
>>277 あ、すみません、ちんこだけならまんこかあなるに挿入すればいいのはわかるのですが、
源氏名を登録以降のエクスプローのようにソープしたいのです。
たらいが用意されていますが自前でやりたいなと。
でもこのすれで聞いたのは間違いなきがしてきました。。 (はぁと
ちなみにいい案が出てこなかったら、数値部分を16桁ぐらいに展開して野郎と思っています。
つまんね
ファイルの拡張子によって「これはExcelファイル」「Wordファイル」「PowerPointファイル」 などと知るにはどうすればよいでしょうか?(Explorerでなされる表示のような感じで) もしかするとこれはレジストリーを見ているのでしょうか?その場合にはどんなクラスで 調べればいいでしょうか?
>>283 ご明察
でもエクスプローラは「これはExcelふぁいる」とか「これはWordふぁいる」とか
そこまで知的な推察はやっていなくて,
単純にファイルの拡張子を使ってレジストリから必要な情報を集めてきているだけ.
(最近はNTFS副ストリームからも拾ってきて色々やってるよーだがしらん)
というわけで
> などと知るにはどうすればよいでしょうか?(Explorerでなされる表示のような感じで)
というのはちょっと方向が違う.
何がどう違うのかは,もっとエクスプローラじゃなく貴方がやろうとしてることをかかないと分からん.
> その場合にはどんなクラスで調べればいいでしょうか?
vb.net 2005ならMy.Computer.Registryでレジストリ見れたはず.
285 :
デフォルトの名無しさん :2007/10/03(水) 13:51:27
ちょっとDtaGridViewで困っています。 System.Data.NoNullAllowedExceptionがDataGridViewで発生するのですが 以下のような操作の場合にエラーが起きます。 (例) DataTable定義 ID integer(not null & AllowDbNull = false) PK Name String これをDataGridViewにバインドさせて使用しています。(Name列はDataGridViewでリスト形式のComboboxColumnから選択) 1行目つまりDt.Rows.Count=0で入力を開始し IDに数値を入力しNameにマウスなどでフォーカスを移動させます。 (この時点でDataGridViewは行の追加削除が可能な為、新規入力行が表示されます) このあとESCキーを押すと例外が発生するのですがDataRowErrorでキャッチすることはできません。 KeyPressでESCを抑制しようとも考えたのですが、ComboboxEditingControlでESCをキャンセルしようとしましたが難しいようで・・・ なお、1行目がある状態で同じ操作をすると同じエラーをDataErrorイベントでキャッチできるようです。 説明が難しくてうまく伝えられないのですが、なにかご存知の方がいらっしゃいましたら回避方法の知恵をお借りできませんか? 出来ればDataTableはAllowDbNullはTrueにせずに作っておきたいのですが・・・ スタックトレースの一部を掲載しておきます。 Message="列 'ID' に Null を使用することはできません。" 場所 System.Data.DataColumn.CheckNullable(DataRow row) 場所 System.Data.DataTable.RaiseRowChanging(DataRowChangeEventArgs args, DataRow eRow, DataRowAction eAction, Boolean fireEvent) 場所 System.Data.DataTable.SetNewRecordWorker(DataRow row, Int32 proposedRecord, DataRowAction action, Boolean isInMerge, Int32 position, Boolean fireEvent, Exception& deferredException) 場所 System.Data.DataTable.InsertRow(DataRow row, Int32 proposedID, Int32 pos, Boolean fireEvent) 場所 System.Data.DataView.FinishAddNew(Int32 currentIndex, Boolean success) 場所 System.Data.DataRowView.EndEdit() 場所 System.Windows.Forms.CurrencyManager.EndCurrentEdit() 以下沢山つづく
コンテキストメニューが閉じられたことを(つーかキャンセルされたことを)検出する 方法はあるでしょうか
MSDN読め
288 :
デフォルトの名無しさん :2007/10/03(水) 19:09:40
>>284 やはりレジストリーの情報などから知るのですね。
>NTFS副ストリームからも拾ってきて色々やってる
>vb.net 2005ならMy.Computer.Registryでレジストリ見れたはず.
とりあえず教えていただいたこのクラスを勉強してみます、
ご指導ありがとうございました!!
289 :
デフォルトの名無しさん :2007/10/03(水) 19:15:15
>>288 追記ですが、やろうとしていることはそうした情報をなんらかの形で知れれば
ということでした。何をどうすれば情報が入手できるか皆目わからなかったのです。
それにしても、皆様のお蔭でやっとさでこれましたが、プログラムの世界は本当に
大変な苦労をして出来上がっているのだとここ半年ほどは日々実感する次第です・・・。
290 :
デフォルトの名無しさん :2007/10/03(水) 22:13:41
FTPでDBサーバにCSVをアップロードして成功したらローカルのファイル消したいんだけど、 Shell使うかMSDNのクラス使うかWinInet使うかどれがいい?
>>290 FTPでDBサーバにアップロードがよく分からないけれど
「アップロードに成功」をどうやって確かめるのか分からないけれど
ファイル消すのはFrameworkに任せてもいいと思う
FTPクライアントもFrameworkに任せていいと思う
292 :
デフォルトの名無しさん :2007/10/03(水) 22:53:27
VB.NETのクライアントでファイル指定させて、DBサーバのディレクトリにアップロードして、 PL/SQLでファイル読み込んでDBに反映させるっていう処理なんだけど・・・どうしたもんかなとおもって・・・。 Frameworkに任せるというのはなにどういうこと? 文字通りおまかせ?
>>292 どうしたもんだろうね
よくわからんよ
> MSDNのクラス使う
これ,.net frameworkのクラスを使うってことだよね?
# ファイル消すのはFrameworkに任せてもいいと思う
それの俺的表現がこれ↑
294 :
デフォルトの名無しさん :2007/10/03(水) 23:16:43
Form1_Activateイベント に TextBox1.Focus() と書いてから実行してもフォーカスがButton1のところにあるままなのはなぜ?
VB2005でTPC/IP通信を以前おききしたものですが 通信の開始がうまくいかず、悩み中でしてご教授ください。 ホスト側、クライアント側のソースは以下のとおりで、 ローカル内では、うまくいくのですが外のPCからのグローバルでは うまくいきません。210.XXX.XXX.XXX"は、ホストのグローバルIPアドレスで ホスト、クライアント共に、ポートの開放は行ってあります。 クライアントの「tcp As New System.Net.Sockets.TcpClient(host, port) 」の部分で {"対象のコンピュータによって拒否されたため、接続できませんでした。"}のエラーでとまります。 '----ホスト側-------------------------------------------------------- Dim host As String = "localhost" Dim port As Integer = 2001 Dim ipAdd As System.Net.IPAddress = System.Net.IPAddress.Any Dim listener As New System.Net.Sockets.TcpListener(ipAdd, port) listener.Start() ' ----クライアント側------------------------------------------------ Dim tcp As System.Net.Sockets.TcpClient = listener.AcceptTcpClient() Dim host As String Dim port As Integer = 2001 ' サーバーのポート番号 host = "192.168.1.13" ' こちらではローカル内での通信OK host = "210.XXX.XXX.XXX" ' こちらではローカル内、グローバルでも通信NG Dim hostadd As System.Net.IPAddress = System.Net.Dns.Resolve(host).AddressList(0) Dim tcp As New System.Net.Sockets.TcpClient(host, port)
>297 外部からのPINGでとおってなかったですorz とおるようにしたら、進みました! なんとかうごきそうです。 ありがとうございます。
ディレクトリのNTFSアクセス権設定をプログラムで行うには、.NET上での 特定のクラスはありますか?ない場合は、いわゆるcalsコマンドで実行する のだと思います。そのときはそれをVB.NETのプログラムからどのようにして 叩くのか、教えてください。よろしくお願いします。
>>300 IO.Directory
にあるのではなくって?
他にやるならWSHでもAPIでもWMIでもあると思うけど・・・・
302 :
デフォルトの名無しさん :2007/10/06(土) 15:44:29
>>301 GetAccessControl()やSetAccessControl()がそれだったんですか、
わかりました!助かりました、ありがとうございます!!
303 :
デフォルトの名無しさん :2007/10/06(土) 15:48:56
それからついでですみませんが、隠しファイルを表すアイコンが薄い色で表示されるのは、通常のアイコンに何かの修飾を施して作り出すのでしょうか。 その場合は何か簡便な処理メソッドなどがあれば教えてください。
>>303 多分アルファチャネルビットマップ
はるか昔からある機能
VB.NETならGDI+で直接操作出来ます
>>304 >アルファチャネルビットマップ
>昔からある機能
そうだったんですか。
>GDI+で直接操作
方法については何かのクラスメソッドで対応するのですね、探してみます。
またわからなかったらお聞きします。何卒よろしくお願いします。
プログラムしてると溜まってくる「俺様コレクション」は みなさんどうやって管理してますか? 自分は印刷してとってありますが、ほかにいい方法があれば 教えてください
俺はとりあえず「俺様スクラップ」にしてるよ。
俺は「俺様マネージャ」で管理してるなぁ
まあ2chで馴れ合いレスして嬉しくなっちゃう馬鹿が何やってもやらなくても一緒 そもそも「俺様コレクション」とか「管理」とかいう言葉は具体的に何のこと言ってるんだよ
>>309 > 「俺様コレクション」とか「管理」とかいう言葉は具体的に何のこと言ってるんだよ
> 「俺様コレクション」とか「管理」とかいう言葉は具体的に何のこと言ってるんだよ
> 「俺様コレクション」とか「管理」とかいう言葉は具体的に何のこと言ってるんだよ
> 「俺様コレクション」とか「管理」とかいう言葉は具体的に何のこと言ってるんだよ
たとえばタバコに火をつけたくて,ライターを持ってないときに
「すみません,何か火をつけるものありませんか?」
→「『何か火をつけるもの』とかいう言葉は具体的に何のことを言ってるだ?」
\(^o^)/
2ちゃんねるですら馴れ合い出来ない人は 実社会の人間関係だと大変なんだろうな・・・
>>310 > 「すみません,何か火をつけるものありませんか?」
> →「『何か火をつけるもの』とかいう言葉は具体的に何のことを言ってるだ?」
→「あ,すみませんライターかマッチでもあればと思ったんですけど・・・」
→「どんなライターだ?マッチはどこの銘柄がいいんだ?具体的に言えよ」
→「サーセン^^;;;;;;;」
2ちゃんねるの殺伐とした雰囲気を実社会に持ち込む奴が居て困る
>>310 ガキみたいな突込みする前に 306 が具体的になんなのか行ってみたら?w
>>314 アホな頭で一生懸命あら捜ししないでいいから
少しは足りない脳みそで具体例を考えてみたら?
俺様コレクションについて現在わかっていこと ・プログラムしてくると溜まってくる ・印刷できる
>>316 その2点から推測できない脳みその構造体がかなりヤヴァイ
書き直したほうがいい
C#スレと違って流石VB房!と言わんばかりのスレだな。
>>318 お前頭いいな。
ストレスだと思ってたけど印刷にあてはまらなくて悩んでたんだ。
人を攻めるのだけは得意なヤツいるよなw 自分は何もできんくせに
突っ込むのは簡単なんだよ それを実行にうつすとなると難しい あいつらは与党じゃないから突っ込みまくってるが 与党になったてあれと同じ質問に回答できるかどうかは微妙なところかもな
324 :
デフォルトの名無しさん :2007/10/08(月) 23:56:01
>>322 いやーどうだろ、できてもやらない人もいると思うよ。
プログラムでもられてもああだこうだといってできない理由並べる人もいるでしょ、
ほんのちょっとしたことでも。
まー自民等って官僚にどうして頭上がらなかったのかはこの質問でとてもよくわかるよ
さすがVB房
突っ込みはバカでもできる ボケこそがお笑いの本質だよ
>お笑いの本質 なるほど政府はお笑いかw
つまり「俺様コレクション」じゃなくて「俺様アレイリスト」ならいいわけか
流れ読まずに悪いんですが、 ContextMenuのMenuItemにToolTipを配置するにはどうすればよいのでしょうか? 2005です
ToolStripMenuItemのプロパティの一覧をじっくり見る
すみません。書き忘れてました。 現状2005しかないので2005で開発してるんですが、 後から2003に置き換えるので、2005のコントロールが使えませんorz
気軽に置き換えって言うけどな
あふぉかと
337 :
335 :2007/10/11(木) 16:46:35
>>336 TreeViewでアイコンの透明部分を有効にするのはTreeViewのプロイパティの
設定でしょうか、その場合どのプロパティでしょうか。あるいはもしかして、
TreeNodeのプロパティやるのでしょうか。
>>337 訂正
>プロイパティ → プロパティ
>TreeNodeのプロパティやるのでしょうか → TreeNodeのプロパティでやるのでしょうか
>>338 TreeViewに設定しているImageListのColorDepthやTransparentColorは適切か?
もともとのアイコンが腐ってるのではないか?
ISOイメージ形式を扱いたいのですが、参考資料を見つけられません。 ヒントだけでもいいので教えてもらえないでしょうか。 やりたいこと ・ISOイメージ内からの特定ファイルの抽出
TrackPopupMenuでコンテキストメニューを表示した場合Addhandlerで指定した clickイベントが起こらないし、フォームのwndProcでメッセージモニタしてもWM_COMMAND 来ないし、かろうじてTPM_RETURNCMDすると選択値は帰ってくるものの何故かindex+256 だし… どうするのが本当なんでしょ
345 :
338 :2007/10/12(金) 00:30:27
>>339 すみません、IamgeList の TransparentColorが設定されていませんでした。
ご指導ありがとうございました、助かりました。
>>344 イベントハンドリング等をマネージド内でやるならTrackPopupMenu使うな
TrackPopupMenu使うならMSDNくらい読め
msdn嫁しか言えないならレスしなくていいよw
TextBoxのValidatingで入力した値をチェックして(エラーだったら、e.Cancel = True)、 Validatedで入力値によって処理を変えています(Focusで飛び先を変えるとか) ロジックはValidatingの処理結果をFormのPrivateな変数にいれて、 Validatedでその変数を参照するにしているのですが、コントロールの数が多いと、 どうにもプログラムが追いづらいです。 Validatingでの処理の結果を、ダイレクトにValidatedで拾う方法ってないでしょうか? ひっとしたらValidatedを使わずに、Validatingで全て処理するのが普通だったりするのでしょうか。
349 :
デフォルトの名無しさん :2007/10/12(金) 18:24:59
質問があります。 DBプログラミングにおいて、2003と2005では、書き方に相当な差があると 聞いたのですが本当でしょうか? よろしくお願い致します。
総統も相当冗談がお好きなようで
そっとしておく。。
VB.NET 2005 でアプリ内でFLVを再生させたいと思っています。 FlashのACTIVE Xが入っているとか制限があってもいいので再生させられるいい方法はないでしょうか?
353 :
352 :2007/10/13(土) 16:34:32
追伸 IEのコンポーネントを使う手もあったのですが、出来ればこの手法は使いたくないと考えています。 どうしても直接再生できないのであれば使うしかないとは思うのですが・・・
WMPコンポーネントを使う
>>354 メディアプレイヤーで再生させようとしたら警告でるけど再生できるようでした
その方法をまず試してみることにします〜
356 :
352 :2007/10/13(土) 17:27:09
コンポーネントを使用して再生するだけの簡単なアプリを作成してみました。 WMPコンポーネントを使用して自作アプリを作成し、メディアプレイヤー本体と自作アプリ側の両方で再生したのですが WMP=警告は出るが再生できた 自作アプリ=警告が出てコーデックの自動ダウンロード→失敗→音だけ再生 という結果になってしまいました。 どうもWMPアプリ本体側でコーデックとかの選別をいろいろやってくれてたようで、なかなか難しそうだなと・・・ とりあえず結果のご報告です。
プロパティグリッド(PropertyGrid)で、 Text編集の項目を複数行編集するには属性をどう設定すればいいでしょうか。 また常にIMEを活かしておきたい場合はどうすればよいでしょう? またこの辺のことを知るにはHelpのどの辺りのところを見ればよいでしょうか。
> Text編集の項目を複数行編集するには属性をどう設定すればいいでしょうか。 UIエディタを自作する必要があると思う UITypeEditorを調べてみ > また常にIMEを活かしておきたい場合はどうすればよいでしょう? エディタ自作してればImeModeでどうにかなるんじゃないかな > またこの辺のことを知るにはHelpのどの辺りのところを見ればよいでしょうか。 デザイン時サポートの拡張 ユーザー インターフェイス型エディタの概要 とはいえWPF時代はどうなることやら
MultilineStringEditor
>>358-359 ご教示と情報ありがとうございました!
>>359 Helpで見ることができました、助かりました、さっそくこれでやってみます!
>>358 ご指導感謝です。MultilineStringEditorでImeModeをどうするべきか考えてみます、
また、教えていただいた 「ユーザー インターフェイス型エディタの概要」もHelpで
勉強できそうでとても助かりました。
PropertyGridはものすごく便利なのですがこうした知識を学ぶ必要があるのですね、
しっかり勉強したいと思います。ありがとうございました!
AxWebBrowser(HTMLDocument)からMouseイベントを受け取るにはどうすればいいんでしょうか? MouseMove/MouseDown/MouseUpを受け取り、マウスジェスチャを実装したいのですが、 AxWebBrowserにはこれらのイベントがなく、乗せることもできず、 HTMLDocumentには、Mouseイベントがあるものの、onmouse〜というもので、 onmousemoveでドラッグが受け取れなかったり、イベントがキャンセルされたりと、挙動が違っています。 詳細は省いてますがソースは下のような感じです。開発環境は.NET2003です。 Dim doc As HTMLDocument = AxWebBrowser.Document AddHandler CType(doc, HTMLDocumentEvents2_Event).onmouseOver, AddressOf MG_MouseOver AddHandler CType(doc, HTMLDocumentEvents2_Event).onmousemove, AddressOf MG_MouseMove AddHandler CType(doc, HTMLDocumentEvents2_Event).onmouseup, AddressOf MG_MouseUp Private Sub MG_MouseOver(ByVal e As IHTMLEventObj) ジェスチャ開始 End Function Private Sub MG_MouseMove(ByVal e As IHTMLEventObj) ジェスチャ中(ラベルにマウスの軌道を矢印で表示) End Sub Private Sub MG_MouseUp(ByVal e As IHTMLEventObj) ジェスチャ終了 End Sub
362 :
361 :2007/10/15(月) 22:44:01
一応自己解決しました。 不具合も多いですが・・・
メニューアイテムのメニューIDがprotectedのためアクセスできんと言われるのだが どうすればいいのでしょう
なんに使うんだよそんなの
TrackPopupMenuとマネージドのMenuをまぜまぜして使ったときじゃね? とりあえずGetMenuItemID
>>365 やっと納得のいくものになりました
ありがとさんでした
.NETでWindowsアプリを作ったけど、やっぱどうしても起動に 時間がかかってしまう。これは.NETだからしょうがないんだけど。 そこで、起動までスプラッシュ・ウィンドウを表示させるようにした。 ところが、そのスプラッシュ自体が表示されるまでに、やっぱ 時間がかかっちゃうんだよなw 考えてみたらそのスプラッシュだって .NETで作ってるんだから、当たり前っちゃ当たり前なんけどww スプラッシュ用のスプラッシュも作るかwww
ngen使えよ。
>>367 何もかも1つのアセンブリにまとめてしまってないか?
起動時に必要な最低限のイメージだけ単独の
アセンブリにして、最初はそれだけをロードするようにしる。
そんな限定的な場面でしか使えないような小技を得意になって言うこともなかろうに。。
∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ こいつ最高にアホ 彡、 |∪| / / __ ヽノ / (___) /
すべてを1つのアセンブリにまとめても実際にロードされるのは そのとき必要とされるクラスだけだよ(・∀・) むしろ、個々のクラスを不必要に巨大化させないことが肝要
お前もアホ。 アセンブリのロードそのものにも結構時間はかかるぞ。 でかけりゃだが。
そして一番大きいのはSystem.Windows.Forms.dll
>>373 お前もアホ。
起動が遅いことの最大の問題は、CLRが中間コードを
コンパイルするオーバーヘッドだろ。アセンブリのロードなんて
単なるファイル読み込みにすぎない。
アホちゃいまんねん
>>375 起動最初のコードだけでどんだけでかいのを想定してるんだお前は…
アセンブリのロードが単なるファイル読み込みだって?
どうもJITコンパイルを変に重いと思ってるやつが多いんだな。 起動が遅い原因てそれじゃないことが多いのに。
じゃあNgenの存在理由は何だ?
あのさ、変に重いと思ってるってかいてるだろうに。 ぜんぜん無意味なんていって無いよ。
こんな時間に人が居るとも思えませんが、 質問です、 VB.NETの初心者質問スレは無いのでしょうか? ソレらしいスレが見当たらないのですが、ココで質問しても良いでしょうか?
いいよ
383 :
381 :2007/10/18(木) 02:15:15
ありがとうございます。 画像の読み込み→ピクチャボックスへの表示が、うまくいきません。 いくつかの書籍を見たところ、 Dim ○○ As Image = Image.FromFile("ファイル名") の形で画像を読み込み、 ピクチャボックスにPaintイベントでもって表示する ・・・・といったものがほとんどでした。 タダ試してみたところ、 画像の読み込みの段階で毎回エラー(ハンドルされていない例外が発生しました)が発生します。 プログラムを実行した段階で フォーム上に指定した画像が出ているようにしたいのですが。 このエラーはどういうことでしょうか? つたなく見苦しい質問で申し訳ありません。 あつかましいようですが「見本」のようなファイルが見れるサイトなど無いでしょうか?
Paintで描画するならPictureBoxの意味ないけどな まずどんな例外なのか書かないのはなぜ?
すいません、VB.netでOracleのSQLを実行しようとしたら、 下のようにSQLの実行結果をリードする処理が異常に遅いのですが原因はなんでしょうか? Dim odr As OracleDataReader ・ ・ sql.CommandText = "SELECT * FROM 職員マスタ WHERE 職員コード = '001'" odr = sql.ExecuteReader If odr.Read Then ← この行が遅い ・ ・ ・ End If ちなみに 特定のテーブルを呼ぶと発生(カラム数が少ないテーブルほど発生している) 取得件数0件でも発生 「Do While odr.Read」だとループの最初の1回目のみ遅い のような感じになってます。
386 :
381 :2007/10/19(金) 00:37:01
失礼しました。 ’System.IO.FileNotFoundException’のハンドルされてない例外がsystem.drawing.dllで発生しました。 と、出ます。 追加情報にドライブの保存先とファイル名が出ています。 >>Paintで描画するならPictureBoxの意味ないけどな 書籍にそんな事が書いてあったのは覚えています。 PictureBoxを間借りしているというか上に乗っかっているだけ、 ということでしょうか?
質問の仕方がよく判らないのですが、 エラーの内容を写せば大丈夫でしょうか?
>>386 例外そのままだよ
ファイルが見つからないって言ってるよ
Paintイベントで描画するならPanelでもLabelでも基本は同じ
>>386 フォームのLoadイベントにより画像読み込みを実行しているということは
OpenFileDialogを使っていない。
このことからエスパーしてみると、
Dim ○○ As Image = Image.FromFile("ファイル名")
この部分の"ファイル名"のところが"image.jpg"とかになっていると思われる。
ここで言うファイル名というのは当然そのファイルの絶対パスでなければならない。
Cドライブのルートに画像ファイル(image.jpg)を置いて、
Dim pict As Image = Image.FromFile("c:\image.jpg")
とでもしてやってみれば?
相対パスでもいいけどね。 ".\image.jpg"とか。 まぁ、DebugフォルダなりReleaseフォルダに入れてないと 当然動かないけど。
392 :
386 :2007/10/20(土) 00:47:01
Public Class Form1 Inherits System.Windows.Forms.Form Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim bmp As Image = Image.FromFile("c:\WINDOWS\maru.bmp") 現在はこうなっています、 ナゼファイルを見つけてくれないのでしょうか・・・・
>>392 そもそもファイルは見つけてほしいものじゃなくて,教えてあげるものだし
俺の家は C:\Windows そのものが無い,環境によって読み込ませるパスを指定しなおせば単純に直るわけだが
それすら思いつかないなら死ね
>>385 sql は OracleCommand型だよね?
395 :
デフォルトの名無しさん :2007/10/20(土) 20:07:03
自動対戦オセロプログラムを作ってみました。 ユーザが一時停止可能なように、主フォームから 別スレッドを起動して、その中でゲームを進行させます。 ゲームが終了したら、結果表示フォームを showdialogで開きます。ownerは主フォーム。 このとき、主フォームがモーダルにならないのですが、 モーダルにするにはどうしたらいいんでしょうか。 言語は VB.Net 2003です。
どういう意味か分からん。
そこまでできてて、モーダルにならないので悩むってのが分からん。 主フォームのスレッドでダイアログだせばいいんじゃね?
398 :
395 :2007/10/21(日) 10:57:24
こんな風にしてみました。 ' スレッド実行するためのデリゲート Private Delegate Sub GameThreadDelegate ' 主フォーム ゲームスレッドを起動する部分 Private Sub StartGame() Dim thrd As New GameThreadDelegate(AddressOf GameThread) Dim cb As New AsyncCallback(AddressOf EndGame) thrd.BeginInvoke(cb, Nothing) End Sub ' ゲーム進行する部分(スレッドで実行) Private Sub GameThread() ' ゲームが終わるまでループ(コード省略) End Sub ' ゲームが終わった時点で呼び出されるコールバックメソッド Private Sub EndGame(ByVal ar As IAsyncResult) Dim thrd As GameThreadDelegate = Ctype(ar, AsyncResult).AsyncDelegate thrd.EndInvoke(ar) ' 結果を表示 Dim rf as New ResultForm rf.ShowDialog(Me) End Sub
BackGroundWorker使うのが一番簡単よ。
400 :
395 :2007/10/21(日) 12:43:47
なるほど、「.NET Framework 2.0」が使えたらそうしたいです。
BackGroundWorkerって、自分でThreadクラスを作成して実行する 従来のやり方とどこが違うんでしょうか?
っていうか、同じクラスにあるメソッドをわざわざコールバックする意味って何だろ?w それ以前にわざわざデリゲート使う意味もよくわからん。 普通にスレッド起動すればいいと思うけど。。 あと、BackGroundWorkerなんて個人的には存在意義ゼロだと思うな。 Myと一緒で初心者に悪い意味で媚びるだけの代物に過ぎんと思う。
スレッド越しアクセスの質問が減るならそれだけで十分な意義だ 減ってないのが問題だが
スレッド1からスレッド2を起動したとき、 スレッド2の終了時点でスレッド1の処理を起動することってできるの?
スレッド1がGUI持ちスレッドなら簡単に
Invokeを使えばいいのか。
しっー!
ToolStripMenuItem のHeightプロパティを変更してItem間の隙間を 少し詰めたいと思ったのですが、値を代入しても元の 22 という値に 戻ってしまうのですが、これを自由に設定できるといいのですが。 Fontのサイズを変更するとそれに合わせて変わるのはわかりました。 ただ自由には設定可能にはなっていないようでした。これが何かの制限が あったとしたとき、それを外す方法とかあるでしょうか。よろしくお願いします。
410 :
デフォルトの名無しさん :2007/10/21(日) 23:38:31
.NETで別スレッド実行するやり方って 何種類もあって迷うよ(´・ω・`)
>>410 プリミティブな方法を知っていないと見た
基本はThreadとThreadPoolだけっしょ
414 :
409 :2007/10/22(月) 10:01:15
>>411 あーなるほど!ありがとうございました!!
質問です。 クラス内に Private bmp As Bitmap というメンバがあり、クラス内で使用しています。 このクラスのあるメソッド内にこのメンバをNewし直している 「bmp = New Bitmap(〜)」 箇所があるのですが、こういう時はBitmapのDispose()を実行させたほうが よいのでしょうか? Private Sub Test() If bmp Isnot Nothing Then bmp.Dispose() bmp = New Bitmap(〜) ....... End Sub Disposeしている行を入れても入れなくても動作しますが、 Newすることで元のbmpが解放されているかどうかが分りません。
しなくても通常は大丈夫だろうけどした方がいいに決まってる
417 :
415 :2007/10/22(月) 15:59:23
>>416 ありがとうございます。
胸のつっかえが取れました。
ほかにそのインスタンス参照するものがある場合は微妙だけどな
419 :
385 :2007/10/23(火) 01:22:44
事故解決しました。FetchSizeを小さくしたら一気に早くなりました。
質問です。 VB2005で、RichTextBoxを使ったテキストエディタを製作しているのですが、 (RichTextBoxで)Wordのように文書に表を作成できるようにするには どのようにすればよいのでしょうか。計算などはできなくて構いません。 どなたかご教示いただけないでしょうか。 よろしくお願いします。
こんなところでご教示願えるような内容とも思えないな。 つまり間単にメソッド呼び出し一発とかでできると思ってるなら、 それは考え違いだろう、と。
そうですか... APIを使うのかなとも思ったのですが、 キーワードも浮かばない状態だったので質問させていただいたのですが...
自前で内容を解析して自前で罫線引くんじゃね
>>422 そんな知識水準じゃ確実に無理だろうね。
つまりそもそも「リッチテキスト」が何かも知らないんでしょ。
>>424 ズバっとリッチテキストとは何か解説を。
,.,.::;:::;:;:::;::;.,.、 /;::;::;:;:::;:;::;:;:;::;)._ ,...;::;:" ´ ` ー" ヽ:;:ヽ ,:;::; ヽ:;ヽ {:ミ ミ;:., ;:;:;: i:;:ノ i;:;i ;;iiiiillllllll) (llllllllliii;; l:;::;} r^ミ /_(;;)ゝヽ / <(;;)_ゝ ミ i ^ヽ.  ̄ l l  ̄ /^i ヾ i: . , i j 、 .:./^ i ヽi: : : ^`-'^ . :./-'/ _| i:. :.: .:_.:_.:_:._:. :. :. .:.lー'" /ヽ .: .:...´ニニニ`. :i..:/ / ヽ :.ヽ.: .: :. : .:. .:.i/ ヽ . :.ヽ、: .:_:ノ/ リッチー・テクスト[Ritchie Teccusto ] (1931〜1996 ドミニカ共和国)
Janeとかはツリービューやブラウザ側にフォーカスを当てなくても、
マウスホイールを動かすだけで自動的にカーソルの下にあるコントロールをスクロールさせてますが、
あれはどうしてるんでしょうか?
@IT ある座標や領域がコントロールの領域内に含まれるているかを確認するには?
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/382ctrlcontain/ctrlcontain.html ↑これを使い、Mouse系の各イベントなどでFocusを移動させるようにしてみたんですが、
確かに似たような挙動はするものの、TabIndexが効かなくなったりとFormが重くなったりと問題が多いです。
そもそもJaneなどではFocus移動すらしていないと思うのですが、
ホイールの移動量をそのままフォーカスのないコントロールに引き渡すような処理はどう書けばいいんでしょうか?
JaneはDelphiなので参考にするのはあまりよくないとは思いますが…、.NET2003です。
TreeViewで、TreeNode以外の部分をクリックしても同じ行にあるNodeが選択 されていますが、これをNode部分をクリックしたときだけ選択されるようにするには どのプロパティを設定すればいいでしょうか?よろしくお願いします。
質問です。 StringFormatクラスのFormatFlagsに orを使って複数設定しました。 = StringFormatFlags.MeasureTrailingSpaces Or StringFormatFlags.DirectionRightToLeft このプロパティから値を取得するとMeasureTrailingSpacesが2048で DirectionRightToLeftが1なので2049が返ってきます。 この値を一つ一つ取得するにはどうしたらいいでしょうか? 今はSelect case で case 1 case 2 case 3 case 2048 case 2049 case 2050 case 2051 というふうにしていますが、数が多すぎてメンドクサイです。
430 :
デフォルトの名無しさん :2007/10/23(火) 16:50:57
DateTimePickerコントロールのChekedプロパティが 変わった事を検出するにはどうしたらいいでしょうか。 ValueChangedイベントでいけそうかと思ったのですが、 コードで.Checked = True(False)と指定すると、このイベントが走らないようです。 宜しくお願いします。
431 :
429 :2007/10/23(火) 17:21:00
自己解決しました。 And演算子というのがあるんですね。 If (Value And MeasureTrailingSpaces) = MeasureTrailingSpaces Then
>>427 各コントロールのMouseEnterイベントでマウスの位置を拾っておいて、
Meのマウスホイールイベントで対応するスクロールバーのValueを変更するとかじゃダメ?
さてさて質問です。
035641.012というDoubleがあって、これは3時間56分41.012秒を表しています。
こういう書式のDoubleをTimespanかDateTimeで扱いたいのですが、
スマートに解決する方法はないでしょうか?
ToStringメソッドを使ってスマートにできそうかなとは思ったのですが、
ググってもintやdoubleや日付などからのToString()の説明しかでてきませんでした。
Substringメソッドを使って部分で切り出してやればできるのは想像つくのですが、
後学のために、Tostringで一発で切り取れる方法があれば教えていただきたいです。
Dim str as String = "035641.012".Tostring(##:##:##)
こんな感じでいけないものでしょうか?
433 :
430 :2007/10/23(火) 18:12:16
>>432 String.Format("{0:00:00:00}", CDbl("035641.012"))
でどうでしょう。
434 :
432 :2007/10/23(火) 18:12:51
質問がおかしかったので訂正します。 Dim str As String = "035641.012" 変換したい書式: "03:56:41.012" Tostringメソッドで一発変換する方法があれば、教えて下さい。
>>433 でいいと思うけど
ToStringなら
CDbl("035641.012").ToString("00:00:00.000")
まぁやってることはいっしょだね
436 :
435 :2007/10/23(火) 18:57:05
あ、doubleはダメなのね。 すまん435は忘れて。
質問です。 VB2005にて複数の画面切替があるプログラムを開発しているのですが、 画面切替時の描画がもっさりとしていると言われました。 簡単に画面描画を高速にする方法がありましたら、ご教授願います。
・高速なマシンに代える ・C++で書き直す ・描画しない ところで画面切替って何?
ダブルバッファリング使えばええやん
なんか最近ダブルバッファリングが銀の弾丸だと勘違いしてる奴が多いのかねw ありゃむしろ描画を遅くする方向に作用するはずだけど
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ListBox2.Items.Insert(0, ListBox1.SelectedItem) ListBox1.Items.Remove(ListBox1.SelectedItem) End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click ListBox1.Items.Insert(0, ListBox2.SelectedItem) ListBox2.Items.Remove(ListBox2.SelectedItem) End Sub End Class リストボックス2つの間でアイテムを移動するようなプログラムなんですが 開始後何も選択せずにbutton1、button2と押すとbutton2を押した時点で強制終了します button1を押した時点で落ちるならまだ分かるんですが、なぜbutton2を押した時点で落ちるのか教えてください
エスパーじゃないから無理。 っていうか、お前さんプログラマの癖に例外のメッセージをみることもしないの?
ていうかデバッグしろよ
まぁ、なんと言うか、疑問を持つ場所が違う気がしないでもない。
445 :
441 :2007/10/24(水) 00:29:11
すみません System.NullReferenceException はハンドルされませんでした。 "オブジェクト参照がオブジェクト インスタンスに設定されていません。" と8行目で怒られます 8行目の地点でListBox2.SelectedItem=nothingがまずいのではないかと思っていますが 4行目はちゃんと動いている理由がよく分かりません
button2→button1の順だとbutton1で例外が出る。 何行目とかじゃなくってさ、Null参照を回避すればいいだけ。
>>446 確かにその通りになりました
しかし、NothingをRemoveするのは1度目も2度目も
条件は同じじゃないかと思ってしまいます
どうも、私の理解が浅くおかしなことを言ってるようなので
もっと勉強してから出直します、ありがとうございました
>>428 クリックしたときのマウスの座標(確かe.x)と
クリックされたノードのbounds.Leftとかwidthとを比べて判断するとか
>>448 BeforeMouseClick、みたいなものがあればいいわけですか、、。
どこかに簡単なプロパティ一発で設定できればと、確かVB6の頃の
TreeViewではみかけたような気もするのですが・・・一応もう一回
調べてみます。
>>438 さん
むしろ低速なマシンに変えるたいと言っていますorz
画面切り替えは、現在の画面をdisposeして、次の画面をNewしています。
452 :
432 :2007/10/24(水) 12:26:06
>>433 Tostringメソッドで調べていたのが間違いだったのですね。
Formatメソッドでググってみたら、使えそうな記事がわんさかでてきました。
助かりました、ありがとうございます。
すみません、教えてください。 PointクラスやKeyValueSetクラスなどのように2つ以上の型の組み合わせ で(・・・,・・・,・・・,, )といったように定義されるクラスを作る場合にはどのような 定義をすればいいのでしょうか。 よろしくお願いします。
もしかしてコンストラクタのこと? Public Sub New(ByVal x As Integer, ByVal y As Integer) こんなこといちいち人に聞いてたらキリが無いしかえって時間かかるから 入門書くらいは一通り済ませたほうがいいよ その質問とは直接関係ないけどPointやKeyValuePairはクラスじゃなくて構造体だよ
vb.net 2005です。 通常のFormクラスにPartialクラスを追加しました。 コードを追加する分には期待通り問題なく動きます。 ただ、このPartialクラスをデザイナで開くと、 元のフォームとは別のデザイン画面が開いてしまいます。 混乱の元なので何とかしたいのですが、よい方法ありませんか?
まずは日本語書けよ
>>454 あーどうもです!そうでした、コンストラクターでした。。。
実はそうかなと思って実装してみたのですが、確かに聞くには初歩的でした・・・、
すまんです。
>PointやKeyValuePairはクラスじゃなくて構造体だよ
これ勉強になりました。また調べてみます。
ずーっと仕事では10年ぐらいVB6をやってきてクラスプログラミングしてなかった
せいもあって、頭の中でわかっててコンストラクタもたくさん書いているのに、
別の目的で見渡したときに実践ですぐにパッと?がっていかないことがありました。
だんだん頭慣らして行きます。どうもでした。
458 :
455 :2007/10/24(水) 21:29:58
>>456 手順はこんな感じです。
Windowアプリケーションとして新規のプロジェクトを作成します。
Form1クラス(Form1.vbとForm1.Designer.vb)がデフォルトで作成
されている状態のはず。
こいつのPartialクラスとして新規クラスファイルを追加します。
中身はこれだけ。
> Partial Class Form1
> End Class
ファイル名はデフォルトのClass1.vb
んで、このClass1.vbをソリューションエクスプローラ上でダブルクリック
すると、Form1とは違うフォームが表示されてしまいます。
このフォームの正体は何?という話です。
>>458 最初からそう書けばわかるのに。
確かに謎だね。
でもそもそもForm(に限らずクラス)を複数のファイルに分割するのはよくないでしょ。
IDEのデザイナのコードみたいに特殊な意図(プログラマの御操作によるコードの破壊を防ぐ)
があれば話は別だけど。
460 :
デフォルトの名無しさん :2007/10/25(木) 11:02:46
VB2005でRS232Cポートからバーコードスキャナで取り込んだデータを処理するプログラムを作っています SerialPortを使用してバーコードスキャナと通信できていますが、取得したデータが8文字づつDataReceivedに入ってきます たとえば、10文字のバーコードを読み取ると最初に8文字取得し、続いて残り2文字入ってくる状態です スキャナと一緒に購入したキーボードインターフェースソフトでは10文字取得できます また、USB接続のバーコードリーダも問題なく10文字取得できます スキャナメーカに聞いてみると取得したデータをそのまま垂れ流すだけとのことでした 念のため、代わりのスキャナとUSB接続のスキャナをメーカに送ってもらい試したところ、状態は変わりませんでした どのようにすれば全てのコードを一括で取得できますか? バーコードスキャナはKEYENCEのTL-30で初期状態にセットしてあります SerialPortの設定は BaudRate 9600 Parity None DataBits 8 StopBits One ReadBufferSize 4096 WriteBufferSize 2048 DiscardNull False RtsEnable True DtrEnable False です
>>460 シリアルポートの「シリアル」ってどういう意味かわかってる?
1バイトずつ(正確には1ビットずつか)行列状につながってデータを送受信するから
「シリアル」ポート。
要するに8文字ずつとか寝ぼけたこと言うなってこと。
そんなのたまたまReadした時にバッファに8バイト入ってるだけのこと。
462 :
460 :2007/10/25(木) 13:11:46
それでは、なぜ同じプログラムからUSB接続のスキャナと通信した場合、うまく取得できたのでしょうか? テストに使用したスキャナはTL-30UBです
>>460 それってもしかして、チェックサムjの設定で末尾に2キャラクターを
でフォルトで読むようになってるかどうかが関係してるんじゃないでしょうか。
バーコードリーダーのデコーダー側の設定とPC側の読み取りソフトの間で
それに関してマッチしていないとそういうことがあり得るとか、ありそうな話だからね。
>>464 (追記)
で、どうしても調べたいのなら、シリアル用のラインモニターをケーブルとコネクタの
間に挟んで、流れてるキャラクターを全部モニターすればすぐにわかる。
たくさんそういう仕事があるのなら買って常備しとくのがお勧め。
モニターとかそういうレベルじゃないでしょ460は。 そもそもシリアル通信の意味がわかってないんだから。 もっとも、知識以前に「俺様のプログラムがバッファをReadしたタイミングで、 必ず俺様が必要とする長さのデータが入っているはずだ」みたいな発想をする アブナイ人なのかもしれないけどw
末尾はCR LFだと思うんだけど☆(ゝω・)v
何かボケてた、バーコードリーダーだから終端がCR LFとは限らないのか orz USBは転送速度が早いからたまたま8文字来たんじゃないか?
USBは転送速度が早いからたまたま10文字来たんじゃないか? に訂正
いや転送速度っていうか、USBのプロトコルが関係してるんだろうね恐らく。 USBの場合、物理層はたしかにシリアル転送だけど、 もっと上の層からはチャンクが飛んでくるように見えるわけで
472 :
460 :2007/10/26(金) 10:18:12
人がいない間にえらい言われようだなぁ
不勉強なのは認めるが
>>464 スキャナのマニュアルを読んでみましたが、そんな妙な設定はありませんでした
実際、このプログラムで使用するバーコードのほかにJANコードも読み取ってみましたが、
最初に8文字を取得して次に5文字取得しましたし
後、うちはソフト会社じゃないのでそういうものは買ってもらえません
シリアルポートを使うプログラムもそうそう作ることはないですし
>>467 初期設定では終端はCRでした
CRLFに変えてもDataReceivedイベントで読み取ったデータごとにCRLFがついてくるだけのようです
ちょっと調べてみた結果、DataReceivedイベントが発生するタイミングにばらつきがあるという書き込みがありました
これが真実だとすると
>>461 が一番答えに近いかと思います
バーコードデータの中身の仕様は決まっているので10文字取得したらデータを操作するように書いた方がいいかもしれません
煽りとかプロトコル層とか関係なく、分かれて届く事実だけを見れば良い。
もう何年もシリアルポート使う仕事してないけど、ターミナルソフトでモニタとかできないのか? 他にもCOMポートからデータを受信してダンプするツールとか探したか?
475 :
460 :2007/10/26(金) 11:54:15
一応、ハイパーターミナルやTera Termで試したところ、全ての文字を一括で受信してました
>>477 悪いけどその三者は全部俺なんだけどw
>>475 まだそういう寝ぼけたこと言うわけ?
一括して受信した、なんてどうしてわかるんだよ頭悪いな。
だからそんなのお前さんの目にそう見えるだけなんだよ。
それともお前さんは人様の作ったコードの処理を(デバッガで追うように)
追跡できるわけ?w
というか、だからシリアルポートの物理層からして一括して受信するなど あり得ないと散々言っているのに。 バッファって知ってる? お前さんのプログラムが読んでるのはSerialPortオブジェクト内のバッファなんだよ。 そこをちゃんと理解しないと埒あかないよ
偉そうに答えるわりには答えが曖昧で分かりません。
>お前さんのプログラムが読んでるのはSerialPortオブジェクト内のバッファなんだよ 最初からそういわないからよけいに混乱してると思うが
>>476 もしかして三者ってどれとどれとどれのこと言ってるの??
>>472 >バーコードデータの中身の仕様は決まっているので10文字取得したら
>データを操作するように書いた方がいいかもしれません
バーコードなど形式一定の場合はそういうことかと。
以前やってたときは、Receiveバッファに入ったものをあるだけ読み込み、それが
期待した文字数と形式を満足したことを確認したら読み込みルーチンを抜け、
満足しないままタイムアウト時間を過ぎたらタイムアウトしてエラーを出す、
というアルゴリズムにしましたが何年も使っててそれでハングしたりしたことは
ありませんでした。(もし仮に余分な文字が後ろに付いていたら、通常ゴミと
判断できるなら捨てるようにすればいいかと思います)
物理層とか関係ないし。
>>477 SerialPortオブジェクト内のバッファを相手にするなら、一括して受信できてるように見えることだってあるだろうが
.Netアプリケーションで出てくるToolTipTestは、その表示枠がちょっと狭いので できれば、WindowsXpのデスクトップでアイコンなどのToolTipのように枠が広く 表示できるようになったもっと見やすいのにと思いました。 このようにToolTipの枠を広げるようなことはできるでしょうか?可能だとしたら どのような方法があるでしょうか。よろしくお願いします。
>>484 (訂正)ToolTipTest -> ToolTipText
ネイティブのToolTipのラッパじゃねーの?
>>484 自分でフックしてドローすればいいんじゃね?
変なことにこだわるなあwいや別に批判じゃないんだけどね。 とりあえずテキストの上下には改行を、左右には空白を必ず入れるようにすれば 場当たり的ではあるがとりあえず実現はできないかな
489 :
484 :2007/10/27(土) 12:22:03
>>486-487 そうですか、自分には結構難しく感じますが方法はあるでしょうか。
>>488 なるほど、たぶん一行の半分ぐらいの余裕がちょうどいい感じかなと
思うんですがとりあえず試してみます。
ありがとうございました。
490 :
デフォルトの名無しさん :2007/10/28(日) 18:37:02
はじめまして、質問させてもらえますでしょうか。 ASP.NET+VB.NETでアプリ構築中なのですが、 高負荷状態の時にログの出力処理同士がバッティングしてしまい、 ログファイルを開く際に「他のプロセスが使用中」エラーが発生してしまいます。 原因として、セッション毎にログクラスのインスタンスを作成しているため、 それぞれが好き勝手に出力しようとして・・・上記のようになっていると思いました。 そこで、アプリケーションの方で1つインスタンスを作成して みんながそれを使えば問題は解決するのでは?と考えました。 そこで質問です。 1:APサーバで1つもっているログクラスインスタンスをみんなで呼び合った場合、 プロセスのキューは何個まで溜められるのでしょうか。 2:制限を超えたときの挙動はどんなものでしょうか。また、トラップ可能かどうか そもそものところ、この考えで抜けがないか心配・・・ スペック WINDOWSserver2003+.netFramework2.0
ログクラス自作して自分で好きなように管理すればいいだろ
やってみればいいだろーが。
取り合えずFileInfo作成時に与えた大文字小文字を維持する
IShellFolder.CompareIDsでできんかのぉ
>>490 むしろそれでどう解決になると思ってんのか不思議で仕方がない。
("TextBox" & i).Text="abc" みたいなカンジでコントロールを使用したいんだけどムリなのかな?
凄くよくある質問 Controlsでできるけど凄く嫌われるやり方だからやめとけ
コントロールのBackGroundImageプロパティに画像ファイルを貼り付けたのですが フォームをリサイズしたときに画像が再描画されて何度もパタパタします。 これを回避するためにSuspendLayoutなどを使うのかと思ったのですが、 その場合にはどのイベントを利用して行うべきでしょうか、またその実装方法を ご指導ください、よろしくお願いします。
Controls総当りは何年も前から知ってたけどしかしなぁ
無理やりダブルバッファ化w
>>499 ResizeRedrawを切ればとりあえず解決しないか?
>>501-502 ありがとうございます、おっしゃっていることの意味としては、SetStyleメソッドを
使って制御可能ということですか、わかりました。やってみます。
ということは、コントロールを一回派生して別のものにして、それを使うという
ことなのですね。トライしましたら結果を報告します。
504 :
460 :2007/10/29(月) 20:49:12
先日はありがとうございました おかげさまで目的のプログラムは完成しました もう一つバーコード関連で質問させてください 今度はハンディターミナルを使ってバーコードを読み取り、PCに転送するソフトを作れと言われました そして、ハンディターミナルも選定しろと言われました VB2005でプログラムを作成しやすいメーカーってあるのでしょうか? WindowsCE搭載の物なら作りやすいだろうと思いますが、予算が10万前後といわれているので 予算不足で却下されるのではないかと思います 参考になるようなホームページ等ありましたら教えてください
506 :
デフォルトの名無しさん :2007/10/29(月) 21:45:20
VB.netであるクラスを継承して新しいクラスを定義したいのですが 定義した新しいクラスでデフォルトコンストラクタは定義できないのでしょうか? インスタンスが作成された時にメンバ変数を初期化したいのですが…
できるよ 構造体でない限り 基底クラスがデフォルトコンストラクタを公開していないなら妥当な引数を渡す必要があるけど
っていうか、なんでまずやってみて聞かないんだろう。。 俺には理解できない神経だなそういうの
509 :
506 :2007/10/29(月) 22:00:53
>>507 やっぱりできますよね。
で、自分のコードを確認したところ以下のようになっていました。
DataSetを扱うためにVSが自動で継承して作成したD_TESTTableAdapterというクラスです。
Namespace DataSet1TableAdapters
Partial Public Class D_TESTTableAdapter
Sub New()
Dim s As String = ""
End Sub
エラー:'Public Sub New()' には同じ署名で複数の定義が存在します。
派生じゃなくてPartialでした。。
コンストラクタとは全く別件ですね。
Partialの自動作成されたコードのコンストラクタを書き換えるのはまずいという認識なのですが、
このクラスが呼び出された際、メンバを初期化するにはどうすればよいでしょうか?
ぱっと思いつく方法としては初期化のためのコンストラクタのためにこのクラスを
派生する、という方法ですがなにか違和感があります。。
よい方法ありませんか?
ハンディターミナルはハンディーターミナル用プログラム開発キットがある。 そんなのは、ここじゃなくてメーカーに聞くべき。
511 :
503 :2007/10/29(月) 22:58:14
>>501-502 使いたいコントロールを一回派生して別のものにしてから
そのコンストラクタ内でSetStyleメソッドを書いてダブルバッファなどを
処理し、それを使うということで解決しました。ありがとうございました。
ただ、このような要求は普通にあるかとも思われ、できればデフォルト
でそうした処理となるようにしておいてくれていればとも思ったのですが、
これですと毎回Imageを貼るものでは一手間がかかるような感じはします。
なぜ標準でパタツキ防止になっていないのでしょうね・・・。
>>509 >Partialの自動作成されたコードのコンストラクタを書き換えるのはまずいという認識
あーやっぱりそうですか。自分もそういう感じはあったのですが、
派生コントロールなどでは、結局そのNewの中から自前の初期l設定を
呼び出したりしてました。
それ以外のものでは、Shownイベント時や、Loadイベント時に処置したりして
対応したものもあります。
基底クラスつくればいいじゃん。
自動生成されたコードのフィールドを初期化? 派生してそれをやりたい? 訳がワカラン。 わけの分からんこと言ってる暇があれば地道に勉強した方がいいと思うよ。 勉強する気もないのなら、悪いこと言わないから継承なんか使わないことだね。
たしかにw
テーブルアダプタ使ったこと無いだろ。 っていうか自動生成されたコードのフィールドって誰がいってんの?
517 :
506 :2007/10/30(火) 00:22:24
紛らわしい表現してすみません。 書き直します。 テーブルアダプタを利用する時にVSが自動で Partial Public Class ???TableAdapter みたいなコードを作成するのですが、 このクラスに手動でメンバ変数を追加して、 それをこのクラスのインスタンスが作成された時に初期化したいと思います。 ところがこのクラス自体はVSが自動で作成したもので 自動で作成されている部分でコンストラクタが定義されており、手を加えることができません (実際できないことはないですがしてなならないというスタンスのはず) 許されている行為はPartial Public Class ???TableAdapterと定義し、 こちらでこのクラス自体を継承、ではなく拡張することです。 こういった場合自分でメンバ変数を追加した場合、本来コンストラクタで初期化したいのですが VS自動作成部分であり任意の値で初期化することができません。 任意の値で初期化するにはどうすればよいでしょうか?
>>517 一つは、NewコンストラクタのOverLoadを作ってやり、
そこですでに生成済みのそのNew(=Partialクラス内のコンストラクタ)
の中身をコピーし、かつ、その後ろに自分の書きたいコードを書く、
ということで実現できると思います。
自分がそのクラスを使うときは、その後で自分が追加したほうの
コンストラクタを使ってインスタンスを生成してやればいいわけです。
その際、OverLoadになるように引数を工夫してちびっと違うものにして
やれば元のものと両立できます。もし引数を一致させたいときはShadow
にして前のものを無視するようにすればいいのでは?
パーシャルでシャドウとは器用な奴だw
>>519 そうですね、Partialに宣言されたものをPartialじゃない方でShadowする
のは無理でした、すみません(Shadowは派生したときですものね)。
質問失礼します。 空気抵抗を持たせた物体の放物運動のプログラムを作ったのですが、 実行はできるのですが、放物線がうまく描かれません・・。 Dim X, Y, Vx, Vy, Ax, Ay, dt, ga, Pi, V0, theta, k As Double Dim XF, YF, XL, YL, X0, Y0 As Double Dim XFI, YFI, XLI, YLI As Integer Dim T, Xe, Ye, Vxe0, Vye0 As Double Dim XeF, YeF, XeL, YeL As Double Dim XeFI, YeFI, XeLI, YeLI As Integer Dim kVy, g As Integer Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ga = 9.8 : Pi = 3.1415963 dt = 0.01 X0 = 0 : Y0 = 0 Ax = 0 : Ay = -ga X = X0 : Y = Y0 V0 = 70 : TextBox1.Text = V0 k = 0.02 : TextBox3.Text = k theta = 45 : TextBox2.Text = theta theta = theta * Pi / 180 Vx = V0 * Math.Cos(theta) : Vxe0 = Vx Vy = V0 * Math.Sin(theta) : Vye0 = Vy T = 0 XF = X : YF = Y Xe = X0 : Ye = Y0 XeF = Xe : YeF = Ye End Sub
Private Sub PictureBox1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint Dim w As Integer = PictureBox1.Width Dim h As Integer = PictureBox1.Height e.Graphics.TranslateTransform(20, h - 20) e.Graphics.ScaleTransform(1, -1) e.Graphics.DrawLine(Pens.Black, 0, 0, w - 40, 0) e.Graphics.DrawLine(Pens.Black, 0, 0, 0, h - 40) End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Timer1.Enabled = True End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Timer1.Enabled = False End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click X = X0 : Y = Y0 XF = X0 : YF = Y0 V0 = TextBox1.Text theta = TextBox2.Text theta = theta * Pi / 180 k = TextBox3.Text Vx = V0 * Math.Cos(theta) : Vxe0 = Vx Vy = V0 * Math.Sin(theta) : Vye0 = Vy T = 0 XF = X : YF = Y Xe = X0 : Ye = Y0 XeF = Xe : YeF = Ye Timer1.Enabled = True End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click End End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Dim g As Graphics = PictureBox1.CreateGraphics() Dim w As Integer = PictureBox1.Width Dim h As Integer = PictureBox1.Height g.TranslateTransform(20, h - 20) g.ScaleTransform(1, -1) Vx = Vx - k * Vx * dt Vy = Vy - ga - k * Vy * dt X = X + Vx * dt Y = Y + Vy * dt XL = X : YL = Y XFI = CInt(XF) : YFI = CInt(YF) : XLI = CInt(XL) : YLI = CInt(YL) g.DrawLine(Pens.Black, XFI, YFI, XLI, YLI) XF = XL : YF = YL T = T + dt If Y <= 0 Then Timer1.Enabled() = False End Sub End Class 上のプログラムです。間違っているところをお教えください。 よろしくお願いします。レスの無駄遣い失礼しました・・・。 本当に申し訳ありません。
>>524 >がうまく描かれません
というのを具体的に。
いったん描画されるが動かしたり別のウインドウを重ねるとすぐ消えてしまうことをいっているのか、
それとも4点ほどですぐに圏外にでてほとんどなにも描画されないことを言っているのか明確に。
526 :
524 :2007/10/30(火) 19:05:38
>>525 レスどうもです。
後者のほうです。すぐ圏外に出てしまい、ほとんど何も描画されず、点の
ようなものが描かれるだけになってしまいます。
方眼紙にグラフを書こうとしたらすぐにはみ出してしまうのです。 どうしたらいいですか? …
あすかわらず煽りは低脳だな
誰が誰を煽ってる、と?
531 :
デフォルトの名無しさん :2007/10/31(水) 00:16:35
質問です VB.Netのソースを書く上で使い勝手のいい、 フリーのテキストエディタというと、何になるでしょうか?
>>531 Visual Basic 2005 Express Edition
533 :
506 :2007/10/31(水) 03:15:21
>>517 の件
結論として「できない」ということでまとめさせてもらいますね。
>>518 でもあるようにオーバーロードを定義すると可能ですが
今回のようにVSの自動作成されたコードの中でインスタンス化されてしまう場合は
ちょっと厳しいようです。
ありがとうございました。
534 :
デフォルトの名無しさん :2007/10/31(水) 08:55:40
>>533 >VSの自動作成されたコードの中でインスタンス化されてしまう
というのはどういう意味でしょうね?
Partial Class 定義の中で 「インスタンス化」 などはされていないはず。
インスタンス化するのはあくまでもそれを使う側のコードで行う処理で。
だからそのクラスのコンストラクタ (Newプロシージャ) を呼ぶところで
呼び出すNewを変えてやればいいことでは?
なんつーか、VB .NETのスレなわけで、俺の替わりに考えてくれと言うスレではないんだよ。 まる投げがおおすぎなくない
多すぎなくないか? 途中で送信したorzスマン。
>>524 はもう荒らしの領域
丸投げするにしても、これだけ長くなるなら迷惑だから
ソースファイルごとをどっかのアップローダに置いといてくれ
こっちで試しに動かしてみようと思ってもコントロールへの依存が多くてすごく面倒だし
539 :
506 :2007/10/31(水) 23:28:21
>>534 少し説明が足りなかったです。
実際には???TableAdapterはObjectDataSourceに連結されており、
VSが内部で自動で作成したソースの中でインスタンス化されているようです。
ですのでコンストラクタに引数を渡すことができない状態です。
>>539 それなら仕方ないんで、そのNewコンストラクターの最後のところに
自分で作った初期化用のプシージャを呼ぶように一行だけ追加しとけば
当面たくさんいじった感じにならないからそれくらいならいいんじゃないかね?
(初期化用のプロシージャはPartialではない方のファイルに書いておいて)
その初期化の内容の如何で、動作がおかしくなることがあるとしたら
その追加の内容によってはあり得るってことで、Partial側に触ったからおかしく
なる、ってことではないと思うので・・・。
ところでみなさんに質問、2ch用にJaneブラウザ使ってるのですが VS2005でデバッグしていて、その最中にJaneを起動すると、その後から IEが動作不良を起こすようになりました。これはほぼ100%の確率で 起こるため、おそらくこのJaneの動作が絡まっているんじゃないかと 疑ってるのですが、みなさんのところではそういう状況は起きてない でしょうか。 もし起きたことがあり、何か対策して直ったということがありましたら 情報教えて戴けないでしょうか?
>>539 基底クラス作ればいいっていってんのに全然聞かないんだな。
TableAdapter用の基底クラス作って初期化メソッドをOverridable辺りで作っとく。
TableAdapterのデザイナのプロパティで基底クラスを上記のものに明示的に設定する。
パーシャルクラスで初期化メソッドをオーバーライドする。
以上
543 :
506 :2007/11/01(木) 04:08:38
>>540 自動作成のコードの上部に以下のようなコメントが自動作成されてました。
' このコードはツールによって生成されました。
' ランタイム バージョン:2.0.50727.312
'
' このファイルへの変更は、以下の状況下で不正な動作の原因になったり、
' コードが再生成されるときに損失したりします。
やはりだめということはしない方がよいと思います。
ですがこの辺はリスクとメリットを検討した上で判断したいと思います。
ありがとうございます。
>>542 悪気はなかったのですが返事をスルーしてしまっていました。
申し訳ありません。
基底クラスを作るということだけでピンとこなかったものですので。
基底クラスは元々DataSetの*.xsdから自動作成されたクラスがこれまた自動で派生されて
作成されたコードですのでやはり差し替えはサポートしていないと思います。
やれやれ、デザイナのプロパティで明示的に設定するって やり方まで書いてんのに、サポートしてないと思いますってのはどういう了見だよ。 出来ないと思いますじゃなくて、間違いなく で き る の。
さらに細かく書いてやる。 データセットのデザイナ画面で対象のテーブルアダプタを選択してプロパティを表示する。 するとBaseClassだったかいうプロパティがあるから それを自作の基底クラスに書き換える。 以上
デザイナで作られる型つきデータセットは並びとかが判りにくくなるからいやだなぁ・・・ 自作してる ColIsNULLとかより IsNullCol のが好きなんだぜ と言ってみる ついでに楽観的排他制御無駄多いし
VB2005 ツリービューにテキストファイルからノードを読み込んでるんですが 18000行ぐらいあるので全部読み込むまで20秒ぐらいかかってます。 たぶん階層構造も保持できるXMLあたりで保存しておけば 読み込む時間も早くなると思うのですが保存方法がわかりません。 わかりやすく解説してるサイトとかあったら教えてください。
とりあえずデータテーブルのSAVEXMLとかLOADXMLみたいなメソッドあったと思うんだけどそれではいかんかな? XMLのサンプルとか紹介はGOOGLEで一撃で出てくると思うぞ VB.NET XMLとかで
549 :
548 :2007/11/03(土) 11:32:58
ごめん、よくかんがえたらツリーノ描画でCSVしゃぁなしでつかってるんだからデータテーブルじゃ駄目だね
http://support.microsoft.com/kb/301101/ja とかで簡単なサンプルあるしつかってみれば?
でも、XMLにしたからって早くなるわけじゃぁない感じだと思うんだけど・・・
テキストの読み取りに時間かかってるんだろうし
2005なら読み込みをマルチスレッドでやってから展開する手もあるだろうし
質問があります。VB2005です。 グラフィックの描画、あるいはビットマップイメージの表示などで、二つの絵を重ねる場合、 通常は後に描画されたものが前のものに覆いかぶさるように表示されます。 後ろの絵を表示したい場合は、透過を使用できますよね? 今回、重なった部分のみ加法混色のようにしたいんです。 たとえば、緑色に塗りつぶした図形と赤色に塗りつぶした図形を部分的に重ねるとき、 その重ねた部分だけを黄色にして表示したいんです。 どなたか、やり方を知っている方がいましたらお願いします。
551 :
506 :2007/11/03(土) 15:23:46
>>544-545 できるんですね。
知りませんでした。
BaseClassプロパティを変更し、基底クラスを差し替えれることを確認しました。
次にVSがそれを継承した???TableAdapterを自動で作成するので
こちらはVSの自動作成部分以外でpartial定義されてる部分で
基底クラスのコンストラクタをオーバーライドし、メンバの初期化を行おうとしたのですが、
できませんでした。
???TableAdapterはpartial定義されているだけで実際にはコンストラクタはコードが分離されているだけで
定義されているためです。
BaseClassに指定した基底クラスで継承先クラスのメンバの初期化はできないので
???TableAdapterを継承し、継承先のクラスでコンストラクタをオーバーライドすることで???TableAdapterのメンバの
初期化をコンストラクタに書くことができそうです。
しかし継承を繰り返し可視性が下がってしまいましたんで実装するかは検討しますね。
技術的に可能なことがわかってよかったです。
ありがとうございました。
>>550 RegionとGraphics.CopyFromScreenの組み合わせでいけるんじゃないの?
描画対象が画像ではなく単純な図形の塗りつぶしならRegionの使い方だけ
覚えれば問題ないね。
しかし、なんでラスタオペレーションが描画サーフェイスに対してしか
用意されてないのかは謎だなあ。。
おまえね〜それは
>>542 でちゃんと書いてやっただろうがw
オーバーライド用の初期化メソッドを基底クラスで用意して
基底クラスのコンストラクタで呼んどくの。
ただしテーブルアダプタ自体のコンストラクタより先に呼ばれるから、
それは制限になるけどね。
あっと、
>>542 ではコンストラクタから初期化メソッドを呼ぶと
はっきり書かなかったから分からなかったのか…
いやさすがに皆までいわいでも分かると思ったんだよ…
555 :
550 :2007/11/03(土) 16:13:29
>>552 お答えありがとうございます。質問が少し説明不足でした。
Regionで・・・ということは、塗りつぶし色のRGB値を記号で表しておいて、
重なった領域の色は、重なり合うそれぞれの領域のRGB値を足し合わせて・・・
ということですよね?
実はそれも少し考えました。
今回は線分の交点がメインになるので、Regionじゃ無理かなと思いました。
説明不足ですいませんでした。何か良いやり方をご存知でしたらお願いしたいのですが・・
なんで無理とか思うのかなあ。。 線分の形状のRegionは作れないの? できるでしょ。 それとも都合のいいところ(この場合は線分の交点)だけORとって 描画してくれる方法があるはずだ、とか思ってるのかな。 そんなエスパー機能を期待したって無理でしょ
vb2005です。 簡易タブファイラーをつくろうと思ってるんですが、 タブコントロールの中にエクスプローラをインポートする事って出来るでしょうか? ファイルの縮小版表示機能がどうしても必要なんで、出来ればエクスプローラ をタブの中に埋め込みたいです。 やり方をご存知の方いましたらお願いします。
axWebBrowser1.Navigate("C:\"
ファイルを一行ずつ読み込むのを高速化するにはどうしたらよいでしょうか?
どんな処理をやりたくて今はどうやってんだよ。
数十Mbyteの数字の羅列であるデータファイルを一行ずつ読み込んで、配列に代入していく処理をしたくて System.IO.StreamReader クラスの ReadLine メソッドを使用して今は実行しています。 しかし処理に数分かかるので、もっとよい方法があれば教えていただきたいです。
562 :
557 :2007/11/03(土) 22:44:06
>>558 出来ました〜!
縮小版もバッチリです。
ありがとうございました!
>>549 アドバイスありがとう
一度データテーブルに読み込んでツリービューに追加はやったことありますが
めっさ遅くなりましたw
今のテキストファイルの状態だと、全ノードに全階層が書いてあるので
重複を省けるだけでも速くなるかなと思ったんですけどそうでもないんでしょうかね
マルチスレッド化したほうがいいかな
MSDNにあるように、BeginUpdate とか AddRange で早くならんかな? 実際ふつうにやったら、テキストやらファイル構造からの処理よりも TreeViewへの追加処理そのものの方が圧倒的に遅いでしょ。 ファイルからの読み込み自体が遅いなら知らんが…
>>564 おっさるとおりTreeViewへの追加処理に時間が掛かってる感じです
・何もせず都度表示の更新をしながら追加処理をすると20秒以上掛かるが表示のタイムラグはない
・BeginUpdate,EndUpdateで追加処理自体は速くなるが表示まで10秒ほどタイムラグが発生
・TreeViewがshowメソッド等でアクティブになってなければ追加処理は数秒で終わりますが表示に10数秒タイムラグが発生
ノード数約2万個を1行ずつ追加していったときの結果です
一個ずつ追加する方法だと限界なのかも知れませんね
AddRangeは試してないのでわかりません
AddRangeを使うとなると配列作るのが厄介そうですがちょっとやってみます
AddRange と BeginUpdate は同じ意味だぞ つか適当な件数ごとに BeginUpdate/EndUpdate 繰り返せばいいんじゃね?
>>561 数十MB程度のReadLineでなんで数分かかるんだ?
配列に代入するところのコードをちゃんと書いてくれ。
ループの中で毎回Redimしてないかね?
.NetFramework2.0が使えるなら、
System.IO.File.ReadAllLines()
を使ってみそ。
Dim ReadLines As New List(Of String)
Do
Call ReadLines.Add(sr.ReadLine)
Loop Until sr.Peek = -1
こんなんでもいいし
亀乙
そもそも数十MB配列に入れる必要があるんかね?
ああ、1行毎にReDimはありそうだな。 旧VBでなぜか定石のように使われまくってたからな。
571 :
550 :2007/11/04(日) 14:54:55
>>556 お答えありがとうございます。
少しそのエスパー機能的なものを期待してた部分はありました。
今回作りたいのは、垂直線対称な色の異なる線分を2本描いて、その交点のORをとる。
というものなのですが、RegionとRotateTransformなどを組み合わせて・・・だと無理だと
思ったのです。
もうすこし色々がんばってみます。ありがとうございます。
>>565 こうなったら・・・・
新しいツリービューのインスタンスに別スレからノードを追加完了した状態にして 完了時に元のツリービューを削除して
新しいツリーを同じ名前に変更した後差し替えだw
573 :
デフォルトの名無しさん :2007/11/05(月) 15:00:12
ワードなどで、一行の初めのところにマウスをポイントすると ポインターの向きが右向きになるのを実現するにはどうしたらいい でしょう?コントロールパネルのマウス->ポインターで調べると 右向きポインターは見当たらないので単純にポインターを差し替える のではないような感じです。 それと現在自分は拡大ポインターを使用していますが、.NETFrameworkで 指定するMouseポインターは、たとえばsplitContainerの仕切り線を動かす ときの間仕切り用のポインターなどは決まったものしか使用できないで しょうか、これらも拡大ポインターなど使いたいものに変更できれば うれしいのですが・・・
そんなやり方でええのんか?w
576 :
デフォルトの名無しさん :2007/11/05(月) 22:47:43
>>574 右向きポインターはその右上側に指し先を指定するという意味でホットスポット
というものを設定する必要があるということなのですね。ありがとうございました。
その際ポインターの絵は自分で用意する必要がありそうですね。
>>573 の後段については、もしできれば、現在のSplitカーソルが拡大版の
両矢印カーソルに自動的になるような何かの設定ができたらとも思ったのですが、
この方法に準じる場合は、該当の領域にマウスが入ったときに自分でプログラム
でカーソルを変更するコードを書くということなのですね。これが設定だけで
なんとかなればとも思うのですが、何か方法はないものでしょうか?
なんでも用意されてると思うな、ハゲ
578 :
デフォルトの名無しさん :2007/11/06(火) 07:33:22
>>577 >なんでも用意されてると思うな
あーやはりそうですか・・・わかりました。
ありがとうございました。
__ ( *^ω^*)__ジョギング行ってくるお 〔ノ二二,___ __,二二ヽ〕 |:::::::::::::::::::::::::::ヽ ゜ ゜ /::::::::::::::::::::::::::/ 〉::::::::: :::::::::::::〉 ・ 〈:::::::::::::: ::::::::〈 |:::::::::::::::::::::::::/ (u) ヽ::::::::::::::::::::::/ 〔:::::::::::::::::::::/ ノ~ヽ ヽ::::::::::::::::::| ヽ:::::::::::::::::/ /::::::::::::\ ):::::::::::::::::::ゝ ノ:::::::::::::::::::| |_〜─〜-| |〜〜〜/ (_) (_)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::。::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::: :::::::::.....:☆彡::::( *^ω^*)__::::。::::::::::::::::: ゜.:::::::::::: :. .:::::。:〔ノ二二,___ __,二二ヽ〕 :::::::::゜:::::::::: .. :::::::::::::::::::::::::::::::...... ....:::::::゜::::::::::::::::::::::::::::::::::::::::::::::::::::::.....:::::::::::::::...... :.... .... ..:.... .... ..... .... .. .:.... .... .. ..... .... .. ..... ............. .. . ........ ...... :.... . ∧∧ ∧∧ ∧∧ ∧∧ .... .... .. .:.... .... ..... .... .. . ... ..:( )ゝ ( )ゝ( )ゝ( )ゝ無茶しやがって… .......... .... i⌒ / i⌒ / i⌒ / i⌒ / .. ..... ................... .. . ... .. 三 | 三 | 三 | 三 | ... ............. ........... . ..... ... ∪ ∪ ∪ ∪ ∪ ∪ ∪ ∪ ............. ............. .. ........ ... 三三 三三 三三 三三 三三 三三 三三 三三
コピペ君って馬鹿だな、まで読んだ。
すいません、質問でつ。 VB.NETとJavaで動作が違うんだが、何をどぉすればイイんだか さっぱりわからんので、バカなオレにアドバイスを。 やりたいこと AES(Rijndael)/CBC/PKCS5Padding(.NETはPKCS7Padding) での、文字列暗号化 文字列 ABCDEF を暗号化した時に、 VB.NET : 31QD2jPrI8yeVzdYV0NrHg== Java : [B@b122a1 となる Javaにあわせるには、どぉしたらイイんだ? ↓プログラム
Java ========================================== import javax.crypto.*; import javax.crypto.spec.*; import java.lang.*; public class EncryptAES { public static void main(String[] args) { try{ String cryptAlgorithm = "AES/CBC/PKCS5Padding"; Cipher cipher = Cipher.getInstance(cryptAlgorithm); SecretKeySpec secretKey = new SecretKeySpec("ABCDEFGHIJKLMNOPQRSTUVWXYZ012345".getBytes(), "AES"); IvParameterSpec ivSpec = new IvParameterSpec("ABCDEFGHIJKLMNOP". getBytes()); cipher.init(Cipher.ENCRYPT_MODE , secretKey, ivSpec); System.out.println(cipher.doFinal("ABCDEF".getBytes()).toString()); } catch(Exception e) { System.out.println("暗号化に失敗しました" + e.toString()); } } }
VB .NET ========================================== Public Sub Sub_Encrypt() Dim RijndaelAlg As New RijndaelManaged Dim plaintextBytes() As Byte = Encoding.ASCII.GetBytes("ABCDEF") Dim workMemoryStream As New System.IO.MemoryStream Dim EncryptStream As CryptoStream With RijndaelAlg .Mode = CipherMode.CBC .Padding = PaddingMode.PKCS7 .Key = Encoding.ASCII.GetBytes("ABCDEFGHIJKLMNOPQRSTUVWXYZ012345") .IV = Encoding.ASCII.GetBytes("ABCDEFGHIJKLMNOP") End With EncryptStream = New CryptoStream(workMemoryStream, _ RijndaelAlg.CreateEncryptor(), _ CryptoStreamMode.Write) With EncryptStream .Write(plaintextBytes, 0, plaintextBytes.Length) .FlushFinalBlock() End With strOutput = Convert.ToBase64String(workMemoryStream.ToArray) End Sub
明らかにPaddingが違うようだが。 .NETだとPKCSは#7しかできないから手で埋めるかJavaの方を#7にするか。 あとよう知らんがgetBytes()ってのはASCIIでいいのか?
>>585 Paddingが違うのは自分でもわかってるが、
イマイチ暗号化自体よくわかってないバカなオレ(^^ゞ
だから、「手で埋めるかJavaの方を#7にするか」って言われてもよくわからん(-_-)
んで、getBytes()は、ASCIIでイイと思ってるがダメなの?
JavaとVBで、デバック時に変数の値を見たら、同じ(ASCII変換)だったから
OKだと思っちゃってるんだが...
Rijndaelはブロック暗号。BlockSizeごとに暗号化していく。 ところがデータの末尾は大抵BlockSizeに足りない。 足りない部分を埋めるアルゴリズムがPadding。 あとはPaddingMode.PKCS7の解説見れ。 > んで、getBytes()は、ASCIIでイイと思ってるがダメなの? Javaは知らんからちょっと疑問だっただけ。 同じバイト配列になるんだったらそれでいいでそ。
>>587 > あとはPaddingMode.PKCS7の解説見れ。
勉強不足だから、もうちと頑張って理解してみる
解説&アドバイス ありがとでした
>String.GetBytes >プラットフォームのデフォルト文字セットを使用してこの String をバイトシーケンスに符号化し、結果を新規バイト配列に格納します。 俺もJavaは知らないんだが、ほんとにいいのか?
Javaの方の出力の意味が分からん なんで16バイトのbyte[]をtoStringしたら9バイトの文字列になってんだ? あとBase64するならJavaでもやれ
582でつ 本来は、同じにならないとダメだからってのは理解しているが、 JavaとVBで、なぜこんなに違うのかって理由がよくわかってないから みんなの意見を参考に、実験&勉強してみまつ
>>591 Javaでの文字列への変換が間違ってる。
Cipher.doFinalがbyte[]が返すので、それをtoStringしてもだめ。
System.out.println(new String(Ciphyer.doFinal("ABCDEF".getBytes()), "ISO-8859-1"));
593 :
582 :2007/11/07(水) 11:51:59
>>592 参考になりまつ
まだまだ勉強が足りないなぁ...反省
594 :
デフォルトの名無しさん :2007/11/07(水) 16:48:57
vb.net 2003でbitmapを使って画像拡大したいのですが、画像がぼけて綺麗に表示されません。 どうしたらいいですか!?ちなみに、モノクロ画像で16*16の画像を256*256にしたいです。 よろしくお願いします!!
そんなミエミエの釣りなんかな〜んにも面白くないよ
1ピクセルごとにスキャンして拡大して描画
597 :
デフォルトの名無しさん :2007/11/07(水) 20:32:40
ありがとうございます。そのやり方だとsetpixelとgetpixelの所でエラーがでます!! 1pixelを4pixelに拡大したいです。
599 :
デフォルトの名無しさん :2007/11/07(水) 21:20:53
With BmpInfo With .bmiHeader .biSize = Len(BmpInfo.bmiHeader) .biWidth = BmpData.bmWidth .biHeight = BmpData.bmHeight .biPlanes = 1 .biBitCount = 32 .biCompression = 0 .biSizeImage = BmpData.bmWidth * BmpData.bmHeight * 4 .biClrUsed = 0 End With End With これをvisual basic 2003で書き換えたらどうなりますか?
601 :
デフォルトの名無しさん :2007/11/07(水) 21:30:56
bitmap構造体を使って、モノクロの画像を拡大したいです。画像は16*16の画像で その時の画像の1pixelを4pixelにして256*256の画像にしたいです。同じ画像は 表示できたのですが、拡大が出来ません!pictureboxが二つあり、picbox1のほうに画像を読み込み picbox2に拡大表示したいです。どうしたらよいですか!?よろしくお願いします!!
不可能です。
>>601 嘘教えるけど怒らんでね
(x,y)が黒だったら
(x*4, y*4, 4,4 )の領域を黒く濡場おk
4ピクセルて2*2だよな どうやって16*16が256*256になるんだ?
てか16x16を256x256にしたら4倍じゃなくて16倍だろ常識的に考えて……
607 :
デフォルトの名無しさん :2007/11/08(木) 00:39:31
すみませんよろしければ教えてください。お願いします。 IEなどで、Webサイトを開くとそのページのタイトルがIEのタイトルに 表示されますよね、あれと同じものを取り出したいのですが、 VB.NETでそれを行うにはどのようにすればよいか教えてください。 よろしくお願いします。
608 :
607 :2007/11/08(木) 00:41:33
>>607 追記
VB.NETではWebBrowserでWeb表示する場合となります。
WebBrowserのイベントで何を取り込めばよいでしょうか。
609 :
607 :2007/11/08(木) 00:52:48
>>607 あ、わかりました!!DocumentTitleプロパティでした。
失礼しました!!
つうかHTMLの タイトル解析して取り出せよ
>>608 ソースを文字列で読み込んでから
"<title>"と"</title>"で挟まれてる部分を抜き取ってるだけじゃねーの?
ソース見てそれくらい類推できないかね?
>VB.NETではWebBrowserでWeb表示する場合となります。 なんだからそういう話じゃないんだろ多分。
613 :
デフォルトの名無しさん :2007/11/08(木) 16:50:08
TabControlでMouseDownされたTabPageを知りたいのですが、 Private Sub TabControl1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) _ Handles TabControl1.MouseDown MouseDownedTabPage = CType(TabControl1.GetChildAtPoint(e.Location), TabPage) End Sub という方法で取り出せるかと思いましたら、どうもNothingが返ってきて取り出せませんでした。 Moseボタンは右クリックの場合もあり、Selectされるとは限らず、 Selectされてもされなくても、Mouseボタンが押された所のTabPageが わかればありがたく。どのようにするべきでしょうか。
614 :
デフォルトの名無しさん :2007/11/08(木) 17:03:41
すいません、質問があるんですが!bitmapeditorの設定の仕方を教えてくだい。 bitmapeditorの設定で高さや幅、プレーンのプログラムを教えてください。お願いします
>>613 これでいけないかなぁ、多分。
Private Sub TabControl_MouseClick(ByVal sender As Object, ByVal e As MouseEventArgs) _
Handles TabControl.MouseDown
Dim SelectedTabPage As TabPage
For i As Integer = 0 To Me.TabControl.TabPages.Count - 1
If Me.TabControl.GetTabRect(i).Contains(e.X, e.Y) Then
SelectedTabPage = Me.TabControl.TabPages(i)
End If
Next
End Sub
>>613 なんかWinのGUIの基本的な考え方がわかってないっぽい発想だなあ。。
当たり前のことだが、マウスのイベントというのは、
「ユーザーによってマウスで操作されたコントロール」
で発生するんだけど、それ理解してる?
TabPage1が操作されればTabPage1(TabControl1ではない)のイベントが発生するし、
TabPage1の中のButton1が操作されればButton1のイベントが発生するんだよ。
617 :
613 :2007/11/08(木) 18:44:09
>>615 どうもありがとうございました!!
教えてくださった方法でTabPageを知ることができました!!助かりました!!
なんか馬鹿だな
煽るだけ房うぜーーww あ、おれもかwww
>>616 TabPageのクリックイベントぢゃTabPageのタブ部分のクリックは拾えないのよね。
TabPageのタブ部分のクリックはTabControlでしか拾えないから困ったちゃんなのよ。
んで
>>613 になったんだと思うにょ。
だから、それならクリックされたのは(TabPageではなく)TabControl(のタブの部分)でしょ。 読み手のESP能力に頼ってるのか、ベタに区別がつかないのか知らないが いずれにせよ愚かな質問だね
622 :
あにす ◆sGTL1yK0.6 :2007/11/08(木) 23:11:31
回答ついでに質問。 Dim hoge() As Object Dim hoge As Object() ってどう違うんでしょうか?
()の位置が違う
一緒。 時々前者の方を自信満々に推奨する奴がいるけど、 そういう人の言うことは今後話し半分に聞いた方がいいと思う。
625 :
あにす ◆sGTL1yK0.6 :2007/11/08(木) 23:18:15
前者は昔の名残 JavaやVB.NETだと「配列型」という意味で後者が正しいんだけど 昔のスタイルに慣れた人のために両方使えるようになってる C#ではついに後者のみになってたりする
へー、そうなんだ。 そういう文法的なことってパッケ買ったらマニュアルとかに書いてあるの?
628 :
あにす ◆sGTL1yK0.6 :2007/11/09(金) 07:01:48
>>626 へ〜。
そしたら
Dim hoge(0) As Object
はどう書いたらいいの?
Dim hoge As Object(0)
って書いたら怒られよ。
newつけろよ っていうかほんとに0でいいのか? いやなんとなく
なんか勘違いしてるみたいだけど Dim hoge(0) As Object と Dim hoge As Object() = New Object(0) {} は全く同じ意味だよ。どちらもhogeにはObject()型のインスタンスが代入される。 まあ後者は構文上かなり無理した感じがあるから、 きちんと理解した上で使うなら前者でいいと思う。
Dim hoge(0) As Object←Object型の配列の宣言 Dim hoge As Object() = New Object(0) {}←Object型の配列をObject型のインスタンスの配列で初期化 宣言だけしたいときはどうすればいいのん?ってお話でし。 Dim hoge(0) As Object はコンパイル通るけど Dim hoge As Object(0) は通らないぬ。
それで空の配列作ったつもりかい。 まえこれが原因のバグ入れた奴がいたな。
>>634 Dim hoge(0) As Object
hoge(0) = "moge"
Console.WriteLine(DirectCast(hoge(0), String))
で問題なく配列出来てると思うんだけど、漏れにも分かるように説明してほすぃ。
>>635 .
VB.NETでは固定長配列は使えません。それっぽく書けるだけです。
Dim hoge(0) as Objectと宣言しても実際にはhogeはObject()型の変数になり、
Object()オブジェクトへの参照が代入されます。
637 :
あにす ◆sGTL1yK0.6 :2007/11/09(金) 13:08:07
ぢゃあ Dim hoge(10) As String も Dim hoge As String() も同じってこと?
違う。後者では宣言のみで配列のインスタンスへの参照は代入されない。 Dim hoge As Object() = New Object(10) { } 前者はこれと同じ。実際全く同じコードにコンパイルされる。釣り?
型はいっしょだな。
てか
>>634 はそういう話ではない。
641 :
あにす ◆sGTL1yK0.6 :2007/11/09(金) 13:47:49
>>638 わかった気がする。
宣言時に長さを指定出来ないから
Dim hoge As Object()
として、
初期化する時に長さを決める
hoge = New Object(10) { }
つなげると
Dim hoge As Object() = New Object(10) { }
これを旧式で
Dim hoge(10) As Object
としてもいいようにしてあるってことね?
これで表面上はObject型の配列として扱えるように配慮してあると。
でもそれはObject()型の変数とな。
とすると、どう書くのが理想的なんでしょう?
>>641 まさか本気で先程
>Dim hoge As Object(0)
って書いてたのか?
釣りかと思ってた。
644 :
あにす ◆sGTL1yK0.6 :2007/11/09(金) 14:49:39
>>643 書くわけない。怒られるもん。
Dim hoge(10) As Object
って書いてた。
書いたんじゃねーかw
646 :
あにす ◆sGTL1yK0.6 :2007/11/09(金) 15:14:40
駄目なの?ちゃんと動くけど。
>>644 >書くわけない。怒られるもん。
つまり書いた。把握。
648 :
あにす ◆sGTL1yK0.6 :2007/11/09(金) 15:48:39
ちょ、試しただけwww
まったくの気分の問題なのだが次のように使い分けてる。 ReDimと組み合わせる場合はこれ Dim Hoge() As Object ReDim Hoge(3) C#っぽく、Hogeを配列オブジェクトとして意識して使う場合はこれ Dim Hoge As Object() Hoge = New Object(3) { }
使い分ける意味がわからんw どっちでもいいけど統一するべきだと思うよ
同じ意味なら Dim hoge(10) As Object が違和感なくていいなぁ、N88風で。 でもなんか急に古臭く見えてきたw Dim hoge As Object() hoge = New Object(10) { } がカッコいいかも。 ReDim使うことが確実なようなら最初から Dim hoge As New List(Of Object) にするかな。
ROMってた 勉強になった
>>653 ずるいw
漏れだけハヂかくなんて!
釣り?とか言われてさ…orz
>>654 まぁまぁ
聞くは一時の恥、聞かぬは一生の恥というではないか
>>651 >>650 の上2行はVB6でも実行できるが、下2行はエラーになる。
つまりVB6らしい書き方をするかC#らしい書き方をするかの違い。
あくまでも気分的な問題だよ。
話はそれるが、 この2つは結果が異なり、結構はまることがある。 ' VB6 Dim i As Integer, j As Integer For i = 0 To 9 Dim t(9) As Integer t(i) = i For j = 0 To 9: Debug.Print t(j);: Next: Debug.Print Next ' VB.NET Dim i, j As Integer For i = 0 To 9 Dim t(9) As Integer t(i) = i For j = 0 To 9: Console.Write(t(j)): Next: Console.WriteLine() Next
VB6読めない。 下のコードも意図がわかんないけど。 ふいんき(←何故か変換出来ない)では一緒に見える。 変数のスコープの話?
VB6ではDimステートメントは宣言文だが、.NET以降は宣言+命令の複合になる。 VB6 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 1 2 3 0 0 0 0 0 0 : 0 1 2 3 4 5 6 7 8 9 .NETでは毎回初期化される。 0000000000 0100000000 0020000000 0003000000 : 0000000009
660 :
あにす ◆sGTL1yK0.6 :2007/11/09(金) 18:14:39
うはっ、VB6まぢ想定外WWW
>>659 なんか勘違いしてると思うよw
VB6は単にブロックレベルのスコープが存在しないだけでしょたぶん。
>>658 日本語の勉強も必要なのか…
ふんいき だよ…
>>662 釣りなのか、2ch初心者なのか。
つまり言葉のふいんき←(なぜか変換出来ない)ですよ。
(´-`).。oO(わかんねえかなぁ、この微妙なヒーリング)
どう見ても後者
寂しいのかなんか知らんが、くだらん馴れ合いなら他所でやれよ
RichTextBoxでまた教えてください、よろしくお願いします。 RichTextBoxで、SelectedRtfをClipBoardにRtf形式で取り込むと たとえばWordPadにはPasteできるのですが、メモ帳などのText形式の エディタにはPasteできませんでした。 おなじRichText形式のエディタであるWordPadにおいては、 Selectされた部分をPasteすると、WordPadにもメモ帳にもPasteできました。 これと同様にPasteできるようにするにはどのようにClipBoardに格納すれば よろしいでしょうか。 ちなみに、Rtf形式で格納した直後に、同等の形式でText形式でも格納して しまいましたら、あとの方のText形式のものだけが有効になってRtf形式のものは 無効になってしまってWordPadにはPasteできませんでした。
669 :
668 :2007/11/10(土) 01:01:09
>>668 失敗したコードは、連続してこのように両方書いたもので、
Clipboard.SetData(DataFormats.Rtf, ActiveRichText.SelectedRtf)
Clipboard.SetData(DataFormats.Text, ActiveRichText.SelectedText)
です。
両方の形式でどちらも保存することができるものでしょうか、
できるとしたらどのようにして行えばよいでしょうか。
670 :
デフォルトの名無しさん :2007/11/10(土) 01:21:21
画像の上に影付きの文字を書きたくて、Picturebox に label1 と label2 を重ねて置いて、 それぞれのラベルを、BackColor = Color.Transparent として、また、どちらも Parent = Picturebox としました。 すると、下に敷いた方は見えますが、上に置いた方が見えません。 labelコントロールを重ねないと両方の文字が表示されます。 画像の上に影付きの文字を描画するには、labelコントロールではだめなのでしょうか?
labelでもなんでも自前で文字を描画すればよかよ
672 :
668 :2007/11/10(土) 12:54:01
>>668 (訂正)
>あとの方のText形式のものだけが有効になってRtf形式のものは
>無効になってしまってWordPadにはPasteできませんでした
これは意味としては、Pasteはできるが、Rtf情報がないただのTextの
Pasteにしかならなかったということでした。
VB2005 ExpressをDLして使ってみたのですが しばらく使ってると、コードの画面が「Form1.Designer.vb」になり デザインコードが書かれたコード画面になります。 「Form1.vb」も別タブで存在しますが、フォームにボタンなどを置いて Wクリックすると、「Form1.Designer.vb」にコードを書こうとします。 これは何らかが原因でPartial Classが無効になったのでしょうか? 「Form1.Designer.vb」が出てこないようにするにはどうすればいいのでしょう?
674 :
668 :2007/11/10(土) 16:23:16
>>674 名前空間違いで同じ名前のコントロールが複数ある。
System.Windows.Controls はWPF用で.NET3.0から追加される。
System.Windows.Formsもなくなってはいないからよく探すべし。
イベントを持つ Class を作成して、それにHandles でくっつけるために Public WithEvents ClassA as New ClassAA のように定義し、Form1 で宣言しましたが Formの外からこの ClassA のプロパティなどにアクセスできません。 Public だから当然、他からも参照できると思ったのですが、 こういう使い方はダメなのでしょうか?
参照できるよ クラスとインスタンスの関係とか理解してなさそう
>>677 ああ、なるほど
Form1 は Formから派生してるから、その Public にアクセスするためには
Form1.ClassA とまで修飾してあげないとダメなんですね
WithEvents とか関係なかったです
ありがとうございました
まあ、できても良くないことだよ ClassAのインスタンス自体を公開するんじゃなくて、Form1にイベントを定義して ClassAのイベントが発生したらそのイベントを発生させるようにするべき
681 :
デフォルトの名無しさん :2007/11/10(土) 23:59:01
>>671 labelをやめて、
DrawStringで文字を書くことにしたのですが、指定する文字列に改行が入ったときに
その行間の指定は出来るのでしょうか?
ご存じの方、いらっしゃいませんか?
>>681 調べてみるとベタにはできそうにないね。
自分で一行ごとに描画するしかなさそう
今、二台のPC間で互いの画面をキャプチャし、それを相手のPCに送るソフトを作っているのですが、
画面をキャプチャし、送らずに自分のソフトに表示させることはできています。
しかし、それを相手に転送するとなると、jpeg辺りに画質を落として送るのが良いと思うのですが、
画質を落として送る方法がわかりません。
一旦、送る前に画質を落としてjpeg形式で保存、というのは保存する必要はないと思うので避けたいのですが…。
画面のキャプチャには
http://dobon.net/vb/dotnet/graphics/screencapture.htmlの.NET Framework2.0以降で追加された...というのを使っています。
また、転送にはUDPを使用する予定です。
開発環境はVS2005です。
よろしくお願いします。
だから画質を「落とす」んではなく、 jpegにすると(非可逆圧縮の結果として)画質が「落ちる」んだよ。 恥ずかしい質問だなあw
>>684 返信ありがとうございます。
少し勘違いしていたようです。
解決しました、ありがとうございました。
686 :
デフォルトの名無しさん :2007/11/11(日) 14:55:07
>>682 だいぶ探してみましたが、.netでは設定できないというものだけが2件ありました。
情報ありがとうございました。
DrawStringの行間を決めるものはFontのHeight(あるいはGetHeight?)のようだから フォントを自作できればいいんだろうけど、それはあまり現実的な解ではないよね。
688 :
デフォルトの名無しさん :2007/11/11(日) 20:49:25
689 :
デフォルトの名無しさん :2007/11/11(日) 21:29:31
2003でTextBoxを継承して、数字しか入らないようにとか、いくつかカスタマイズして使っているのだけど、 VSでフォームを開いてみると、カスタマイズしたTextBoxが表示されてないことがあります。 (コードを実行すると表示される) 大体はリビルドするとなおるのだけど、どうしても直らないこともあって、動作がいまいち不安定です。 これってこんなもんなんでしょうか? それとも、普通はこんなことはなくて、自分のところだけのことなんでしょうか?
あるある
>>689 単なる俺の経験則で根拠はないけど、
継承コントロールが、それを使ってるフォームと同じプロジェクトにあると
そういう問題が発生するみたいな気がする。
少なくともプロジェクトを分ければそういう問題は発生しないと思うよ。
でも循環参照の問題でそれが困難な場合があるから困るんだよね。。
イベントログのAPI ReadEventLogで教えてください。 '--- イベントログファイルを読み込み Private Declare Auto Function ReadEventLog Lib "advapi32.dll" _ Alias "ReadEventLogA" ( _ ByVal hEventLog As Integer, _ ByVal dwReadFlags As Integer, _ ByVal dwRecordOffset As Integer, _ ByRefl lpBuffer As EVENTLOGRECORD, _ ByVal nNumberOfBytesToRead As Integer, _ ByRef pnBytesRead As Integer, _ ByRef pnMinNumberOfBytesNeeded As Integer) As Integer と定義して ReadEventLog(hEventlog, EVENTLOG_SEQUENTIAL_READ Or EVENTLOG_FORWARDS_READ, _ 0, lpBuffer, BUFFER_SIZE, pnBytesRead, pnMinNumber) と呼び出したところ、以下のエラーが表示されました。 PInvoke 関数 'ManagedEventLog!ManagedEventLog.frmMain::ReadEventLog' が スタックを不安定にしています。PInvoke シグネチャがアンマネージ ターゲッ ト シグネチャに一致していないことが原因として考えられます。呼び出し規 約、および PInvoke シグネチャのパラメータがターゲットのアンマネージ シグ ネチャに一致していることを確認してください。 エラーを表示させずに実行させるアドバイスをいただければと思います。
各項目の定義は以下です。 '* 定数 Private Const EVENTLOG_SEQUENTIAL_READ = 1 Private Const EVENTLOG_SEEK_READ = 2 Private Const EVENTLOG_FORWARDS_READ = 4 Private Const EVENTLOG_BACKWARDS_READ = 8 '* 構造体 Public Structure EVENTLOGRECORD Public Length As Integer Public Reserved As Integer Public RecordNumber As Integer Public TimeGenerated As Integer Public TimeWritten As Integer Public EventID As Integer Public EventStructure As Short Public NumStrings As Short Public EventCategory As Short Public ReservedFlags As Short Public ClosingRecordNumber As Integer Public StringOffset As Integer Public UserSidLength As Integer Public UserSidOffset As Integer Public DataLength As Integer Public DataOffset As Integer End Structure Dim hEventlog As Integer Dim lpBuffer As EVENTLOGRECORD Dim pnBytesRead As Integer Dim pnMinNumber As Integer
694 :
デフォルトの名無しさん :2007/11/14(水) 02:06:48
>>687 はい。やはり、1行ずつ書いた方が楽かもしれません。
ありがとうございました。
Visual Studio 2005 vb.net で質問です。 Windows Forms 上に Excel ファイルを表示させたいのですが なにかよい方法はないでしょうか? Excel の内容の表示のみで編集などは一切不要です。 ただし Excel にはグラフ、画像などが貼ってあるので それらも表示させたい。 実現させるために、よい方法があれば教えてください、よろしくお願いします。
697 :
デフォルトの名無しさん :2007/11/15(木) 11:38:15
質問です。 Graphics.DrawStringメソッドの引数StringFormat にStringFormatFlags.DirectionRightToLeftを指定して 実行すると 指定文字列="(AB)C."に対して 画面上は.AB)C)となります。 この変換処理には関心するばかりですが、 この"(AB)C."文字列からRightToLeftした結果の".AB)C)"という 文字列を取得する方法はあるのでしょうか?
>>697 関心するっていうか、バクじゃないのこれ?
DirectionRightToLeftって指定した四角の右辺か、指定した座標を起点に
右から左に向かって描画しろって意味のはずだよね。
こんな妙な細工をする仕様に意味があるとも思えないけど
わしもそう思った
".C(BA)" が本来の結果ってこと?
701 :
デフォルトの名無しさん :2007/11/15(木) 21:40:52
いや、
>>697 みたいな変な(?)文字じゃなくて普通の文章でやればわかると思うし、
MSDNライブラリを普通に読めば、単に指定された点または四角の領域にたいして
右寄せで描画するのが本来の仕様じゃないの?
しかし括弧がはずれてしまうのは明らかにおかしいでしょ
703 :
697 :2007/11/16(金) 14:15:43
>>701 私も最初はたんに右寄せというのを期待したのですが、
調べてみるとRightToLeftというのはアラビア語や日本語縦書きの様に
右から左へ書く為の機能であり、且つ左から右へ書く言語との
共存を意識した結果、こういう機能に至ったのだと判断しました。
例えばアラビア語と英語の混在では
"アラビア ABC" → "ABC アビラア"となるようです。
今回の場合、"."や"()"は、単体であれば右から左へ書く言語として
扱いアルファベットに挟まれていると左から右へ書く言語と
なっているんだと思います。
"(AB)C."これは
最初の"("を右から左へ書く言語として判断し括弧を反転させた。
次にABの後にスペースが無い為"AB(C"までを一つの左から右へ書く
言語として扱い、
最後に"."を扱った結果、
".AB)C)"になったと推測しています。
(MSDNに確認しろよ自分と思いましたが先に2ちゃんでry
これを自前で処理するのはちょっと時間が掛かりそうなので、
RightToLeftした結果の文字列を取得できるような機能が
用意されていないのか聞きました。
すみません。自分で探せ、ですよね。
704 :
デフォルトの名無しさん :2007/11/16(金) 18:26:25
質問です。 .net compact framework 使っているのですが、 タブ遷移のような動作を行う場合に Me.SelectNextControl(Me.activecontrol, True, True, True, True) を使うことはできないのでしょうか? どうやらactivecontrolがないっぽいです。
SendMessageじゃだめすか? つうかTabIndex設定したらTAB遷移は普通にけないか?
>>705 ありがとうございます。
なんかいろいろありまして、X01HTのハードウェアボタンを取得して
それにタブ機能つけることに・・・
どのボタンが対応しているかすらわからない・・・
とりあえず、タブ機能だけ考えようかと・・
>SendMessageじゃだめすか?
MessageWindow.SendMessage()のことですよね?
サンプル見たのですがよくわかりません。
へたれで申し訳ございませぬ OTL
707 :
557 :2007/11/16(金) 22:42:26
>>557 で質問した者です。
WebBrowserコントロールを使用して
Navigateメソッドでパスを指定することにより、任意のフォルダ内のファイルを表示させる
ところまではうまくいきました。
この時、ファイルの表示スタイル(縮小版、並べて表示etc)を、
右クリックのコンテキストメニューで指定するのではなく、
プログラム内部で制御したいのですが、方法がどうしてもわかりません。
ヘルプのメンバ一覧を見てもそれらしきプロパティやメソッドは無かったです。
出来ればWindowsエクスプローラのファイル表示方法をフォルダ毎に取得して、
表示スタイルを同期出来ればベストなんですが、WebBrowserコントロールでは
そういう事は不可能なんでしょうか?
長文すいませんです。
708 :
デフォルトの名無しさん :2007/11/16(金) 23:36:18
テキストファイルの編集で質問です。 数万行のテキストファイルがあり 末尾の改行コードしかない行だけを削除したいのですが 何か高速に末尾から読み込んで判断する方法はあるでしょうか? ご存知でしたら教えてください。
710 :
デフォルトの名無しさん :2007/11/16(金) 23:53:19
>>709 はい。
数万行ならStreamReaderでも良いかと思ったのですが
ファイルが複数ありかつ1ファイルが90MBくらいあるので性能が気になります。
何か方法がありますか?
>>710 普通の処理ってのは、FileStreamあたりで、ファイルの最後までseekさせて、最後の4バイトが、
CRLFCRLFになっていたら、ファイルサイズを2バイト縮めるってのを考えたたんだけど。
>>708 最後の空行だけを削除したいってんなら、
Dim str as String = System.IO.File.ReadAllText(filepath)
Dim output as String = str.Replace(vbCrLf & vbCrLf , vbCrLf)
Call System.IO.File.AppendAllText(newfilepath , output)
こんなんでどうでしょうか?
bcpにパイプは使えんのか。
715 :
704 :2007/11/17(土) 01:18:51
>>706 なんとなくですが動きました。
項目の数だけイベント作って、ハンドル変更して実現してるのですが、
もっとうまい方法とかあれば教えてください。
>>712 おまえは90MBのファイルにそんなことするんかいw
CSV作るコードとかでも、全部メモリ上で作成してから ファイルに書き込むコードを書く奴が多い。 サイズが大きくなったときにどうなるかとかはあまり考えないんだろうな。 でも文字列の連結を+でやることにはめちゃめちゃ過敏だったりする。
>>717 でもそれって理念的には必ずしも間違いとはいえないんじゃない?
Win環境を前提とした現実解としてはたぶん間違いだろうけど。
理念てどういうのを言ってる? 理由があってそうしてて想定されるサイズからも 問題ないなら別に文句無いけど、 深く考えてないだけで後で問題になるケースをよく見る。
低レベルな質問ですがよろしくお願いします。 つかわないインスタンスを無駄に作らないように、下のような繰り返し構造の中で オブジェクトの生成や変数宣言をしていて、何度か同じ宣言を通過することがあります。 こういうやりかたは問題がありますでしょうか Do '処理いろいろ If i = 1 Then Dim str As String '処理いろいろ End If Loop
目的とやってることが逆 インスタンスを無駄に作りたくないんだったら中じゃなくて外で作る。 ループの中で変数宣言すること自体は全く問題ないけど (むしろ中でしか使わないなら極力そうするべき。その方が見やすい。) 重いクラスのオブジェクトをループ内で何回も作りまくったりすると 遅くなったりメモリがえらいことになるかもしれないから、外で作って使いまわすとか 場合ごとに適当に判断するしかない
>>721 なるほど、こういうことを説明してくれるところが
なかなか見つからなかったので大変勉強になりました。
使用する範囲や頻度、重さなどを考えて(オブジェクトは重複しないように)使いまわせるものは
外で作るようにがんばってみます。
ありがとうございやした
なぜなら説明しなくても見たままだから。
他人のコードを見るときは、宣言がメソッドの先頭に無いと分かりづらいなぁ
VB6と両方使ってるならそこはいろいろ非互換がある部分だから、 宣言は先頭にもって行ったほうが安全だ。 VB6だとこういう変態的なことが出来る。 Do While True Dim A As Double A = Rnd() If A > 0.5 Then Exit Do Loop Debug.Print A
スコープって何? それおいしいの?
>>724 すまんそれもちろんネタで言ってるんだよね?
ひょっとして本気で言ってるの?
メソッドの先頭に必ず Dim i, j, k, l, tmp, buf As Integer とかコピぺする人なんだよきっと
どの言語でも、関数の先頭で変数宣言をするほうがいいと思ってる人っているけど、 あまりに勉強不足すぎる。
先頭にまとめてると自然にgoto的なコードを書いちゃう
731 :
デフォルトの名無しさん :2007/11/18(日) 13:08:29
お世話になります。どなたか教えてください。 インターフェース内の抽象メソッドの名前を、そのインターフェースを実装したクラスでリネーム不可能にすることは出来ますか? 例えば ●インターフェース Public Interface ITest Sub hoge(ByVal hoge As String) End Interface ●上記を実装するクラス Public Class test Implements ITest Public Sub hoge(ByVal hoge As String) Implements ITest.hoge ↑ここを変更不可にしたい。 End Sub End Class デフォルトだと、hogeの部分が自由に変更できてしまいます。 そもそもなんで変更できちゃうのでしょうか? 変更できるのならインターフェースを実装する意味があまりないような気もします。
名前をそろえるのがインターフェイスの目的じゃないからね インターフェイス経由でアクセスするときは名前が変更されてても常にhogeで問題ないよ 気に入らなかったらC#使え
>732 どうもありがとうございます。 >インターフェイス経由でアクセスするときは名前が変更されてても常にhogeで問題ないよ 試してみました。 確かにクラスをインターフェースにキャストすれば、インターフェースでのメソッド名でアクセス可能ですね。 安心しました。 >名前をそろえるのがインターフェイスの目的じゃないからね Javaではそういった感じでしたが…。 外ッ面を統一するからこそ”インターフェース”という名称であると認識しています。 VBだと他に目的があるのですか?
インターフェイス経由でアクセスできさえすればいいわけで VB.NETやC#では、インターフェイスメンバをprivateにして実装することもできるんだよ もちろんインターフェイス経由なら外部からアクセス可能
Public Interface ITest2 Sub hoge(ByVal hoge As String) End Interface "も"実装したくなったときのためってのもある
javaだって名前を揃えるのが目的じゃない。 インターフェイスをちゃんと理解してたら、 そんな風には思わない。
Windowsのユーザーアカウントの一覧リストをプログラム上で表示して そこからアカウントを選択するようなことをする場合、ユーザーアカウントの リストを得るためのクラスがあればうれしいのですが、どのようなものがある でしょうか?よろしくお願いします。
738 :
737 :2007/11/18(日) 16:39:04
>>737 追記
また、そのリストを、Domain上のユーザーアカウントに対しても取得したい
場合にも有効なクラスであれば尚ありがたいです。
739 :
737 :2007/11/18(日) 23:45:45
>>737 アクティブ ディレクトリのユーザーリストを取得する方法
http://www.microsoft.com/japan/msdn/vbasic/migration/tips/DirectoryUser/ ここのサンプルで与えられているような方法があることがわかりましたが、
ここでActiveDirectoryの子ノードという形での取得の仕方の場合では
WinNT://TestPC
という形式で特定のPCをしているようでした。
これを、スタンドアローン、もしくは単なる(ドメインでない)WorkGroup上のPCの場合
ではPCの名前の与え方というのはどのようになるでしょうか。
System.DirectoryServices.DirectoryEntryオブジェクトのPathプロパティの与え方
ということになりますが、その一般形式について教えてください。よろしくお願いします。
740 :
737 :2007/11/18(日) 23:47:29
>>739 訂正
>WinNT://TestPC
>という形式で特定のPCをしているようでした。
↓
>WinNT://TestPC
>という形式で特定のPCを指定しているようでした。
741 :
737 :2007/11/19(月) 00:05:06
>>739 本件、Helpに記載がありました、失礼致しました。
742 :
デフォルトの名無しさん :2007/11/19(月) 03:22:44
メソッド名が格納されたStringの変数がある状態で その変数から格納された文字列の名前のメソッドを呼び出すのは どうすればよいでしょうか? ObjectDataSourceのSelectedMethodのようなプロパティを実装することが 目的です。 よろしくお願いします。
ObjectDataSourceのSelectedMethodで取得した名前からどうしているのか聞こうか
744 :
742 :2007/11/19(月) 03:57:04
>>743 すみませんどういう意味ですか?
ObjectDataSourceのSelectedMethodのように変数名を受け取るプロパティを定義したのはよいのですが
別の場所で受け取った文字列のMethod名から実際に呼び出す方法がわからなくて悩んでいます。
ObjectDataSourceのSelectedMethodは例で特に今回の話は関係ありません。
dim s as string ="Method1"
「s」からこんな感じでメソッドを呼び出したいのです。
AllMethods(s)()
メソッド名の文字列から該当する名前のメソッドを呼び出す方法、ですね。
ここでいいか分からないけど、 普通のC/SシステムでDBアクセス部分だけC#で作って 他はVB.netにするメリットはありますか? 何故か今の現場はC#の方が速いらしく導入しているみたいですが、 結局フレームワーク上で動くから同じような気がするのですが・・・。
RichTextBox で LinkClickedイベントが立ったときに、そのリンクの場所を 知る方法はあるでしょうか。 e.LinkText を Search しても同じものが複数あるときに一意に定まりません。 MouseDownした場所などからでも該当箇所を知るようなことはできるでしょうか?
>>747 ちなみにLinkClickedEventArgsでは該当の位置等は取得できないためです。
これの目的は、2バイト文字があるとLinkTextにすべて含まれてくれないので
それをすべて取り込むために一行すべてを認識するためです。
こういうことは不可能でしょうか?
749 :
747 :2007/11/19(月) 13:02:58
750 :
デフォルトの名無しさん :2007/11/19(月) 18:20:28
最後に勝利するのは コ ボ ラ ー
コボルネタは巣に(・∀・)カエレ
752 :
デフォルトの名無しさん :2007/11/19(月) 20:29:56
VB2005です。いつもはPartialで分かれている「デザイナで生成されたコード」 がいつのまにか本体に入ってきてしまいました。 どうしたら元のように分けることができますか?
753 :
デフォルトの名無しさん :2007/11/19(月) 22:22:26
WindowsアプリケーションのDateGridViewのヘッダー部分を2行にしたいのですがどうやれば良いのでしょう? 検索するとASPのやり方はたくさん出てくるのですが・・・助けてください。。。 ↓こんな感じのことがやりたい。。。 NO| なまえ |住所 | | 性| 名 | |
DataGridViewを継承したユーザーコントロール作成してヘッダのデータを2行分持ったりなんかして オーナードローすればいいんじゃね?
VB.NET2003で、「c:\・・\hoge(1)」みたいに、ディレクトリ名に"()"が入ってるところで下のコードを 実行すると必ず接続に失敗する現象に今日一日はまった。 dim conn as new OracleConnection(・・・) conn.Open() ' 必ず失敗 フォルダ名を「c:\・・\hoge-01」とリネームするとうまく実行できるようになる。 わけわからん。
>>755 > VB.NET2003で
じゃなくて
> OracleConnection
で、だろ
757 :
742 :2007/11/20(火) 02:32:06
>>745 ばっちりです。
ありがとうございました。
758 :
デフォルトの名無しさん :2007/11/20(火) 05:06:13
デスクトップマスコットを作りたいのですが、どうやって作ったらいいか思い浮かびません サンプルソース等参考になるものはないでしょうか?
759 :
デフォルトの名無しさん :2007/11/20(火) 13:15:18
ググレカス
CONTECのDIO(DIO-24DY-USB)から出力されるビットを監視して、 立上りでマウス左ボタンDOWN、立下りでマウス左ボタンUP といった動作をさせるツール(VB2005)を製作したのですが、 こんな自作ツールを使わずにハードウェアだけで実現させる事のできる装置はあるのでしょうか?
761 :
デフォルトの名無しさん :2007/11/20(火) 15:47:49
Dim Cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\user\My Documents\Mu.mdb") Dim SQLCm As OleDbCommand = Cn.CreateCommand SQLCm.CommandText = "UPDATE テーブル1 SET Count = Count+1 WHERE ID = 2" Cn.Open() SQLCm.ExecuteNonQuery() Cn.Close() MsgBox("変更しました。") SQLCm.ExecuteNonQuery() の所 で'『 System.Data.OleDb.OleDbException' のハンドルされていない例外が system.data.dll で発生しました。』 と出て、データの変更が出来ないのですが どうすればよいでしょうか。 よろしくお願いします。
マウスクリックで接点がつながってるはずだから マウス分解してその接点つながったことにするような回路作ればいいんじゃね?
SQLだけをACCESSに投げたら成功しますかい?
764 :
デフォルトの名無しさん :2007/11/20(火) 16:00:48
765 :
デフォルトの名無しさん :2007/11/20(火) 16:02:09
つーか、このスレ不親切だから、VB基地害脳のDQNの集まりw
766 :
デフォルトの名無しさん :2007/11/20(火) 16:10:22
>>761 コード見た感じではエラーが見当たらないので、まずはコネクション
だけとか、ある程度限定したところでやってみるしかないと思う。
767 :
デフォルトの名無しさん :2007/11/20(火) 21:28:20
Windowsアプリケーションにおける Thread についていまひとつよく理解できて おりません、すみませんが教えてください。 Help等のサンプルを見ましたところ、Threadを作成するということ、イコール、 ある一つのSubプロシージャを、平行実行するThreadとして割り当てるという ものののようでしたが、 これはメインのThreadである、スタートアップForm上のように、イベントドリブンでの 書き方で制御を表すようなことは不可能なのでしょうか? 独立した複数のアプリケーションを、マルチプロセスで平行実行させてその間を DDEやOLEなどで通信して連動的に並行的処理を進めるというようなことを、 マルチThreadの方式で実現したい場合、 ThreadをどれかのSubプロシージャに割り付けるということをしますと、その内部で イベントドリブンにするということができなくなるものと思われ、やはり不可能なのか と思いました。そうなるとそのSubプロシージャ内ではループを回して常にCPUが 休まることがない状態に置かれてしまうと。 こういう理解でよいものでしょうか、いまひとつ理解しきれていません。 ご指導のほど何卒よろしくお願いします。
768 :
767 :2007/11/20(火) 21:37:55
たとえば、ですが、FileSystemWatcherの動作は、SyncronizedObjectを設定しなければ ThreadプールというFramework内のシステムで持っているThreadにおいて実行されると 説明されていまして、 この場合、それでも、FileSystemWatcherのイベントは、メイン側、つまりユーザーアプリケーション のメインThread側に伝えられてきて、なんらかの処理が可能になっていました。 これは、Frameworkの備え付けのThreadプール内のどれかの或るThread内でイベントを 発生させているものと思われ、 ということは、Thread内でのイベントドリブンという制御フローは存在できるのではないか、 とも考えられたのですが、 もしそうであれば、それと同様に、いわゆるThread.Startで実行される特定のSubプロシージャ 内でも、イベントドリブンの制御に近いことが可能になるものなのでしょうか。 すみませんがよろしくお願い致します。
mdbのアクセスはADOでやってる☆(ゝω・)v
意味不明
なんで日本語のはずなのにこんなに読みづらいんだろう 基本的にスレッドは使い捨てと考えた方が気が楽になるよ
読点の使い方がおかしいからでは
イベントドリブンとマルチスレッディングって直交する概念だぞ。 ごっちゃにしても何も新しいものは出てこない、ただ組み合わさるだけ。
プログラマって文章下手な人結構多いよね たぶん、精査せずとりあえず書いちゃう人が大多数だろうけど
俺は少数派なのか。
あんま関係なかろう。
777 :
767 :2007/11/21(水) 00:09:49
>>773 >イベントドリブンとマルチスレッディングって直交する概念
ということは、やはりThreadクラスで作られるスレッドの中には何かのオブジェクトを
コンストラクトして、それのイベントが立つのを待っているような「アプリケーション」の
形は書けないということなんでしょうか、、
>>768 のFileSystemWatcherの場合はどのようにしてそれが実現しているのか
よくわからないんですが、あれってのは現実にFileの変化をイベントとして送って
来ますよね、あれができてるということは、Threadオブジェクトの中でもできそうな
感じがしたのですが、やっぱりできないものでしょうか・・・。
て言うか何が分からんのかが分からんのよね 素直に BackgroundWorker 使ってればいいんじゃない?
779 :
767 :2007/11/21(水) 00:16:49
>>771 ということは、アプリケーションが始まると同時にスタートし、終了の手前で止める、
みたいな使い方は普通はしない、ということでしょうか。
とすると、やはりイベントドリブン制御は望むべくもないと・・・。
そういうものはマルチプロセスでプロセス間通信でやるしかないと・・・いうことでしょうか。
>>778 BackgroundWorkerですが、これではイベント発生ように渡せる引数が限られている
感じがしたのですが。それと、やはり内部ではループを回していることにはかわりない
ような感じもしました。また勉強してみます。
自分で定義したクラスのインスタンスを渡せばいいだけだと思うけど、そういう話ではない? もしそういう話だとしたらスレッド云々より遥か以前の問題だと思うけど
>>777 直交って言葉知っている?
マルチスレッドにしたからといって、
イベントドリブンができないというというのは間違いだと言っているのだが。
>>778 なんのために引数がObjectになっているかわかってないんじゃね?
正直何が疑問で何が聞きたいのかさっぱりわからない。
とりあえずThread起こして、そのスレッドでForm.ShowDialog()でもしてみたら? ボタンとか付けてみて、イベント起こしてみたら? そいでIllegalCrossThreadCallのExceptionのひとつでも起こしてみたらよかよ
つうか、こういうやつにBackGroundWorker使わせるのは危険だな いや・・そういうやつのために安全につくってあるんだろうけど・・・・ 一回はスレッドをコントロールに頼らず作らせたりして勉強すべきなんじゃないかと・・・
いやむしろスレッドなんか触らせない。 勉強させても無駄。
サンプルプログラムとかをいじり倒せばいいのに。 机上で理解しようとしてわかんねーと言う奴多すぎ。 机上で理解とか俺だって無理。
まあ最初はね。
スレッドは机上で論理的に考えられなきゃまともには使えない。
791 :
767 :2007/11/21(水) 09:44:46
みなさんどうもありがとうございます。 わたしのできればの要求は、メインスレッドと同じように内部でコントロールを配置して それらの発するイベントを検知してそれによって制御ルーチンが移動するものにして、 かつメインスレッドと対等な関係で並行して伴奏実行して存在する第2、第3、のスレッド ができるのなら助かるということでした。 どうもサンプルみた限りではそういう構造では存在していないように感じるのですが、 どんなものでしょうか?
792 :
767 :2007/11/21(水) 09:46:25
要するに、プロセスの内部版がスレッドということなら、単純に理解しやすくて かつ有用なのではないかということでした。そういうようなものはこの世には 存在しないのでしょうか。
793 :
デフォルトの名無しさん :2007/11/21(水) 10:18:21
VB.NETで作成した実行ファイルExeを実行中にエラーが起きたとき、 「デバッグしますか?」と出てきてそれを選ぶとアセンブラのニーモニック表示 でコードが出てきてエラーした場所を示して停止していました。 そこでですが、その場所がソースコード上のどこに該当するのかを知るには どのようにすればよいでしょうか。よろしくお願いします。
>>794 やっと「逆アセンブル」メニューをHiddenから表に出せるようになりましたが、
そこでどこら辺で止めてエラーしたアドレス近辺を表示できるかためそうとしてました。
こんな感じでいつかそこが出せればいいんでしょうか?
ソースレベルでデバッグしてもエラーしたところで何も表示されず、OSレベルか
.NETのRuntimeレベルでのエラー表示しか出ず、ソースではとまってくれない
エラーなので困ってました。
>>792 「スレッド メッセージループ」
で、ぐくれや、ハゲ。
>>795 >OSレベルか.NETのRuntimeレベルでのエラー表示
これですが、メッセージは
「〜の 0x766da3bc でハンドルされていない例外が発生しました:
0xC0000005: 場所 0xb2ac0005 を読み込み中にアクセス違反が発生しました。」
というもので、それに前後して出る.NET用のメッセージボックスで
「問題が発生したため、〜を終了します。ご不便をおかけして申し訳ありません。」
となって、その左下の[デバッグボタン]を押して出る、「エラー署名」のところに、
「 ModName: wininet.dll
ModVer: 6.0.2900.3199 Offset: 0007a3bc 」
と表示されていました。
これはwininet.dllのネイティブコード上の場所なんだと思いますが、その呼び出し元が
自分のソースコード上のどこなのかがわかればと思ったのです。自分ではそれを直接Call
してないので、WebBrowserがCallしているのだと思います。
この不具合は、2ch用のJaneStyleをいっしょに使っているときに、IEやWebBrowserアプリケーション
でそのネイティブ・コンテキストメニューからURLショートカットを作成したときに発生し始めます。
これはJanestyleを使わないでいれば発生しません。なのでおそらくWininet.dllとJaneStyleが
.NETを使ったときに何か絡まってエラーを引き起こしているのだと推測していましたが、
これでは.NETでWebBrowserアプリケーションが作成できないことになって困るのでした。
>>797 それでみなさんのところではこうした問題は起きていないようでしたので、
WebBrowserの使い方で回避策があればそれを適用して直せないものか
とも思ってました。
こんな感じなのですが、何かアドバイス等いただけたらありがたく。
ちなみに、この
>>797 のエラーが発生してしまうとその後でJaneStyleを終了して
も直らず、最終的にはWinXpの再起動でしか回復しなくなり困っていました。
(みなさんのところではこれに類する似たような不具合はやはり起きていないでしょうか)
800 :
デフォルトの名無しさん :2007/11/21(水) 14:23:31
どうしても、ここの部分でエラーがでます。bitmapの情報を保存したいのですが、どう書き換えればよいですか!? vb.netで書き換えたいです。 open (fname) for binary as#1 put #1, , bmp For j = 0 To 256 - 1 buf = ("") For i = 0 To 256 - 1 buf = buf & Chr$(i) & Chr$(i) & Chr$(i) Next i put #1 , , buf Next j close #1
>>791 ようするにコントロールの発したイベントの処理を別スレッドで行いたいということか。
それなら、コントロールのイベント処理の中で、新しくスレッドを起こせばよいのではないのか?
ToolStripコントロール上に載せられるコントロールで、Anchorが設定できて自動で 伸縮するものはあるでしょうか。ComboBoxやTextBoxでそれができるといいんですが。
変なスレ 基地害の集まり ( ゚д゚)、ペッ
>>797 デバッガ上で呼出履歴ってVB.NETだと見れなかったっけ?
>>761 ウチ風の書き方だとこんな感じ
Dim cn As New OleDbConnection
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\user\My Documents\Mu.mdb;Persist Security Info=False"
Dim cmd As New OleDb.OleDbCommand
cmd.Connection = cn
cmd.CommandText = "SELECT * FROM テーブル1"
cn.Open()
Dim rs As OleDb.OleDbDataReader
rs = cmd.ExecuteReader
rs.Close()
cn.Close()
806 :
デフォルトの名無しさん :2007/11/21(水) 18:49:25
>>804 どこかでエラーでとまってくれれば、その時点で履歴がある程度出るはずですが、
とまってくれません。エラーの出方はそこのUrlショートカット作成時と、WebBrowser
がNavigationするときの両方があるのですが、そrも不定期でそうなったりならなかったり
しているうちに、しまいにハングして触れなくなって飛ぶというようになります。
Urlショートカット作成時は結局自分のコードは動いていないため、WebBrowserが
Wininet.dllの内部のAPIを使っているときに起きているのだと思いました。
みなさんのところでそれが無いということは、WebBrowserの使い方でどこかに不備が
あるのかもしれません・・・。その辺また見直してみます。
本件はまたとします、いろいろありがとうございました。
一応、ホラ初心者と名前のついていないスレだからサ。 不親切とか騒ぐくらいなら、初心者スレ探してくれ。 なければ立てろ。
>>806 Visual Studioって実行中のプロセスをデバッグするなんてこともできるぞ。
ハングアップした段階でアタッチしてみたらどうよ。
てゆーか、どう見ても環境の問題じゃあないですか?
>>810 の補足です。
>>810 の現象は、デバッグ中には見られませんが、
bin/Debugやbin/Releaseの中にあるexeの方では見ることが出来ます。
デバッグ中には起きなくて、exeとして吐き出したものだと起きるという事は、VS2005のバグなのでしょうか・・・?
普通はそんなことにはならないと言うことは知ってる
もともとダメなつくりの奴の問題がリリース版で表に出ることはある。
814 :
デフォルトの名無しさん :2007/11/22(木) 17:26:58
vb.netでは、bitmap構造体をかえられないですか!?例えば、プレーンの数とか! どうか、お願いします。
無理!
>>812 ,813
開発はWindowsVistaでやっているので、もしかするとそれが問題なのかも知れません・・・
(VistaのOSとしての不具合?)
Debug版、Release版ともにVista上でビルドし起動すると、依然として
>>810 の状態になりますが、
そのEXEを、XPに持ってくると、何故か
>>810 の状態にはならず、ショートカットキーの表示がダブらなくなり、普通になります。
因みに、XPでビルドしたEXEをVistaで動かしても
>>810 の状態になります。
また、手を加えずにビルドを繰り返していると、
稀にショートカットキーの情報が消滅したり、正常な表示になることもありました。
(しかし、VistaでなくXPで動かすと、そんなことは全然関係ないかのように、常に正常な表記になりました。)
因みに、自分のVistaだけが問題なのか?と思い、知り合いのVistaマシンで動かして見たりもしましたが、結果は変わりませんでした。
取りあえず最小のコードを書いてみろ。 新しくプロジェクト起こしてMenuStripはっつけただけの。 ちなみにおいらのVistaでは問題ない。
>>817 それだと問題は起こりませんでした。
安定して、ショートカットキーの情報が正常な状態で表示されます。
所で、問題のプロジェクトを貼り付けてみた方がいいですかね?
819 :
デフォルトの名無しさん :2007/11/22(木) 23:09:29
>>810 なんかジョークソフトみたいだねw
明らかにドトネトフレームワークのバグだろうけど。
しかし、2.0はGUI関係のバグ本当に多いな。
VS2005のデザイナで外観を弄っていたら、存在しないボタンやプログレスバー等が出来てしまいました・・・ どうも、GroupBoxを消した時に入っていたオブジェクトたちのようなんですが・・・ これらを何とかして消す方法はないでしょうか? 状態としては、Formからオブジェクトは消えているのに、プロパティ上には残っている状態です。 (なので、タブでオブジェクトをつかむ事はできないです。)
.designer.vbには残ってるのか?
>>821 その中の奴を消したら消えました!
どうも、ありがとうございました。
windowsフォームデザインで、FormコントロールのSizeを横幅2560にして開発を行いたいのですが、 開発PCの画面解像度(1280*1024)よりSizeプロパティを大きく出来ないです。 対策方法はあるのでしょうか?
824 :
デフォルトの名無しさん :2007/11/24(土) 14:39:12
作成したアプリケーションを最小化してWindowsのタスクバーに引っ込めると その瞬間に占有していたメモリーが10分の1になり、またもとに戻しても 以前の3分の1ぐらいに減っていました。これはプログラム上ではとくに何も していないため、ガーベジコレクションが最小化のタイミングで起きてくれて いるというふうに考えればよいでしょうか?
駄目
826 :
824 :2007/11/24(土) 15:25:20
>>825 ということはこれは正常な動きでしょうか、それとも
何か不具合があるのでしょうか。
現状のWindowsのメモリ管理の動作による現象。
.netアプリじゃなくたってその動作。 ちなみにVistaからは変わった
829 :
824 :2007/11/24(土) 16:10:03
>>827-828 教えてくださりありがとうございます!
>ちなみにVistaからは変わった
もしかするとVistaからだと最小化しても減らないのでしょうか、
減ってくれると何かうれしい気がするのですが・・・。
>>824 ついでにだけど、タスクマネージャで見てるとか言わないよな?
>>829 見た目以外にいいことなど一つもないから気にするな
右クリックでContext出すんですがそのときに選択していた文字列を取得するにはどうしたらいいんでしょうか?
どのコントロールのを選択してたかによるに決まってるだろ
>>833 webbrowserコントロールです。
テキストを選択してその部分を右クリックからコピーをしたいと思っています。
標準のコンテキストメニューで(ry IHTMLDocument2.selection IHTMLSelectionObject.createRange IHTMLTxtRange.text
>>835 ありがとうございます。
ただそれだけでは分からず悩んでます・・・
ぐぐって
Imports System.Runtime.InteropServices
Imports mshtml
というインポートはできました。
Dim test as IHTMLdocument2
はできますが .selection を足すと怒られます。
よろしければお付き合いお願いします。
型とかプロパティとか勉強しなおして来い
>>836 ここは初心者スレじゃないから。
初心者スレが無かったら自分で立てな。
840 :
デフォルトの名無しさん :2007/11/26(月) 10:48:07
VB2005でExcel2003にログを出しています。 ログが追加されていくと、右側にスクロールバーが表示されますが、 常に最初のログが表示されている状態です。 これを、一番下の行が見えるように自動でスクロールさせたいです。 どうすればよいか教えてください。 CType(CType(WB.Worksheets, Excel.Sheets)(1), Excel.Worksheet).ScrollArea あたりが使えそうだと思ったのですが、Stringだし。
VS2005、XPsp2です。 ListViewのColumnHeader1のTextAlignの値がどうやっても変更できないのは仕様ですか? デザイナ上からも変更不可、デザイナコードに直で書き込んでも反映せず。 FormのLoadイベント上でも一切変更を受け付けません。 ColumnHeader2以降に関しては変更を受け付けるみたいなんですが。 //////////参考コード////////// Form1上にListView1を実装>ColumnHeader1を追加 この状態で下記のコードを実行する Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Do Me.ListView1.Columns(0).TextAlign = HorizontalAlignment.Right Debug.WriteLine(Me.ListView1.Columns(0).TextAlign.ToString) Loop Until Me.ListView1.Columns(0).TextAlign = HorizontalAlignment.Right End Sub End Class これで一生ループを抜け出せません。
>>841 Due to a limitation in the underlying control, this property has no effect on
the first column in the ListView control, which is always aligned to the left.
To work around this limitation in Microsoft .NET Framework version 2.0,
you can handle the ListView.DrawColumnHeader event and paint
the column header yourself.
>>842 オーナードローで逃げるしかないですか・・・
ありがとうございました。
PostMessageでSHIFT+TAB送信する方法を教えてください。
Test
847 :
デフォルトの名無しさん :2007/11/28(水) 16:38:32
VB.NETでモノクロ画像表示をしたいのですが、getpixelのところでエラーがでてしまいます 。どうしたら、モノクロ画像を表示することができますか!?
エラーがでてしまいますとしか書かない低能さをなんとかしたらいいんじゃね?
getpixelってことはモノクロ画像を表示したいんじゃなくて カラー画像をモノクロで表示したいってこと? { 1/3, 1/3, 1/3, 0, 0 }, { 1/3, 1/3, 1/3, 0, 0 }, { 1/3, 1/3, 1/3, 0, 0 }, { 0, 0, 0, 1, 0 }, { 0, 0, 0, 0, 1 }, こういうColorMatrixを作ってImageAttributesに設定 それをDrawImageの引数に渡す
ToolStripDropDownButton と ToolStripSplitButton の動作は、 ボタン部分だけのClickイベントとしてButtonClickイベントが用意されて いるかぢないかが大きいと思いますが、 ToolStripSplitButton で、DropDownItem をドロップダウンする側の Clickでも、ButtonClickイベントが付随して起こり、それに割り当てた プロシージャが実行されてしまう現象が起きていて、 マウスクリック時の動作がチャッタリング気味の動きをしているのが 目視した状況でもわかりました。こうした異常が起きていない正常動作 するものもあるのですが、Form上の置いてある深さという面では異常を 起こす方のものはコンロトールとしては深い位置にあります。 プロパティを比較してみたのですが、正常に動作するものととくに異なる 部分はないようでしたが、このような異常動作は設定で出やすくなる状況 ということはあり得るでしょうか?ご指導くださいお願い致します。
851 :
850 :2007/11/28(水) 18:32:15
>>850 >コンロトールとしては深い位置にあります
(この意味ですが、コントロールの子コントロールとしての階層の意味で、
正常動作する方はForm内の部品として、異常を起こす方のものはそれら
コントール内の子コントロール内の部品として置かれていて、深さとして
深い階層にあるということでした。)
>>850 本当に起こるのならバグじゃない?
2005ってGUI関係のバグ多いからあっても不思議じゃないね。
でもどういう状況なら出やすいとか出にくいとかいう曖昧な話は
問題の解決にはあまり役に立たないと思う。
OnButtonClickかButtonClickのハンドラでマウスポインタがボタン部分の上にあるか
チェックしてなければ無視するようにすればとりあえず問題を回避できるんじゃないかな
それだけの情報でフレームワークのバグを疑うより コードのバグを疑うほうがいいと思うが、どうかね
854 :
デフォルトの名無しさん :2007/11/28(水) 21:04:23
>>853 ボクちゃんは学校で「仮定法」って習わなかったのかな。
っていうかむしろそんな不可解なバグが起こるコードがどんなものか見てみたいけどねw
856 :
850 :2007/11/28(水) 22:40:07
>>852 >OnButtonClickかButtonClickのハンドラでマウスポインタがボタン部分の上にあるか
>チェックしてなければ無視するようにすればとりあえず問題を回避できるんじゃないかな
なるほど!そうやって確認するのですか!!わかりました!!
試してみます。ありがとうございました。
857 :
デフォルトの名無しさん :2007/11/29(木) 12:21:23
vb.net2003に付属されてるVisual Studio Installerで A、B、Cという3つのセットアップファイルを作成しました。 A、B、Cとも共通のDというファイルを参照してるのですが、 BをアンインストールするとDのファイルも一緒に削除されてしまい 残ったA、Cのプログラムが実行できません。 アンインストール時にDのファイルを残すような設定をするには どうすればいいでしょうか?
858 :
デフォルトの名無しさん :2007/11/29(木) 12:34:04
849 :ありがとうございます。bitmapの中身をかえたいのですが!?
質問が漠然としすぎだよ...。
質問の意味が誰にもわからない
861 :
デフォルトの名無しさん :2007/11/29(木) 19:12:52
すみません、コードでマウスの左クリックを行う方法を 教えてください。
863 :
861 :2007/11/29(木) 21:12:50
>>862 mouse_event
おおこれです、探していたのは!!
ありがとうございました。
864 :
デフォルトの名無しさん :2007/11/29(木) 21:53:42
WshShellオブジェクトでURLショートカットファイルを作成する際に
ファイル内容に不足があることがわかりました。
例として、たとえばマイクロソフトのサイト
http://www.microsoft.com/japan/msdn/architecture/ などに対して作成すると、IEで作成した場合に作成される処の
[DOC_pagetools]
XMLUSERDATA__Size=・・・・・
XMLUSERDATA=・・・・・
USERDATAURL=・・・・・
という部分が作成されていませんでした。そしてこの部分がないと、クリック
して実行してもIEで表示できないことがわかりました。どうも実行に際して
不可欠の内容のようでした(これはユーザーの同定等を行っているのでしょうか)。
こうした部分をWsg\hShellオブジェクトのCreateShortcutメソッドで作成する
ことは不可能でしょうか。可能とした場合はどのようにすればよいでしょうか?
なにとぞよろしくお願いします。
.urlはテキストファイルだからfsoなりなんなり好きなのでどうぞ
vbsの話だったりして
MsgBox
>>868 ComboBoxカラムのDataSourceプロパティに、DBから取得したデータ中のコンボと連携する列名を入れてやれば、
あとは自動でComboBoxの表示初期値がデータに対応した値になると思うyo!
oh...タイミングが。
>>869 手動で設定するならそれでokかな。
というかそういう風なやり方をするってことは、非バインド列なのかな。
872 :
デフォルトの名無しさん :2007/11/30(金) 15:23:10
bitmap構造体を変えて、モノクロ画像の表示、拡大をしたいです。新しく、bitmapの情報を与え(例えば、PIXELの幅や高さ、PLANESの数など (BITMAPINFOHEADER))、この情報をpicturbox2にこの情報を入れてその画像を拡大したいです。今考えてるは、picturebox1に16*16の画像 を表示し、picturebox2に256*256に拡大した画像を出力したいです。
とあるコンポーネントを継承したサブクラスを使用したいのですが、 サブクラスの作成後、フォームデザイナでそのコントロールを追加するにはどうしたらいいでしょうか。 VS2005、XPsp2です。
874 :
873 :2007/11/30(金) 18:43:06
875 :
デフォルトの名無しさん :2007/11/30(金) 18:43:27
RichTextBoxで保存した rtfフォーマットのファイルをWordで 読み込み編集して保存すると、それをまたRichTextBoxにLoadFile メソッドで読み込むことができないのですが、これは同じrtf フォーマットでも形式が異なるためかと思いました。 Wordで保存したrtfフォーマットのファイルを読み込む方法は あるでしょうか、あるとしたらどのようにすれば可能になる でしょうか。よろしくお願いします。
876 :
875 :2007/11/30(金) 18:50:40
ちなみに、Wordで保存したrtfファイルは、WordPadでは読み込むことが できました。これはWordPadではWordの扱うrtfフォーマットにも対応 しているということでしょうか。もしそうであればそれと同じ機能を RichTextBoxでも実現することは可能なのではないかと思いました。 ご存知の方がいらっしゃいましたら何卒教えて戴きたく、よろしく お願い致します。
>>875 RichTextBox1.LoadFile(FilePath, RichTextBoxStreamType.RichText)
保存も同様に
RichTextBox1.SaveFile(FilePath, RichTextBoxStreamType.RichText)
FilePathはファイルのパス
WEBページを非同期で取得するクラスを作っています。
下記がソースです。フォーム上にラベルとボタンを配置しています。
http://2sen.dip.jp:81/cgi-bin/upgun/up7/source/up0431.txt ボタンをクリックするとクラスのメソッドが呼び出され、取得完了時にイベントが発生します。
そしてイベントが発生すると、取得されたHTMLがラベルに表示されるはず・・・なのですが
イベントが発生してもラベルのテキストが変化せず困っています。
デバッグしてイベント内のHttp.ResponseDataの値を調べましたが、正常に取得されていました。
どうも原因が非同期処理にあるような感じなのですが、解決法が見つかりません。
どなたか解決法をご存知の方がいらっしゃいましたらお教えください。よろしくお願いします。
別スレッドから書き換えはもう飽きたな 素直に BackgroundWorker 使っとけば?
同時に複数使用するためクラスのほうが効率が良いのですが、 解決しない場合は諦めてBackgroundWorkerを使おうと思っています。
16*16とか馬鹿だろう。 仕様を作り直せ。
883 :
873 :2007/12/01(土) 23:29:43
メインフォームでWndProcしてMouseWheelをフックしてるんですけど、 フォーム内にあるTextBoxなどのスクロール付きコントロールのMouseWheelメッセージが拾えません。 自作コントロールにしてコントロール内でメッセージを送り返すなり処理するなりすれば可能なんですが・・・ なんとかコントロールはそのままで、親コントロールから子コントロールのメッセを拾う方法はありませんか?
SetWindowsHookEx WH_MOUSE
886 :
884 :2007/12/02(日) 17:19:56
グローバルフックですか・・・(; ゚д゚) ありがとうございます。一度試してみます。
887 :
884 :2007/12/02(日) 18:06:56
ローカルフックで可能でした。失礼しました。 ただ、少し詰まったのでもうひとつ質問させて下さい。 hHook = SetWindowsHookEx(WH_MOUSE, AddressOf MyMouseProc, IntPtr.Zero, AppDomain.GetCurrentThreadId) これでフックしてるんですが、Formがアクティブでなくなると例外が投げられてしまいます。 メインフォームに投げられててキャッチの場所にも戸惑っているんですが・・・どうすれば対処できるんでしょうか?
>AddressOf MyMouseProc それはやばい。
まぁ
なんかおまいらPGってかわいそうだよ 将来性なくてさ
50になってもPGか?
PGってさ、職種転換にしても潰しなんて全く利かないからな 哀れになるよ
と、PGになれない者が申しております☆(ゝω・)v
潰しが聞く職種なんて、逆に言えば誰にでも出来る仕事だけどな。
896 :
デフォルトの名無しさん :2007/12/03(月) 21:16:49
それどんな不思議思考だよw
謝れ! 20でPGの俺に謝れ!!
牧紳一なめんな
899 :
デフォルトの名無しさん :2007/12/04(火) 18:53:45
VB6のInvisibleAtRuntimeプロパティに あたる機能はどこー?
>>900 やってみたけど、ならない・・・
タイマーコントロールみたいに、
デザイン時にフォーム上に表示しないように
したいんだけど
>>895 age
それが馬鹿の思考回路
潰しの利く職種のスペシャリストにならなければいずれポイされておしまいだww
>>897 いいよ高卒は もう終わってるから
903 :
デフォルトの名無しさん :2007/12/05(水) 15:08:52
TextBoxのKeyUpイベントで処理をしているのですが、このKeyUpイベントを プログラムから発生させることは出来るのでしょうか?
>>903 sendkeyで、ってこと?
それとも、例えばButtonのクリックイベントで発生させたいってこと?
それなら、
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim UpKey As New System.Windows.Forms.KeyEventArgs(Keys.A) 'Keysはなんでもいい。選択したキーが押されたことになる
TextBox1_KeyUp(sender, UpKey) 'TextBox1のKeyUpイベントを発生させる。
End Sub
Private Sub TextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
Me.Text = e.KeyCode.ToString '受け取ったキーコードをFormのテキストに設定する
End Sub
TextBox1_KeyUp(sender,e)にしたらエラーでたんでちょっと変えてみたけど…。
>>903 Call TextBox1_KeyUp(Nothing,Nothing)
906 :
デフォルトの名無しさん :2007/12/05(水) 16:09:05
>>904 >>905 できました!!
テキストボックスに指定した値を入れて、KeyUpイベントを発生させたかったんです。
おかげで、イベントの発生のさせ方がわかりました。
ありがとうございました。
ASP.NET(VB) の質問はここでOKなんでしょうか? テキストボックスコントロールの上に文字数カウント表示(入力内容変更時のカウント計算と表示はクライアントスクリプトで行う)をつけたWebCustomControlを作成したいと考えています。 最終的に吐き出される内容は <div> <ASP:Label>・・・・・</Label><br /> <ASP:TextBox ・・・/> <div> のようになると思うのですが単純にタグを吐き出すだけではなくTextBoxなどのイベント等も受け取りたいと考えています。 WebControlを継承して作成すると思うのですが、AddHandlerでイベントを受け取るような感じで構わないのでしょうか? また、根本的なことですが各種プロパティを設定してやってRenderイベントをオーバーライドした中の記述でプロパティを組み込んだ上記のタグ内容を吐き出してやる というやり方であっているのでしょうか? 書きたいことがうまく書けないのですが、よろしくお願いします。
908 :
デフォルトの名無しさん :2007/12/05(水) 22:28:48
VB.NETで作ったゲームにセーブ&ロード機能を付けたいのですが どのように作ればいいでしょうか? バイトストリームで読み書きすると変数が多すぎてどうにもならないです;
設定をクラスにしてシリアライズで一発 xmlかBinaryFormatterか
>>909 すいません;
「設定をクラスにして」というのは
具体的にどうすればいいのでしょうか
現状、ゲーム要素のほとんどはModuleやFormのPublic変数に格納しています
状態を表す変数をメンバに持つクラス作っとけば楽なのに。 日頃はそのクラスオブジェクト経由で使用して 保存・復元はシリアライズ・デシリアライズ。 マルチユーザー方面も簡単 とゲーム作ったことないおれが適当に言ってみる
む〜; 最初から計画的にしていないといけないですか; ありがとうございましたm(_ _ )m
913 :
デフォルトの名無しさん :2007/12/06(木) 00:05:31
新規のファイルに文字列を書いたり既存のファイルの最後の行に文字列を追加するやり方は知ってるんですがテキストファイルのn行目に文字列を追加する方法がわかりません どなたか教えてください
もうひとつファイル用意して元のから読み出しながら新しいほうに書き込んでいくのがたぶん一番楽だよ
915 :
デフォルトの名無しさん :2007/12/06(木) 06:53:57
916 :
デフォルトの名無しさん :2007/12/06(木) 09:26:30
>>915 コードみたけど、これ自分で意味解かって書いてるか?
どういう処理をしたいかをはっきりさせて、それにそってコードを書きなよ。
UppernumberやUndernumberが何を示すのかコメントすらないし、人に丸投げするにしては不親切すぎ。
917 :
デフォルトの名無しさん :2007/12/06(木) 10:19:32
>>901 ControlじゃなくてComponentから派生させる
あ〜あ、また将来のない奴らが集まってるわw おまえら終わってることに気付けよww
>>919 なにも自分自身のことを仰らなくてもよいではないですか
派遣先の上司に叱られたんだろ。そっとしとけ
>>913 ワードやメモ帳だって一度メモリに読み込んでから再度それを書き込むだろ?
>>922 そのやり方はオススメしない方がよくね?
Visual C# 2005 または Visual C# .NET で WebBrowser コントロールを使用して Office ドキュメントを開く方法
http://support.microsoft.com/kb/304662/ja の中の、「WebBrowser コントロール使用時の注意」 のところにある、
> 1 つのプロジェクト内で複数の WebBrowser コントロールを使用する場合、各コントロールに
> 同じ種類の Office ドキュメント (すべて Word 文書、すべて Excel ワークシートなど) を読み込むと、
> いくつかの問題が発生することが確認されています。そのため、1 つのプロジェクトに使用する
> コントロールは 1 つとし、1 度に参照するドキュメントも 1 つとすることをお勧めします。
>
> 最も一般的なのは、Microsoft Office コマンド バーが無効になっているように見えるという問題です。
> 同一のフォームに WebBrowser コントロールが 2 つあり、その両方で Word 文書を読み込む場合に、
> 上記の方法のいずれかを使用してツール バーを表示すると、片方のツール バーのセットのみが
> 有効になり、正しく機能します。もう一方は無効になり、使用できません。
という問題についてですが、これを解決する方法というのはあるものでしょうか?
マイクロソフトがこう言っているわけですから、もう無理でしょうか?
最低でも複数のWebBrowserで複数のExcelファイルなりが開ければ助かるのですが・・・
925 :
924 :2007/12/07(金) 12:35:17
実際にこれをやってみるとたしかに、Excelなどではクリックしてもセル自体が 選択できなくなったりとトラブルが多いのは事実でした。数値バーが無効になって しまうなども常態化していました。 こうしたことは、基本的にOfficeのCOMサーバー・アプリケーションが複数のコンテナ で同時に動くという状況に対応していないというようなことなのでしょうか? これは解決はあきらめるべきでしょうか?
926 :
デフォルトの名無しさん :2007/12/07(金) 15:58:32
bitmapを作り、モノクロ画像を表示したいのですがどうしたらいいですか! 表示をした後に、画像を拡大したいです。
また出たなw もっと聞く側が理解できる質問の仕方をしろといってるだろw >bitmapを作り、モノクロ画像を表示したい 適当なbitmapを作って、それをモノクロで表示したいということか? 元の画像は既にモノクロなのか?カラーなのか?
コピペにマジレス禁止
すいません。一つ質問させてください。 TEXTBOXに値を入れて検索すると、SQLサーバーのデータベースから条件に合ったデータを呼び出すWebアプリを作っているのですが TEXTBOXと比較するデータベースの項目のデータ型がMONEYだった場合 『money データ型から nvarchar データ型への暗黙的な変換は許可されません。このクエリを実行するには、CONVERT 関数を使います。』 『nvarchar データ型から money データ型、テーブル 'DB'、 列 'A' への暗黙の型変換はできません。 このクエリを実行するには、CONVERT 関数を使います。』 というようなエラーが出てしまいます。 そこでCONVERT 関数というものを調べてみたのですがイマイチ使い方が解りませんでした。 こういった場合はどのように記述すればいいか教えていただけないでしょうか? 言語はVISUALBASICの方を使っています。 宜しくお願いします。
930 :
929 :2007/12/08(土) 17:44:19
すいません。答え教えてくれとは図々し過ぎました… 「VB CONVERT 関数」あたりでググッて見たかぎりでは見つけられなかったのですが どこか解説してくださっているサイトであればサイト名だけでも教えていただけないでしょうか?
>>929 パラメータークエリーを使ってるなら、Decimalで突っ込めばいい。
>>929 どう見てもSQLエラーな件。
VBでどうこうするんじゃなく、SQL文そのものにCONVERT関数使うんだよ。
もしくはCAST。
>>929 CONVERT( 型 ,値 ,[変換タイプ] )
935 :
デフォルトの名無しさん :2007/12/09(日) 16:22:27
すみません。一つ質問させて下さい。 vb.Net2003でテキストボックスの入力制限で、 スペースを入力不可にしたいのですが、 やり方が分かりません。 教えていただけないでしょうか。 よろしくお願い致します。
Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown If e.KeyCode = Keys.Space Then e.SuppressKeyPress = True End If End Sub
937 :
デフォルトの名無しさん :2007/12/09(日) 16:44:56
環境のあるところでやってみます。 本当に有難うございました。
ペーストした場合はどうすんの
TextChangeのイベントハンドラにスペースを取り除く処理を書いたほうがいいんじゃないかと思った。 例えば、Replaceで取り除くとか…。 ペーストできないようにする方法もあるけど。 .NetFramework2.0以降だったらTextBoxのShortcutsEnabledをFalseにするとか、空のConTextMenuをつけるとか。
940 :
デフォルトの名無しさん :2007/12/09(日) 17:38:39
そこまで気がつきませんでした。 すみません。ありがとうございます。 ペーストも制御できるのですか??
941 :
デフォルトの名無しさん :2007/12/09(日) 19:01:25
Dim numCode As Integer numCode = 10 TextBox1.Text = numCode って10進数じゃなくて・・・ 16進数を表示させたい場合は、どう書けばいいのですか?
Hex(numCode)
ついでに2進数も教えてくれるとうれしいな♪ 1が出るまで2で割っていって、都度商を文字に直して文字連結?
ちょっとはググろうか。なんのためのヘルプか考えろ。 16進数がHexなら2進数も想像付くだろ
16進がHexなら2進はBin()じゃねぇ?と思ったんだが、違うかったみたいで質問したしだい。 Dec2Binでなし(こりゃexcelか) binでもなし・・・まだ判らん
numCode.ToString("x")のほうが正式で柔軟 他のはキーワード「書式指定文字列」でMSDNで調べればいい
キーワードありがとうございました! TextBox1.Text = Convert.ToString(numCode, 2) ですね。2時間かかってようやくできました。
948 :
929 :2007/12/10(月) 09:05:59
>>931 ,932,933,934
色々とお答えをいただき、ありがとうございました。
VB側でDBに合わせられたらと思ったのですが
それは駄目でSQLからデータ引っ張るあたりで
データの方を数字タイプにしないといけないのですね。
教えていただいたキーワードでもう一度どうやるか
考えるようにします。
本当にありがとうございました。
949 :
デフォルトの名無しさん :2007/12/10(月) 17:27:14
今、モノクロ画像をそのままモノクロ画像表示ができなくて困っています。新しくBITMAPを作るにはどうしたら いいですか!?今のままではgetpixelとsetpixelのところでエラーがでてきます。 もうひとつの問題は、画像を拡大したいのですが、ぼけてしまします。どうしたらいいですか!?
お触り厳禁
>>949 現状どのようにして画像を表示させようとしているか、書いてみな〜
拡大すりゃぼけるだろ、普通。 アンチエイリアス処理でもすりゃあ別だと思うが。
アンチエイリアスかけたら逆にぼけるだろw ペイントみたいに任意倍数拡大すると、カクカクな感じで表示されるようにしたいんじゃね?
マジレス禁止
asp.net 2005 でコントロール継承して作った自作プロパティをデザイン時に RequiredFieldValidatorコントロールのControlToValidate みたいに現在貼り付けているフォームのコントロール一覧みたいなものを選べるように実装したいんだけど なにかいい方法ないでしょうか?? よろしくお願いします。
WEBユーザーコントロールライブラリのデザイナかなんかの設定のほうかな?
958 :
デフォルトの名無しさん :2007/12/11(火) 01:37:57
>>957 そうですそうです。
プロパティボックスのところにドロップダウンコンボがでて選ぶか入力するかみたいな
DataGridViewの件で質問です。 やりたいことは、 //////////////DataGridViewコントロール//////////////// 名前 山田太郎 性別 男性 血液型 A 生年月日 1988/12/30 趣味 ウインドサーフィン //////////////////////////////////////////////////// このように、2列*複数行という一覧表を作りたいのです。 このときに血液型のセルのみをコンボボックスにしたいです。(プルダウンメニューで編集したい) 2列目のColumnTypeをコンボボックスに設定したのでは、 当然2列目全体がコンボボックスになってしまい、やりたいことができません。 よろしくおねがいします。
DetailsViewだったか使えよ。
>>960 調べてみたんですが、
Public Class DetailsView
Inherits System.Web.UI.WebControls.CompositeDataBoundControl
System.Web.UI.WebControls のメンバ
とあり、
System.Windows.Forms.Controlを継承していないので、
どうやってフォームに追加すれば良いのか分かりませんでした。
>>959 コンボボックスを表示しない列は、
CellPaintingイベントで、コンボボックスを書く処理をキャンセル(e.Handled = True)(*正確にはキャンセルではないが)し、
セルの背景、枠線、文字列などを自分で描画する。
フォーカスが当たっているかどうかで背景色を変えたりなんだりと、割と面倒くさい。
訂正 列は× 行は○
>>962 やはり面倒くさい方法しかないですよね。
今回は別の方法を取ってみたいと思います。
ありがとうございました。
なんだ、別の方法を取るのか(´・ω・`)
966 :
デフォルトの名無しさん :2007/12/11(火) 21:01:56
>>949 , 現状は、16×16モノクロ画像を表示したいです。で、その後256×256モノクロ画像を表示
したいです。普通に、拡大したらぼけるのでBITMAP構造体を使ってぼけないようにしたいのですが。
どうしたらよいですか!?
構造体使わなくてもボケない方法いくらでもあると思うが・・・
このコピペはいつになったら終わるんだろう(ヽ´ω`)
969 :
デフォルトの名無しさん :2007/12/11(火) 21:35:32
>>967 本当ですか!?構造体を使うやりかたはわかりますか!?
972 :
デフォルトの名無しさん :2007/12/11(火) 23:31:44
>>971 まとめていただいて、ありがとうございます
元々16x16を256x256に拡大する話なんだろ。 情報量が足りてないんだから、そりゃ、ぼけるさ。 それとも整数倍だからドットを16倍にするだけで 補完処理は要らないという話なのかい?
974 :
デフォルトの名無しさん :2007/12/12(水) 00:08:04
はい。説明不足ですいません。ほんとに、作りたいのはモノクロビットマップです。 ここに、モノクロ画像を表示し拡大したいです。本当に説明が下手ですいません。 ネットでいろいろ調べてるんですが、VB.NET2003に使えそうなものがなかなか見つかりません。
どんだけ低能なんだよw >ここに、モノクロ画像を表示し拡大したいです。 ここってどこだよ。 モノクロがそのままモノクロにならないって、色が勝手に着くのかよ。 bitmap構造体ってなんだよ。 書くこといろいろあるだろ。笑っちゃうよねまったく
もういいからソースうpしろよカス
日本人じゃないんだから許してやれよ スルーだスルー。
Long型のEnumに含まれている定数のうち 最大の数値を知るのに効率のいい方法ってありますか? 現在、GetValuesで配列にして、並び替えて、 最大の値をひっぱってるのですが、 もうちょっとスマートにできないでしょうか?
それしかないんじゃないの その辺は意図的に不便になってる感じがするな 気に入らなかったらもっとモダンな方法使えと
やっぱり外国人だよな。 韓国人っぽいなとは思ってたんだ。
>>978 任意のEnumの、ってこと?
でなきゃナンセンスな質問だよな。
しかし、そんなの何に使うんだろ。
配列のインデックスに使ったりするんじゃね Dictionary使うよりちょっと速いかも
いや、別にそういう使い方は別にあってもいいと思うんだけどさw 言いたかったのは、静的に、つまりコンパイル時に既に確定している値を 動的に求めたい場合ってあるんかねって意味だけど。
実は、静的には求まらない、とか。 特にDLLの先にあるEnumとかだったりすると、 最大値は変わりうるからねぇ。
決め打ちがお行儀悪いからっていうだけなんじゃないの 最大値を表すMaxValueフィールドみたいなのを列挙体に足すのはMSのガイドライン違反だし
ListDictionary<TKey,TValue>がないのはなぜなんだぜ?
KeyValuePair を推して見る
KeyedCollection<TKey, TItem>やSortedList<TKey, TValue>がある
VB2005でファイルを転送するソフトを作っているのですが、
SSLを使用してセキュリティを高めようと思います。
System.Net.Security.SslStreemについて質問があります。
TCPでサーバに接続し、その接続で得られたNetworkStreemをSslStreemの初期化に使用し、以後の通信にはそのSslStreemを使用する、と書いてあったのですが、
http://msdn2.microsoft.com/ja-jp/library/system.net.security.sslstream (VS.80).aspx
に書いてあるC#のサンプルコードでSSLを使用した通信が行われているのでしょうか。
SSLを使用するためのサンプルコードでこのような質問をすることはかなりおかしなことだと思いますが、
SSLの仕組みについて調べたところサーバの証明書、などで認証すると書いてあり、それはX509Certificate....に当たると思うのですが…
そのサンプルコードで本当にSSLが適用された通信ができるのか疑問が残っています。
かなりまぬけな質問ではありますが、よろしくお願いします。
そのサンプルをサーバとして動かすには、それなりにまっとうな サーバ証明書が必要で、第一引数で渡してあげるっていうのは判るよね。 後はクライアント側の話で、接続したさいに、アドレスが合致しているかとか 既知のルート証明書からたどれるか、みたいな検証を、AuthenticateAsClientで 実行するわけで、そこで通るなら、SSLとして成立するわけだけど。
991 :
978 :2007/12/13(木) 09:19:49
>>981-984 そう、任意のEnumで
配列のインデックスに使ってます
あいつぐ仕様変更で、なんどもEnumの
上限数が、あちこちかわるんです・・・
そのたびにソース変更するのだるくてw
>>985 MaxValue定義するのいいかもw
全部のEnumに追加しなきゃならんけど・・・
でもガイドライン違反かなのか・・・
たくさんのレスありがとうございました。
あきらめてディクショナリにした方が楽かもよ? まあ既存のアプリぽいからむりかも知れんが。
質問させていただきたいのですが、 同じイベントをメソッド名を変えて複数記述した際に、 実行される順序はどうやって決定されるのでしょうか。 Private Sub Button_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button.Click Private Sub Button_Click_2(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button.Click と記述した際にButton_Click_1を先に実行して、次にButton_Click_2を実行する といった感じで実行される順序を指定することはできるのでしょうか。
994 :
デフォルトの名無しさん :2007/12/13(木) 10:14:02
Button_Click_1で処理A、Button_Click_2で処理Bをするとした場合、 Button_Click_1の方のみで処理A,処理Bと順に実行させたらダメなの? なんでわざわざButton.Clickに関連付けしたメソッドを複数作る必要があるの?
995 :
デフォルトの名無しさん :2007/12/13(木) 10:15:41
>>944 他人が作成したコードを修正しているのですが
ボタンが複数あり、処理Aが各ボタンごとに異なる処理
処理Bは各ボタン共通の処理をしており、
処理Bをすべていつのメソッドにまとめて記述してあります。
その為、Button.Clickイベントが複数のメソッドに関連付けされている状態です。
説明が足りず申し訳ありません。
997 :
デフォルトの名無しさん :2007/12/13(木) 11:13:41
h
t
1000ならジュースでも飲むか
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。