ふらっとC#,C♯,C#(初心者用) Part45
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
>>980 を踏んだ人は新スレを建てて下さい。
>>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。
前スレ
ふらっとC#,C♯,C#(初心者用) Part44
http://pc12.2ch.net/test/read.cgi/tech/1251439041/
乙
>>前スレ終わり際 フレームワーク内部でcatchされてる例外は深く考えても脳が疲れるだけよ どうしても気になるならソース追っかけていけばいいけどCompactFrameworkのソースは公開されてたっけ
>>4 了解です
そうですよね。何かサーバーからエラーが来てるのかと思いましたが、パケットを調べられる
技量もないのでしばらくこのままで行ってみます
ありがとうございました
ところで、これで取得したメモリストリームからBitmapのインスタンスを生成する部分で
たびたび一般的なGDI+エラーというのが出ます
マルチスレッドでコールバック関数が呼ばれる前にメモリストリームが切断されるとダメという記述があちこちに
みつかり、シリアライズしてからBitmapを生成した方がいいとありますが、
データ長を調べてbyte[]に入れればいいんでしょうか?
それからBitmapを作ればいい?
こういう時の定石なのでしょうか?ご存じの方よろしくお願いします
>>6 メモリストリームが切断?
取り敢えずStreamからMemoryStreamに一旦書き込んで、その後はそのMemoryStreamを使う
8 :
デフォルトの名無しさん :2009/09/22(火) 00:36:07
C#で、変換前(入力中)の文字列を取得することはできますか? Google検索ボックスのように、 かな文字を入力中に、その文字列でデータセットの検索結果をリアルタイムに表示させたいんです。 よろしくお願いします。
>>7 あれ・・・それ今やってることと同じでした
ストリームからByte配列に書き込み
それをメモリストリームに書き込んで
BmpSource = new Bitmap(memorystream);
こうしてるんですが、なぜかストリームのところでなく
この行でGDIのエラーが出るんです
エラーはWebRequest要求の最中にさらに要求を重ねた
場合に起こります
ただし、WebRsponseのストリーム読み出しではなく
GDIで起こります
もしかしたら呼び出し順が狂ってメモリストリームにデーはあるものの
BitMapとしてはデータが壊れてるのかも知れないですね・・・
ちなみにFrameworkは2.0 SP2 です
とりあえずエラーが出たところでダンプしてみます
http://www.stackasterisk.jp/tech/dotNet/csharp08_02.jsp#2_1 上のページを参考に、TcpListener、TcpClientを使って簡単なチャットプログラムを作っています。
TcpListener、TcpClientにローカルIPアドレスとポート番号9999を指定して
1つのパソコン内でメッセージのやり取りはできたのですが、
外部のパソコンとやり取りをするにはIPアドレスとポート番号は具体的にどのように指定すればいいのでしょうか?
WANのIPアドレスでも動作するか試すため、
サーバー側はIPAddress.Anyを使って、ポートは9999
クライアント側は「確認くん」で調べた自分のWANのIPアドレス、ポートは9999を指定して実行すると、
サーバー側は「接続待機中」
クライアント側は「対象のコンピュータによって拒否されたため、接続できませんでした。***.***.***.***:9999」と表示されます。
上と同じように指定して知り合いのパソコンとやり取りをしようとしたのですが、やはりうまくいきませんでした。
説明下手な上に初歩的な質問ですみません。ちなみにファイアウォールは切ってます
回答お願い致します
>>10 単にスレッドセーフになってないだけじゃ…
>>10 です
メモリーストリームに複数要求したデータが全部繋がって入ってる感じです
詳しく見てませんが、データの大きさがかなり大きいので間違いないと思います
一回呼び出し 正常表示
71203
5回呼び出し、DGIエラー
75299
同じ画像です
メイン処理クラスからリクエストを送るイベントのたびにスレッドクラスを生成して
そのスレッドクラスの中で非同期にWebRequest処理して
そのクラスの中のコールバックメソッドの中でBitMap処理してます
最後にメイン処理クラスにデリゲートで処理を戻して描画してます
別のインスタンス(のつもり?)のスレッドクラスの中のstaticなメモリストリームに
どんどんデータが入って来てしまうようです・・・
スレッドクラスそのものはstatic宣言してないです
まず、LAN でできるようになってから WAN で試そうな。
staticなMemoryStreamなら当然だろw レスポンスごとにMemoryStream用意しろ
17 :
11 :2009/09/22(火) 01:20:14
>>15 LANではうまく(?)いきます
家にある2台のパソコンでチャットはできました
>>16 レスポンスをコピーするためにバイト配列を使うのですが、
バイト配列が一杯になったらメモリストリームにコピーする
コールバックメソッドを呼び出して
コールバックメソッド側で再びレスポンス読み込みメソッドを呼ぶ
ということになってるので、staticなMemoryStreamになってます
それで、リクエスト処理を行うクラスをメイン処理クラスからイベントごとに
インスタンス生成しているんですが・・・これがいけないのですかね?
>この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。
>インスタンス メンバの場合は、スレッド セーフであるとは限りません。
とあるのですが、リクエスト処理を行うクラスはインスタンスにしていいかと
とりあえずリクエストクラス内でHttpWebRequestをpublic staticで宣言してみます
駄目だコリア
そういう相互コールみたいなマネするとデットロックしやすいから構造上避けた方がいいわ…
>>17 確認君で、ってことは、ルーター環境? それなら、NAT で
ポート転送設定しないと。
わかってないなら、マルチスレッドなんて使わなきゃいいのに。
23 :
デフォルトの名無しさん :2009/09/22(火) 01:29:46
>>19 その通りです public static で宣言したけど駄目でした orz
>>20 そうですね
ヘッダーを調べてデータサイズの大きさのByte配列を用意してみます
タブブラウズは同時にリクエストしてますが、あれはどういう仕組みなんでしょうかねえ・・・
悔しいなぁ
やはり一気に読み込むんでしょうか?
>>22 わかろうと努力してるので・・・どうか生暖かく見守ってください ><。。
普通にリクエストするスレッドを複数立ててるだけだろ
>>27 メイン処理クラスで
private Thread myThread;
private void ThreadFunction()
{
GoogleRequest myThreadClassObject = new GoogleRequest(this);
myThreadClassObject.GetMap(GSParam);
}
は、やっているんですが・・・すみませんそのこときちんと書いてありませんでした
しまった コピペする場所間違えました public void GetMap() { myThread = new Thread(new ThreadStart(ThreadFunction)); myThread.Start(); }
GoogleRequestがstaticのMemoryStream持ってんだろ 駄目に決まってんじゃん というかstaticの意味分かってるのか
31 :
デフォルトの名無しさん :2009/09/22(火) 08:46:22
>>23 ですが、
このテキストボックスを用いてどこから変換前の文字列を取るのか分からないんです。
>>30 あーもしかして、スレッドをスタートするときのGoogleRequestインスタンスの中のstaticって共有されるのが常識でしたか
クラスをStaticにしたらシングルトンになると思い込んでたもので・・・
static=静的
でしたっけ?プログラムが終了するまで存続が補償されてるメモリってことですよね?
起動時に実体を1つだけ生成し、 スコープを抜けても値が保持される
静的クラス と シングルトン は全くの別物。 シングルトンをやりたいなら静的クラス メンバを使ってこんな感じで書けばいい。 public class Singleton { private static readonly Singleton instance = new Singleton(); private Singleton() {} public static Singleton GetInstance() { return instance; } }
>>33 するとクラスのインスタンスの中のstatic変数はインスタンス同士で共有されるってことですか
>>34 シングルトンと静的クラスは違いますね
おおざっぱな言い方してすみませんでした
> 静的メンバ
静的なメソッド、フィールド、プロパティ、またはイベントは、クラスのインスタンスが作成されていないときでも
クラスで呼び出すことができます。クラスのインスタンスが作成されている場合は、これらを使用して
静的メンバにアクセスすることはできません。静的フィールドと静的イベントのコピーは 1 つのみ存在し、
静的メソッドと静的プロパティは、静的フィールドと静的イベントにしかアクセスできません。
静的メンバは、多くの場合、オブジェクトの状態に応じて変化しないデータや計算を表すために使用されます。
やっと自分の勘違いがわかりました。
ありがとうございました。
>>34 これって別のマシンからコールしてもシングルトンですか?
何を言ってるのかね?
クラスメンバのメモリストリームのstaticをはずしたらうまくいきました 最初のエラーはクラスメンバのメソッドのの中にstaticでメモリストリームが宣言してありました これはサンプルのコピーが原因でした その宣言をstaticのままクラスメンバに移したのが間違いでした クラスメンバであればクラス内ではグローバル変数のように使えるのでメソッド間でのやりとりに問題は ないはずなのに安易にstaticを使ってしまいました 見当違いな質問を繰り返してご迷惑おかけしましたが、やっとわかりました みなさんありがとうございました
なんか非同期リクエスト使ってるぽいが、フローが複雑になるしお勧めしないよ。 単に起動したスレッドで普通に同期的に処理することをすすめる。 そうすれば、素直に作ってれば変にstaticで共有してしまったりなんてことは起こらない。 リクエスト自体を非同期でやろうとすると難易度が跳ね上がるし、 実質あまり変わらないから意味もない。 普通は同期リクエストで十分。
>>39 確かにリスクは大きいですねえ
マルチスレッドで動くダウンローダーのような効率化に挑戦したかったものでつい・・・
アドバイスありがとうございました
なんて言うのかな、要は最大限の効率を求めないなら、 普通にスレッド作ったりスレッドプールで処理するだけで十分てこと。 ああ、ただ、非同期リクエストだとキャンセルが可能だったかな。
>>41 はい、ふつうならマルチスレッドで同期リクエスト動かせばいいって話ですね!
System.IO.Path.GetFileName(path); とおなじようにURLををファイル名のみゲットしたいです。 かんたんな方法はありますか? いま考えつくのは、Split('/')で、forでLength-1を取得とかかな〜、と思っているんですが。
Path.GetFileNameで十分だと思うが
クエリ文字列のことを考えるとUriインスタンス作ってLocalPathに対してPath.GetFileNameだな
パス情報はどうするべきか
47 :
デフォルトの名無しさん :2009/09/22(火) 13:38:35
メモ帳やエクセルなどで検索するとFocusが検索フォームに在るにもかかわらず テキストボックスやエクセルシートの検索ワードが選択されて強調表示されますよね? アレってどうやるんでしょう? SelectedだとFocusがないので強調表示されませんでした。
C#の文法的なことではなくて、フォームデザイナの使い方などを簡単にまとめたサイトはありますか?
49 :
デフォルトの名無しさん :2009/09/22(火) 14:41:26
C# というよりは UNRAR32.dllの質問なのかもしれないが、助けて [DllImport ("unrar32.dll", CharSet=CharSet.Auto)] public extern static ushort UnrarGetVersion(); [DllImport ("unrar32.dll", CharSet=CharSet.Auto)] public extern static int Unrar(IntPtr hWnd, string szCmdLine, string szOutput, uint dwSize); public static void Main() { System.Console.WriteLine( Decompressor.UnrarGetVersion() ); /* UNRAR32.dllのバージョン 12が返る */ System.Console.WriteLine( UnrarQueryFunctionList(1)); /* Unrar APIが使えるか。True */ System.Console.WriteLine(Decompressor.Unrar(IntPtr.Zero, "-x " + @"C:\test.rar", "", 0)); /* ERROR_COMMAND_NAME (0x801C) が返ってくる */ } コマンドがおかしいって怒られちゃうの。なんで?
50 :
49 :2009/09/22(火) 14:43:17
何をしたいか書き忘れてますた。 C:\test.rar をただ単に解凍したいだけっす。
第2・3引数ばLPCSTRなのにCharSet.Autoじゃダメだろ
コマンドがおかしいんだろ。
53 :
49 :2009/09/22(火) 15:06:08
>>51 とっぱらったら出来た。
理由は自分で調べるお。ありがと!
54 :
49 :2009/09/22(火) 15:10:50
CharSet.Autoにすると、NT系ではunicodeのバイト列としてdllに渡しちゃうってことでおk?
そう
56 :
49 :2009/09/22(火) 15:33:47
CharSetオプション書かないとAnsiなのに AutoだとUnicodeにされるのは1度戸惑ったことあるな
そんなので戸惑う? MSDNに書いてあるまんまで解釈の余地とかないと思うんだけど・・・
そんな事いったらこのスレいらなくなるだろ。 初心に戻ろうぜ。
60 :
デフォルトの名無しさん :2009/09/22(火) 19:23:56
親フォームに、publicイベントを記述しました。 その親フォームから呼ばれる別のフォームで、そのイベントを実行するにはどうすればよいでしょうか。 教えてください−−−!!!!!
その「別のフォーム」とやらにデリゲート渡しとけばいいじゃん
63 :
デフォルトの名無しさん :2009/09/22(火) 19:34:37
おやからよばれるフォームに親のインスタンス渡してやれば?
64 :
デフォルトの名無しさん :2009/09/22(火) 19:52:32
ありがとうございます。 具体的には、親に private void Click(object sender, EventArgs e) { MessageBox.Show("またクリックしたの?"); } を記述しました。 親のボタンを押した先のフォームのボタンコントロールのクリック時に このイベントを実行させようと思いましたが、 プロパティウィンドウのイベント欄のclickに、 「Click」が表示されません。 どうすればよいのでしょうか。
答え読んでから書き込め
なんでもかんでも親Formに書こうとすんなよ
>>64 >具体的には、親に
(略)
>を記述しました。
それを呼び出す先のフォームに書けばいい。
動くのを確認したらスコープとかアクセス修飾子でググってよ。
68 :
デフォルトの名無しさん :2009/09/22(火) 20:57:31
すみません。
>>61 さんや
>>63 さんがおっしゃっていることは具体的にどこに何を記述する必要があるのでしょうか。
privateからpublicにし、
子フォームに親のインスタンスを生成しましたが、
プロパティウィンドウの中にやはりそのイベントハンドラが表示されません。
Desiner.csに直接デリゲートを書き込みしようとしましたが、
thisをnullに置き換えることができませんといったエラーになってしまいます。
イライラ
どうしても書くとしたらこうかな public partial class Parent : Form { public Parent() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { new Child(this.Click).ShowDialog(); } private void Click(object sender, EventArgs e) { MessageBox.Show("またクリックしたの?"); } } public partial class Child : Form { private EventHandler eventHandler; public Child(EventHandler eventHandler) { InitializeComponent(); this.eventHandler = eventHandler; } private void button1_Click(object sender, EventArgs e) { this.eventHandler(this, EventArgs.Empty); } }
private void Click(object sender, EventArgs e) { MessageBox.Show("またクリックしたの?"); } だからなんで上をChildに書くって発想ができないの? マウスが机から落ちてしまうとか言ってる年寄りにパソコン教えてる気分だわ。
OTITSUKEYO…
>>70 new Child(this.Click).ShowDialog();
は
Form child = new Child();
child.Click += this.Click;
child.ShowDialog();
の方がいいな。
すまん、ボタンのイベントだったな。
>>73 は気にしないでくれ。
>>71 そうカリカリすんなよ。
お前みたいな短気はこのスレに向いてないぜ?
明日で連休終わりと考えると気が立ってくるのさ。
明日休出の俺に謝れ
カリカリしてる人はスレタイ読んで落ち着いてくれ
初心者相手にオレTUEEEしたい人が、なかなかうまく自分の力を見せつけられずイラだっているのです
カリカリ
81 :
デフォルトの名無しさん :2009/09/22(火) 22:53:26
>>71 親にたくさん、日付チェックのイベントや数値変換のイベントを書いているんです。
同じロジックを、また子の上に書きたくないんです。
親に書かずに、共通クラスに書けばいいだろ・・・
とりあえずイベントとメソッドの区別はつけようぜ どうせ全ての処理はイベントハンドラの中に書かないといけないと思ってるんでしょ
>>81 どっかにソースうpしろ。
ソースがあった方がみんなアドバイスし易い。
たぶん地獄絵図なソースだと思うけど
言語がよくわかってないままなんとなくVC#触ってる人って たいていフォームを複数作ろうとしたら行き詰まるよね
VC?
MainFrame frm = (MainFrame)this.Parent.Parent.Parent.Parent.Parent; frm.anotherControl.Handler();
イラッ
ご先祖様にも程があるな
IF文を知らなかった俺はgotoだけでなんとかしたことがあるけど、 今となってはあんな化け物コード自分でも読めない。
言語仕様すべて頭に入れてからコード書くってわけにもいかないもんね
どうやってgotoで条件分岐するんだろう
多分Fortranで算術GOTOじゃね?
ON ERROR GOTO
全部デリゲート配列にすれば条件分岐無くせるな
>>96 State state = new State();
EventDelegate[] events = new EventDelegate[5901234];
・・・
void LoopMain() {
Loop:
events[state.Next]();
goto Loop;
}
・・・
void Event3203289() {
int hoge = state.hoge;
// state.Hoge が <2000、==2000、>2000 で分岐
state.Next = 3203291 + System.Math.Sign(state.Hoge-2000);
}
void Event3203290() {
・・・
ですね。邪悪で素敵w
うげぇ…w
99 :
デフォルトの名無しさん :2009/09/23(水) 01:07:44
まじキチ…ユダヤが人工地震を起こすぞ
【緊急情報カクサンよろしく】
ついに来ました。
大きい動きです。250nT超えてきました。ほぼ間違いありません。もう一度言います。
友人、知人、親類縁者、あらゆるつながりを駆使して巨大地震がくることを教えて下さい。
四川地震より大きいのが来る可能性があります。
http://g ★olde★ntam★atama.b★lo★g84.fc2.c★om/
★★★★★危険度MAX★★★★★
★★★★★★★★★★★★★★★★
★千葉、静岡、東京、関東で大地震が起きる可能性が非常に高くなっています★★★
★千葉、静岡、東京、関東で大地震が起きる可能性が非常に高くなっています★★★
★千葉、静岡、東京、関東で大地震が起きる可能性が非常に高くなっています★★★
★千葉、静岡、東京、関東で大地震が起きる可能性が非常に高くなっています★★★
★★★★★★★★★★★★★★★★
★★★★★危険度MAX★★★★★
警告!連休中の21、22、23日が危ない!かも2
http://live24.2ch.net/test/read.cgi/eq/1 ★253494015/
【大気イオン】e-PISCO Part11【また延長】
http://live24.2ch.net/test/read.cgi/eq/1 ★252991726/
本当に地震が来たら、犯人は特権階級全員だということ2
Cの関数ポインタの配列みたいにデリゲート配列使ってみたけど オーバーヘッドが大きいようで条件分岐版よりも遅かった事がある
102 :
デフォルトの名無しさん :2009/09/23(水) 14:24:10
>>47 をおねがいします。
メモ帳などがFocusを持たずに選択状態を描画している仕組みが
どうしてもわかりません><
>>102 リファレンスでHに関係するモノを調べるといいと思うよ。
エッチ///
>>102 HideSelectionをFalseじゃないの?
マルチかよ
108 :
デフォルトの名無しさん :2009/09/23(水) 18:46:01
はじめまして。けん一と申します。 文字列を選択しているときに、濃青色に反転しますが、 この色を変えることは可能でしょうか?
デザイナのプロパティウィンドウを見ろよけんいち
無理。
,.――――-、 ヽ / ̄ ̄ ̄`ヽ、 | | (・)。(・)| | |@_,.--、_,> ヽヽ___ノ あきらめるでござる
ケンイチ殿wwwwwwwwwww
ケンイチ氏な
フラットスタイルのタブ?
>>114 少なくともGUI部品としてのlook&feelはToolStripButtonで同じことができるんじゃない?
っていうか、なんか10年前のGUIだなそれ
ToolStrip使うことになるかな それただのReBarに配置されたボタンだし
ツールストリップにボタン置いてくだけじゃね?
tabControlでのフラットボタンの、選択した時と同じ見た目にする手段か、タブバーそのものの機能があればと思っていたのですが、 やはりtoolStripにボタンを配置させて、タブと同じような制御をさせる方法しかないようですね。 ご回答ありがとうございました。
クラスを作る側なんですが、メソッドの引数がXXXだった場合は○○○例外を投げる みたいな一覧というかガイドラインはどこかにないでしょうか? .NET Frameworkに定義済みの例外がたくさんあって、どれが適切か毎回悩んでしまいます。
122 :
デフォルトの名無しさん :2009/09/24(木) 01:25:57
>>109 けん一です。
皆さんお返事ありがとうございます。
選択色のプロパティウインドウにありますか??
>>121 ありがとうございます。そこを参考にして設計してみます。
>>120 Argument派生、InvalidOp、NotSupported、NotImpl以外は殆ど使わない気がする
確かに つかほとんどArgument
オブジェクトをディープコピーしたいとき GetCloneメソッドを定義してごりごり書くのと シリアライズしてコピーを作るのと方法がありますが オブジェクトには10個のプロパティと ジェネリックリストが3つ入ってます どっちがいいでしょうか?
好きなほう使えば?
すみません。質問です。 System.Net.WebClient.DownloadData()を実行するときに ノートンやウイルスバスターなどのセキュリティソフトの FWの影響を受けることはありますか? うける場合どういう対処を取るのが定石ですか?
FWで止められたらそのソフトの通信を許可してやれば良い
影響受けなきゃただの役立たずじゃねーか
ウィルスソフト作らないでください
132 :
デフォルトの名無しさん :2009/09/24(木) 14:54:06
質問です。 asp.netで 複数のページ(.aspx)が定義してあります。 これらを直接呼ばずにHome.aspxという窓口を準備しておいて、 ActionというQueryStringで判断し、 Response.RedirectかServer.Transferで 対象のページに飛ばそうと思っています。 Home.aspx内でRequerst.QueryStringのコレクションをそのまま遷移先のページへ渡したいのですが どうすればいいのかわかりません。 遷移先のURLに直接記述するしかないのでしょうか?
お勧めの文献教えてたもれ
今見てるんだけど文法からはじめるVisualC#入門って分かりやすい かなり初心者向けだけどね
137 :
デフォルトの名無しさん :2009/09/24(木) 21:52:22
商品販売管理システムを作っている。 顧客、商品の項目にフリガナを自動入力させられたら利便性が高くなるだろうと頑張った。 いろいろ調べて、自動でフリガナが入るようになった。 しかし(-_-;)。 タブやシフトタブで項目をいったり来たりしていたら、 顧客に自動で入ったフリガナがなぜか商品のフリガナ欄に表示されたではないか。 これはたまに起こる現象であり、同じ操作をしても出ない場合がある。 APIを活用しているらしいが、なぜだか分かる? 教えてちょ (-_-;)。
どんなコード書いてるかもわからずに考えろと? バカじゃねーの?
139 :
デフォルトの名無しさん :2009/09/24(木) 22:03:23
知らないなら黙っててください。
コードが悪いんだろハゲ
>>134 C# の本ではないけど。
自分は C++ MFC から C++/CLI に移った時に使った本。近い感じならいけるかも。
C++/CLI がわかれば C# もほとんどなんとかなる。
※移行の際に参照した本はこれ一冊
実践C++/CLI 極めるための基礎と実用テクニック
>>146 普通に起動して、ITaskbar インターフェイスを利用して消す。
148 :
デフォルトの名無しさん :2009/09/25(金) 00:02:59
バグがあるから。
>>147 ありがとうございます。
ITaskbarList がそれですかね?
調べてみます。
教えてください。 本当に困っています。 どうすればよいでしょうか?
死ね
解決しました ありがとうございます
テキストボックスの枠の色はどうやって取得すればいいですか? アプリケーション定義のコントロールで使いたいんですが、できれば決めうちでしたくないので。
入力された文字列が正しいかヴァリデーションしたいのですけれど、 Parseとかでチェックして良いのでしょうか?CF3.5です。 try { int tmp = Int32.Parse(string_num); } catch { } こう書いて、tmpがどこからも参照されない場合、 リリースビルドで最適化によって上記ロジック自体が消えたりします?
それ消すのは過剰な最適化だな つかcatchして何もしない、tmpも使わない、ならValidationにならない気がするが しかしTryParseがないとは面倒だのう
すみません。catchの中ではエラーメッセージを生成します。 起動時に全ての入力を一括チェックする方法だと、 tmpは特に使わない感じになると思うのですが。 例えば、App.configの中身を精査するみたいな。 まぁ、ConfigurationManagerも無いので作るのですが‥‥
Int32.Parse(string_num); だけで良いんじゃないか
asyncCallってなんて読むの? えーしんくこーる?
>>159 たしかに試してみたらその通りでした。
パース文を2か所に書きたくなかったので、
int tmp = 設定クラスのプロパティ
にしていたんですけれど、この場合はプロパティだけだと
エラーになるので‥‥
プロパティが呼ばれるたびにParseせずに内部で保持しろ
という気もするのですが、
どうせ数回しか参照されない値の場合、
内部で保持するほどのものでもないかなと‥‥
>>160 Ajax をアジャックスと読むならアシンク、エイジャックスと読むならエイジャックスと読めばいいと思うよ。
好みの問題。
> エイジャックスと読むならエイジャックスと読めば エイジャックスと読むならエイシンクと読めば、の間違い。
エイシンクロナス? アシンクロナス?
だから、英語圏人ならエイシンクロナス。 日本人ならアシンクと言う人は沢山いる。
>英語圏人ならエイシンクロナス。 ダウト
this.TopMost = true; の逆で、いつも背面に表示したいのはどうやるの?
どなたか155わからないでしょうか。
>>171 IEやエクスプローラもあるから、それはちょっと無理です…。
>>174 え!? 自分で作ったプログラム以外をTopMostにできるんですか?
たった今いいことあった! マックのドライブスルーから帰ってくると、家の車の下にネコ発見! あれ、うちのネコじゃないなあ・・・でもどっかでみたことあるな・・・ と思い、車の下を覗き込みと逃げずにこっちをみている まさかと思い、1年くらい前に野良猫に追いかけられ行方不明になった猫の名前を呼んでみた すると・・・「にゃ〜ん」と甘えた声が! すっごく弱虫で甘えん坊なそいつが1年も生きていたなんて・・・ 名前を呼んだら、ビクビクしながらこっちに寄ってきて、身体を撫でたらビクっとしてまた車の下に隠れようとしたけれど 何度も何度も名前を呼んで声かけたらにゃ〜んにゃ〜んと寄ってきて頭を撫でさせてくれた ものすごいガリガリに痩せてたけど、抱き上げると前と変わらず、頭をすりつけて甘えてくる もう絶対死んだと思ったけど、本当によかった!
どこの誤爆だ。w でもよかったと言っておこう。
コピペ
179 :
デフォルトの名無しさん :2009/09/25(金) 19:31:53
質問です。 今、webブラウザ(?) を作ろうとしています。 テキストボックスにURLを入れてボタンをおしてページに飛ぶのは出来たのですが、 今みているページのURLをテキストボックスに入れることが出来ません。 IEみたいに、ページのURLを表示する事は出来ませんか?
WebBrowser.Document.Url
>>175 WndProc をオーバーライドして
Zオーダが変わりそうになったら
Zオーダを最背面にしちゃえばよかったはず
>>181 > デスクトップの子供にする
これ詳しく頼む
認知偽装というやつか
ドライブスルーに使った車と、下にネコのいた車とは別なのだろうか 同じ車だとしたら、車庫入れの際にネコが轢かれなくて良かった
>>181 (0x7f, 0x9d, 0xb9)とSystemColorsのメンバとすべて比較してみましたが、いずれも違いました。
187 :
デフォルトの名無しさん :2009/09/26(土) 01:19:44
ある場所に自動で入れたフリガナが、 全く別の項目のフリガナに入っちゃうってどういうことよ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
うるせーよ馬鹿
だあらぁぁぁ、どっかでそのコントロールに入れてるんだよ君が!!!!!!!
TextBox継承してTextプロパティ上書きしたコントロールにでも置き替えてブレークポイント貼ってみろ
>>183 SetParent(GetDesktopWindow()); だったかな。
192 :
デフォルトの名無しさん :2009/09/26(土) 09:15:02
>>190 なんでそんなことするの?
継承とフリガナに関連性があるの
(*_*)?
194 :
デフォルトの名無しさん :2009/09/26(土) 10:04:01
デバッグ放棄するならプログラム向いてない もう辞めた方がいい
ポインタや、参照といったことから、可能性を追求できるぐらいの知能は必要。
>>192 イベントを取得して、どっから送られてきたかとか、確かめることができる。
それをやれって言ってくれてる親切な人だぞ。
バカには何を言っても無駄。
このゴミ虫殺せよ
>>186 そりゃ残念。あとは、実際に描画して取得するくらいかね。
とんでもない無能っぷりだな もうほっとけよ
203 :
デフォルトの名無しさん :2009/09/26(土) 15:46:06
ACCESSのmdbをC#で読み書きするプログラムを作ったんですよ。 で、ACCESSが入ってない環境で動かせるかどうか確かめたら、 OleDbPermissionのアクセス許可に失敗したようなエラーが出ました。 mdbってACCESSはいってなくなてもC#で操作できるんだよね?? アクセス許可に失敗ってどういうこと? ACCESSが入ってる環境だと問題なく動くんですが… 誰かアドバイスください。
MDAC が必要。
>>203 ACCESSつかってcdbを読み書きするプログラムだったら
ACCESS入ってないと無理なのでは?
初心者なので間違ってたらすいません。
>>205 そんな事ないんじゃね?
DVD管理ソフトがC#で書かれているのがあったけど
ACCESS入って無くても読み書きできたぞ
もちろんACCESSから読む事もできる
207 :
デフォルトの名無しさん :2009/09/26(土) 16:14:23
>204 MDAC自体は入ってるようなんですが…
おまえそれネットワーク共有とかから実行してないだろうな。
209 :
横から :2009/09/26(土) 16:45:36
>>208 俺も詳しくないんで確認だけど、それはイントラネットのネットワーク共有ドライブ
(例えばK:)にある実行アプリを実行しているのではないか、という意味だよね。
mdbファイルはどこにあってもアプリに部分信頼以上の権限があればいい、
という認識でOK? (MDACのバージョンによっては完全信頼)
210 :
デフォルトの名無しさん :2009/09/26(土) 16:55:27
ネットワーク共有っていうか、 環境自体はシンクライアント端末なんだけど、 それは関係あるの?
そういうときは、完全信頼を与えるとか、マイコンピュータから実行してみるとか、 その辺を試すのがスジ。
212 :
デフォルトの名無しさん :2009/09/26(土) 20:01:30
完全信頼を与えるって、どこでどうすればできますか
caspol だろ?
もう悪いこと言わないから .NET Frameworkを3.5SP1にしてしまえ
215 :
デフォルトの名無しさん :2009/09/26(土) 22:20:44
しかし、3.5SP1て ・イントラネットでもマイコンピュータゾーン ・厳密名付きアセンブリでもデフォルト検証なし いい感じに端折ってきてるよなw
C#で配列のスライシングと同様のことをするにはどうやるんですか?
>>217 Array.Copy メソッド (Array, Int32, Array, Int32, Int32)
のことかな?
スライシングというなら new[] { 0, 1, 2, 3, 4 }.Skip(1).Take(3).ToArray() の方がそれっぽいな
気持ち悪いな
var source = new[] { 1, 2, 3, 4, 5 }; // Linq var copyL = source.Skip(1).Take(3).ToArray(); // Array.Copy int[] copyAC = new int[3]; Array.Copy(source, 1, copyAC, 0, copyAC.Length); 実際に使ってみると、Array.Copyのほうがゴチャついてると思う。
VisualC#2008で質問です。 タスクバーのなかに検索枠を作りたいです。 以前はBandObjectでできたらしいのですが、バージョンが古くて動きません。 ToolStripというのがそれらしいんじゃないかと考えました。 Formのなかに配置してみたところ、感じとしてはそれっぽいんだけど、コンパイルしたところ、単にFormにToolStripが配置されているだけで、タスクバーにもっていっても登録できません。 (1)ToolStripでタスクバーのなかに検索枠を作ることはできますか? (2)できないとしたら、なにをどうすればよいでしょう? ご教示よろしくお願いします。
まっとうなやりかたなら、BandObject 以外の方法はないだろ。
アセンブリの生成に失敗しました -- 参照されたアセンブリ 'Interop.SHDocVw' は厳密な名前を持っていません。 をどう解決すればいいですか?
タイプライブラリインポータか何かで付けられなかったっけ
初歩的なことですみません //応答データを受信するためのStreamを取得 System.IO.Stream st = webres.GetResponseStream(); //データを読み込む int readSize = st.Read(bufferData, 0, bufferData.Length); while (readSize > 0) { //データが読み込めた時 //読み込んだデータをMemoryStreamに保存する requestData.Write(bufferData, 0, bufferData.Length); readSize = st.Read(bufferData, 0, readSize); } Bitmap BmpSource = new Bitmap(requestData); 最後の行で「使用されたパラメータが有効ではありません」とエラーがでます 一昨日こんな感じでうまくいってたコードがHDDクラッシュで涙目です 時間をかけてやりたいのですが、ショックが大きすぎて考えもまとまりません こんな簡単なことですみません ><。
ストリームの現在位置が一番後ろだからじゃね
ありがちなネタとしては ストリームのポインタ巻き戻してないんじゃね
231 :
230 :2009/09/28(月) 01:16:57
ぬあ 被った… 2秒差じゃしょうがないよね
あ、自己解決しました 人に見てもらう気持ちでながめるだけでちがいますね ひとりだとこんな簡単なことで ><。
せっかくお答え頂いたので訂正箇所を requestData.Write(bufferData, 0, bufferData.Length); readSize = st.Read(bufferData, 0, readSize); 第三パラメータがあべこべでした ありがとう!
バグってるぜ。
何がバグってるかというと、 1行目もreadSize分だけ書き込むようにしなきゃダメってこと。
ああごめんそこを直したって話だったか。
初めて学ぶプログラミング言語としてC#は適当ですか? それともVisualBasic.NETのほうがよいでしょうか?
どっちでも大して変わらない。
VBは変な癖がつくからやめとけ C#は入門者向けの本が少ないから微妙 .NETでなくていいならJavaにしとけ
VB.NET は言語的に無理やり感のある部分があるから .NET にするなら C# の方がよいと思う。 個人的には Python をすすめたいけど 3.0 が出てそんなに経ってないから 2.x 系の情報と混在して初心者には混乱しやすいかも。
俺は、ほぼ最初にC#覚えた あんま問題は無かったな その前にCとjavaを軽く触ったからかも知れんが
>>240 >C#は入門者向けの本が少ない
これは微妙な気がする
後は同意
IronPython使ってみたけど C#の方がいいよ
俺もC#→IronPython→C#と出戻り
IronPythonはC#から乗り換えるようなもんじゃないだろ C#の補助だ
補助つってもどういうときに使うの? 俺はファイルのバックアップとかの作業の自動化のためにCPythonで小さいスクリプト組んでるけど
VBから来たおれは最初;をつけるのがめんどくさかったけど、今はこれのありがたさがわかる
逆にマクロとかで;付けて怒られる
末尾の_ってなに?
VB10で_は省略できるようになるよ まあVS2010ではC#4.0でCOMサポートの強化やdynamicによって 今までVBの方がやりやすかったことが完全に無くなるわけだけど
>>251 VBは(っていうかC系統以外の言語の大半はそうだけど)改行コード = 行の終わりになってる。
だから、(文字列的に)改行しても(文法的な)行を継続したい場合は、‘_’で改行コードを
エスケープする必要がある。
>>253 > VBは(っていうかC系統以外の言語の大半はそうだけど)改行コード = 行の終わりになってる。
そんなことねーだろ。
まあ少なくとも歴史的にはそうなんだけど、 そのあたりは水掛け論にしかならんから議論しても無駄だね。
水掛け論って。 メジャーな言語をいくつか思い浮かべればわかる話。
ALGOLの影響下にある言語はフリーフォーマットだろうし、lisp系ももちろん一行一文じゃないし、 関数型だってそうだし、一行一文って、COBOLとかFORTRANとその影響下のBASICくらいじゃね?
アセンブラやdosのbatだってそうだよ。 だから水掛け論にしかならんて。
・一行一文 アセンブラ、バッチファイルやシェルスクリプト、COBOL,FORTRAN,BASIC ・フリーフォーマット 近代的な言語のほとんど ↑みたいな感じかね 「C系統以外ほとんどは」って、水掛け論になるレベルじゃないわな。 屁理屈でねばって「ほら水掛け論だ」って、自分にも一分くらいは理があるような 口ぶりはできるかもしれんけど。
お前らスレタイ
List<class>の値をDataGridViewに表示させてるんですけど classのプロパティの値をコードから変更したら すぐにDataGridViewにも変更された値を表示させたいんですが、 今のところ dataGridView1.Refresh(); で表示させてるんですが 一般的にはどうやるんですか? もっとスマートなやり方があると思うんですが List<Test> testList = new List<Test>(); class Test { public string s1 { get; set; } public string s2 { get; set; } } private void Form1_Load(object sender, EventArgs e) { testList.Add(new Test { s1 = "a", s2 = "b" }); testList.Add(new Test { s1 = "c", s2 = "d" }); testList.Add(new Test { s1 = "e", s2 = "f" }); dataGridView1.DataSource = testList; } private void button1_Click(object sender, EventArgs e) { testList[0].s1 = textBox1.Text; dataGridView1.Refresh(); }
INotifyPropertyChanged BindingList or ObservableCollection
>>262 おぉそんなものがあったのか!
ありがとうございます。調べてみます
>>262 261じゃないがthx
public partial class Form1 : Form
{
class Test : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public void NotifyPropertyChanged(string info)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
private string s1_;
public string s1
{
get
{
return this.s1_;
}
set
{
if (value != this.s1_)
{
this.s1_ = value;
NotifyPropertyChanged("s1");
}
}
}
public string s2 { get; set; }
}
List<Test> testList_ = new List<Test>(); public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { testList_[0].s1 = "ababa"; } private void Form1_Load(object sender, EventArgs e) { testList_.Add(new Test { s1 = "a", s2 = "b" }); testList_.Add(new Test { s1 = "c", s2 = "d" }); var customersBindingSource = new BindingSource(); customersBindingSource.DataSource = testList_; dataGridView1.DataSource = customersBindingSource; } }
windows movile ソフトウェアを作ってみてためしにcabファイルにしてみたんですが、 インストールに失敗します。 作成環境はVS2005です。 cabで失敗するunicodeは修正しました。 実機にcabを入れてタップすると「インストールに失敗しました」とだけ出ます。 こういう場合どうやって原因を確かめたらいんでしょうか?
すぺるみす
269 :
267 :2009/09/29(火) 13:57:50
解決しました ほんとにスペルミスでした ミスしたのはcabプロジェクト名 本家プロジェクトに上書きしてしまいました orz
>>268 はエスパーなのか、本当に良くあるミスなのか
271 :
267 :2009/09/29(火) 14:13:12
本家プログラムと同じcabファイル名にしようと思うと起こりうることかも知れません でも相当うっかりしてないとやらないと思います orz
movileのことかと思ったわ
invokeなんとか、とか、なんとかinvoke とか たんなる invoke とかいろいろあるんですけど 全部delegateってことですか?
invoke自体はただの英単語 何を指すかはメソッド次第
各コントロール、フォームなどのフォントサイズを一括して変更する方法はないでしょうか?
>>275 君は質問の仕方から勉強する必要がありそう
>>275 方法1.フォントサイズを変更するコントロールすべてを一括選択した後にプロパティウィンドウでフォントサイズを変更する。
方法2.フォントなどはアンビエントプロパティなので、特に設定されていない場合(デフォルトの値)は親のコントロール(フォーム)の設定が反映されるようになっているので
親コントロール(フォーム)のフォントサイズを変更すれば子コントロールにも反映される
>>277 「フォントサイズ」なんて概念はそもそも存在しない。
その回答はない。
↑君のレスは無用
>>279 馬鹿はすぐこれだ。
ならフォントサイズってどういう意味だよ。
他人をバカ呼ばわり → 逃亡
(・∀・)クスクス
>>282 お馬鹿だな。
それで、その「フォントサイズ」を
>>277 の方法でコントロールに適用できるのかよ。
「それじゃできない」とかいらないよ。 「こうやったらできる」って言えばいいだけ。 俺としては、方法2 で十分だと思う。
>>286 それは「フォント」を設定しているのであって
「フォントサイズ」(そんな概念は存在しないが)を設定しているのではないだろう。
端的に言えば、コントロールごとに書体が違う場合はどうするのか。
>>287 とりあえずお前はスレタイ読んで風呂でも入って落ち着けよ、な?
あと、初心者スレに向いてないよ
>>288 俺の方から煽った覚えは無いけどね。
初心者だろうがなんだろうが、正しくないことは正しくないといってるだけだ。
このように、馬鹿ってのは決まって偉そうに人に講釈をする規範を
自分には適用しないダブスタ野郎だ。
>>273 一般的にはメンバやデリゲートを呼び出すことをinvokeという
純粋に言語としてのC#に話を限ると,メソッドやデリゲートを表す式の後(引数)を付けた式のことをinvocation expressionと呼ぶ
フォントサイズの概念から議論しようか
eventの存在意義がわからない delegateで十分な気が
イベントはデリゲートのためのプロパティみたいなもの。 Javaなどではよくイベントの代わりにObserverパターンというのが使われるんだけど, それに出てくるaddListenerやremoveListenerを一つにまとめたのがイベント。 その点ではgetValue/setValueを一つにまとめたプロパティと似てる。 Observerについてはググれ
eventって、複数登録できるんだよな?
イベントは複数登録できる デリゲートは1個だけ
マルチキャストといって,デリゲートも呼び出し対象を複数登録できる 本来,イベントがあればaddとremoveの実装次第でどうとでもなるからマルチキャストはいらないんだが 設計当時はイベント以外のデリゲートの使用が想定されてなかったと思われる
>>298 さすがに最後の行はない。そういうデタラメを言っては行かん。
例えばRegex.Replaceを見よ。
最後の行は言いすぎだけど今みたいにデリゲートをガンガン使うような状況は絶対に想定されてなかった 最適化しづらいだろうし戻り値の扱いとか無理があるし邪魔なだけ
delagteもなんで DelegateクラスとMulticastDelegateがあるんだよう はじめからDelegateクラスをマルチキャスト可能にしとけよ
private List<EventHandler> _ClickA; public event ClickA { add { _ClickA.Add(value); } remove { _ClickA.Remove(value); } } private EventHandler _ClickB; public event ClickB { add { _ClickB = Delegate.Combine(_ClickB, value); } remove { 略 ClickAのようにするのがイベントの概念としては本来の形。 でも通常,addやremoveを省略して普通にイベントを宣言するとコンパイラはClickBのようなコードを生成する。 つまり「どうせデリゲートなんてほとんどイベントにしか使わないでしょ?」ってことでコンテナをくっつけてる。
303 :
267 :2009/09/29(火) 23:23:16
えーとデータから作成した画像がピクチャボックスに貼ってあって それが(10,10)動いたときもとの画像をずらして 上10ピクセルと左10ピクセルだけ描画したいんですが for文を2重にして for(x=0;x<=10;x++) { for(y=0;y<=10;y++) { } } ってやると当然10×10ピクセルしか描画しません 上記のように描画したいとき また移動量(x,y)が逆に動いてマイナスのときにも対応できる 簡単なアルゴリズムはありませんでしょうか? ちなみにCGのように描画が必要なのでマスクは使えません ヒントかリンクだけでもけっこうです よろしくお願いします
304 :
275 :2009/09/29(火) 23:24:07
片付いたので見にきたら少し賑やかになってるw 概念はわかるけどemSizeのemはなに?
305 :
デフォルトの名無しさん :2009/09/29(火) 23:25:25
どうでもいいが0〜10の、11回処理してないかい?それ
306 :
267 :2009/09/29(火) 23:26:49
あうw
何がしたいのかサッパリ
x < 10 または y < 10 の領域を描画したいんだろ
309 :
267 :2009/09/29(火) 23:45:12
>>308 あ!そうか!そういうことです!
なんかヒントになりました!
ありがとうございました!
あらかじめ敵のXY座標を設定しておいて それらをプログラム全体から利用したいんだけど どこでどのように定義するのが適切なんでしょうか? 名前空間の内側、classの外側で定義すれば全体から利用できると思ったんだけど 下のを書き込むとフィールドやメソッドは定義できないとエラーがでます Point TekiPos = new Point(10, 5);
Teki.Posとは絶対に書きたくないの?
>>310 public staticにしてクラス内にもて。
困ったときはpublic staticだ。
まあゲームなんか難しく考えずpublic static(いわゆるグローバル変数)でもいいよ ゲームは気を使って設計してもどうせ大なり小なり大域コンテキストクラスが出てくる
>>311 あ、なるほど、Tekiクラスをプログラム全体で利用できるようにして
そのメンバPosに対してどこかでデータいれるってことかな
>>312 インスタンスを複数必要ないというか、あるとややこしくなるので
staticのほうがわかりやすそうですね
即レスありがとうございます
>>314 ゲームって作ったこと無いんだけど
Enemyクラスかなんか作っといて、必要になったらnew Enemy()で
初期化してやった方がスマートなんじゃないの?
敵が一体だからグローバル変数にするならまだいいけど, 敵が複数いて,ほかのクラスから特定の敵の座標を取得するためにいったんグローバル変数に入れたりするのは最悪のパターン
どんなゲームだろうねえ
敵がいて初心者が作るものったらSTG以外に無いだろ
>>313 ありがとうございます。
最初からメモリや動作速度とか考えても仕方が無いですね
できるだけ自分にわかりやすく書こうと思います
>>315 敵と味方では振る舞いが違うからそういう風にしたほうがいいかもですね
>>316 そういう感じで設計仕様と思ってたんですが、なぜだめなんでしょうか?
将棋でいうところの盤をstaticで定義してどこからで参照できるようにして
部隊の動き(どの座標に前進後退するかなど)もstaticで定義しようと思っていたんですが
>>317 >>318 シューティングは線形代数や三角関数などの数学的知識がいるので無学のわたしには無理です
ターン制の戦略ゲーム的なものを作ろうと思ってます
class Matrix{} //フィールド全体とマス目を定義 class Enemy{} //敵のキャラクターを定義 この二つを作っておいてMatrixにEnemyのインスタンスを突っ込むとか 位置はEnemy、移動先はMatrixで定義しておいたほうが安全だと思う グローバル変数をたくさん作ったり使い回し足りするのはトラブルの元
逆だな 位置はMatrix、移動先はEnemy
グローバル変数が使いたい時はstaticって何で入門書に書くんだろ 最初が肝心なんだぞ 書くなよ
なるほど、グローバル変数を大量に作ってしまうのはそもそも設計に問題ありって感じですか
クラスの中にも自作クラスを入れられて、さらにそのクラスにも自作クラスを・・・
これがオブジェクト指向?
この感覚に慣れないとだめですね
>>321 マス目にenemyを放り込む感じですよね
そのほうがわかりやすそうですね
ありがとうございます
動きゃいいんだよ 未完成で放置するのが一番良くない
そんなことはないよ 静的変数使い回しなんてしてたら論理的なミスしたときに わけわかめになりやすい 最初からオブジェクト指向のお作法を意識するのは上達の近道だよと 遠回りした俺が言ってみる久々のてすつ
多言語から移った人間を意識してるんだろうけど要らない説明ではある気がする
DataTable内に「name」という列を設けてその中に色々な名前を定義しています。 SEQ NAME 連番 名前 1 たろう 2 タロウ 3 TAROU DataTable.Select("NAME LIKE '%たろう%'"); として検索した時に本来は 1 たろう のDataRowのみ抽出したいのですが 2 タロウ まで抽出されてしまいます。厳密に検索をするにはどうすればよいでしょうか? ※また、大文字・小文字も区別して検索するにはどうすれば良いでしょうか?
>>327 CaseSensitiveプロパティをtrueにしてからSelectしる
CSとKS,WSは別じゃないの? プロパティ一覧見た限りだと、ロケールをインバリアントにすれば良さそう
332 :
デフォルトの名無しさん :2009/09/30(水) 12:43:45
vs2008でWindowsフォームアプリケーションを作成しました。 インストーラーを発行して、配布しようとしましたが、.netフレームワーク3.5のダウンロードに30分近く要します。 コンポーネントはクライアントプロファイルのみにしています。 皆さんはどのような手段でインストール方法を取られていますか?
333 :
デフォルトの名無しさん :2009/09/30(水) 15:57:29
クライアント専用Frameworkサブセットってとこチェックしても30分もかかるもんなの? やったことないけど
Client Profile v3.5がインストールされる条件が変で、 バージョンを問わずフルセットの.NET Frameworkがインストールされていないこと。 条件が合わない場合は差分をダウンロードしてフルセットでのインストールとなる。 プレインストールのXPやVista以降の場合、基本的に.NETが導入済みなので、 よほど特殊な環境でなければClient Profileは導入されない。
336 :
デフォルトの名無しさん :2009/09/30(水) 20:44:06
>>335 XPにも標準で.netがついているの?
何かのネットで見たら、付いていないと書いていたんだ。
記事はまちがいだったのかな。
「プリインストールの」だろ 相当前に使ってたノートPCにもデフォで1.1が入ってたぜ
XP はないよ。 2003 が 1.1、Vista が 3.0 だね。
でも、今時.net入ってない環境ってどうよ
.netが出だした当初って誰も入れたがらなかったけど .NETを使ったフリーソフトも出だして当たり前になってきたね
2.0は入ってるものと考えていいと思うけど3.5はまだきつい
まぁでも、2.0 が入ってれば、勝手に 3.5 が Windows Update で入るんだけどな。
1.0が入ってないとダメっつーインストーラーは勘弁して欲しいw
1.x が必要なアプリは使いたくない
2.0とか3.5の入ってる環境なら1.x必須なのも動くんじゃないの?
たいていは 2.0 で動くと思うけど、サポート対象にはしたくない。
最近コンポーネントエラーって起きたことないな
348 :
デフォルトの名無しさん :2009/09/30(水) 22:18:05
長くなるけど質問お願い 暗号化を作っていて、ボタンのイベントに処理を書くのではなくて クラスに処理入れて、それをボタン押したときに呼び出すようにするには どうしたらいいのでしょうか お力おかしください public partial class Form1 : Form { //バイト配列で変数を宣言 public byte[] DesKey; public byte[] DesIV;e, public byte[] cryptData; public Form1() { InitializeComponent(); RC2CryptoServiceProvider TDES = new RC2CryptoServiceProvider(); //TripleDESCryptoServiceProvider TDES = new TripleDESCryptoServiceProvider(); DesKey = TDES.Key; DesIV = TDES.IV; } //暗号化ボタンを押したときの処理 private void button1_Click(object sender, System.EventArgs e) { // source 配列から cryptData 配列へ変換 // 文字列を byte 配列に変換します byte[] source = Encoding.Unicode.GetBytes(genbun.Text);
349 :
デフォルトの名無しさん :2009/09/30(水) 22:18:58
上に続きですよろしくおねがいします // Triple DES のサービス プロバイダを生成します TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider(); // 入出力用のストリームを生成します MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(DesKey, DesIV), CryptoStreamMode.Write); // ストリームに暗号化するデータを書き込みます cs.Write(source, 0, source.Length); cs.Close(); // 暗号化されたデータを byte 配列で取得します cryptData = ms.ToArray(); ms.Close(); // byte 配列を文字列に変換して表示します angougo.Text = Encoding.Unicode.GetString(cryptData); }
350 :
デフォルトの名無しさん :2009/09/30(水) 22:19:53
>>334 クライアント専用サブセットってどこで設定するの?
暗号化とかまったく関係ないな。
>>348 どう、ってインスタンスメソッドにするならボタンクリックでクラスを初期化して
メソッド呼び出せばいいのでは?
staticメンバ一個作っておいてそこにインスタンスぶち込んでstaticぽく呼んでもいいけど
>>349 public partial … → public class Encryption
public Form1() → public Encryption()
private void button1_Click(… → public byte[] Encrypt(string sourceText)
byte[] source = … → byte[] source = Encoding.Unicode.GetBytes(sourceText);
angougo.Text = Encoding.Unicode.GetString(cryptData); → return Encoding.Unicode.GetString(cryptData);
>>354 訂正
private void button1_Click(… → public string Encrypt(string sourceText)
>>348 Class Angouka
{
publick void Start(){....};
}
Class From
{
Button_Click()
{
Angouka ang=new Angouka();
ang.Start();
}
}
357 :
デフォルトの名無しさん :2009/09/30(水) 22:58:49
初心者で考え方がいまいちで申し訳ないです。 クラスを作り その中に今まで入れていたボタン処理を入れて そのクラスをボタンイベントに生成して 呼び出せばおkと言う感じ?
うん。
ボタンが押された時の処理を別のクラスに書くんじゃない その目的の処理を行うクラスを作って,そのクラスをイベントハンドラから利用するんだ 機械的に移すだけだとあんまり意味がない
クラスわけは責務をわけるのと同等
こういう違いって理解できない人にはなかなか理解してもらえなかったりするな…
どうでもいいけどいやよくないけど 暗号化結果のバイト列をUnicodeEncodingで文字列にするのは無茶だぜ。 まあ諸悪の根源はv1.1の頃のMSのサンプルだったりするんだが。
363 :
デフォルトの名無しさん :2009/09/30(水) 23:38:17
一応そのほかにも使う可能性というか応用で使うので ひとつのクラスに処理をいておきたいと思っています。 ACIIでやろうと思ってたんですがどうもうまくできなかったので今 それです。これは直したいなと思っております
364 :
デフォルトの名無しさん :2009/09/30(水) 23:41:34
>>352 よく見たらありました。
ボケてきたのかな…。ありがとう。
会社とか組織をイメージしてみるといいかも。 実際に仕事やる部署と、注文受ける部署、商品配達する部署・・・・・。 食堂で言うなら厨房と接客・電話番、出前とか。 それぞれは、自分の仕事だけして、あとはどっかに受け渡すだけで 良いようになってる。 下手な部署分けすると役所みたいにたらい回しになって困るが。 バイト列の文字列化ならBase64じゃない?昔から用意されてるし。
とか思ってみたらBase64変換クラスがぱっと見で見つからん。あれ? Javaだったのかな?
System.Convert.ToBase64String(byte[])
Convert.ToBase64
キーボードのキーを押してプログラミングするわけだが キー自体がプログラミングを理解しているわけじゃないよね あくまで、文字を入力させる命令を出すためのスイッチに過ぎない 役割分担をさせていくわけだけど、その分クラスはどんどん増える だがそれでいい
オブジェクト指向の話になると現実世界の事象を例えにだすのをよく見るけど、 その例えってそんなにわかりやすいもんなのかな。 むしろそこからどうやってコードに落とすのかと悩むことしきりなんじゃないか。
もちろんそうだけど、オブジェクト指向の入り口で躓いているんだから仕方が無い
まず、構造化プログラミング・設計を学ぶところから・・・。
>>370 わかってる人が例えるからそうなるんだよな。
わからない人向けの説明には向かないと思う。
かと言ってわかってない人は向いてる向いてない以前に例えられないから。
そこをいくとオブジェクト指向のこころは最高だと思う。
憂鬱な
貝になりたい
引きこもりは家をでないのでスペックがさっぱりわからない やり取りできる手段は、スカイプやネトゲしかない でも、こっちの情報をいくら伝えてもスペックを晒そうとはしない オブジェクト指向ってそんな奴
良くも悪くも勘違いされる不幸な子ってイメージだけどな。 きちんと理解してあげれば戦力になるが、間違った認識や過度の期待を持たれるとプレッシャーに負ける人みたいな?
お前らスレタイ
使ってればわかる 結局はノウハウを一般化しただけのもの
自作ソフトのソースを公開しようと思うんですが プロジェクトファイルなどにPCユーザー名など 固有の情報みたいなのが入っていて見られてしまうんでしょうか? ソースを公開する上での注意点などありましたら教えてください
ユーザ名を短くて無意味な英文字にしておく .csだけ公開する
>>383 いや、さすがに.slnと.csprojくらいは付けようよ。
逆に.csproj.userとか.suoは除外。
VC#?
binフォルダは削除 slnとcsprojは付いてないと読む気が失せる
プロジェクト一つならslnはいらないんじゃ…
slnないと保存できないからめどい
>>388 プロジェクトのみでも一度保存すればソリューション作成されるよ
390 :
デフォルトの名無しさん :2009/10/01(木) 18:59:34
C#初めてはや1.5ヶ月 いまだにクラス呼び出しとかが曖昧 配列わからん。 プログラム自体初心者ですがこれはかなり遅いほうですよね? 最近は分岐がわかりだしてきたところです
俺も、1.7ヶ月ぐらいだけど オブジェクト思考はよくわからんけど 配列とか、クラス呼び出しぐらいなら一応・・・ まぁ、以前Cとjavaをおさわり程度にやった事有るけど
C#はじめて7年 クラス呼び出しなんて初めて聞いた
小学生初めてはや5年 職員室呼び出し喰らったのは今年が初めてだ
お前らスレタイ
395 :
デフォルトの名無しさん :2009/10/01(木) 20:07:10
あぁ、悪い クラス定義してメソッド呼び出しとか これでいい?これも違うのかなw
DESCryptoServiceProviderの複合化はパスワードが違う場合、絶対にエラーを吐きますか? それとも適当に復号したデータを返す時がありますか?
>>390 1日にやる量にもよるし、いろいろだろ。
他人にかまわず自分のペースで楽しみなよ。
なんだかんだで仕事でつかうと習得が早い
俺なんか2年目でやっとデリゲートを唱えることが出来た
仕事で必要で学んでいるんですが やはり全然覚えが悪いのでまじで仕事自体を辞めるべきなのか本当に迷ってる ものすごく申し訳ない気持ちと焦りでぐだぐだ・・・
>>396 原理的には適当に復号化。でないとTripleDESが不可能のはずだから。
テストコードとかで確認もしなかったけど、適当に復号化するだろうと決め込んで、
めんどくさくなって平文にヘッダとトレイラを入れといて復号時にパスワードチェック
とした。
パスワードじゃなくてIVとKeyだろ、なんて無粋なツッコミはナシね。
402 :
デフォルトの名無しさん :2009/10/01(木) 21:41:18
>>400 できなければ辞めるか仕事をかえてくれと言ったほうがいい
ムリなひとはどうやってもムリ
>>400 記憶力はあるに越したことはないけど、プログラマとしてそんなに重要な
ファクターじゃないと思うよ。
重要なのは理解力と要領だよ。
どのみち、今時のライブラリが全部頭に入っている奴なんていないわけで、
誰でも多かれ少なかれMSDNやwebの情報を見ながらコーディングしてるんだから。
俺なんていまだに@ITの「C# 3.0らしいコードの書き方」とか見て頭混乱してる
よくさ、そういう解説サイトで学校クラス学生なんて例を出すけどわけわからんよな 誰が学生名簿なんて作るんだよとww そこそこの規模のソフトを例にプログラミングしながら学ぶようなのがあればいいんだけど
参考書は本当に難しいと思う C#だけでもリファレンス、デザインパターン、入門と3冊持ってるけど それでも補完できない部分が独学だと必ず出てくる クラスとかオブジェクトの理解が進まないうちに実践に入るような参考書掴むと 後から本当に苦労する
犬クラス ポチ、パトラッシユ、しろオブジェクト
>>404 あれは書いてあるコードが理解できれば十分
記事の内容を真に受けてはいけない
K俣か
>>400 やめるなら俺を代わりに雇うよう取り計らってくれ
むしろ川俣節は、このアジテーションは過大なのかそれぐ らい言い切ってしまってもいいのかのこう微妙な感じが 個々に判断できるようになると上級者。 …味があって好きなんだけどなぁ川俣節
>404 >408 おれもあの記事かなりわかりにくかった…(´・ω・`)
>>411 あれは文体が古い(30年前のパソコン雑誌っぽいw)だけで、アジってほどでもないよ。
まあ今時のプログラマの書く技術解説の文章っぽくないのは確か。
たぶん物書きに憧れがあるっていうか、自己表現しないと気がすまない性格なんだろうw
この人の『Win32API散歩道』って本を持ってるけど、あれ見るといかにもそんな感じ。
ちらっと見てみたけど、能書きが多いな。
418 :
デフォルトの名無しさん :2009/10/01(木) 23:16:25
質問です 初心者です namespace WindowsFormsApplication1 {★ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { } } } とあってclassを★のところに記述するとなぜかフォーム表示が 出来なくなるのですが同対処すべきなのでしょうか
そんなところに書かない 1クラス1ファイルを基本にする
422 :
デフォルトの名無しさん :2009/10/01(木) 23:42:38
>>421 1ファイルとはどういうことでしょうか
大変申し訳ないです。
今はクラスとメソッドを外出しにしておいてボタン処理を押したときに
その処理を参照しようとしています
そんなこと聞いてねーよw おせっかいさんめ
>>425 はい、私です。
今日作ってよし出来たと思ったら
内部でクラス作らないで外部で作ってと言われて
あたふたしています。
>>420 > このページが表示されている理由
> クラス MainForm はデザインできますが、ファイルの最初のクラスではありません。
>Visual Studio では、デザイナはファイルの最初のクラスを使用する必要があります。
>クラスがファイルの最初のクラスになるようにクラス コードを移動して、デザイナを再度読み込んでください。
やってみたけど、理由も対処方法も表示されるじゃん。
外部に作ると言うのは FORMの外部に作ってそこから呼び出すってわけじゃないんですね・・・ From1の下に作ったら表示されました。 勉強たらなすぎてしにたい
>>428 86BASICから引越しされてきたのですか?
>>428 いや、そのクラスを使うときに必ずForm1がセットになってしまったら使い辛くは
ないかい?例えば別のアプリで使い回しするとき。
だから、別々の .cs ファイルで管理することを皆は薦めている。
まあ、とりあえず動くなら今は別に気にすんな。
どうせ色々使い回しでコピーしたあげく、嫌になって分かってくるもんだから。
エラー見てもちんぷんかんぷんなことが多い まじで今年やってだめなら辞表考えるわほんとに。
>>430 ああああああ
なるほど、使いまわし出来るようにとか言ってたましたそういえば・・・
と言うことはcsを処理の分を作るのが外部と言うことなんですね。
理解度足りないですね
まじでありがとうございます。
>>396 >>401 どうでもいいが、「復号化」ではないのでリアルで使うと恥じをかくことになると忠告しておこう
>>432 ファイルとクラスは1:1が基本ではあるが、分かり易くなるならM:Nでも問題ない
最初に手をつけるのがコレって厳しいのん?
かもね
やっぱりか…… サンクス
いやそういう問題じゃないと思うが。
>>431 向いてない奴がやると体壊すか鬱になるよ
そういう奴沢山見てきたし
おれは小学校の頃からプログラミングやってて
何時間やっても苦痛じゃないからな
まあ、仕事だとしんどいこともあるけど
息抜きのために自作ソフトを作るぐらいだからw
そういう人間じゃないとだめなんかもな
>>432 右のウィンドウにプロジェクト名が書いてあるでしょ?
それを右クリックして、追加>クラス
を選択すると幸せになるよ
ややこしくなってきたら、同じようにしてフォルダを作るんだ
>>433 >どうでもいいが、「復号化」ではないので
突っ込むべきはそこではない。
>原理的には適当に復号化。でないとTripleDESが不可能のはずだから。
これがおかしい。
暗号アルゴリズム単体の処理での動作と
パディング等も含めたスキーム全体の処理での動作を
混同している。
もういいから外注しろ
1ファイル1クラスは冗談だろ? Javaかよw 冗談だよね?
だいたいの機能でファイル分けるけど さすがに1クラス1ファイルは無いな(1つの機能が1つのクラスで済むならありうるけど)
1つのファイルにWindowsFormが2つ以上同居できないとか、 ファイル内の最初のクラスにするといった制限は IDE(Visual Studio)の制限で、別に言語の制限じゃない。
enumやdelegateも型だから、 分けなきゃいかんのならこれも分けるの?てのもあるね。 javaの場合はpublicなenumはファイル分けなきゃいかんかった。 めちゃ不便。
関連性が極めて強い型、殆ど従属してると言って言いような型とか、 列挙やらデリゲートやらは流石にファイル分けたりはしないな。 ただ、大体基本的には1クラス1ファイルになると思うけどね。
パブリックなクラスが内部だけで使うプライベートなクラスとかなら 1ファイルに書いたりはする 規模にはよるけど
ジェネリッククラスも作る時は一緒のファイルに書いてるかな
まあ、その辺は好みだよな
450 :
デフォルトの名無しさん :2009/10/02(金) 17:26:45
子ウィンドウハンドルの取得が出来ません。 EnumWindowsはなんとか出来たので、それを元にやっているのですが EnumChildWindowsの使い方が理解できてません。 private delegate int EnumerateChildWindowsCallback(IntPtr hwndParent, int lParam); [DllImport("user32.dll")] private static extern bool EnumChildWindows(IntPtr hwndParent, EnumerateChildWindowsCallback lpEnumFunc, int lParam); public int EnumerateChildWindows(IntPtr hwndParent, IntPtr lpEnumFunc, IntPtr lParam) { return 1; } public void main(IntPtr hWnd) { EnumChildWindows(hWnd, new EnumerateChildWindowsCallback(EnumerateChildWindows), 0); } これで「デリゲート 'LTLimit.WindowHandle.EnumerateChildWindowsCallback' に一致する 'EnumerateChildWindows' のオーバーロードはありません。」と出ます
EnumerateChildWindowsCallbackとEnumerateChildWindowsの引数が合ってないじゃん
452 :
デフォルトの名無しさん :2009/10/02(金) 18:10:51
>>451 レスありがとうございます!
ただ、引数に何を入れるのかが分かりません。
(IntPtr hwndParent, WNDENUMPROC lpEnumFunc, int lParam);
とか
(IntPtr hwndParent, IntPtr lpEnumFunc, int lParam);
など試してみたのですがダメでした。
>>451 APIの知識がないんだな
C#云々の問題じゃないし
>>452 ちゅーかどっからそんなソースをもってきたんだろう。
引数はIntPtr hWnd, int lParamの2つだけ。
引数名をhwndParentとしているが、ココには親のウィンドウハンドルが渡されるのではなく
列挙された子ウィンドウのウィンドウハンドルが渡される。
EnumChildWindowsの引数なんて言ってないんだが…
456 :
デフォルトの名無しさん :2009/10/02(金) 19:23:55
>>454 子ウィンドウを列挙するソースが見つからないので
試行錯誤しているところです。
引数名は何も気にせずコピーしてました。
>>455 なんだか的外れな事をしてしまったみたいですみません。
どこをどう直せば良かったのでしょうか。
C#のソースに拘らなくていいだろw
458 :
デフォルトの名無しさん :2009/10/02(金) 19:39:51
>>457 こだわってるんじゃなく、違う言語がまったく読めないのでC#に出来ないのです。
>>442 非常識自慢?w
ネストされたクラスはカウントしないとして、
例外クラスとenum以外は基本ファイルあた1クラスでしょ。
あとは、まあ小さなクラスなら派生クラスも同じファイルに書いちゃうことはあるが。
いじわるしないで教えてやれよw
何かプログラムしようと思うんだけど何も思いつかない
教えてあげないよ _,∩_ _,∩_ _,∩_ (_____)ゝ、 (_____) y (_____) / :: :: :: ヽ 〉 /-‐:: ::‐-ヽ / / :: :: :: ヽ _./ (・ )ll(・ ) ∨ _/ 0) i! 0) ∨ _/ ( ・)i!(・ ) ゙、_ // :: :: ∈ゝ :: ::ヽ // :: ‐-‐ :: ヽ // :: ー一 :: ヽ\ . ゝ/:: :: :: :: :: ::ヽ ゝ/ :: :: :: :: :: ヽ ゝ/ :: :: :: :: :: ヽく  ̄ ̄ | ̄ ̄ | ̄ ̄  ̄ ̄ | ̄ ̄ | ̄ ̄  ̄ ̄ | ̄ ̄ | ̄ ̄ | | | | | | ⊂! !つ シ! !つ ⊂! !つ ジャン♪
>>458 だから、APIが読めなければC#にもできないだろw
基本は同じなんだからさ
こんにちはの意味がわかれば、HELLOをどのタイミングで言えばいいかわかるだろ?
それと一緒だ
下手な例えだなw
>>433 >「復号化」ではないのでリアルで使うと恥じをかくことになると忠告しておこう
DESCryptoServiceProvider.CreateDecryptor メソッド
指定したキー (Key) および初期化ベクタ (IV) を使用して、対称 DES (Data Encryption Standard) 復号化オブジェクトを作成します。
セキュリティ関係用語じゃなくてMicrosoft用語ですだ。
>>440 だから、原理的にはって言ってるじゃないか。
どう実装されてるか分からないから、適当に復号化するように実装されてないとは
言い切れない。
ドキュメント斜め読みしても見つからない。
一個かそこら試したとしても不安が残る。
時間は待ってくれない。
だからどっちに転んでも、まあ動くだろうって対応をした。って話。
ところで関係無いんだが、これ実はExcelVBAで利用したと言ったら信じる?
468 :
450 :2009/10/02(金) 23:48:40
解決したっぽいです。 レスくれた方ありがとうございました。 private delegate int EnumerateChildWindowsCallback(IntPtr hWnd, int lParam); [DllImport("user32.dll")] private static extern bool EnumChildWindows(IntPtr hwndParent, EnumerateChildWindowsCallback lpEnumFunc, int lParam); public int EnumerateChildWindows(IntPtr hWnd, int lParam) { return 1; } public void main(IntPtr hWnd) { EnumChildWindows(hWnd, new EnumerateChildWindowsCallback(EnumerateChildWindows), 0); }
>>467 別に対応がおかしいとは言ってないよ。
実際復号されることもエラーになることもあるから。
>でないとTripleDESが不可能のはずだから。
これがおかしいと言ってるだけ。
タラオ「トリプルですぅ〜」
>>460 安心したw
今書いているクラスは入れ子になっているものを数えたら30個にもなっててほんの少し焦った。
まぁ、チョロっと必要な定数叩き込むときは1ファイルに2つぐらい書いちゃうけど大丈夫だね。
>>469 TripleDESは、
暗号文 = 鍵3でDES暗号化(鍵2でDES復号化(鍵1でDES暗号化(平文)))
という仕様だから、DESはある鍵で暗号化したものを別の鍵で復号化できないと
実現不可能のはずだと考えたんだが、間違ってるのか?
しつけえ
いちおう書いておこう。 暗号アルゴリズム単体と、 〜Providerとかを使っての処理は 「違う」って言ってる。 DESとか3DESとかの暗号アルゴリズム単体では ブロックサイズのデータとキーを与えたらブロックサイズの結果を出す単なる関数。 だからキーが違おうが何だろうが処理できる。 でも〜Providerとかを使っての処理は、暗号化のモードとかIVとかパディングを含めた処理 特にパディングがあるから、違うキーで処理したら処理自体に躓いてエラーになる場合が多い。
>>460 わざわざ「Javaかよw」って書いてるんだから
例外クラス・enum・数行しかないクラスであっても、例外なくファイルに分けなければいけない ってのを皮肉ってるんだと思った。
>>475 俺が無知なだけ・・・。
C#やってるけど今まで本なんて一回も読んだことないし、基礎知識なさすぎ。
最初なんてIfしらなかったせいでgotoで何もかもやってたこともあったしw
すっきりしました
ありがとb
本とか言う前に、マニュアル読めよ・・・。
いや、ホントの基礎はやっぱり何か入門本でやった方がいいよ。 まあチュートリアルとか、あとトレーニングとかオンラインで無料でできるやつもあるから そんなのでもいいけど。 いきなりマニュアルはきついだろう。
まあそこらの家電製品や普通のアプリと違って 「第一章:Hello worldを表示しよう!」 なんてのはマニュアルにないからなw
オイ俺のコピペ脳、まで読んだ。
foreachを逆の順番で回すことはできませんか? ま、forを使えばいいんだけど・・・
出来るわけがない
.Reverse()
Reverseにしました
Reverseは一度内部で最後まで列挙されて、そのバッファから吐き出されてるに過ぎないってことに注意。 但しIListを実装しているものは直接コピーするので、列挙のコストはかからない。
ネットワークドライブへの再接続をする方法を教えてください 環境 PC A OS vista x64 sp2 PC B OS xp sp3 AはBのフォルダをネットワークドライブ(Zドライブ)に接続している ネットワークドライブ(Zドライブ)は起動時に自動的に再接続される。 続く〜
ケース1 Aのみ起動している状況で、 string[] drives = Directory.GetLogicalDrives(); をやると、drivesの中にZドライブが含まれない。 ケース2 Aを起動してからBを起動しても drivesの中にZが入ってこない。 ケース3 Bを先に起動してからAを起動すると、 drivesの中にZが入ってくる。 ケース1 2のどちらでも、エクスプローラーではZドライブアイコンに×が重なって表示されます。 ×になっているZドライブをダブルクリックすると、正常にドライブにアクセスでき、 その後は string[] drives = Directory.GetLogicalDrives(); でdrivesの中にZドライブが入ってくる。 このエクスプローラーをダブルクリックするという作業を、なんとか代替できないでしょうか。 やったこと DriveInfo di = new DriveInfo("Z"); string[] drives = Directory.GetLogicalDrives(); 失敗 string[] test = System.IO.Directory.GetFileSystemEntries("z:\\"); string[] drives = Directory.GetLogicalDrives(); 例外で強制終了 存在しないドライブの一覧を取得しようとしたのが問題っぽい。 どなたかお願いします。
標準ライブラリじゃ無理のはず Win32APIのWNetAddConnection2で再接続
>>489 情報ありがとうございます。
win32apiは使ったことないですが何とかやってみます。
491 :
450 :2009/10/03(土) 18:47:55
Form1からForm2を表示したとき、 位置をForm1のLocationプロパティを参照して決めたいのですが、 参照の仕方を教えてください。
考え方が間違ってる Form1がForm2を表示する際に var form2 = new Form2(); form2.Location = (this.Locationを基準に決めた位置); form2.Show(); のようにする
493 :
デフォルトの名無しさん :2009/10/03(土) 19:15:30
>>492 おおお!
ありがとうございます!
まったく思いつかなかったです。
this.BackColor = System.Drawing.Color.Blue; 直接16進で指定は出来ないのでしょうか?
Thread thread = new Thread(ThreadTask); thread.Start(); でスレッドを起動するとき、引数はどう渡せばいいんでしょう?
Color.FromArgb Colorのリファレンスくらい見たらどうかと思う
>>493 いやいやw
普通は(少なくともOOP的には)、別のFormの位置を参照して自分の表示位置を決定して表示する機能を
Form2自身が実装するようにすべき。
その方が分かりやすいでしょ?
ケースバイケースだけど、フツーは
>>492 みたいのは悪い例。
余計な依存ができるだろ もっとちゃんとした枠組みを作ってそういうことを実現するならいいけど 安易に他のフォームを参照しちゃうようなやり方は良くない
>>497 ども、まだヘルプ入れてないんです。始めて二日目。
ありがとう、できました。
IntelliSenseからそれっぽい名前探し当てるとかできないのかなー。
>>499 Locationは"Form1"で実装されてるメンバじゃない。
意味分かる?
依存なんかできないよ。
例えば、
void ShowAtLeft(Form referredForm)
のようにするだけ。
Thread thread = new Thread(ThreadTask); thread.Start(引数); としたところ、 'System.Threading.Thread.Thread(System.Threading.ParameterizedThreadStart)' に最も適しているオーバーロード メソッドには無効な引数がいくつか含まれています。 引数 '1': 'メソッド グループ' から 'System.Threading.ParameterizedThreadStart' に変換できません。 ってことなんですけど…。
ThreadTaskの方が引数受け取る気無いとか言わないだろうな
private void ThreadTask(string 引数){} としてます。
ParameterizedThreadStartの引数の型に合わせんとダメ
private void ThreadTask(object 引数){} ってことですか? それだと、 引数 '1': 'object' から 'string' に変換できません。 なんですが、objectからstringに変換すればオーケーなんですか。 どうやるんだろ。
いらいら
お前には無理だからあきらめろ。
VC# 2008ならこれでいいよ。 new Thread(() => ThreadTask(実引数));
できました。感謝です。
どういたしまして
こちらこそ
スレッドでファイルをカウントして、 現在の状況をtextboxに表示しようとしています。 int i; foreach(string file in files) { textBox.text = file + i; i++; } これで「InvalidOperationExceptionはハンドルされませんでした。 有効ではないスレッド間の操作: コントロールが作成されたスレッド以外のスレッドからコントロール 'textBox' がアクセスされました。」とエラー。 textBoxのプロパティをGUIでModifiers Publicにしても おなじエラーなんですけど、 コントロールを作成したスレッドをPublicにするのは、 GUIの設定だけじゃだめなんですか?
Invoke 使え。
517 :
デフォルトの名無しさん :2009/10/04(日) 09:27:56
過去に同様の質問を見たことがありますが… レンタルサーバーからインストールできるよう自作アプリケーションをアップしましたが、 .NET Framework の インストールに30分程度の時間が要してしまいます。 (1) インストールするコンポーネント: ・Windowsインストーラー3.1 ・.NET Framework Client Profile の2つにしています。 (2) クライアント専用Frameworkサブセットにチェックを入れています。 .Net Frameworkが入っていないXPなどのPCからインストールをしようとすると、 30分程度の時間を要してしまいます。 早くするためのテクニックはないでしょうか。 CDなどのメディアで配布したほうが良いのでしょうか。 教えてください。よろしくお願いします。
PictureBoxの画像をマウスドラッグで移動させてるのですがおかしな現象に悩んでます シングルスレッドで移動させているときはマウスのピクセル移動量と画像の移動量が一致します しかし、マルチスレッドで移動させるとマウスのスピードに指数比例してすごい勢いで画像が流れます 親スレッドでMouseMoveイベントごとに現在位置のグローバル変数を移動 スレッド呼び出し グローバル変数に従って画面を書き換え こんな流れになっていてスレッド呼び出しされた側ではグローバル変数を参照しているだけで 位置情報を書き換える処理はしていないです スレッドが呼ばれている間の位置移動とか特に意識していません まあ絶対どっかでミスしてんですが、思い当たる原因のヒントでもいただけたらと・・・
Client Profile 使ってなくて想像で悪いけど、 .NET Framework 3.5 Client Profile の数々の仕様って修正されてる? その中の ・XP sp2以上でないと、結局3.5sp1をフルインストールされる ・他のバージョンの.Netがあると、結局3.5sp1をフルインストールされる のどっちかという話はないか? 他にも ・インストールしたXPは、これをアンインストールしないとVistaにアップグレードできない ・インストールしたPCには、古いバージョンの.Netをインストールできない ・インストールされていない Oracle データ プロバイダが使用可能であると表示される とかリリースノートで豪快に仕様扱いなんだなぁ。すげーぜ、さすがはアメリカンw
デバッグしろよ
クライアントプロファイルは正直使いもんにならん。
>>518 スレッドの呼び出し?だけ消したら正常になるの?
一体そのスレッドで何やってんだ?
あとスレッドの呼び出し?って何時やってんの?
まさかマウスが動く度じゃないよね?
スレッド側の処理は一瞬で終わるもの?それともしばらく動き続けるもの?
523 :
デフォルトの名無しさん :2009/10/04(日) 11:26:24
BindingSource bs = new BindingSource(); private void button1_Click(object sender, EventArgs e) { List<testclass> testlist = new List<testclass>(); testlist.Add(new testclass { A = "A1", B = "B1" }); testlist.Add(new testclass { A = "A2", B = "B2" }); bs.DataSource = testlist; dataGridView1.DataSource = bs; bindingSource1.DataSource = testlist; ←ここに違うList<>をセットするだけでDataGridViewの中身を切り替えたい //dataGridView2.DataSource = bindingSource1; ←ここはデザイン時にセットしてある } class testclass { public string A { get; set; } public string B { get; set; } } 上記のdataGridView1は期待通り表示されるのですが dataGridView2は何も表示されません。 dataGridView2のようにデザイン時にDataGridViewのDataSourceにBindingSourceを 指定した場合はBindingSourceのDataSourceをセット(切り替える)した後に 何かしなければならないんでしょうか?
>>523 に追加
以下のdataGridView1と同じ動作をdataGridView2にさせたいのですが・・
BindingSource bs = new BindingSource();
List<testclass> testlist = new List<testclass>();
List<testclass> testlist2 = new List<testclass>();
private void button1_Click(object sender, EventArgs e)
{
bs.DataSource = testlist;
dataGridView1.DataSource = bs;
bindingSource1.DataSource = testlist;
//dataGridView2.DataSource = bindingSource1;
}
private void button2_Click(object sender, EventArgs e)
{
bs.DataSource = testlist2;
dataGridView1.DataSource = bs;
bindingSource1.DataSource = testlist2;
}
private void Form1_Load(object sender, EventArgs e)
{
testlist.Add(new testclass { A = "A1", B = "B1" });
testlist.Add(new testclass { A = "A2", B = "B2" });
testlist2.Add(new testclass { A = "a1", B = "d1" });
testlist2.Add(new testclass { A = "a2", B = "d2" });
}
以下略
525 :
デフォルトの名無しさん :2009/10/04(日) 12:12:45
>>519 ありがとうございます。
.NET3.5sp1を入れてはいますが、結局使用はしていません。
.NET3.5のみを配布したら早くなるでしょうか…。
>>522 今は暫定的にマウスが動くたびになってます
最終的には移動量が一定量を超えたとき呼び出すつもりです
そのスレッドでは移動量をグローバル変数から取得してそれに応じた小さなファイルを読み込んでメインスレッドのInvcke呼び出し
メインスレッドのハンドラでダブルバッファに書き込んで、移動分だけ画像をシフトしてます
自分のアプリでクラスライブラリ(.dll)作って一緒に配布すると そのライブラリを別のアプリケーションで勝手に使っちゃえると思うんだけど それを防ぐ方法はないのかな?
>>527 ロード元のアセンブリをチェックすればいいだけだろう
アプリ中のオブジェクトを(型指定して)列挙するにはどうしたいいんでしょうか?
>>532 さては他人の作ったソフトウェアのメソッド叩きたいとか考えてるな!
やめとけw
恐ろしいことを平気でやってのけてこそ初心者!
設定ファイルを読み込むのはメインのFormのコンストラクタ内でするのか、 Loadイベントのハンドラで行うのかどちらがいいのでしょう。
C++でCLRのアンマネージインターフェイスを叩く必要があった気がする
バグを見つけて臍をかむのがオチなんだよなぁ。 マニュアルの System.Reflection 名前空間見るとか、「リフレクション C#」ググるとか。 単に見たいだけなら一番簡単なのは、VSで参照してオブジェクトブラウザで覗く。
>>538 ウィンドウのレイアウトから、オプションダイアログで設定するようなものまであります。
リフレクションではオブジェクトそのものは見られないよ MSがソース公開してるCLRプロファイラやWPFプロファイラは部分的にC++使ってた
>>541 Formに関する設定ならばLoadだろうね。
逆にコンストラクタできちんと動く?
544 :
デフォルトの名無しさん :2009/10/04(日) 19:47:32
>>525 氏の話だけど、
みんなは配布用アプリを作る時は、インストールに時間がかからないようにどのような工夫をしているの?
>>543 現状は問題なくできるのですが、、何か陥りやすい問題とかあるんでしょうか。
コンストラクタのInitializeComponentの後にファイルを読み込んでいます。
>>545 俺も聞きたいねえ。
コンストラクタでやったらまずい処理って思いつかない。
まあFormに限らず、クラスのコンストラクタでイベントを生成するような処理を書いて
嵌ったことは過去に何度かある。
コンストラクタ呼び出し中に発火されたイベントは、事実上誰も拾えないからね。
548 :
デフォルトの名無しさん :2009/10/04(日) 20:53:17
>>546 .net3.5を使用しているアプリを配布しようとしたら、
プレインストールされていないPCは、30分とかかかかるのかい?
かかかか
>配布 んなものは、システム要件。 インストールさせようなんてのはお節介。 と思ってる。
>>545 なら問題ないんじゃない?
C#やりたてのころに痛い目にあったことが1回だけあったけど、何かはど忘れしちゃった。
明日まで覚えていたら会社のSVN覗いてみるわ。
コンストラクタはインスタンスの初期化 LoadはFormの読込み Shownは表示後 ちゃんと役割があるんだからそれぞれに書いた方がいいと思う
LoadはVBの名残みたいなもん
そんなことはない FormがShowされるときにすべき処理はLoadに書くべき コンストラクタはあくまでインスタンスの初期化処理だけのほうがいい
>>553-555 正直、どれもよくわからん俺様ロジックにしか聞こえない。
そんなことはない、というなら聞くが、じゃあ結局
>>536 の質問には何と答えるんの?
っていうか、そういう意味論にこだわるなら、設定値を読み込んで適用するような処理は
InitializecComponentsの後が一番適切に思えるが。
> 正直、どれもよくわからん俺様ロジックにしか聞こえない。 イベントドリブン全否定? 俺様ロジックの俺様というのはC#開発者のこと言ってるんだよな?
>>557 日本語読める?
だからね、一般論として、コードは意味的に適切なタイミングで
実行されるように書くべき、というのはその通りだけども、
じゃあ設定を読み込んで反映するのに適切なタイミングっていつだっての。
そんなもの、答えなんかないだろう。
「設定を読み込んで反映すべきタイミング」の意味を与えられたイベントなんて存在しないのだから。
イベントの意味なんかにこだわりすぎると、結局そんな処理なんかどこにも書くべきでない、
って結論にならざるをえない。
>>558 あなたの言ってることの方がよっぽど俺様ロジックに聞こえるけど
コンストラクタはインスタンスが生成される瞬間に実行され、
インスタンスの初期化のための引数を渡す機能を持っている
コンストラクタが一つなら、その設定やらに渡す引数も一緒に渡してやれば良いけど
そんなやり方推奨する人どのくらいいるだろうね
public Form1() : this(null)とか使おうよ
Formを継承して「設定を読み込んで反映すべきタイミングのイベント」を追加する
そう言うようなことは普通にやるけど、「どのタイミングが最適か」って答えは出ないんだよね。
>>559 結局どうすべきだと言いたいの?
というかね、コンストラクタが多重定義したい場合で、
かつどのコンストラクタにも共通する処理がある場合は、
どのコンストラクタからも特定の一つの別のコンストラクタを呼ぶようにするか、
共通部分をメソッドに括り出して呼ぶようにするでしょ。
それを忘れたらどうするのかって?
それはただの「バグ」であって、そんなケースを槍玉に挙げてなんの意味があるのよ。
横からその問題だけに絞って考えると、感覚的にはファイル アクセスなら Load かなぁ。 設定ファイルなら…んー、コンストラクタでもぎりぎりアリか。
俺ならそもそもFormのインスタンス生成前に読んじゃうかなあ 多重起動チェック→設定読む→Application.Runみたいな流れ 設定にもよるけど
まあ、ハンドル云々というのでなければコンストラクタでいいと思う。
569 :
デフォルトの名無しさん :2009/10/05(月) 14:23:18
「List<string> s 」に入ってる文字をlistboxに表示したいです。 listBox1.Items.Add(s); とすると(コレクション)と表示されてしまいます。
・AddRangeする ・DataSourceに設定する
571 :
デフォルトの名無しさん :2009/10/05(月) 15:16:32
下記で出来ました。 string[] ss = new string[s.Count]; for (i = 0; i < s.Count; i++) { ss[i] = files[i]; } listBox1.Items.AddRange(ss); 一度で出来ないのですね。 ありがとうございました。
AddRange使って一発でやりたいならToArray使えばいいじゃない
あとDataSourceなら listBox1.DataSource = s; だけだし。
自分の実力が足りないだけなのに言語のせいにされたらたまらんわ。
575 :
デフォルトの名無しさん :2009/10/05(月) 20:35:38
おまえらどんだけ被害妄想wwww
576 :
デフォルトの名無しさん :2009/10/05(月) 20:57:24
ディスプレイから女の子を救い出すプログラムをC#で移植してます。 C#では無理なんでしょうか。VBではうまくいったんですけど・・・
どこが動かないのか詳しく。質問が大雑把過ぎて問題がわからない。
美少女ゲームの彼女をリア
では将軍様、そのディスプレイから女の子を追い出してください
全財産はたいてもいいから俺によこせ
WinXP Pro SP3, VS2008 sp1, .net 3.5 sp1での質問です。 言語はC#を利用しており、COMコンポーネントの開発を行っています。 下記のような簡単なクラスを作成し、RegSvr32.exeを実行したところ、下記のようなエラーが発生しました。 このようなエラーが発生した場合の対処法と原因について教えていただけないでしょうか? よろしくお願いいたします。 ------作成したクラス------- using System; using System.Runtime.InteropServices; using System.Text; namespace Test { [ClassInterface(ClassInterfaceType.None)] [ProgId("Test.Test")] [Guid("00BB6C80-C01D-4D64-A66B-F5D847480B09")] public class Test { public string Test(string s, int m, int n) { return "abc"; } } } --------------------------- ------[[エラー]]----------- .\Test.dll は読み込まれましたが、DllRegisterServer エントリ ポイントが見つかりませんでした。 このファイルが登録されていない可能性があります。
.NETのアセンブリの場合regsvr32じゃなくてregasm使う
Tlbexp.exe
プロセスの一覧で、引数を知るにはどうしたらよいですか? Notepadを複数起動していて、a.txtとb.txtを開いているときに、a.txtのほうのNotepadのプロセスを取得して終了したいです。 System.Diagnostics.Process[] ps = System.Diagnostics.Process.GetProcessesByName("Notepad"); で引数なしなら取得できます。 System.Diagnostics.Process[] ps = System.Diagnostics.Process.GetProcesses(); で、プロセスの一覧はできます。 デバッグでどちらを見ても、ファイル名が見当たらないのです。 探し方が悪いのかもしれません。 ご指摘お願いします。
WMI使ってWin32_ProcessのCommandLineプロパティ取得するのが手っ取り早い けどファイルを開くで開いた場合を気にしなくて良いの?
WebRequest/WebResponse って最初に呼び出すときに結構時間がかかります? 数秒〜数十秒くらい
Win32_ProcessのCommandLineプロパティで、 "C:\WINDOWS\system32\NOTEPAD.EXE" C:\a.txt "C:\WINDOWS\system32\NOTEPAD.EXE" C:\b.txt は取得できました。 これを終了するのって、どうするんですか? それぞれのプロセスの個別の取得方法がわからないです。 NOTEPADのプロセスは取得できるけど、それだとaとbを区別できないし。 ファイルを開くで開く場合は、とりあえずいまは関係なしです。
>>587 強制終了させるなら、目的の引数を持ってるWin32_ProcessのTerminateメソッドでいい
内容変更時に保存ダイアログが欲しいなら、Win32_ProcessのProcessIdを使ってProcess.GetProcessByIdしてCloseMainWindow
>>588 なんとなくできたっぽいです。
ありがとうございました。
>>586 WPADやなんやでネットワークの応答速度によって時間が掛かる可能性はあるね
>>586 数十秒もかからないけど 5秒ぐらいはかかってるかな
非同期処理ってマルチスレッドってことなんでしょうか?
基本的にはそう スレッドじゃなくてプロセスだったりするかも知れないが メッセージ使った擬似非同期とかな
ありがとうございます
文字列中の \x28 などのエスケープ文字(?)を ( などに変換するのは それぞれのエスケープ文字について一つ一つ string.replace などで置き換えるしかないのでしょうか?
ソース上の文字列リテラルを置換したいのか、実行時に変換したいのか まあString.Replaceってとこみると実行時の変換なんだろうけど エスケープの方法なんて言語次第だから特にライブラリには存在してない Regex.ReplaceでMatchEvaluator使うのが楽だろうねー
string[] files = Directory.GetFiles(@"C:\Documents and Settings\username\Local Settings\Temporary Internet Files\", "*.jpg"); で空なのはどうしたら取得できますか?
どこにあるんですか? 調べたら、 その下に、Content.IE5フォルダがあるらしいので、SearchOption.AllDirectories としても見つけられませんでした。
エスパーさんお願いします
そこには無いんだよ
隠しフォルダの中にある隠しフォルダを探したいってことでしょ Content.IE5の中には、さらにランダムな名前の隠しフォルダがたくさんあって、 ネットから取得したファイルの本体はそのランダムなフォルダの中に分散して格納してある。 何がどこにあるかはindex.datだったかに書いてある。
delphi s string; SetLength(s, 64); c# string s; サイズを指定するにはどうするんでしょうか?
サイズを指定する必要はないんじゃね?
Stringは変更できないのでそういうことはできません。 そもそも変更不可なので長さを伸ばすのは意味がありません。StringBuilderなどを使います。 長さを縮めるというか部分を切り出した新しい文字列を作るのはString.SubstringやString.Removeで可能です。
base64とかで必要なんです。
StringBuilder使えばいいじゃない
つーかencodeing気にしなくちゃならんし、byte[]じゃだめなのか
何が必要なのよ?
611 :
604 :2009/10/07(水) 16:23:20
d。やりたいことはStringBuilderで出来そうです。 ありがとうございました。
base64は.NETの標準機能でサポートされてるけど
試用なんだぜ
>>603 Content.IE5フォルダの下に30JAKIJ7みたいなフォルダがあることはわかってます。
隠しフォルダのなかのファイルを再帰的に列挙するにはどうしたらよいですか?
3番目にSearchOption.AllDirectoriesつけたら?
>>616 SearchOption.AllDirectoriesは600でもう試しました。
あのさー こっちは実際に動かして出ることを確認してレスしてんだよ エクスプローラで見るとそこにちゃんとあるのか? 環境は? IEのオプションでもそこに設定してあるか?
実体が無いんだろ
>>618 失礼しました。
あらためてもういちどトライしたらできました。
すみません。ありがとうございました。
しーね
試してなかったのか試したつもりで見すってたのか どっちにしろきちんと試さんと自分が困るだけだよ。
623 :
デフォルトの名無しさん :2009/10/08(木) 01:29:24
>>618 ちゃんとこのスレにもまともな回答者がいたんですね。
尊敬します。これからも初心者を見捨てずお願いします。
いままでまともな解答者がいないと思ってたのに質問してたのか 変なの
625 :
デフォルトの名無しさん :2009/10/08(木) 07:44:34
リストボックスにアイテム追加して水平スクロールが出たとき、 水平方向の一番後ろを表示する方法を教えてください
>>625 スクロールバーが出たときに一番後ろを表示すればいい
リストボックスに水平スクロールバーって出せたっけ?
普通に出せる
ActiveX 経由で Windows Media Plyaer を使おうと思います。 _player = new AxWindowsMediaPlayer; _player.uiMode = "none"; とすると2行目でエラーが発生します。 まだ、ActiveX コントロールが生成されてないからと思います。 いまは、タイマーで __player.Created を監視して、 true になるのを待つという方法で回避していますが、 ActiveX コントロールが生成されたというイベントはないでしょうか?
FormのLoadイベントでならだいじょぶ
632 :
デフォルトの名無しさん :2009/10/08(木) 19:06:07
質問よろしいでしょうか? Windowsでコピー&ペーストのペースト先の情報(ファイル名やファイルのパス)を得るにはどうすればよいでしょうか? よろしくお願いします.
C# ファイル ドロップ でググる
ペーストされたアプリの側の自由だろ わかるわけがない
すみません.言葉足りずでした Windows上のアプリケーションを監視するソフトを考えているのですが, 例えば文字列をコピーしたものをパワーポイントに貼り付けた場合, 貼り付け先のパワーポイントのファイル名やファイルのパスを得たいという質問の内容です.
もし、張り付け先がファイルとか扱わないソフトだったら?
ペーストされたデータの扱いや、どのファイルを開いているかなどは完全にアプリケーションの責任 一般には対象のアプリのプログラムを意味論で解析でもしないかぎり不可能
638 :
630 :2009/10/08(木) 20:26:33
>>631 レスありがとうございます。
Loadイベントなら大丈夫とは知りませんでした。
しかし、今回は、フォームデザイナで配置して使用している訳ではなく、
コード内でオブジェクトを作っているため、生成済み通知してくれる
イベントがあればいいなと思い質問しました。
タイトルバーにファイルパスやファイル名を表示するタイプのソフトなら そっから取得できるか?すべてのソフトでどうなってるのか調べなきゃだが
開いてるファイルとは全く無関係なところへのペーストだったら? どう頑張っても使いものにならないから諦めろ
641 :
デフォルトの名無しさん :2009/10/09(金) 06:18:21
asp.netにて リピーターを使ってDataTableをDataSorceにDataBindしています。 DataColumnとしてcolTitle, colValue があるとします。 asp側のコードで <%# Eval("colTitle") %> <img src="./img/hoge.jpg"> <%# Eval("colValue") $#> として colTitleとcolValueの間に画像を表示しています。 colValueは文字列で、文字列が空もしくはnullのとき、 hoge.jpgを表示させないようにしたいのですが、 どうしたらいいのかさっぱりわかりません。 <% if ([条件]) { %> <% } %> とするとデータバインド後に一回しか 実行されませんし、 DataBoundイベントを使った場合、どう記述したらいいのか思いつきません。 どなたか教えていただけませんか?
642 :
641 :2009/10/09(金) 06:20:08
<%# Eval("colValue") $#> 訂正→<%# Eval("colValue") #> なんで$マーク。
職業的にもCでは使えない状況ですし。
お前の職業なんか知らぬ!
645 :
641 :2009/10/09(金) 15:38:44
自己解決。
646 :
デフォルトの名無しさん :2009/10/09(金) 18:16:03
>>625 だれかお願いします。
言葉が足りませんでした。
マウス操作やキーボード操作無しで表示する方法です。
TopIndex
648 :
デフォルトの名無しさん :2009/10/09(金) 22:48:47
私はとうとう会社を辞めることにしました。 コボラーだった私が今春に社内SEに採用され、 急に未経験のC#をやれと言われてがむしゃらに勉強しましたが、 結局誰も協力はしてくれず1人で中途半端なシステムを作ってしまいました。 土日祝日もC#に明け暮れる毎日。 会社のために休みを完全に削ってがんばってきました。 ここでも何度か質問をし、回答をいただきました。 最終的には最悪な評価に終わりそうです。 私は会社を辞めます。 このスレの皆さんに代わってもらいたいです。 皆さんありがとうございました。 会社は離れてもC#は大切にします。
せっかくスポーツニュース見て浮かれてる所に 切ない文章を書くな
650 :
デフォルトの名無しさん :2009/10/09(金) 23:10:49
皆さんが質問に答えてくださったおかげで、 ユーザビリティーの高いシステムになりました。 本当は、使いやすいシステムなんです。 けど、納期が厳しすぎました。バグが出てしまったんです。 悔しいですが、誰もテストしてくれなかったし時間がありませんでした。 今となっては言い訳ですが…。 無理のあるスケジュールに振り回された自分を戒めつつ、 退職してしばらくC#の未消化技術を習得し、 明日につなげたいと思います。
うちで働かないか
俺はC#どころかCですらHello worldレベルのプログラムしか作ったことなかったのに 納期ギリギリで人が足りないからってC#のプロジェクトに引きずり込まれて、 その日の帰りに慌てて本屋で入門書を買ってVS2008Expressをインスコして徹夜で勉強して…
マ板でやれ
655 :
デフォルトの名無しさん :2009/10/10(土) 11:55:39
マ板って何?
656 :
デフォルトの名無しさん :2009/10/10(土) 12:01:37
>>652 読んだけど意味が高度すぎてよく分からなかった。
要するに、
「ウチは、スケジュールに遅れずにいい品質の開発をしまっせ!」
ということ?
657 :
デフォルトの名無しさん :2009/10/10(土) 14:10:10
>>651 C#の経験者だけど、今、転職は難しいんだろうなぁ。
なんとなく肩身が狭くなってきたので会社を去りたいんだが。
会社やめて同人エロゲ作って1年で家買えたわ やめてよかった
スレチ乙
俺は転職に失敗したからアルバイトのコーダーになっちまったよまったく
661 :
デフォルトの名無しさん :2009/10/10(土) 18:28:45
インストだろ インストール 文脈も読めないの?
663 :
デフォルトの名無しさん :2009/10/10(土) 20:01:55
FTPサーバーのファイルをサーバー上で移動できますか? wc.DownloadFile(fileName, locelfileName); wc.UploadFile(newfileName, locelfileName); ではできます。 この場合、通信の途中でエラーがあると、ファイルが破損するので、サーバーだけで操作したいと考えてます。 アドバイスお願いします。
できます
>>663 どっかからftpクライアントのライブラリをもってくるのがいいと思う。
あと、通信中に切れてもいいように、転送先の一時ファイルに転送して、転送 終了後にリネームするのが定石。ダウンロードも当然同じく。
サーバー間でコピーさせたいんでしょ FtpWebRequest みたいなんではできないと思う Socketで片方Passiveにしてそのポートでもう片方ひらいてStoreとRetieveする
FTPじゃできんだろ
同一サーバー上なら、ディレクトリ間の移動はリネームするだけのはずなんだが。 サーバー間の移動ならFTPよりrsyncがお勧め。
プロトコル自体にリネームがないと思うが まあ、davでも使えと
davならぁ〜
クソ 不意をつかれた
671みたいな古臭い脳みその人は順次退場して欲しいもんだ
563 名前:仕様書無しさん[sage] 投稿日:2009/09/23(水) 20:15:18 2chで調べ物をしたい時は「教えてください」って書いても なかなか教えてもらえない。 そういう時は、知ったかぶり風に間違ったことを自信満々に書く。 そうすると、ものすごい勢いでツッコミを入れてもらえる。
コピペ君って馬鹿だな、まで読んだ
>>667 ・・・仕事としてやったこと無いんだな坊ちゃん。
>>187 選択状態、位置の管理を君がしてないから
これ以上の説明が必要ならソース出せ
たぶんもう見てない
C#で人工知能作れますか?
天然無能にC#は使えません
最強に初心者でちょっとプログラミングってものに興味持ち出したんですが 何から始めたらいいかよくわからなくて このスレにいけとかここのサイトから見て始めろとかあれば教えてもらえるとありがたいです。
>>684 恥ずかしながら無いに等しいと思います。
VB?というやつですか?それなら少しだけしたことはあるのですがそれもとても簡単なやつだったと思います。
URLありがとです。
とりあえず読んでみます!
>>686 PCをゲーム機としてだけで置いておくのはかわいそうだと思ってやってみようかと
とりあえずブックマークさしてもらいました!
いきなり質問と言うか躓いてしまったのですが
Visual Studio .NETというソフトは有料なんでしょうか?
もし代わりとなるようなソフトがあればありがたいとは思うのですが・・・
express edition なら無料で使える
Visual Studio .NETってのは2002の頃ので有料版だけど、 2005以降は無料のExpressEditionがあってMSのサイトからDLできる。 最新は2008SP1ね
690 :
685 :2009/10/11(日) 15:50:01
>>688 >>689 ありがとうございます!
Visual C# 2008 Express Edition with Service Pack 1というのでおkですかね?
それでおk
692 :
685 :2009/10/11(日) 16:07:47
インスコしてみたのですがどうしても2008SQLサーバー?ですかね それだけインスコできませんでしたとの表示が出て終了してしまうのですが・・・w なにかインスコに関して制約とかこのOSだと駄目とかそういうものは
最近組んだファイルの管理を行うロジックでDirectory.filenameとか言うのを叩いてファイルの列挙してるんだけど、 配列じゃなくコレクション型を使いたいということで後先考えずIListを使ってしまって 今になってよかったのかと思ってる。 クラスとかじゃなく、インターフェイスとなっているものを直に変数として宣言するのは気持ち悪いんだけど、この場合何か別の方法ってないのかな? string tempFN = Directry.filename(***); List<string> FN = List<string>(); FN.Addrange=tempFN; とかなんか回りくどいのがあまり好きじゃないし、俺の低脳さも好きじゃない。 知恵と知識をおくれ
>>693 原則として、フォルダ中のファイル一覧のような外部の事情で
いつ変更が加わってもおかしくないような
リソースに対してはキャッシュそのものを行わず、
必要なときにそのたびに取得するようにする。
始めてプログラムするならC#とC++どっちがお勧めですか?
断然C# 初めてでいきなりC++に挑戦すると挫折する可能性が高い
というか、ことWindowsでプログラミングするときに C++をわざわざ選択する意味がほとんどないな。現在では。
>>694 ぅーん・・・、検索とか比較をする必要がある場合だったんでコレクション型に落として処理したかったんだけど、
こういったstring[]系のものを一発でList<string>に変換できる技があればなと思ってる。
配列から検索とか比較するのってなにか複雑に見えてしまう。
それにあの構文が見た目不安定に思えて仕方ないw
配列は IEnumerable だから List のコンストラクタに入れられるだろ
暗黙的に変換できないから一々Addrangeしないといけないからやだなぁって。 そういうことじゃない?
ごめん・・・ .ToList();でけた
LINQ使えるんだったらそもそもリストにする必要ないだろ
つ DarkBASIC
.NET 3.5 で C# 3.0 だったのかよ
List<T>.FindなんかそのうちObsolete来るかもね Silverlightではすでに削除されてる
LINQ (to Objects)があれば不要だから
聞いたことはあるけど使ったことが無い。 というよりあまり魅力とは思わないんだけど、使い始めたらやめられない位つかうことになる?
>>707 そんな理由で非推奨にしたらどれだけのメソッドが非推奨になるんだい
>>692 とりあえずSQLサーバーとかいらんだろ
とりあえずVisual Stadioはサーバー系とモバイル系、オフィス系を省いて、C++をフルインストール、後はデフォルト。 C++はフルにしないとツールや、コンパイルのときAnyCPUの選択ができなくなる。
あとはDXperience
>>708 よくWebの記事なので紹介されてるクエリ式( from x in items where … ) はあまり使わないだろうけど
メソッド形式( items.Where(x => x.Value < 10).ToList() みたいに書く方)は使いまくることになる
MSDNでSystem.Linq.Enumerableクラスを見てみるといいよ
何かちょっと魅力と思えてきた。 これ使いこなせれば、今書いてるコードとかキュッと出来そうw 人に渡すと説明いりそうだけどw
LINQは麻薬
アルゴリズムを分かった前提でLINQを使ってほしいね 組み合わせ問題をLINQで無理やり書いて 速度が出ないコードを量産されたらたまらん
何でもLINQで書きたくなる病を発症する人は多いな。
今必死に抑えてるよ…
LINQ to flickrとかね
っは・・・し、静まれ・・・俺のLINQよ・・・怒りを静めろ!!
やめろぉおおおおお なんでもかんでもIEnumerableインターフェースを実装しようとするんじゃねエエエエエエエエエ
あるあるw
ほうらこんなものも列挙できるんだよ・・・ みてごらん・・・
本当に麻薬だなw
javaの1.4で仕事してるけど、ループを書くたびに、linqならああ書けるのにって 妄想してしまう。
今時Java 1.4なんて苦行そのものだな。お疲れさん。
>>693 var files= Directory.GetFiles(@"c:\work", "*.*", SearchOption.AllDirectories)
.Select(f => new FileInfo(f));
// .Select(x => new FileInfo(x)).ToArray()で配列;
foreach (var file in files)
Console.WriteLine(file.ToString());
>>727 わざわざありがとうございます!
何か作っているうちにいろいろやって見たんだけど、これ中毒化する・・・。
ハンドルとか捕ってく時に無駄に使いまわしそうw
.Selectがいっぱい尻尾に着くとかとても自己満z
DrawStringで矩形の中に改行しながら最大に近いサイズで文字を表示する方法を教えてください。
DrawString(string, Font, Brush, RectangleF)
MeasureText MeasureString
フォントサイズを変更しながらMeasureStringで収まってるかどうかループ回すってことですか? それしかないのか・・・
えーっと、比例とか分数って小3ぐらいで習うよな… 仮にそれで誤差が出るとしても、バイナリーサーチと同じアルゴリズムが使えると思うが
そっか!
735 :
デフォルトの名無しさん :2009/10/12(月) 18:55:51
音楽プレイヤーについて質問があります。
WindowsMediaPlayerを使って音楽を再生しようとしています。
再生はできたので、次の段階で、評価の値を取得して、気に入った曲だけ再生しようとしています。
http://d.hatena.ne.jp/aont/20080419/1208600078 を参考に、メタデータを取得しようとしています。
ここで疑問点が出てきました。
評価の項目が見当たらないのです。
曲の評価は5なのですが、値が5のデータもありません。
評価を取得するにはどうしたらよいでしょう。
列挙したら何が取れるの?
738 :
デフォルトの名無しさん :2009/10/12(月) 21:45:47
ちと悩んでて質問させてくれ C#のフォームに複数のswf組み込んでそのswfに同時キー処理を渡したいんだ どうすればいい? swfを貼り付けるとこまではサイト見ながらなんとか出来たが swfの同時処理がわからん・・・。1日調べたけどお手上げだった俺に誰か救いの手をくれ
同時ってのがあれだけど、スレッドとかか? でもブラウザにswfにキーイベントとか渡せるかどうかわかんない
いや、普通のフラッシュゲームとかと考えてもらっていい イメージ的には1つのフォームに2つ以上のフラッシュゲームをおいて キー操作で全く同じ動きする感じ。
そもそも、そのswfが同時入力という概念があるのかすら決まってないんじゃないの?
フォームに組み込むからフォーム側でコントロールすれば複数のオブジェクト(今の場合はswf)に キーイベントを送ることは出来るとは思うんだが・・・。 リストとかテキストボックス複数に同時に同じキーイベント送ることが出来たからswfでも出来ると思ったけど swfは無理なのかのう(´・ω・`)
複数に同時、ってのは無理。
無理なのか・・・(;´Д`) 他に方法は無いだろうか?もうC#じゃなくてもいいや
じゃ、スレ違いだからどこかに消えてなくなれよ。
どんな言語だろうと同時は無理だろう
キーの制御だからC系でいけると思ったけど C#で無理ならしゃーないな(´・ω・`) ありがとう
お前らの同時は質問者の同時と別だろうなw
キー制御とか書いてあるから人間が操作する前提のフラッシュゲームを 自動で動かしたいとかそんなことなんだろう。 ならばリフレッシュレートより短い時間差があっても問題になることは少ないはず。 この程度の考察ができないようでは、とてもまともなプログラマーとは言えない。 許容誤差とか、仕様に不明な点があれば確認すべきだし。
仕様ってなんだよw 仕事じゃあるまいし、なんでそんなに懇切丁寧にやらにゃならんのだ。 頭おかしいんじゃないの?
遊びで手を抜くやつは仕事でも手を抜くんだよなあ 人間、そんなに器用に習慣を変えることなんてできないんだから ちょっとしたことでも態度に出たのを見られてるから注意した方がいいよ
仕事で手を抜くのは基本 仕事振られずに給料もらうのがベストソリューション
いかに品質を落とさずに手を抜くかだよな〜 あらゆるツールはそのためにある
756 :
739 :2009/10/13(火) 08:22:01
>>750 が言う通り少々の時間誤差あるくらいなら全然構わない
ちと説明不足だったすまない
飛行機のネジには遊びがあるんだぜ 全てのネジを完璧に締めちゃうと飛び立った後で空中分解するんだぜ 仕事も同じ 俺は後輩にこう教えて来た
今は接着剤だがなw
それがツールというものか。 なんかつながった
効率化を提言すると手を抜いてると言い出すのは日本の会社の宿命だよ 今まで自分が築いたものを否定されるに等しいと思ってるからね 帰属意識を持てという割に共同体だという概念がない
んなこたない
ツールツール言ってる奴はツールに問題があった時の 工数増加まで見積ってるんだろうな?
当たり前
というかツールってなんだよ、アドインとかか?ライブラリか?
ツール・ド・フランス
パスツール
767 :
739 :2009/10/13(火) 12:25:48
739だがいつの間にかかやの外にいてワロタ
で、結局
>>739 は実現可能なのだろうか?
ちょっと前にも書いたけど少しの誤差は無問題
似たような処理ならどんな方法でも基本おkだ
よろしくたのむ
>>767 並列処理させればいいだけだろ
おまえにはポジトロニックブレインがついてないのか?
カタブツとよく言われております
770 :
739 :2009/10/13(火) 14:05:00
ポジなんとかはよくわからんがその並行処理のやり方がわからないんだ swfにキーを並行処理で渡すってのが俺の中で超難解
多少の時間差があってもいいんなら、順番に処理すればいいだけ 人間の目には同時に見えるる
772 :
739 :2009/10/13(火) 15:16:59
何度も申し訳ない説明不足だった swfを組み込むのが初めてでキーコントロールの渡し方もわからんトーシロなんだ その辺も含めて教えてくれると助かる ソースコードとか
今はどうやって表示してるの? ActiveXかなんか?
>>739 ここで回答を待つよりも賢明な方法がある
ぐぐれ
775 :
739 :2009/10/13(火) 15:57:14
SHOCKWAVEなんたらって出るからたぶんActiveX ぐぐりながら今もいろいろ試してるけど全然ダメなんだ… なんせC#自体ほとんど触ったことないから(´・ω・`)
776 :
デフォルトの名無しさん :2009/10/13(火) 16:13:10
CopyFromScreenで取得した2枚の画像を 高速で比較して、異なる部分を抜き出す方法ってある?
777 :
デフォルトの名無しさん :2009/10/13(火) 16:19:54
知ってるなら教えてあげればいいのに。
異なる部分とは? 単純に差分でなくて、林檎と蜜柑の違いとか?
上で偉そうにしてた奴は、騒ぐだけ騒いで教えずに居なくなったな
>>775 C#というよりプログラミング自体初心者に近いんじゃないのか?
横着しないでまず文法を理解しなさい
782 :
デフォルトの名無しさん :2009/10/13(火) 16:37:18
>>775 単純な差分。
CombineRgnのRGN_DIFFみないな。
>>780 1ピクセルづつ比較したら遅くね?
>>782 基本的にCPUで処理する場合は1ピクセルずつ処理するしかないぞ。
せいぜいSSEなどのパックド命令を使うことだけどこれはC++でやるべきこと。
Graphics/Bitmapで差による描画がないようなら自前でやるしかないな。
Marshal.Copyを使えばそれほど難しいことではないだろう。
784 :
デフォルトの名無しさん :2009/10/13(火) 16:49:33
>>783 Marshal.Copyの後、
forループで比較?
やっぱりこれしかない?
1280x1024 のbitmapの場合、0x500000の配列になるんだよね・・・
ポインタ使えばええやろ
9000枚くらい画像処理してるけど結構速いよ
>>784 今更1Mピクセルくらいなによ、って感じ。
>>785 C#はアンマネージドなバッファに対するアクセス法が3種類ほどあるが、
ポインタとしてアクセスするのはunsafeキーワードでも足りず、
プログラムのビルドオプションを変更する必要がある。
そうするとほかのモジュールとのリンクも影響を受けかねないし、
よほどボトルネックになってない限りはお勧めできない。
>>786 同意。
788 :
デフォルトの名無しさん :2009/10/13(火) 17:10:30
789 :
786 :2009/10/13(火) 17:13:29
類似画像比較の処理を書いていて、 最初はサンプリング部だけC++のモジュールに投げようと思ってたんだけど 試したら3%も早くならなかったので止めてC#で書いた
あんま、参考にならないと思うけど、 一応、俺も類似画像検索ツール作ったことがある。 50x50サイズの画像を10000件検索したときは約5秒かかった。
イメージほど遅くはなくなったんだけどな イメージ先行してるよなw
画期的なアルゴリズムを編み出したいんだろうけど 画像なんてのは規則性がないからな 異なる部分を抜き出すだけなら 1ピクセルごとに比較するのが単純で速い 類似画像検索となると、それなりの手法がいるがな
>類似画像検索 たとえば、どんな風にやるの?
大雑把な説明だと、各画像の特徴ベクトルを算出して比較 特徴ベクトルの中身や算出方法の具体的なアルゴリズムは説明しきれないから、 興味があるなら画像処理スレ行くとか、適当に論文を当たるとかしてくれ
まあ、でも普通は2枚の画像の差分を目で評価できれば十分なので。 以前とあるマイナーな画像形式のコンバーターを作ったんだが、 可逆なはずの色域変換の逆変換でデータが化けてしまったときにお世話になった。 あ、そうだ。便乗質問するんだが、.NETの標準で対応してない画像形式のローダーを.NET向きに作るときって、 なにとして読めるように作ったらいいんだ? 汎用ローダーならIO.Streamでいいんだが……。
WinForm向けならSystem.Drawing.Image(実体はBitmapだろうけど) WPFも視野に入れるなら……DIB的なもの
>>775 同時処理以前にキーの送信もできてなかったのか。
そっちを先に聞くべきだったね。
フラッシュ側でどうやってキー入力とってるかにもよるんじゃないのかな。
試しにSendInput使ったら送れたけど、これだと送る前にフォーカスセットしなくちゃならないけど
それでもいいかな?ちなみにキーボードフォーカスはPC上で1つしか持てないから
このやりかただと同時は不可能
>>795 WIC(Windows Imaging Component)
フォーカスの切り替えも一瞬だから 切り替えとキーイベントなりキーコード送信を順番にやればいいだけだよ
C#に向いてるエディタってありますか?
VisualC#2008以外ありえない
誰もがお前らの思いどうりには行動しません。 協調とは性格や考え方の違うもの同士が譲り合って調和をはかること すなわち同調ではない。 自分と他人は違う人間なんだから、 十人十色、いろんな考え、趣味、価値観があって当然。 よく私たちは「誤解された」といって憤慨することがありますが、 そのような人は自分の考えをはっきりと発言しているのでしょうか。 自分の意見を明確に発言もしないで、誤解されたと憤慨するのは、 自分で一言も発言しないで「俺の考えていることを当てて見ろ」 と言っているのと同じことではありませんか。 お互いに自分の意見をもっとはっきり言うべきだと思います。 自己主張をするときに最も注意すべき点は、感情的にならないことです。 感情的になったら、勝ち負けを争っていることになります。 主張するときは冷静で、しかも論理的に話すことが求められます。 自分の常識が相手にも通じる時代は終わったのです。 自分と相手の常識は違うのです。よく言えば価値観が多様化してしまったのです。
コピペ君って馬鹿だな、まで読んだ。
まず.NET Frameworkのクラスライブラリはインテリセンス環境で使うことが前提だから やたら綴りが多くてとてもじゃないけどふつうのテキストエディタでは書いてられない。
MonoDevelop
それは秀丸+csc+NUnit+NAnt+NDocでグループウェア作った俺への挑戦だな。 っていうか、確かにシンどいです御免なさい勘弁してください。 ついでにサーバは秀丸+javac+JUnit+Antですた。御免なさい勘弁してください。
C#のためにVisualC#が作られたというより, VisualC#のために作られた言語だし
ん?VisualC#の為じゃなく.NETの為に作られたのがC#だろ?
実際VSとセットで設計されてるんだよ
VisualJがクソミソにされたからブチぎれて大金かけてパクった言語ですが?
はやくJava7出せよw
Visual Jはこけてくれた良かった。 お陰でC#という最高の言語の一つが出来たのだから。
Java7大したもの実装されなそうなのに何であんな時間かかってるんだろうな 正直言って見限り気味
814 :
739 :2009/10/13(火) 23:08:53
>>797 ありがとう参考になった。sendinputは使ってなかったわ
とりあえず今日も一日頑張ったけど無理だった。方法としては
・フォームをKeyPreview = trueに設定する⇒特殊アプリ(swfとか)には無効
・KeyDown += delegate(object o, KeyEventArgs e)の後に普通に
ActiveControl = swf1;
ActiveControl = swf2;と処理⇒片方しかキー処理しない
・上記のswf2をスレッド処理⇒片方しかキー処理しない
そもそもキーの渡し方がわからんかったからこんな変な処理になった
もうお手上げ\(^o^)/
質問させてください。Excelに差込印刷をしてみたいので C#が良いと後輩に教えてもらいました。 部下に指示するにしても、自分でまずやったほうがい良いと思い書き込みしてます。 どうやればいいでしょうか?
>>815 騙されてるよ。
C#はCOMと相性が悪い。
普通にVBAでいい。
>>815 お前は部下持ちなのに、自分の頭で考える能力も経験もないのか?
>>816 なるほど。VBAを購入してマスターすればいいのですね。
大変参考になりました。60点です。
>>798 ふぅ〜む……。
Vistaでは標準で入ってるけどXPでは.NET Framework 3.5に同梱かぁ。
COMベースであるところが気に入らないが、HD Photoも対応してるようだし
サードパーティーが拡張できるようにすること前提になってるようだし、興味深いな。
WIC、使ったことある人があれば感想とか聞いてみたいね。
試して見る価値はあるような気がする。ありがとう。
ただ自分の使いたい用途とは必ずしも一致しない。
System.IO.Stream系で1行あたりのバイト数で区切られた
長方形状のメモリに直接読み書きできるようなクラスがあれば
それの形で実装できればなと思ってる。
あまりに初歩的で申し訳ないのですが たとえばApplication.cs から Option.cs を開くために Application.cs[Design] で Option 項目を作成し クリックされた時のイベントに何を書けば Option のウィンドウを開くことができるのでしょうか?
アプリケーションの作成手順が知りたいんだけど 例えば、URLを右クリックして保存する時に出てくるウィンドウを設計する場合 まず、フォームにコンポーネントを追加していって 作業に必要なデータセットをつくって 次はイベント処理を作っていくのが一般的?
そんなんでデータセットなんて使わんだろ。
>>822 Application.csからOption.csを開くって何?
C#ではソースコード同士を開いたりという概念は無いよ。
(コンパイルしたら実行時には関係なくなるから)
それから、その2つはFormを定義してるのかな?
それなら、そんなクラス名をつけるのはあまり一般的ではないよ。
Formクラスを継承するんだらMainFormとかそういう名前をつけるといい。
ちょっと基本的なレベルで突っ込みどころが多すぎるので、
まずは教科書どおりに書いてその意味を考えてもらえないだろうか。
826 :
815 :2009/10/14(水) 10:03:19
今日、部下に相談したら「私がやりますから」って不機嫌そうな顔をしてたので 彼は左遷だと社長に直訴しました。私をだれだと思ってるんだまったく。
まさかとは思いますが、この部下とは、あなたの想像上の存在にすぎないのではないでしょうか。
たぶん自分が上司という設定も想像上
830 :
デフォルトの名無しさん :2009/10/14(水) 11:35:19
みんな何と戦ってるんだ……
>>826 おまえみたいな仕事の出来ないSEが多くてかなわん
そうだ、その席俺によこせ
>>825 レスありがとうございます。
共にFormクラスを継承していますので名前を変更しました。
まず、MainFormを作って次にOptionFormを作った場合
実行するとMainFormのみ表示されます。
実行時にOptionFormを表示するにはどのようにすれば良いのでしょうか?
OptionFormをいつ表示させたいの? MainFormの代わりならnew MainForm() してるとこを探してみそ。 任意の時点なら、new OptionForm()して.ShowDialog()とか
ソースコード全部漁るとMainメソッドでApplication.Runを実行している所がある そこで引数として渡すFormを変更する
abstract class Foo}
コンパイルエラーになりますた
public abstract class Foo{} public class Bar:Foo{} public class Baz:Foo{} public class BarContainer{ public List<Bar> Children; } public class BazContainer{ public List<Baz> Children; } というクラスがあって、BarContainer と BazContainer の両方を扱えるように、 interface IParent<T> where T:Foo { List<Foo> Children; } public class BarContainer:IParent<Bar>{ public List<Bar> Children; } というのを定義したんですが、 var x=(IParent<Foo>)(new BarContainer()); とはできないんですね。 なんかいい方法ない?
public abstract class FooContainer {
単純に public abstract class Foo { } public class Bar : Foo { } public class Baz : Foo { } interface IParent<T> where T : Foo { List<T> Children { get; set; } } public class MyContainer<T> : IParent<T> where T : Foo { List<T> lis; public List<T> Children { get { return lis; } set { lis = value; } } } class Program { static void Main(string[] args) { var x = (IParent<Foo>)(new MyContainer<Bar>()); var y = (IParent<Foo>)(new MyContainer<Baz>()); } } という話ではないのか?と思ったんだが、違うのか。
一見正しそうに見えるけどコンパイル通らないよそれ
理由は
>>843 を嫁
こんにちは 質問があります。 今座席表を簡単なものを作っています。 ラベルで席の場所を作り、その中に名前を入れておくのですが このときの名前はForm2にメンバー表をテキストボックスで作っておき それに対応したラベルをForm1で参照して表示にしようと思っています。 そして、Form2のテキストボックスの名前を変えて保存ボタンを 押せば簡単に席替えしたときに変えられる と言うな物を作りたいのですが。 @Form1からForm2のテキストボックスが参照できない Aexeで起動したときテキストボックスの中身を入力で替えたとき 保存は出来るのか? 以上を教えてください。なお、あまりよくない作りになりそうでしたら そこも助言いただけるとうれしいです
845 :
839 :2009/10/14(水) 21:32:23
みなさまレスありがとう。
>>840 ごめん、サンプルでは簡略化のために省きましたが、
Bar/BazContainer には基底クラスがあるので、その手は使えないっす。
>>841 ビンゴなレスありがとう。お礼にフェラチオしてやりたいくらいだ。
でも、記事内容がちょっと俺には高度っぽい。
理解できるだろうか。
>>842 >System.InvalidCastException はハンドルされませんでした。
>Message="型 'ConsoleApplication1.MyContainer`1[ConsoleApplication1.Bar]' のオブジェクトを型 'ConsoleApplication1.IParent`1[ConsoleApplication1.Foo]' にキャストできません。"
>>844 フォーム等の特定の入出力に依存しない座席表クラスを作って,
そのインスタンスを両方のフォームから参照する。
保存や読み込みもそのインスタンスだけ。
>>839 よく見てないけど、
C#4.0でサポートされるジェネリックの共変・反変性と関係するのかな?
ちと調べてみる。
関係は大いにあるけどC#4.0では解決しない List<T>は書き込みと読み取りの両方の操作をサポートしているので共変も反変も使えない
849 :
842 :2009/10/14(水) 21:48:14
なるほど、だから >841 なのか。納得しました。
>>846 なるほどテキストボックスとかで貼り付けたのを使うのでなく
あくまでもプログラムで参照させるやり方ですね?
初心者で申し訳ないですが
座席表クラスには座席番号と氏名を入れて
それを対応したラベルなりに表示させるようにして
変更時は
Form2に保存ボタンを作り名前が入ってるテキストボックスに入力させて
ボタン押してプログラムに上書きをさせていく感じでしょうか?
一応座席が76個ほどあります・・・・
初心者ですいません。
>>850 初心者スレで初心者ですみませんとか何度も言われると煽られているのかと思ってしまう。
それはさておき、
>>846 の言うことがよく理解できないなら
テキストボックスを参照させたいならテキストボックスのアクセシビリティを
デフォルトの private から internal とかに上げる方法もある。
こないだわからないことがあったんで質問します <asp:FormView ID="formView1" runat="server"> <ItemTemplate> ・・・・ <asp:Panel ID = panel1 runat="server"> ・・・・ コードの概要は上記のような形で.cs側でpanle1のvisibleを制御したいんだけどやりかたがわかりませんでした。 調べたら恐らくできるんだろうことはわかったんですが・・・ 試したことは Panel pnl = (Panel)formview1.findcontrol("panel1"); これでpnlがnullになってしまいます Panel pnl = (Panel)formview1.row.findcontrol("panel1"); rowに何もはいってません なんか推測でも理由分かる人いたらおねがいします
>>850 一個一個入力という意味?それでも問題ないけど。
一例として入力フォームはダイアログボックスとして席の位置に76個のテキストボックスを配置。
モーダル表示した時に846の座席表クラスの76個のString(配列とかリストとか)からそれぞれ貼り付け。
変更後にOKボタンで逆に座席表クラスに取り込む。Cancelなら内容は破棄。
なんてのはどう?
モーダルにしない場合、他の画面で更新かかったときに動的に書き換えたりと初心者の範疇を越えてしまう。
854 :
850 :2009/10/14(水) 23:04:07
>>851 ごめんなさいそういうつもりは一切ありません。
言わんとしてることは分かるのですが、どうも説明したり
口で言うのが苦手なのでうまくまとめられてないです。
internal明日会社で調べてみます!ありがとうございます。
>>853 ダイアログ使ったことないんでちょっと調べてみて
参考にしたいと思います!
しない場合は難易度アップなんですね・・・
明日会社で検討してみます!
ありがとうございます。
またクルかと思いますが申し訳ないですがそのときはよろしくお願いします。
C#, C♯, C#相談室 Part54 で質問したんですが スレが終了してしまったのでこちらで再質問させていただきます。 ------------------------------------------------- ArrayList.Add でリストの最後ではなく リストの最初に追加するにはどうすれば良いですか? ------------------------------------------------- 995 名前:デフォルトの名無しさん[sage] 投稿日:2009/10/14(水) 20:20:40 関係ないけど今更ArrayListなんか使うな 1000 名前:デフォルトの名無しさん[sage] 投稿日:2009/10/14(水) 20:47:19 List<T> というレスをもらいましたが、Listでも リストの最初に要素を追加する方法はわかりませんでした。 回答いただけたら大変助かります。
994 名前: デフォルトの名無しさん [sage] 投稿日: 2009/10/14(水) 17:28:58 Insert ↑なんでこれみてないの?これ答えたの俺じゃないけど、答えそのままじゃん。 List<T> でも同じ名前と同じやり方だよ。
45→55ってどういうこと?
バージョンアップ
一瞬立て間違えたかと思ってビビった
863 :
デフォルトの名無しさん :2009/10/14(水) 23:38:18
>>859 アンカーも付いてないのになんでもくそもないわ。
答える側の能力が低いだけだ。
質問の直後のレスで、その言い方はないわ ほかに混同するレスもないのに
865 :
デフォルトの名無しさん :2009/10/15(木) 00:02:10
c:\data\a\good01.jpg c:\data\a\bad02.jpg c:\data\a\other03.txt c:\data\b\good04.jpg c:\data\b\bad05.jpg c:\data\b\music06.mp3 c:\data\c\good07.jpg c:\data\c\bad08.jpg のような構造から、goodのjpgだけ抜き出したいと考えました。 string[] photofiles; string[] allphotofiles = Directory.GetFiles(@"c:\data", "*.jpg", SearchOption.AllDirectories); string photolist; foreach(string allphotofile in allphotofiles) { if (allphotofile.Contains("good)){ photolist = photolist + allphotofile + "\n"; } } photofiles = photolist.Split('\n'); でできているのですが、ひどく無駄な処理をしている気がしてます。 こういうときに、LINQを使うとスマートになるんですか?
何が「ひどく」とまでいうほど無駄と感じるわけ? 別にLINQ使ったからって大して変わるわけでもないけど。
867 :
デフォルトの名無しさん :2009/10/15(木) 00:13:15
配列に入れたものを文字列にして、 もう一度配列にしているのが無駄な気がしてます。 直接配列に入らないのかな〜と。 あと、LINQはこのあいだ盛り上がっていたのと、 まだ使ったことがないので、なんとなくあこがれて。
yield returnだろうとLINQだろうと配列コピーだろうとなんだろうと 目的の機能を達成すれば全ておk 好きな方法を使え
>>857 >>858 あ、ほんとだ。
すいません、2回ぐらい見たはずなのに
自分へのレスだと気づけませんでした…。
Directory.GetFiles(@"c:\data", "good*.jpg", SearchOption.AllDirectories); こうはできないんだっけ
871 :
デフォルトの名無しさん :2009/10/15(木) 00:27:43
>>864 まあそうなんだけどさ、それは分かってる側の理屈だよね。
もちろん答える側の自由なんだけど、せっかく答えたのに
相手に伝わらなければもったいないよ。
質問内容で明らかにかなりの初心者だってわかるんだし、
その僅かな気配りが出来るか出来ないかで能力に雲泥の差が出るよね。
var files= Directory.GetFiles(@"c:\work", "*good*.jpg", SearchOption.AllDirectories) .Select(f => new FileInfo(f)); でできるよ。
わかってる、というより質問しといて新しいレスが増えたのに、 自分宛じゃないからって無視する精神の方がおかしいわ
コードは、な
875 :
874 :2009/10/15(木) 00:39:37
ごば
876 :
デフォルトの名無しさん :2009/10/15(木) 00:47:05
>>873 うん、だからさ、その程度の事はアンカーを付ければ
簡単に避けれるのは理解できるかな?
決して気づかなかった無能な初心者を庇っている訳ではないんです。
>>876 まあ、日本人は説明能力が欠如してる人間が多すぎるからね。
質問側にも回答側にも、本人とエスパー以外に読解不可能な文章を平気で書いて
それで人に伝わるつもりになってる奴が多すぎる。
明らかに教育の問題だな。
まあ、君がもし回答者は質問者に親切に<すべき>と思ってるなら、
そういうクレーマーチックな押し付けがましい考えもどうかと思うけど。
878 :
デフォルトの名無しさん :2009/10/15(木) 01:12:38
質問です。 病院、診療所の検索システムを作成しています。 病院の検索ボックスに、例えば「ちゅうおう」と入力すると、 文字列変換前に、右手のパネルに「ちゅうおう」のフリガナを含む全病院、診療所が表示され、 そこで、Enterキーで確定させる前に、 Tabキーまたは右カーソルキーの押下で右手のパネルにフォーカスを移したいと思っています。 Enterキーで確定後に右手にフォーカス遷移させることはできたのですが、 確定させる前の、入力文字列に点線の下線がある状態で、 Tabキーまたは右カーソルを検出し、フォーカスを移動させたいんです。 それは可能でしょうか? もしできるなら、どのようなコーディングになるのでしょうか。 教えてください。よろしくお願いします。
2ちゃんでの答えに説明力不足もくそもない。 直後に書いた答えに説明力不足もくそもない。 一言使うメソッド教えるのに説明力不足もくそもない。 読解不可能な答えでも何でもない。
880 :
デフォルトの名無しさん :2009/10/15(木) 01:45:05
>>872 System.IO.FileInfoって、配列じゃなくない?
>>870 できそうなのですが、条件を間違えてました…。
c:\data\a\good\photo01.jpg
c:\data\a\bad\photo02.jpg
c:\data\a\other\text03.txt
c:\data\b\good\photo04.jpg
c:\data\b\bad\photo05.jpg
c:\data\b\music\music06.mp3
c:\data\c\good\photo07.jpg
c:\data\c\bad\photo08.jpg
でした。
Directory.GetFiles(@"c:\data", @"\good\*.jpg", SearchOption.AllDirectories);
とかやったけどだめっぽい。
881 :
デフォルトの名無しさん :2009/10/15(木) 01:49:10
自アプリ以外から起動したinternet explorerの特定のタブのHtmlDocumentを取得するのって自前でCOMの処理書かないと無理なの? 簡単にアクセス出来るクラスとか無いの? COM使った実装は実現出来ているんだけどもっと簡単な方法が無いかなって思っての質問だけど
少なくとも標準ライブラリにはない Shell32とか使えば多少は楽になるかも知れんがまあ大差なかろ
>>883 サンクス
なんかこの当たりもっと対応して欲しいよね
C#は先進の技術で作られているのにM$純正のアプリですらレガシーな技術を使わないとアクセス出来ないとか意味不明すぎる
IEに至っては構造が歪すぎて本来COMで提供されているべき機能がWindowMessageを使わないとアクセス出来ない機能まであるし
>>880 パスに含まれる、ならそりゃ第二引数は使えない これはファイル名のフィルタだから
Whereなりif文なり自分で分けるしかないな
Selectは型の変換 IEnumerable<TInput>をIEnumerable<TOutput>にする
GetFilesならstring[] : IEnumerable<string> で、
SelectでそれぞれのstringがそれぞれFileInfoに置き換えられてIEnumerable<FileInfo>を返す
まあFileInfoがいらないならこのSelect文は不要だな
取り敢えず\nでくっつけて後でSplitはあり得ない
List<string>にAddしていくようにすれば良いんじゃね
>>885 他のプロセスの内容をのぞき見るとか、マネージドという方向性とは正反対じゃねーか
888 :
デフォルトの名無しさん :2009/10/15(木) 02:08:14
>>887 いやいやw自分のアセンブリから他のアセンブリのパブリックメソッドを呼び出すのは実にマネージド的じゃんw
IEがアセンブリでちゃんとそう言うメソッドを公開していれば
ブラックボックスになっている他プロセスをわざわざ覗き見る必要なんてないじゃんかよ?w
>>880 ・GetDirectories()→GetFiles()の2段階にする
・条件緩めてGetFiles()→自前でフィルタ
のどちらかだろうな
とりあえず前者をLINQで書いてみた (SelectMany便利だねぇ)
Directory.GetDirectories(@"c:\data", "good", SearchOption.AllDirectories)
.SelectMany(d => Directory.GetFiles(d, "*.jpg"))
891 :
デフォルトの名無しさん :2009/10/15(木) 03:17:44
>>886 \nでくっつけて後でSplitはあり得ない
自分でもそう思います。はい。レベルアップしたいです。
List<string>を試してみます。
List<string>って、ListBoxと扱いはいっしょ?
>>890 これがLINQですか…。
string[] photofiles = Directory.GetDirectories(@"c:\data", "good", SearchOption.AllDirectories)
.SelectMany(d => Directory.GetFiles(d, "*.jpg"))
だと、
型 'System.Collections.Generic.IEnumerable<string>' を 'string[]' に暗黙的に変換できません。明示的な変換が存在します。(cast が不足していないかどうかを確認してください)
なんですけど、この変換が、886さんのいう型変換ですか?
ToArray()でクエリを評価して結果の配列を受け取ればおk 列挙子(IEnumerable<string>)が返されるってのはLINQの重要なポイントなんで、今は分からなくとも頭の隅に置いとくといい。 string[] photofiles = Directory.GetDirectories(@"c:\data", "good", SearchOption.AllDirectories) .SelectMany(d => Directory.GetFiles(d, "*.jpg")).ToArray();
>>891 個人的な意見だが
今のレベルではLINQ理解しようとしてもただただ混乱が増えるだけに見える。
勉強目的ならば、Listを使って
>>865 を改善できるように頑張った方がいい
LINQにこだわりたいのならば、誰かに作ってもらった動くものを
今はコピペするだけにとどめておいた方がいい
と思う。
あと変数名の付け方もちょっと気になる
>>880 ToArray()
もうちった勉強しろ
895 :
デフォルトの名無しさん :2009/10/15(木) 06:42:22
>>878 ですが、どなたかご存知ではないでしょうか?
これができれば使いやすくなるのですが…。
右パネルに移動したとして検索フォームには何も入力されないまま? というかそれ使いやすいか?
昔はImmほにゃらら関数とWM_IME_COMPOSITIONで可能だった 今はどうだかしらんが
>>878 そんなIMEの実装に依存するような動作はやめたほうがいいと思う。
MS-IMEは変換中のキー入力の起動を任意にカスタマイズできるし、
ほかのIMEが入ってる環境ならなおさらだ。
900 :
デフォルトの名無しさん :2009/10/15(木) 11:21:29
>>878 表示される文字とは別にKeyDownイベントで
キー入力だけチェックするのはどうよ
「ちゅうおう」って打ってる後ろで
[chuuou]って取得しつつ検索結果を常に別窓に表示する
>>878 個人的には
>>898 ,896と同感
あと
>右手のパネルに「ちゅうおう」のフリガナを含む全病院、診療所が表示され、
って、それは読み仮名検索を実装していて病院名検索とは別のもの、ってこと?
>>900 それは、後々整合性保つのがめんどくなっていくと思うなあ
今議論してる話は、Youtubeの検索欄が実現できてるな。 (どうやってブラウザで確定前の入力が取れるのかが激しく謎だが) 便利かなと思わないでもないが、確定前に候補が出てくるので 今入力中の検索ワードを確定したらいいのかせんでいいのか迷ってしまう感じ。
というか、googleのインクリメンタルサーチだと思ったが いやまあ根本的に同じものなんだけどさ まあアレはブラウザのサイズによってはすごくキモイ挙動になるけど・・・ クリックでも、確定してから矢印キー操作でもお好きな方でどうぞ。 ブラウザ上だったら、タイマー使って簡単に実現できるよ DOMからvalueの中身を見るだけで未確定でも取ってこれる。
904 :
デフォルトの名無しさん :2009/10/15(木) 12:48:44
少し逸れた質問かもしれないが、変換ツールがIMEかそれ以外かを判定しる方法ってありますか?
>>904 ユーザーに『パン作った少年』と変換・入力させて、
『パンツ食った少年』が入力されればMS-IME :)
>>905 すでに修正変換していた場合、むりだろw
Messagebox.Show("パンツは食えません!","エラー");
ImmGetDescriptionとかImmGetIMEFileNameとかで判断する
909 :
デフォルトの名無しさん :2009/10/15(木) 17:46:39
>>892 できました。動きました。大感謝。
>>893 おっしゃるとおり。LINQはとりあえず892さんの作っていただいたのを眺めながら勉強したいと思います。
そう、そのまえに自分ではListをやってみないと。
Listで865を直してみます。
>>894 わかった!
ありがと。勉強するぜっ!
910 :
850 :2009/10/15(木) 19:00:53
お世話になってます。 なんとか参照して表示までこぎつけましたが内部はかなりへんてこなきがします どうなのでしょうか public class zasseki { public string zs1() { string a = "名前"; return a; } と言うのを73個作り newを使いクラス生成 そして、form1に public void Form1_Load(object sender, System.EventArgs e) { label1.Text = zsk.zs1(); とずらーっと入れました。 なんか他にも出来そうですが一応表示は出来てるので このまま進めてもいいんでしょうか
> と言うのを73個作り /' ! ━━┓┃┃ -‐'―ニ二二二二ニ>ヽ、 ┃ ━━━━━━━━ ァ /,,ィ=-;;,,, , ,,_ ト-、 ) ┃ ┃┃┃ ' Y ー==j 〈,,二,゙ ! ) 。 ┛ ゝ. {、 - ,. ヾ "^ } } ゚ 。 ) ,. ‘-,,' ≦ 三 ゞ, ∧ヾ ゝ'゚ ≦ 三 ゚。 ゚ '=-/ ヽ゚ 。≧ 三 ==- / |ヽ \-ァ, ≧=- 。 ! \ イレ,、 >三 。゚ ・ ゚ | >≦`Vヾ ヾ ≧ 〉 ,く 。゚ /。・イハ 、、 `ミ 。 ゚ 。 ・
話を聞くだけで頭が痛くなるコードだな…
もういっそエクセルでやってくれ・・・
もうそれ紙に書いた方が良いよw
>>910 もうどこから指摘して良いのやら全然ダメなやり方です
C#の本を1冊買って読みながら作った方がいいと思うよ
基礎をおろそかにしては次のステップへは進めない
まずクラス名のザッセキが気になる
うん、まずは配列覚えようか
取り合えず 配列 でググろうか
俺は本なんてよまないからいまだにオブジェクト指向とか意味わかってないけど経験でなんとかやってこれた。 あたって砕けて覚えていくのが楽しいものですといいたが、苦労したくなかったら本読め
さすがに本読んでなくても 70も同じコード書いてたらなんかおかしいって思うだろ普通
プログラム書くときって普通合理化しようと思うものじゃないの? 初心者とか以前に最低限、初心者用の本を読むとかアルゴリズムの入門編くらいは知っておけよ
テキストボックスに、数字以外のものを入力させたくないのですが どのような方法があるでしょうか? 右クリック、コピペでの貼り付けは考えなくて結構です。
かれこれ2ヶ月やってこれです。 死んだほうがいいですかね。
あ、↑910です まじめに会社を辞めようかとも思ってます。ありがとうございます
>>924 二つ質問があるんだけど
本は読んでいますか?読んでいれば何という本を読んでいますか?
>>926 読んでいる最中で
猫でもわかるのC#を読んでいます。
やってるときは普通にこれじゃ意味ないなとか思ってたんですが
どうしたらいいか分からず上のようになっています。
ちゃんと読んで、サンプルも作ったり改造したりしてるのですが
全然だめですね。ほんとに死にたくなると同時に無能さを感じました。
>>924 うそ、だろ・・・
俺も8月頃C#始めたけど(勉強のためにこのスレ見てる)
さすがに配列くらいわかるわ・・・
初心者本が初心者にやさしいとは限らないからねえ 910の場合、本読んでるなら本の影響だろ
どんな初心者本でも配列くらい載ってると思うけど…
プログラムにバグがあるとき以外 発生しない状態になったときは InvalidOperationException 投げておけばいい? それとも、ApplicationException?
>>931 その状態ってのが具体的にどういう場合なのか
引数がおかしければInvalidArgumentだし
メンバが変な値になってればInvalidOperationだし
なんかアプリ固有の例外を投げるべきかも知れないし
どんな例外もピンと来ない場合はなんとなくInvalidOperation投げることもあるけど
ApplicationExceptionは元々アプリ固有の例外を定義するための基底クラスとして用意されてた
ただし全部Exceptionから派生するようにガイドラインが変更されたので死にクラス
「使い方が間違ってる。コードを修正しろ。」という意味で例外を投げる場合は InvalidArgumentExceptionやInvalidOperationExceptionのようないい加減な例外を投げておくべき。 わざわざ固有の型を作るとキャッチしてくれという意味に取られかねない。
>>922 KeyPress() イベントで e.KeyChar と e.Handled を使ってふんだらら。
ごめん。詳しくは覚えてない。
zassekiにほれたのでやってみた。 呼び出し側のForm public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 frm = new Form2(); frm.ZassekiEvent += Sekigae; frm.Show(); } private void Sekigae(object sender, EventArgs e) { var txtBox = sender as TextBox; if (txtBox != null) { this.Controls.OfType<TextBox>() .Where(t => t.Name == txtBox.Name) .Single().Text = txtBox.Text; } } }
席の情報をもつForm 駄作だがうけとってくれw public partial class Form2 : Form { public delegate void ZassekiEventHandler(object sender, EventArgs e); public event ZassekiEventHandler ZassekiEvent; public Form2() { InitializeComponent(); foreach (var txt in this.Controls.OfType<TextBox>()) { txt.TextChanged += new EventHandler(zasseki_TextChanged); } } void zasseki_TextChanged(object sender, EventArgs e) { ZassekiEvent(sender, e); } }
Form1とForm2のTextBoxは同じ名前という前提で頼む。 Form1.TextBox1とForm2.TextBox1がつがいになる。 保存を考えたら外部のリソースにたいしてバインドするほうがいいだろうな。
938 :
デフォルトの名無しさん :2009/10/15(木) 22:16:34
リソースとバインドの意味がわかりません
>>846 みたいな設計にするってことだろ
いわゆるデータバインディングなどを使うかどうかは別にして
辞書ひけカス
C#初心者って言ってんのにデリゲート唱えるコードとかwwwドSw
LINQ避けてわざわざforeachで回されると長くなってうざい どうせイベントとか使ってる時点で理解できないだろうから短く貼ってくれた方がいい
943 :
デフォルトの名無しさん :2009/10/15(木) 22:34:54
この程度で長いって……
ここでLINQを使うならいったいどのように書くんだ? そっちの方が横に長くなると思うけど
奥に長くしてくれ
946 :
942 :2009/10/15(木) 22:45:52
いや
>>941 が.Where(t => t.Name == txtBox.Name)に文句付けてるのかと勘違いした
たぶんイベント使ってるのが難しいと言いたいんだろうな
初心者がやるならテキストファイルから入出力でしょうね。 配列、入出力あたりは早めに覚えておきたい。
948 :
942 :2009/10/15(木) 23:01:34
フォーム間のやり取りにわざわざテキストファイルを介するの? そこまでして無理に今やることはないと思うぞ さっさとオブジェクト指向の勉強とか済ませてしまった方が早い
それよりいまの問題は配列をしらない事だろうw
これを題材に、一歩ずつ学べるようにリファクタリング&機能追加するような教材を作ったら・・・ 別に売れないかなw
あれか、一回70個コピペさせて 面倒でしょ?そんな時に配列!ってか
配列!そういうのもあるのか!
954 :
942 :2009/10/16(金) 00:00:24
Excelでいいじゃん
×そういうのもある ○最低限の知識
これは面倒すぎるありえないっていう感覚は大事だと思う
ttp://uchukamen.com/Programming1/ToRecycleBin/index.htm を参考にして、ファイルをゴミ箱に入れようとしています。
ダイアログを出さないようにフラグを
sh.fFlags = Shell.FOFlags.FOF_NOCONFIRMATION ;
に変えたら、ゴミ箱に入らずに消えてしまいました。
ダイアログを出さないようにゴミ箱に入れるには、FOF_ALLOWUNDOも同時に指定する必要があると思うんですが、
+でつなげても0x0050にしてもエラーが出てしまいます。
同時指定のやり方を教えてもらえませんか。
で、その配列とやらをどう活かすですか
>>957 組み合わせ可能な列挙体を組み合わせるのはビットごとの論理和演算子である | を使う
>>960 あっさりと想定通りの動きをしました。
ありがとうございました。
>>935-936 設計と命名以外でダメ出してみる (×:MUST be fixed、△:SHOULD be fixed)
×Form2.ZassekiEventイベントのソースがForm2のインスタンスじゃない
→ ソースはそのイベントを定義している型かその派生にする
×Form2でZassekiEventがnullのときにNullReferenceException
→ nullチェックを入れるかnullにならないようにする
△ZassekiEventHandlerのシグネチャがEventHandlerと同じ
→ 単に無駄というだけでなく、EventHandlerには「イベントデータが無い」という意味がある
△Form1.Sekigaeメソッド内のWhere(...).Single()は無駄
→ Single、Firstなどには条件を指定できるオーバーロードがある
ウザ
次スレの予感・・・
>>924 おれはプログラミングはじめて1ヶ月でAPIを駆使して
winnyのリストボックスの内容を取得して
ハッシュを収集したり無視したり自動でキャッシュ削除するソフトを作ったよ
向いている向いてないがあるんだろうな
966 :
965 :2009/10/16(金) 02:11:57
プロパティ、フィールド、クラス、値型とか意味知ってるか? おれはまず文法を一通り読んだ それでわからなかったら、初心者サイトで調べ、それでもわからなければ 別の初心者サイトを見る。 わからないことをわからないままで横着して進めようと焦る気持ちはわかるが 他と違って、プログラミングはコツコツ覚えていくしかない 体で覚えていこうなんてするなよ
967 :
デフォルトの名無しさん :2009/10/16(金) 03:02:00
>>965 みんなお前みたいに暇じゃないんだよw
一ヶ月根詰めればそれぐらい出来るわ
968 :
965 :2009/10/16(金) 03:16:12
おっさんのおまえらには無理だろうなww
細かく調べる前に勘で書いて体で覚えたけど 最初に作りたい物が決まってるならこの方が早い そのあと詰まった所で随時調べる
>>962 指摘thx
>>→ ソースはそのイベントを定義している型かその派生にする
プロパティでget/setできればOK?
>>→ nullチェックを入れるかnullにならないようにする
このケースでnullになるかな?けれどもnullチェックはしたほうがいいね。
>>単に無駄というだけでなく、EventHandlerには「イベントデータが無い」という意味がある
よくわからん。
>> Single、Firstなどには条件を指定できるオーバーロードがある
Whereいらなかったね。ひとつ賢くなった。
また夜中なのに異常に伸びたなと思ったら予想通り
ポインタを使ったアルゴリズム、チェインとか木とかあるけど 同じような動作をするものでunsafeしないでC#で行うことはできますか? 厳密なメモリアドレスへの操作というわけじゃなくて あるカプセルの参照と値を持つカプセルを関連付けていければいいだけなんだけど
何言ってるかわかんね LinkedListでも何でも好きなの使えよ
>あるカプセルの参照と値を持つカプセルを関連付け Dictionary<TKey,TValue>で両方に参照同じ渡せば。
フォルダを作ってそこにクラスファイルを入れると そのクラスを利用する場合 フォルダ名.クラス名 としなければなりませんよね? でも、パっと見でフォルダ名なのかクラス名なのかがわかりにくいと思いませんか? わざわざフォルダ名を書かなければいけないのっておかしい気がするのですが
namespace変更すればいいだろ… VSに文句言う前に言語仕様から理解しような
MyClass.System.TxtReader があり、TxtReaderをSystemフォルダにいれた場合 System.TxtReader と書くと、Systemはフォルダ名なのかクラス名なのかわかりにくくないですか?
>>976 じゃあ、フォルダの数だけnamespaceを作れと?
namespaceを大量生産するってそれこそありえないと思うんだけど
名前空間でググレカス
TxtReader.csのnamespaceをMyClassにすりゃいいでしょう。 馬鹿としか言えない。
ググレといのはこのスレの本分ではないと思うのですが?
new System.IO.DirectoryInfo(@"c:\"); これの"IO"はフォルダ名なのかクラス名なのか分かりにくいだろうか。
フォルダ名と呼ぶのをやめて欲しい そんな用語はない VSがフォルダと同じ名前の名前空間を自動生成しているだけ
>>978 お前が何を悩んでいてどうしたいのかさっぱり分からない。
C#はjavaと違って好きに名前空間を指定出来るぞ。
俺はフォルダ名と一緒が一番いいと思うが。
次ぎたててくる
>>975 そんな規則はない。
コーディング規約的にnamespaceとディレクトリ配置が一致していることが望ましいだけ。
間違った思い込みをする前に、MSDNで一次情報に当たる習慣をつけよう。
.NETの命名ガイドラインに従うと,確かにA.B.C.Dだけ見て 名前空間とクラスとプロパティを見分けることはできないんだけど 実際それで困ることある? だいたい分かるじゃん java.lang.System.outとかキモい
おそらく、開発環境ソフトが見分けをサポートすべきという思想なんだろうな カーソルでポイントすればヒントが表示されるみたいな
つーか、大文字小文字を打ち間違えたときも、 大文字と小文字を入れ替えたら名前が見つかってエラーがでなくときは、自動で修正してほしいもんだ
俺も昔、スペルチェック機能みたいなのが欲しいと思ってた。MS-Wordでできるんだから Visual Studioでもできるだろう、と。 でも今はインテリセンスあるからいらない。みんな最初から候補に出てくる。
>>992 VBは実際にそれやってくれる
C#は大文字と小文字を区別するのでわざとその機能は付けてないんだと思う
仮に現在大文字と小文字だけが違う複数の名前が無かったとしても,
そういう機能があるとつい無頓着になってミスが発生しやすいからね
大文字小文字が違うだけの変数名を作ることはまずなのにに なぜ区別するようにしたんだろうな publicの場合は先頭だけ大文字、privateは小文字って決め付ければいいのに
メインターゲットがC++やJavaからの移行者だから当たり前 それとVBとの差別化
997 :
デフォルトの名無しさん :2009/10/16(金) 16:39:12
List<>の勉強中です。 List<string> photolists = new List<string>(); string[] photofiles = Directory.GetFiles(@"c:\data", "*.jpg", SearchOption.AllDirectories); foreach(string photofile in photofiles) { if (photofile.Contains("good")){ photolists.Add(photofile); } } すこし書いてみました。動作のテストもしました。 List<>とstring[]とふたつ使っているところが、まだいまいちな気がします。 もっとスマートになりますよね? foreachを使わず直接配列を追加することは可能ですか?
フィルタリングが入る時点で「直接配列を追加」は不可能だろ 次のステップはContains("good")をメソッドに取り出した上でArray.FindAll、辺りかな この場合はList<T>の出番が無くなるけど
LINQを使うしかない var goodphotos = photofiles.Select(photofile => photofile.Contains("good")); photolists.AddRange(goodphotos);
ごめんSelectじゃなくてWhereだった
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。