ふらっとC♯, C#(初心者用) Part17
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/06/27(水) 21:56:21「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
前スレ: ふらっとC♯, C#(初心者用) Part16
http://pc11.2ch.net/test/read.cgi/tech/1179313212/
0002デフォルトの名無しさん
2007/06/27(水) 21:57:57http://forums.microsoft.com/msdn-ja/ShowForum.aspx?ForumID=187&SiteID=7
Visual Studio ユーザーグループ
http://vsug.jp/
@IT Insider.NET
http://www.atmarkit.co.jp/fdotnet/index.html
Insider.NET 会議室 ディレクトリ
http://www.atmarkit.co.jp/fdotnet/index/bbs/index.html
宇宙仮面の C# プログラミング / C# Programming
http://ukamen.hp.infoseek.co.jp/
WisdomSoft C#入門
http://wisdom.sakura.ne.jp/programming/cs/index.html
WisdomSoft Microsoft .NET入門
http://black.sakura.ne.jp/~third/system/msnet/msnet.html
どっとねっとふぁん
http://dotnetfan.org/
緑のバイク 初めてのC# 〜 覚え書き 〜
http://homepage3.nifty.com/midori_no_bike/CS/
どぼん!の .NET Tips
http://dobon.net/vb/dotnet/
.NET のつぼ
http://park16.wakwak.com/~mimi/dotnet/top.html
0003デフォルトの名無しさん
2007/06/27(水) 21:58:220004デフォルトの名無しさん
2007/06/27(水) 21:58:40http://www.borland.com/jp/products/csharpbuilder/index.html
Turbo C#
http://www.turboexplorer.com/csharp
.NET Framework 1.1 製品ドキュメント
http://www.microsoft.com/japan/msdn/library/ja/netstart/html/sdkstart.asp
0005デフォルトの名無しさん
2007/06/27(水) 22:01:060006デフォルトの名無しさん
2007/06/27(水) 22:02:43【質問をする皆さんへ。】
回答する人たちはあなたのパソコンに前にいるわけではありません。
画像や、なるべく分かりやすく書いてください。
「起動しないんですけどどうしたらいいんでしょう」や「〜が使えないんですけどどうしたらいいですか?」
といった曖昧な質問では、回答者もどう回答したらいいか分かりません。
箇条がきにするなどの工夫をすると回答は早くもらえるようです。
0007デフォルトの名無しさん
2007/06/27(水) 22:08:18c# は C でも C++ でもありません。
速やかに該当スレへ移動願います。
くだすれC言語(初心者用) Part.2
http://pc11.2ch.net/test/read.cgi/tech/1172099763/
くだすれVisual C++(超初心者用)その5
http://pc11.2ch.net/test/read.cgi/tech/1181181665/
0008デフォルトの名無しさん
2007/06/27(水) 23:07:410009デフォルトの名無しさん
2007/06/27(水) 23:11:300010デフォルトの名無しさん
2007/06/27(水) 23:18:470011デフォルトの名無しさん
2007/06/28(木) 05:29:29> ええとつまり
>
> if(A || B) は まずAを評価して OKでなければBを評価
> if(A | B) はAがOKでもBを評価ってことか?
>
> つか後者はどういうときに使うのか想像できない漏れがいる
Bが副作用のあるメソッドだと両者の間に違いが出る。
そうでなければ実行性能以外の差はない。
0012デフォルトの名無しさん
2007/06/28(木) 07:30:46わかりにくくなるから多少面倒でもBを外に出して||演算子で書くべきだと思う
もともと条件文で使うための演算子じゃないんだろうし
0013デフォルトの名無しさん
2007/06/28(木) 09:51:560014デフォルトの名無しさん
2007/06/28(木) 18:38:25他人が作ったUserControlを使用しているのですが、内部でControl.Clickイベントを
使用しているコントロールがあるみたいなのですが、
UserControlををEnable = falseにすること以外で根本的にControl.Clickイベントを
発生させないようにするにはどうしたらいいでしょうか?
Control.DrawToBitmapも試したのですが、うまくImageを生成できなかったので困ってます orz
0015デフォルトの名無しさん
2007/06/28(木) 18:50:42protected override void OnClick(EventArgs e)
{
if (Enabled) base.OnClick(e);
}
試してないからうまく行くかは知らん
001615
2007/06/28(木) 18:51:30if (...の行は不要
001714
2007/06/28(木) 19:04:19protected override void OnClick(EventArgs e) { }
としてもClickイベントは発生してしまいます orz
多分、UserControlのClickイベントは殺せても、その上に乗っかっている
Labelなどの類のClickイベントは殺せてないからだと思います・・・
0018デフォルトの名無しさん
2007/06/28(木) 19:20:52ってどういうこと?
001914
2007/06/28(木) 19:41:06//他の人が作ったUserControl
class Test : UserControl
{
public Test()
{
label.Click += new EventHandler(label_Click);
this.Controls.Add(label);
}
Label label = new Label();
void label_Click(object sender, EventArgs e)
{
MessageBox.Show("Click");
this.OnClick(e);
}
}
という感じなのですが、これのvoid label_Click(object sender, EventArgs e)を
殺すにはどうしたらいいでしょうか、ということです。
0020デフォルトの名無しさん
2007/06/28(木) 20:10:560021デフォルトの名無しさん
2007/06/28(木) 20:44:31基本的に不可。
それがOOP
>としてもClickイベントは発生してしまいます
当たり前。
イベントとイベントハンドラは別物。
0022デフォルトの名無しさん
2007/06/28(木) 20:49:080023デフォルトの名無しさん
2007/06/28(木) 20:52:060024デフォルトの名無しさん
2007/06/28(木) 20:54:58やっぱり無理ですか…
DrawToBitmapがうまくいけばなぁ orz
0025デフォルトの名無しさん
2007/06/28(木) 21:05:210026デフォルトの名無しさん
2007/06/28(木) 22:51:52userControl1.Controls.Remove(oldLabel);
Label newLabel = new Label();
newLabel.Text = oldLabel.Text;//設定を移す(ほんとはもっと細かく)
newLabel.Bounds = oldLabel.Bounds;
userControl1.Controls.Add(newLabel);
後で内部で触られないコントロール限定なら、かなり無理矢理だけどこれでいける
0027デフォルトの名無しさん
2007/06/28(木) 23:38:14Dictionaryを使っています。本末転倒なのかもしれませんが、
value から keyを参照したい場合があります。
⇒普通にkeyからvalueを参照することもあります。
仕様を見る限り逆引きするためのメンバはない様です。
こんな場合、Dictionaryを使うのはNGでしょうか?
それとも自分で拡張するものなのでしょうか?
⇒DictionaryBase というクラスがありますが、これから自前で実装する?
よろしくお願いします。
0028デフォルトの名無しさん
2007/06/28(木) 23:45:240029デフォルトの名無しさん
2007/06/28(木) 23:49:39そのものづばりでした。ありがとうございました。
0030デフォルトの名無しさん
2007/06/29(金) 00:43:03待て
MSDNにも書いてあるがソートされてないデータ列を順に入れてったらO(N^2)かかるぞ
それによく調べてないけどvalue=>keyの参照もO(N)かかるんじゃないの?
まあNが一桁しかないとかならいいけど。
Nが大きいならDictionaryを二つ使え
0031デフォルトの名無しさん
2007/06/29(金) 01:41:450032デフォルトの名無しさん
2007/06/29(金) 02:21:280033デフォルトの名無しさん
2007/06/29(金) 03:10:22もし一意じゃないんなら何も考えずにDictionary<TValue,List<TKey>>にすればいい
0034デフォルトの名無しさん
2007/06/29(金) 09:55:12なるほど、オーダーってのありましたね。
昔、アルゴリズムの所で習った様な。
今回、データは3桁位あるので良く考えます。
valueは重複しないのですが、今まで未チェックでした。
怪しいプログラムですね。。。
もう少し、練り直します。
参考になりました。ありがとうございました。
0035デフォルトの名無しさん
2007/06/29(金) 10:44:280036デフォルトの名無しさん
2007/06/29(金) 12:09:49将来的なことなどを考えて、データベース的に扱いたいと思っています。
が、できればデータベースソフトを使わずに.NETだけで完結させたいのですが
可能でしょうか?
超初歩的な質問ですいません。
0037デフォルトの名無しさん
2007/06/29(金) 12:16:57全部自前でもcsvのドライバでもいいけど
csvにこだわらないならSQLiteがいいと思うなあ。
0038デフォルトの名無しさん
2007/06/29(金) 12:19:46CSVで間に合うんだったら壊れることもないだろうし
0039デフォルトの名無しさん
2007/06/29(金) 12:22:47SQLiteですか。やっぱり外部データベースを使わないとできないんでしょうかね?
csvにはこだわっていません。もらうデータがcsvなのでそれを取り込んでの処理をします。
そのさいこちらではSQLを使いたいのでデータベース的にプログラムしたいと思いました。
ですから自前でcsvを扱うようなクラスをつくるのはちょっとwと思いまして。
DB関連コンポーネント等でそういうことはできないものかなと思いまして。
0040デフォルトの名無しさん
2007/06/29(金) 12:29:23賢いデータファイルマネージャって感じでつこてる。
0041デフォルトの名無しさん
2007/06/29(金) 12:30:52が、やったことないので速度は知らない
0042デフォルトの名無しさん
2007/06/29(金) 12:48:37その辺をちょっとあたってみます。
0043デフォルトの名無しさん
2007/07/01(日) 09:47:480044デフォルトの名無しさん
2007/07/01(日) 09:53:040045デフォルトの名無しさん
2007/07/01(日) 10:40:35string.Substring()
0046デフォルトの名無しさん
2007/07/01(日) 10:41:440047デフォルトの名無しさん
2007/07/01(日) 11:33:38下らない揚げ足取りをして楽しい?
0048デフォルトの名無しさん
2007/07/01(日) 11:52:200049デフォルトの名無しさん
2007/07/01(日) 11:53:100050デフォルトの名無しさん
2007/07/01(日) 12:36:570051デフォルトの名無しさん
2007/07/01(日) 21:13:18プロジェクトの中に.pfxという拡張子のファイルがあるんですが、
これはどんな働きをしているのでしょうか?
検索してもよく分からなかったのですが、ClickOnceと関係がありますか?
0052デフォルトの名無しさん
2007/07/01(日) 21:18:140053デフォルトの名無しさん
2007/07/01(日) 22:11:040054デフォルトの名無しさん
2007/07/02(月) 00:12:17動的に確保した配列に追加でデータを入れたくて
以下のようなコードを書きましたが、※1でエラーが出ます。
VC#では※1の処理をどのように置き換えればいいのでしょうか。
string[] _files = (string[])e.Data.GetData(DataFormats.FileDrop);
if ( fileNameNum > 0 ) {
delete[] fileName; // ※1
}
fileNameNum += _files.Length;
fileName = new string[fileNameNum + 1];
0055デフォルトの名無しさん
2007/07/02(月) 00:14:280056デフォルトの名無しさん
2007/07/02(月) 00:35:33ありがとうございました。
0057デフォルトの名無しさん
2007/07/02(月) 02:53:24コーディングする前に最低限基本的な言語概要は
押さえておいたほうがいいとおもうぞ。
0058デフォルトの名無しさん
2007/07/02(月) 08:36:58他ではVBから流れてきたり
・・・C#大丈夫か
0059デフォルトの名無しさん
2007/07/02(月) 09:00:570060デフォルトの名無しさん
2007/07/02(月) 17:07:10もよく見かける
0061デフォルトの名無しさん
2007/07/02(月) 17:37:27出来ますでしょうか?
今は下記のようにコーティングし、テキストボックスの中身を表示しています。
テキストボックスの中身を変えてボタンを押すと新しく行が追加されていくようにしたいのですが・・・。
DataSet ds = new DataSet("明細");
DataTable dt;
DataRow dr;
dt = ds.Tables.Add("明細");
dt.Columns.Add("商品名",Type.GetType("System.String"));
dr = dt.NewRow();
dr["商品名"] = textBox.Text;
dt.Rows.Add(dr);
dataGrid1.DataSource = ds.Tables["明細"];
0062デフォルトの名無しさん
2007/07/02(月) 17:49:38dr["商品名"] = textBox.Text;
dt.Rows.Add(dr);
↑だけやればいいだけじゃ……
0063デフォルトの名無しさん
2007/07/02(月) 17:53:05006461
2007/07/02(月) 18:06:34それだけやりましたけど、駄目でした。
private void button1_Click(object sender, System.EventArgs e)
{
dr = dt.NewRow();
dr["商品名"] = textBox.Text;
dt.Rows.Add(dr);
}
こんな感じでいいのでしょうか?
006562
2007/07/02(月) 18:13:04{
DataTable table;
public Form1()
{
InitializeComponent();
table = new DataTable("明細");
table.Columns.Add("商品名", typeof(string));
dataGrid1.DataSource = table;
}
private void button1_Click(object sender, EventArgs e)
{
DataRow newRow = table.NewRow();
newRow["商品名"] = textBox.Text;
table.Rows.Add(newRow);
}
}
これ丸々コピーして使いなよ……
006661
2007/07/02(月) 18:39:40無事動作しました。
0067デフォルトの名無しさん
2007/07/02(月) 20:41:570068デフォルトの名無しさん
2007/07/02(月) 20:53:460069デフォルトの名無しさん
2007/07/02(月) 20:55:230070デフォルトの名無しさん
2007/07/02(月) 22:16:210071デフォルトの名無しさん
2007/07/02(月) 22:36:430072デフォルトの名無しさん
2007/07/02(月) 22:46:320073デフォルトの名無しさん
2007/07/02(月) 22:47:360074デフォルトの名無しさん
2007/07/03(火) 00:30:330075デフォルトの名無しさん
2007/07/03(火) 01:14:450076デフォルトの名無しさん
2007/07/03(火) 10:01:200077デフォルトの名無しさん
2007/07/03(火) 10:23:130078デフォルトの名無しさん
2007/07/03(火) 10:27:360079デフォルトの名無しさん
2007/07/03(火) 10:32:34・DBサーバ:Oracle10g
・クライアント:Oracle10g
・VisualC# Express(.netframework2.0)
・ODP.net 10.2.0.2.21
これを、
・DBサーバ:Oracle10g
・クライアント:Oracle9i
・VisualC# Express(.netframework2.0)
・ODP.net 9.2.0.4.0
という環境にする事はでるのでしょうか。
0080デフォルトの名無しさん
2007/07/03(火) 15:21:43そのときに一つのコンボボックスに
名前|番号
みたいに表示させたりとかはできるのでしょうか?
0081デフォルトの名無しさん
2007/07/03(火) 15:50:49ttp://www.microsoft.com/japan/msdn/community/gdn/ShowPost-41621.htm
ここ参照。
IDと名称があるテーブルで、ユーザーに名称だけ見せて値としてIDを持ちたいんだったら
DisplayMemberとValueMemberを設定すれば簡単にできる。
0082デフォルトの名無しさん
2007/07/03(火) 18:27:05できます
0083デフォルトの名無しさん
2007/07/03(火) 18:34:27えー
0085デフォルトの名無しさん
2007/07/03(火) 22:13:41作っているのですが、1ファイルの容量が大きいため
コピーに時間がかかるときは処理を中止したいのです。
でもFile.Copyだとコピー中は他の処理を受け付けないので止められません。
何か良い手はないでしょうか?
0086デフォルトの名無しさん
2007/07/03(火) 22:22:22あるいはVB.NETのMyクラス使うか(呼び出し面倒だけど)。
0087デフォルトの名無しさん
2007/07/03(火) 22:23:220088デフォルトの名無しさん
2007/07/03(火) 22:29:02よい方法もなにも、プログラマなら愚直にそうすることをまず思いつくよね。
0089デフォルトの名無しさん
2007/07/03(火) 22:29:300090デフォルトの名無しさん
2007/07/03(火) 22:30:430091デフォルトの名無しさん
2007/07/03(火) 23:05:070092デフォルトの名無しさん
2007/07/03(火) 23:07:420093デフォルトの名無しさん
2007/07/03(火) 23:08:29009485
2007/07/03(火) 23:15:20Streamで自力でコピーやスレッドによる操作など、
考えはしたのですが使い方がよくわからなくて・・・
やはりきちんと調べてから書き込むべきでしたね。
とりあえず、今回はスレッドで処理してみようと思います。
ありがとうございました。
0095デフォルトの名無しさん
2007/07/03(火) 23:20:22その接続詞(「や」)の使い方を見ると変な誤解してそうだね。
スレッドの中でFile.Copyしたってダメなんだよw
スレッドの中で(FileStrem使って)ベタコピーするコードを書かないと。
0096デフォルトの名無しさん
2007/07/04(水) 00:39:170097デフォルトの名無しさん
2007/07/04(水) 01:48:390098デフォルトの名無しさん
2007/07/04(水) 02:31:050099デフォルトの名無しさん
2007/07/04(水) 12:09:520100デフォルトの名無しさん
2007/07/05(木) 20:02:18言語の部分で制限がかかっていたら(例えばfor文は100回までなど)
勉強にならないので教えてください
0101デフォルトの名無しさん
2007/07/05(木) 20:05:370102デフォルトの名無しさん
2007/07/05(木) 20:09:27http://www.microsoft.com/japan/msdn/howtobuy/vs2005/editions/stdexp/
0103デフォルトの名無しさん
2007/07/05(木) 20:14:280104デフォルトの名無しさん
2007/07/05(木) 20:27:340105デフォルトの名無しさん
2007/07/05(木) 20:33:340106デフォルトの名無しさん
2007/07/05(木) 20:34:580107デフォルトの名無しさん
2007/07/05(木) 20:35:450108デフォルトの名無しさん
2007/07/05(木) 20:36:240109デフォルトの名無しさん
2007/07/05(木) 20:56:36これから勉強するなら3.0をやっといたほうがいいと思う
そっから先はプログラミングの仕方がまるっきり変わってくる
0110デフォルトの名無しさん
2007/07/05(木) 21:03:27C#3.0ってどこで落とせるの?
0111デフォルトの名無しさん
2007/07/05(木) 21:05:040112デフォルトの名無しさん
2007/07/05(木) 21:07:210113デフォルトの名無しさん
2007/07/05(木) 21:08:250114デフォルトの名無しさん
2007/07/05(木) 21:08:430115デフォルトの名無しさん
2007/07/06(金) 02:55:18そこから3.5betaを落としてみたのですが、
インストール途中というよりインストーラがダウンロードをはじめて
中盤くらいでエラーになって中断してしまいます。
なんかインストールのための前提条件とかありますか?
うちの環境はXP+SP2+.NET3.0導入済み。
0116デフォルトの名無しさん
2007/07/06(金) 06:41:560117デフォルトの名無しさん
2007/07/06(金) 07:39:510118デフォルトの名無しさん
2007/07/06(金) 15:24:250119デフォルトの名無しさん
2007/07/06(金) 15:36:300120デフォルトの名無しさん
2007/07/06(金) 15:47:362005Expressは初め有料にするつもりで出された物
0121デフォルトの名無しさん
2007/07/06(金) 16:10:17http://itpro.nikkeibp.co.jp/free/NSW/NEWS/20050323/157893/
↓
無料にして欲しいお
http://itpro.nikkeibp.co.jp/free/ITPro/OPINION/20050328/158085/
↓
1年間無料だお
http://itpro.nikkeibp.co.jp/article/NEWS/20051108/224154/
↓
ずっと無料だお
0122デフォルトの名無しさん
2007/07/06(金) 17:10:24if (e.KeyChar == (char)Keys.Delete)
{
listBox1.Items.RemoveAt(listBox1.SelectedIndex);
}
としましたが、Deleteキーを認識してくれません
今は仕方なく
if (e.KeyChar == (char)Keys.Delete || e.KeyChar == (char)Keys.Back)
{
listBox1.Items.RemoveAt(listBox1.SelectedIndex);
}
としてバックスペースキーを使ってます。
なぜDELETEキーが認識されないんでしょうか?
0123デフォルトの名無しさん
2007/07/06(金) 17:34:430124デフォルトの名無しさん
2007/07/06(金) 17:37:26そういう問題じゃなく、KeyPressイベント使っているのが原因だと思われ
KeyDownじゃないといけない理由は↓参照
http://blog.livedoor.jp/yama_90/archives/50965484.html
0125デフォルトの名無しさん
2007/07/06(金) 17:57:21ありがとうございましたm(__)m
0126デフォルトの名無しさん
2007/07/07(土) 01:23:21今回、meadow3でC#の勉強をしようと思っています。
しかし、meadow3は、標準でC#に対応していません。
良い解決法をご存知の方いませんか。
(例えばお勧めのmodeとか解るとありがたいです。)
0127デフォルトの名無しさん
2007/07/07(土) 09:31:44Visual Studio 2005はこれが標準のエンコードなんだけど。
というかMeadow3.00って開発版では?
いつ落ちるか判らないもので勉強するのは危険だよ。
因に自分は真魚2で書いてる。
標準でC#の色分けに対応しているし、キーバインドはWindows準拠で使い易いし。
一番良いのはVisual C# 2005 Express Editionで勉強する事。
インテリセンスが使えるのと使えないのとでは勉強の効率に大きく差が出るよ。
…ってテキストエディタで書いている自分が言っても説得力ないが。
0128デフォルトの名無しさん
2007/07/07(土) 11:55:080129デフォルトの名無しさん
2007/07/07(土) 11:59:050130デフォルトの名無しさん
2007/07/07(土) 12:04:150131デフォルトの名無しさん
2007/07/07(土) 15:00:26よくしらんけど
0132デフォルトの名無しさん
2007/07/07(土) 16:29:58Amazon.co.jp: 超図解 C#ルールブック
ttp://www.amazon.co.jp/dp/4872834151/
0133デフォルトの名無しさん
2007/07/07(土) 16:32:21何かその本に不満があって他の本を探してるの?
それとも単にその本の内容は理解して他の本も読みたいだけ?
0134デフォルトの名無しさん
2007/07/07(土) 16:32:55それは俺も持ってるけど、コーディング規約であって入門編じゃないぞ
プログラム自体が初めてなら尚更NG
0135デフォルトの名無しさん
2007/07/07(土) 23:42:390136デフォルトの名無しさん
2007/07/08(日) 00:37:510137デフォルトの名無しさん
2007/07/08(日) 00:44:460138デフォルトの名無しさん
2007/07/08(日) 01:01:26この赤で囲んだところと同じようなものをC#で再現したいのですが、どのようにすれば再現できるでしょうか?
DataGridViewやListBoxと同系のものだと思うのですが。。。
初心者ですみません><
0139デフォルトの名無しさん
2007/07/08(日) 01:03:010140デフォルトの名無しさん
2007/07/08(日) 01:21:55即レスありです
無事解決しましたm(_ _)m
0141デフォルトの名無しさん
2007/07/08(日) 02:05:170142デフォルトの名無しさん
2007/07/08(日) 02:39:35>>134
近所の本屋に初心者向けのC#本が無かったので、図書館で取り寄せて借りてみようと思っています。
Amazonでざっと探したところ、>>132の本を見つけたのですが、コーディング規約って事は、初心者向けではないですね。
いまさっき、探していたのですが、以下の3冊が見つかりました。
ttp://www.amazon.co.jp/dp/4839910197/
ttp://www.amazon.co.jp/dp/4822216896/
ttp://www.amazon.co.jp/dp/4891005009/
とりあえず3冊とも見てみようと思います。
一番下の本は、プログラム自体初めてでもなんとかなりそうです。
0143デフォルトの名無しさん
2007/07/08(日) 02:59:32あともし買うならまずは1冊にしときなよ
挫折するかもしれないんだから
0144デフォルトの名無しさん
2007/07/08(日) 05:46:410145デフォルトの名無しさん
2007/07/08(日) 06:51:50がんばって作れ。草葉の陰から応援してやる。
0146デフォルトの名無しさん
2007/07/08(日) 07:40:40なんと無意味な事を・・・
0147デフォルトの名無しさん
2007/07/08(日) 07:49:240148144
2007/07/08(日) 07:59:23連想配列とかは一応CSにもあったんですけど、機能が全然足りないのです。
multimapやmultisetや、イテレータを介した処理やアルゴリズムのオーバーロードとか、
そういうSTL的なやつを所望してます。
0149デフォルトの名無しさん
2007/07/08(日) 10:13:39書籍が良いって気持ちは分かるけど、手当たり次第買うくらいならまずネットで
適当に入門サイト見ていった方がお金を有効に使えるんじゃないかと思う。
それから、古い本を買って混乱するかもしれないから、「.NET 2.0」「C#2.0」「VS2005」と
明記されている奴を選んだ方が良い。
ttp://www.google.co.jp/search?hl=ja&q=C%23+%E5%85%A5%E9%96%80&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
0150デフォルトの名無しさん
2007/07/08(日) 10:51:10つLINQ
0151デフォルトの名無しさん
2007/07/08(日) 10:53:52Dictionary<TKey, List<TValue>>を自分で改造するしかないんじゃないか
0152デフォルトの名無しさん
2007/07/08(日) 11:21:030153デフォルトの名無しさん
2007/07/08(日) 11:41:160154デフォルトの名無しさん
2007/07/08(日) 12:32:56ここのPower Collectionsとか。
まぁC#にSTLみたいなのを夢見ててもストレス溜まるだけなんで、
早いところ頭切り替えた方が良いと思うよ〜。
0155デフォルトの名無しさん
2007/07/08(日) 13:02:50めちゃめちゃ限られてるだろ
そういうケースでは.NET 3.5のハッシュセットでいけそうだし
0156デフォルトの名無しさん
2007/07/08(日) 15:16:08単に自分が対応出来てないだけだろ
0157デフォルトの名無しさん
2007/07/08(日) 15:23:28C#の流儀に従いなさい
なんのためにC#やってるのかね
0158デフォルトの名無しさん
2007/07/08(日) 15:25:00その代わりLINQはSTLを遥かに超えているぜ
0159デフォルトの名無しさん
2007/07/08(日) 15:26:030160デフォルトの名無しさん
2007/07/08(日) 16:32:55勉強しはじめたんだけどVSって重いねえ。
0161デフォルトの名無しさん
2007/07/08(日) 16:40:19ぜひDellから最新のマシンをご購入ください。
0162デフォルトの名無しさん
2007/07/08(日) 17:32:56C#で作ったDLLをC++で使おうと思い、regasm使ってみたのですが、
staticにしたりしても型が登録されず、使用できませんでした。
どうやったら登録できるようになりますか?
0163162
2007/07/08(日) 18:17:32インターフェースを作って[InterfaceType(ComInterfaceType.InterfaceIsDual)]を
追加した後、ビルド後にgacutilを使ったらregasmで登録できました。
0164162
2007/07/08(日) 19:31:22今C++から投げられたHDC(実際には(long)&HDC)をC#のメソッドでIntPtr
として受けた後にGraphicsを作って描画するという感じでC#のメソッドを
作っているのですが、どうしても上手く描画することができず、真っ黒になってしまいます。
C++の方でDraw系の関数使ったときにはちゃんと描画されるのですが…
C++はネイティブです。
よろしくお願いします。
0165デフォルトの名無しさん
2007/07/08(日) 19:36:48????????
0166162
2007/07/08(日) 19:43:14C++側:
HDC hdc;
RECT *prc;
ITestPtr pITest(__uuidof(Test));
pITest->Draw((long)&hdc, prc->top, prc->left, prc->right, prc->bottom);
C#側
public interface ITest
{
public void Draw(IntPtr hdc, int top, int left, int right, int bottom);
}
public class Test : ITest
{
public void Draw(IntPtr hdc, int top, int left, int right, int bottom)
{
Graphics g = Graphics.FromHdc(hdc);
g.FillRectangle(new SolidBrush(Color.Aqua), new Rectangle(left, top, right - left, bottom - top));
g.Dispose();
}
}
0167デフォルトの名無しさん
2007/07/08(日) 19:49:00(long)hdcでいいんじゃない?
あとSolidBrushはちゃんとDisposeすれ
0168デフォルトの名無しさん
2007/07/08(日) 19:56:13描画できました!
ありがとうございます!
>Disposeすれ
すいません orz
0169デフォルトの名無しさん
2007/07/08(日) 21:41:000170デフォルトの名無しさん
2007/07/08(日) 21:45:170171デフォルトの名無しさん
2007/07/08(日) 21:50:450172デフォルトの名無しさん
2007/07/08(日) 22:47:38ぐぐってみたけど見つかりません・・・
どなたか知っていたら教えていただけるとうれしいです。
0173デフォルトの名無しさん
2007/07/08(日) 22:48:310174デフォルトの名無しさん
2007/07/08(日) 22:49:09csvを普通に読み込み。
DataGridViewに内容を追加。
以上
0176デフォルトの名無しさん
2007/07/08(日) 23:01:010177デフォルトの名無しさん
2007/07/08(日) 23:02:04お勧めはありますか?
通勤途中に読みたいので、値段も重さも手頃な
↓が良さそうに思えるのですが…
http://www.amazon.co.jp/dp/4873110912/
「C#エッセンシャルズ 第2版」
>>149 で言われているC#2.0 に対応してない点で迷ってる次第です。
よろしくお願いします。
0178デフォルトの名無しさん
2007/07/08(日) 23:10:240179デフォルトの名無しさん
2007/07/08(日) 23:52:49超初心者用の本でも読んでそのレベルまで何とか辿りつけ
0180172
2007/07/09(月) 09:30:17Datasetにカラムや値を追加する方法がヘルプを読んでもいまいちわかりません。
何か良いC#入門書ありますでしょうか?
自分はPHP2年:java1か月のWeb系プログラマなんですが、
スタンドアロンでサーバ系ソフトを一切使わないクライアントソフトを作る必要がでてきたので、
最初javaで作っていたのですが、見た目が悪すぎる&VEがまだまだ不便と感じたので、C#で作ろうかなと。。。
0181デフォルトの名無しさん
2007/07/09(月) 09:42:48どのヘルプを見てどう分からないのかサッパリだが、
DataSetに追加するんじゃなく、DataSet内(中じゃなくてもいいけど)のDataTableに追加する。
DataTable の作成と使用
http://msdn2.microsoft.com/ja-jp/library/t31h6yhs(VS.80).aspx
17.DataSetを作成する
http://homepage3.nifty.com/dotnetfan/console/console17.html
0182デフォルトの名無しさん
2007/07/09(月) 10:30:24VisualC#2005
[実践]
プログラミングテクニック
応用できる基本の書き方
(技術評論社)
って本にあんたのしたいことが載ってる
0183デフォルトの名無しさん
2007/07/09(月) 10:51:05C#2.0なんて後でサイトやMSDNで調べれば十分
ジェネリックコレクションしか使わなくなること以外は、
Java5みたいに劇的に変わることはないから安心しろ
0184デフォルトの名無しさん
2007/07/09(月) 11:21:03DataGrid1に金額という列があり、その列の合計をDataGrid2の合計という列に
集計させたいのですが、どのようにやればいいでしょうか?
MSDNのDataColumn.Expression プロパティなどを参考にしているのですが
いまいち理解できませんでした・・・・
。
0185184
2007/07/09(月) 11:21:39DataSet ds = new DataSet("出荷明細");
DataTable dt;
private System.Windows.Forms.DataGrid dataGrid2 = new DataGrid();
DataSet ds2 = new DataSet("合計金額");
DataTable dt2;
DataColumn dc;
public Form1()
{
InitializeComponent();
dt = ds.Tables.Add("出荷明細");
dc = new DataColumn("金額",typeof(int));
dt.Columns.Add(dc);
Controls.Add(dataGrid1);
dataGrid1.DataSource = ds.Tables["出荷明細"];
dt2 = ds2.Tables.Add("合計金額");
dc = new DataColumn("合計",typeof(int));
Controls.Add(dataGrid2);
dt2.Columns.Add(dc2);
dataGrid2.DataSource = ds2.Tables["合計金額"];
}
0186デフォルトの名無しさん
2007/07/09(月) 11:24:060187184
2007/07/09(月) 11:24:38{
DataRow dr;
dr = dt.NewRow();
dr["金額"] = Convert.ToInt32(Kingaku.Text);
dt.Rows.Add(dr);
DataRow dr2;
dr2 = dt2.NewRow();
dr2["合計"] = (なんて書いたら良いでしょうか?);
dt2.Rows.Add(dr2);
}
上記のようにコーティングしています。間違っている部分も多々あると思いますが
なにとぞよろしくお願いします
0188デフォルトの名無しさん
2007/07/09(月) 11:28:03またお前か
もう来るなって言ったはずだぞ
0189184
2007/07/09(月) 11:44:080190デフォルトの名無しさん
2007/07/09(月) 11:46:16学校の課題か何かなんだろうか
0191184
2007/07/09(月) 12:02:241から初めて自分で調べて課題を解いて行けという感じなのですが
ネットで調べたり、手元にある本だけじゃ限界があり、ここに質問させて
いただきました。
0192デフォルトの名無しさん
2007/07/09(月) 12:03:11というわけで、ループ処理で合計金額出せばいいだけなんだけど、
>>187じゃ合計金額じゃなく累計になるね
だからわざわざ合計金額にもDataGrid使うような設計しているのか……
0193184
2007/07/09(月) 13:53:130194デフォルトの名無しさん
2007/07/09(月) 14:07:31DataGrid使う意味なくなるよ?
課題が糞なのか>>184の脳みそが糞なのか
0195デフォルトの名無しさん
2007/07/09(月) 20:08:37MSDNのヘルプ(慣れが必要なのか?)を読めば何とかなるのですね。
本はさらっと読めそうな初心者本買って来ました。
http://www.amazon.co.jp/dp/4797332018/
まずはIDE落としてきて動かしてみます。
アドバイスありがとうございました。
0196デフォルトの名無しさん
2007/07/09(月) 22:19:13言語とかの基本的なところはヘルプでは分かりにくい
0197デフォルトの名無しさん
2007/07/10(火) 14:00:27http://www.nicovideo.jp/watch/sm521773
こなたの絵をエアガンでバンバン撃つ動画が50位くらいに入ってたんだが
権利者削除されちまった
0198197
2007/07/10(火) 14:01:010199デフォルトの名無しさん
2007/07/10(火) 14:52:130200デフォルトの名無しさん
2007/07/10(火) 14:54:000201デフォルトの名無しさん
2007/07/10(火) 16:50:58どのようにコーティングすればいいかな?
0202デフォルトの名無しさん
2007/07/10(火) 16:52:500203デフォルトの名無しさん
2007/07/10(火) 16:53:390204デフォルトの名無しさん
2007/07/10(火) 19:46:56まずメインの GUI スレッドで、スタートボタンを押すとウィンドウが開きます。
そのクラスにデータを渡すと自動的にグラフを描画します。
で、その描画するメソッドは、
if (this.Parent != null && this.Parent.InvokeRequired)
{
IAsyncResult ar = this.Parent.BeginInvoke(new MethodInvoker(delegate { GraphDraw(ref values); }));
while (!ar.IsCompleted) { }
}
として、this.Parent ( メインの Form コントロール) で描画させています。
で、シングルCPU のマシンで動作させている分には問題ないのですが、マルチコアの CPU だと動作がかくかくしてしまいます。
このような処理ではいけないのでしょうか?
0205デフォルトの名無しさん
2007/07/10(火) 19:55:35どうしたら再現できますか?
0206デフォルトの名無しさん
2007/07/10(火) 20:01:20全体像がいまいち掴めないから何とも言えないけど
> while (!ar.IsCompleted) { }
これはまずいでしょ。
どうせ待機するなら this.Parent.Invoke(...); でいいんじゃないの?
>>205
描画処理中に例外を投げるとかじゃなかったっけかな。
あいまいな記憶だけど・・・。
関係ないが最近黒字に赤の斜め格子模様っていう現象に遭遇した。
なんだったんだろ。
0207デフォルトの名無しさん
2007/07/10(火) 20:07:22お返事ありがとうございます。
this.Parent.Invoke(...); だと、シングル CPU の時に、グラフウィンドウのグラフは
描画されますが、メインの GUI の方に制御が戻ってこないのです。
( グラフのウィンドウもクリックしても無反応 )
0208デフォルトの名無しさん
2007/07/10(火) 20:54:05感にたよって原因を「あて推量」したくなる気持ちは分からないでもないが
(いや本当は理解できないが。。)それじゃ賭博と変わらん。
原因に関して仮説を立てるのはいいんだが、立てたらそれを実証しなきゃ。
人に聞くのははそれからじゃないの順番として
0209デフォルトの名無しさん
2007/07/10(火) 21:03:06>>204 はそれを実証しようとしてるジャマイカ?
0210デフォルトの名無しさん
2007/07/10(火) 21:06:50単に思うように動かないコードがあって、
それには自分があまり自身がない技術(スレッディング)が使ってあるから
原因はそれに違いない、っていう非科学的な思い込みが書いてあるだけじゃん。
0211デフォルトの名無しさん
2007/07/10(火) 21:21:07全貌が見えないので何やりたいんだかよくわからんが、
while (!ar.IsCompleted) { }
のループの途中でSleepが入ってなくてBusyLoopになってる予感。
ちょっとだけThread.Sleep(10)とか入れとけ。
0212デフォルトの名無しさん
2007/07/10(火) 21:28:350213デフォルトの名無しさん
2007/07/10(火) 21:43:460214デフォルトの名無しさん
2007/07/10(火) 22:39:030215デフォルトの名無しさん
2007/07/10(火) 23:17:030216デフォルトの名無しさん
2007/07/10(火) 23:30:07みなさん御助言ありがとうございます。204 です。
やりたいことは簡単に言うと、GUI のスタートボタンを押すと、別ウィンドウのグラフ描画開始
ストップボタンを押すとグラフ描画終了というものです。
普通にやってしまうと、スタートボタンをおしたらそのまま描画しっぱなして停止させることが
できないので、@IT の記事などを参考にしながら作りました。
結局、>>211 さんの助言の通り sleep を入れたところ、Single/Dual CPU 両方で正常に動作しました。
sleep を入れないと、Single CPU は CPU が遅いこともあり、Busyloop に CPU がもっていかれて処理が
GUIに戻ってこなかったようです。
やりたいことは単純に、GUI からスタート・ストップをしたいだけです。
while (!ar.IsCompleted) { Thread.sleep(10); }
という使い方は MSDN で「ポーリング」として解説されていて、同期処理と同じだからあまりおすすめ
できないと書かれていました。
通常はどういう実装で GUI に処理を戻すようにするのでしょうか?
0217デフォルトの名無しさん
2007/07/10(火) 23:31:140218デフォルトの名無しさん
2007/07/10(火) 23:32:32はお勧めできないと書かれていたから、
while (!ar.IsCompleted) { }
としたのだな?
いっぺんしんでこい
0219デフォルトの名無しさん
2007/07/10(火) 23:34:190220デフォルトの名無しさん
2007/07/10(火) 23:49:17非同期で任せて自分は終了。
0221デフォルトの名無しさん
2007/07/10(火) 23:49:36とりあえずスレッドから直接GUIの描画メソッド呼ぶんじゃなくてさ。
スレッドからGUIに渡すものはデータのみにしなさい。
データをGUIに渡してそのあとでInvalidate()なり呼べばよろしい。
GUI {
int[] _data;
int[] data {
get { return _data; }
set { lock(_data) { _data = value; } this.Invalidate(); }
}
override OnPaint() { lock(_data) { GraphDraw(_data); } }
}
void ThreadProc() {
int[] data1 = MakeData();
GUI.data = data1;
int[] data2 = MakeData();
GUI.data = data2;
}
0222デフォルトの名無しさん
2007/07/10(火) 23:53:45お前すごいなw
0223デフォルトの名無しさん
2007/07/10(火) 23:55:12>while (!ar.IsCompleted) { Thread.sleep(10); }
>という使い方は MSDN で「ポーリング」として解説されていて、同期処理と同じだからあまりおすすめ
>できないと書かれていました。
これの意味がわかんない 誰か教えて
やりたいのはポーリングじゃないの?
だったらそれでいいんじゃない?
同期処理と同じ?ここ意味わかんない
0224デフォルトの名無しさん
2007/07/11(水) 00:01:06実質同期と変わらんだろ、どう見ても。
0225デフォルトの名無しさん
2007/07/11(水) 00:02:20MSDNに書いてある意図はよくわからんけど
とりあえずその書き方はスレッドコンテキストの切り替えが頻繁に起こるからあまりよろしくない。
ある状態になるまで待機するというようなときは普通はイベント(EventWaitHandle)を使う。
0226デフォルトの名無しさん
2007/07/11(水) 00:08:52確かにw
意味無いな
0227デフォルトの名無しさん
2007/07/11(水) 00:12:510228デフォルトの名無しさん
2007/07/11(水) 01:19:23なんだから、計算&描画は別スレッドでやるべきなんじゃないのさ?
>>216でしょ結局。
メソッドとスレッドを混同する(初学者に)よくある間違いでは?
0229デフォルトの名無しさん
2007/07/11(水) 01:20:37○ >>220でしょ
0230デフォルトの名無しさん
2007/07/11(水) 01:47:26いや
>>204がベースになってる限りマルチスレッドにする意味が分かんないってことは?
・重い(計算&描画)と思われる処理をFormスレッドで行っている
・whileで描画の待ちを行っているため、別スレにする意味がよく分からない
0231デフォルトの名無しさん
2007/07/11(水) 06:21:460232デフォルトの名無しさん
2007/07/11(水) 08:33:55シングルスレッドだと
>やりたいことは単純に、GUI からスタート・ストップをしたいだけです
ができないんじゃマイカ?描画中でも止めたいんだろ。
BackGroundWorker を使うのが一番楽だと思うが。
0233デフォルトの名無しさん
2007/07/11(水) 09:06:57処理を小分けにしてタイマーで処理する方法がある。
C#ならYieldで処理を反転させる変体チックな方法がおすすめ。
スレッドを使うならダブルバッファを使うべきだろう。
0234デフォルトの名無しさん
2007/07/11(水) 09:49:13単純にやるには DoEvents が一番楽でシンプルですね。
ありがとうございます!
0235デフォルトの名無しさん
2007/07/11(水) 10:31:09あ、単にバックの処理で描画が重くなるからってことかな?
0236デフォルトの名無しさん
2007/07/11(水) 12:44:15いざDataGridViewで表示させようとすると、パスワードが違います と、例外エラーがでてしまいます。
パスワードは接続時に入力したのですが…
0237デフォルトの名無しさん
2007/07/11(水) 13:03:17それがDbConnection.Open時じゃなくプロジェクトに追加時ってだけの意味なんだろうか
とりあえず保存された接続文字列見てPassword=hogehogeという文字があるかどうか
確かめてみたほうがいい
0238236
2007/07/11(水) 14:43:22一度削除して、もう一度データベース接続を作った際に
「重要情報を接続情報に含めます」を選んだらつながりました・…
お手数をおかけしました。まだまだよくわかってないです。。。@C#三日目
0239デフォルトの名無しさん
2007/07/11(水) 15:00:06この Form の AutoScroll を True にして、フォームを下側にスクロールすると ToolStrip が
固定されず上にスクロールしてしまいます。
これを固定する方法はありませんか?
ステータスバーもスクロールしていってしまいます。
0240デフォルトの名無しさん
2007/07/11(水) 15:17:440241デフォルトの名無しさん
2007/07/11(水) 15:24:29javaならflowlayoutを指定すればよかったのですが、C#はなんか違うようで。。。
flowLayoutコンテナにいくつかコンポーネントをのっけても何も反応がなかったのですが、
何かやりかた間違ってるでしょうか。
0242デフォルトの名無しさん
2007/07/11(水) 15:25:06なんのことかさっぱりわからん。
0243デフォルトの名無しさん
2007/07/11(水) 15:25:41本人の修正より早い光速突っ込みありがとうございます。
0244デフォルトの名無しさん
2007/07/11(水) 15:29:580245デフォルトの名無しさん
2007/07/11(水) 15:34:020246デフォルトの名無しさん
2007/07/11(水) 15:56:18ありがとうございます。
0247デフォルトの名無しさん
2007/07/11(水) 15:57:36VC#Express上ではデータベースエクスプローラに追加して接続できたのですが、
実際にプログラムでつなごうとするとできません(涙
持っている入門書ではSQLServerにつなげる方法しか書いてなかったのですが、
mdbに接続するにはどうすればいいでしょうか?
0248デフォルトの名無しさん
2007/07/11(水) 16:12:20こんな感じでかいてみたんですが…
何か間違ってますでしょうか?
System.Data.SqlClient.SqlConnection scn =
new System.Data.SqlClient.SqlConnection();
scn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
@"Data Source=C:\soft\db.mdb;Persist Security Info=True";
0249デフォルトの名無しさん
2007/07/11(水) 16:58:34自分で接続文字列にOLDDBって書いてるじゃないか
SqlClientじゃなくOleDb使わないと……
0250デフォルトの名無しさん
2007/07/11(水) 17:09:11ありがとうございます。 いけましたorz
パスワード付きのmdbの場合は"Database Password=hoge;"といった記述を追加すればいい
といったことを見つけたのですが、
実際やってみると「インストール可能なISAMドライバが見つかりませんでした」と表示されました。。。。
これはいったいなんなのでしょうか?
0251デフォルトの名無しさん
2007/07/11(水) 17:23:36VSに任せて自分で書こうとしない方が良い
0253デフォルトの名無しさん
2007/07/11(水) 19:20:540254253
2007/07/11(水) 19:22:46何か勘違いしてた まじすまん
0255253
2007/07/11(水) 19:29:17何かいい対処法ないかな。
サイズ指定もなぜか無視されるし
0256デフォルトの名無しさん
2007/07/11(水) 20:19:57そうじゃなくて、データベースエクスプローラ(サーバーエクスプローラ)使っているなら
プロパティで接続文字列見れるじゃない
0257252
2007/07/12(木) 08:51:27プロパティで接続文字列見えるのですが、
パスワードだけはなぜかみれないんです。
んで、コピペすると「パスワードが違います」とのExceptionがorz
0258デフォルトの名無しさん
2007/07/12(木) 10:03:360259デフォルトの名無しさん
2007/07/12(木) 10:18:03mdbをデータソースに追加したら
Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=C:\hoge.mdb;
Persist Security Info=True;
Jet OLEDB:Database Password=hoge
となったぞ
0260デフォルトの名無しさん
2007/07/12(木) 13:07:431行にカラムを6つほど作ってそこにDataSetから読み込んで表示したいのです。
0261デフォルトの名無しさん
2007/07/12(木) 13:22:050262デフォルトの名無しさん
2007/07/12(木) 16:47:28があるとき、Aの要素のうちで、Bの要素ではないものを取り出すにはどうしたらいいでしょうか?
A = ["a","b","h","e"]
B = ["b", "k", "e","i"]
のとき、 "a" と "h"がほしいのです。
0263デフォルトの名無しさん
2007/07/12(木) 16:51:51if (!string.IsNullOrEmpty(textBox1.Text)
{
処理
}
とするか
if (string.IsNullOrEmpty(textBox1.Text))
{
return
}
処理
どちらの方が良いでしょうか
0264デフォルトの名無しさん
2007/07/12(木) 16:57:21どっちでもいいです。見やすいほうにしてください
0265デフォルトの名無しさん
2007/07/12(木) 17:04:27購入してかなり経ちますがコーディング手法の違いで一向に進みません。どちらも使っていると
言う人が居たらご教示願いたいのですが。宜しくお願いいたします。
0266デフォルトの名無しさん
2007/07/12(木) 17:05:58var c = a.Except(b);
0267デフォルトの名無しさん
2007/07/12(木) 17:31:070268デフォルトの名無しさん
2007/07/12(木) 17:35:53string[] C = Array.FindAll<string>( A, delegate( string str )
{
return Array.IndexOf<string>( B, str ) == -1;
} );
>>263
どっちでもいい
ちなみにtextBox1.Textはnullにはならないよ
0269デフォルトの名無しさん
2007/07/12(木) 17:55:03Delegateを使って(別にDelegateじゃなくてもいいけど)stringの中から
コードを実行する方法ってありますか?
もしあればヒントをいただけるとうれしいのですが…
0270デフォルトの名無しさん
2007/07/12(木) 18:00:420271デフォルトの名無しさん
2007/07/12(木) 18:03:34evalっぽいのはJScriptを使った方法ならわかるのですが、
JavaScriptのFunctionコンストラクタみたいのが無いかなと
思ったんですが、さすがにインタプリタみたいには行かないですかね?
0272デフォルトの名無しさん
2007/07/12(木) 18:11:130273デフォルトの名無しさん
2007/07/12(木) 18:22:10やっぱり一度exeかdllにしないとだめですか…
ありがとうございました。
0274デフォルトの名無しさん
2007/07/12(木) 19:03:14ヽ(・ω・)/ ズコー
\(.\ ノ
、ハ,,、  ̄
 ̄
0275デフォルトの名無しさん
2007/07/12(木) 19:23:360276デフォルトの名無しさん
2007/07/12(木) 19:42:38インラインアセンブラ状態になるけどw
0277デフォルトの名無しさん
2007/07/12(木) 21:14:19コードとデータを融合したソースは書かないほうがいいよ。
メタデータには介入しないほうがいい
それをやるのは変態プログラマで、天才でもなんでもない。
0278デフォルトの名無しさん
2007/07/12(木) 21:54:170279デフォルトの名無しさん
2007/07/12(木) 22:28:52いや、ちょっとした実験やるのにもわざわざVS立ち上げるのも面倒なので、スクリプト的に実験できる
ツールを作りたかっただけなのですが…
それならCSharpCodeProvider使えと言われればそれまでなんですけどね orz
0280デフォルトの名無しさん
2007/07/12(木) 23:18:41http://www.codeproject.com/csharp/csi.asp
0281デフォルトの名無しさん
2007/07/13(金) 00:17:55やっていることはまさしくこれなんですが、
できれば
int n = 10;
int m = 20;
Console.WriteLine(Add(n ,m).ToString());
int Add(int num1, int num2)
{
return num1 + num2;
}
といったことがやりたいので自分で作ろうと思ったのですが…
うーん、英語勉強しとけばよかった orz
0282デフォルトの名無しさん
2007/07/13(金) 01:16:290' の InvalidArgument=Value は 'index' に対して有効ではありません。
イベントの中には
MessageBox.Show(listView.SelectedItems[0].Index.ToString());
と書いてます。
なお、MultiSelectプロパティはFalseです。
何回でも取得できるようにしたいのですが、取得の仕方が間違ってるのでしょうか
0283282
2007/07/13(金) 01:26:41SelectedIndexChangedイベントは選択時、選択解除時の二回呼ばれるんですね。
Clickイベントで処理すると、無事取得できました。
0284デフォルトの名無しさん
2007/07/13(金) 01:53:29普通にDelphi理解してれば一緒。
戸惑うレベルであればどの言語に移っても一緒。
0285デフォルトの名無しさん
2007/07/13(金) 20:53:26今AVIからBMPを取り出す処理を書いているのですが、
PAVIFILE、PAVISTREAM、PGETFRAMEは単純にIntPtrに
置き換えていいのでしょうか?
また、BITMAPINFOHEADERとImageへの相互変換する方法
について、何かヒントをいただけないでしょうか。
0286デフォルトの名無しさん
2007/07/13(金) 23:57:05自前
0287デフォルトの名無しさん
2007/07/14(土) 02:02:47つーかそれそC#の話題じゃねーだろ。
0288デフォルトの名無しさん
2007/07/14(土) 02:31:23ポインタはP/Invokeで適当に型合わせてくれるみたいだから、IntPtrでいいと思う。
構造体メンバを参照したい場合は、それに合わせた型をC#側で作る必要があるけど。
BitmapはImage.FromHBitmap()でHBITMAPからつくれるから、
Win32APIでHBITMAPこさえればなんとかなんじゃない?
0289デフォルトの名無しさん
2007/07/14(土) 03:21:57どういう時に使われるものなのでしょうか?
教えてたもれ。
0290デフォルトの名無しさん
2007/07/14(土) 03:31:560291デフォルトの名無しさん
2007/07/14(土) 04:08:11説明が足りなくて申し訳ない。
参照渡しで実現できるのに、
out修飾子が存在する理由(=メリット)が
わからないのであります。
0292デフォルトの名無しさん
2007/07/14(土) 04:28:26refは入力用。メソッドに渡す前に初期化する。
0293デフォルトの名無しさん
2007/07/14(土) 06:46:22あえて制限を増やして用途を明らかにする働き
0294デフォルトの名無しさん
2007/07/14(土) 08:01:00outの場合refと違って変数を初期化しないで受けられるのです。
0295デフォルトの名無しさん
2007/07/14(土) 08:38:02ありがとうございます。
HBITMAPについてはちょっとわからないので調べてみます。
0296デフォルトの名無しさん
2007/07/14(土) 08:55:260297デフォルトの名無しさん
2007/07/14(土) 09:02:15>outは渡す前に値を代入するとエラーになる
なりません
0298デフォルトの名無しさん
2007/07/14(土) 10:33:33メリットという点で言うと
>あえて制限を増やして用途を明らかにする働き
ということで理解しました。
0299デフォルトの名無しさん
2007/07/14(土) 11:26:58という形でよく使うね
0300デフォルトの名無しさん
2007/07/14(土) 11:27:40制限ってのは callee 側で代入が必須になるという制限であって
caller で代入ができないってことじゃないぞ
0301デフォルトの名無しさん
2007/07/14(土) 13:27:310302デフォルトの名無しさん
2007/07/14(土) 14:30:22エスパー以外の人間にも意味が伝わる日本語書けよ。
お前さんの文章こそ「アウト」だよ。
0303デフォルトの名無しさん
2007/07/14(土) 14:32:340304デフォルトの名無しさん
2007/07/14(土) 14:33:310305デフォルトの名無しさん
2007/07/14(土) 15:25:26みたいに、もともとの値を使用したいときにrefを使う
呼び出し側で代入必須っていうのは必然的にそうなるだけで本質じゃない
0306デフォルトの名無しさん
2007/07/14(土) 15:47:500307デフォルトの名無しさん
2007/07/14(土) 16:33:20宣言してすぐoutパラメータとして渡した場合ってどうなるんでしょうか?
どうせメソッドの中で初期化し直さなければならないので宣言時に初期化してしまうと
二重初期化になってしまう気がするんですが。
0308デフォルトの名無しさん
2007/07/14(土) 16:36:170310デフォルトの名無しさん
2007/07/14(土) 16:42:42フィールドは自動で初期化されるけど、宣言してすぐoutパラメータとして渡すなんてことはできないし
0311307
2007/07/14(土) 16:46:43なるほど、自動的に初期化されるのはフィールドでしたか。
ごっちゃになってたみたいです。
いずれにせよ>>307の質問は見当違いだったわけですね。これですっきりしました。
0312デフォルトの名無しさん
2007/07/14(土) 18:31:20メンバはされるが
っていうか、自動変数は初期化されないよ
0313デフォルトの名無しさん
2007/07/14(土) 18:32:490314デフォルトの名無しさん
2007/07/14(土) 18:57:550315デフォルトの名無しさん
2007/07/14(土) 20:37:35(sjis)を文字コードに変換したいんですが、どんな方法が考えられますか?
0316デフォルトの名無しさん
2007/07/14(土) 20:38:340317デフォルトの名無しさん
2007/07/14(土) 20:56:25一文字ずつ取り出せるだろ。
0318デフォルトの名無しさん
2007/07/14(土) 21:10:13Encoding enc = Encoding.GetEncoding( "shift_jis" );
byte[] b = enc.GetBytes( s );
ってことか?
まあ日本語でおkとしか言いようがない
0319デフォルトの名無しさん
2007/07/14(土) 21:11:360320デフォルトの名無しさん
2007/07/14(土) 21:46:41Stringとstringの違いをズバリ教えてください。
0321デフォルトの名無しさん
2007/07/14(土) 21:54:400322デフォルトの名無しさん
2007/07/14(土) 22:02:49回答ありがとうございます。
stringはStringの別名で全く同じってことで理解縞々。
0323デフォルトの名無しさん
2007/07/14(土) 22:54:00まぁjava&vc++やってる俺からすっと新しい表現だけどな。
0324デフォルトの名無しさん
2007/07/14(土) 22:55:40デリゲート型変数に登録してあるメソッドを削除する場合のnewってどんな意味合いがあるんですかね?
0325デフォルトの名無しさん
2007/07/14(土) 23:18:140326デフォルトの名無しさん
2007/07/14(土) 23:33:36delegate void Sample();
class test
{
public event Sample sample;
public void MethodA()
{
sample += new Sample(MethodB);
sample -= new Sample(MethodB); ←ここのnew
}
public void MethodB()
{
}
}
です。
0327デフォルトの名無しさん
2007/07/14(土) 23:48:040328デフォルトの名無しさん
2007/07/14(土) 23:52:06それはメソッドをデリゲートにしてるだけ。
0329デフォルトの名無しさん
2007/07/14(土) 23:55:43sample += MethodB;
sample -= MethodB;
でおk
0330デフォルトの名無しさん
2007/07/14(土) 23:58:350331デフォルトの名無しさん
2007/07/15(日) 00:03:27デリゲートは本来ユーザが書かなきゃいけないことをショートカットして
書いてるようなもんで複雑な部分ははコンパイラがやってくれている(属性やyieldみたいに)。
MSがわかりやすいように仕様を合わせたものと思われ
0332デフォルトの名無しさん
2007/07/15(日) 00:07:300333332
2007/07/15(日) 00:11:190334デフォルトの名無しさん
2007/07/15(日) 00:45:39delegateVariable -= new HogeDelegate(Hoge);
とかのnewのことをいってるんじゃまいか?
0335デフォルトの名無しさん
2007/07/15(日) 00:46:330336デフォルトの名無しさん
2007/07/15(日) 01:09:040337324=326
2007/07/15(日) 01:15:03インスタンス生成したときメソッドをデリゲートに登録しておけば、
インスタンス変数にnewを上書きするなどしても、ちゃんと参照されるみたいです。何ででしょう?
デリゲートの原理がわからない・・・
delegate void Sample();
ManyMakeClass
{
コンストラクタ()
{ SampleClass.MyDelegate += new Sample(MethodA); }
void MethodA()
{ }
}
SampleClass
{
static public Sample MyDelegate;
ManyMakeClass class = null;
void test()
{
class = new コンストラクタ();
class = new コンストラクタ();
MyDelegate();
}
}
たとえばこうすると、それぞれのインスタンスからMethodAが1回ずつ呼ばれるっぽいです。
リスト構造っぽいのを作るのは楽なんですが、-=やり損ねるとガベージコレクタしてくれない・・・
0338デフォルトの名無しさん
2007/07/15(日) 01:18:36また、メンバ関数が元になった、デリゲートはインスタンスの参照を保持している。
0339デフォルトの名無しさん
2007/07/15(日) 01:21:340340デフォルトの名無しさん
2007/07/15(日) 02:23:01GCされないというのはなんか面倒だな。
しかも、delegate中にしか参照ないから、-=しにくいし。
ファイナライザに-=書いたりしてもダメそうだし。
0341デフォルトの名無しさん
2007/07/15(日) 02:33:10問題ないんでないの?
0342デフォルトの名無しさん
2007/07/15(日) 03:43:39ここをstaticにしてるのがGCされない原因じゃねえか?
-= しなくてもMyDelegateがGCされれば連鎖的にGC対象になるはず。
0343デフォルトの名無しさん
2007/07/15(日) 09:53:00デリゲートはMulticastDelegate クラス
中身が知りたければ プログラミング .NET Frameworkあたりを参照するか
中間言語に落としてみればいいんでない?
0344デフォルトの名無しさん
2007/07/15(日) 13:24:56MyClass() : this(new Hoge())
のようにしますが、このとき新しく作ったHogeオブジェクトの何らかのプロパティを変更してから
別のコンストラクタに移らせるようにするにはどうすればいいですか?
0345デフォルトの名無しさん
2007/07/15(日) 13:26:240346デフォルトの名無しさん
2007/07/15(日) 14:31:17デリゲートは自分自身のリストみたいな構造になってるからわかりにくいのは確かだね。
文字列が文字列自身のリストになってるような奇妙な感じだ。
でも、たとえば
sample -= new Sample(MethodB);
↑は単にリストから「どの」アイテムを削除するかを指定してるだけなんだよね。
0347デフォルトの名無しさん
2007/07/15(日) 15:55:09まあそうなんだが、
AがBとかCとかをいろいろlistenしていて、
その後Aだけ破棄したいという場面なんかでは、
いちいちlisten解除しなくちゃいけなくてめんどくない?
listen先を全部記録しておかないといけないし。
0348デフォルトの名無しさん
2007/07/15(日) 16:08:07外部からeventを操作するなら+= -=をひとつずつ使うことになるが、
delegateをなまで使うなら
sample = null; // 全部破棄
とか
sample = new Sample(MethodB); // 全部破棄してMethodBだけにする
などやりたい放題できる。
0349デフォルトの名無しさん
2007/07/15(日) 16:13:21普通の実装ではこうなのだろうけど
DelegateList del = new DelegateList();
del.Add(new DelegateItem(MethodA));
delegateの特徴として
フォーム等のコントロールでeventとして大量に準備される。
そのほとんどでリスナーは登録されないつまり使用されない。
なので恐らく使用しない状態でオブジェクト(リスト)を
生成した状態にしたくなかったのだろう。
0350デフォルトの名無しさん
2007/07/15(日) 18:14:06フォームのイベントでははじめはデリゲートオブジェクトは準備されてない
add/removeイベントアクセサを自前で実装してメモリを節約してる
イベントに対する+=や-=はそのアクセサを呼び出すための特別な演算子で、デリゲートとはまた別
0351デフォルトの名無しさん
2007/07/15(日) 19:39:39yieldでイテレータを返すのはどうなんだろう
0352デフォルトの名無しさん
2007/07/16(月) 01:02:57Bitmapからbyte[]をMarshal.Copyで取り出したのですが、1pxあたりの情報の
入り方は16bppRGBの時は空RRRRRGGGGGBBBBB、32bppRGBの時は
空*8、R*8、G*8、B*8という感じで合ってますでしょうか?
また、16bppRGBのとき、一度shortに直してから>>や<<でシフトして
取り出すよりも効率のいい方法はあるのでしょうか?
0353デフォルトの名無しさん
2007/07/16(月) 01:14:32速度は大して変わらんかと
0354デフォルトの名無しさん
2007/07/16(月) 01:23:18取り出し方にこだわらないなら
これが参考になると思われ
http://www.codeproject.com/cs/media/csharpgraphicfilters11.asp
0355デフォルトの名無しさん
2007/07/16(月) 01:39:51おとなしく>><<でがんばります。
>>354
24bppRGBの取り出し方はわかるのですが、
32bppRGBと16bppRGB555(さっき555付け忘れた orz)の
RGBの入り方がわからなくて…
0356デフォルトの名無しさん
2007/07/16(月) 15:56:280357デフォルトの名無しさん
2007/07/16(月) 16:27:04C# 関連付け
0358デフォルトの名無しさん
2007/07/16(月) 16:31:34セックス
0359デフォルトの名無しさん
2007/07/16(月) 16:32:220360デフォルトの名無しさん
2007/07/16(月) 17:31:41まさかショートカットを作ってそこから?
0361デフォルトの名無しさん
2007/07/16(月) 17:44:110362360
2007/07/16(月) 17:56:02StartInfo.CreateNoWindowに気を取られて気付きませんでした。
ありがとうございます。
0363デフォルトの名無しさん
2007/07/16(月) 18:00:23100 を与えると 108 か 92 が得られるようなものです。
0364デフォルトの名無しさん
2007/07/16(月) 18:01:03指定した数の倍数ですね。
0365デフォルトの名無しさん
2007/07/16(月) 18:02:26(100 / 8 * 8)
0366デフォルトの名無しさん
2007/07/16(月) 18:06:48乙
0367デフォルトの名無しさん
2007/07/16(月) 18:12:42頭にぼうふらわいてるんじゃ?
0368デフォルトの名無しさん
2007/07/16(月) 18:16:17interfaceにキャストするにはどうしたらいいでしょうか?
0369デフォルトの名無しさん
2007/07/16(月) 18:57:14ぼくのほしいプログラムつくってくれるかんすうありますか?
0370デフォルトの名無しさん
2007/07/16(月) 19:09:31"\"C:\\Program Files\\Internet Explorer\\iexplore.exe\" -nohome"
これの先頭の「"\」とは何でしょうか?
string s = "\"C:\\Program Files\\Internet Explorer\\iexplore.exe\" -nohome";
s = s.Remove(0, 1);
とすると何故か
"C:\\Program Files\\Internet Explorer\\iexplore.exe\" -nohome"
と二つとも消えます。
0371デフォルトの名無しさん
2007/07/16(月) 19:16:12途中の \\ がなぜ \\ なのかはわかる?
それを考えた上で以下を読むといいと思うよ。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/csspec/html/vclrfcsharpspec_2_4_4_5.asp
0372デフォルトの名無しさん
2007/07/16(月) 19:24:39マ板でC#って名前だけのスレみたいだぜ。
0373デフォルトの名無しさん
2007/07/16(月) 19:27:540374デフォルトの名無しさん
2007/07/16(月) 19:41:46\\は知っていましたが、リンク先を見て理解しました。
IEのパスを二重引用符で囲んでいるのですね。
ありがとうございました。
0375368
2007/07/16(月) 20:17:41CoCreateInstanceを使わずにActivator.CreateInstanceでいけました。
0376デフォルトの名無しさん
2007/07/16(月) 22:26:090377デフォルトの名無しさん
2007/07/16(月) 22:37:43これって何に使うの?
インターフェースを利用する場合は実装を利用側で書くと思いますが
だったら最初からクラスのメソッドに実装書けば?と思ってしまうのですが
インターフェースが無いと厳しいケースってどんな時?
普通にクラスに実装書けば?と思ってしまうのですが・・・
0378デフォルトの名無しさん
2007/07/16(月) 22:46:310379デフォルトの名無しさん
2007/07/16(月) 22:56:490380デフォルトの名無しさん
2007/07/16(月) 22:57:550381デフォルトの名無しさん
2007/07/16(月) 22:58:17インターフェースは制約というか実装の義務ですな。
あるクラスAから別のクラスBを使いたいとき、
最低限実装して欲しいメソッド等をインターフェースで書いておく。
インターフェースの良いところはそのまた別のクラスC、D、E
などでもきちんとインターフェース実装していたらクラスAを変更しなくても
使えることかな? まあ実装がただしくなかったら…
多重継承関連でよく話が出るけど、若干違う感じもする。
0382デフォルトの名無しさん
2007/07/16(月) 23:02:57実装内容は違うが振る舞いは同じで同じように扱いたいという場合、
インターフェイスは有効。
0383デフォルトの名無しさん
2007/07/16(月) 23:20:230384デフォルトの名無しさん
2007/07/16(月) 23:22:270385デフォルトの名無しさん
2007/07/16(月) 23:25:490386デフォルトの名無しさん
2007/07/16(月) 23:33:130387デフォルトの名無しさん
2007/07/17(火) 00:59:26Keys.Divide ではないようなのですが、これは一体何が送られてきているのですか?
0388デフォルトの名無しさん
2007/07/17(火) 03:37:130389デフォルトの名無しさん
2007/07/17(火) 04:43:55そのままエスケープ文字として使用したいのですが、
Replaceを使用した場合うまくいかなくて困っています。
public static int Main(string[] args)
{
string str = args[0].Replace("\\\\","\\");
Console.Write("result1 = \"" + str + "\"");
Console.Write("result2 = \"" + str + "\"");
}
上記を実行した場合、
C:\> test.exe \\ \n
result1 = "\\"
result2 = "\n"
求める結果としては、
result1 = "\"
result2 = "
"
Replace("\\","")とした場合は\nの方は求める結果となるのですが、
\\の方はnullとなってしまいます。
現状は必要なエスケープをReplace("\\n","\n")として
とりあえず求める結果を得られてはいますが、
なんとも格好悪くて、どうにかうまく扱う方法はありませんでしょうか?
0390デフォルトの名無しさん
2007/07/17(火) 04:56:10どうしたらいいですか?
0391デフォルトの名無しさん
2007/07/17(火) 04:57:18KeyDown
0392デフォルトの名無しさん
2007/07/17(火) 10:51:04テーブルに読み込んだデータの更新ってどうすればいいのでしょうか?
this.TestInfoTableAdapter.Fill(this.msoftDataSet.TestInfo);
で読み込んだデータを最新の情報に更新したいのですが…
0393デフォルトの名無しさん
2007/07/17(火) 11:02:24エスケープ文字のことをよくわかってない。
文字列として確定したらもうそれはエスケープとしては機能しない。
0394デフォルトの名無しさん
2007/07/17(火) 11:24:34OleDbCommand oCom = new System.Data.OleDb.OleDbCommand("INSERT INTO testInfo (test1, test2) VALUES(? , ?)", connection);
と指定した後に?に値を代入する方法が分からない。。。
oCom.Parameters.Clear();
oCom.Parameters.Add(1, OleDbType.varChar).value = "test";
みたいな感じでしていしたらいいのでしょうか?
0395デフォルトの名無しさん
2007/07/17(火) 11:56:04comm.Parameters.Add("unk", OleDbType.Integer);
0396デフォルトの名無しさん
2007/07/17(火) 15:16:24テキストボックス等ではなく、Windowsアプリケーションが実行中の状態についてなのですが。
0398デフォルトの名無しさん
2007/07/17(火) 18:21:49やりたいことは、単にmdbファイルにselect文をかけた結果をデータセットに格納したいだけなのですが…
0399デフォルトの名無しさん
2007/07/17(火) 18:39:52難しい部分なんてあったっけ?
0400398
2007/07/17(火) 18:59:04入門書でADO.NETについて勉強して少しわかりました。
なんかものすごくややこしいのを想定していました。。。。
今、TableAdapter.Fill(dataSet)と、指定しても、
データベースの最新の情報がデータセットに反映されなくて困っています。
INSERTを実行した後にちゃんとDBに入っていることは確認しているのですが。。。
0401デフォルトの名無しさん
2007/07/17(火) 20:36:36Clearするかnewしとけば良いと思うよ。
0402デフォルトの名無しさん
2007/07/17(火) 23:11:52VisualStudio2005を使い、本のとおりに進めています。
[ビルド]メニューに[ソリューションのビルド]が、
[デバッグ]メニューに[デバッグなしで実行]の項目が出てきません。
前者はproject1のビルドという項目があり、これでいいのかと思いますが、
後者はちんぷんかんぷんです。
なにかいけないことがあるんでしょうか?
こういう開発環境なるものじたい初めてなんですが、
メニューとかはインストールしたPCなどによって違うものなのか不安です?
0403デフォルトの名無しさん
2007/07/18(水) 00:05:43プロジェクト作ってなかったりするかい?
0404デフォルトの名無しさん
2007/07/18(水) 00:08:180405デフォルトの名無しさん
2007/07/18(水) 01:08:44ツールバー→ユーザー設定→リセット
してみたらどう?
0406デフォルトの名無しさん
2007/07/18(水) 02:15:24Express Editionを使ってるのかな
上の方は、
「ツール」→「オプション」→「プロジェクトおよびソリューション」→「全般」→「常にソリューションを表示」
下の方は出し方がわからないけどExpress Editionでも出るのは間違いない
オプションの「すべての項目を表示」にチェック入れていろいろいじったりしてみて
0407398
2007/07/18(水) 12:31:45ありがとう。でもdset.Clea()rやdset = New Dsetってしてもうまくいかなかった。
ADO.NETスレで聞いてみます。
0408デフォルトの名無しさん
2007/07/18(水) 15:16:55object a = new string[] { };
if (a.Equals(new string[] { }))
{
// 同じだった場合の処理
}
0409デフォルトの名無しさん
2007/07/18(水) 15:30:090410デフォルトの名無しさん
2007/07/18(水) 15:30:19http://msdn2.microsoft.com/ja-jp/library/bsc2ak47(VS.80).aspx
>Equals の既定の実装では、参照が等価であるかを判断する機能だけがサポートされています。
>ただし、派生クラスでこのメソッドをオーバーライドすると、値が等価であるかを判断する機能を
>サポートできます。
0411デフォルトの名無しさん
2007/07/18(水) 15:34:12なるほど。参照が同じかどうかを比較するということですね。
どうにかならんかのう
0412デフォルトの名無しさん
2007/07/18(水) 15:55:110413デフォルトの名無しさん
2007/07/18(水) 16:09:430414デフォルトの名無しさん
2007/07/18(水) 17:02:53aが空の文字列配列かどうかを判断したいだけじゃねーの?
0415デフォルトの名無しさん
2007/07/18(水) 18:00:54質問なんですが友人のPCでコンパイラ(MinGW)を使って早速「hello world」と表示させるプログラムを作ったそうですが
gcc: installation problem, cannot exec `as': No such file or directory
と出てきてコンパイラされないそうです。
ちなみにOSはVistaと聞きました。
0416デフォルトの名無しさん
2007/07/18(水) 18:03:400417デフォルトの名無しさん
2007/07/18(水) 18:07:030418デフォルトの名無しさん
2007/07/18(水) 18:11:080419デフォルトの名無しさん
2007/07/18(水) 20:11:35どう贔屓目に見てもスレ違い。
0420デフォルトの名無しさん
2007/07/18(水) 20:32:300421デフォルトの名無しさん
2007/07/18(水) 21:22:400422デフォルトの名無しさん
2007/07/18(水) 21:26:02accessなしでもmdbファイル使ったアプリ動くよね?
まぁ開発環境には必要だと思うけど…
0423デフォルトの名無しさん
2007/07/18(水) 21:33:260424デフォルトの名無しさん
2007/07/18(水) 21:55:070425デフォルトの名無しさん
2007/07/18(水) 23:37:17動かないと思ってSQLite使おうとしてたんだけど、ラッキー。
0426デフォルトの名無しさん
2007/07/19(木) 00:28:38一回インストールしてみましたが、インストールの時点で弾かれました。
なんとかしてSP1で使いたいのですが・・・
0427デフォルトの名無しさん
2007/07/19(木) 00:32:280428デフォルトの名無しさん
2007/07/19(木) 00:33:05それともXPの?
0429デフォルトの名無しさん
2007/07/19(木) 00:42:01>>428
XP Pro SP1です。
Visual C# 2005 Express Edition をCDに焼いてインスコしようとしましたが、弾かれました。
必要システムのところに、SP2と書いてあるので、当たり前なんですが、
なんとかごまかしてインストールしたい。
0430デフォルトの名無しさん
2007/07/19(木) 00:44:150431デフォルトの名無しさん
2007/07/19(木) 00:50:22不具合情報スレを見ていると不安で。
近々、統合インストールCDを作って入れようと思っていますが、
そのまえにSP1でインスコできる方法があるならそっちを試したいと思いまして。
0432デフォルトの名無しさん
2007/07/19(木) 00:53:53いまどきSP2の不具合だなんて。
SP1のほうがよっぽどバグだらけだと思うが?
0433デフォルトの名無しさん
2007/07/19(木) 00:57:36じゃあ、素直にSP2いれたほうが早いですね。
お騒がせしました。
バックアップがめんどい・・・
0434デフォルトの名無しさん
2007/07/19(木) 00:58:26不安だから、というのでSP2にあげないで不利益を被っているのは理解できない
0435デフォルトの名無しさん
2007/07/19(木) 01:28:540436デフォルトの名無しさん
2007/07/19(木) 09:05:11SELECT文のWhere句を可変にする方法ってありますでしょうか?
具体的には
SELECT * FROM test WHERE field1 = ? , field2 = ?
のようなSQL文で、条件に応じてWHERE句の検索フィールドを変えたいのです。
SELECT * FROM test WHERE field1 = ? AND field2 = ?
SELECT * FROM test WHERE field3 = ?
SELECT * FROM test WHERE field3 = ? OR field2 = ?
のような感じで…
何かいい方法ありますでしょうか?
0437デフォルトの名無しさん
2007/07/19(木) 09:08:32クエリの追加
0439デフォルトの名無しさん
2007/07/19(木) 10:27:49可変ってどう引数渡すつもりなんだ? object型のparamsで要素数判定するつもりか……?
field1 = ? AND field2 = ?とfield3 = ? OR field2 = ?の違いはどう判別したら良いんだ?
FillByHogeを数パターン作って最適なものを判別するメソッド追加するか
検索条件によってWHERE句自力で生成するメソッド作るかしたら?
0440436
2007/07/19(木) 10:38:56WHERE句を自力で生成するメソッドを作ろうと思います。
自力でWhere句を作ったのを ? で渡したりってできませんよね・・・
0441デフォルトの名無しさん
2007/07/19(木) 10:51:13それでも無理矢理使いたいならHogeDataSet.csにHogeDataSetTableAdapterの
分割クラスとして書けば良いんじゃないか?
FillByOresamaVer(SearchParameter hoge)みたいなの
0442デフォルトの名無しさん
2007/07/19(木) 13:09:08フォントの関係(メイリオとMSPゴシ?)だとは思うんですけど
XPに合わせるとVistaで縦長になりすぎ、
Vistaに合わせるとXPで横長になりますぎます。
こういうときどうしたらいいんでしょうか?
0443デフォルトの名無しさん
2007/07/19(木) 13:19:490444デフォルトの名無しさん
2007/07/19(木) 18:19:500445デフォルトの名無しさん
2007/07/19(木) 18:25:470446デフォルトの名無しさん
2007/07/19(木) 19:55:43AutoScrollはFalseなのになぜか表示されてしまいます。
ScrollPropertyは読み取り専用だし、AutoScrollMarginを増やしたら子ウインドウを
最小化したときにどっかいっちゃうし… orz
0447デフォルトの名無しさん
2007/07/19(木) 20:52:03最終的にIEnumerable<T>を取りたいんだけど、どのICollection<T>実装を使うのが
一番効率いいの?
0448デフォルトの名無しさん
2007/07/19(木) 20:59:420449デフォルトの名無しさん
2007/07/20(金) 15:44:27今はダイアログ生成時にコンストラクタで親を渡してやってるんですが、
もうちょっとスマートなやり方があれば教えて欲しいです。
0450デフォルトの名無しさん
2007/07/20(金) 15:52:240451デフォルトの名無しさん
2007/07/20(金) 16:08:310452デフォルトの名無しさん
2007/07/20(金) 16:09:290453デフォルトの名無しさん
2007/07/20(金) 19:50:540454デフォルトの名無しさん
2007/07/20(金) 19:55:430455デフォルトの名無しさん
2007/07/20(金) 20:16:21Http 1.0を使うことは可能でしょうか?
0456デフォルトの名無しさん
2007/07/20(金) 20:39:550457デフォルトの名無しさん
2007/07/20(金) 20:48:490458デフォルトの名無しさん
2007/07/20(金) 20:54:150459デフォルトの名無しさん
2007/07/20(金) 20:56:440460デフォルトの名無しさん
2007/07/20(金) 21:26:080461デフォルトの名無しさん
2007/07/20(金) 21:29:230462デフォルトの名無しさん
2007/07/20(金) 21:31:540463デフォルトの名無しさん
2007/07/20(金) 21:38:320464デフォルトの名無しさん
2007/07/20(金) 21:40:500465デフォルトの名無しさん
2007/07/20(金) 22:16:33学生さんですか?
0466デフォルトの名無しさん
2007/07/20(金) 22:51:18よくあるエスパー期待型の質問だが
これほど流れがスムーズだとなぜか気持ちいいなw
0467デフォルトの名無しさん
2007/07/21(土) 14:04:470468デフォルトの名無しさん
2007/07/21(土) 14:10:58それとも何か面白い答えを期待してるのか判断に苦しむ
0469デフォルトの名無しさん
2007/07/21(土) 14:11:470470デフォルトの名無しさん
2007/07/21(土) 14:13:27ググレカスカスカスカスカスカスカスカスカスカスカスカスカスカスカスカスカスカス
http://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%95%E3%82%A1%E3%82%AF%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)
0471デフォルトの名無しさん
2007/07/22(日) 00:09:30死ね
0472デフォルトの名無しさん
2007/07/22(日) 03:33:290473デフォルトの名無しさん
2007/07/22(日) 03:35:280474デフォルトの名無しさん
2007/07/22(日) 03:39:450476デフォルトの名無しさん
2007/07/22(日) 10:54:00http://www.vector.co.jp/soft/winnt/prog/se366984.html
0477デフォルトの名無しさん
2007/07/22(日) 13:30:32フリーのエディタのソース読め。
0479デフォルトの名無しさん
2007/07/22(日) 16:57:15SELECT ID,NAME,ADDRESS FROM tTEST ORDER BY ID
の結果が入っているとする。
NAME順にDataTableを並び替えてセットしたい場合で
SELECT ID,NAME,ADDRESS FROM tTEST ORDER BY NAME
というSQLを発行することなく並び替えることは可能でしょうか?
自分でDataTableのソート処理を自作するのではなくDataTableのメソッドにそういう機能は無いでしょうか?
0480デフォルトの名無しさん
2007/07/22(日) 18:15:20プログラマは他人のソースを読むことを厭うては駄目だぞ
他人の作ったコンポーネントに頼るのも手段の一つだがいつか限界がくる
先を読んで研鑽しろ
それに下品な態度は人間としても駄目だ
0481デフォルトの名無しさん
2007/07/22(日) 18:58:500482472
2007/07/22(日) 18:59:480483デフォルトの名無しさん
2007/07/22(日) 20:11:07DataViewを使う
0484デフォルトの名無しさん
2007/07/22(日) 21:47:59SqlDataSourceを使うメリットはあるんでしょうか?
0485デフォルトの名無しさん
2007/07/22(日) 22:35:48#include<stdlib.h>
#include<math.h>
int main()
{
int i, count;
double x, y, pi, z;
char line[20];
line[0]='y'; ←この部分の意味が知りたいです。
srand( (unsigned int) time(NULL) );
while(1){
count=0; for (i = 1;i <= 10000000; i++) {
x = (double)rand() / (RAND_MAX + 1);
y = (double)rand() / (RAND_MAX + 1);
if(x*x + y*y < 1){ count++; }
pi=(double)count / i * 4 ;
z=fabs(M_PI - pi)/M_PI ;
if(i==100||i==1000||i==10000||i==100000||i==1000000||i==10000000){
printf("(%d)pi=%f(%f)\n",i,pi,z) ; }
} printf("もう一度やりますか(y/n)?");
gets(line); if(line[0] == 'n'||'N'){ break; }
} return 0; }
0486デフォルトの名無しさん
2007/07/22(日) 22:41:230487デフォルトの名無しさん
2007/07/22(日) 22:41:52ここはC#言語のスレ
C言語はスレ違い
次回からはこちらへどうぞ
http://pc11.2ch.net/test/read.cgi/tech/1184003625/
'y'は文字リテラルで「y」に対応する数値(0x79)を表す
で、その行はこの値をline配列の0番目に代入するって意味
0488デフォルトの名無しさん
2007/07/22(日) 23:01:20ボタンを押された(へこんだ)状態にする方法を教えてください。
キーボードでも操作できるようにしたいんですが、マウスを使った時と同じように、
KeyDownでフォーム上のボタンが押された状態にして、KeyUpで戻したいわけです。
button1のプロパティは探してみたのですが、ボタンの状態をどこで決めているのか、
どうしてもわかりませんでした。
0489デフォルトの名無しさん
2007/07/22(日) 23:02:510490デフォルトの名無しさん
2007/07/22(日) 23:06:36そういうコントロールは自作
0491デフォルトの名無しさん
2007/07/22(日) 23:08:430493デフォルトの名無しさん
2007/07/23(月) 00:08:500494デフォルトの名無しさん
2007/07/23(月) 20:02:080495デフォルトの名無しさん
2007/07/23(月) 20:12:330496デフォルトの名無しさん
2007/07/23(月) 20:20:00List<> を配列のように利用してfor文を作った時、forループ内で
listVariable.RemoveAt( i );
とした場合次に実行される要素が、ちゃんとRemoveされたiの次の要素になっているのはなぜでしょう?
0497デフォルトの名無しさん
2007/07/23(月) 20:24:020498デフォルトの名無しさん
2007/07/23(月) 20:27:000499デフォルトの名無しさん
2007/07/23(月) 20:32:50List<int> lst = new List<int>();
lst.AddRange( new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } );
for( int i = 0; i < lst.Count; i++ )
{
lst.RemoveAt( i );
}
// lst の内容→1,3,5,7,9
0500デフォルトの名無しさん
2007/07/23(月) 20:39:380501デフォルトの名無しさん
2007/07/23(月) 20:44:59どういういみ?
0502デフォルトの名無しさん
2007/07/23(月) 20:46:40お騒がせしてすいません。
0503デフォルトの名無しさん
2007/07/23(月) 21:25:500504デフォルトの名無しさん
2007/07/23(月) 22:47:470505デフォルトの名無しさん
2007/07/23(月) 22:49:47ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=33576&forum=7&7
0506デフォルトの名無しさん
2007/07/23(月) 22:52:33正式名称はStringだが、stringという別名で書いてもいい。
つまり同じ。
0507デフォルトの名無しさん
2007/07/23(月) 23:03:54何この回答者達
さんざんもったいぶった挙句、「IL見てみろ」てw
0508デフォルトの名無しさん
2007/07/23(月) 23:06:19プログラムで詰まっても大体誰も助けてくれない。
最後に頼るのは自分。
0509デフォルトの名無しさん
2007/07/23(月) 23:06:27回答者たちはヒントを与えて誘導してるからいいじゃまいか
0510デフォルトの名無しさん
2007/07/23(月) 23:12:510511デフォルトの名無しさん
2007/07/23(月) 23:14:37別の言語の情報を出してきたりIL見ろと勧めたりするのはさすがにないだろ
0512デフォルトの名無しさん
2007/07/23(月) 23:21:13stringはSystem.Stringの別名。
0513デフォルトの名無しさん
2007/07/23(月) 23:24:500514デフォルトの名無しさん
2007/07/23(月) 23:30:07そういうのを防衛機制という。
0515デフォルトの名無しさん
2007/07/23(月) 23:32:13質問に "解答"が来るとは限らないよw
ゆとり君w
0516デフォルトの名無しさん
2007/07/23(月) 23:34:43遊ばれてるようにしか見えない
0517デフォルトの名無しさん
2007/07/23(月) 23:42:07中学の英語の教科書も下に全部日本語訳書いとけよ。
0518デフォルトの名無しさん
2007/07/23(月) 23:52:50これを訳すのは車輪の再発明です。
0519デフォルトの名無しさん
2007/07/23(月) 23:54:52画像の回転についてなんですが、Graphics.RotateTransformで回転させる
ことは出来たのですが、回転軸を画像の中心に固定するにはどうしたらいいでしょうか?
0520デフォルトの名無しさん
2007/07/23(月) 23:57:28ttp://msdn2.microsoft.com/ja-jp/library/a0z3f662(VS.80).aspx
0521デフォルトの名無しさん
2007/07/24(火) 00:16:00それを使って画像の回転には成功したのですが、軸が(0, 0)に
なってしまうので、その軸を中心にするにはどうしたらいいのかなーと
思ったのですが…
Graphics.TranslateTransformあたりなんか関係ありますかね?
0522デフォルトの名無しさん
2007/07/24(火) 00:23:19回転する前に画像の中心を(0,0)に持ってくるんだ
0523デフォルトの名無しさん
2007/07/24(火) 00:34:23回転前にGraphics.TranslateTransformで移動したら上手くいきました!
ありがとうございました。
0524デフォルトの名無しさん
2007/07/24(火) 11:04:02ようにしたいのですが、設定が見つからずに困っています。
どうすればいいか、知ってる人がいたら教えていただけたら嬉しいです。
0525デフォルトの名無しさん
2007/07/24(火) 11:19:540526デフォルトの名無しさん
2007/07/24(火) 11:20:22それはドロップダウンリストって名前
プロパティ探してごらん
0528デフォルトの名無しさん
2007/07/24(火) 14:02:19なにやらアクセス修飾子の有無が違うのですがこれはどう違ってくるのでしょうか?
0529524
2007/07/24(火) 14:03:02ドロップダウンリストで最初に選択している値を指定するのって
VC#上では厳しいでしょうか?
SelectedIndexをわざわざ指定するとフォーカスが移動してしまうし、
簡単に指定できればなぁと思ってます
0530デフォルトの名無しさん
2007/07/24(火) 14:30:480531デフォルトの名無しさん
2007/07/24(火) 16:06:34明示的実装はそのインターフェイスに代入しないと使えない
0532デフォルトの名無しさん
2007/07/24(火) 16:48:06FormのDoubleBufferedプロパティをtrueにすると、なぜか描画が
表示されません。なぜでしょうか?
ちなみに、描画はFormのPaintイベントで行っています。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent(); // この中でDoubleBuffered=true; falseだと表示される
}
private void Form1_Paint( object sender, PaintEventArgs e )
{
Graphics g = this.CreateGraphics();
g.FillEllipse( Brushes.Red, rect ); // 表示部分
g.Dispose();
}
0533デフォルトの名無しさん
2007/07/24(火) 16:57:180534デフォルトの名無しさん
2007/07/24(火) 17:12:090535532
2007/07/24(火) 17:12:200536デフォルトの名無しさん
2007/07/24(火) 17:13:29ありがとうございました
0537デフォルトの名無しさん
2007/07/24(火) 17:17:21OnPaint 抜けてフリップするはずが CreateGraphicsで
表に描いちゃったからフリップで裏に行っちゃったのか。
0538デフォルトの名無しさん
2007/07/24(火) 18:05:140539デフォルトの名無しさん
2007/07/24(火) 18:06:420540デフォルトの名無しさん
2007/07/24(火) 18:08:30使う状況になったら設計を見直す
0541デフォルトの名無しさん
2007/07/24(火) 18:12:570542538
2007/07/24(火) 18:15:31スコープを付けるためじゃなくて、仕方なく低レベルな処理をするときに
unsafeと同じように後ろめたい気持ちを込めて使ってたんだけど
0543デフォルトの名無しさん
2007/07/24(火) 18:54:33ありがとうございます。
つまりeventとかprivateみたいに機能を制限する文法ってことですね。
0544デフォルトの名無しさん
2007/07/24(火) 19:03:14あと、メンバの名前が被るのを回避するのにも使える(というか多分それが目的)
0545デフォルトの名無しさん
2007/07/24(火) 20:42:27発行してみようと思ったのですが、発行元が信頼できない云々のメッセージがでてきて困ってます。
これってStandardEdtionを買えばVS2005の証明書の発行って可能になるのでしょうか?
0546デフォルトの名無しさん
2007/07/24(火) 20:46:550547デフォルトの名無しさん
2007/07/24(火) 20:56:20>困ってます
いったい、なにが困るのかおじさんに教えて欲しいなあ(怒)
フリーウェア入れたことないの???
0548デフォルトの名無しさん
2007/07/24(火) 21:13:33そりゃ困ると思うんだよ
0549デフォルトの名無しさん
2007/07/24(火) 21:15:260550デフォルトの名無しさん
2007/07/24(火) 21:19:08( )
| |
ヽ('A`)ノ コウカイスル!
( )
ノω|
__[警]
( ) ('A`)
( )Vノ )
| | | |
0551デフォルトの名無しさん
2007/07/24(火) 21:22:250552デフォルトの名無しさん
2007/07/24(火) 21:33:31自演乙!
0553デフォルトの名無しさん
2007/07/25(水) 04:02:05ACMFORMATCHOOSE構造体を以下のように宣言したのですが、なぜか
Marshal.SizeOf()でエラーが出ます。どうやら原因はStringBuilderのようなんですが、
どう解決したらいいかわかりません。一応MarshalAs属性はつけてるのですが…
よろしくお願いします。
0554368
2007/07/25(水) 04:04:51struct ACMFORMATCHOOSE
{
public uint cbStruct;
public uint fdwStyle;
public IntPtr hwndOwner;
public IntPtr pwfx;
public uint cbwfx;
[MarshalAs(UnmanagedType.LPStr)]
public string pszTitle;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 48)]
public char[] szFormatTag;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
public char[] szFormat;
0555553 続き
2007/07/25(水) 04:05:49public StringBuilder pszName;
public uint cchName;
public uint fdwEnum;
public IntPtr pwfxEnum;
public int hInstance;
[MarshalAs(UnmanagedType.LPStr)]
public string pszTemplateName;
public IntPtr lCustData;
[MarshalAs(UnmanagedType.FunctionPtr)]
public ACMFORMATCHOOSEHOOKPROCA pfnHook;
}
delegate uint ACMFORMATCHOOSEHOOKPROCA(IntPtr hwnd, uint uMsg, IntPtr wParam, IntPtr lParam);
改行規制が… orz
しかもなんか上の名前違うし orz
0556553
2007/07/25(水) 05:08:45structの中ではStringBuilderは使えないんですね…
0557デフォルトの名無しさん
2007/07/25(水) 18:06:24一般的な方法としてはyieldとかで自前でやるしかない?
0558デフォルトの名無しさん
2007/07/25(水) 18:09:19foreach(object item in source) if(item is T) yield return (T)item;
}
0559デフォルトの名無しさん
2007/07/25(水) 23:53:420560デフォルトの名無しさん
2007/07/26(木) 00:09:04using System.Collections.Generic;
namespace Hoge
{
public struct Enumerable<T> : IEnumerable<T>
{
private IEnumerable m_enumerable;
public Enumerable(IEnumerable enumerable)
{
m_enumerable = enumerable;
}
public IEnumerator<T> GetEnumerator()
{
return new Enumerator(m_enumerable.GetEnumerator());
}
IEnumerator IEnumerable.GetEnumerator()
{
return m_enumerable.GetEnumerator();
}
private struct Enumerator : IEnumerator<T>
{
private IEnumerator m_enumerator;
public Enumerator(IEnumerator enumerator)
{
m_enumerator = enumerator;
}
0561デフォルトの名無しさん
2007/07/26(木) 00:09:52public T Current
{
get { return (T)m_enumerator.Current; }
}
public void Dispose()
{
IDisposable disposable = m_enumerator as IDisposable;
if (disposable != null) disposable.Dispose();
}
object IEnumerator.Current
{
get { return m_enumerator.Current; }
}
public bool MoveNext()
{
return m_enumerator.MoveNext();
}
public void Reset()
{
m_enumerator.Reset();
}
}
}
}
なげーなおいw
0562デフォルトの名無しさん
2007/07/26(木) 00:11:080563デフォルトの名無しさん
2007/07/26(木) 00:13:520564デフォルトの名無しさん
2007/07/26(木) 00:40:48そして>>558が最初から含まれてるのがLINQだな。
// C# 3.0
object[] objs = new object[] { 0, "Hello", DateTime.Now };
IEnumerable seq = objs;
IEnumerable<string> strseq = objs.OfType<string>();
foreach (string item in strseq)
{
Console.WriteLine(item);
}
// Hello
0565デフォルトの名無しさん
2007/07/26(木) 00:42:25IEnumerable<string> strseq = seq.OfType<string>();
0566デフォルトの名無しさん
2007/07/26(木) 00:44:390567デフォルトの名無しさん
2007/07/26(木) 01:00:48いかにもプログラムって感じがしないので抵抗があるのはおれだけ?
0568デフォルトの名無しさん
2007/07/26(木) 01:06:13> コンパイル言語であるところのいかにもプログラムって感じ
意味が分かりません!
0569デフォルトの名無しさん
2007/07/26(木) 01:06:480570デフォルトの名無しさん
2007/07/26(木) 01:24:37てか、使わない方がいいと思う。
で、匿名型も、LINQ のクエリ構文の select 区以外ではあんまり使いたい機能じゃないし、
var はもう、LINQ 専用だと思っといた方がいいんじゃないかと。
0571デフォルトの名無しさん
2007/07/26(木) 01:38:45var使っててもIntelliSenseでその感じはちゃんと体験できるので安心しろ
書いた人限定だが
0572デフォルトの名無しさん
2007/07/26(木) 17:02:162つ同時に起動させると、SocketExceptionエラーが落ちて怒られる…。
具体的には、
tcpListener.Start();
の箇所で次のようなエラーが出ます。
「SocketExceptionはハンドルされませんでした。
通常、各ソケットアドレスに対してプロトコル、ネットワークアドレス、
またはポートのどれかのみを使用できます。」
ポート番号は違うものでacceptしてるのに、なぜ??
わかる方いらっしゃいますか?
0574572
2007/07/26(木) 17:09:18すみません。
0575デフォルトの名無しさん
2007/07/26(木) 18:35:120576デフォルトの名無しさん
2007/07/26(木) 18:48:440578デフォルトの名無しさん
2007/07/26(木) 23:32:07そういうケースが多い?
0579デフォルトの名無しさん
2007/07/26(木) 23:33:180580デフォルトの名無しさん
2007/07/26(木) 23:34:07後処理が必要なクラスなんてあんまりないし
0581デフォルトの名無しさん
2007/07/26(木) 23:38:450582デフォルトの名無しさん
2007/07/26(木) 23:39:350583デフォルトの名無しさん
2007/07/26(木) 23:59:25どんなdelegateを作って当ててやればいいでしょうか?
0584デフォルトの名無しさん
2007/07/27(金) 00:01:11http://www.google.com/codesearch?q=acmFilterEnum+lang%3AC%23
0585デフォルトの名無しさん
2007/07/27(金) 00:17:50何という検索
ありがとうございました。
unsafeか… orz
0586デフォルトの名無しさん
2007/07/27(金) 00:49:150587デフォルトの名無しさん
2007/07/27(金) 01:25:35refでも大丈夫ならいいのですが…
とりあえずrefでやってみます。
後、どっかにLP〜*となってるのを
素直にIntPtrで受けずにclassを作って
[StructLayout(LayoutKind.Sequential, Pack = 1)]
とかつけて使ってるのがあったんですが、これって常套手段ですか?
0588デフォルトの名無しさん
2007/07/27(金) 01:51:08Marshalくらすに便利なメソッド群あるし
0589デフォルトの名無しさん
2007/07/27(金) 02:16:18いや、LP〜*じゃなくてただのLP〜かな?
structの中のstructのポインタを指す部分に該当するstructを
classにして使ってるのがいくつかあったんですが、これは毎回毎回
IntPtrに変換しなくてもすむようにするため?
一応ToStruct()は積んでるみたいなんですが
0590デフォルトの名無しさん
2007/07/27(金) 08:55:080591デフォルトの名無しさん
2007/07/27(金) 18:35:27例えば
派生クラスコンストラクタ(int x) : base(x)
{
}
で、static readonly 変数の値を決定した場合、その変数は
1、同じ派生クラスでのみ共有されている。
2、派生クラスと基本クラスで共有されている。(必然的に別の派生クラス全てとも共有)
のどちらでしょうか?
0592デフォルトの名無しさん
2007/07/27(金) 18:40:540593デフォルトの名無しさん
2007/07/27(金) 18:43:390594デフォルトの名無しさん
2007/07/27(金) 22:00:13ツリービューからツリービューをコピーしたいのですが
元のツリービューのデータはデータベースのデータテーブルに入っています。
これをツリービューに直すやり方がわからなくて困っています。
データベースなど触ったことも無いので、ネットで探したのですが
探し方が悪いせいか、見つかりません。
宜しければ教えていただけるとうれしいです。
よろしくお願いします、
0595デフォルトの名無しさん
2007/07/27(金) 22:04:500596デフォルトの名無しさん
2007/07/27(金) 22:19:53レスありがとうございます
元のツリービューの名前が分からないので
どうやって指定すればいいのかわかりません。
一度ツリービューを入れてみようとしたのですが
nullになってしまってエラーが出てしまいました。
逆に難しく考えてしまっているんでしょうか?
0597デフォルトの名無しさん
2007/07/27(金) 22:27:20ここで説明するだけスペースないから
ツリービューとは何か調べなおしたらいい。
0598デフォルトの名無しさん
2007/07/27(金) 22:41:05ツリー(ノード)をコピーしたいってコト?
0599デフォルトの名無しさん
2007/07/27(金) 22:59:00一から作るやり方ならわかる程度なので
確かに解ったつもりになってるだけかもしれません・・・。
ちょっと調べてみます。
>>598
ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=32522&forum=7&10
コレのようなことをしたいです。
object node = treeView1.TopNode.Clone();
treeView2.Nodes.Add((TreeNode)node);
これの名前を修正して打ち込んでみたのですが
元が無いようでnullが出てしまいました・・・・
最初に.aspx?かなにかでデータベースの内容を取り出してからなら出来るんでしょうか・・・
とりあえず、TreeViewについてもうちょっと調べてみます。
0600デフォルトの名無しさん
2007/07/28(土) 00:33:45outを使う場合は変数に値をセットしてるとダメってだけ?
0601デフォルトの名無しさん
2007/07/28(土) 00:38:390602デフォルトの名無しさん
2007/07/28(土) 00:52:59outは出力用、refは入力用。
outはメソッドに渡す前に値をセットしててもしなくてもいい。
しかし渡した後、メソッドを抜ける前にはセットしなければならない。
refはメソッドに渡す前に値をセットしなければならない。
0603デフォルトの名無しさん
2007/07/28(土) 01:02:01>>602
入力用じゃなくて入出力用だろ
0604デフォルトの名無しさん
2007/07/28(土) 01:06:18それを言うならどちらも入出力用だが
0605デフォルトの名無しさん
2007/07/28(土) 01:10:16↑メソッド抜けてもoはoの指してたものを指してる
Method( ref object o );
↑抜けた後、もしかしたらoは違うものを指してるかもしれない
Method( out object o );
↑oが未初期化とかなんの値がはいってるとか関係なく
最低でも初期化されて何かの参照が入ってる(ことが要求される)
0606デフォルトの名無しさん
2007/07/28(土) 01:19:45void Method(object o) {
o.ToString();
o = new object();
// ↑newしたオブジェクトは呼び出し元と無関係
}
void Method(ref object o) {
o.ToString();
o = new object();
// ↑newしたオブジェクトは呼び出し元で参照できる
}
void Method(out object o) {
o.ToString();
// ↑コンパイルエラー。newするまでoは使用不可
o = new object();
// ↑newしたオブジェクトは呼び出し元で参照できる
}
0607デフォルトの名無しさん
2007/07/28(土) 01:27:45いいねこれ
0608デフォルトの名無しさん
2007/07/28(土) 02:16:27参照型の場合
Method( object o );
↑メソッド抜けてもoはoの指してたものを指してる
もちろんoのプロパティとかフィールドとかは変化してるかもしれない
Method( ref object o );
↑抜けた後、もしかしたらoは違うものを指してるかもしれない
もちろんoのプロパティとかフィールドとかは変化してるかもしれない
Method( out object o );
↑oが未初期化とかなんの値がはいってるとか関係なく
最低でも初期化されて何かの参照(null参照もありえる)が入ってる
(実装者はそれを要求される)
値型の場合
Method( STRUCTURE s );
↑メソッド抜けてもsはsの指してたものを指してる。つまり値は変化しない
sのフィールドも変化なし
Method( ref STRUCTURE s );
↑抜けた後、もしかしたらsは違うsになってるかもしれないし
sのフィールドは違う値が入ってるかもしれない
Method( out STRUCTURE s );
↑sが未初期化とかなんの値がはいってるとか関係なく
最低でも初期化されてる。
(実装者はそれを要求される)
0609デフォルトの名無しさん
2007/07/28(土) 05:22:460610デフォルトの名無しさん
2007/07/28(土) 05:34:19ツリーを別のツリーにコピーしたい、というより
まずは最初のツリー表示ができていないんじゃないの?
つまり
DBに格納されたXML文字列かなんかをツリー表示したい
ってのが質問の意図なんじゃないかと…?
(違ってたらゴメンな)
そこらへんがうまく伝わるように表現できないって事自体が
自分で何をしたら良いのかすら分かっていないので
もう少しポイントを絞って質問したほうが良いよ。
それだと >>597 のようにしか答えてもらえないよ。
0611デフォルトの名無しさん
2007/07/28(土) 08:28:11呼び出しもとのoはどうなっちゃうのでしょうか?
一緒に破棄されちゃうの?
void Method(ref object o) {
o.ToString();
o = new object();
// ↑newしたオブジェクトは呼び出し元で参照できる
}
0612デフォルトの名無しさん
2007/07/28(土) 08:31:080613デフォルトの名無しさん
2007/07/28(土) 08:40:40マジで?
じゃあ呼び出し元(クラスA)でDBに接続し、そのオブジェクトをrefで渡し
呼び出し先(クラスB)のデストラクタでDBを切断した場合、クラスAの
DBオブジェクトはどうなるんでしょうか?
切断されちゃってるよね?
0614デフォルトの名無しさん
2007/07/28(土) 09:16:28とりあえず DbConnection は必要な時に作ってデータとってすぐ破棄しろ。
0615デフォルトの名無しさん
2007/07/28(土) 12:21:12メソッドAをBeginInvokeを使って非同期で処理したい場合、メソッドAからコールするメソッドB、メソッドCについても
BeginInvokeが必要なのでしょうか?
メソッドA
→メソッドB
→メソッドC
0616デフォルトの名無しさん
2007/07/28(土) 12:21:46protected の逆で、基本クラスから派生クラスのメンバにアクセスできるアクセス修飾子ってないですかね?
0617デフォルトの名無しさん
2007/07/28(土) 12:23:330618デフォルトの名無しさん
2007/07/28(土) 12:31:51いいえ
何故試さない?
0619デフォルトの名無しさん
2007/07/28(土) 12:33:46そうかプロパティか!すばやい解答ありがとうございました!
0620デフォルトの名無しさん
2007/07/28(土) 12:35:11コンストラクタで定数を指定じゃだめか?
0622デフォルトの名無しさん
2007/07/28(土) 12:37:21そもそもそういう超がつくほどの愚問を発する時点で、非同期処理に対する正しい理解が
欠如していると思われる。
0623デフォルトの名無しさん
2007/07/28(土) 12:41:33そうですね。勉強して出直してきます。
0624デフォルトの名無しさん
2007/07/28(土) 12:43:22何百もインスタンス作るのでインスタンス変数避けてstatic かつ readonly な 変数にしたいんですよ。
0625デフォルトの名無しさん
2007/07/28(土) 12:46:450626デフォルトの名無しさん
2007/07/28(土) 12:53:54「定数(というか、ReadOnlyメンバ)クラス」のインスタンスを
静的なフィールドで持たせるようにすればいいんじゃない?
0627デフォルトの名無しさん
2007/07/28(土) 14:55:100628デフォルトの名無しさん
2007/07/28(土) 16:03:06何をいいたいのかよく分からないが、要はvirtualまたはabstructなリードオンリーの
プロパティを、単にstatic readonlyなフィールドを返すような実装にして、
そのstatic readonlyなフィールドの初期化は各派生クラスの静的コンストラクタで
行うようにするだけの話だよ。
0629デフォルトの名無しさん
2007/07/28(土) 17:10:420630デフォルトの名無しさん
2007/07/28(土) 19:50:06invokeとはいったいどういったメソッドなのでしょうか
〜のinvokeとか・・・のinvokeとかは聞き
deligateをじっこうさせれるとか・・・
有用性をどなたか教えてください。お願いします。
0631デフォルトの名無しさん
2007/07/28(土) 20:03:57ほとんど使ったこと無い。
0632デフォルトの名無しさん
2007/07/28(土) 20:17:07マルチスレッドプログラム作るなら必要になるかな
http://www.stackasterisk.jp/tech/dotNet/csharp07_01.jsp
0633デフォルトの名無しさん
2007/07/28(土) 21:19:00送りバントって使う?
ほとんど使ったこと無い。
エアコンの除湿って使う?
ほとんど使ったこと無い。
犬用虫下しって使う?
ほとんど使ったこと無い。
コンドームって使う?
ほとんど使ったこと無い。
0634デフォルトの名無しさん
2007/07/28(土) 22:03:150635デフォルトの名無しさん
2007/07/28(土) 22:06:31何か参考になるサイトがあればお教えて頂けますか?
※荒らし目的ではありませんので、悪しからず。
0636デフォルトの名無しさん
2007/07/28(土) 23:13:390637デフォルトの名無しさん
2007/07/28(土) 23:23:12"Don't Repeat Yourself"?
ドライって何?
0638デフォルトの名無しさん
2007/07/28(土) 23:24:31TrayParseを使わないとダメなのでしょうか?
皆さんはこんな感じでロジックを組んでいるのでしょうか?
IsNumeric関数のように対象文字列だけ引数に入れるような関数は無いのでしょうか?
int nNull;
if (!int.TryParse(this.text1.Value.ToString(), out nNull))
{
this.text1.Value = "0";
}
0639デフォルトの名無しさん
2007/07/28(土) 23:25:47そんな関数自分でつくればいいじゃん。馬鹿らしい。
0640デフォルトの名無しさん
2007/07/28(土) 23:46:040641名無しさん@そうだ選挙に行こう
2007/07/29(日) 01:38:07別に処理の共通化したいならインターフェースでいい、みたいな考えなもんで
0642名無しさん@そうだ選挙に行こう
2007/07/29(日) 01:42:090643名無しさん@そうだ選挙に行こう
2007/07/29(日) 08:47:58使わなくても不可能ではないけど
0644名無しさん@そうだ選挙に行こう
2007/07/29(日) 10:05:41virtualをつけないとだめなの?
逆に言うと、overrideされたくない場合はvirtualを付けなければ良いと。
0645名無しさん@そうだ選挙に行こう
2007/07/29(日) 10:12:29もとのクラスが想定していない継承やoverrideはさせないというのがC#の基本思想。
これについては賛否はあるが、C#ではそういうやり方を選んだ。
0646名無しさん@そうだ選挙に行こう
2007/07/29(日) 10:20:040647名無しさん@そうだ選挙に行こう
2007/07/29(日) 10:22:14オーバーライドにはならないけどあくまで気休めに
0648お願いします。
2007/07/29(日) 10:26:22コードを教えて下さい。
せめて参考になるサイトがあれば非常に助かります。
お願いします!!
0649名無しさん@そうだ選挙に行こう
2007/07/29(日) 10:34:02http://tasiro.simurgh.be/
0650お願いします。
2007/07/29(日) 10:48:19WEBシステムなので出来ればクライアント(VB.net / C#)で
で掲示板に対して自動書込みを行うコードを教えて下さい。
※参考URLでも結構です。
0651名無しさん@そうだ選挙に行こう
2007/07/29(日) 11:50:12死ね
0652名無しさん@そうだ選挙に行こう
2007/07/29(日) 12:35:14わざわざ自分でデリゲート自体の宣言をしなくてするためのものと考えて良いんでしょうか?
0653名無しさん@そうだ選挙に行こう
2007/07/29(日) 12:39:46それでOK
0654名無しさん@そうだ選挙に行こう
2007/07/29(日) 17:07:46みたのですが、WM5エミュレータ上ではとりあえず動くようになったものの、
実機で試してみると、端末で関連付けられたブラウザでHTMLファイルが開かれて
しまい、作ったアプリでHTMLファイルを開くことができません。
関連付けを無視して自作のアプリで端末上のHTMLファイルを開く方法を教えて
いただけませんでしょうか・・・
アプリにはmainWBという名前でWebbrowserを配置し、mainWB.navigate(ファイルパス)
やmainWB.url=(ファイルパス)で端末上のHTMLファイルを開こうとしています。
0655名無しさん@そうだ選挙に行こう
2007/07/29(日) 20:02:41他のメーラーで、一度送受信した後で製作中のプログラムを走らせると
認証が通るので、以下の部分で認証出来てないと思うのですが・・・
どこかまずいとこあればお願いします。
TcpClient tcp = new TcpClient();
sw = new StreamWriter(tcp.GetStream());
sw.Write("USER testuser\nPASS testpass\nQUIT\n");
0656名無しさん@そうだ選挙に行こう
2007/07/29(日) 20:12:50ネットワークプログラム作るなら規格読めよ。
まず、POP3は対話型プロトコルだ。
0657名無しさん@そうだ選挙に行こう
2007/07/29(日) 20:19:07BitConverterを使う以外の方法ってありますか?
C言語で表現すると
char[128] arr;
unsigned int* p = (unsigned int*)&arr[80];
p[0] = 0xFFFF0000;
p[1] = 0xF0F08080;
そもそもあんまり褒められたやり方じゃない気がしますが・・・
0658名無しさん@そうだ選挙に行こう
2007/07/29(日) 20:20:200659デフォルトの名無しさん
2007/07/29(日) 20:30:230660657
2007/07/29(日) 20:38:38なるべくunsafeは使いたくなかったんですが、検討してみます
0661デフォルトの名無しさん
2007/07/29(日) 20:46:000662デフォルトの名無しさん
2007/07/29(日) 20:57:52マジですか。誤解してた
勉強してでなおしてきます
0663デフォルトの名無しさん
2007/07/29(日) 21:16:17ありがとうございます。
アレコレ調べてtelnetでメールの本文取得できるくらいは分るのですが、
ググるとこれで認証できると書いてるサイトが2,3つ出てくるので・・・信じ切ってました。
対話的に処理を書き直してみます。
0664デフォルトの名無しさん
2007/07/29(日) 21:23:50抽象クラスはインスタンス化できませんよね。
抽象メソッドってインターフェースと同じ気がするのですが
インターフェースだったら抽象クラスになっちゃうような影響は無いんで
抽象メソッドを使うんだったらインターフェースを使った方が良いんですよね?
抽象メソッドのメリットっていったい・・・
0665デフォルトの名無しさん
2007/07/29(日) 21:26:590666デフォルトの名無しさん
2007/07/29(日) 21:27:440667デフォルトの名無しさん
2007/07/29(日) 21:29:14抽象クラスとインターフェイスの使い分けのガイドラインがMSDNにあるからよんどくといいよ。
0668デフォルトの名無しさん
2007/07/30(月) 00:38:51インターフェースは全てのメソッド定義が必要で取捨できないじゃん
0669デフォルトの名無しさん
2007/07/30(月) 05:13:59どういうキーワードでたぐって勉強していけばよいですか?
0670デフォルトの名無しさん
2007/07/30(月) 09:29:34それなら普通にC++から使うのと同じはずだから情報も沢山あるでしょ
0671デフォルトの名無しさん
2007/07/30(月) 09:45:380672デフォルトの名無しさん
2007/07/30(月) 16:31:24タスクマネージャのプロセス一覧の様なコントロールって
なんていう名前なのでしょうか?
DataGridViewじゃないみたいだし…
0673デフォルトの名無しさん
2007/07/30(月) 16:35:570674デフォルトの名無しさん
2007/07/30(月) 16:36:010675デフォルトの名無しさん
2007/07/30(月) 16:49:35ありがとうございます!
0676デフォルトの名無しさん
2007/07/30(月) 17:44:46追加できるようになるよなあ
0677デフォルトの名無しさん
2007/07/30(月) 18:57:210679デフォルトの名無しさん
2007/07/30(月) 21:53:56例えば、次の様な文字列が存在するとして、
あああabcdefg★1234tomato.jpあああ
★の左側
★の右側
にある文字列のうち全角文字が出て来るまで取得する
プログラムを作っているのですが、判定時に全角文字(あいう・・・)
を判定するにはどうすれば良いでしょうか?
ここでは最終的に、
abcdefg★1234tomato.jp
を取得したいと考えています。
(REGX等を使うのではなく全角かどうかを判定する.NET関数は
用意されていますか?)
0680デフォルトの名無しさん
2007/07/30(月) 21:58:510681デフォルトの名無しさん
2007/07/30(月) 22:08:20全角は前時代のもの。
シフトJISで判定。
0682デフォルトの名無しさん
2007/07/30(月) 22:55:31catchでエラー画面にResponse.Redirectで遷移し、ついでにResponse.End()もやってるんだけど
これってやばい?
Resonse.RedirectってResponse.End()ってやらないとすぐに遷移しないですよね。
それがヤダ。
画面が全部表示しきってから遷移するんだもんなぁ。
これって何とかならんの?
Response.End()やるしかない?
0684デフォルトの名無しさん
2007/07/30(月) 22:59:56s-jisでエンコードしてバイナリを読めば簡単に判定できるって意味でしょ恐らく。
っていうかググると簡単に答え見つからないか?
0685デフォルトの名無しさん
2007/07/30(月) 23:00:48はいいのか?w
0686デフォルトの名無しさん
2007/07/30(月) 23:01:080687デフォルトの名無しさん
2007/07/31(火) 00:23:10なんで正規表現だめなの?
[1-9]とか、[a-Z]のが格段に楽だと思うけど
0688679
2007/07/31(火) 00:35:20ああ、そういう意味ですか。理解できました。ありがとうございます。
もっと勉強しなくてはなりませんね。
>>685
、、、そうでした、それも困りますね。
>>686
勉強します。
>>687
ダメという訳では無いのですが私個人の趣味の問題で、
使いたくなかっただけです。
しかしながら >>685さんよりご指摘を頂きましてやは
り正規表現を使う方が無難かと思い始めて参りました。
0689デフォルトの名無しさん
2007/07/31(火) 00:44:050690デフォルトの名無しさん
2007/07/31(火) 01:03:26半角全角って区別が前時代的って>>681さんが言ってるニュアンスを理解してください
そんな区別は(多分)日本にしか存在してないでしょう
0691デフォルトの名無しさん
2007/07/31(火) 01:07:070692デフォルトの名無しさん
2007/07/31(火) 01:07:450693デフォルトの名無しさん
2007/07/31(火) 01:26:16また、(非英米環境で)文字列処理をしたいのなら文字エンコーディングの知識は
必須なのに、なぜこれだけ軽視されているのだろう。
0694デフォルトの名無しさん
2007/07/31(火) 01:37:210695デフォルトの名無しさん
2007/07/31(火) 01:40:170696デフォルトの名無しさん
2007/07/31(火) 01:41:08あまりにも必須であり初期に出会う問題なため、
とりあえずその時作ってる物が動くようになったらそれ以上詳しいことは深追いせずに
そのまま放置して来てしまう人が多いのではなかろうか。
俺の事のような気がしてきたけど。
0697デフォルトの名無しさん
2007/07/31(火) 01:42:41本とかで学習する場合、おすすめの本とかありますか?
0698デフォルトの名無しさん
2007/07/31(火) 01:50:46なるほど。
でも、シフトJISでそれほど苦労せずに組めているM$環境の人は、買ってでも
した方がいい苦労の様な気がするな。なんで未だにシフトJISなんだ、てのをもっと
感じて欲しい。
0699デフォルトの名無しさん
2007/07/31(火) 01:57:280700デフォルトの名無しさん
2007/07/31(火) 02:10:570701688
2007/07/31(火) 02:15:57ずばりそうです。
>>690
頑張ります。
>>692
正規表現は、バッチリです。(???)
業務で使うあらゆるパターンを控えておりますので。。。
0702デフォルトの名無しさん
2007/07/31(火) 02:36:240703デフォルトの名無しさん
2007/07/31(火) 11:12:270704デフォルトの名無しさん
2007/07/31(火) 11:20:570705デフォルトの名無しさん
2007/07/31(火) 13:23:21どうしたらいいんでしょうか?
0706デフォルトの名無しさん
2007/07/31(火) 13:59:070707デフォルトの名無しさん
2007/07/31(火) 14:20:46それだとテキストの指定とコピーができないですよね。
0708デフォルトの名無しさん
2007/07/31(火) 15:20:21「型または名前空間名 'DirectX' は名前空間 'Microsoft' に存在しません。アセンブリ参照が不足しています。」
って出たんですけど、どうすればいいのですか?
0709デフォルトの名無しさん
2007/07/31(火) 15:21:540710デフォルトの名無しさん
2007/07/31(火) 15:22:040711デフォルトの名無しさん
2007/07/31(火) 15:24:58ここ見てみて
http://www.microsoft.com/japan/msdn/vs05/vcsharp/usingcsharpexpress.aspx
0712デフォルトの名無しさん
2007/07/31(火) 15:32:00for(j = 0; j < 8; j++)
{
// 次の値の方が小さい場合
if(iArray[j + 1] < iArray[j])
{
iTemp = iArray[j + 1]; // 数値の保持
iArray[j + 1] = iArray[j]; // 数値の代入
iArray[j] = iTemp; // 保持した数値の設定
}
}
これをクイックソートに書きおなしてみるべしw
誰が一番早いかな??
0713デフォルトの名無しさん
2007/07/31(火) 15:35:36DirectXを追加すればいいのですか?
夏期休暇から始めたんでまだぜんぜんわかんないんです
>>711
ありがとうございます
見ときます
0714705
2007/07/31(火) 16:04:180715デフォルトの名無しさん
2007/07/31(火) 17:25:23iArray[j + 1] あたりでIndexOutOfRangeExceptionが出そうなコードだな
0716デフォルトの名無しさん
2007/07/31(火) 18:23:46なんだその意味不明なコードは
0717デフォルトの名無しさん
2007/07/31(火) 18:24:400718デフォルトの名無しさん
2007/07/31(火) 18:45:45セルを選択した時その座標にReadOnlyのテキストボックスを配置する。
0719デフォルトの名無しさん
2007/07/31(火) 18:49:21Managed DirectXはインストールしてあるの?
(今更Managed DirectXに手を出すのはやめといた方がいいと思うよ)
0720デフォルトの名無しさん
2007/07/31(火) 20:41:18自作のコントロールをコンテナとして使うにはどうしたらいい?
Panelみたいに、その中にコントロールを追加したいんだが。
0721デフォルトの名無しさん
2007/07/31(火) 20:42:310722デフォルトの名無しさん
2007/07/31(火) 20:45:03Panelを継承したらRADで編集できなくならね?
てかなったw
0723デフォルトの名無しさん
2007/07/31(火) 20:47:160724デフォルトの名無しさん
2007/07/31(火) 20:48:210725デフォルトの名無しさん
2007/07/31(火) 21:50:32例えば横10文字縦10文字として
超えれば入力できない、貼り付けだったら10*10に入る分だけ表示したいのですが
どうすればいいでしょうか?
0726デフォルトの名無しさん
2007/07/31(火) 22:35:42でなきゃ何のためのプログラマだよ。
馬鹿じゃないの?
プログラミングに関する質問というのはそういう漠然としたことを聞くものじゃないだろ?
0727デフォルトの名無しさん
2007/07/31(火) 22:44:48とりあえずKeyPressイベントを見て云々すれ。
入力をキャンセルするにはe.Handled = true;
0728デフォルトの名無しさん
2007/07/31(火) 22:52:260729デフォルトの名無しさん
2007/07/31(火) 22:59:130730デフォルトの名無しさん
2007/07/31(火) 23:04:45終わりとはどういう意味だ?
0731デフォルトの名無しさん
2007/07/31(火) 23:28:400732デフォルトの名無しさん
2007/07/31(火) 23:29:50普通は例外が「スローされる」ことを例外が発生したとかいう。
0733デフォルトの名無しさん
2007/08/01(水) 00:09:40throw Excetion();
} catch {
try {
throw Exception();
} catch {
try {
throw Exception();
} catch {
…
}
}
}
0734デフォルトの名無しさん
2007/08/01(水) 17:00:280735デフォルトの名無しさん
2007/08/01(水) 17:02:470736デフォルトの名無しさん
2007/08/01(水) 18:37:44{
throw new Exception();
}
finally
{
throw new Exception();
}
0737デフォルトの名無しさん
2007/08/01(水) 21:53:55registryKey.SetValue( valName, (long)hwnd, RegistryValueKind.QWord );
とレジストリに書き込んだハンドルを
IntPtr hwnd = (IntPtr)(long)registryKey.GetValue( valName, 0 );
としてるところで例外が出ると報告がありました。
32bitマシンしかもってないんでテストできないんですが
ここでInvalidCastExceptionが出るとしたら何ででしょう?
また正しいコードはこうだ、ってあったら教えてくんださい
0738デフォルトの名無しさん
2007/08/01(水) 21:57:530739デフォルトの名無しさん
2007/08/01(水) 22:07:17フォーム自体からフォーカスが外れてもLeaveイベントが呼ばれないのはなぜ?
キャレットを非表示にしたいんだが。
0740デフォルトの名無しさん
2007/08/01(水) 22:34:24textboxみたいなコントロールはフォーム?
フォームのLeaveイベントと自作コントロールの関係がよくわからんけど、
overrideしてるとこにbase.OnLeaveを書いてないからとか。
0741デフォルトの名無しさん
2007/08/01(水) 22:48:070742デフォルトの名無しさん
2007/08/01(水) 23:06:05例外とは関係ないけどなんでまたウインドウハンドルなんかをレジストリに?
読み出したときに同じウインドウを指してる保障なんてないよ。
0743737
2007/08/01(水) 23:19:51どういうことですか?
64bit環境のIntPtrってInt64であらわせないすか?
>>742
一応ウインドウが閉じる時に消してます
(long)GetValue(..)
はいけてますよね?(QWordで保存されてるんだから)
(IntPtr)(long)
がいけないのかな……
0744デフォルトの名無しさん
2007/08/01(水) 23:27:42でも何でレジストリ?
0745デフォルトの名無しさん
2007/08/01(水) 23:42:58レジストリに保存した後、読み出して使っても有効な値のIntPtrってどういうもんだよ?
レジストリに書かなくても処理できるようなものじゃないのか?
0746デフォルトの名無しさん
2007/08/01(水) 23:46:03なんだか。
UINT64
0747デフォルトの名無しさん
2007/08/01(水) 23:49:27多重起動可能でそれぞれでハンドル使いまわしているんじゃないか?
0748737
2007/08/02(木) 00:04:10まあそんな感じです。
でも聞きたいのはそっちじゃなくてキャストの例外の話なんです(T_T)
>>746
(IntPtr)(UInt64)GetValue(...);
ってことですか?
(UInt64)GetValue(...)でInvalidCastExceptionでました。。。
まあ教えてくださっても自分じゃテストできないわけですが
0749デフォルトの名無しさん
2007/08/02(木) 00:13:320750デフォルトの名無しさん
2007/08/02(木) 00:43:37キャストせずにIntPtr.ToInt64()とIntPtrのlongを引数に持つコンストラクタでいいんでない?
0751デフォルトの名無しさん
2007/08/02(木) 00:58:070752デフォルトの名無しさん
2007/08/02(木) 01:05:16あれってキャストしてませんよね。
C#ではあのような演算のとき、暗黙の型変換をサポートしてるって事でしょうか?
0753デフォルトの名無しさん
2007/08/02(木) 01:12:290754デフォルトの名無しさん
2007/08/02(木) 01:20:28ずばり解答のサイトありがとうございます。
0755デフォルトの名無しさん
2007/08/02(木) 01:22:270756デフォルトの名無しさん
2007/08/02(木) 01:47:38実際に使用する場合は[Flags] を列挙体定義時に先頭に添えるようです。
0757デフォルトの名無しさん
2007/08/02(木) 06:00:24System.Security.Cryptography.RNGCryptoServiceProvider rng =
new System.Security.Cryptography.RNGCryptoServiceProvider();
rng.GetBytes(random);
6桁のランダムな整数を取得したいのですが上記では3桁ほどの
整数しか取得できません。
どのように変更すれば6桁のランダムな整数を取得できるでしょうか?
0758デフォルトの名無しさん
2007/08/02(木) 09:08:540759デフォルトの名無しさん
2007/08/02(木) 09:13:54byteだから255までしか出てこないんでないの?
999999までの乱数が欲しいなら
Random.Next(1000000)
0760デフォルトの名無しさん
2007/08/02(木) 09:25:330761デフォルトの名無しさん
2007/08/02(木) 11:05:15textBox1,textBox2,textBox3 というコンポーネントがあって
for (i = 1; i <= 3 ;i++) {
textBox_i.text = "ほげほげ";
}
という感じに指定したいのですが、いい方法ありますでしょうか?
0762デフォルトの名無しさん
2007/08/02(木) 11:10:08Reflectionで可能だが、その前にコンポーネントの配列で
代用できないか検討してからにしろよ。
0763デフォルトの名無しさん
2007/08/02(木) 11:12:05お勧めしないけど
0764761
2007/08/02(木) 11:31:29ありがとうございます。
コンポーネントを配列に入れるという方法がありましたね。
今VC#のデザイン画面?にテキストボックスをいくつか並べて、
ボタンを押したらすべてのテキストボックスにデータベースから取得した値をそれぞれ表示するというプログラムを作っています。
デザイン画面を配列で指定することはできないので、ReflectionやControlsというものについて調べてみます。
ありがとうございます。
0765デフォルトの名無しさん
2007/08/02(木) 13:49:03List<TextBox> list = new List<TextBox>();
list.Add(textBox1);
list.Add(textBox2);
list.Add(textBox3);
ってするだけじゃないのか?
0767デフォルトの名無しさん
2007/08/02(木) 15:11:26今waveファイルの合成処理をするメソッドを書いているのですが、
どうにもぷちぷちとノイズが乗ってしまいます。
//16bit 44.1kHz
sbyte src1;
sbyte src2;
int t = src1 & src2;
こうしたのが一番いいような気もするのですが、単純に足したときとほとんど
変わりません。
なにかヒント、または誘導先を教えていただけないでしょうか?
0768デフォルトの名無しさん
2007/08/02(木) 15:15:31http://www.codeplex.com/naudio
こんなのがあるから読んでみたら
0769デフォルトの名無しさん
2007/08/02(木) 15:29:020770デフォルトの名無しさん
2007/08/02(木) 15:30:290771デフォルトの名無しさん
2007/08/02(木) 15:41:01IEnumerable<ListViewItem> getEnumerator(){foreach(ListViewItem item in ListView.Items) yield return item; }
list = new List<ListViewItem>(getEnumerator());
0772デフォルトの名無しさん
2007/08/02(木) 15:47:34今外出中なので後で見てみます。
ありがとうございました。
0773デフォルトの名無しさん
2007/08/02(木) 22:33:29>int t= src1 & src2:
何の処理??????
sbyteは -128 〜 127
0774デフォルトの名無しさん
2007/08/02(木) 23:14:590775767
2007/08/03(金) 00:05:45すいません、古い方の処理書いてました orz
//16bit 44.1kHz
byte src1;
byte src2;
int t = src1 + src2;
if(t > 256)
{
t %= 255
}
//ネット繋がらない orz
0776デフォルトの名無しさん
2007/08/03(金) 00:08:27{
t %= 255
}
なんの冗談だ。
0777デフォルトの名無しさん
2007/08/03(金) 00:16:32byte src1;
byte src2;
あれ?
0778デフォルトの名無しさん
2007/08/03(金) 00:24:52その判定でtrueの場合
t %= 255 変
大きな合成音のとき小さくなる?
byte src1; 変
0779デフォルトの名無しさん
2007/08/03(金) 00:25:41WAVEファイルの事はよく知らないけど255を超えたら255にしたかったんじゃないの?
int t = src1+src2;
if(t>255)t = 255;
それか二つの波の平均をとるのは?
int t = (src1+src2)>>1;
0780デフォルトの名無しさん
2007/08/03(金) 05:24:05単純な合成はクリッピングするんじゃなくて、全データを足して2で割るんだよ。
足したところでキャリーオーバーが発生しないように型を変換して、計算してから
また元の型に戻すのがポイント。
0781デフォルトの名無しさん
2007/08/03(金) 05:36:3416bitで量子化してんだからbyte型じゃまずいだろ。元のデータはMSのC#ならushort型だ。
(wavデータの内部形式は符号無し)
これをまず符号付きのint型に変換する。次に32768を引く。
2つのデータを足して2で割ったら再び32768を足してushortに戻す。
これでいけるはず。
間違ってたらスマソ。
0782781
2007/08/03(金) 05:55:43こうだな。
ushort src1, src2, t;
t = (ushort)((((((int)src1 - 32768) + ((int)src2 - 32768))) >> 1 ) + 32768);
0783デフォルトの名無しさん
2007/08/03(金) 08:12:070784デフォルトの名無しさん
2007/08/03(金) 08:27:220785デフォルトの名無しさん
2007/08/03(金) 09:53:180786デフォルトの名無しさん
2007/08/03(金) 10:38:070787デフォルトの名無しさん
2007/08/03(金) 13:29:29あほなこというな
0788デフォルトの名無しさん
2007/08/03(金) 13:33:360789デフォルトの名無しさん
2007/08/03(金) 14:05:41波の重ね合わせって割ったら意味ないような…
>>781
ushortか…
でも、生データのbyte配列ままなんでそのままシフトしてshortにキャストすれば引く処理は必要なくなりますか?
0790デフォルトの名無しさん
2007/08/03(金) 16:37:11TestソリューションにAプロジェクトとBプロジェクトを追加し
Bプロジェクトの参照設定で、Aプロジェクトを追加しました。
Bプロジェクトに追加されたAプロジェクトはローカルにコピーしないを設定しました。
これで実行すると、Aプロジェクトがどこにあるか分からない的なエラーが出るのですが
どう改善したら良いのでしょうか?
A.dllをグローバルアセンブリキャッシュに登録しないやり方があれば教えてください。
0791デフォルトの名無しさん
2007/08/03(金) 16:57:15目的は,2値画像の縮小です.
縮小する際に,1画素ずつとばして格納したいのです.
原画像[0][0]→Bitmap[0][0]に格納したら,
原画像[0][2]→Bitmap[0][1]に格納する.
というように,1画素飛ばしで格納していき,
最終的には原画像を0.5倍したいと考えております.
どのような,プログラムを組めばいいのでしょうか?
for文でまわそうとしても,エラーが出てフリーズしてしまいます・・・
よろしくお願いします.
0792デフォルトの名無しさん
2007/08/03(金) 17:00:11「そのように書く」としかいいようがない質問だな・・・
どんなエラーが出るのか書かないと答えようがないよ。
0793デフォルトの名無しさん
2007/08/03(金) 17:02:10どんなエラーがでるのさ。
0794デフォルトの名無しさん
2007/08/03(金) 17:03:250795791です
2007/08/03(金) 17:07:18for(j = 0; j < pictureBox1.Width; j+2)
{
col = img.GetPixel(i,j);
gray = col.R;
bmp.SetPixel(i,j,Color.FromArgb(gray,gray,gray));
}
}
とかくと・・・
System.ArgumentException のハンドルされていない例外が
system.drawing.dll で発生しました。
追加情報 : 使用されたパラメータが無効です。
とでてきます.
imgが原画像でbmpが新しく用意した格納先です.
0796デフォルトの名無しさん
2007/08/03(金) 17:08:50あと書き込む先は1/2しなくていいのかい
0797791です
2007/08/03(金) 17:13:15Bitmap bmp = new Bitmap(pictureBox1.Width / 2 , pictureBox1.Height / 2);
書き込む先は,上記のようにしていますが・・・
根本的に考え方が間違っているのでしょうか?
0798デフォルトの名無しさん
2007/08/03(金) 17:14:26こっちだよ
bmp.SetPixel(i/2,j/2,Color.FromArgb(gray,gray,gray));
じゃないのか
0799791です
2007/08/03(金) 17:18:58割り当て、呼び出し、インクリメント、デクリメント、および新しいオブジェクトの式のみがステートメントとして使用できます。
というエラーが出てきます(汗
0800デフォルトの名無しさん
2007/08/03(金) 17:21:16それは i + 2 のほうじゃないの?
i += 2でやってみそ
0801デフォルトの名無しさん
2007/08/03(金) 17:24:55{
for (int j = 0; j < source.GetLength(1); j += 2)
{
target[i / 2, j / 2] = source[i, j];
}
}
0802791です
2007/08/03(金) 17:26:16だめでした・・・
'System.ArgumentException' のハンドルされていない例外が
system.drawing.dll で発生しました。
追加情報 : 使用されたパラメータが無効です。
ちなみに,今書いているプログラムは↓
private void button4_Click(object sender, System.EventArgs e)
{
int i,j,gray;
Color col;
Bitmap img = new Bitmap(pictureBox1.Image);
Bitmap bmp = new Bitmap(pictureBox1.Width,pictureBox1.Height);
for(i = 0; i < pictureBox1.Height; i+=2){
for(j = 0; j < pictureBox1.Width; j+=2)
{
col = img.GetPixel(i,j);
gray = col.R;
bmp.SetPixel(i/2,j/2,Color.FromArgb(gray,gray,gray));
}
}
pictureBox1.Image = bmp;
//イメージに合わせてPictureBoxのサイズを変更
pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize;
}
0803デフォルトの名無しさん
2007/08/03(金) 17:28:45そのエラーが出た時点で、どの関数のどの引数がいくつになってるから発生したのか
すぐに調べられるだろ?
0804デフォルトの名無しさん
2007/08/03(金) 17:34:540805791です
2007/08/03(金) 17:39:30本当に初心者なのでこの板で質問していました.
(初心者用ということなので…)
>>804
iとjを逆にしてもフリーズしてしまいます.
この↓
col = img.GetPixel(i,j);
が,フリーズしたときに緑色になっています.
0806デフォルトの名無しさん
2007/08/03(金) 17:42:21今後のためにも、エラーで止まったらどうすればいいのかは自分でできるようになっとくといいよ
とりあえず、i と j が逆なのはわかった(x,yと置き換えるとわかりやすいぞ)
1箇所変える位じゃすまないから、for文の Height と Width を入れ替えてみ
0807デフォルトの名無しさん
2007/08/03(金) 17:42:41x,yでループ回せよ。
for(x = 0; x < pictureBox1.Width; x+=2)
ってな……
0808791です
2007/08/03(金) 17:46:46できました!画像の縮小!
とても助かりました.
エラーがでたとき,もっと色々考えるべきことはたくさん
ありますね・・・(反省
0809デフォルトの名無しさん
2007/08/03(金) 17:51:250810791です
2007/08/03(金) 17:53:10ピクチャボックスの大きさはだめなんですか?!
0811デフォルトの名無しさん
2007/08/03(金) 17:55:09汎用性もない
0812791です
2007/08/03(金) 17:58:450813デフォルトの名無しさん
2007/08/03(金) 18:00:05変数の上に乗っけりゃパラメタがわかるし、ローカルというウィンドウの
$exception に詳しい理由が書いてあることもある。
0814デフォルトの名無しさん
2007/08/03(金) 18:02:37ピクチャーボックスの高さは pictureBox1.Height だが
イメージの高さは pictureBox1.Image.Height だろう
0815791です
2007/08/03(金) 18:03:26了解です!
勉強になります.
0816デフォルトの名無しさん
2007/08/03(金) 18:08:590817デフォルトの名無しさん
2007/08/03(金) 18:10:49意外と速いんで驚いた。
0818791です
2007/08/03(金) 18:12:25確かに・・・そうですね.
気をつけます!
0819デフォルトの名無しさん
2007/08/03(金) 18:18:27画像処理について詳しいかたいらっしゃいますか?
ラベリング処理でなやんでいます
0820デフォルトの名無しさん
2007/08/03(金) 18:20:55C#特有の話ならここでもいいが・・・
画像処理 その9
http://pc11.2ch.net/test/read.cgi/tech/1183910525/
0821デフォルトの名無しさん
2007/08/03(金) 22:46:04あるクラスを格納するListを作っています。
⇒hogeをhogeListに格納しています。
class hoge {
public string hogehoge1;
public string hogehoge2;
public hoge()
{
}
}
List<hoge> hogeList = new List<hoge>();
hoge h = new hoge();
h.hogehoge1 = "○";
h.hogehoge2 = "×";
hogeList.Add(h);
:
:
0822デフォルトの名無しさん
2007/08/03(金) 22:46:44XmlSerializer xs = new XmlSerializer(typeof(List<hoge>));
FileStream fs = new FileStream("hoge.xml", FileMode.Create);
xs.Serialize(fs, hogeList);
fs.Close();
以下の様な感じでです。
<?xml version="1.0"?>
<ArrayOfhoge xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<hoge />
<hoge />
: hogeListの要素数だけ
</ArrayOfhoge>
hogeに格納したhogehoge1やhogehoge2の情報がありません。。。
オブジェクトを格納したListをシリアライズするとオブジェクトの中身は取り込めないのでしょうか?
XMLシリアライズのドキュメント見返してきますが、ご指南願います。
0823デフォルトの名無しさん
2007/08/03(金) 22:49:12どぼん氏のところにそれがうまくいかない理由と解決法が書いてあるよ。
っていうか、普通そういう有名どころにヒントないか見ないか?
0824デフォルトの名無しさん
2007/08/03(金) 23:28:38ありがとうございます。
『ArrayListオブジェクトの内容をXMLファイルに保存する』のTipsでしょうか?
この記事は、2つの理由でスルーしていました。
⇒私のところではエラーが出ないこと。
⇒ジェネリックで型指定しているから型が定まらないことはないと思ってました。
念の為型指定しましたが、結果は同じでした。
⇒XmlArrayItem してみました。
すいません。私は節穴でしょうか。。。
もっとずばりのTipsあるでしょうか。。。
出直してきます。。。
0825デフォルトの名無しさん
2007/08/03(金) 23:31:390826デフォルトの名無しさん
2007/08/03(金) 23:36:53どうもです。。。
しょうもない誤記ですいません。
⇒質問がミスっただけで、コードは最初からpublicです。
訂正します。
public class hoge {
~~~~~~
public string hogehoge1;
public string hogehoge2;
public hoge()
{
}
}
0827デフォルトの名無しさん
2007/08/04(土) 00:16:55こうなればいいってこと?
<?xml version="1.0"?>
<ArrayOfHoge xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<hoge>
<hogehoge1>○</hogehoge1>
<hogehoge2>×</hogehoge2>
</hoge>
<hoge>
<hogehoge1>△</hogehoge1>
<hogehoge2>□</hogehoge2>
</hoge>
</ArrayOfHoge>
このコードのまま実行すると、シリアライズできとるがな・・・
0828823
2007/08/04(土) 00:19:58ごめんなんか勘違いしとったw
偉そうにいって申し訳ない
で、俺も追試験してみたけど827の言うとおり何も問題なく普通に
シリアル化できるみたいだけど。
0829デフォルトの名無しさん
2007/08/04(土) 00:34:38>>828
恐縮です。。。
その通り。hogeは問題ないです。
シリアライズできます。
いまさら、何でダメだったか書きにくいのですが。。。
>>825さんが指摘して下さった時点で、実物とデフォルメした質問の違い
を疑うべきでした。
どぼんさんの所にもMSDNにもXMLのシリアライズはpublicだけだよ、と書
いてあったし、それを読んで知っていたのに。。。
悩みの対象の表示されないメンバはprivateでした。
⇒相談にのって下さった皆様には知る由もないことです。
デフォルメした質問にはあるべき姿のpublicを打ち込んでいながら。。。
はぁ〜、バカすぎてどうしようもないです。
お騒がせして申し訳ありませんでした。スレ汚しです。
>>827さん 828さん
ありがとうございました。本当にここはあったかいですね。
また、こさせて下さい。
ちなみにprivateでシリアライズしたい時はバイナリにしてね、とMSDNに
書いてありました。
0830デフォルトの名無しさん
2007/08/04(土) 02:05:49enum Test
{
test1,
test2,
test3
}
こういう列挙体があって、
Test test = Test.test1 | Test.test2;
という変数があるとします。
このとき、ifの条件で、"test内にtest1が含まれるとき"という
条件を指定するとき、どのような式を書けばいいのでしょうか?
0831デフォルトの名無しさん
2007/08/04(土) 02:08:13フラグにしたいんなら、test1=1, test2=2, test3=4 みたいに明示しないとまずいかも。
(test & Test.test1) != 0
0832デフォルトの名無しさん
2007/08/04(土) 02:11:350833デフォルトの名無しさん
2007/08/04(土) 02:26:58うまくいきました。
フラグにする時ってビット演算使うんですね。
==とか!=とか使ってた場所全部直さなきゃ orz
ありがとうございました。
0834デフォルトの名無しさん
2007/08/04(土) 03:17:140835デフォルトの名無しさん
2007/08/04(土) 03:17:340836デフォルトの名無しさん
2007/08/04(土) 03:23:37>>831の書き方は微妙にまずい場合があるよ。
たとえばMSDNのFlagsAttributeの解説にあるように、
ReadWrite = Read OR Write のような定数を定義した場合ね。
(test & Test.test1) == Test.test1の方が好ましいと思う。
0837デフォルトの名無しさん
2007/08/04(土) 07:17:10C#を起動したときの「ソリューションエクスプローラー」、「プロパティー」のような、
自由に大きさが変えられてきっちり収まる部品を置きたいんですが、
あれはなんというものなんでしょうか?
お願いします。
0838デフォルトの名無しさん
2007/08/04(土) 09:06:53ttp://dobon.net/vb/dotnet/links/dockingwindow.html
0839デフォルトの名無しさん
2007/08/04(土) 11:20:09ありがとうございます!
0840デフォルトの名無しさん
2007/08/04(土) 11:25:15>(test & Test.test1) == Test.test1の方が好ましいと思う。
意味を考えて使えってことだけじゃねーの?
(test & Test.ReadWrite) == Test.ReadWrite
(test & Test.ReadWrite) != 0
そっちがまずいとか正しいとかってもんでもないだろ。
0841デフォルトの名無しさん
2007/08/04(土) 11:35:020842デフォルトの名無しさん
2007/08/04(土) 11:36:08(test & Test.test1) == Test.test1
こういう書き方は「慣習」でもあるから素直に従ったほうがいいと俺は思うけどね。
それは別に村の掟だから従え、って意味ではなく、一般的は慣習には従ったほうが
人のコードを読むときも自分がコード書くときも余分な思考をスキップできるという利点があるからだけど。
0843デフォルトの名無しさん
2007/08/04(土) 13:57:09だから意味を考えてといっとるんじゃ。
>>842
そうか、慣習ってイメージが俺にはなかった。
一般にこう書くものならそれに合わした方がいいかもな。
0844デフォルトの名無しさん
2007/08/04(土) 14:03:020845デフォルトの名無しさん
2007/08/04(土) 14:03:04揚げ足取りじゃなく、だから意味を考えるなら
test & Test.ReadWrite) != 0
これはまずい。
こんな単純な論理演算の陥穽はプログラマなら人に言われなくても気づくべきだが、
それが無理なら、言ってるように素直にMSDNのFlagsAttributeの解説を読んだ方がいいよ。
例えば、
Read = 1,
Write = 2,
ReadWrite = Read | Write
だったらどういう問題が起こるか考えてみ
0846デフォルトの名無しさん
2007/08/04(土) 14:07:260847デフォルトの名無しさん
2007/08/04(土) 14:22:480848デフォルトの名無しさん
2007/08/04(土) 16:03:360849デフォルトの名無しさん
2007/08/04(土) 21:57:21だとReadとWriteどっちが有効なのかわかんないよママン
0850デフォルトの名無しさん
2007/08/04(土) 21:59:270851デフォルトの名無しさん
2007/08/04(土) 22:57:14変わってくるんじゃねーの?
プログラム全体を見ないで一部だけ見て議論してもしゃーないべ。
一般論で片付く話じゃないだろ。
0852デフォルトの名無しさん
2007/08/04(土) 23:05:04コンソールライトランで書き出したら文字化けした
初めてコンソールアプリでファイルを読み込んだんですけど
なんか初期化が必要なんでしょうか?
教えてください。
0853デフォルトの名無しさん
2007/08/04(土) 23:09:420854デフォルトの名無しさん
2007/08/04(土) 23:25:240855852
2007/08/04(土) 23:29:55メモ帳でUTF-8で保存したtxtファイルを開いたらちゃんと開けた
わけわかんね
0856デフォルトの名無しさん
2007/08/05(日) 00:48:48ぜんぜん意味が通じないな…
(test & Test.ReadWrite) != 0
ReadかWriteのフラグ少なくともどっちかが立ってたらという意味で使う
(test & Test.ReadWrite) == Test.ReadWrite
ReadとWriteのフラグ両方のフラグが立ってたらという意味で使う
やりたい処理の意味にあわせて使い分けると言ってるだけなのに…
0857デフォルトの名無しさん
2007/08/05(日) 00:52:46この例で言うReadWriteを判定で使う場面も少ない気もするしな。
ただ、慣習で一般にそういう書き方するってんなら特に反対する理由もないが。
0858デフォルトの名無しさん
2007/08/05(日) 01:06:00自分の間違いや負けを認められない悲しい奴が後付でほざいているようにしか聞こえない。
本気で言っているのなら>>830からの話の流れをもう一度確認するように。
0859デフォルトの名無しさん
2007/08/05(日) 01:21:22>>830の話なら(テストするフラグが単一なら)どっちの書き方でも結果は一緒だろ。
ただ、複数フラグの場合にまずい場合があるので、!=0 ではなくて == フラグ値 の方がいいという指摘
↓
�@ぞれは!=0が間違いってことじゃなくて、判定したい意味内容によって使い分けるだけじゃないの?
↓
慣習なので云々
↓
そうか
って流れだろ。
それに対して、いきなり�@のところで
>その二つの式は等価ではないぞ
って横槍入れてきただけだろ(等価でない、意味が違うから目的に合わせてってことで�@を書いたのに)
後付ってなにが後付なわけ??
どこが間違ってるわけ?
ぜんぜんわからん。
0860デフォルトの名無しさん
2007/08/05(日) 01:23:08自分の間違いや負けを認められない悲しい奴が後付でほざいているようにしか聞こえない。
本気で言っているのなら>>830からの話の流れをもう一度確認するように。
0861デフォルトの名無しさん
2007/08/05(日) 01:24:45>>840,843,856,857,859だ、念のためな
0862デフォルトの名無しさん
2007/08/05(日) 01:28:410863デフォルトの名無しさん
2007/08/05(日) 01:39:14端的に言うけど、
>(test & Test.ReadWrite) != 0
>ReadかWriteのフラグ少なくともどっちかが立ってたらという意味で使う
こういう使い方は普通はありえないよ。
これじゃReadWriteの値の定義に依存したコードになっちゃうじゃないかw
0864デフォルトの名無しさん
2007/08/05(日) 01:48:05だからそもそも>>830を読めよ、と。
>>830の質問に関する回答が妥当かどうか、って話をしてたはずなのに
どうして「そういう書き方がありうるかありえないか」の話になってるんだよw
0865デフォルトの名無しさん
2007/08/05(日) 01:48:140866デフォルトの名無しさん
2007/08/05(日) 01:50:55>こういう使い方は普通はありえないよ。
>これじゃReadWriteの値の定義に依存したコードになっちゃうじゃないかw
どういう意味??
0867デフォルトの名無しさん
2007/08/05(日) 01:56:35ReadWrite = Read | Write
こう定義されている、という前提でないと856の言っていることは成立しない。
一般に、コードにいういう「なれなれしい」前提を持ち込むのはよくないこととされている。
0868デフォルトの名無しさん
2007/08/05(日) 02:01:07MSDNの例もそういう話だろうがよ。
0869デフォルトの名無しさん
2007/08/05(日) 02:02:480870デフォルトの名無しさん
2007/08/05(日) 02:04:280871デフォルトの名無しさん
2007/08/05(日) 02:07:050872デフォルトの名無しさん
2007/08/05(日) 02:20:220873デフォルトの名無しさん
2007/08/05(日) 02:22:12>こう定義されている、という前提でないと>>856の言っていることは成立しない。
もしこうでないなら、そもそも複数ビットのフラグの話の意味がないだろ。
最初からReadWriteフラグってのが、ReadともWriteとも関係ないなら、
�@そもそも1ビットの独立したフラグで、どっちの書き方でも違いがない
�A複数ビットフラグだとするといったいなんのフラグなんだか意味不明
どっちにしても意味が通らない。
0874デフォルトの名無しさん
2007/08/05(日) 14:10:20backgroundWorkerのIsBusyの参照がうまくいかず困っています
worker.RunWorkerAsync()
Thread.Sleep(100)//一応ウェイトを置く
if(worker.IsBusy == true)
{
「FileWatch.Path = Folder.PATH」が正常に処理され、workerが終了していないときの処理
}
else
{
「FileWatch.Path = Folder.PATH」が正常に処理されず、workerが終了してる時の処理
}
0875874
2007/08/05(日) 14:10:55private void worker_DoWork(object sender, DoWorkEventArgs e)
{
FileSystemWatcher FileWatche = new FileSystemWatcher();
try
{
FileWatch.Path = Folder.PATH;
}
catch
{
return;//フォルダがないなど、エラーが発生したときに戻る
}
//ファイル監視の設定など(省略)
for(;;)//キャンセル命令が出るまで監視し続ける
{
if (worker.CancellationPending == true)
{
break;
}
//無限ループだと重いので最小単位でのウェイトを置く(もっといい方法ないですか?)
Thread.Sleep(1);
}
}
0876874
2007/08/05(日) 14:11:25こんな感じでIsBusyを参照しているのですが、
worker.IsBusyが常にtrueになってしまい困っています。
試しに値を参照してみたところ
worker.RunWorkerAsync();
MessageBox.Show(Convert.ToString(worker.IsBusy));
MessageBox.Show(Convert.ToString(worker.IsBusy));
とすると、何故か
1回目「True」2回目「False」となります。
正常にIsBusyの値を取得する方法はないでしょうか?
0877デフォルトの名無しさん
2007/08/05(日) 14:21:18なんでBackgroundWorkerのなかで呼んでるのだろうか?
0878デフォルトの名無しさん
2007/08/05(日) 14:23:04むちゃくちゃ誤解してないか?w
とても人に質問して簡単なアドバイスもらって解決できるレベルとは思えない。
なんでまず地道に勉強しようとは思わないの?
0879デフォルトの名無しさん
2007/08/05(日) 14:34:580880デフォルトの名無しさん
2007/08/05(日) 14:36:29同意だな。
878は書き出しは良いのに結局煽りとは良い性格してるな。
あ、オレが答えられたら良いんだけど。
0881デフォルトの名無しさん
2007/08/05(日) 14:38:18俺は874のような人間にヒントを出すことに意味があるとは思わないし、だからやらないが
お前(879)が意味があると思うならまずお前がやれよ。
0882デフォルトの名無しさん
2007/08/05(日) 14:41:250883デフォルトの名無しさん
2007/08/05(日) 14:43:18だったらそれを具体的に指摘するのが質問者にとっても良いことだろうがよ。
それをしないんなら始めから糞にも劣るレスしないことだな。
0884デフォルトの名無しさん
2007/08/05(日) 14:45:18「思うところ」は書いてある。
874は質問するレベルに到達してないからまず地道に勉強せよ、と。
馬鹿な君が読み取れないだけだ。
0885デフォルトの名無しさん
2007/08/05(日) 14:52:38ふらっとスレで何か言ってる奴がいるぜ。
0886デフォルトの名無しさん
2007/08/05(日) 15:06:220887デフォルトの名無しさん
2007/08/05(日) 15:16:11FileSystemWatcherって変更があったらイベントを発生するんじゃなかったっけ?
何故スレッドに詰め込んでんの?
>for(;;)//キャンセル命令が出るまで監視し続ける
だからworker.IsBusyが常にtrueになってしまい…であってるんじゃないの?
>for(;;)//キャンセル命令が出るまで監視し続ける
>{
>if (worker.CancellationPending == true)
while で書いたほうがいいんじゃない?
0888デフォルトの名無しさん
2007/08/05(日) 15:19:44>MessageBox.Show(Convert.ToString(worker.IsBusy));
0889874
2007/08/05(日) 15:25:53>>877
私のやりたいことは
1.プログラム起動時、XMLファイルから「監視するフォルダのパス」「監視するファイルの拡張子」を取得
2.「監視するフォルダのパス」「監視するファイルの拡張子」がnullではない場合、監視を開始する
3.MainWindowのMenuから「監視するファイルの変更」を選択した場合監視を止め、
監視するファイルの拡張子を入力させるウィンドウを表示する→入力が正常なら新しい条件で監視を実行
MainWindowとは別で監視させる必要があるため、backgroundWorkerを使っています(間違っているかもしれませんが...)
(backgroundWorker内の終了処理として、FileWatch.Dispose();を忘れている気がしてきました...)
0890874
2007/08/05(日) 15:27:48backgroundWorkerを使わずに、FileSystemWatcherでフォルダを監視させたとき
メニューを選択した場合、
private void 監視するファイルの変更ToolStripMenuItem_Click(object sender, EventArgs e)
{
FileWatch.Dispose(); <-これだとエラーが出ます。
FileSystemWathcer FileWatch = new FileSystemWathcer();
FileWatch.Dispose(); <-もちろん止まってくれません。
//拡張子を入力させるための処理(省略)
}
となり、ファイル監視を停止できません...
最後に、私の無知や勉強不足は承知の上で
"「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です"
ということだったので書き込ませて頂きました。
(c#を少しずつ勉強しながら目的のソフトを作っています。
後もう少しで完成するのですが、どうしてもフォルダ監視がうまくいかず
スレに書き込ませて頂きました。)
0891デフォルトの名無しさん
2007/08/05(日) 15:35:01なんていうエラーかぐらい書こうよ。
>FileSystemWathcer FileWatch = new FileSystemWathcer();
>FileWatch.Dispose(); <-もちろん止まってくれません。
これなに?
なにがしたいの?コンパイルできてるの?
0892デフォルトの名無しさん
2007/08/05(日) 15:36:21わざわざBackgroundWorkerでFileSystemWatcher作る必要はないと思いますよ。
監視ディレクトリを動的に変更したいだけならEnableRaisingEvents=falseしてから
各プロパティを更新してEnableRaisingEvents=trueにしてあげればいけそうですけど。
試してませんが。
0893874
2007/08/05(日) 15:43:22説明が不足していて申し訳ありません。
もちろんコンパイルできません。
「FileWatchの定義がありません」とエラーが出ます。
>>892
ありがとうございます!!
プログラムを書き直して見ます。
0894デフォルトの名無しさん
2007/08/05(日) 15:49:00FileWatch をちゃんとメンバーにしていないからだよ。
ないものにはアクセスできないよ。
インテリセンスで出てこなかっただろ?
0895デフォルトの名無しさん
2007/08/05(日) 15:57:49このあたりを読んだほうがいいよ。
0896デフォルトの名無しさん
2007/08/05(日) 16:10:04WindowsFormにツールボックスからFileSystemWatcherをドロップして、
プロパティウインドウでPathとCreatedやDeletedなどのイベントを実装する。
これでできたソースと自分のソースを見比べてみるといい。
0897874
2007/08/05(日) 16:16:23こちらのアドバイスもどうもありがとうございます。
目的どおりに動作させることが出来ました。
(backgroundWorkerは削除しました。)
色々とアドバイス頂きましてありがとうございました。
0898デフォルトの名無しさん
2007/08/05(日) 18:00:19ファイルへの関連付け機能で起動されたアプリで、
起動のきっかけになったファイルの名前を取得するのは
どうやれば良いのでしょうか。
ある拡張子に関連付けされているアプリを探す方法は
わかったのですが、これのやり方は探してもみつかりませんでした。。。
0899デフォルトの名無しさん
2007/08/05(日) 18:07:420900デフォルトの名無しさん
2007/08/05(日) 18:55:43ありがとうございました。
Environment.GetCommandLineArgs()で求めているものが取得できました。
0901デフォルトの名無しさん
2007/08/05(日) 20:41:07textBox2.Text ="abc"
textBox3.Text ="abc"
というふうな感じの場合、ループで処理すれば綺麗にまとまりますよね
数字の部分を配列変数のようにアクセスできないものでしょうか?
オブジェクト指向がよく変わってないもので、よろしくお願いします
0902デフォルトの名無しさん
2007/08/05(日) 20:47:33>>761-763
上でも言われてるがおすすめしない。少々面倒でもリストにしといたほうがいい。
0903デフォルトの名無しさん
2007/08/05(日) 20:53:08textBox[] tb = new textBox[2];
tb[0] = textBox1;
tb[1] = textBox2;
tb[2] = textBox3:
こんな感じに配列にする。
もしくは
foreach (Control ctrl in Controls)
if (ctrl.Name.StartsWith("textBox")
ctrl.Text = "abc";
とか。
0904デフォルトの名無しさん
2007/08/05(日) 21:10:27for(int i=1;i<=3;i++)
tb[i-1]=this.Controls["textBox"+i.ToString()];
コンストラクタだけなら許されると思う
0905デフォルトの名無しさん
2007/08/05(日) 21:10:57テキストボックス型の配列にいれるのかな
なるほど。登録の手間がが多少かかってもこれが安全なんですね
ありがとうございました
0906デフォルトの名無しさん
2007/08/05(日) 21:58:51やっぱりDictionary<Control, 値の型>を使うかコントロールを拡張するべき?
0907デフォルトの名無しさん
2007/08/05(日) 22:45:59他の何かがTagを使おうとしてる場合に困るので避けてしまう。
0908デフォルトの名無しさん
2007/08/05(日) 22:52:32場合によりけり、としか言い様がない気がしますが。
俺はTagで十分な場合が多いと思うけどDictionary使うかコントロールを拡張して
関連するオブジェクト専用の型付けされたプロパティを追加するかの選択なら
迷わず後者を選ぶなあ。
まあ、でもこれもケースバーケースか。
0909デフォルトの名無しさん
2007/08/06(月) 09:52:37カレントディレクトリの取得だと、ファイル名の選択ウィンドウ等を使うと、カレントディレクトリも変更されてしまうので…
0910デフォルトの名無しさん
2007/08/06(月) 10:06:41http://www.atmarkit.co.jp/fdotnet/dotnettips/016exepath/exepath.html
0912デフォルトの名無しさん
2007/08/07(火) 13:13:09SQLで"SELECT〜FROM〜WHERE 値1 AND 値2"
といった形のSQLをDataAdaterを使い、DataSetにFill・ListBoxに表示しています。
そこで、SQLの条件が値1のものはそのまま、値2のものは文字を赤くしたいのですが
可能でしょうか?
0913デフォルトの名無しさん
2007/08/07(火) 13:37:23つ http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.drawmode(VS.80).aspx
0914912
2007/08/07(火) 14:50:29今回自分の場合だと、どのような形でやればいいでしょうか?
0915デフォルトの名無しさん
2007/08/07(火) 15:05:280916デフォルトの名無しさん
2007/08/07(火) 15:07:13http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.listbox.drawitem(VS.80).aspx
0917912
2007/08/07(火) 15:25:21caseには値1,2でいいんかな?
0918デフォルトの名無しさん
2007/08/07(火) 15:47:560919デフォルトの名無しさん
2007/08/07(火) 16:08:340920912
2007/08/07(火) 16:46:21しかし、これだと0行目と1行目しか色が変わらず、値1と2は何行目にくるか
毎回決まっているわけではないので、どうしたらいいでしょうか?
また、それまではListBoxにきちんと表示されていたものが、System.Data.DataRowView
となってしまいました。DisPlayMenberも変える必要があるのでしょうか?
0921デフォルトの名無しさん
2007/08/07(火) 16:53:190922デフォルトの名無しさん
2007/08/07(火) 16:54:40インデックスの値だけで色を変えればそりゃインデックスによってしか変えられないのは当たり前でしょ。
リストの内容を見ないと。
0923デフォルトの名無しさん
2007/08/07(火) 16:58:32自分がどの程度やったのかを提示してもらえるとレベルがわかって説明しやすいんだが。
0924デフォルトの名無しさん
2007/08/07(火) 17:16:350925912
2007/08/07(火) 17:20:53{
OracleConnection oracon = new OracleConnection();
oracon.ConnectionString =
"user id=hoge;" +
"password=hoge;" +
"Data Source = test";
OracleDataAdapter oleda;
DataSet ds = new DataSet("検索");
oleda = new OracleDataAdapter("SELECT A FROM B WHERE C = 1 AND (値1 OR 値2)",oracon);
oleda.Fill(ds,"検索");
listBox1.DisplayMember = "A";
listBox1.ValueMember = "A";
listBox1.DataSource = ds.Tables["検索"];
}
こんな形になっています。
ListBoxのDrawItemについては、まだ変わっていません。
0926デフォルトの名無しさん
2007/08/07(火) 17:37:02キーボードの H J 見てみろ
0927デフォルトの名無しさん
2007/08/07(火) 17:44:41つまりさ、Indexがわかれば Items とかでデータの中身もわかるよな。
データの中身によって色を変える、という事ならIndexさえわかれば
どうにでもできると思わないか?
0928デフォルトの名無しさん
2007/08/07(火) 17:54:49enum iro
{
aka=10,
ao=20
}
とかに
midori=30
とかを動的に追加したい
0929デフォルトの名無しさん
2007/08/07(火) 17:59:11KeyPressかなんかでEnterを待つ
→そのときの値をcomboBoxB.Items.Add
→(ロストフォーカスというのが意味分からんが)comboBoxB.Focus()?
>>928
むりぽ
0930デフォルトの名無しさん
2007/08/07(火) 18:06:52何に使うんだそれ
static IDictionary<string, int>とかじゃだめなのか
0931デフォルトの名無しさん
2007/08/07(火) 18:16:47今、急激に需要が伸びている在宅アルバイトです。
報酬もよくて、時給換算で3000円〜6000円
位です。怪しい仕事ではありません。
本業でもいいですし、副業にするなら最高の
アルバイトです。下記サイトをご覧下さい。詳しく説明しています。
http://www2.atpages.jp/nicl1216
0932デフォルトの名無しさん
2007/08/07(火) 18:24:450933デフォルトの名無しさん
2007/08/07(火) 19:04:16やっぱだめか
動的にenumそのものを作れるって知ったんで
追加もできるのかと思ってた
>>930
あるディレクトリからビットマップを読んでLISTに入れるが
これだとインデックスでしか指定できないから
ENUMで名前に対応するインデックスのリストを作って
名前でインデックス刺せるようにしたかった
ジェネリックなら名前とビットマップもったクラスつくって
それを配列ができるんだろうが
名前で呼び出すにはリスト内からそれに対応した名前を
探すと言う処理を加えなければならなくて
ビットマップが増えれば増えるほど遅くなりそうで困る
何かいいアイデアはないかの〜
0934デフォルトの名無しさん
2007/08/07(火) 19:07:04悪いけど意味不明にしか聞こえないなあ。。
0935デフォルトの名無しさん
2007/08/07(火) 19:08:270936デフォルトの名無しさん
2007/08/07(火) 19:10:16>>930
0937デフォルトの名無しさん
2007/08/07(火) 19:11:050938デフォルトの名無しさん
2007/08/07(火) 19:11:21配列とリストしか知らんの?
0939デフォルトの名無しさん
2007/08/07(火) 19:16:010940デフォルトの名無しさん
2007/08/07(火) 19:17:070941デフォルトの名無しさん
2007/08/07(火) 19:20:23それもどうなの?w
Dictionaryが必要になるほどガンガンBitmapこさえて大丈夫なんかいな?
0942デフォルトの名無しさん
2007/08/07(火) 19:26:170943デフォルトの名無しさん
2007/08/07(火) 19:44:340944デフォルトの名無しさん
2007/08/07(火) 19:56:30そのメンバを使う手段はリフレクションしかないわけだから
かえってとんでもなく遅くなるはずw
0945デフォルトの名無しさん
2007/08/07(火) 19:58:59enumにする利点がない。
あったら教えて。
0946デフォルトの名無しさん
2007/08/07(火) 20:11:16Bitmap[] bitmaps = new Bitmap[3];
bitmap[部位.目] = new Bitmap("目.bmp");
bitmap[部位.鼻] = new Bitmap("鼻.bmp");
bitmap[部位.口] = new Bitmap("口.bmp");
こういう使い方は稀にやるかも
増える可能性があるならもちろんDictionaryにするけど
0947デフォルトの名無しさん
2007/08/07(火) 20:30:150948デフォルトの名無しさん
2007/08/07(火) 21:20:48おまいらありがとう
すごい便利そうだ
0949デフォルトの名無しさん
2007/08/07(火) 21:52:39DateTime型の"2007/07/01"
に変換しようとしたらどうすればいいのでしょうか?
DateTime.Parse("070101")をしようとしたら
エラーになります
一度"070101"を"2007/01/01"に変換してからじゃないとダメなようです
0950デフォルトの名無しさん
2007/08/07(火) 22:00:400951デフォルトの名無しさん
2007/08/07(火) 22:01:10報告ご苦労様。
0952デフォルトの名無しさん
2007/08/07(火) 22:28:110953デフォルトの名無しさん
2007/08/07(火) 22:31:24報告ご苦労様。
0954デフォルトの名無しさん
2007/08/07(火) 22:48:51びっくりしたわ
報告了
0955デフォルトの名無しさん
2007/08/08(水) 00:39:23DragDropイベントが発生するのに、フォルダをドロップしたときには発生しません。
DragEnterイベントで
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
e.Effect = DragDropEffects.All;
}
の部分は反応するのですが、DragDropイベントを反応させるにはどうしたらいいでしょうか?
0956デフォルトの名無しさん
2007/08/08(水) 01:15:20//if (e.Data.GetDataPresent(DataFormats.FileDrop))
//{
e.Effect = DragDropEffects.All;
//}
0957デフォルトの名無しさん
2007/08/08(水) 01:19:25ドラッグ&ドロップを受け入れるコントロールのAllowDropをtrueにしてる?
0958デフォルトの名無しさん
2007/08/08(水) 01:19:35ifを消さなくても中がtrueになるので指摘されている中の式には到達するのですが、
フォルダをドロップしてもDragDropイベント自体が発生しないので困っています。
ファイルだと発生するのに… orz
0959デフォルトの名無しさん
2007/08/08(水) 01:20:54してます。
また、空のフォームのを使っているので他のコントロールが
邪魔しているということもないです。
0960デフォルトの名無しさん
2007/08/08(水) 01:29:450961デフォルトの名無しさん
2007/08/08(水) 01:40:24具体的にどのくらい強烈に遅いのかも教えてくれたらよかったぜ?
0962デフォルトの名無しさん
2007/08/08(水) 01:53:32こんな感じです。
private void Form1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
e.Effect = DragDropEffects.All;
}
else
{
e.Effect = DragDropEffects.None;
}
}
private void Form1_DragDrop(object sender, DragEventArgs e)
{
string[] path = (string[])e.Data.GetData(DataFormats.FileDrop, false);
this.BackgroundImage = Icon.ExtractAssociatedIcon(path[0]).ToBitmap();
}
これとForm1の自動生成されたコンストラクタのみです。
0963デフォルトの名無しさん
2007/08/08(水) 02:18:41このコードでDragDropイベント起きるぞ。。。
ブレイク張ってりゃ止まるだろ???
0964デフォルトの名無しさん
2007/08/08(水) 02:21:45自分はこれでできたよ
参考にしてみて
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.DragDrop += new DragEventHandler(Form1_DragDrop);
this.DragEnter+= new DragEventHandler(Form1_DragEnter);
}
private void Form1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
e.Effect = DragDropEffects.All;
}
else
{
e.Effect = DragDropEffects.None;
}
}
private void Form1_DragDrop(object sender, DragEventArgs e)
{
string[] path = (string[])e.Data.GetData(DataFormats.FileDrop, false);
this.BackgroundImage = Icon.ExtractAssociatedIcon(path[0]).ToBitmap();
}
}
0965デフォルトの名無しさん
2007/08/08(水) 02:23:06イベントハンドラを登録してないって事はない?
0966デフォルトの名無しさん
2007/08/08(水) 02:24:44一応ここに乗せる前にもこのコードで試したときもブレークポイント張ったんですが、
ブレークポイント張ったところに引っかからないんですが…
0967デフォルトの名無しさん
2007/08/08(水) 02:26:42イベントがデザイナで自動実装されてるとこ以外こちらのコードと
一緒です。
>>965
ファイルをドロップしたときは反応するのでそれはないです。
0968デフォルトの名無しさん
2007/08/08(水) 02:28:24ついでにこっちも貼っとく
こっちも違いはない?
#region Windows フォーム デザイナで生成されたコード
/// <summary>
/// デザイナ サポートに必要なメソッドです。このメソッドの内容を
/// コード エディタで変更しないでください。
/// </summary>
private void InitializeComponent()
{
this.SuspendLayout();
//
// Form1
//
this.AllowDrop = true;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 11F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(292, 266);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
#endregion
0969デフォルトの名無しさん
2007/08/08(水) 02:29:58こちらのはこんな感じです。
private void InitializeComponent()
{
this.SuspendLayout();
//
// Form1
//
this.AllowDrop = true;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(115, 69);
this.Name = "Form1";
this.Text = "Form1";
this.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form1_DragDrop);
this.DragEnter += new System.Windows.Forms.DragEventHandler(this.Form1_DragEnter);
this.ResumeLayout(false);
}
0970デフォルトの名無しさん
2007/08/08(水) 02:31:39置換したけど動作は変わらなかったよ
0971デフォルトの名無しさん
2007/08/08(水) 02:37:36…… Vista?
0972デフォルトの名無しさん
2007/08/08(水) 02:37:59そうですか…
うーん、何が原因なんだ orz
もしかして.NETが何らかの原因で壊れたって可能性はありますか?
0973デフォルトの名無しさん
2007/08/08(水) 02:38:52XP SP2です
0974デフォルトの名無しさん
2007/08/08(水) 02:43:23ファイルをD&Dするとその拡張子に関連付けられたアイコンが背景として表示されるんだよね?
これは自分の環境でも表示されてる。
んで、フォルダをD&Dするとイベントは発生してるけど、↓の部分で
>this.BackgroundImage = Icon.ExtractAssociatedIcon(path[0]).ToBitmap();
「'System.IO.FileNotFoundException' の初回例外が System.Drawing.dll で発生しました。」
ってのが出て背景にフォルダのアイコンは出てこない。
0975デフォルトの名無しさん
2007/08/08(水) 02:46:37PentiumM 1.73GHzのノートマシンで、
Enum型.ToString()
約3.6マイクロ秒
Dictionary<Enum型,string>で保持して検索
約75ナノ秒
0976デフォルトの名無しさん
2007/08/08(水) 02:46:39例外飛んできません…
確かに背景画像は変わりませんが。
もしかしてこれが引っかからなかった理由?
0977デフォルトの名無しさん
2007/08/08(水) 02:48:000978デフォルトの名無しさん
2007/08/08(水) 02:52:54Icon.ExtractAssociatedIcon(path[0]).ToBitmap();
の中で例外は処理されてしまっていて表には出てこない。
VC#の デバッグ→ウィンドウ→出力 で出力されてるだろうから見てみて。
0979デフォルトの名無しさん
2007/08/08(水) 02:56:48出ました。
んで、こいつの下にブレークポイントを置いたらエラー起こした時に
最後まで行かないということがわかりました。
結局俺のミスか orz
でも.NETの再インストールよりかはマシか。
0980デフォルトの名無しさん
2007/08/08(水) 03:08:40Enum#ToString はこっそりリフレクション使って名前調べてたりする
0981デフォルトの名無しさん
2007/08/08(水) 03:28:47フォルダのアイコンを表示できるようにしてみた
private void Form1_DragDrop(object sender, DragEventArgs e)
{
string[] path = (string[])e.Data.GetData(DataFormats.FileDrop, false);
if (File.Exists(path[0]))
{
this.BackgroundImage = Icon.ExtractAssociatedIcon(path[0]).ToBitmap();
}
else if (Directory.Exists(path[0]))
{
Icon icon = GetFolderIcon(false, false);
this.BackgroundImage = icon.ToBitmap();
}
}
//以下フォルダアイコンを取得するためのコード。参考サイト
//http://www.atmarkit.co.jp/fdotnet/dotnettips/280getappicon/getappicon.html
//http://www.codeproject.com/cs/files/fileicon.asp
public const uint SHGFI_LARGEICON = 0x000000000;
public const uint SHGFI_SMALLICON = 0x000000001;
public const uint SHGFI_OPENICON = 0x000000002;
public const uint SHGFI_USEFILEATTRIBUTES = 0x000000010;
public const uint SHGFI_ICON = 0x000000100;
public const uint FILE_ATTRIBUTE_DIRECTORY = 0x00000010;
[DllImport("User32.dll")]
private static extern int DestroyIcon(IntPtr hIcon);
[DllImport("shell32.dll")]
private static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, uint cbSizeFileInfo, uint uFlags);
0982デフォルトの名無しさん
2007/08/08(水) 03:29:53[StructLayout(LayoutKind.Sequential)]
public struct SHFILEINFO
{
public IntPtr hIcon;
public int iIcon;
public uint dwAttributes;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
public string szDisplayName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)]
public string szTypeName;
};
public Icon GetFolderIcon(bool smallIcon, bool openedFolder)
{
uint flags = SHGFI_ICON | SHGFI_USEFILEATTRIBUTES;
if (openedFolder)
flags |= SHGFI_OPENICON;
if (smallIcon)
flags |= SHGFI_SMALLICON;
else
flags |= SHGFI_LARGEICON;
SHFILEINFO shFileInfo = new SHFILEINFO();
SHGetFileInfo(null, FILE_ATTRIBUTE_DIRECTORY, ref shFileInfo, (uint)Marshal.SizeOf(shFileInfo), flags);
Icon.FromHandle(shFileInfo.hIcon);
Icon icon = (Icon)Icon.FromHandle(shFileInfo.hIcon).Clone();
DestroyIcon(shFileInfo.hIcon);
return icon;
}
ここまで
0983デフォルトの名無しさん
2007/08/08(水) 07:34:01ドラッグされて来たデータがどこから来たものかを判別するにはどうしたらいいのでしょうか。
作ろうとしているものはこんな感じです。
ノードをドラッグしてターゲットのノードにドロップすると
ドラッグしたノードがドロップした所の子ノードになる。
ttp://msdn2.microsoft.com/ja-jp/library/system.windows.forms.treeview.itemdrag(VS.80).aspx
現状だとこのアプリケーションを2つ起動させて、
一方のTreeViewから他方のTreeViewへドラッグしてもドロップエフェクトが有効になってしまいます。
ソースで言うとこんな感じのことをするにはどうしたらいいでしょうか。
private void treeView1_DragEnter(object sender, DragEventArgs e)
{
if( ソースもターゲットも自分 )
{
e.Effect = DragDropEffects.All;
}
else // 他のアプリケーションからドラッグされて来た場合
{
e.Effect = DragDropEffects.None;
}
}
0984デフォルトの名無しさん
2007/08/08(水) 08:11:40以下のコードを書いてみました。
DateTime srcTime = DateTime.Now;
DateTime dstTime = DateTime.Now;
TimeSpan fTimeSpan;
int fSpan;
// srcFileInfoFileInfo の新しいインスタンスを生成する
System.IO.FileInfo srcFileInfo = new System.IO.FileInfo(sourcePath);
// タイムスタンプを取得する。
srcTime = System.IO.File.GetLastWriteTime(sourcePath);
// dstFileInfoFileInfo の新しいインスタンスを生成する
System.IO.FileInfo dstFileInfo = new System.IO.FileInfo(destPath);
// タイムスタンプを取得する。
dstTime = System.IO.File.GetLastWriteTime(destPath);
// タイムスタンプの差を求める。
fTimeSpan = srcTime.Subtract(dstTime);
// タイムスタンプの差を秒の絶対値で取得
ifSpan = System.Math.Abs(fTimeSpan.Seconds);
System.Math.Abs(fTimeSpan.Seconds);でタイムスタンプの秒差を絶対値で求めたいのですが
fTimeSpan.SecondsのSecondsはint型で返ってきます。
一年間の差があるとして31,536,000がさとなります。
int型の範囲は-2,147,483,648 〜 2,147,483,647です。
となると69年以上差がある場合intの範囲を超えてしまいます。
この場合はどういった処理で求めれば良いのでしょうか?
0985デフォルトの名無しさん
2007/08/08(水) 08:34:50MSDN嫁よ。
TimeSpan.Secondsの返す値は-59 ~ 59だ。
0986912
2007/08/08(水) 09:08:48ごめんなさい、ちょっとわからないです・・・・・orz
具体的にどのようにしたらいいでしょうか?
0987デフォルトの名無しさん
2007/08/08(水) 10:48:51まだやってたのかw
例えば、サンプルのDrawItemの中の
switch (e.Index)
を
listbox1.Items[e.Index] と値1の比較にすればいいんじゃないか?
0988912
2007/08/08(水) 11:02:09listbox1.Items[e.Index]を試してみました。が、整数型の値が必要ですと
言われてしまいました・・・
0989デフォルトの名無しさん
2007/08/08(水) 11:09:06Items[] はobject 型を返すから、ToString()でも Int.parse()でも使って
値1にあわせて比較すればいい。
0990912
2007/08/08(水) 11:17:260991デフォルトの名無しさん
2007/08/08(水) 11:28:25{
case 値1:
myBrush = Brushes.Red;
break;
・
・
とか?
もっといいやり方とかもあるかもしれないが、
とりあえず目に見える形で出してから考えるのがいいかなあ
0992デフォルトの名無しさん
2007/08/08(水) 11:31:00何かいいのありますでしょうか?
将来シェアウェア化も考えているので、できればGPL以外だとうれしいうのですが…
0993デフォルトの名無しさん
2007/08/08(水) 11:32:520994912
2007/08/08(水) 11:35:20int 値1,2 = 0;
で初期化してるんですけれど、ほかに何か必要ですか?
0995デフォルトの名無しさん
2007/08/08(水) 11:39:54まず基礎から勉強してくださいこのオタンコナスくん
0996デフォルトの名無しさん
2007/08/08(水) 11:40:530997デフォルトの名無しさん
2007/08/08(水) 11:42:300998912
2007/08/08(水) 13:27:13ちゃんと数値が入ります(値1には0、2には1)。
0999デフォルトの名無しさん
2007/08/08(水) 13:34:40if文なら
if (int.Parse(listBox1.Items[e.Index].ToString()) == 値1)
とかでいいよ
1000デフォルトの名無しさん
2007/08/08(水) 13:43:47_,rr-―''''¨゙゙゙ ̄ ̄ ̄ ̄ ̄`゙゙゙゙゙゙゙゙''ヘi、、 ,,,,-―---、
,r‐'″ ._,,,, `'lri,!'''″ ゙l
.,,,″ ,,r'"` ゙゙l, ゙ヘ, |
!アr, .l°.ェ'ニ,コ .| ゚ヘ、 |
`'i、 .く_,、vr''″ ., ゙'i、 .,,/
゙X、 ト ゙!,゛ .,,r‐--、
,、_,、 .,,,,r‐'″ | } .,,r‐'^’ .|゜
め゙゚“゙゙~゛ |  ̄` .,l゙
| ,i´ ,l゙
゙!、 ,i´ ,ノ
.'┐ ,,-° '=,, /`
.゚!, ,,,,r'″ ゙┐ ,l゙
゚'r, .''''"` │ .,,-''i、 /
`''x, .| | .,,r'" .゙┐ ,i´
~'ヘi,,, | |_,r・″ 'ヘ,、 l゙
`¬--|i,,,,,,,,,,,,,,,,v、r',广 ゙ヘ�=@ ,l゙
`゙'ーぃ--r'″ `'―、,,,,/
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。