[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 02/16 13:16 / Filesize : 126 KB / Number-of Response : 495
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C#, C♯, C#相談室 Part50



1 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 13:45:15 ]
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ
C#, C♯, C#相談室 Part49
pc11.2ch.net/test/read.cgi/tech/1224754660/


Visual C# 2008 Express Edition 日本語版
www.microsoft.com/japan/msdn/vstudio/express/vcsharp/

その他テンプレ>>2-5くらい

263 名前:109 mailto:sage [2009/01/05(月) 15:46:03 ]
>>110
情報ありがとです。
なぜか{"テーブルに主キーがありません。"}って怒られました。
データベースエクスプローラのテーブルにある奴をダブルクリックしたら構成画面みたいなの出たので
右クリックで「主キーの設定」ってのはやったんですけど・・・
やさしそうな本買って勉強してみます。

264 名前:252 [2009/01/05(月) 16:56:12 ]
>>261-262
ありがとうございます
調べてみます

265 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 17:20:31 ]
>>263
主キー(primary key)とは制約(constraint)であり、その列に重複(duplicate)する値を持たないので一意性(ユニーク,unique)がある
つまり主キーから行を特定できる

266 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 20:53:41 ]
NUnitを使っているのですが、

テストデータとして予め用意したテストファイル(VS2008のプロジェクトディレクトリ内)を
使う場合、そのパスを取得するいい方法は何でしょうか?

Assembly.GetAssemblyで取得しようとすると、NUnit の GUI runner がshadow copyをしているので
違う一時ディレクトリになってしまい、shadow copyをオフにするとAssemblyにロックがかかってしまい
VSでのビルドができなくなってしまって困っています。

267 名前:デフォルトの名無しさん [2009/01/05(月) 22:49:38 ]
Gifファイルのカラーパレットを変更したいです。
現在はビット深さが8bitで、カラーパレットは2^(7+1)で256色用意してあります。というかこれがデフォルトだと思います。
この状態で、ビット深さは8bitのままで、カラーパレットのエントリーのレングスを2にしたいのですが、

どうやったらいいのかわかりません。お願いいたします。

(目的は、特許庁のインターネット出願ソフトをパスするためです。どうやら、カラーパレットが2でないと
出願ソフトではじかれてしまうようなのです)

268 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 23:04:17 ]
意味が分からん
パレットのエントリ数は色深度で決まるもんだろ?
つーか普通に画像処理ソフト使えよと思うわけだが

269 名前:デフォルトの名無しさん [2009/01/05(月) 23:11:38 ]
>>268
>>パレットのエントリ数は色深度で決まるもんだろ?

原則、そうだと思います。ただ、GIFのヘッダーのパックドの2〜4ビット目と、6〜8ビット目を
みるとお分かりの通り、デプスとエントリ数は異なる値に設定できるようになっています。

Universal Document Printerという市販ソフトでモノクロ出力すると、
デプスが8でパレットのエントリ数は2で出力されます。
個人的には、こうするんだったら、デプスが1bitでエントリ数が2という組み合わせで
いいじゃないかとも思うんですが、業界としてデプスは8bitが標準なので
それに倣っているんだな、と勝手に解釈しています。

270 名前:デフォルトの名無しさん [2009/01/05(月) 23:17:30 ]
static public void test()
{
Bitmap bmp = new Bitmap(@"C:\Documents and Settings\stuv\デスクトップ\b1.gif");
Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
BitmapData bmpData = bmp.LockBits(rect, ImageLockMode.ReadWrite,bmp.PixelFormat);
IntPtr ptr = bmpData.Scan0; int stride = bmpData.Stride; int bytes = stride * bmp.Height; byte[] index = new byte[bytes];

// Copy the RGB values into the array.
System.Runtime.InteropServices.Marshal.Copy(ptr, index, 0, bytes);

int initX;
for (int y = 0; y <bmp.Height; y++)
{
initX = stride * y;
for (int x = 0; x < bmp.Width; x=x+2)
{
index[initX + x] = 0;
index[initX + x+1] = 1;
}
}
System.Runtime.InteropServices.Marshal.Copy(index, 0, ptr, bytes);
bmp.UnlockBits(bmpData);
Bitmap bmpTemp = new Bitmap(1, 1, PixelFormat.Format1bppIndexed);
ColorPalette pal = bmpTemp.Palette;
pal.Entries[0]=Color.Black;
pal.Entries[1]=Color.White;
bmp.Palette = pal;
bmp.Save(@"C:\Documents and Settings\stuv\デスクトップ\b2.gif", ImageFormat.Gif);
bmp.Dispose();
コンソールです。これよりスマートなのはありますでしょうか。

271 名前:デフォルトの名無しさん [2009/01/06(火) 01:13:23 ]
RowFilterでフィルタをかけている状態で、下記のコマンドをボタンで実行
させていますが、DataGridのフォーカスを手動で変更をしないと
データベースが更新されないのです。
※フォーカスを移動しなくても更新されるようにEndCurrentEdit
メソッドを事前にかけているのですが・・・

---------------------------------
int iRow; //更新したレコード数
this.BindingContext[dbCustomer1, "M_Customer"].EndCurrentEdit();
iRow = oleDbDataAdapter1.Update(dbCustomer1, "M_Customer");
MessageBox.Show("更新 " + iRow + "件");
-----------------------------




272 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 11:32:48 ]
ネットワークからのデータを1バイトずつ処理したいので、BufferedStreamを使おうとしたのですが、
BufferedStreamにデータが到着したかどうかを取得できる機能が見つからなくて困っています。
普通にReadByte()すると切断されるかリモートホストからデータが1バイト来るまでブロックしてしまいますし、
LengthやPositionの取得はおろかタイムアウトの設定すらサポートされていません。
1バイトを読むためにいちいちコールバックさせるのも面倒でたまりません。何かいい方法はありませんか?

273 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 12:28:03 ]
非同期でやれば

274 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 19:12:20 ]
NetworkStream.DataAvailable

275 名前:デフォルトの名無しさん [2009/01/06(火) 19:32:40 ]
64*64の画像をバッファに取り込んで、そこから32*32の範囲を拡大縮小せずに取り出すことはできますか?Rectangleを使うらしいですが、そこから先が分かりません。教えて下さい。

(例)
Bitmap bmp = new Bitmap("test.bmp");
Rectangle rec = new Rectangle(0,0,32,32);
Bitmap result = ??

276 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 20:00:40 ]
新しいBitmap作ってGraphics.FromImageで作ったGraphicsにGraphics.DrawImage

277 名前:デフォルトの名無しさん [2009/01/06(火) 20:30:02 ]
>>276
それはここのことを言ってると思いますが、
dobon.net/vb/dotnet/graphics/triming.html

Bitmap img = new Bitmap(@"C:\サンプル.jpg");
//PictureBox1のGraphicsオブジェクトの作成
Graphics g = PictureBox1.CreateGraphics();

//元の画像の(10,10)-(100,100)の部分を切り取って表示する
//座標(0,0)に表示し、単位をピクセルとする
Rectangle rect = new Rectangle(10, 10, 100, 100);
g.DrawImage(img, 0, 0, rect, GraphicsUnit.Pixel);

//Graphicsオブジェクトを破棄
g.Dispose();

これは一部を表示するだけで、私がしたい「別のbitmapまたはimageデータに切り取った画像を入れたい」ことにつながってません。
この点厚かましいお願いとは思いますがよろしくお願いします

278 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 20:35:06 ]
言ってない

279 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 20:35:46 ]
ぽかーん・・・

280 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 20:44:19 ]
>>277
噴いたwwレベル高いなおいwww


まぁ、この程度の事にGraphics持ち出すのは大袈裟だとは思うが、要求仕様は満たしてるな。
MSDN行って、Bitmapクラスのメソッド一覧読んで来い。

281 名前:デフォルトの名無しさん [2009/01/06(火) 21:06:00 ]
Objectとobjectってなにが違うんですか?
(先頭の大文字と小文字)
イベントの引数を書いてると、小文字のobjectが最初に出てきます。




282 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 21:06:54 ]
>>281
C# のキーワードと、.NET のオブジェクト

283 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 21:07:10 ]
あ、逆ね。object が C# のキーワード。

284 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 21:26:50 ]
おまえらはStringとstringどっちで書いてるんだ

285 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 21:29:44 ]
宣言はstring

286 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 21:30:04 ]
string だなぁ。

287 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 21:31:15 ]
Int32

288 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 21:31:33 ]
String
VSで型名が水色に統一されるからw
by 素人

289 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 21:31:39 ]
静的メソッド呼び出すときだけString

290 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 21:53:38 ]
何か水色だと参照型な気がしてしまう

291 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 22:04:39 ]
>>289
オマエハオレカ



292 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 22:36:47 ]
折角キーワード用意してくれてるんだから全部小文字でいいじゃん

293 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 22:39:43 ]
小文字で始まるとJava臭くなるから

294 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 23:10:42 ]
String や Object のほうが Java くさい

295 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 23:48:50 ]
StringやObjectはVBくさい。

296 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 23:53:18 ]
ほにゃらら臭くない命名規則なんてあるのか?

297 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 00:03:35 ]
CodeZineで瀬○遥が投稿するたびに
憂鬱になるのは俺だけ?

298 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 00:15:38 ]
stringが正解です。

299 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 00:19:44 ]
namespace書かない方がusingで指定しなくてもクラス使えて便利だった

300 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 01:30:33 ]
教えてください。
TreeViewにあるアイテムを選択し、それをExplorerを使って
あるフォルダへD&Dすることで、そのフォルダにテキストファイルを作成する
ことを考えています。
そのために、D&D先のフォルダのパスを検出する必要があるのですが、
それがどうもわかりません。
QueryContinueDragを使ったほうがいい?とWebにもあるのですが、
そのイベントで得られるイベント引数にはExplorerのパスが含まれていません。

ExplorerからTreeViewへのD&Dは簡単だったのですが・・・

どなたか教えていただけないでしょうか。

301 名前:デフォルトの名無しさん [2009/01/07(水) 09:45:14 ]
>>300

dobon.net/vb/dotnet/control/droptoexplore.html
ここを参考にしてみては?

今どうやろうとしているのかよくわからないんだけど、explorerのパスを取得するの
ではなくて、あらかじめテキストファイルを作成しておいて、ドロップしたいそのファイルの
パスを IDataObject(Dataformats.FileDrop, string[]{パス})として、explorerに通知するん
だと思うが。



302 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 09:50:29 ]
>>300
ファイルやディレクトリをエクスプローラへドラッグ&ドロップするには?
www.atmarkit.co.jp/fdotnet/dotnettips/384expdragdrop/expdragdrop.html
エクスプローラへドロップしたタイミングでファイルを作成し、コピーしたい
forums.microsoft.com/msdn-ja/showpost.aspx?postid=1325458&siteid=7

これらを見た感じ、エクスプローラ側のドロップ先パスを調べることは出来ないみたいだね。
エクスプローラへのドロップは、ファイルコピーまたは移動をエクスプローラが主体となって行う。

だからあらかじめ、作成したいファイルをどこか一時的に出力しておいて、
それらのファイルパスをドラッグデータに設定するしかないんでない?

303 名前:デフォルトの名無しさん [2009/01/07(水) 09:55:39 ]
すまん被った。

質問。
XmlSerializerで任意の型が含まれるobject配列をシリアライズしたいのですが、
その為にはXmlSerializerのコンストラクタへ、含まれる可能性のあるTypeを
全て渡しておかなければいけません。
そこで、XmlSerializer生成前にobject配列内の要素を総なめしType一覧を生成して
XmlSerializerに渡しているのですが、これって正しい方法なのでしょうか?

304 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 10:11:03 ]
普通は属性で事前に定義しとくもんだろ
デシリアライズ時にどうすんだ

>>300
ドロップ時の動作はドロップ側で行うものだから
基本的にはDataFormats.FileDropとダミーファイル作るしかない。
ダミーを作るのが嫌ならシェル拡張でExplorerのドロップ時動作を書き換えることになる。
が.NET/C#でシェル拡張は止めといたほうがいいというのが定説だな。
Explorer以外のファイラとかだとまず無意味だし。

305 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 11:03:46 ]
最近、C#を勉強しはじめたのですが、delegate、event で困惑してしまって・・・。

namespace my_namespace
{
  delegate void my_delegate();

  class my_class
  {
    public event my_delegate MyEvent;

    public void my_func()
    {
      Console.WriteLine("hello");
    }

    static void Main(string[] args)
    {
      my_class oIns = new my_class();

      my_delegate del0 = oIns.my_func; //※1
      my_delegate del1 = new my_delegate(oIns.my_func); //※2
      del0 += oIns.my_func; //※3
      del1 += new my_delegate(oIns.my_func); //※4
              :
    }
  }
}
[質問1]
※1と※2、※3と※4 この2種類の式でどのような違いがあるのかわかりません;;


306 名前:305 mailto:sage [2009/01/07(水) 11:04:38 ]
あと、
"System.Windows.Forms.Buttonクラスインスタンス"の"Clickイベント"へイベントリスナーを登録しようとした際、

  public void MyEventHandler(object sender, System.EventArgs e){ … }
         :
  this.button1.Click = this.MyEventHandler;

と記述すると、
  イベント 'System.Windows.Forms.Control.Click' は += または -= の左側にのみ表示されます。
と、コンパイルエラーが表示されます。

[質問2]
どうして、"="ではリスナーの登録ができないのでしょうか;;

長文ですいません;;。何かお分かりの方、どうぞ、お知恵を…m(_ _)m

307 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 11:09:27 ]
> ※1と※2、※3と※4 この2種類の式でどのような違いがあるのかわかりません;;
同じ 型が明らかなので省略可能ってだけ

> どうして、"="ではリスナーの登録ができないのでしょうか;;
eventがそういう仕様(add/removeのみ)だから

308 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 11:48:11 ]
> ※1と※2、※3と※4 この2種類の式でどのような違いがあるのかわかりません;;

デリゲートの場合、=を使うとデリゲートがクリアされて新しく格納される
+=つかうと追加になって実行時にマルチキャストされる

イベントは基本的にマルチキャストされるべきなので外部からは+=か-=しかできない仕様になってる
イベントを実装するクラスでは=も可能

309 名前:305 mailto:sage [2009/01/07(水) 11:51:11 ]
>>307
レス、ありがとうございます m(_ _)m

> > どうして、"="ではリスナーの登録ができないのでしょうか;;
> eventがそういう仕様(add/removeのみ)だから
ご回答頂いたとおり、私も最初、「そういうものなんだろうなぁ〜」と思ったのですが、以下のソースでは、問題なくコンパイルが通ります。
※環境ですが、VS2008sp1 .NetFramework3.5sp1 です。

310 名前:305 mailto:sage [2009/01/07(水) 11:52:44 ]
using System;
namespace my_namespace
{
  delegate void my_delegate();

  class my_class
  {
    public event my_delegate MyEvent;

    public void my_func()
    {
      Console.WriteLine("hello");
    }

    static void Main(string[] args)
    {
      my_class oIns = new my_class();

      my_delegate del0 = oIns.my_func;
      my_delegate del1 = new my_delegate(oIns.my_func);

      oIns.MyEvent = oIns.my_func; //※1
      oIns.MyEvent = del0; //※2
      oIns.MyEvent = del1; //※3
    }
  }
}
※1〜3部分がコンパイルエラーにならないんです・・・
なんでだろ;;

311 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 11:55:41 ]
同じクラス内だから



312 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 11:58:31 ]
>>308でも書いたけど、
外部から=できてしまうということは、他で登録されていたかもしれないイベントを
全部削除できてしまうということになる。
それだからイベントを使う側からは追加か、既知のデリゲートの削除しかできないような仕様はあたりまえっしょ
イベント定義したクラスではすべてのことができる

313 名前:305 mailto:sage [2009/01/07(水) 12:21:16 ]
>>308,311,312
レスありがとうございますm(_ _)m
309-310を書き込んでる間に、308が書かれていたようで;;
大変失礼しましたm(_ _)m
レス頂いた内容でスッキリしました。ありがとうございます。

余談なのですが…
私は、もともと、C→java、そして、C#と勉強?(仕事で使っている)してきたのですが、どうにも、C#はややこしく感じてしまいます…。
うまくいえないのですが、
・vatualやorverrideやnew
・delegateやevent
・struct(これは、アリだとおもいますが…)
といったものは、javaをやっていると、「必要かな?」とおもうような言語仕様のように思えます…
ただただ、ややこしくしているように感じます…
もう、歳なんですかね;;

314 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 12:25:59 ]
>>305
.NET1.xまでは※4で書く必要があったが、.NET2.0以降は※3でよくなった。
匿名メソッドやラムダ式への布石だと思う。
>del0 += oIns.my_func; //※3
>del1 += new my_delegate(oIns.my_func); //※4

.NET2.0以降なら※3を使ったほうがよい。最適化してくれることがある。

>>313
単に慣れかと、むしろ
>・struct(これは、アリだとおもいますが…)
この一文に不安を感じる。

315 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 12:32:02 ]
CとJavaの間にC++が入ってたらすんなりだったかもな。

316 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 12:46:33 ]
DelphiやJ++に手を出してたもので理解は早かった。ヘジたんラブということで(笑

eventは一度add/removeを自分で書いてみると完全に理解できると思う。
java1.1で匿名クラスが出たときの方が理解に時間がかかったな。

317 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 13:04:45 ]
overrideはJavaにあるじゃない
overrideはないと困るから追加されたんだよ
あとJavaにはvirtualがないために
メソッド定義にfinalをつけると速度が格段に上がるということが実際にあったんだよ

delegate的なものもそのうち追加されるよ

318 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 17:12:22 ]
これからC#勉強するため本を買おうと思っています。
VB, Delphiはそこそこ使えます。
ローカルデータベースでの顧客管理みたいなプログラムを作ろうと思ってるのですが
今まで買って「この本はなかなかお勧めだよ」って本あったらぜひ教えて下さい。
データベースはSQL ServerかAccessがいいのかなって思ってます。

319 名前:デフォルトの名無しさん [2009/01/07(水) 17:36:21 ]
codezine.jp/article/detail/1?p=1
上のサイトを参考に、Plug-inフォルダに入れ込んだDLLをアプリケーションの起動時に読み込むようにしようとしています。
コードもほとんどコピーのはずなのに、何故か実行するとダウンキャストを行う所で例外が発生します。

// 読みだし終わったDLLにあるクラスをインスタンス化
Object obj = asm.CreateInstance(t.FullName); // tFullNameはCountChars.CountChars
Debug.WriteLine(obj.GetType()); // 「CountChars.CountChars」が表示される
CountChars.CountChars plg = (CountChars.CountChars)obj; // ここで型変換したのだが、System.InvalidCastExceptionが発生
// Exceptionが発生したため、以下のコードが実行されません
Debug.WriteLine("Plug-in Run");
plg.Run();
Debug.WriteLine("Plug-in Runed");

正直、何故うまくダウンキャストされないのか理由が思い浮かばないという状況です。
お知恵をお貸しいただけると大変ありがたいです。


320 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 17:39:04 ]
C#は上位の名前空間と同名のクラスを認めてないみたいな話じゃないの

321 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 17:54:31 ]
プラグインが実装するインターフェイスのアセンブリは、
呼び出し側とプラグイン側で同じものを参照する必要がある。
両方に同じコードをコピーしてそれぞれでコンパイルしてるのではないかな。



322 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 17:56:37 ]
俺はC++&PythonからC#入ったら、ほとんど覚えることは無かったな。
最近のGC付き言語はどれも似たような感じだね。

323 名前:319 [2009/01/07(水) 18:34:24 ]
>>321
どうもご返答ありがとうございました
一応あの後頑張った結果

1.インターフェースクラスのみをdllに吐き出す
2.参照の追加、でdllを参照に加える(これは継承したクラスとアプリケーションどちらも)
3.この状態で動的ロードとダウンキャストを行う

で、うまく行きました
ありがとうございました。




324 名前:デフォルトの名無しさん [2009/01/07(水) 20:27:38 ]
>>275
解決しました

325 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 20:44:01 ]
Runed・・・ 笑うとこ?

326 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 07:59:11 ]
sql serverへの接続プログラムを作っていて不思議に思ったことがありました。

SqlConnectionクラスが保持しているリソースの開放を、
『using + IDisposableインタフェイス』で行いました。
 using (SqlConnection oCon = new SqlConnection("接続文字列"))
 {…処理…}

この時、ふと、
 「SqlConnectionクラスって、IDisposableインタフェイスを実装してるよね?」
と思い、継承関係を追いかけてみると、親クラスであるDbConnectionが、
IDisposableインタフェイスを継承していました。
 「あ〜、ここで継承してるのね。」
 「Disposeメソッドを定義してるのが、SqlConnectionクラスなんだ。」
と思ったのですが、SqlConnectionクラスのDisposeメソッドを見てみると
 protected override void Dispose(bool disposing)
となっていました。
 「あれ? "void Dispose()" じゃないの?」
と思い、引き続き調べてみると、DbConnectionクラスの親クラスである
Componentクラスもまた、IDisposableインタフェイス継承しており、
ComponentクラスにてDisposeメソッドが定義されていました。

ComponentクラスでもIDisposableインタフェイスを継承しており、
Componentクラスを継承しているDbConnectionクラスもまた、IDisposableインタフェイスを
継承していることがとても、不思議でした。
なぜ、DbConnectionクラスでもIDisposableインタフェイスを継承する必要があるのでしょうか?

以上、おサルな私に何かアドバイス頂けたら幸いです。

327 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 08:10:18 ]
DbConnectionはDisposeには手を出してないよ
Componentがpublic void Dispose()とprotected virtual void Dispose(bool)を定義
Dispose()およびファイナライザ内でDispose(bool)を呼び出す
DbConnectionは何もしない
SqlConnectionがprotected override void Dispose(bool)をオーバーライド
クラスの解説の定義のとこに出てくるインターフェイスは基底が実装してるのも含めて書かれる

328 名前:326 mailto:sage [2009/01/08(木) 08:26:19 ]
>>327
>クラスの解説の定義のとこに出てくるインターフェイスは基底が実装してるのも含めて書かれる
この1行で全てが解決しました。
目から鱗です。
ありがとうございました。

329 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 12:26:05 ]
Objectとobjectって同じもの?Stingとstringって同じもの?


330 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 12:54:57 ]
System.Objectとobjectは同じもの
System.Stringとstringは同じもの

331 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 12:59:58 ]
global::System.Object とすればさらに正確か



332 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 02:34:19 ]
C#やり始めて3年、大体空気するように使えるようになったけれど、F#今初めてどのぐらいでこの域に達するかな・・・
やっぱり日々の仕事で使ってかないと上達しないんだろうな・・・

333 名前:デフォルトの名無しさん [2009/01/09(金) 12:21:41 ]
>>332

プログラミング言語なんてひと月ふた月でフルに立ち上がらないようなやつは
だめだろ 

334 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 12:24:23 ]
F#が日々の仕事で使えるわけないがな

335 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 13:37:02 ]
>>333
ひと月ふた月でフルに立ち上がるってどんな超人だよw
そんな奴いるんだったらうちで月50万で即雇うよ。
住所と名前教えてくれ。
フルってC#で可能な事なら何頼んでもすぐ完成させてくれるって事だよな?
マジで雇う。

336 名前:デフォルトの名無しさん [2009/01/09(金) 15:06:09 ]
VC#2008EE なんですけど、
コンパイルのたびに前回のコンパイルなどの知識を生かしてPGO(?)、最適化みたいなことって
やっているんですか?

意味不明な質問ですいません

337 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 15:11:23 ]
>>335
派遣会社にでも相談したら?
月150万出せば、貴方の言う超人レベルの人が来てくれるよ。

>>336
ただの最適化しかしてくれないよ。
PGOみたいな機能はない。

338 名前:336 [2009/01/09(金) 15:15:02 ]
ということは、
同じソースコードを同じパソコンでコンパイルしたら大体同じ速度ってわけですか。
(最適化オプションが一致なら)

しかしそれがどうもそうじゃない気がして気持ち悪いのですが。
なにかありがちな勘違いとかないですか?

339 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 15:17:22 ]
コンパイル時に行われる最適化はローカルな範囲だけ。
どこでコンパイルしても出来上がるILは一緒。
インライン展開が行われたりするのは実行時。

340 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 15:21:30 ]
気がすると言われても困る
dllのキャッシュとかその辺のレベルの話もあるわけだし

341 名前:336 [2009/01/09(金) 15:23:53 ]
>>339 さん
ありがとございました。





342 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 15:25:57 ]
VS2008 .net3.5SP1

SmtpClient を使用してメールを送信しようとしています。
2つのLANカードがささってるPCから送信する場合、
指定のLANカード経由でメールサーバーに接続する
プロパティや方法などありますでしょうか?

343 名前:336 [2009/01/09(金) 15:28:48 ]
>>340 すいません、こういう質問のしかたはよくないな、と思ったんですが。

結果とって計ったりしなかったもので。

344 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 15:32:57 ]
>>342
ServicePointプロパティの解説

345 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 15:54:50 ]
>>344
ServicePoint.BindIPEndPointDelegate プロパティ
でいけそうです。ありがとうございます。

346 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 16:08:41 ]
WebBrowserでリンクをクリックした時に、リンク先がpdf等だった場合
IEとかのブラウザが立ち上がってしまうんですが、これを直接pdfのプログラムで開きたい場合は
どうしたらいいんでしょうか。


347 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 16:46:05 ]
NewWindowイベントを持つ継承クラスを作ってイベントでNewWindowをキャンセルさせて、DLしたファイルを直接開く。

348 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 20:49:08 ]
超人レベルPGが月50万てw
駄クラスでもフリーランスで70万くらいは取ってるだろ。そんな安い金で来るわけねーだろw

349 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 00:04:34 ]
>>335のレベルが推して知れるな

350 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 00:05:52 ]
50万て。何重に搾り取られたゴミ派遣だよ…

351 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 00:58:52 ]
マ版へ池



352 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 01:52:33 ]
フリーと会社で雇うのは全く違う。
税金とか保険とか退職金とかあるだろ。

353 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 01:53:36 ]
www.atmarkit.co.jp/fdotnet/dnfuture/vs10net4_01/vs10net4_01_01.html
Parallelクラスいいな・・・

354 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 13:35:06 ]
>>351

355 名前:デフォルトの名無しさん [2009/01/10(土) 16:22:42 ]
FormのPaintイベントで
DrawImageをしているのですが、

たまに
Formの上にウィンドウを表示しているところにも
DrawImageの一部が描画されてしまいます。

これはいったい何が原因なのでしょうか?
ウィンドウを再描画するようにするしか方法はないのでしょうか?


356 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 16:26:21 ]
ウインドウってなに

357 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 16:35:24 ]
MDI?

358 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 16:35:47 ]
液晶が焼きついたんだろ

359 名前:355 mailto:sage [2009/01/10(土) 19:04:50 ]
>>358
それかも。
違うハードで試してみます。

360 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 19:07:29 ]
何という釣り

361 名前:デフォルトの名無しさん [2009/01/10(土) 21:02:12 ]
VS2005なんですけど
プロパティの自動作成機能ってなかったですっけ?
public clas MyClass
{
public string プロティ

って書いて自動でget,set作る機能です。



362 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 21:07:20 ]
prop

363 名前:361 mailto:sage [2009/01/10(土) 21:29:44 ]
thx

364 名前:デフォルトの名無しさん [2009/01/11(日) 03:29:41 ]
質問です。

CのヘッダーファイルからDllImport行を自動生成するツールってありますか?
もしあるようでしたら、場所を教えて欲しいです。

365 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 03:31:38 ]
ピンボケドトネト

366 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 09:21:44 ]
>>364
ヘッダファイルからじゃないが

msdn.microsoft.com/ja-jp/magazine/cc164193.aspx

siggen
download.microsoft.com/download/f/2/7/f279e71e-efb0-4155-873d-5554a0608523/CLRInsideOut2008_01.exe


367 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 18:28:44 ]
>>366
それちゃんとヘッダファイルから生成してくれるよ

368 名前:デフォルトの名無しさん [2009/01/12(月) 20:22:14 ]
ジェネリッククラスについていまいち理解できませんのでちょっと教えてください。
クラス内で扱うオブジェクトをDisposeする必要がある場合、
型パラメータにIDisposableの制約を与えます。
新しくクラスを作成するときに、上記のような制約のあるジェネリッククラスを作ればよいのか、
IDisposeインターフェースを継承したクラスを使えばよいのかの判断がわかりません。

継承されたクラスを作るなら作成されたクラスはIDisposeを求められる引数などに使えます。
ジェネリッククラスだとそういうケースでは使えないが、
パフォーマンスや、明示的に型を設定できることが便利です。

インターフェースの制約のあるジェネリッククラスとインターフェースを継承したクラスを
比較した場合、こんな考えでよいでしょうか?
なんか自分の理解が足りていない気がしましたので質問させてください。

369 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 20:28:36 ]
>>368
質問の意図がわからないし、俺じゃなくてもわかる人間がいる気がしない。
そもそも比較の対象になりようがない二つを比較している気がするんだが

370 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 20:31:18 ]
IDisposable はクラスを Dispose 可能にする(Dispose を強制する)ためのインターフェイスであって、
ジェネリックスとは直接関係ない。

クラスの機能としてジェネリックスが必要なのか? をまず考えるべきじゃね?

371 名前:368 mailto:sage [2009/01/12(月) 20:46:15 ]
>>369-370
お返事ありがとうです。
インターフェースの制約のあるジェネリッククラスとインターフェースを継承したクラスは
直接なんの関係もない、ということですね。

いろいろな型として振る舞わせたい場合はジェネリッククラス、
そんな必要はない場合はインターフェースの継承。

ジェネリッククラスの機能が導入され、Hashtableクラスはジェネリッククラス版ができ、
進化しました。
ということはジェネリッククラス>通常のクラス
と思ったわけです。
ジェネリックの機能の追加によるメリットを受けることができるのは
HashTableクラスのようなobject型としてデータを保存し、利用時にキャストしていたような
クラス、ということでしょうか?
そんな動作をしないようならジェネリッククラスは特にいらない、という解釈です。
まだ考えへんですかね?



372 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 20:51:45 ]
>>371
型パラメータに制約のあるジェネリッククラスもインターフェイスを実装できるわけだが。

全く別のものなのに、なんで比べてんの?

373 名前:368 mailto:sage [2009/01/12(月) 20:59:32 ]
>>372
>型パラメータに制約のあるジェネリッククラスもインターフェイスを実装できるわけだが
この機能考えてませんでした。
だとしたら極論ジェネリッククラスにしておくに超したことはないということでしょうか?
リソースやらなんやらで多少はデメリットあると思いますが。
とりあえずジェネリッククラスで実装しておいて利用時に型を限定できますので。

全く別物とは言われるのですが自分の中では未だに
ジェネリッククラス>そうじゃないクラス
に見えてしまっています。
結論を言うと皆さんの言うように別物なんでしょうが、
まだ理解ができていません。

いろいろなところで解説をみると「この場合ジェネリッククラスは便利」という内容は見かけますが、
「この場合ジェネリッククラスにすると変」みたいな例ありませんか?

374 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 21:01:54 ]
Form クラスをジェネリックスで実装するバカはいないだろJK

375 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 21:14:20 ]
つかジェネリッククラスはメタクラスなわけで、クラスとはレイヤが違うと何度言われれば(ry

376 名前:368 mailto:sage [2009/01/12(月) 21:17:16 ]
>>374
例えばこんなクラスですよね?
class MyClass<T> where T:Form
実際書いてみました。
利用時にTに設定するクラスが思いつきません。
>>375とも通じますが、つまり他のクラスを管理するようなクラスでないと
ジェネリックにする意味はない、ということでしょうか?

377 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 21:28:43 ]
つか、コンテナ以外の用途って何かあるの?

378 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 21:32:22 ]
IEquatable<T>のようなインタフェース

379 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 21:36:16 ]
へー。勉強になった。実装クラスでは何かある?

380 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 21:42:40 ]
Func<..> やら Linq の中身(処理の連結連結)でも使いまくり
だろ。


381 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 21:49:54 ]
ほー。勉強になった。LINQ とかあんま使ってないからなー。



382 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 22:24:49 ]
まーこれも型推論の出来ない静的であるせいなんだが。

383 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 22:36:28 ]
ジェネリックだとHoge<A>とHoge<B>は全くの別物になるからかえって不便になる場合がある
そういうときはわざわざ非ジェネリックのIHogeを定義してHoge<>に実装させたりする

384 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 22:42:12 ]
C# 4.0 でその手間もいらなくなるかもね

385 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 22:46:08 ]
値型は反変ダメだからやっぱり必要だよ

386 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 23:34:41 ]
string配列をSettingsクラスを使って保存したいんだけど、型を選ぶところにstring[]が無いんだけどどうすればいいの?

387 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 00:19:56 ]
手で入力する

388 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 01:21:15 ]
string[]をCSVに変換して保存する方法あります?
CSVからstring[]に変換することも視野に入れて

389 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 01:24:28 ]
for/string.split

390 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 01:32:17 ]
>>382
型パラメータなんて推論しまくって省略されまくりだろ。
パラメータ化しなければならないってならそうだけど
この方式が安全ではあるので仕方ない

391 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 01:32:33 ]
単なるsplitはまずい



392 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 01:51:46 ]
結局グーグルにかけたら↓にデザイナに表示されない型の保存についてのやり方が書いてあったwww
dobon.net/vb/dotnet/programing/mysettings.html

393 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 01:54:26 ]
CSVのパースって、本当に汎用・厳密にやろうとするとすげー面倒だよな

だから、CSV出力・パーズ専用ライブラリを探すか作るかしなくちゃならない。

splitが使えるのは、「データに絶対にカンマが入らない」 とか、「絶対に改行が入らない」
とか、そういう仮定がいくつかおける場合だけだと思う。

C# CSVでググればいくつか出てくるから、ライセンスとかと相談しながら
選ぶか作るかすればいいんじゃね

394 名前:デフォルトの名無しさん [2009/01/13(火) 05:14:59 ]
Visual BasicからC#に変える利点ってどのようなものがありますか?

395 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 05:20:50 ]
エクスプローラでフォルダを開きたいのですが、
System.Diagnostics.Process.Start("EXPLORER.EXE", path);
を使うとウィルスバスターに警告されてしまいます。

もう少し安全な方法はありませんか?

396 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 06:00:36 ]
元々非常に安全なので心配は無用です。

397 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 07:17:48 ]
ASP.NETを勉強中ですが、疑問に思ったことがありまして…。

System.Web.UI.Pageにはプロパティーとして「Page」があると思うのですが、
どうしてわざわざ、このようなプロパティを用意しているのでしょうか?
System.Web.UI.Pageクラスを継承しているのだから、「this」でいいとおもうのですが…。
※System.Web.UI.Pageクラスを継承した独自クラスで
 Pageプロパティとthisを比較したのですが、同じインスタンスでした。

恐らく、何かとても深い意味があるのだと思うのですが、私には思いつきませんでした...orz...

398 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 07:23:01 ]
先祖のControlがもってるんだから仕方ないだろ

399 名前:397 mailto:sage [2009/01/13(火) 07:29:52 ]
>>398
レスありがとうございますm(_ _)m
そうなのですか…。
あまり、深い意味はないということなんですね…。
ありがとうございましたm(_ _)m

400 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 08:15:32 ]
>>399
Page以外のControlもPageプロパティを持ってて、その場合Pageプロパティ != this

401 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 08:48:35 ]
正規表現で半角記号かどうか判断するにはどうしたらいいんでしょうか?




402 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 08:51:22 ]
正規表現 半角記号 でぐぐるといいよ

403 名前:397 mailto:sage [2009/01/13(火) 10:04:40 ]
>>400
レスありがとうございますm(_ _)m
参考にさせて頂きます

それで、引き続き調べてみたのですが、また1つ疑問が…。

[前提]
System.Web.UI.Controlクラスに定義されている「Page」プロパティは
System.Web.UI.Pageクラスだと思います。

[試したこと]
マスターページを使用してaspxを作成しています。
 マスターページ→OrgMasterPage : System.Web.UI.MasterPage
 コンテンツページ→OrgPage : System.Web.UI.Page
 ※OrgMasterPageクラスにOrgPageを突っ込んでいます
<結果1>
OrgMasterPageクラスにて
 this.Equals(this.page) → true
<結果2>
OrgPageクラスにて
 this.Equals(this.page) → true
となります。

[不思議におもったこと]
[前提]にもあるとおり、「Page」プロパティは、System.Web.UI.Pageクラス。
OrgPageクラスは、System.Web.UI.Pageクラスを継承している為、<結果2>となるのはわかります。
しかし、OrgMasterPageは、System.Web.UI.MasterPageクラスを継承しています。
なのに、<結果1>となります。
System.Web.UI.MasterPageクラスは、System.Web.UI.Pageクラスを継承していないのにどうして
「Page」プロパティ(System.Web.UI.Pageクラスインスタンス)に設定できてしまうのでしょうか;;



404 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 01:14:52 ]
>>393
vbにはcsv専用のparseがあるんだが。
C#からも使えるよ。

405 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 01:34:05 ]
なんとなく"LINQ to CSV"でぐぐってみたら、
www.codeproject.com/KB/linq/LINQtoCSV.aspx
ちゃんと作りこんであるのあるじゃん。
ライセンスもCPOLなんで、たいてい大丈夫。

406 名前:364 mailto:sage [2009/01/14(水) 01:50:29 ]
>>366
やっと試せたけど、これスゲー!!
いいもん教えてくれてありがとう!


407 名前:397 mailto:sage [2009/01/14(水) 01:57:54 ]
大変失礼致しました。完全なる間違いです。
OrgMasterPage.Pageプロパティには、OrgPageクラスインスタンス※1が設定されていました。
大変申し訳ありませんでした。
※1…正確には、自動生成されるコードに定義されているOrgPageクラスを継承した
   クラスインスタンスです。

408 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 02:22:27 ]
タブコントロールのボタンをドラッグドロップする方法ってありますか?


409 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 11:08:13 ]
FormView使って表形式の編集画面作ってるんだが、バインドした
データによってある項目を出す、出さないを行いたいんだけど
テンプレートベースのFormViewにはちょっときついのかな。
インラインスクリプトで
<%
if (Eval("hoge").equals("foo")) {
Response.Write("<TR>・・・</TR>");
}
%>
みたいに書ければ良いんだけど、バインドデータを呼び出せないから
当然エラーだし。

なんか、根本的に間違ってるのかな。

410 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 22:34:05 ]
C#というより、.NET frameworkの質問なのですが、
Buttonコントロールで、
Image に画像を設定し、
AutoSize を true、
AutoSizeMode を GrowAndShrink に設定すると、
ImageAlign が MiddleCenter になっているにもかかわらず、
画像がボタンの若干右下に数ドット寄って表示されます。
ちゃんとボタンの中央に表示する方法はないでしょうか?

411 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 23:49:36 ]
ならんけどな、、うちがVistaだからか?



412 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 23:50:58 ]
Windowsサービスを作成しようとしています。
サービスをインストールするためにInstallUtil.exeを使わなければいけないとわかりました。
ここ見てみたのですが、
msdn.microsoft.com/ja-jp/library/aa984379(VS.71).aspx
コマンドプロンプトで「installutil.exe」と打ってもそんなコマンドない、と言われます。
私の環境では「C:\Windows\Microsoft.NET\Framework\v2.0.50727」ここにInstallUtil.exeがあるので
当然カレントディレクトリがここでないとコマンドが通らないのですが、
これってみなさんそうなんでしょうか?
いろいろサイトを見るとなんかこのパスが環境変数Pathに設定されているかのような
振る舞いみたいに見えるのですが。。

413 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 23:51:59 ]
パスが通ってないのが通常でしょう

414 名前:412 mailto:sage [2009/01/15(木) 23:55:24 ]
>>413
やっぱりそうですか。
では自分でパス通しときますね。
ありがとうございます。

415 名前:412 mailto:sage [2009/01/16(金) 00:21:14 ]
おかげさまでサービスとしてインストールできたので
早速テスト的にOnStartに以下のコードを書いてサービスを開始しました。
using(FileStream fs = File.Open(sFile, FileMode.Append, FileAccess.Write))
using(StreamWriter sw=new StreamWriter(fs))
{
 sw.WriteLine(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"+"\t OnStart"));
 sw.Flush();
 sw.Close();
 fs.Close();
}
するとログに「2009/01/16 00:22:34 OnS午ar午」という化けた内容で書き込まれたのですが
これってどうしてでしょうか?
あとちょっと別件ですが、上記のコードにファイルオープン時のエラーをcatchするために
try,catchを入れたいのですが、こういうusingを使っている時って
どの行にtry,catchを書くべきでしょうか?


416 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 00:44:28 ]
>>415
ただ単に”OnStart"の場合はどう?

usingはdisposeをfinallyで実行してくれるだけ。

using(FileStream fs = File.Open(sFile, FileMode.Append, FileAccess.Write)) {
using(StreamWriter sw=new StreamWriter(fs)) {
try {
// 処理する
}
catch () {
// 例外処理
}
}
}


417 名前:412 mailto:sage [2009/01/16(金) 01:13:44 ]
>>416
返答ありがとうございます。
"OnStart"のみの出力では「OnS午ar午」と出力されてしまいました。

try,catchについて
今回の件ですとファイルオープンのエラーをキャッチしたいので書くとすればこうなりませんか?
少なくともFile.Openはtryブロックの中に書かないといけないと思うのですが。
try {
using(FileStream fs = File.Open(sFile, FileMode.Append, FileAccess.Write)) {
using(StreamWriter sw=new StreamWriter(fs)) {
// 処理する
}
catch ()
{
// 例外処理
}
だとすると今度はusing使ってるからdisposeしてくれるはずですし、
catchの例外処理って大して書くことない?
と思って変に感じました。

418 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 01:29:14 ]
>>415
Console.WriteLine(DateTime.Now.ToString("tt"));
=> "午前"
の1文字目

sw.WriteLine(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"+"\t OnStart"));
=>
sw.WriteLine(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")+"\t OnStart");

釣りじゃないよね


419 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 01:32:00 ]
つりでした

420 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 01:35:23 ]
やっぱりそうか・・・

orz

421 名前:412 mailto:sage [2009/01/16(金) 01:45:35 ]
>>418
!!!
てっきり文字化けと思って深く考えすぎました。。
ありがとうございます。

>>417のusingの話はどうでしょうか



422 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 02:11:25 ]
>>421
エラーの発生を検出する必要があるため
417の通り、全体を try 〜 catch() で囲む必要はあると思います

using を使う場合はリソースの後処理が不要になるというだけですね
リソースの後処理は一般的に finally 節でおこなうことが多いため、
このfinally 節部分が省略できることになります

ただし、もともとcatch節で書く処理(ログを吐くとかエラーコードを復帰値にいれて返すとか)
は必要でしょう


423 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 02:55:06 ]
フリーのプロファイラを検索するといくつかあるんですが、
お勧めはどれですか?ざっとググった範囲だと
Prof-It for C#
NProfiler
nprof
などが見つかりましたが


424 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 07:06:54 ]
携帯サイトとPCサイトを1つのaspxで対応させたいと思っています。

例えばPHPであれば、
 1.クライアントからの要求に対する処理を行う。
 2.出力データを編集する。
 3.クライアントに応じたテンプレートhtmlを読み込む。
 4.読み込んだテンプレートhtmlに、編集されている出力データを設定。
 5.クライアントへ返す。
と、いった感じでPHP自体には、HTMLのコーディングを一切行わず、
クライアントに応じたテンプレート化されているファイルを読み込み、
可変部分となる出力するデータを埋めていく。

この際、テンプレートをクライアントに合わせたファイルを使用することで、
1つのPHPで、クライアントに応じたHTMLを返すようなことをしていました。

最近、勉強し始めたASP.NETでは、
 「このようなやり方はやらないのかな・・・。」
と、感じました。

通常、1aspxで数種類のhtmlを出力するような場合、どのような方法があるのでしょうか?


425 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 02:12:03 ]
Enumを|で連結されてる条件の中に一つの要素(Enum)が入ってるかどうか調べるにはどうすればいいんでしょうか?


426 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 02:30:06 ]
言ってる意味がよくわからんが
if((foo & Enum.Hoge) != 0)
これが知りたいのか?

427 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 02:34:14 ]
>>426
if((foo & Enum.Hoge) == Enum.Hoge) の方が良くないか?

428 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 03:08:58 ]
良いというか、>>426は間違い
Keysとか、こんなのもあるからな

[Flags]
enum Enum {
  None = 0,
  A = 1,
  B = 2,
  AB = A | B,
}

void Hoge() {
  var e = Enum.A;
  if((e & Enum.AB) != 0) Console.WriteLine("ABだぜ"); // NG
}

429 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 03:14:32 ]
そうだった
そういやそれでバグ出した事あったわ

430 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 15:38:24 ]
ContextMenuStripに自作コントロール乗せるのが出来ないのですが、どうしたらいいのでしょうか?
msdn.microsoft.com/ja-jp/library/9k5etstz.aspx を参考にしたのですが
標準で提供されているコントロールの場合は表示できるのですが、独自コントロールの場合細い線だけが表示されます

431 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 15:57:32 ]
何だっけ・・・レイアウト方面も実装しないとサイズが
0 みたいになったような



432 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 16:38:05 ]
TreeViewのパスってもしかしてスペース入ってると駄目なんすか?


433 名前:430 mailto:sage [2009/01/18(日) 16:56:52 ]
MinimumSizeを指定することにより解決しました

434 名前:412 mailto:sage [2009/01/18(日) 18:54:18 ]
>>422
なるほど。
usingを使えばリソースの解放に関しての記述は必要なくなりますが、
おっしゃるとおりエラーが発生したとき他にも処理がありますね。
ありがとうございました。

435 名前:デフォルトの名無しさん [2009/01/18(日) 22:07:38 ]
InstallUtil.exeを使って作成したサービスをインストールしました。
サービスの管理コンソールより開始を選択するとこのエラーが発生しました。
ローカルコンピュータのService1サービスを開始できません。
エラー3:指定したパスが見つかりません。
切り分けたところ実行ファイルがネットワークドライブに配置されていることが問題のようなのですが、
なぜネットワークドライブだと動作しないのでしょうか?
ちょっとスレ違いでしょうか?
動かない理由が.NET Frameworksのセキュリティ上の理由かもしれないと思いましたので
こちらで質問させていただきました。

436 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 22:09:39 ]
サービスの実行アカウントは? そのアカウントはネットワークドライブへのアクセス権限を持ってる?

437 名前:435 mailto:sage [2009/01/18(日) 22:17:38 ]
アクセス権は問題ないと思います。
テスト的にeveryoneフルコントールを付与しましたが同じでしたので。
そこで.NET Frameworksのセキュリティを疑い出したわけです。

438 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 22:22:35 ]
caspolがそうなってるんだもん

439 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 22:23:11 ]
Local System Account は(基本的に)ネットワークリソースにアクセスできない。
つーか、サービスなら普通にローカルコンピュータ上においとけよ。

440 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 22:25:55 ]
everyoneでもサービスのアカウントがSYSTEMやNETWORKだったら駄目だぞい。
あとは.NETのバージョンだな。3.5SP1か3.0SP2か2.0SP2なら、
ローカルイントラゾーンに限り起動できる。

441 名前:435 mailto:sage [2009/01/18(日) 22:37:30 ]
>>439
もちろんそうなのですが、VSの作業ファイルがネットワークドライブに配置されていますので。
>>440
>>ローカルイントラゾーンに限り起動できる。
こちらは.NET Frameworksのセキュリティ設定でなんとかなりそうです。
>>everyoneでもサービスのアカウントがSYSTEMやNETWORKだったら駄目だぞい
これ知りませんでした。
eveyoneってほんとに何でもと思ってました。
これが原因っぽいですね。

解決できてうれしいです。
今回はビルド後のコマンドでローカルにコピーすることにします。
ありがとうございました。



442 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 22:48:13 ]
シンボリックリンクでローカルディスクにあるように見せかければ
ネットワーク上にあっても大丈夫だったりする

443 名前:435 [2009/01/19(月) 00:14:14 ]
>>442
シンボリックリンクってWindowsでいうところのショートカットですよね?
ショートカットをサービスに登録ってできましたっけ?

ここで質問させてもらいながらWindowsサービス作ってるのですが、
デバッグできなくて困っています。
ビルド→InstallUtil.exeでサービスを実行→サービスコンソールからサービスの開始
→VS2005からアタッチするとよい、ということがヘルプに書いているのですが、
どうもブレークポイントで止まりません。
自分の予想ではサービスに登録した実行ファイルが「\bin\Release」に作成されたもの、
つまりリリースビルドであることが原因と思っています。
デバッグビルドで実行ファイルを作成するにはどうすればよいでしょうか?
「\bin\Debug」に作成されるのかと思ったのですが、アセンブリ名.vshost.exeというファイルがあるだけで見つかりません。

444 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 00:19:21 ]
>>443
442が言っているのは、Vistaで搭載された本物のシンボリックリンクだと思う。

445 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 00:20:58 ]
シンボリックリンクってVistaの新機能じゃなくてNTFSの機能だったと思ったけど。。

446 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 00:33:21 ]
もう一度デバッグビルドし直せよ・・・

447 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 00:35:56 ]
>>445
VistaのNTFSドライバではじめてシンボリックリンクを解釈するようになった、と言えばいいか。

448 名前:435 mailto:sage [2009/01/19(月) 00:38:29 ]
>>446
デバッグビルドってどうやるんでしょうか?(汗
昔はツールバーらへんで都度切り替えてビルドしていた記憶があるのですが、
今使ってるVS2005ではなくなっているみたいなのですが。。
おかしいな、とは思ったのですが今回のように作成物がサービスでなければ
F5キーでブレークポイントで止めれましたし、ビルド内容を変更するようなところも見あたらなかったので
特に意識していなかったのですが。。


449 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 00:40:09 ]
プロジェクトのプロパティでも見てみろよ・・・

450 名前:435 mailto:sage [2009/01/19(月) 00:46:31 ]
>>449
やっぱりそこですよね。
一番に見たのですがどれかわかりません。。
しいて言うなら「アンマネージドコードデバッグを有効にする」
というのがありますが、アンマネージド、なので関係ないように見えますし。。
低レベルな話で申し訳ないです。

451 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 00:49:19 ]
プロジェクトのプロパティ、[ビルド]-[構成]



452 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 00:50:15 ]
ツール→オプション→プロジェクトおよび〜→全般→ビルド構成の詳細を表示

453 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 00:56:32 ]
>>450
あと、やっぱりツールバーにビルド構成のドロップダウンを追加しておいた方がいいよ。

これ2005からデフォではツールバーに表示されなくなったのが個人的には
大いに謎なんだけど。

454 名前:435 mailto:sage [2009/01/19(月) 01:04:00 ]
>>451
すみません、見あたりません。。

>>452
おおお!!
これです!
ビルド構成の詳細を表示、にチェック入れたら
メニュー「ビルド」配下に「構成マネージャー」が表示されるようになり、
ここで切り替えることができました。
これを使うとブレークポイントで止めることができました。
今まで知りませんでした。
ありがとうございます。
しかし、構成マネージャーってオプションでチェック入れないと表示されないんですね。
すごく重要に思えるんですが。
しかし構成マネージャーの規定値がReleaseビルドなので
今までずっとReleaseビルドしてたはずなのですが、
なんで今までサービスアプリケーション作成以外の場合この設定でブレークポイントで止めれてたのでしょうか?






455 名前:435 mailto:sage [2009/01/19(月) 01:07:45 ]
>>453
すみません、書き込み時の時差で見逃しました。
同意です。
昔ツールバーに表示されてましたよね。
あれ?
今ツールバーに追加しようとしたのですが、
選択項目にないのでVS2005では追加できなくないですか?

456 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 01:50:09 ]
できるよ。


457 名前:435 mailto:sage [2009/01/19(月) 02:17:32 ]
>>456
あれ、ほんとですか
ツールバー右クリック→ユーザー設定
→ツールバータブ
の中にそれっぽいのはないので、ここではないですよね?

458 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 04:29:40 ]
Directory.GetDirectoriesでとったディレクトリをForeachしてるんですが、
なぜかExistsがFalseになるフォルダがあります。

最後尾にスペース入ってるそうなるようなんですが、防止する方法ってあるんでしょうか?



459 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 10:54:37 ]
バグっぽい仕様みたいだね。
ディレクトリなら末尾に \ を付加してやるといいみたい

460 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 16:39:11 ]
Visual C# 2008 Express Edition の相談もここでよいのでしょうか?


461 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 16:44:19 ]
それはどうかな



462 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 16:46:38 ]
IDE自体の問題ならVSスレが立ってたはずだが
IDEで作成してるものの質問ならここかもな

463 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 17:49:10 ]
で、質問はなにかね?

464 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 18:09:54 ]
460ではないが質問です。

C#で1つの長い文字列を複数行に分けて書くのってどうしたらいいんでしょう?
C++なら行ごとに""で囲めば、その外で改行していようが1つの文字列になるけど、
同じことをC#でやったら怒られました。

465 名前:464 mailto:sage [2009/01/19(月) 18:12:48 ]
ググったらあっさり見つかったorz
行末に+を書けば良かったのね。

466 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 21:53:00 ]
>>465
string s = @"こんなことも
かけちゃうの
しってる
かい?";

467 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 21:57:29 ]
それとついでだ、これも覚えとけ。
@"" だと改行無視、\エスケープなしな全部
入るヒアドキュメントな感じになる。

string hoge = @"1 行目
2 行目";

string path = @"C:\Program Files\Hoge\hoge.exe";

string foo = @"ダブルクオート「""」はこのように。";


468 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 22:29:06 ]
>>466
それだと複数行文字列になる

469 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 22:30:47 ]
>C++なら行ごとに""で囲めば、その外で改行していようが1つの文字列になる

これはどうかと

470 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 23:09:25 ]
Cには文字列の+演算子なんて無いから "abc" + "def" と書けなくて
文字列リテラルの連結は "abc" "def" みたいに書くからね。

C#にもその書き方を残しても良かったと思うが、+演算子を強要した方が
意図が明確でいいか。

471 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 23:10:55 ]
どうかと、って何だ?当然のことだが…



472 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 23:11:44 ]
行ごとでなくてもいいな。

473 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 01:32:52 ]
トライグラフに困って""で切ったり「したっけなw

474 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 06:48:39 ]
>>468
ならないよ

475 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 10:48:42 ]
>>467
> string hoge = @"1 行目
> 2 行目";
これだと「目」と「2」の間にある改行文字もhogeに含まれるから
>>464のニーズには応えられないんじゃない?

476 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 22:11:58 ]
用途にもよるんじゃないかな。



477 名前:デフォルトの名無しさん [2009/01/21(水) 01:55:36 ]
次のコードの意味がわからなくて悩んでいます。
1:EventLogPermission e = new EventLogPermission(PermissionState.Unrestricted);
2:e.PermitOnly();

ヘルプにかかれていることを自分的に以下のように解釈しました。

1で後で利用するセキュリティ制御のためのインスタンスを作成します。
2で規定のアクセス権のコンストラクタの引数で指定されたもののみでしか
アクセスできないように縛りをかけます。
今回のケースでは「PermissionState.Unrestricted」が指定されているので
.NET Frameworksのセキュリティ設定でフルアクセスの場合、
さらにフルアクセスの縛りを追加する形になり、結局セキュリティレベルは変わらない、と解釈しました。

ですがこのコードの後にイベントのアイテムを読み取るコードを書くと
アクセス許可でエラーが発生してしまいます。

意図した結果と違うので自分が勘違いしていると思うのですが
どの辺がおかしいでしょうか。

478 名前:デフォルトの名無しさん [2009/01/21(水) 02:49:00 ]
C#が.NET Frameworkでなければならない理由って何なの?
むしろBorlandDelphiVCLみたいな感じのほうがよかったんじゃないの?
Linux版の.NET Frameworkが普及すればLinuxの利用者が増えて
Windowsの売り上げが下がるよね。
おそらくWindowsはカーネルごと新しくなることが
あるからそれを意識してるんだと思う。
つまりXPとVistaをMacやLinuxと同じように
まったく別のOSと捉えているってことだよね。
正解でしょ?

479 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 07:11:57 ]
ぜんぜん違うだろw

480 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 07:32:57 ]
>>478
お前は何を言っているんだ

481 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 07:36:30 ]
>>478
前後のつながりがまったくない



482 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 07:47:54 ]
違うにも甚だしい

483 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 08:36:25 ]
>>477
その考えであってると思うけど、別に原因があるのでは。
再現性のあるコードアップしてくれたら調べるよ。

484 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 08:48:43 ]
>>478
一行目から間違ってるだろw

485 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 14:51:15 ]
むしろ生まれてきたこと自体間違い

486 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 15:50:14 ]
生まれてすみません

487 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 16:13:51 ]
俺もすいません

488 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 16:16:51 ]
お父さん、お母さん、生んでくれてありがとう。

489 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 16:55:17 ]
>>478
> カーネルごと新しくなること
それは結構当たっていると思う。
ただし、XPとVistaではなく、x86とx64とIA-64とMobile/CE系各種のようなアーキテクチャの違い。

490 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 17:00:52 ]
.NETはActivXやCOMの延長線上のものなんだっけか?

491 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 17:32:12 ]
VS2010のMEF標準搭載で、やっとCOMが.NETで置き換わりそうな雰囲気になってきたな



492 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 18:36:30 ]
MEFって何よ

493 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:00:56 ]
Managed Extensibility Framework
マネージコードでプラグイン書けるようにするための新しい.NETのライブラリ
VS2010にも使用される

494 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:18:37 ]
これはうれしいよね






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<126KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef