C# と VB.NET の質問掲示板
ASP.NET、C++/CLI、Java 何でもどうぞ
掲示板トップ
C# と VB.NET 入門
新規作成
利用方法
ツリー表示
トピック表示
ランキング
記事検索
過去ログ
ログ内検索
キーワードを複数指定する場合は 半角スペース で区切ってください。
検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
[返信]をクリックすると返信ページへ移動します。
キーワード
/
検索条件
/
(AND)
(OR)
検索範囲
/
(現在のログ)
(全過去ログ)
(過去ログ1)
(過去ログ2)
(過去ログ3)
(過去ログ4)
(過去ログ5)
(過去ログ6)
(過去ログ7)
(過去ログ8)
(過去ログ9)
(過去ログ10)
(過去ログ11)
(過去ログ12)
(過去ログ13)
(過去ログ14)
(過去ログ15)
(過去ログ16)
(過去ログ17)
(過去ログ18)
(過去ログ19)
(過去ログ20)
(過去ログ21)
(過去ログ22)
(過去ログ23)
(過去ログ24)
(過去ログ25)
(過去ログ26)
(過去ログ27)
(過去ログ28)
(過去ログ29)
(過去ログ30)
(過去ログ31)
(過去ログ32)
(過去ログ33)
(過去ログ34)
(過去ログ35)
(過去ログ36)
(過去ログ37)
(過去ログ38)
(過去ログ39)
(過去ログ40)
(過去ログ41)
(過去ログ42)
(過去ログ43)
(過去ログ44)
(過去ログ45)
(過去ログ46)
(過去ログ47)
(過去ログ48)
(過去ログ49)
(過去ログ50)
(過去ログ51)
(過去ログ52)
(過去ログ53)
(過去ログ54)
(過去ログ55)
(過去ログ56)
(過去ログ57)
(過去ログ58)
(過去ログ59)
(過去ログ60)
(過去ログ61)
(過去ログ62)
(過去ログ63)
(過去ログ64)
(過去ログ65)
(過去ログ66)
(過去ログ67)
(過去ログ68)
(過去ログ69)
(過去ログ70)
(過去ログ71)
(過去ログ72)
(過去ログ73)
(過去ログ74)
(過去ログ75)
(過去ログ76)
(過去ログ77)
(過去ログ78)
(過去ログ79)
(過去ログ80)
(過去ログ81)
(過去ログ82)
(過去ログ83)
(過去ログ84)
(過去ログ85)
(過去ログ86)
(過去ログ87)
(過去ログ88)
(過去ログ89)
(過去ログ90)
(過去ログ91)
(過去ログ92)
(過去ログ93)
(過去ログ94)
(過去ログ95)
(過去ログ96)
(過去ログ97)
(過去ログ98)
(過去ログ99)
(過去ログ100)
(過去ログ101)
(過去ログ102)
(過去ログ103)
(過去ログ104)
(過去ログ105)
(過去ログ106)
(過去ログ107)
(過去ログ108)
(過去ログ109)
(過去ログ110)
(過去ログ111)
(過去ログ112)
(過去ログ113)
(過去ログ114)
(過去ログ115)
(過去ログ116)
(過去ログ117)
(過去ログ118)
(過去ログ119)
(過去ログ120)
(過去ログ121)
(過去ログ122)
(過去ログ123)
(過去ログ124)
(過去ログ125)
(過去ログ126)
(過去ログ127)
(過去ログ128)
(過去ログ129)
(過去ログ130)
(過去ログ131)
(過去ログ132)
(過去ログ133)
(過去ログ134)
(過去ログ135)
(過去ログ136)
(過去ログ137)
(過去ログ138)
(過去ログ139)
(過去ログ140)
(過去ログ141)
(過去ログ142)
(過去ログ143)
(過去ログ144)
(過去ログ145)
(過去ログ146)
(過去ログ147)
(過去ログ148)
(過去ログ149)
(過去ログ150)
(過去ログ151)
(過去ログ152)
(過去ログ153)
(過去ログ154)
(過去ログ155)
(過去ログ156)
(過去ログ157)
(過去ログ158)
(過去ログ159)
(過去ログ160)
(過去ログ161)
(過去ログ162)
(過去ログ163)
(過去ログ164)
(過去ログ165)
(過去ログ166)
(過去ログ167)
(過去ログ168)
(過去ログ169)
(過去ログ170)
(過去ログ171)
(過去ログ172)
(過去ログ173)
(過去ログ174)
(過去ログ175)
(過去ログ176)
(過去ログ177)
(過去ログ178)
(過去ログ179)
強調表示
/
ON
(自動リンクOFF)
結果表示件数
/
20件
30件
40件
50件
100件
記事No検索
/
ON
大文字と小文字を区別する
全過去ログを検索
ヒット / 6件
(1-6 を表示)
<<
0
>>
■2920
Re[1]: Exchange Serverでのメール送信
□投稿者/ はつね -
(2007/04/18(Wed) 18:29:49)
>
■
No2883
(疲れもピークに。。 さん) に返信
> 会社ではExchange Server と Outlookにてメール送受信をしています。
> 会社でもメールの送信結果等を確認したいと思いますが,上記の環境の場合は,
> smtpサーバ名がよくわかりません。
> Outlookのどこかで確認できるのでしょうか?
Outlookのどこかで確認できます。送信メールサーバ名と記載があるはずです。
http://support.nifty.com/support/manual/mail_set/mail/win_ol2003_check.htm
そこで得られた値をsystem.net.mailで指定してあげれば繋がる事は繋がるはずです。
ただし、Exchange Serverのユーザ認証が何になっているかが重要です。
Outlookの[送信サーバー]タブで「メールを送信するまえに受信メールサーバにログオンする」になっている場合、SMTPを使う前にPOP3で接続しなくてはなりませんが、System.Net.MailにはPOP3での受信機能は実装されていませんので、自作するか市販部品を購入してくる必要があります。
記事No.2883 のレス /過去ログ11より /
関連記事表示
削除チェック/
■3510
Re[1]: .Netリモーティングでスレッドセーフにするには?
□投稿者/ 囚人 -
(2007/05/11(Fri) 21:18:11)
スレッドセーフという概念自体が分らないという意味ですか?
マルチスレッドでも安全に動くようにすることです。で、それは場合によるので一概に「こうやればいいよ」とは言いにくいです。
同時にある変数に書き込んだらまずいのか、同時にファイルを開いたらまずいのか…etc…。別にそんな事を考える必要がない(読み取り専用のものしかない等)ならそれだけでスレッドセーフです。
記事No.3509 のレス /過去ログ12より /
関連記事表示
削除チェック/
■35381
Re[12]: 『「GC.Collect」メソッド』について
□投稿者/ 渋木宏明(ひどり) -
(2009/04/28(Tue) 11:31:32)
>
> Managedのメモリは放っておけば、システムが適時GCを呼び出してメモリが解放される。
s/システム/ランタイム/
記事No.35188 のレス /過去ログ61より /
関連記事表示
削除チェック/
■88589
Re[9]: コントロールを自然に動かすには??
□投稿者/ 熊さん -
(2018/09/09(Sun) 13:28:53)
後、もう一つ疑問です。
Private Sub Form6_FormClosed(sender As Object, e As FormClosedEventArgs) Handles MyBase.FormClosed
pPen.Dispose() '不要になった Pen の処分
End Sub
フォームを閉じる時に、pPenを解放する処理が書かれてありますが、
解放処理が必要な変数と不要な変数の違いは何でしょうか?
記事No.88470 のレス /過去ログ152より /
関連記事表示
削除チェック/
■88593
Re[10]: コントロールを自然に動かすには??
□投稿者/ 魔界の仮面弁士 -
(2018/09/09(Sun) 16:46:58)
■
No88589
(熊さん さん) に返信
> Private Sub Form6_FormClosed(sender As Object, e As FormClosedEventArgs) Handles MyBase.FormClosed
> pPen.Dispose() '不要になった Pen の処分
> End Sub
> フォームを閉じる時に、pPenを解放する処理が書かれてありますが、
> 解放処理が必要な変数と不要な変数の違いは何でしょうか?
一口に答えるのは難しいのですが、ざっくり言うと、
「アンマネージリソースを保持しているかどうか」でしょうか。
こういったオブジェクトは多くの場合、IDisposable インターフェイスを通じて
Dispose メソッドを有していますので、それを呼び出すようにします。
たとえば、ファイルやデータベース接続などが分かりやすいかと思います。
ファイルを開いたまま閉じなければ、他のアプリケーションがそれを開けません。
データベース接続を開く一方で閉じずにいれば、接続資源が枯渇します。
あるいは、Control や Form 等のオブジェクトも IDisposable です。
たとえば ShowDialog メソッドの呼び出しにおいては、
Using dlg As New Form2()
dlg.ShowDialog(Me)
End Using
とすべきであり、最後に Dispose することなく
Dim dlg As New Form2()
dlg.ShowDialog(Me)
とだけ書くのは NG です。
ただし Show メソッドの場合は Dispose が自動的に呼ばれますので、明示的な Dispose は不要です。
Control を動的に追加/削除する場合も同様で、
意図的に .Controls.Remove あるいは .Clear するような場合には、
取り除かれたコントロールを、明示的に Dispose しなければなりません。
Remove せず、Form の Controls に登録したままであれば、Form が Dispose される時に
子孫が連鎖的に Dispose されるので、明示的に Dispose する必要は無いですけれど。
そして、Pen、Brush、Font、Grapchis、Bitmap などもまた、Dispose 対象です。
ただし、Pens.Black や Brushes.Red などといったものに関しては、
自身で作成したリソースでは無く、Shared メンバーで管理される共有資源なので
この場合は Dispose してはいけません。(Dispose 後に再作成する手段がない)
また、Grapchis についても、Dispose が必要となるのは、
.CreateGraphics メソッドや Graphics.FromImage メソッドなどのように
自身で作成したリソースだけです。Paint イベントの e.Graphics などは
自身で作成したものではないので、勝手に Dispose してはいけません。
……ということで、Dispose メソッドがあれば常に呼び出すというわけでも
無いという点が、こういった判断を難しくしています。
StreamReader / StreamWriter なども、意図的に Dispose を呼ばないケースがありますし、
DataSet / DataTable などのように、Dispose しても何も起きないものなどもあります。
■
No88588
(熊さん さん) に返信
>>> PBox1.Top + CInt(PBox1.Height * (1 - YRate) * 0.5)
>>上記の計算式の場合、YRate が Single なので、
>>0
.5 や 0.5R ではなく、0.5F と書いた方が良いですよ。
> これはなぜでしょうか?
一言で言えば、「データ型を意識しましょう」ということです。
Single 精度で演算したいのか、Double 精度で演算したいのか。
0.5 や 0.5R や 0.5# というのは Double 型のリテラルであり、
0.5F や 0.5! と書いた場合には Single 型のリテラルを意味します。
0.5D や 0.5@ と書いた場合には Decimal 型のリテラルを意味します。
先ほどの
PBox1.Top + CInt(PBox1.Height * (1 - YRate) * 0.5)
の型を見てみると、
Integer + CInt( Integer * ( Integer - Single ) * Double )
となっていますので、演算を進めていくと
Integer + CInt( Integer * ( Single ) * Double )
Integer + CInt( Single * Double )
Integer + CInt( Double )
Integer + Integer
の精度で計算されることになりますね。
>> YRate = NumericUpDown1.Value / 100
この代入式も、左辺の型が Single ですので、現状は
Single 変数 = Decimal 値 / Integer 値
という計算式になっています。
「Decimal / Integer」は Decimal 型の精度で演算される仕様であり、
Single 変数 に Decimal 値を代入しようとしていることに注意してください。
Single は Decimal よりも表せる範囲が広いため、
この暗黙変換は Option Strict On でも成功します。
しかし有効桁数の精度的には Single の方が荒く、その分誤差を生じます。
あとは、この誤差をどう考えるかです。
※Decimal は 128bit のサイズを持つ型ですが、Single は 32bit しかありません。
※Decimal の有効桁数は約 28.899 桁、Single の有効桁数は約 7.2247 桁です。
後々 Double 精度で演算したいなら、YRate も Double の方が手っ取り早いですし
Single 精度で十分なら、先の座標計算も Single 型の計算式を組むべきでしょう。
あるいは誤差を減らしたいなら、パフォーマンスさえ許容範囲なら Decimal が使えますし、
あるいはパフォーマンス優先で、先のように Integer な演算式を組むこともできるわけです。
Integer 単位の Point/Rectangle 型や
Single 単位の PointF/RectangleF 型はあっても
Double 単位の PointR/RectangleR 型が無いというのも
型を選ぶ指針になるのではないでしょうか。
Single や Double は、2 進小数型ですので、0.50 や 0.25 は正しく保持できても、
0.01 という値は有限桁で表せず、わずかに誤差を含んでしまいます。
記事No.88470 のレス /過去ログ152より /
関連記事表示
削除チェック/
■101565
Re[4]: VBからAccessのFormを表示
□投稿者/ 大谷刑部 -
(2023/03/15(Wed) 14:42:32)
■
No101563
(魔界の仮面弁士 さん) に返信
> ■
No101560
(こうべ さん) に返信
>>やりたかったことは、VBからAccessのFormを表示し、AccessのFormからリターン後は普通にVBのFormで操作できることです。
>
> Access Form が閉じた段階で、Access 本体を終了あるいは最小化する処理を仕込んでみては如何でしょうか?
> そうすれば、直前にアクティブだったアプリケーションがアクティブになる気がします。
基本的には弁さんのこの案に賛成です。
最少化でも、ShowWindowAsyncとかで元に戻せるので、ある程度は.Net側で制御可能ですしね。
Accessの起動時に重ための処理をしてる場合なんかは最小化の方にした方がむしろいいかもしれません。
プロセスさえ捕捉できれば、起動してるアプリはそのまま利用した方が再表示するのに処理が軽いでしょうし。
どっちかというとどちらからも双方向に起動できる仕様になってる方が問題のような気がしていて、どっちが主なのかはっきりして、
プロセス制御は片方に固めた方がシステムが煩雑化せずトラブルは減るとは思います。
もちろんどうするかは質問者さんの自由ですが。
記事No.101547 のレス /過去ログ177より /
関連記事表示
削除チェック/
<<
0
>>
パスワード/
-
Child Tree
-