VB.NET質問スレ (Part22 ..
[2ch|▼Menu]
39:デフォルトの名無しさん
07/07/12 18:32:32
>>33
もう半年ほど毎日仕事で使ってるが、
落ちるなんてことあったのはたぶん1度あったかどうかぐらいだぞ。

ただ、参考になるかどうか分からないけど
Winアプリでコードに問題のある自作コントロールを貼り付けたフォームを
デザイナで開くと落ちる場合があることは経験した。

環境のせいでないとしたら、こういう自分のコードに問題がある可能性も
一応疑った方がいいと思うよ。

もちろんバグがあるからって落ちる開発環境ってどうなの?
なんだけどさ。

40:デフォルトの名無しさん
07/07/12 20:01:54
ContextMenuをShowメソッドで表示した後の、メニューのサイズを取得する方法ってないでしょうか?

41:デフォルトの名無しさん
07/07/12 21:41:57
OpenedのあとBounds

42:デフォルトの名無しさん
07/07/13 00:39:58
>>39
>環境のせいでないとしたら、こういう自分のコードに問題がある可能性も
>一応疑った方がいいと思うよ。

これはIDEとして失格では・・・
俺もSP1にする前はデバッグするたびにかなりの頻度で落ちてたよ。
セットアップ失敗してるのかと思ってインストールしなおしても変わらなかった。
SP1後は一回も落ちなくなったけど。

43:デフォルトの名無しさん
07/07/13 01:20:06
失格もなにもある物使うしかないだろ。
VS擁護する気はないがどんなソフトもバグぐらいある。

そんなことより、たまたまバグに遭遇しただけで「ソフトの作りが悪い」とか
全体を批判する性格のが悪い。

人間にも同じような事言ってるの?

44:デフォルトの名無しさん
07/07/13 08:46:34
>>43
まぁ確かにそうだけどこれだけ頻繁に落ちればデバッグ不足だ絽

45:デフォルトの名無しさん
07/07/13 09:49:42
>>43
>人間にも同じような事言ってるの?
例えば「しょっちゅうサボる派遣は、技術力があっても使い物にならない」、くらいは
言うんじゃね?普通。

46:デフォルトの名無しさん
07/07/13 12:54:36
折れの環境では「CheckedListBox」に対して、
コードを書いていると落ちたりする。

コピったり、ツールバーのボタンからコメントアウトしたり、
インテリセンスをだしたり。

47:デフォルトの名無しさん
07/07/13 13:56:47

社会保険庁の解体については、基本がそもそも間違ってる。
そもそも、年金をまかなうのに、保険料として徴収しようとするから、特別に省庁をおくかという
話に摩り替わる。 つまり税金として徴収してしまえば、

    1. 不払いなどという問題もそもそもあり得ない。
    2. 「特別会計というインチキ財布の肥やし」 にされる心配が全然ない。
       つまり、2年で2億などという法外な天下り役人の泥棒が封じられる。これ大きい!
    3. 徴収機関 が、税務署になるから、徴収コストは基本的にゼロ。
    4. しかも、税務署なら、銀行と比較しても同レベルに信頼性が高い。

       (社会保険庁がなぜ当たり前の経理も窓口も成り立たないのか全く不明、
        郵便局で肩替わりしても全く問題ない程度の仕事のはず)

    5. 支給のための仕事だけならば、住民票のある地方自治体を通じて行えば
       これもコストはほとんどゼロ。いったん登録すれば自動的に振り込まれる。
    6. こうすれば、余分な厚生施設を勝手に作られたり、無用なものに勝手に
       流用されて目減りすることもありえないし、天下り先などにもなりえない

これだけのメリットは計り知れないほどのものだ、なのになぜ税方式にしないか?

それは、
     基本的に 「社会保険庁という役所を残す、形を変えてでも」 
ということにあり、
     その意味は、「結託している公務員利益を形だけ変えてでも優先したい」

というもの、、つまり自民党政権側の意図は要するに、、

     裏では、天下り先を確保できるように官僚役人と結託しており、
     国家利益を限りなく泥棒して国民の権利と利益をむさぼり取ろうぜ

というのが実態。

48:デフォルトの名無しさん
07/07/13 16:09:40
>>45
それ例え方まちがってね?
たまたま今回自分だけに起こった不都合な部分だけを取り上げて
そいつを全否定するってことを言いたいんだろ。


49:デフォルトの名無しさん
07/07/13 17:22:17
>>48
水掛け論だよね。

「操作中に強制終了する奴は使い方が悪い使用者が問題。」
「操作中に強制終了するのはソフトをつくった人がわるい。」

両方とも立派な暴言だけど、立場を違えれば理解は出来る。
少なくとも開発者なら一つ目の発言は致命的だと思うけど。

50:デフォルトの名無しさん
07/07/13 17:48:07
いつまで経っても安定しないのはMSのお家芸だからな。
だからっつって切り捨てるわけにもいかず、騙し騙し使うしかなかったり。

51:デフォルトの名無しさん
07/07/13 18:25:00
VSは比較的まとも

52:デフォルトの名無しさん
07/07/13 18:30:02
>>49
どうでもいいけど使用者が悪いとか誰もいってないでしょ。

ただ特殊な状況でしか発生しないと思われる問題を一般的に起こりうる問題と勘違いして
騒ぐのは馬鹿みたいだよ、って話じゃないの?

>>50
だから被害妄想強すぎるんだよw

俺なんかむしろVSのIDEはあれだけ複雑なアプリケーションの割には不具合少ないな、とか思っちゃうけど。
もちろんこれはプログラマ目線の話であって、一般ユーザーがプログラム一般について
このように認識すべき、なんて言うつもりはない。

53:デフォルトの名無しさん
07/07/13 18:44:51
>>52
VSのSP1以前については特殊な状況と言えるのかい?
MSは特殊な状況下での使用法をSP1で改善してくれたことになるのか?

54:デフォルトの名無しさん
07/07/13 18:50:49
だから被害妄想強すぎるんだよ
一度言われたら理解しろよw

特殊な状況 = >>33の状況

いや俺のところでも>>33と同じ状況だぞ、って奴がいたら挙手してね

55:デフォルトの名無しさん
07/07/13 19:00:34
再現性があるかどうかだろ

56:デフォルトの名無しさん
07/07/13 22:54:15
もういいんじゃないか?
なんか >52 みたいに、わけのわからん方向に行ってるし…

>>53
お前は黙ってろw



57:56
07/07/13 22:55:18
アンカーミスごめ。

誤 なんか >52 みたいに、わけのわからん方向に行ってるし…
正 なんか >53 みたいに、わけのわからん方向に行ってるし…


58:デフォルトの名無しさん
07/07/13 23:01:03
この程度のことで短気な人

59:デフォルトの名無しさん
07/07/13 23:10:37
みんなOfficeと同じような感覚で使ってるんだから仕方がないよ

60:デフォルトの名無しさん
07/07/14 00:13:58
>>33
うちの環境じゃ落ちないよなあ。めちゃ安定。
DellだとかHPの業務用に売られているマシンでしか使ってないから
他の環境のことはわかんないや。

Visual Basic 4の頃に、環境がたまに落ちていたのが、マウス付属の
ユーティリティドライバを外したら治った経験はあります。

なににせよ、プログラミングが安心して出来ないのは辛いでしょうね。
その3台に共通の部分を抽出できたら原因の特定も出来るのでは
ないかと思いますよ。



61:デフォルトの名無しさん
07/07/14 10:19:49

みなさん教えて下さい、これまで使えてきてた部分が突然例外メッセージが出て止まる
ようになったのですが、

そこは単に初期化のところで、

#Region " 初期化 "
Public Sub New()

' この呼び出しは、Windows フォーム デザイナで必要です。
Me.InitializeComponent()               <----------------------[*1] 

' InitializeComponent() 呼び出しの後で初期化を追加します。
InitializeSettings()
End Sub
#End Region

ここの [*1] において、突然、次の例外メッセージが出てしまうようになりました。

「指定されたアセンブリ名またはコードベースは無効です。 (HRESULT からの例外: 0x80131047)」

[*1]は、単にPartial記述されたFormのコントロール配置の部分なのですが、
こういう基本的な部分が自分のクラス内からこのようなメッセージ内容で
呼び出せなくなるようなことはあるものでしょうか、すみませんがよろしければ
ご指導お願いしたく。

ここはこれまで普通につかえてきていた部分で、全く意外なところなのですが、
これまでのWindows2000の環境から、別のPCに移りまして、そこですぐにWindowsXp
のオンライン更新が掛かったようでしたが、その2日後ぐらいで初めて出るように
なりました。自分自身のクラス内の Me.InitializeComponent() が呼び出せない
といったようなことはあるものなのでしょうか?よろしくです。

62:61
07/07/14 10:23:51
この例外ですが、PCを再起動した後で直ることもあれば、直らないこともありました。
電源を完全に落としてからやると直ることが多いようでした。

こうしたことはあり得るものでしょうか・・・???


63:デフォルトの名無しさん
07/07/14 13:02:32
>>61
Form1.Designer.vbのInitializeComponent()の属性をコメントにしてみると
InitializeComponentのどこで落ちてるかはっきりする。
この属性があるとこの中のどこで落ちても
InitializeComponent()の呼び出しに失敗したように見える。

'<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()


64:デフォルトの名無しさん
07/07/14 15:34:24
>>63

ありがとうございます!!助かります!!
すぐに調べてみます!!


65:デフォルトの名無しさん
07/07/14 23:38:09
VB.NETでEXCELとかいじくれるようにOpenOfficeとかいじれないのかな?

66:65
07/07/15 00:56:47
自己解決しました。

67:デフォルトの名無しさん
07/07/15 01:03:58
>>66
してねええええええええええええええええええええええええええ!!!!!!
勝手に解決すな!

68:66
07/07/15 01:39:21
イベントを監視するイベントってない?

具体的にはBindingNavigaterでDataTableに行を追加した直後に発生する
イベントを知りたいんだけど。
currentitemchangedもcurrentchangedもaddingも行を追加する直前みたい。

69:デフォルトの名無しさん
07/07/15 01:49:06
>>68
そこで継承ですよ。
継承してイベント発生直前に自前のイベントを投げると。

70:デフォルトの名無しさん
07/07/15 02:05:41
むしろデータテーブルのイベントハンドラをフックすればそれでいいんじゃね?
順序にもよるが データテーブルで発生したイベントの後でナビゲータ側でイベント発生してるはずだし

71:69
07/07/15 02:08:24
>>70
お前とはまったく気が合わない><;
フックする前にもうちょっと自前でなんとかできないか考えるのが俺流!

72:70
07/07/15 02:12:50
フックつうか言い方が悪かったか
イベントハンドラに関数追加するだけだと思うが・・・・
継承とかのが大げさだと思うけど

73:68
07/07/15 02:21:28
ホントは66じゃない私のために喧嘩はやめて! ><;

74:デフォルトの名無しさん
07/07/15 02:24:59
意味のないコテうぜぇwwwwwwww

75:69
07/07/15 02:28:31
>>72
あ、そうなんだ。
フックなんていうから、Windows メッセージを拾うのかと思ってた。

この会話を>>68が理解できればいいのだが・・・。

76:デフォルトの名無しさん
07/07/15 02:42:45
>>75
どうなんだろうね

つうかDataGridViewとかで表示してるならDataGridViewのRowsAddedイベントがあったような気がするんだけどなぁ・・・・

77:68
07/07/15 03:24:15
具体的にやりたいのはForm上にDataTableにバインドされたコンボボックスがあり、
BindingNavigatorの新規追加ボタンを押すとSelectedIndexが-1に初期化されます。
これを直前のインデックスを保持させるか、変数に取っておいたものを再設定したいです。

DataGridViewのRowsAddedも試してみましたがタイミングは追加された行の制御を渡す前に
発生しているようで、しっかり初期化されちゃった。 ><

例えば>72さんの方法だと、TableNewRowイベントハンドラに自作関数を追加するという
ことですか?

78:デフォルトの名無しさん
07/07/15 03:28:15
>>77
それだったら新規追加ボタンのクリックイベントでSelectedIndexいじればいいんじゃないのかと・・・・?

>>72
イベント名は忘れたけど まぁそういうことかな
まぁ簡単にできるんであればそんなことする必要もないんだけど

79:68
07/07/15 03:40:10
>>78
新規追加ボタンに書いても、それがダメなんです。 ><
consoleにも書き出して確認したんだけど、新規追加ボタンのクリックイベント時点では
Me.ComboBox.SelectedIndexがまだ前の値なんで、イベント終了すると初期化されちゃう。
なんで?新規追加したときはcurrentがインスタンスじゃないから?

それで、制御もらってから発生するイベントがないかなとおもったんです。



80:デフォルトの名無しさん
07/07/15 03:48:30
くそ

81:68
07/07/15 17:08:31
だめだー、ComboBoxのMouseClickイベントでも受付ないよー 

Form_LoadだとSelectedIndex設定できるのになんでだじょ?
だれかヘルプミー (´;ω;)

82:68
07/07/15 17:18:54
ごめんなさい、MouseClickイベントだと受け付けました。

83:デフォルトの名無しさん
07/07/15 17:28:18
Function
 共通処理(変数宣言)
 Try
  メソッド特有処理(メソッドによって異なる処理)
 Catch ex As Exception
  共通処理2(ロールバック)
 Finally
  共通処理3(戻り値の設定やログ書き出し)
 End Try
End Function

このようなメソッドがいくつもある状態なのですが、
共通処理の部分をまとめて部品化させたいと思っています。

あたらしく、どんな処理をさせればいいかの文字列を受け取って、
TryCatchを組み、文字列によって、Try内の処理をSwitchで分けるようにしてみたのですが・・・
もっとスマートに組む方法はないでしょうか?

84:デフォルトの名無しさん
07/07/15 17:39:25
>>83
ポリモフィズム

85:デフォルトの名無しさん
07/07/15 17:58:55
>>84
オーバーロードでしょうか?
メソッドが計20種類あり、それぞれ引数がString型2〜4つになっており
その中には同じ引数のものも存在するので、自動的な分岐ができないんです。

86:デフォルトの名無しさん
07/07/15 18:23:35
>>83
決まり文句 「例外処理を分岐に使うな」
でもその前にExecute("計算")はアホ設計の典型

87:デフォルトの名無しさん
07/07/15 18:36:23
>でもその前にExecute("計算")はアホ設計の典型
唐突ないいがかり、あるいは思い込みによる罵倒。

88:デフォルトの名無しさん
07/07/15 18:41:13
Try前に変数宣言(どのメソッドでも行う)
Try内でメイン処理
Catchではメイン処理でエラーが発生した際のデータ復元(どのメソッドでも行う)
Finallyで処理内容を書き出し(どのメソッドでも行う)

このような処理をしているのですが、これも例外処理で分岐させていることになるのですか?
だとしたらどのように記述するのがベターなんでしょうか?

あとExecute("計算")がダサイのは自分でも把握しています(;´Д`)
より良い方法があればご教授お願い致します。

同じようなTryCatchを毎回それぞれのメソッドに記述しており
「Finally区で処理をひとつ増やしたい」などの時に、メソッド全てを書き直す必要があり大変なので
メソッドごとに違うメイン処理以外を部品化させたいというのが要望です。

制約として、引数が同じでオーバーロードによる自動分岐ができませんorz

89:86
07/07/15 18:51:44
すまん例外の使い方の意図を勘違いしてた
>>84の言ってるようにポリモルフィズムを使えば?
すべての「特有処理」を表すインターフェイスを定義して、
それぞれの特有処理クラスはそれを実装する

90:83
07/07/15 19:35:22
>>84 >>89
ありがとうございます。少し前進しました。
もう少し質問をさせてください(長文すみません)

↓インターフェース
Public Interface hoge
Function 特有処理()
End Interface

↓特有処理を行うクラス(特有処理の数だけ作成)
Implements hoge
Public Sub 特有処理() Implements hoge.特有処理
 特有処理を行う
End Sub

↓メインクラス内の処理
Function(ByVal huge As hoge)
 共通処理
 Try
  huge.特有処理()
 Catch ex As Exception
  共通処理
 Finally
  共通処理
 End Try
End Function

特有処理の種類によって引数が同じだったり違ったりする為、インターフェースを実装できないものがあります
Nothingあたりで無理矢理に引数の数を同じにしてでも実装するべきでしょうか・・・・?
それと、それぞれの特有処理クラスが処理を行っている最中にエラーが発生した場合、
そのエラーをメインクラスがCatchできるようにするにはどうすればよいのでしょうか?

91:デフォルトの名無しさん
07/07/15 19:50:05
>>88
なんとなく多態ポリモーフィズムよりデリゲートを引数に渡して動作を
切り替えるやり方の方が向いてる雰囲気だね.


92:デフォルトの名無しさん
07/07/15 19:53:10
>>90
割り込んで悪いけどインターフェイスを使うって話はヨタだと俺は思うよ。
この場合は、

Function Hoge()
 Initialize()
 Try
  DoSomething()
 Catch ex As Exception
  Rollback()
 Finally
   Cleanup()
 End Try
End Function

のHoge()、DoSomething()(これはMustOverrideにする)、Rollback()、Cleanup()をもつ
MustInheritなクラスを作った方がいい。

93:デフォルトの名無しさん
07/07/15 19:57:01
> それと、それぞれの特有処理クラスが処理を行っている最中にエラーが発生した場合、
> そのエラーをメインクラスがCatchできるようにするにはどうすればよいのでしょうか?
特有処理クラスの中でCatchしなければおk

>>92
それなら特有処理インターフェイスのメンバにRollback()とCleanup()を定義したほうがいいと思うよ
共通処理をばらばらにやってたら結局同じ

94:デフォルトの名無しさん
07/07/15 20:25:44
Sub aaa()

Dim a(10) As Integer
Dim i As Integer

a(0) = 32
a(1) = 14
a(2) = 56
a(3) = 15
a(4) = 7
a(5) = 18
a(6) = 102
a(7) = 88
a(8) = 11
a(9) = 57
a(10) = 58
'-------------------
'この間で
'-------------------
For i = 0 To 10
Debug.Print a(i)
Next

End Sub

超初心者質問ですみません。
上のようにa(10)にランダムの数字が格納されていて
これを昇順(若い順)に格納しなおしてから
表示するようなプログラムを作りたいの
ですがどのようなやり方があるでしょうか。。


95:デフォルトの名無しさん
07/07/15 20:35:18
List(of Integer)
自分でソートの順序も最悪決定できるし

96:デフォルトの名無しさん
07/07/15 20:40:30
>>94
おまえすごいなw

スレリンク(tech板:590番)
スレリンク(tech板:487番)

素晴らしいwwwwww
別に叩く気はないが
プログラム覚える前にネットの人との付き合い方の常識勉強しろよ


97:デフォルトの名無しさん
07/07/15 20:48:36
>>93
おいおい継承すら理解してない人間がポリモーフィスムがどうこう言ってたのかよ

98:デフォルトの名無しさん
07/07/15 20:50:41
つうか、例外を発生した時の基本的な動作判ってないようなやつがPG組むなよ
思いっきりスタックトレースとかメモリ情報集めてパフォーマンス落ちるじゃないか

パフォーマンスが問題ないとしても 使われざる所に使ってるのは最悪だな
見分けをつけなきゃいけないじゃないか

エラーが起きるか起きないかで判定するならBoolの関数でも作れよカス

99:88
07/07/15 21:13:41
>>91
デリゲートを始めて使ってみたのですが、
引数の数が固定されるのでインターフェースと同じように無駄引数を準備する必要が、orz
何か使い方が間違っているのでしょうか?

Delegate Sub MyDlg(ByVal x1 As String, ByVal x2 As String)

Dim hoge As New 特有処理(3).特有処理
Dim Dlg As MyDlg

Dlg = AddressOf hoge
Dlg.Invoke("test","test")


>>92
確認も含めて質問させてください。

共通処理の部分(部品化したい部分)をスーパー抽象クラス(?)にして、
特有処理の部分をオーバーライドで変化させる形ですよね?

間違っていたら恥ずかしいのですが、オーバーライドの存在を忘れていました。
確かにこうすれば、引数が同じものと違うものが混ざっていても、確実に処理を分けられますね。
ありがとうございました。

>>93
メソッドの返り値をエクセプション型にして返そうとしてたのですが、
Catchを組まないだけでメインの方に飛ぶんですね。
勉強になりました。ありがとうございます。

100:デフォルトの名無しさん
07/07/15 21:36:35
最初のコードでよかった件

101:デフォルトの名無しさん
07/07/15 21:37:59
>>99
ああDoSomething()がとる引数は可変なんだね。
その場合は、
Public Sub Hoge(ByVal myDelegate As [Delegate], ByVal ParamArray params As Object())
  Try
    myDelegate.DynamicInvoke(params)
  Catch ex As Exception
    ............

みたいにすればいいんじゃない?(ご免、実際こういう処理はやったことがないので
あんまり自信がない)

後半の継承の話についてはおっしゃるとおり。
処理によって必要な引数が変わるならやっぱり継承をつかった多態は向いてないかもね。

102:88
07/07/15 22:22:06
>>101
そのような方法もあるんですね。
ソースを参考にさせていただき、DynamicInvokeの方も勉強したいと思います。
一応現段階では↓のような形になって、部品化も成功したと思います。
(もし何かおかしなコードがあれば、ご指摘をお願いします)

↓共通処理クラス
Public MustInherit Class hoge
 Try
  Me.Load()
 Catch ex As Exception
 Finally
 End Try

Public MustOverride Function Load()

Public Function 特有処理() End Function ※引数の種類だけ特有処理を記述
Public Function 特有処理(ByVal str As String) End Function
Public Function 特有処理(ByVal str As String, ByVal i As integer) End Function

↓特有処理クラス
Public Class 特有処理(1)
 Inherits hoge
 Public Overrides Function Load()
  特有処理( "TEST" )
 End Function

 Public Shadows Function 特有処理(ByVal Tag As String)
 特有の処理を行う
 End Function
End Class

103:デフォルトの名無しさん
07/07/15 23:40:07
>>102
ごめんそのコードじゃ何をしたいのか誰にも理解できないと思うわ。

普通に考えれば、"特有処理"なんてメソッドをベースクラスに定義する
必要な何もないんだけど。

その"特有処理()"に書く処理を、各子クラスのオーバーライドしたLoad()
の中に直接書けば済む話だと思うけど。

104:デフォルトの名無しさん
07/07/16 10:37:35
>>103
うん確かに>>102ならインターフェイスかデリゲートでまったく問題ない

105:デフォルトの名無しさん
07/07/16 10:42:23
だからインターフェイスという選択肢はこの場合は普通ありえないって。
>>92のコードでいう

Initialize()
Rollback()
Cleanup()

これらのメソッドは共有したいのだから。

106:デフォルトの名無しさん
07/07/16 10:46:40
別ににそれは特有処理クラスの中に定義する必要ないでしょ
外の枠組みを共通化したいんだから外でやればいいこと
>>92のDoSomethingの中で任意のタイミングでInitializeとか
呼びたいっていうなら別だけど

107:デフォルトの名無しさん
07/07/16 10:53:56
何がいいたいのかよく分からないが、
まあ、OOPのこんな基本もわかってないなら無理しなさんな。

これはプログラマによって意見が分かれるような問題じゃないと思うよ。
(まともな)プログラマなら100人中100人がこういう場合にインターフェイスを
使おうなんてナンセンスだ、と言うだろう。

ようするにただ君がインターフェイスの意義や継承がよくわかってないだけ。

108:デフォルトの名無しさん
07/07/16 12:46:00
>>103に同意

109:88
07/07/16 16:14:21
なんか荒してすみません。結局こんなコードになりました↓

Public Interface hoge
Sub Syori()
End Interface

Public MustInherit Class huge
 Implements hoge
 フィールド宣言   ←特有処理で使われる引数の種類分だけフィールドを作成
 Sub Syori() Implements hoge.Syori
 Try
  Me.MainSyori()    ←ここのTry句以外に、共通に使用するコードを記述
 Catch ex As Exception
 End Try
 Public MustOverride Function MainSyori()
End Class

Public Class 特有処理(1) ←特有処理の種類だけクラスを生成
 Inherits huge
 Public Sub Set引数(ByVal Test As String) ←その特有処理に必要な引数のみを受け取りSETする
  フィールドに値をセット
 End Function
 Public Overrides Function MainSyori()
  特有処理(1)を行う
 End Function
End Class

110:88
07/07/16 16:34:51
長すぎを食らったので連投で失礼します。毎回長文ですみません。

フィールド宣言を派生クラスの方にしようか、抽象クラスにしようか迷ったんですが、
結局、派生クラスの数が多く記述するのが大変だったので、
使わないフィールドができることになりますが、抽象クラスに記述しました…、やっぱり派生クラスのほうが良いでしょうか?

それともうひとつ気になるのが、抽象クラスのSyoriメソッド内の共通に使いたいコード内で、
「実際に派生クラスを使うメインクラス内のフィールド」を使いたいのですが、
派生クラスとメインクラスを継承関係にすることはできないので、
毎回Syoriメソッドにポインタ型で渡しています。
すごく違和感を感じるのですが、何かより良い方法はないでしょうか?

それと最後にもうひとつだけ・・・
抽象クラス内では例外処理を利用した共通のコードが記述されているので、
例外処理を省くことができないのですが、この場合だとメインクラスや実際のプログラムなどで
エラーを受け取れないので、Catch内にThrow New Exception(ex.Message, ex)を記述してみたのですが、

これを書くと、エラーが起こったときにちゃんとメインの方にもエラーが飛んでくる代わりに、
Finally句でプログラムがダウンしてしまいます。何かよい方法があればアドバイスをお願いします。

111:デフォルトの名無しさん
07/07/16 16:36:03
>>109
な・・・なんかなぁ・・・・・
まぁ動いてるならいいんじゃなかろうか・・・・

112:デフォルトの名無しさん
07/07/16 18:17:51
>>109-110
やっぱり無理に継承使うべき場面じゃないよ。
例外処理のパターンが共通してるからこれを共用したい、と思うのは無理もないけど
そのために無理に継承つかって、その結果処理につかう引数をフィールド渡しにするんじゃ
本末転倒でしょ。

愚直に同じ構造をコピペすべし。
どうしてもパターンを共用するのなら、>>101のようにデリゲート使うほうが
まだしもマシ。

ついでに、人にコード見てもらおうっていうんだから
もうちょっと見やすいコード書こうよ。

日本語のメソッド名とか意味のつかめない捨て名のメソッド名じゃ
タチの悪い釣り扱いされても文句言えないよ。

113:デフォルトの名無しさん
07/07/16 19:36:47
俺の考え方がおかしいのかな?

「最もマシなコードを選択しろ」って言われたら

・インターフェイスを使ったやつ
 欠点:引数の違いを補うためにParamArrayか、最大値をとって無理に引数をあわせる必要がある

・デリゲートを使ったやつ
 欠点:インターフェイスと変わらなくね?結局引数の違いがネックでParamArrayに頼る感じ

・継承を使ったやつ

114:デフォルトの名無しさん
07/07/16 19:43:34
イベントなら引数にSenderというオブジェクトとeというイベント継承クラスを入れると
引数の違いなんて事にはならなくね?

設計に問題がある気ガス。

115:デフォルトの名無しさん
07/07/16 20:04:11
>>114
何が言いたいのか分からんが
おまいの言ってることってまんま>>109と一緒でないかい?

今既に引数の違いは関係がなくなって
どうやってeクラスからメインのフィールド受け取ろう?って話じゃないかな

116:デフォルトの名無しさん
07/07/18 00:04:02
ザ・ワールド

117:デフォルトの名無しさん
07/07/18 01:57:18
VB.NET2003で、フォームに設置したSplitterを操作しようとしているのですが、
Locationに値を与えても位置が変わりません。
 Me.Splitter1.Location = New System.Drawing.Point(0, 300)
 MessageBox.Show(Me.Splitter1.Location.Y.ToString) '初期位置のY座標が表示される

一度表示したSplitterのLocationをコード上から変更することはできないのでしょうか?

118:デフォルトの名無しさん
07/07/18 02:13:56
普通Locationは変えずに(Dockされてるし)Sizeをかえるもんじゃないのか?
Widthとかさ


119:デフォルトの名無しさん
07/07/18 02:14:31
どうせDockとかAnchorが設定されてるんでしょ

120:デフォルトの名無しさん
07/07/18 10:49:47
秀作として簡単なゲームを作っています
透過GIFを使って背景は透過出来ましたがPictureboxどおしが重なると四角い枠が見えてしまいます
Pictureboxの重ね合わせはどのようにしたらよいのでしょう?



121:デフォルトの名無しさん
07/07/18 11:24:19
>>117
普通スプリッタはパネル>スプリッタ>パネルって貼るでしょ?
最初のパネルの幅や高さ(要はスプリッタが付く方向)を変えてみ?

122:デフォルトの名無しさん
07/07/18 11:34:54
>>120
ボーダーとかの問題じゃないのか?

123:デフォルトの名無しさん
07/07/18 11:45:43
教えてくださいm(__)m

auからのメールで(アド以降が)@ezuibe.nemaharikumaharetaa@ezってなってて返信押してメールしようとクリックするとマハリクマハリタの文字だけ消えます!何故?Σ(゚Д゚;≡;゚д゚)

124:デフォルトの名無しさん
07/07/18 11:58:02
>>123
教えてくださいm(__)m

>(アド以降が)@ezuibe.nemaharikumaharetaa@ezってなってて
なんで“@”が2つ?
更に不思議なのは、何故このスレで訊く?Σ(゚Д゚;≡;゚д゚)

125:デフォルトの名無しさん
07/07/18 12:06:43
訂正
@ezweb.nemaharikumaharetaa@ez
マジ解る人居るかなぁ?
2chならきっと居るよね
ヽ( ̄∇ ̄)ノ

126:デフォルトの名無しさん
07/07/18 12:07:45
>>120
自分で言うか?<秀作
そんなもん臭作だw

127:デフォルトの名無しさん
07/07/18 12:48:55
>>126
お前もにおうぞ
風呂入ったか?
遺作より

128:デフォルトの名無しさん
07/07/18 12:58:51
>>125
もういいからバイバイ

>>120
習作な。
先は長いぞガンバレ

129:デフォルトの名無しさん
07/07/18 13:11:06
>>128お前解らないだろ?
ギャハハーw
(・∀・)/ヾ〜〜╋┓

130:デフォルトの名無しさん
07/07/18 14:15:10
age

131:デフォルトの名無しさん
07/07/18 15:26:34
>>129


132:デフォルトの名無しさん
07/07/18 15:49:59
>>129お前解らないだろ?
ギャハハーw
(・∀・)/ヾ〜〜╋┓

133:デフォルトの名無しさん
07/07/18 15:51:27
>>131お前も解らないだろ?
ギャハハーw
(・∀・)/ヾ〜〜╋┓

134:デフォルトの名無しさん
07/07/18 16:28:19
教授様このスレも解決お願い致します!

135:デフォルトの名無しさん
07/07/18 17:03:50
どうやら小学生がいるようだな

136:120
07/07/18 18:50:42
あたぁ習作でしたw
>>122
ボーダーってPictureboxのプロパティのBorderStyleですか?
境界はnoneにしてますが

pictureboxじゃなくDrawImageメソッドを使う方がいいのかな?
しかし何で命令をいちいちdimで宣言する必要があるんだろ?
面倒なだけで何のメリットがあるのか、ちっともわからん
HSPしか使ったことのない工房の愚痴です、すいません

137:デフォルトの名無しさん
07/07/18 18:59:42
vb.net2005 なんですが
マウスカーソルの位置座標を小数単位で取得する方法が無いでしょうか
よろしくお願いします

138:デフォルトの名無しさん
07/07/18 19:09:52
>>137
釣りですか?

139:デフォルトの名無しさん
07/07/18 19:16:50
>>137
ない

140:デフォルトの名無しさん
07/07/18 19:39:28
描画に関しては小数点座標が使えるので
マウス座標も取得する方法が無いかと思い質問しました

>>138
マジです
>>139
回答ありがとうです


141:117
07/07/18 19:52:56
>>121
ご指摘の通りPanelのサイズを変化させたらそれに伴ってSplitterの位置を変化させることができました。
解決を導く回答をいただきありがとうございました。

142:デフォルトの名無しさん
07/07/18 20:13:20
>>140
マウスは画面でしか使わないのでピクセル単位のみ。


143:デフォルトの名無しさん
07/07/18 20:31:43
>>123も本当です釣りではありません
絵文字が消えるみたいな現象です
お分りになる方教えてくださいm(__)m

144:デフォルトの名無しさん
07/07/18 20:35:00
>>143
windowsをアップデートすると直るよ

145:デフォルトの名無しさん
07/07/18 20:38:02
>>143
Vistaにすれば問題なし

146:デフォルトの名無しさん
07/07/18 20:54:39
>>144-145様ありがとうございます!m(__)m
受信の端末は携帯なんです
何故、英字コードが消えたりするのでしょう?


147:デフォルトの名無しさん
07/07/18 21:01:15
それこそエンコードじゃねぇの?

148:デフォルトの名無しさん
07/07/18 21:23:57
>>146
死ね。

149:デフォルトの名無しさん
07/07/18 21:53:14
>>146
outlook Expressのバグ
正規のoutlookか他のメーラーを使えば良いよ

150:146
07/07/18 21:58:28
自己解決しました。
ここの人間はクソの役にも立ちませんでした(´・∀・`)

151:デフォルトの名無しさん
07/07/18 23:16:24
すみませんVB2005を使っていてどうしてもつまってしまったので教えて下さい
プログラム初心者です

子フォームでラジオボタンでインターフェースの切り替えの操作をしていて、
親フォームである計算の途中でラジオボタンの操作を自動で行わせるプログラムを作成したいのですが
子フォームの該当箇所メソッドをPublicにした後親フォームで呼び出したところ
「パラメータ'e'に対する引数が設定されていません」的なエラーを言われました。

どうしてやればいいんですか?

152:デフォルトの名無しさん
07/07/18 23:16:59
>>150テラワロスwwwwww
クソの役にもたちませんですたゝ( ゚∀゚)メ(゚∀゚ )ノ
てか、自己解決してないってば(・∀・)ニヤニヤ

153:デフォルトの名無しさん
07/07/18 23:20:47
>>149質問読んでね!(≧∇≦)

154:デフォルトの名無しさん
07/07/18 23:29:06
>>151
エラー内容そのまんまだけど、パラメータ'e'に対する引数を設定すればいいよ。
ソースも書かずにどうすればいいかって意味わからないけど、多分こう。
Call RadioButton1_Click(RadioButton1, New EventArgs())

>>153
>>123
>(アド以降が)@ezuibe.nemaharikumaharetaa@ez
それきっとauからのメールじゃないよ。変だモンヾ(*´∀`*)ノ キャッキャ

155:151
07/07/18 23:37:25
>>154
サンクスです!
やってみます!

156:デフォルトの名無しさん
07/07/18 23:42:25
>>154
>>125に訂正してありま━━(゚Д゚;)━━す!!

教えて(・∀・)ノ

157:デフォルトの名無しさん
07/07/19 00:11:20
此処役にたちま千円(゚ε゚)

158:154
07/07/19 00:11:32
>>156
おぉ、訂正してたの気づかなかったわ。ごめん。
>@ezweb.nemaharikumaharetaa@ez
これきっとauからのメールじゃないよ。@が2個あるとか最後が@ezとかおかしいモン。
これはPCから送られてきた偽装メールだから、返信もおかしくなって当たり前。

159:デフォルトの名無しさん
07/07/19 00:18:22
>>158
クリックして返信画面になると(アド)@ezweb.ne.jp.
表示になるんです!!

マハリクマハリタは消えてしまうから不思議なんです
マジ何故消えてしまうか知りたいんです

160:154
07/07/19 00:26:15
>>159
何故って言われてもそうゆもんだから(゚ε゚)

161:デフォルトの名無しさん
07/07/19 00:38:14
わかるけど お前の態度がきにいらない

だれかAAはっといて
ヽ(´ー`)ノ
ワッショイヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノワッショイ

162:デフォルトの名無しさん
07/07/19 00:39:36
専門バカなら分かるよ
さそれじゃタダのバカと同じじゃん( ´∀`)σ)Д`)

163:デフォルトの名無しさん
07/07/19 00:42:01
つうか、そういうものだと割り切ることも大切だ


164:デフォルトの名無しさん
07/07/19 00:45:13
またバカかw( ̄ー ̄+)

165:デフォルトの名無しさん
07/07/19 00:47:31
粘着うざい

166:デフォルトの名無しさん
07/07/19 00:53:30
じゃ教えてミソ(-"-)y-゚゚゚

167:デフォルトの名無しさん
07/07/19 00:56:43
wっうぇwwっうぇうぇwww 厨臭いAAだwww

168:デフォルトの名無しさん
07/07/19 00:59:22
つーかスレ違いじゃね?
いいの?いいの?

169:デフォルトの名無しさん
07/07/19 01:01:33
じゃ教えてミソ(-"-)y-゚゚゚
じゃ教えてミソ(-"-)y-゚゚゚
じゃ教えてミソ(-"-)y-゚゚゚
じゃ教えてミソ(-"-)y-゚゚゚
じゃ教えてミソ(-"-)y-゚゚゚
じゃ教えてミソ(-"-)y-゚゚゚
じゃ教えてミソ(-"-)y-゚゚゚
じゃ教えてミソ(-"-)y-゚゚゚
じゃ教えてミソ(-"-)y-゚゚゚


170:デフォルトの名無しさん
07/07/19 01:04:10
なんか盛り上がってるな

171:デフォルトの名無しさん
07/07/19 01:10:23
年寄りは寝ただろうから
教授は居ないポィ┐(´─`)┌

172:デフォルトの名無しさん
07/07/19 01:30:38
おめーらわからないんだろ〜〜〜〜〜
(・∀・)/ヾ〜〜╋┓
(・∀・)/ヾ〜〜╋┓
(・∀・)/ヾ〜〜╋┓

173:デフォルトの名無しさん
07/07/19 01:35:30
答えが出ないから宿題にするよ(゚ε゚)

174:デフォルトの名無しさん
07/07/19 06:30:43
おはよう(・∀・)ノage

175:デフォルトの名無しさん
07/07/19 10:13:21
Fromが(アド)@ezweb.nemaharikumaharetaa@ez
Reply-Toが(アド)@ezweb.ne.jp
になっていれば、表示アドは(アド)@ezweb.nemaharikumaharetaa@ez
でも、返信を押せば(アド)@ezweb.ne.jpが出るよ。

176:デフォルトの名無しさん
07/07/19 10:17:27
知的障害者の鼬害質問にも反応したくなるほど暇なら
「VB.NET (Compact Framework 1.1) による
 フォーム派生クラスのデザイン時コントロールの作り方」に
詳しいWebページや本の紹介をして下さいマセヨ。

177:デフォルトの名無しさん
07/07/19 13:29:59
>>175ワーイ!ありがとうございます o(*^▽^*)o
問題は何故テクマクマヤコンの文字が消えるかなんですょ?

>>176知的障害だって言われるなら答えられるよね?知的障害の話だなんて
話をすり替えて逃げないで答えてね!!
解らないくせに(゚ε゚)

178:デフォルトの名無しさん
07/07/19 13:32:31
知的障害のお前の言うことは日本語としておかしいから答える必要もないプー(゚ε゚)

サッサトシネヨテイノウ

179:デフォルトの名無しさん
07/07/19 13:40:53
>>177訂正

テクマクマヤコン×
マハリクマハリタ〇

180:デフォルトの名無しさん
07/07/19 13:44:32
>>178答えられない藻前も知的障害と代わり茄子じゃんギャハハ(・∀・)/ヾ〜〜╋┓ ┣¨┣¨┣¨┣¨┣¨ ┃┃¨╋┓┃┃¨╋┓

181:デフォルトの名無しさん
07/07/19 13:48:13
┃┃¨╋┓┃┃¨╋┓

182:デフォルトの名無しさん
07/07/19 13:50:34
┃┃¨╋┓┃┃¨╋┓


183:デフォルトの名無しさん
07/07/19 14:03:21
Fromが(アド)@ezweb.nemaharikumaharetaa@ez
Reply-Toが(アド)@ezweb.ne.jp

こうなっている場合、返信ボタンを押すと
(アド)@ezweb.nemaharikumaharetaa@ezから
maharikumaharetaが取り払われて(アド)@ezweb.ne.jpがセットされるのではなく、
単純にReply-Toに設定されている(アド)@ezweb.ne.jpがMailToに格納される。
別に文字が消えたわけではない。

該当メールのヘッダをココに貼ってみろ。はっきりするから。

184:デフォルトの名無しさん
07/07/19 14:05:04
表現があやふやだったな。

maharikumaharetaが取り払われて(アド)@ezweb.ne.jpがセットされるのではなく、
単純にReply-Toに設定されている(アド)@ezweb.ne.jpがMailToに格納される。

maharikumaharetaが取り払われて(アド)@ezweb.ne.jpがMailToに格納されるのではなく、
単純にReply-Toに設定されている(アド)@ezweb.ne.jpがMailToに格納される。

185:デフォルトの名無しさん
07/07/19 14:34:35
>>184神降臨 ゚☆,。・:*:・゚★o(´▽`*)/
ありがとうございますm(__)m

単純にReply-Toに設定されている(アド)@ezweb.ne.jpがMailToに格納される。
とありますが

maharikumaharetaはReply-Toに設定されてされていない事になるんですか?

端末は携帯です。どの様な操作をすれば出来ますか?
私自身アドにmaharikumaharetaa@で試みましたがmaharikumaharetaは消えませんでした

186:デフォルトの名無しさん
07/07/19 14:49:05
携帯から直接Reply-toを指定してメールするのは無理。
パソコンからだと、一般的なメーラはReply-toの設定ができるはず。
"(利用しているメーラ名) Reply-to"なんかで検索するといい。
それでReply-toの設定が出来たら、自分の携帯宛にメールをしてみるとよい。
auはReply-toの設定が有効だから、再現できると思うぞ。

187:デフォルトの名無しさん
07/07/19 15:04:29
>>186詳しくありがとうございますm(__)m

私の携帯はDoCoMoなのですがau同様に出来ますでしょうか?

188:デフォルトの名無しさん
07/07/19 15:05:24
気違いの相手をするやつも気違い

189:デフォルトの名無しさん
07/07/19 15:19:09
>>186様感謝致しますm(__)m
>>188デフォルトの名無しさん→気違いのお陰で勉強になったでしょ?
有り難く思いなさい(ノ`Д´)ノ ■━⊂(・∀・)彡ガッ

190:デフォルトの名無しさん
07/07/19 15:47:50
>>188藻前も人から尊敬される様な知識と人格を持ってね!

191:デフォルトの名無しさん
07/07/19 15:55:14
メーラーのReply設定で尊敬する知識か。

世の中、尊敬する人ばかりで大変だなw

192:デフォルトの名無しさん
07/07/19 16:08:10
>>191知識と※人格
        ̄ ̄
ここ重要ね!ヽ(・∀・)ノ

193:デフォルトの名無しさん
07/07/19 16:09:20
よくこんな質問に答える気になったな。

194:デフォルトの名無しさん
07/07/19 16:13:37
>>193お前も初めから知識があったか?今の私同然のはずだょ(^.^)b
教えて頂いた積み重ねが今のお前なだけ(゚ε゚)

195:デフォルトの名無しさん
07/07/19 16:20:10
教えてくださった皆様ありがとうございましたm(__)m

196:デフォルトの名無しさん
07/07/19 16:41:46
>>195
スレチだから今度からこっちで聞くようにね?

スレリンク(tech板)


197:デフォルトの名無しさん
07/07/19 16:50:56
>>196良いスレがあったんだね!そこ行くよ ☆^(o≧▽゚)o
私専属の先生に任命してあげるからシッカリ教えてね!
m9(・∀・)ビシッ!!

198:151
07/07/19 22:03:14
>>154
やってみたところ出来ました!!
本当にありがとうございます!!
俺の中で154さんは神様です

ただ子フォームのラジオボタンが、見た目何も変化していないのが気になります。
いまのフォームではラジオボタン1と2がありまして最初は1になるように設定してあります。
先程のやり方でデバッグすると、
本来ならラジオボタン2にクリックされた試行をしているはずなのですが
(実際その試行は行われているんですが)
子フォームのラジオボタンの表示は変化していません。
対応させるにはどうしたらいいのでしょうか。
よろしくお願いします。

199:デフォルトの名無しさん
07/07/19 22:08:59
>>198
あなたのやってることも>>154の回答もうんこ。
Click or CheckedChanged のイベントハンドラ実行したって
もとのラジオボタンにはなんの影響もありませんことよ。
radioButton2.Checked = trueしたらよかっぺ


200:デフォルトの名無しさん
07/07/19 22:23:14
よかっぺww

お前、結構前からレスしてるよな。
間抜けな回答してた香具師として覚えてるww

201:デフォルトの名無しさん
07/07/19 22:40:30
>>200
うるせー死ねハゲ

202:デフォルトの名無しさん
07/07/20 01:04:18
(´・ω・`)ママーリいきましょ

203:デフォルトの名無しさん
07/07/20 09:56:31
VB2005って体験版みたいの
どっかから無料でダウンロードできる?

204:デフォルトの名無しさん
07/07/20 10:02:38
Microsoftいってこい
開発ツールのところにあるだろ
それぐらい見てからしゃべれカス
だから馬鹿みたいなくだらない質問するんだろうが!!!!!!

205:デフォルトの名無しさん
07/07/20 10:08:22
そんなぁ、、、、
アスペルガーのあなたに
言われたくありませんよ(藁

206:デフォルトの名無しさん
07/07/20 10:28:27
>>205
スレ違いですこちらへどうぞ

最高に頭の悪い発言をしてくださいinム板(XII)
スレリンク(tech板)


207:デフォルトの名無しさん
07/07/20 20:18:42
express editionダウンロードしようとおもったら
microsof なんとかIDとやらを取得しろってでた

208:デフォルトの名無しさん
07/07/20 20:30:29
>>207
入門書の付属CDに入ってることも多いよ

209:デフォルトの名無しさん
07/07/20 20:36:09
プログラムの仕方で悩んでいます。
コントロールに値が入力(選択)されているかのチェックに
例外を使ったんだけど、こういう場合は使わない方が良いのかなー。

例:
If TextBox1.Text.Equals("") Then
  TextBox1.Select()
Throw New Exception("TextBox1が入力されていません。")
End If


210:デフォルトの名無しさん
07/07/20 21:06:43
起動するのに数分間ってなんだよ!

211:デフォルトの名無しさん
07/07/20 22:03:04
ビルド選んだら
「ユーザーはこのアプリの更新をどこで確認するのですか?」
とか余計なこと聞いてきやがった
いいからさっさとコンパイルしろや

212:デフォルトの名無しさん
07/07/20 22:44:27
そうやって自分が馬鹿なのを人や道具のせいにするから君は進歩がないんだよ

213:デフォルトの名無しさん
07/07/21 00:25:07
>>209
それ例外じゃないからメッセージボックスがいいと思うよ。

214:デフォルトの名無しさん
07/07/21 04:52:00
これって6.0みたいに
RAD内で実行、テストするのが
できなくなったの?

なんかデスクトップの「a」ってフォルダ作って
そこの中に発行して、setup.exe実行して
ようやく動作を確認する感じ。

6.0だったらRAD内で動作確認できたよね?

215:デフォルトの名無しさん
07/07/21 06:12:07
>>214
オンメモリでの実行は出来なくなったが、セットアッププログラムまでは作らなくてもいいぞ。
ファイルは作るがIDEから実行できる。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4728日前に更新/252 KB
担当:undef