トップページ⇒tech
1001コメント281KB

ふらっとC#,C♯,C#(初心者用) Part35

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2008/12/17(水) 22:17:18
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
0002デフォルトの名無しさん2008/12/17(水) 22:19:01
C#, C♯, C#相談室 Part49
http://pc11.2ch.net/test/read.cgi/tech/1224754660/

WPF(XAML,XBAP,.NET3.5)GUIプログラミング
http://pc11.2ch.net/test/read.cgi/tech/1211453941/

Live3
http://pc11.2ch.net/test/read.cgi/tech/1221395634/

初心者のためのプログラミング言語ガイド Part12
http://pc11.2ch.net/test/read.cgi/tech/1226761546/
0003デフォルトの名無しさん2008/12/17(水) 22:19:32
参考サイト。まずはここで検索してから。
http://www.google.co.jp/
http://msdn.microsoft.com/ja-jp/library/default.aspx
http://homepage3.nifty.com/midori_no_bike/CS/
http://www.atmarkit.co.jp/fdotnet/dotnettips/index/index.html
http://dobon.net/vb/dotnet/
http://jeanne.wankuma.com/tips/
http://www.labasp.net/CsharpNote/
0004デフォルトの名無しさん2008/12/17(水) 22:20:18
前スレ
ふらっとC#,C♯,C#(初心者用) Part34
http://pc11.2ch.net/test/read.cgi/tech/1227521785/
0005デフォルトの名無しさん2008/12/17(水) 22:22:09
>>1乙
0006デフォルトの名無しさん2008/12/17(水) 22:24:01
>>3がわかってるならなんで993はあんなくだらない質問をしたのか
0007デフォルトの名無しさん2008/12/17(水) 22:25:16
大文字の使い方にVB臭が
0008デフォルトの名無しさん2008/12/17(水) 22:25:18
ナイスガッツ>>1乙
0009デフォルトの名無しさん2008/12/17(水) 22:28:45
for(int i=0;i<回数;i++){
try
{
なんやかや;
break;
}
catch{ なんやかや; }
finally{ なんやかや; }
}

こんなんでいいんじゃね
0010前スレ9932008/12/17(水) 22:40:39
>>6
昨日から調べてるんですが有効な情報を見つけられなかったので。

>>9
ありがとうございます。
WebRequestやらFileStreamを何度も作るのは嫌ですが
ループで括るのが簡単ですよね。

throwの使い方がいまいちよくわからないのですが
この場合に利用することはできないでしょうか?
0011デフォルトの名無しさん2008/12/17(水) 22:46:40
gotoといい,テンプレ的質問だねw
「例外は本当に例外的なときに使うものであって普通の制御に使ってはいけない」
0012デフォルトの名無しさん2008/12/17(水) 22:50:10
>WebRequestやらFileStreamを何度も作るのは嫌ですが
え?
0013デフォルトの名無しさん2008/12/17(水) 22:57:02
おまいら見事なスレタイをつけてくれた993さんなんだから
もっと優しく教えてやれよ
0014デフォルトの名無しさん2008/12/17(水) 23:00:23
なんで?
0015デフォルトの名無しさん2008/12/17(水) 23:06:33
良く見かける機能で
エクスプローラの空白部分をダブルクリックすると
上の階層に上がると言うのがありますが
どうやったらできるのでしょうか?
0016前スレ9932008/12/17(水) 23:16:09
>>11
ごめんなさい。

>>13
なにかおかしいところがありましたか?
0017デフォルトの名無しさん2008/12/17(水) 23:21:10
>>15
ちょっとプログラム名を挙げてみて
0018デフォルトの名無しさん2008/12/17(水) 23:23:28
>>15
ランチャーソフトで言えば
Clock Launcherとかに搭載されてます。
0019デフォルトの名無しさん2008/12/17(水) 23:23:40

Color ActiveColor = Color.Gray;
int intARGB = (int)(ActiveColor.ToArgb);

こうやると、
エラー: メソッド グループ 'ToArgb' を非デリゲート型 'int' に変換することはできません。
     このメソッドを呼び出すことはできません。
となりました。単純にint型の値で受けて、数値を変更してから
使いたいのですが、どのようにしたらよいでしょうか。
0020152008/12/17(水) 23:24:03
ごめんなさい。

>>18でした。
0021デフォルトの名無しさん2008/12/17(水) 23:26:35
>>19
メソッド呼び出しに()は必須
0022デフォルトの名無しさん2008/12/17(水) 23:29:02
>>21
そうだったのですか!!
わかりました、やってみたら確かに解決しました。
ありがとうございました!!
0023デフォルトの名無しさん2008/12/17(水) 23:37:12
>>19
ランチャーか…メッセージフック臭いなあ

本当にメッセージフックだとC#から手が出ないんだよね
DLLにできないから
0024デフォルトの名無しさん2008/12/17(水) 23:40:16
前スレ>>994
> なんだか分かりませんが
> 元コードのほうは正規表現つかってんじゃない?
> C#のほうは単純にstringを置換してるだけっしょ?
> Regexクラス使わないと駄目じゃん

前スレ>>1000
> buffer.Replace("\n", @"\X0e");
>
> は何もしてないよ。戻り値捨ててるやん
> stringクラスは不変だからね


すっかり忘れてましたorz・・・

ご指摘ありがとうございます(´・ω・`)
0025152008/12/17(水) 23:52:55
>>23

メッセージフックと言うのですね。
なんか難しそう・・・・
他に方法あったら知りたいですが・・・

ちょっとメッセージフックについて調べてみます。
0026前スレ:9912008/12/18(木) 00:50:12
前スレ991のコピーです

C#で簡単なデーターベースを扱いたい場合は何を使うのが一般的ですか?

用途は、ファイルにタグ付けみたいなことをしたいのです。
あらかじめファイルのリストを登録しておいて(1000アイテムぐらい)、
〜タグが付いているファイルを列挙するのが主な目的です。
# えっちな画像をタグ管理するソフトだと思っていただいても構いません

ちなみにデーターベースの経験全く持ってゼロです
(遙か昔、DelphiからBDE経由でParadoxDBのデータベースをちょっと触ったことぐらいしかありません)

規模としてはテーブル一つあたり1000〜4000項目 位を登録する予定です。
また、画像用、音楽用とテーブルを用意するつもりですが、
一つのテーブルにまとめて 画像タグ、音楽タグ などをつけた方が良いでしょうか?
(そうすると 3万近くの項目を扱わなければなりません)

データーベースサーバを必要としないシステムが良いです。
また、友人にソフトウェアを渡す場合もあり得るので、出来るだけ単体で配布できるものが良いです。

この用途で一番お手軽な方法は何でしょう?
SQLite(一応追加で入れてみた)? SQL Server Compact ?
0027デフォルトの名無しさん2008/12/18(木) 01:16:07
SQL Server Compactで問題ないと思う。
配布方法はこちらが参考になる
http://msdn.microsoft.com/ja-jp/library/aa983326.aspx

SQLite(System.Data.SQLite)を使いたいなら、そちらでも可
0028デフォルトの名無しさん2008/12/18(木) 01:28:04
VisualStudio2005 でプログラムを作っています。
c#でexcelを操作するプログラムを作りたいのですがテンプレのサイト等を参考にしたのですがよくわからなかったのでこちらに書き込ませていただきました
知りたいことは

1・console アプリケーションでexcelの操作はできるのか
2・できる場合、必要な初期設定についてどうすればいいのか
(プロジェクト→参照→COM→officeなんちゃらの参照でいいのならばusingについてから教えてください)
3・プログラム内で作成した3種類の数値をexcelに渡し折れ線グラフを作成する。
4・プログラム内ではfor文で約1000回データを作成するので1000個分のグラフを作り、保存したい

以上の4つです。よろしくお願いいたします。

0029デフォルトの名無しさん2008/12/18(木) 01:32:54
なんかVBAでも使った方が簡た(ry
0030デフォルトの名無しさん2008/12/18(木) 02:24:17
>>27
サンクス
0031デフォルトの名無しさん2008/12/18(木) 02:54:10
>4・プログラム内ではfor文で約1000回データを作成するので1000個分のグラフを作り、保存したい
終わりませんw
0032デフォルトの名無しさん2008/12/18(木) 02:54:53
>>26
別にいいけどmdbでも全然大丈夫じゃね?
0033デフォルトの名無しさん2008/12/18(木) 05:57:11
解説サイト読んでもイマイチよく分からないんだけどデリゲートって結局何やってるの?
javascriptで
obj.hoge = function hogefunc() { 〜〜 }
とかこれと同じようなイメージ持ったんだけどこんな認識でいいの?
0034デフォルトの名無しさん2008/12/18(木) 06:12:43
うん
0035デフォルトの名無しさん2008/12/18(木) 06:16:09
ありがとう
そういう前提で解説サイトのデリゲートの項目を読めば理解が進みそうだ
0036デフォルトの名無しさん2008/12/18(木) 07:35:55
Rubyのブロック構文とかClosureと同じようなもんでしょ?違う?
0037デフォルトの名無しさん2008/12/18(木) 08:03:49
Rubyは触ったことないんで…すまぬ、すまぬ…
0038デフォルトの名無しさん2008/12/18(木) 17:28:50
メニューストリップアイテムのセパレータの上をマウスが通過する時にフォーカスがドロップダウンの一番上に戻されるんですが何が原因か全く不明
バグか?
0039デフォルトの名無しさん2008/12/18(木) 18:05:55
そりゃバグでしょうよ。
あなたの書いたコードのね
0040デフォルトの名無しさん2008/12/18(木) 18:31:36
フォームエディタの話なら確かに怪しい挙動してるな。
メニューにText入力してる時に勝手に決定されたりフォーカス外れたりとか。
0041デフォルトの名無しさん2008/12/18(木) 19:39:25
tryやcatchで{}が省略できないのは何故ですか?
0042デフォルトの名無しさん2008/12/18(木) 19:42:57
Windowsアプリで、メッセージが来るまで効率よくかつ反応よく待機するには
MsgWaitForMultipleObjectsだったかを呼び出すしかないですかね?
メッセージが来るまでただ待ちたいだけです。

これってフォームアプリから呼び出すのに特に注意事項とかありますかね?

ネイティブの世界に明るくないので問題あるのかよく分からない。
マネージドな世界だけで出来ればそれにこしたことはないんですが、ちょっと無理そうで…

0043デフォルトの名無しさん2008/12/18(木) 19:51:24
>>41
catchを使わないtryの意味って何すか?
0044デフォルトの名無しさん2008/12/18(木) 20:02:55
try
 Hoge();
catch (HogeException e)
throw e;
みたいな感じで書きたいんでしょ
できてもおかしくはないな
>>43 finally
0045デフォルトの名無しさん2008/12/18(木) 20:12:57
tryはブロックだからな
0046デフォルトの名無しさん2008/12/18(木) 21:35:50
if
else if
...
else if
else
と
try
catch()
...
catch()
finally
は似てるよね的な感じか。
0047デフォルトの名無しさん2008/12/18(木) 22:24:58
C#で作ったソフトって
メモリ使用量が多く見えるのですが?

どうなんですかね?
0048デフォルトの名無しさん2008/12/18(木) 22:30:20
仮にもプログラマならタスクマネージャなんかに頼るなよ
あの表示を減らすだけならウインドウを最小化したりSetProcessWorkingSetSizeを呼び出したりすれば
簡単に減らせる
0049デフォルトの名無しさん2008/12/18(木) 22:38:10
1Gも2Gも4Gもメモリつみながら数十M程度のメモリ使用量でもぎゃンぎゃン言われる風潮は何なんだろうな
0050デフォルトの名無しさん2008/12/18(木) 23:06:52
form1.Opacity = Convert.ToDouble(domainUpDown1.Text);

コンパイルはできるけどエラーがでる。
なぜなんだろうか?
0051デフォルトの名無しさん2008/12/18(木) 23:10:50
何のエラーかいちいち聞かないといかんのか・・
0052デフォルトの名無しさん2008/12/18(木) 23:12:58
domainUpDown1.Textがdoubleの数値を表す書式になってないんじゃないの
0053デフォルトの名無しさん2008/12/18(木) 23:15:41
>>50
http://msdn.microsoft.com/ja-jp/library/system.convert(VS.80).aspx
0054502008/12/18(木) 23:23:35
わかりました。
ちょっと考えます。
0055デフォルトの名無しさん2008/12/18(木) 23:59:52
>>47
ソフト自体のメモリ使用量じゃないよそれ。
ガベコレはいったん多めにメモリ取っておいた方が実行効率いいんだし。
0056デフォルトの名無しさん2008/12/19(金) 00:51:20
50MBくらいの画像に対して画像処理するプログラム作ってますが
途中でメモリが足りないというエラーが出て落ちます。
メモリは3GB積んでいるのでそうかんたんになくならないはずなんですが。



↓こんなプログラムです

for(int i=0;i<画像の枚数;i++)
{
  Bitmap bmp = new Bitmap();
  //↓ここで画像処理

  //↑
  bmp.Dispose();
  GC.collect();
}

どの画像に対してやってもループ2〜3回目で落ちてしまいます。
ガベコレしてもメモリの空き容量が全然増えないのがなぞです。
アドバイスお願いします。
0057デフォルトの名無しさん2008/12/19(金) 00:56:10
Disposeが重要で,GCは全く関係ないよ
GC.Collectは無くても変わらない
ここで画像処理 の中にリソースの掴みっぱなしがあるとか
0058デフォルトの名無しさん2008/12/19(金) 01:03:30
GCは不要なんですか
ちなみに↓こうするとなぜか問題なく動きます

for(int i=0;i<画像の枚数;i++)
{
  Bitmap bmp = new Bitmap();
  //↓ここで画像処理

  //↑
  bmp.Dispose();
  GC.collect();
  MessageBox.Show("プギャー");//←これを挿入
}

タスクマネージャーでメモリ量を監視していると
メッセージボックスを表示させた瞬間にメモリ量が
いっきに減ります
不思議でしょうがないです(・・;)
0059デフォルトの名無しさん2008/12/19(金) 01:05:38
似たようなプログラム作って数万枚の画像を処理してるけど
512MBのメモリが足りなくなったことなんてないな
DisposeのタイミングはCLR依存のはずだからDisposeしたら
すぐに解放されるわけではないよ
0060デフォルトの名無しさん2008/12/19(金) 01:36:21
その画像処理ってのがクサイにきまってんじゃん
0061デフォルトの名無しさん2008/12/19(金) 02:01:52
>>42
WinFormsのメッセージループをMsgWaitForMultipleObjectsで置き換えるのか。

たとえ今上手く動いても、.NetFrameworkの実装が変わって動かなくなる可能性もあるし
俺なら怖くてできないな。

> マネージドな世界だけで出来ればそれにこしたことはないんですが、ちょっと無理そうで…

別スレッドで WaitHandle.WaitAny で待機して、
シグナル状態になったら、UIスレッドにメッセージを送信するんじゃダメなほどの効率が必要なの?
0062デフォルトの名無しさん2008/12/19(金) 09:02:58
>>59
> DisposeのタイミングはCLR依存のはずだからDisposeしたら
> すぐに解放されるわけではないよ
そんなわけないだろ何のためのDisposeだよ
Disposeのタイミング→GCのタイミングならわかるけどこの場合GCは関係ない
0063デフォルトの名無しさん2008/12/19(金) 10:25:01
C#とJAVA、
どっちがカンタン?
0064デフォルトの名無しさん2008/12/19(金) 10:32:23
言語のレベルでは大差ない
0065デフォルトの名無しさん2008/12/19(金) 10:50:27
C#のほうが構文多いけど
よく使う範囲では大体同じ
0066デフォルトの名無しさん2008/12/19(金) 11:10:53
初心者が学び始めて
すぐに使えるようになるのはどっち?
0067デフォルトの名無しさん2008/12/19(金) 11:12:55
個人的にはC#

窓アプリ以外は
0068デフォルトの名無しさん2008/12/19(金) 11:18:38
使うって何に使うのよって話
0069デフォルトの名無しさん2008/12/19(金) 11:21:37
ナンパに使います
0070デフォルトの名無しさん2008/12/19(金) 11:49:53
C#はVSのインストールだけで環境が整うのが大きい
0071デフォルトの名無しさん2008/12/19(金) 16:36:50
foreach (DataRow dr in ds.Tables[1].Rows)
{
listView1.Items.AddRange((ListViewItem[])dr.ItemArray); // ←どうやってキャストしたら良いでしょうか?
}
0072デフォルトの名無しさん2008/12/19(金) 16:48:13
キャストは無理 継承関係もないしキャスト演算のオーバーロードもないからな
Enumerable.SelectからToArrayするか、素直にListViewItem[]をnewしてfor回して一つずつ代入
0073デフォルトの名無しさん2008/12/19(金) 17:53:52
いくつかのコンポーネントが配置されたFlowLayoutPanelに、追加でコンポーネントを挿入する
方法を教えて下さい。
http://msdn.microsoft.com/ja-jp/library/z9w7ek2f(VS.80).aspx
を読むと、挿入したいコンポーネントを選んでマウスを持ってくると、挿入バーが
表示されるように書いてありますが、それらしいものが表示されません。

もしくは最後尾に追加したコンポーネントを移動させたいのですが、他のコンポーネントが
移動してくれません。何か設定とか有りますでしょうか?
0074デフォルトの名無しさん2008/12/19(金) 18:29:16
>>72
わかりました
ありがとうございます
0075デフォルトの名無しさん2008/12/19(金) 23:47:38
C#のプログラムをネイティブコードのexeにしたら実行速度はどのくらい変わりますか?
0076デフォルトの名無しさん2008/12/19(金) 23:49:14
やってることが同じなら原理的に変わらない
0077デフォルトの名無しさん2008/12/20(土) 00:51:39
>>73
俺も仕方無いので、最後尾に入れてから挿入したいところ以降のコンポーネントを全部
移動させたりしてる。こんなはず無いよね。
0078デフォルトの名無しさん2008/12/20(土) 02:25:18
>>73
ttp://www.uploda.org/uporg1868478.png

s/コンポーネント/コントロール/だとして、こういうことがしたいということだよな?
てか、書いてる通りにやったら普通に出来たけど

>>73の記述が若干怪しいけど、ちゃんとドラッグ&ドロップしてるよな?
0079デフォルトの名無しさん2008/12/20(土) 07:53:57
非同期アクセスに対応したListやDictionaryクラスは
用意されていないでしょうか?
0080デフォルトの名無しさん2008/12/20(土) 09:36:46
>>79
たぶんないから SyncRoot を取得して lock
0081732008/12/20(土) 11:32:02
>>78
あああ〜、その通りです。
ドラッグするのですね。
ツールボックスでクリックしてカーソルを持って行っても黒線は出ないのですね。
配置済みのボタンを移動させても黒線が出ますね。
実際にやりたいのは、配置各種設定済のパネルを移動させたいのですが、それだと
なぜかどこへ持っていっても黒線が出なくて困っています。
でも、ボタンで実際の動きが分かったので、パネル側の設定か何かの問題で黒線が
状態になってるかも知れないのでいろいろ試してみます。
ありがとうございました。
0082デフォルトの名無しさん2008/12/20(土) 20:04:01
散々使ってるメソッドのパラメータを後で増やすと書き換えるのが大変ですが何か対策方法はありますか?
0083デフォルトの名無しさん2008/12/20(土) 20:12:48
>>82
・オーバーロード
・引数専用の型を作る(ex. EventArgs)
0084デフォルトの名無しさん2008/12/20(土) 20:32:20
いつの間にか修正来てるね

[FIX] Microsoft Visual Studio 2008 Service Pack 1 の英語以外の言語バージョンをインストールした後、
ローカライズされた一部の IntelliSense テキストが英語に戻ることがある

http://support.microsoft.com/kb/957507
0085デフォルトの名無しさん2008/12/20(土) 21:00:04
>>84
http://pc11.2ch.net/test/read.cgi/tech/1226134233/401
0086デフォルトの名無しさん2008/12/20(土) 23:11:46
プログラム初心者で、Windowsでのプログラミングはほぼ初めてです。

とある人が公開してるアプリケーションで、プロジェクト一式も公開されているものがあります。
その中には
hoge.csproj
hoge.sln
hoge.suo
hoge.config
AssemblyInfo.cs
[image]フォルダ
と、dllファイルが複数ありました。こちらでそのプログラムがいじれるのかと思っていましたが、
各種csファイルが含まれていないので無理なようでした。
ここに含まれていたdllだけでも使用したいのですが、dllファイルをみれば
そのdllファイルの使い方などが分かるものなのでしょうか?
どうググれば、その方法がわかるでしょうか?

C#の質問ではないとは思いますが、これを機にC#覚えようかと思っています。
よろしければご教授ください。
0087デフォルトの名無しさん2008/12/20(土) 23:19:46
>>86
そもそも、そのDLLの使用は許可されているの?
普通は人が使う事を想定しているのなら、ソースコードなりドキュメントなりが公開されていると思うのだが
0088デフォルトの名無しさん2008/12/21(日) 00:57:42
今作っているプロジェクトをコピーしておいて
それをベースにした新しいプロジェクトを作りたいとき
どうすればいいですか?
0089デフォルトの名無しさん2008/12/21(日) 01:00:36
>>88
今作っているプロジェクトを丸ごとコピーしてそれをベースして作ればいい
0090デフォルトの名無しさん2008/12/21(日) 09:49:31
RGBで反対の色を簡単に取得する方法はありますか?
0091デフォルトの名無しさん2008/12/21(日) 10:00:10
「反対の色」を定義したまえ
0092デフォルトの名無しさん2008/12/21(日) 10:12:54
白←→黒であります
0093デフォルトの名無しさん2008/12/21(日) 11:18:35
前にも見たなぁ。定義を出せと言われて例しか出せない奴。
仮に、それが例ではなく定義と言うならこんなコードになるんだぜ?

switch(色)
{
 case 黒:
  return 白;
 case 白:
  return 黒;
 default:
  throw new ArgumentOutOfRangeException();
}
0094デフォルトの名無しさん2008/12/21(日) 11:38:46
ワロタ
緑の反対は紫でいいのかね?
0095デフォルトの名無しさん2008/12/21(日) 11:45:39
反対って color ^ 0xFFFFFF のことか?
0096デフォルトの名無しさん2008/12/21(日) 11:53:25
>>90
補色のことでしょ。補色って言葉を知らなくてもネガって言えばいいのに。
Color構造体からRGBの各値は取得できるんだから、それらの1の補数から
FromArgb()するだけじゃないのか?
0097デフォルトの名無しさん2008/12/21(日) 11:55:00
ダイアログ系コントロールに漏れなく付いてくるヘルプボタンを消す裏ワザを教えてください
0098デフォルトの名無しさん2008/12/21(日) 12:55:48
SetWindowLongPtr
0099デフォルトの名無しさん2008/12/21(日) 15:06:44
灰色の補色は?
0100デフォルトの名無しさん2008/12/21(日) 15:19:44
こんにちは
今までプログラミングの経験は皆無だったのですが、javarcript→C#と勉強をしています。
ほぼ独学なのですが、いい勉強法がありますでしょうか?
今は例題が載った参考書を買ってサンプルを組み立てつつ理解を深めるという形をとっています。
皆さんのご意見をお願いします。
0101デフォルトの名無しさん2008/12/21(日) 15:25:47
そういうサンプルを作るような学習は意味ない
自分の作りたいソフトを試行錯誤しながら作るのが一番
■ このスレッドは過去ログ倉庫に格納されています