ふらっとC#,C♯,C#(初心者用) Part85
3 :
デフォルトの名無しさん :2012/01/31(火) 02:57:26.52
C#で2chに書き込む方法教えろ
4 :
デフォルトの名無しさん :2012/01/31(火) 03:07:25.52
スレッド間でメッセージ通信を行うにはどうすればいいですか? Win32APIならPostThreadMessage/GetMessageを使うのですが。
スレッドについてです。
スレッドとは、時間がかかる処理を行なってもGUI等が止まらないようにする物ですよね
Form1_Loadでスレッドを作って、while(true){progressBar1.Value++;}と時間がかかる(というか終わらない)処理をやらせたのですが、
理想は、プログレスバーが伸びつつ、GUIが表示されてウインドウのサイズや場所を変えれる。というのを想像していたのですが
プログレスバーが伸びつつ、GUIは固まってしまっています。
workerは別スレッドなのではないでしょうか。なぜGUIが固まってしまうのでしょうか
http://pastebin.com/HCeZxCrm また、この様に別スレッドでファイルをダウンロードし保存するコードがちょくちょくありますが
http://dobon.net/vb/dotnet/internet/downloadfile.html この手段を使わなくても、別スレッドを作り、そこでファイルのDL&保存処理を行うのとは何が違うのでしょうか。
BinaryFormatter formatter = new BinaryFormatter(); FileStream fs = new FileStream(ファイル名, FileMode.Create); formatter.Serialize(fs, projInfo); fs.Close(); 上記の処理で、serializationexception はハンドルされませんでした というエラーが発生します。BEAN クラスのシリアライズがもれているのでしょうか? 見直して、漏れは無かったのですが。
メインフォームとサブフォームがあり、サブフォームではさまざまな設定を行う、
という設計のツールを開発してます。
サブフォームで設定した情報を一つのクラスにまとめてXMLファイルに保存したかったので、
シングルトンクラスを使いました。
ですが、さまざまな不具合が発生してしまってどう調べてもわからないので、
お知恵を拝借させてください。
不具合1.
Form1のLoadイベントでXMLファイルのデシリアイズを行っているのですが、
うまく読み込んでくれません。Form2を開くとForm2の情報は読み込まれてます。
不具合2.
XMLファイルが無い場合にはきちんとした値を保存するのですが、XMLファイルがあると
上書き保存してくれず、値は初期のままです。こちらもForm2の情報だけは更新されます。
恥を忍んでクラスとロード部分などのソースをアップしました。
http://ideone.com/JEqZp アドバイスや、もっと楽にできる方法などをいただけると嬉しいです。
何卒よろしくお願いします。
>>5 > workerは別スレッドなのではないでしょうか。なぜGUIが固まってしまうのでしょうか
workerは別スレッドだが、Invokeは指定したデリゲートをUIスレッドにやらせるためのもんだ
> この手段を使わなくても、別スレッドを作り、そこでファイルのDL&保存処理を行うのとは何が違うのでしょうか。
WebClientがProgressChangedを起こしてくれて楽、とか
非同期IOは明示的にスレッド使うより効率的なことが多い
>>6 まあなんか足りんのだろ
それだけじゃ何ともいえない
>>7 とりあえずForm1_Loadにブレークポイント貼ってステップ実行してみたら
シングルトンで思い出すのが昔くりーむしちゅーの有田が何かの番組で はめられて遊ばれるネタがあったけどその際にあだ名がクルトンとかなってたのを思い出す
12 :
7 :2012/01/31(火) 09:49:35.04
すみません、自己解決しました。 貼ったソースはクラス参照の部分を分かり易く全文書いていたのですが、 本当はクラスを変数化(?)してました。 それを直したら上手く動きました。 お騒がせしてすみませんでした。
>>4 GUIスレッドに対してならControl.BeginInvoke
その他はそれで何したいかによる
>>4 ウィンドウがあろうがなかろうが
オブジェクトで通信するだろjk
どっちにしてもForm1_Loadに終わらない処理書いたりするなよ…
座標X:Yを指定するだけでグラフ上に放物線がかけるライブラリ教えてください
Excel使え
お断りします
ポップアップメニューを階層構造にしたいのですが 下層のメニューアイテムにアクセスする方法がわかりません。 どのようにアクセスすればいいでしょうか?
>>16 protected override void OnPaint( PaintEventArgs e )
{
base.OnPaint( e );
int offset = this.ClientSize.Width / 2;
for( int x = -offset; x < offset; x++ )
{
int y = x * x / 100 * ( -1 ) + this.ClientSize.Height;
e.Graphics.DrawRectangle( Pens.Black, x + offset, y, 1, 1 );
}
}
>>20 これってForm1.csのどこに貼り付ければいいのでしょうか?(ぇ
>>19 IDEで適当にポップアップメニュー作った後に Desingner.csファイルを覗いて見ると良い
>>22 さんくす。なるほどDropDownItemsか。
24 :
デフォルトの名無しさん :2012/01/31(火) 18:05:42.07
>>21 フォームのOnPaintの機能を上書きしてるから、フォームのコードの無難な白いところに貼っとくがヨロシ。
>>24-25 うおすごい
フォームに貼り付けただけなのにフォームにグラフが出てきました
OnPanitでFormに直接書くより内部的にbitmap作ってそこに書くコードあげればいいのに その方がbitmapを保存したりと利用の幅が広がるのに
こういうふうにしてみました これはコップみたいになるのですが、ウィンドウの下から山みたいに表示するにはどういう風に書き換えればいいのかご教示お願いします protected override void OnPaint(PaintEventArgs e) { e.Graphics.DrawRectangle(Pens.Black, 0, 0, 1, 1); e.Graphics.DrawRectangle(Pens.Black, 10, 10, 1, 1); e.Graphics.DrawRectangle(Pens.Black, 20, 20, 1, 1); e.Graphics.DrawRectangle(Pens.Black, 30, 10, 1, 1); e.Graphics.DrawRectangle(Pens.Black, 40, 0, 1, 1); }
>>28 その辺は座標系の話だね
PCのGUIの座標系は一般的に左上が0,0で右下が正
グラフをしたからはやすとなると計算しないとダメかな?
>>29 フォームのWidthとHeightを取得して
その値からXとYを引いていけば出来そうですね
ありがとうございます
ということでやってみたんですが全部表示されません Heightで取得するって間違ってますか? protected override void OnPaint(PaintEventArgs e) { int height = Height; e.Graphics.DrawRectangle(Pens.Black, 0, height-0, 1, 1); e.Graphics.DrawRectangle(Pens.Black, 10, height - 10, 1, 1); e.Graphics.DrawRectangle(Pens.Black, 20, height - 20, 1, 1); e.Graphics.DrawRectangle(Pens.Black, 30, height - 30, 1, 1); e.Graphics.DrawRectangle(Pens.Black, 40, height - 40, 1, 1); }
this.clientsize.height
ClientRectangle
Pathとか使って回転とか使ったほうが早いかもな 直感的に作業できるし
35 :
34 :2012/01/31(火) 22:02:58.13
ちょっと書いてみるので待ってね
そんなことは自分で考えさせろよー
わからなくて悔しかったんですね笑
widthとかheighってマイナス受け付けないんだな 誤算だった X軸とかY軸の回転もできなのは辛かった 見つけてないだけかもしれんが
全部読んでないんで勘違いしてるかも知れないけど、 単純な平行移動とか軸の反転ならワールド変換で出来るんですよ。 フォントが絡んでくると話がややこしいけどね。
>>42 勉強不足だけどやりかたがあった
http://ideone.com/xNsb3 たぶんこれで問題ないんじゃないかな?
まあ最悪はグラフと文字は分けて描けばいいだけだしねえ
文字もPathに突っ込めるので
・グラフのメモリなど
・グラフ本体(個別に色分けしたければ必要個数分)
・文字
でそれぞれわけて描けばいいだけ
基本的なやり方は今貼ったのでOK
>>13 GUIスレッドに対しては使いません。そもそもGUIはないです。
VC++ではPostThreadMessage/GetMessage/PeekMessageでスレッド間通信をしていたので、
同じようなことができればと思ってます。
>>14 ウィンドウはありません。
オブジェクトで通信というのはどのようにやるのでしょうか。教えてください。
static void Main(string[] args) stringは何故配列なの?
ジム
俺がガンダムだ。
>>44 コレクションをロックしながらしたらいいんちゃうん
class HogeMessage {}
var queue = new Queue<HogeMessage>();
//PostThreadMessage
lock ((queue as ICollection).SyncRoot) {
queue.Enqueue(new HogeMessage());
}
//GetMessage
lock ((queue as ICollection).SyncRoot) {
var q = queue.Dequeue();
.....
}
//PeekMessage PM_NOREMOVE
lock ((queue as ICollection).SyncRoot) {
var q = queue.Peek();
.....
}
SynchronizedCollection使ってもいいかもしれんけど
Queryを指定してEventLogを取得し、取得したEventRecordから
<EventData><Data></Data></EventData>内のデータを文字列で
取得しています。具体的には、下記イベントを取得しています。
ProviderName: EventLog
ID: 6008
このイベントログは、PCを強制電源OFF(電源ボタン長押しなどによる)
した後にPCを起動させたら書き込まれるログなのですが、
EventDataの情報内に、強制電源OFFしたときの日時の情報が書き込まれています。
取得したEventRecordに対して、EventRecord.Properties[1].Value.ToString();
を実行すると、例えば、"2011/12/29" という文字列が取得できます。
■質問■
この文字列を String str = record.Properties[1].Value.ToString(); とし、
String str2 = "2011/12/29"; とした場合、
str.Equals(str2) が false になるのですが、これは何故でしょうか?
なお、Properties[0].Valut.ToString() で取得できる時刻は、
String str3 = "19:42:35" と Equal でした。
DateTime dt = DateTime.Parse("YYYY/MM/DD hh:ss:mm");
という記述でDateTimeが生成できるのですが、
上記で取得したstr2を用いて String を作り DateTimeParse()
を実行すると、FormatException で死にます。
Debugを進め、String str2 = "2011/12/29"; として作成したものと
相異があることが分かりました。
debug中のキャプチャ
ttp://www.dotup.org/uploda/www.dotup.org2583153.png.html
どうしてだろね。 的外れかも知れないけど、文字コードレベルで比較はしてみた?
アドレスを比較している?
別クラス、別スレッドで元クラス(form1)のメソッド(public bool func(int no) {return true;})に 引数付きでアクセス&戻り値を取るにはどうしたらよいのでしょうか formにform1型のthisが入っています。 func()とするだけなら delegate void hoge(); form.Invoke(new hoge(form.func)); でよいのですが、引数を渡す方法が分かりません。
Invokeに引数取るオーバーロードあるだろ MSDN見れ
スレッドはやはり壁らしい
app.configでstring[]はどのように書くのですか?
StringCollectionじゃダメ?
>>58 旧VBポジションだから乗り換え組&プログラミング初心者が多いんじゃね?
62 :
52 :2012/02/01(水) 20:18:27.32
>>53 ,54
レスありがとうございます。
下記の通り、解決しました。
Stringを一文字(char)ずつ比較したところ、
EventDataから取得した日付文字列には、
Unicode character LEFT-TO-RIGHT MARKなる、
0x200e が含まれていることが分かりました。
具体的には、下記の●の場所に。
"●2012/●01/●31"
この0x200eを、""に置換したところ、
文字列は一致し、DateTimeも生成できました。
余談ですが、同様のMARKとして
RIGHT-TO-LEFT MARK 0x200f もあるようです。
型そのものを返す構造体やクラスって作成可能なのでしょうか? intの値ではなくintそのものを返すものです。 無理ですよね?
Type型というのは存在するが それで何したいの
>>63 ちょっと何言ってるのか(
でもTypeオブジェクトなら返せるよ
動的生成したいんじゃないの?
>>64-65 ありがとうございます。
動的に型を定義しなければいけなくなってしまって。
string型を入れたらstringの文字列で型を返してくれるものを作りたいんです。
ちょっと研究してみます。
本当にありがとうございます。助かりました。
>>66 そうです!今Typeクラス見てます。やってみます。
普通にクラス書くだけで、実行時型情報や動的生成はサポートしてるよ。 すべてのクラスの基底クラスはObjectクラスだから。
むしろ初心者しかやらないだろ
>動的に型を定義 さらっととんでもないことを書いてるなw
なわけないだろ。 昔、MS技術者は、MFCでCマクロ使ってそれを実装したんだぞ。 今は言語自体がそれをサポートしてるから楽なもんだ。
>>72 初心者は使わないけど普通に使う。
だから、最近のC++でもC#でもサポートしている。
>string型を入れたらstringの文字列で型を返してくれるもの 文字列で型名を指定してインスタンスを生成したいってこと? それとも型名を文字列で返せればいいの? >動的に型を定義 と話がいまいちつながんなくね?
object instance = Activator.CreateInstance(Type.GetType("System.Int32")); まあこれのこったろうけど
どういうケースでこれを使うんだ 型名が文字列ってことはどこからか入力するんだろ
interfaceで解決しそうな予感
動的生成は簡単な例で例えると、ワードにエクセルの表を貼るみたいなときに使う。 ワードはエクセルの型を知らない。けどワードのドキュメント上でエクセルが動いてるみたいな。 実際は型名の文字列なんかどうでもよくて、objectのポインタか型情報さえあればnewできんだよね。 ユーザーが勝手に機能拡張できるアプリとかではよく使う。
>>79 やっぱりそういう勘違いだと思った。
全然たとえになってないじゃん。
ワードがエクセルのオブジェクトの型を知っていようがいまいが、
エクセルのオブジェクトの型はエクセルのバイナリがビルドされた時点で確定しているものに過ぎない。
単純にファクトリを書くのを横着しているだけのような気も
>>80 おれ質問者じゃないしなんの勘違いだよ?
実行時型情報、動的生成の基本的な説明をしてるだけ。例えは例え。
COMがそれをサポートしてるから他のアプリからどんなオブジェクトでもコピーして使える。
おまえが実行時型情報、動的生成という概念を知らないだけじゃないの?
COMはタイプライブラリインポータで型読んでるから使えンだろうがよ
それをサポートするって言うんだよ。
それを型を知らないとは言わないと思うな〜 タイプライブラリに書いてあるのはインターフェースだよ? それを読み込んで型を知らないって言うのかな〜
static void Main(string[] args) これ変数だから、argsじゃなくても良いんでしょ? なんで"args"なの? 教えてくださいな。
>>86 引数を英語にしてくださいな。
C言語系は省略の美学が多少有るんだよな。
どの言語も同じだろ
>>85 アプリをビルドをしたときに知らなくても、あるいは、実行時まで知らなくても、
必要なときに型を知る方法があることを実行時型情報をサポートしてると言う。
要はインスタンスのvoidポインタだけあればその型情報を取得できるということだ。
そして実行時に知った型でnewできることを動的生成という。
で、COMやc++、c#はそれらをサポートしてる。初心者用説明オワリ。
質問者ですけど。stringから生成した型でさらに宣言をしないといけないんですよ。 だから構造体でType型を返し、そrをType型に入れて宣言してみたんだけど error CS0118: `scriptname.TypeTeigi' is a `field' but a `type' was expected とか出てる。 すごく単純なことをやるためにすごく複雑な問題を抱えてしまった。
<T>
参照型の new は全部動的生成じゃね? 動的メモリ確保という意味では。 「動的な何か」の何の部分を省略して会話おかしくなってる感が。 CreateInstance は動的型情報の参照、動的なアセンブリ読み込み。
質問者ですけど。 すいません。設計を見直してみます。
>>93 単にMSがMFCのCObjectの説明のときに動的生成のサポートと言い出した。
当時はc++コンパイラに実行時型情報の機能はなかった。
だから型不明のクラスを実行時にnewできなかった。
それがMFCマクロでクラスを宣言してれば可能になった。
当時と今とで動的にできることも開発者の理解もずいぶん変わってるだろうに。
C言語にはmallocがある。 劇的に変わったのはMFCとCOMから。 当時、Unix勢は口だけでまともに動く実装が一つもなかった。CORBA(笑)みたいな
"string"ではなく string ってどうやって宣言すればいいのでしょうか? 型は何を使えば?
string s;
System.String
visual studioのmonthcalendarコントロールですが、読み込んだ直後は今日の日付が選択状態になってますよね これを解除する方法はありますか? 最初に今日の日付をクリックしてもdatechangedイベントを発生させたいのですが。 代替案でも構わないのでお願いします。
DateSelectedなら当日の日付クリックでも動くよ
初心者がメタ領域の動作させようというのが間違ってる
フォーム上に簡単なヘルプを表示させたいと思っています。 文字列でちょちょっと書きたいだけなのですが、箇条書きを使いたいのでRichTextBoxを使おうと思っています。 表示する文字は固定でいいのでデザイナから入力できればと思ったのですが、リッチテキストを入力する方法が分かりません。 ワードパッドで書いてそれをプロパティウィンドウにコピペ、みたいなことが出来る事を期待してたのですが 試しにTextに放り込んだらただのテキストとして貼りつけられるようで
だせぇ
書式つき文章はデザイナでは流し込めません
イベントハンドラに匿名メソッド使った場合、どうやって削除すればいいの? ほったらかしてもメモリリークしない?
109 :
デフォルトの名無しさん :2012/02/02(木) 23:34:27.45
>>104 WebBrowerでHTMLの方が楽だよ
>>104 リッチテキストファイルをリソースとして持って、フォームのOnLoadとか適当なタイミングで
RichTextBoxに読ませれば良いだけだよ。
LoadFileにはStreamを引数に取るオーバーロードがあるでしょ。
普段全く使われることのないワードパッドが使えるのか。 胸が熱くなるな。
>>108 HogeEventHandler h = (s, e) => 〜;
foo.Hoge += h;
foo.Hoge -= h;
>>108 ずっと起動しっぱなしのアプリケーションならリークといえるだろうけど
プロセス終了すれば問題なし
>>112 ,
>>113 返答ありがとうごさいます
>HogeEventHandler h = (s, e) => 〜;
削除したい場合はやっぱり一度変数に入れなきゃだめ?
イベントにAddされてるイベントハンドラを一括削除とかは無理?
hoo.Hoge = null; で全削除出来た気がする
動的に構造体配列を入れ替えて使うにはどうしたらいいのでしょう?
スワップのこと?
動的厨がまた湧いてるのか 脳みそも湧いてんじゃねーか? 使いまわしはやめろとあれほど皆が。。。。
無知がバレてよほど悔しかったのか。
C#ならインターフェースを定義して、それから派生するクラス通しで入れ替えをやる程度だよな(Compositeパターン) dynamic使えば何でもありだが、外的要因がなければ使うべきじゃない
webカメラの動画をリアルタイムで遠隔監視したいのですが方法としてはどのようなものが挙げられるでしょうか。
>>120 単純なアプリしか扱わない初心者スレではそれで十分だな。
VSみたいなの作ろうとしたら無理だけどな。 ネットワーク系ゲームも種類によっては無理だな。
機能を後で拡張できるかできないかってことだろ。 指定のインタフェースしかサポートしませんってのが一番楽チン。
public System.Net.CookieContainer cContainer = new System.Net.CookieContainer();
cContainer.Add(new Uri("
http://www.google.com/ "), new Cookie("key","val"));
これでwww.google.comにkey=valのクッキーが送信されるのは出来るのですが
Set-Cookie: key=val; expires=Sun, 04-Mar-2012 06:02:02 GMT; path=/; domain=.google.com
みたいに、*.google.comに対して発行されたクッキーを指定するにはどうしたらよいのでしょうか
cContainer.Add(new Uri(".google.com"), new Cookie("key","val"));
では、new Uriが無効なuriだとエラーが出てしまいます。
Cookieのコンストラクタで指定する AddのときはCookieだけ渡す
すべて動的にとか頭くるってるとしか思えない いや、実現できないというわけではなくてだな・・・
おまえはnewしないのか。 .netは馬鹿でもnewできるようにカベコレついてるのに。
社員[] 社員の集合1 = new 社員[1000]; 社員のメンバにクラス所属企業があるとき 所属企業のインスタンス、A社がB社に吸収されるとして B社.吸収(A社); のコマンドだけで A者に所属する社員らの所属企業が合併先に更新されるにはA社がメンバとして 社員の名簿をもってないとだめですよね?
社員把握してない企業って……
あー書いてて思いつきましたが class 会社{ bool 現存orNOT = false; 会社 吸収先 = null; } ってしといて吸収されたら吸収先に吸収者を代入 社員が所属企業クラスにアクセスするとき プロパティで現存企業に届くまでアクセスするようにしとけば 一応企業に名簿がなくても一応出来ますね n回吸収されるとn回タライ回しループをたどることになりますが というわけでわかりましたありがとうがざいました
配列にすんなよ
わかったならよろしい
134 :
デフォルトの名無しさん :2012/02/03(金) 16:05:58.53
>>133 ,-、 ,.-、
./:::::\ /::::::ヽ
/::::::::::::;ゝ--──-- 、._/::::::::::::::|
/,.-‐''"´ \:::::::::::|
/ ヽ、::::|
/ ヽ|
l l
.| ● | んーとね・・
l , , , ● l
` 、 (_人__丿 、、、 /
`ー 、__ /
/`'''ー‐‐──‐‐‐┬'''""´
,-、 ,.-、
./:::::\ /::::::ヽ
/::::::::::::;ゝ--──-- 、._/::::::::::::::|
/,.-‐''"´ \:::::::::::|
/ ヽ、::::|
/ ● ヽ|
l , , , ● l
.| (_人__丿 、、、 | わかんない
l l
` 、 /
`ー 、__ /
/`'''ー‐‐──‐‐‐┬'''""´
かわいい
社員だが、社長の名前素で忘れてたコトなら何度でも。だって社長ってしか言わないモン。
社長は覚えてるけど専務の名前は忘れがち
全員島工作でいいだろ
取締役会で島耕作がずらっと並んでる所想像してワロタ
構造体を型として別の構造体の中で宣言するときの型に使えるのでしょうか?
intもdoubleも構造体です
あるメソッド内だけガーベッジコレクトしたいんですが 可能でしょうか? GC.Collectはでかすぎて
他のオブジェクトのデリゲートを保持して、 あとからデリゲートの削除ができませんか? 参照変数の参照とかがあるといいんですが… ↓こんな感じで。 class C { ref Action a; public void Set(){Console.WriteLine("hoge");} public void F(ref Action _a){ _a += F; a = _a; } public void Kill(){ a -= F; } }
ref厨きたあああああ
>>147 それ以前にc#の本開いてオブジェクトってどうやって扱うか勉強したほうがいいぞ
ここで頓珍漢な質問繰り返さずに本嫁
一体なんだこれは…
151 :
147 :2012/02/03(金) 21:23:53.55
優しく教えてくれると信じてたのに…(´・ω・`) 別に ref を使いたいんじゃなくで、デリケートの外す方法がさえわかればオーケイです。
cやc++から来たんだろ c++脳… 引数の & aを ref aってやってんだろ
いやそれ以前にやりたいことが見えん コード見直せ
c#は中途半端にc++パクリまくったから読むのに苦労するぜ。
c#はc++とは遠い親戚でパクリ元じゃない Delphiはどちらかというとc++よりだ c#はjavaをパクったんだよ
>>156 無いよ
addやremove使って自前のlistにでも入れといて
listクリアしたらいい
>>156 何が聞きたいのかよく分からんけど、
イベントに登録されたデリゲードを、そのイベントをメンバに持つクラスの
外側から全削除できないのが不便だとか思ってるのなら、あんたは立派なダメグラマだなw
-=はでデリゲート削除できたろ。
そんな事よりなんかすげえ面白いコントロールCode Projectで見つけてこいよ!
>>159 イベントに設定した匿名メソッドを削除するときのためにわざわざ
変数にとっておくのがめんどくさいんだよね
外側から全削除というか削除時にイベントの中身を気にしたくないだけ
162 :
161 :2012/02/03(金) 22:00:49.93
当たり前だけど、匿名メソッドが属してるインスタンスより、 寿命が短いインスタンスのイベントに匿名メソッドを設定したなら、気にしなくても平気だよ using(Dialog d = new Dialog()) { d.HogeHugaing += (s,e) => {}; d.ShowDialog(); } dをGCできるか否か決めるとき、dはデリゲートを参照しているが逆は参照していない
164 :
147 :2012/02/03(金) 22:08:06.87
>>161 わたしがやりたかったのもまさにそういうことです。
仕方がないので、デリゲートを削除する匿名メソッド作って、イベントハンドラ持ってるオブジェクトにでも持たせておくことにします。
自分が管理している外からイベント設定されるなら 全削除なんて恐ろしくてできない
WeakEventパターンが生まれた理由がまさにそれが背景で 自分より寿命が長いインスタンスに対してイベントを設定すると、インスタンスの寿命がそいつに引っ張られるのね 逆はない
正直なんでイベント消したいのかわからない。基本放置でいいだろ。
そして油断してリークするんですね分かります。
リークしても気にしない
HogeHugaing
>>169 リークするのはイベントにデリゲートを握られている時であって逆ではないよ。
>>156 の人の話とかみ合ってないでしょ?
HogeHugaed
application.doevents()をしていてもウィンドウのタイトルバーを マウスダウンしていると処理が止まってしまうのはなぜでしょうか?
>>166 そーいうのちゃんとあるのね。知らなかったわ。
>>175 全然便利とも分かりやすいとも思えないけどねw
むしろ罰ゲーム的だなあれ。
あんなの実装するぐらいならちゃんと自分で管理した方が100倍ましに思える。
C#の構造体の要素に固定長ではない配列を含める事は可能でしょうか?
修正します。 × 要素に ○ メンバに
固定長でない配列ってなに?
>>179 要素数を入れれば入れるだけ伸びていく長さを指定してない配列です。
動的配列は参照なので無理じゃないか?ドウなんだろう。
Cでいうこれだろう struct data { int a; char *b; } 意味ねえから止めろ 素直にリスト使え マーシャリングは茨の道だ
ジグだかジャグだかって配列なかったっけ?
>>181-182 ありがとうございます。
コンストラクタの中でnewしたら目的の処理に到達しました。
含めるだけなら可能。って言えば済んだ話か・・・。Orz
入れれば入れるほど伸びていく配列なんてあったっけ。Generic?
List<T>かな?
これ、俺が悪いなw 入れれば入れるほどってのは、初期化後の操作ではなくて、初期化の要素数の話でした。すいません。
コラァーッ
192 :
デフォルトの名無しさん :2012/02/04(土) 06:35:44.28
>>191 あたしが忘れられないsexは、やっぱりお互いが激しく求めあった夜。
どちらか一方がテンションかかるようなsexじゃなく
互いを求め合って
欲しくて、欲しくて
お互い一度も目もそらさない…
感じるあたしを見下ろす彼の目が切なくて
眉間にシワを寄せながら揺れる肩幅が愛しくて、引き寄せようと手を伸ばしたら
両手で頭を捕まれながらキス、キス、キス
互いに舌を絡ませながら果てました。
お互いのタイミングと感情が交わったときの激しいsexは、我を忘れる
194 :
デフォルトの名無しさん :2012/02/04(土) 09:46:57.58
>>193 ↑そして最後はこうやって
子供みたい逆切れしたりするのも定型。
ほんと、男って虚勢張ってても、中身は単純で馬鹿に生き物。
何を言ったところで、
結局女がいないと
自分の遺伝子を残すことさえできないという
馬鹿で哀れな生き物。
メッセージボックスを表示したらそのウインドウのハンドルをIntPtr型に定義しているのですが、 この値を元に動的にそのウインドウのイベントを定義することは出来るでしょうか? メッセージボックスが他のウインドウに隠れたら閉じるようにしたいので Deactivate イベントを定義したいです。
動的入りました〜
var form = Control.FromHandle( hwnd ) as Form; if( form != null ) { form.Deactivate += ... } ********** ただし多重にイベントを登録しちゃたりしても知らない
単にハンドルをFormか何かに変換できませんかと聞けばいいのに 「動的」で全部片付けるなよ 馬鹿の一つ覚えでそれしか知らんのかも知れんが
その発想ができるようになることを上達と言うんではないですかね。 プログラマレベル2さん。
つまらない単語で琴線触れすぎだろ どんだけニューワードなんだ
>>195 型を拡張しようとかアホなことを考えずに普通に委譲でやるだけでしょ。
NativeWindowから派生するとかしてウィンドウメッセージを拾って処理する
クラスを別に作る。
なんかこの間から動的って言葉を誤解してる人多いよな。
だから変数の型が動的に決まるってことはあっても、型のメンバーや型そのものを
動的に作るなんてできるかってw
ll言語だと適当なオブジェクトに勝手プロパティ付けられるじゃん その延長で考えてんでしょ明らかに
>>201 型そのものは動的に作れるよ
知らない人が多いけど
リフレクションに〜ビルダーって専用クラスがいっぱいあって動的にアセンブリ作れる
保存も実行もできる
クラスの元作ってコンストラクタビルダーでコンストラクター作って
メソッド作って…ってやってけば出来るよ
けど今までの質問者はそんな質問してないと思う
言葉を知らないだけっぽい
C#がPerl化してきた
リメンバー perl馬鹿
C#を選択したことが間違い
俺のPCだとちゃんと60FPSで動きますよん
行番号BASIC臭のするコードだな
Form1_Shownから処理戻さないのはどうかなーとか Invalidateで毎回前面更新するのはなーとは思うけど 一応は動くはずだ 画面小さくしても同じようにスムーズに動かないならそれが限界だろう
>>206 イベント駆動モデルを把握して、システムに任せれるところは任せましょう。
Application.Idleで空白時間を使った処理を登録できるので、描画以外の計算はそこでやったほうがいいよ。
Application.Idleについて勉強してみます。 winformは無謀ですかね。最初からXNAに挑戦すべきか・・・悩みます。
構造体配列をメンバに持つ構造体はどうやって作ればいのでしょうか?
217 :
デフォルトの名無しさん :2012/02/04(土) 19:47:11.25
App.configに配列を持つにはどのようなxmlを記述すればいいのでしょうか?
セキュリティソフト作りたいんですけどどうすればいいですか?
>>218 とりあえず、どのセキュリティかによるけど、
ファイル読めるようになるか、ネットワークのデータストリーム読めるようになるか、OSの専門家になるか・・・。
220 :
デフォルトの名無しさん :2012/02/04(土) 20:03:05.46
>>218 ClamAVの検出エンジンを移植してみる
コア部分は標準入力からファイルを投げ込んで結果を返すだけだから気合いさえあれば問題ない。
識別子が求められてるところではとりあえずアンダースコアつけとけばいいですかね?
>>215 struct AHO
{
...
}
struct KUSO
{
public AHO[] baka;
}
そんなに俺はダメなのか。 落ち込むわ。
Cから来た人でよく分かってない人はstruct使うなclass使えと言いたい
>>222 それコンストラクタの書き方も教えてお願い。
こんな簡単な事もわからないんだ。
面倒くせえから「C言語で」コードかけよ 直してやる
セキュリティソフトつくるならやっぱドライバ書けないとな
構造体に初期値を設定できませんかと来るぞ クラス使えボケ
>構造体のインスタンス フィールドの宣言には、変数初期化子を含めることはできません
なんで言語によって構造体の定義がバラバラなんだよ。 後出し言語は前にならえよ。
未だにintのサイズすらバイト規定してない言語に習ってたまるかゴミが
Javaと同様、.netはそのゴミ言語で書かれてるというオチなんじゃないのか?
オチてるかなあ?
子供が優秀で良かったですねってことじゃねえのww
親を抜いてないのに、親を老害呼ばわり。
現実を見ていませんねお互いに
structが世に出たのはalgolが先だったと思うけど Cのstructの定義はalgolの定義と同じか? 後出し言語なんだろう?
C系でってことだろアスペ。 調子のんなよ。
名前からして丸パクリのくせに偉そうだな。 c#はc++をギュッと圧縮して2文字にしただけ。 どうせヘジが字が下手糞で、c++書いつもりがc#になったみたいなとかだろ。
もはや難癖だな
CollectionViewSource使ってるんだけど、 こいつが生成するListCollectionViewに XAML上でCustomSortを設定するにはどうすればいいの?
JavaからパクったんだからJava#にしろよ。 それともDelphi#のほうがいいか?
お前が死ぬほうが断然いいかな
このスレではJavaを馬鹿にすると市ねと言われるから要注意な。
249 :
245 :2012/02/04(土) 23:17:29.25
WPFスレがあるみたいなのでそっちに行きます
Java使いがなだれ込んでんでしょ?C#に
JavaもC++からパクったんだからC++++にしろよ。
>>251 いやいやJavaはC++よりシンプルに作りたかったんだから、
C++にこれ以上たしたらそれこそ目も当てられない
C++--か
c#は失敗作品と言っていい。JavaとVBを駆逐できなかったからな。
javaはc++パクってないよw c++を悪い見本として作られたんだよ
>>254 以上、VB 厨の視点でお送りしました。
構造体の定義がムカつく! 先達に揃えろ! ↓ Cだって先達と違うだろ ↓ なんだよJavaのパクリの癖に! 名前変えろや ↓ ^^;
初心者スレらしくてイイネ・
いやそういうのはふらっとじゃない方でやっていただきたい
ミスターサタンとかあるでしょ
264 :
デフォルトの名無しさん :2012/02/05(日) 13:24:23.02
ブラウザ使って手動で同じことやってみ
subject.txtのURLが間違ってるぞ。
URLはあってると思うけど sec2chd//subject.txt スラッシュ2個になっていることを言っているのなら パス区切り文字は何個重ねても大丈夫 Windowsのパスも同じ仕様 C:\\\\\\\\\\\\\\\\\\\\WINDOWSってやっても動く
あ、言っておくけどExplorerはチェックしてるから駄目だぜ Path扱うAPIやクラスの話ね
初心者がwhile (true)を使う場合 99%制御構造を間違ってる
単純な集合論だろう 1回目は 2回目生存スレ+2回目DAT落ちスレ 2回目は 新スレ+2回目生存スレ なんだから、DAT落ちのスレだけ出てしまうということは、引き算が逆
sr.Close(); st.Close(); ↑無駄
ああ読みづらいコードだ 突っ込みどころ多すぎて死ぬ 特に重要なところ 変数にちゃんと名前つけようね 特に f これは判定結果だよね 判定結果にまともに名前を付けられない様じゃ 何をしてるかよくわかってない それと string[] henkou ってstring入れる必要あるのか? boolではダメなのか
C#でデーモン(windowsサービス?)を組むなら、 Visual C# 2010の新規プロジェクトで、どのテンプレートを 選択するのが良いでしょうか?
expには無いはず
276 :
273 :2012/02/05(日) 17:09:41.05
たしかにexpにはなさそうですね。 ちなみに作ろうとしているものは、 定期的にウェブサイトのCSVデータをチェックするという ものですが、そもそもサービスとして登録すること自体 適当なんでしょうか? 現在もっと適当な方法が存在するなら教えてください。
チェックした結果をどうするつもり?
状況により適当な方法が存在しそうな気はするが 状況が分からないからcron使えるサーバーにでも置いとけよという結論に至る
たとえば、チェックを行うのは別のサーバーかそれとも普通のクライアントPCか クライアントPCは電源を落とすか、共用か、別ユーザーがログインしているときもチェックする必要はあるか云々
まあなくてもつくれるけどな つかくぐれ マジで
281 :
273 :2012/02/05(日) 17:29:05.40
ざっくり環境を記します。 【処理内容】 クライアントPCより一日一回、サーバ上の CSVデータを取得し、前日のデータとの差分をとる。 差分をどう処理するかは未定。 【クライアントPC】 windows7 ってか自分のPCです。 電源はあまり落としませんが、スリープにはします。 【サーバ】 ・windowsサーバ2008 (勤め先の会社のサーバです) ・CSVはウェブで取得可能 以上です。
タスクスケジューラにでも登録すれば十分じゃないの?これ…
いやぁせっかくクライアントなんだからタスクトレイ常駐がいいよ。
こういうしょっぱい物をサービス化するメリットが見当たらないw
286 :
273 :2012/02/05(日) 17:40:31.48
タスクトレイ常駐でよさそうですね ありがとうございました。
いやいや常駐するもんでもないでしょw
288 :
273 :2012/02/05(日) 17:42:08.05
全力で常駐させます
おうよ
一日に一度終業時間にチャイムを鳴らすとする そのために自作プログラムを常駐させる奴はいないだろう
常駐させてもいいと思う 自己満足だし 自作のアイコンがタスクトレイにあるのはいいものだ
292 :
273 :2012/02/05(日) 17:51:14.41
私はそのプログラムに関して、 まったく意識の外に置きたいのです。 忘れるくらいに。 一日一回決まった時間にチャイムを鳴らすのは大仕事ですよ
比較した結果何かしたいんだろう。 変化があったらタスクトレイアイコンが点滅したり バルーンが出たら最高!!萌える!!
個人的にはバルーンより自作フォームがスライドアップしてくる方が萌えると 思うぞ
チャイム鳴らすのはいいが、ログアウト状態だとサウンドリソースにアクセスできないこともあるw
296 :
273 :2012/02/05(日) 18:08:06.65
今時バルーンとか、GUIのエフェクトに感動しませんよ 結果は適当に自分のgmailアカウントにでも送って終了です。
>>297 エロサイトは関係ないと思うけどw
最近のそれなりに金が掛かってるソフトの大半はそういう実装になってるよ
>>298 いや俺もデルファイやってたころにそれフリーソフトに実装してたけどさ
最近エロサイトでよく見るから嫌
ニュッ ってな
ニュルン
ニュルリン
ニュルリンのカベ
何ここ…
エロサイトです
角栓様物質スレです
こんなにスレ止まったのは久しぶり
なぜ止まった?HALT命令はどこで出たんだ?
すみません、詳しいかた質問いいですか アプリ上のテキストボックスにコメントを記入して、ボタンを押すと WEBビューでTwitterのページにアクセスして、自動でコメント書き込み→投稿ボタンを押す事って可能ですか? 可能ならそれをなしうるクラスメソッドもしくは技術を教えて頂けませんでしょうか?
というか、Twitter API使った方がいいと思う。。
誰かがタスクトレイに常駐したから
>>310 TwitterってAPI提供してたんかwww
ありがとうございます、無駄に自動ログインどうしようか悩んでたwww
twitter OAuth でググれ
データベースから関数名を取得して適宜呼び出して実行したいのですが、関数名を入れて呼び出せる変数の型で困っています。 何をつかえばいいのでしょうか?
315 :
デフォルトの名無しさん :2012/02/07(火) 18:11:15.92
BackgroundWorkerを継承したクラスがデザイナのツールボックスに表示されないのはなぜだろう。
BackgroundWorkerって使ったことないけどデザイナに表示されてる?
コンポーネントだかに
318 :
デフォルトの名無しさん :2012/02/07(火) 18:39:41.44
継承した自作クラスは大体ツールボックスの上に歯車のアイコンで でてるはずなんだがな
319 :
デフォルトの名無しさん :2012/02/07(火) 18:48:07.46
class WB : BackgroundWorker, IComponent ってやったら表示された。
質問者が解決したのかどうか分かりづらい流れだな…
idほいいお
ひょっとして関数名をいれられる型はないの?
どういうコードが書きたいのかコンパイル通らなくていいから思うままに書きなさい 同じ言葉を持ち合わせていない人には通じないんで
デリゲート?
ラムダ式か。
デリゲートだと思うけど何が飛び出すか分からんww
デリゲートをDBに入れんのか?
stringで受け取ってswitchしろよ
データベースにデリゲートって入れれるの?
>>332 本当になにもわからないんだけど、
何らかの型の状態でデータベースにメソッド名だけいれといて、
取り出して実行するメソッドの指定に使うような事ができないかと。
>>332 メモリのアドレスを直接扱うC/C++のコールバックと違って
C#の場合はできそうな気もするけどもうちょっと違う方法で対処できそうなんだよねw
リフレクション使えばできないことはないけど 酷い設計ではあるよね DB動き出したらもうリファクタリングできないぜ
>>333 デリゲートを動的にDBに記録されてる情報を元にセットするだけなら
セット候補デリゲートを配列に入れておいてDBからインデックスだけもってくるとか
配列ではなくswitch分で判断して・・・とかさ
>>334 データをなるべく一つにまとめておきたいんですよ。
他にも山ほどあるので一つのために散らかると後が大変。
>>335 リファクタリングとかリフレクションを知らない。
デリゲートすら知らなかった。
>>336 それやるとデータベースの分岐が増えて管理がなあ。
ちなみに私がデータベースと読んでいるのは構造体の配列です。
コボラーかよ
なんか話を聞いてると実はもっとシンプルにできるんだけど よくわかってないのでややこしく作ってるように見えてきた
>>339 COBOLはいろいろ変らしいね。
>>340 だと思う。今の形もほとんどの要素がバラバラに存在してたのを、
構造体の使い方を覚えてやっとまとめた。
できた時はガッツポーズ(としがバラる)
>>341 イエス!
君らがデータベースと読んでるのは専用の仕組みの事だろうけど、
俺は構造体をnewして参照させてる。
switchかdictionaryにデリゲートいれとけよ
ポリモーフィズムは?
switch書くのが面倒くさくなるくらいの数クラス継承させる気か
>>338 データベース関数だからLINQ to うんちゃらかなぁ、
そっち方面よく知らないんだよなあとかいろいろ調べた俺涙目
>>343 参考にします。
dictionaryはたぶん遅いからダメだな。
>>344 俺にオブジェクト指向はまだムリ。
>>345 20個ちかい要素を持つ245個のデータが必要です。
>>346 LINQってなんなんだろうねー。
説明読んでもわかんないんだよね。
Dictionaryが遅いなんて計測してから言いやがれクソが
たぶんですし
構造体配列にメソッド名を文字列型でいれる。 各メソッドはリフレクションで呼び出す。 これでいいじゃないか。
何だか話がねじれてるけど > データベースから関数名を取得して適宜呼び出して実行したい > 20個ちかい要素を持つ245個のデータが必要です
>>351 確かに10倍遅い。しかし、0.0001秒が0.001秒になったところで
なんだというのだ。それよりメンテナンスしやすい方法を選べ。
そもそも何のデータで関数(?)で何をしたいのかわからない
10倍になって0.1msが1msになったとして、その部分が繰り返される 処理ならでかいが、単発なら無視してかまわんな
そもそもDB使いながらDictionaryの速度を気にする理由がさっぱりわからん 彼が何のアプリを作るか位開示しないと話進まないよな
いや、興味ないから別にいいよ
おもしろい設計だ 俺はやろうとはおもわんけど
例えばLabelを継承したコントロールを画面に貼って プロパティをいじってもデザイナ上で反映されません ビルドすれば反映されるのですが、出来ればプロパティを 変更する度にデザイナ上で変化して欲しいです 何か属性などを付けなければいけないのでしょうか?
派生先で新しく作ったプロパティの場合、 値を変更するたびに自分で画面更新しないといけない時もある。
プログラムをずっと起動しっぱなしにして 12:00になったら特定の処理を行いたいのですがこれはどう組めばよいのでしょうか? 単純に // -------------------- while(1){ //100ミリ秒ごとに時間をチェックして、時間になったらbreak; } //行いたい処理 // -------------------- ってやるしかないのでしょうか?もっと便利な方法はございませんか?
363 :
362 :2012/02/08(水) 16:24:13.53
用途はお昼を知らせるアラームです
俺ならタスクスケジューラー使う
>>362 1秒おきくらいにして12:00過ぎたよフラグを使う
置き時計を買った方が安い
フレームがほとんどない電波時計など存在しない。
c#におけるアルゴリズムの知識を増やしたい。 どうすればいい?
>>372 アルゴリズムというのは普遍なものだと思うんだけど。
あえて言うなら、どういう分野が知りたいの?
アルゴリズムってかっこいいよね 俺できるんです ドヤ顔
ぐぐってもまず身につかない。専門書で真剣に一通り学んだほうがいいな。
まずはデザインパターンでもどうか
デザインパターンは最後でいい 今やっても意味がよくわかないはず
質問者が二人しかいないようだ
>>362 c#ではwhileの()内は bool値だけ
c++からいい加減に離れとけ
デザインパターンは一番最後だな。 先にやると害でしかない。
>>372 なんのアルゴリズムだよ。アルゴリズムったらソートと探索だけど、
C#ってそんなめんどくさい事はライブラリにやらせてビジネス
ロジックに集中しましょうって言語だろ。意味わからんわ。
無駄とは言わんが、何がしたいのかさっぱり見えてこない。
382 :
デフォルトの名無しさん :2012/02/08(水) 21:27:01.60
ライブラリに任せてても知識は絶対必要。 実装は下請けに丸投げするからと コーディングのできない奴が設計したシステムってまじ糞なのを見れば明らか。
383 :
デフォルトの名無しさん :2012/02/08(水) 21:29:37.62
>>382 その通りだが、世間様はそう甘くないから辛いよな
そのしわ寄せが全部下っ端に来る
夢見るおじさんが多いよねw だから日本におけるソフト関連は最悪w
言語スレで扱う話じゃないな
Array.Sortは安定かそうでないかは知っているべきことに入るか否か
まだ他社のやつが設計したなら、それでもまだなんとかぐっと堪えて我慢できる。 同じ会社の営業だの上司だのがそう言うコトしてドヤ顔されるとなぁ。。。
あえてThreadを使うべき時は?
フォアグラウンドスレッドが欲しいとき 優先度を弄りたいとき 占有時間が長いとき
>>386 安定なソートかどうかはリファレンスに書いてるんだから
むしろ知ってなきゃ駄目なのは安定なソートとそうじゃないソートがあるってことだろ
リファレンスを読むって前提も怪しい 現に読んでない質問の多さよ
昔は英語で拒否反応出る奴が多かったが、 今は3行以上の日本語で拒否反応が出るらしい。
MSDN 語なら最初のうちはまあ
普通にタイマー使えば済む話じゃないか?w 時刻チェックするのにループ回すなんてCPU時間が無駄すぎる
>>362 おれもタイマーかな
精度が問題にされる事も多いけど、ちょっと手前で起きてくれば補正できるしね
顧客(ユーザー)が本当に必要なことを検討できてないから 12:00に起動するタスクに100msとかいうトンチキな精度を求めたりする
タスクを分離してタスクスケジューラから起動するようにして 精度の問題はWindowsに責任転嫁する
リビルドするたびに exe のバイナリが変更されてしまいます。 ソースコードに変更がない場合は同じバイナリが生成されるようにしたいのですが、 どのようにしたらよいでしょうか?
コンパイル日時だか埋め込んでるんだっけ
401 :
395 :2012/02/08(水) 22:36:37.48
>>397 そうしたいけどAPIでハードル高めかと思って。
つかVISTA以降のタスクスケジューラ使い方わからんw
CreateWaitableTimerって.NET Frameworkにラップされてないんだっけ?
うわ 逆コンパイルできてソース丸見えじゃないか おわた^0^3
中間言語系言語は逆コンパイルでガッツリソース復元されるからね。。。 Javaしかり
逆コンパイルと逆アセンブルの区別も付かない奴が何か言ってるなあ
>>403 何をいまさら…
.net 難読化 あたりでググレよ。
いやいや、C#は普通に逆コンパイルできてしまうでしょ
ソース見えて困る様なモンを作ってるんでも無い限り、気にしなくていいよ そんな事言ってたら、HTML+JavaScriptで飯喰ってる奴等とかどうすんだw
VM上で走る言語は、逆コンパイルで変数名レベルまで見れるからなぁ 別にいいんだけどさ
そういうのはサポートとセットで売ってるからねえ ボラクルみたいに
そうブーメラン
413 :
デフォルトの名無しさん :2012/02/08(水) 23:09:46.39
安心しろ。 おまえらの書くコードは逆アセしても理解できないから。
ソース見えて困る様なモンっていうと 暗号関係は公開されてないとむしろ信頼性が担保できないし 特許関係はそもそも公知されるし 残るは特許取得していない秘匿技術あたり そんな大層なもの持ってる?
えっ変数名まで丸見えなの!?
俺のPoeticなコメントもですか?
私的/詩的(private/poetic)違い
日本人、頭が花畑スギアルネ 某国は次の日にコピーアップアルヨ
>>414 まあ、心理的な要因が大きいねwその意味では被害妄想的。
実害がある場合は確かに少ないと思う。
絶対反発する奴がでると思うけど、最近のGoogleをめぐるプライバシー騒動も似たようなもの。
プライバシーなんてバブル時代から散々騒がれて、その弊害もいろいろ言われてるのに
まだ免疫が出来てない人が多いんだね。
企業が欲しいのは統計データであって、俺やあんた個人の属性じゃないのにw
Androidなどは似たようなソフトが速攻で出てくるんだとか いろいろ仕込まれたバージョンで
>>420 Androidはリフレクション対応じゃないよ。
突っ込もうかと思って止めたんだが、要するに
>>410 は間違い。
本気にする奴がいるかもしれないからやめろ
Android 逆コンパイル でググったらわんさか出てくる出てくる…
>>414 > ソース見えて困る様なモンっていうと
GPL 違反がばれるとかかな?
逆コンパイルしたからってそれが可読的かどうかは別問題だよ。 っていうか、そんな荒行に耐えられるような猛者なら自分で書いた方が効率いいだろw 被害妄想激しすぎるんだよな。
>>421 コンパイル時の最適化による
メンバ変数などは結構変数名出てくることが多い
読めなくてもいいんだよ ちょこっと変更してアップするだけなんだから
C#だとlinqませーに成ってきたからlinq覚えろ
計算結果が0.001とかになる計算をしようとすると値が0.0になってしまってその後で100をかけて プログレスバーに表示したいのですがずっと0のままなのですが どういう手順でやれば良いでしょうか?
doubleにすればいい
>>430 ・精度は何桁まで必要か
・どんな計算をして、その結果になったか
この辺りをちゃんと書け
これを試してみましたがf,gともに0です long a = 10700518; long b = 75310; double c=0; float d=0; int f,g; c = b / a; d = b / a; f = Convert.ToInt32(c * 100); g = Convert.ToInt32(d * 100); progressBar1.Value = f; progressBar1.Value = g;
int / int は int 型になるので小数点以下が切り捨てられる。 int 型の変数 value1, value2 に対して、 double result = value1 / value2; は、演算子の優先順位より、value1 / value2 が先に実行されるため、 小数点以下が切り捨た値が result に入る。 (double)value1 とすればいい。 long も同じ。
いろいろ酷いねw
おお?できた。ありがとう(^ー^)
のんびりいこうや
とりあえずIDください
たすけてください!! 以下のようなコードを書きました。 static void Main(string[] args) { System.IO.FileStream FS = new System.IO.FileStream(@"D:\Music\Artists\Artists\B'z_Issue\B'z The Best Pleasure\ALONE.wav", System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite); System.Media.SoundPlayer SP = new System.Media.SoundPlayer(); System.IO.MemoryStream MS = new System.IO.MemoryStream(); FS.CopyTo(MS); SP.Stream = MS; SP.PlaySync(); return; } このコードでストリームからwavデータを読み込もうと思ったのですが、 filestreamではうまくいくのに、memorystreamを一回噛ませると「ヘッダーが壊れています」になります。 ドウ修正すればいいかご教示くださいませんでしょうか。お願いします。 将来的にはWavMixerをつくろうと思ったのですが、難航してます。
>>440 です。
解決しました。ただ、メモリーストリームのシークポジションが最初になかったからでした。
すれよごしてすみません!!Orz
製作中のコードでも確認した。自分で生成したノイズがちゃんとなった。 ナンテコッタ。/(^o^)\
入力された音の周波数(440KHzなど)を取得したいのですが何のライブラリなどを使えばできますか?
>>443 専用環境がないと440kHzは無理だろ
周波数成分を解析するにはフーリエ変換(高速フーリエ変換FFT)、AR法、MEM法と言った手法があるよ。
wikiによると数GHzまでの超音波が作れるらしいな 普通のマイクじゃ入力できないだろうけど
uwscみたいに指定した座標位置をマウスでクリックさせるのに便利なライブラリは公開されてませんか? win32apiから書くほどスキルもなく・・・
mouse_eventは古いのでSendInputを使用するように
>>446 GHz 帯の音波を出せるスピーカなんてあるのか?
そもそも空気の分子がそんな速く振動できるんだろうか…
フェムト秒パルスレーザー持って来ればGHz級の超音波出せるには出せるけど…
stopwatchクラスってマルチメディアタイマーですか? stopwatchを開始して終了するまでの特定の処理時間を計りたいのですが ベンチマーク
マルチメディアタイマーより優秀なタイマーです
ということは別スレッドでタイマーが動いているってこと?
スレッドがどうのじゃなくて、CPUのクロックカウントを情報源にして差分を取ってるんだよ
インスタンス変数から値を変更できる形式ってクラスくらいですかね? 普通はインスタンス変数にコピーされた値をいじる事になって、 コピー元は変更できませんよね?
用途にもよるけど ref 使えばメソッド内で変更できる
ミュータブルかそうでないかの話ではないの
他の処理を行ってるときに割り込まずに別スレッドで動かすのに適したタイマーってないですか?
どんだけの精度がほしいのよ
・経過時間をリアルタイムに表示したい ・重い処理を行う この条件です
その程度ならどのタイマー使っても変わらん
StopWatch
WindowsはリアルタイムOSではないので、リアルタイムは不可能です。 100ms程度の誤差は仕様として受け入れてください。
ref使うと厨なの?
APIで分解能変更は出来るけどな その程度の処理ならなんでもいいけど普通にストップウォッチでいいんじゃない? Refなんかあんま使いたくないな 勝手に書き換えてしまってたりしたらバグが探しにくくならない?
タイマーはどれも優先度低いので諦めて 1000ミリ秒ぐらいごとにWaitループさせながら進捗表示するのが経験上ベターに思う
あるものは使える・・・別にref使おうがout使おうが勝手だよ. デバッグに支障が出るのはrefのせいじゃない.ref使わなくたってバグ出す奴はだす.
多値を返せないのだから仕方ないわよね Tupleで返す?ご冗談でしょう 毎回結果クラスを定義する?お暇なんですね
460はミリ秒単位のような精度を言ってるんじゃなく、重い処理してると定期的に割り込んでくれないことを言ってんでないか。 Formsのタイマーはメッセージキューが、それ以外のタイマーはスレッドプールが埋め尽くされていると、遅れたり、一気にガガガガガっとイベントが発生ぬるぽ。
long t = 100000; // 1分40秒 long t2 = t - sw.Elapsed; string str = t2.ToString(@"mm:ss"); timer_tickを使って特定の秒tからsw.Elapsedを引いた値t2を分分:秒秒で表示させたいのですが、表示してもmm:ssのまま表示されてしまいます どうやって時間を表示させられますか?
それは書式指定文字列という名前がある その中でも時間書式指定を受け入れる型じゃないと駄目だ TimeSpanとかね
それは書式指定文字列という名前がある その中でも時間書式指定を受け入れる型じゃないと駄目だ そう iTimeSpanならね てのを思いついてニヤリとしてしまった
thread.sleep(1)よりthread.sleep(4)のほうがいいのはなぜですか?
>>473-475 試行錯誤してやってみたんですがずっと00:00のまま表示されてしまいます
TimeSpan t1 = new TimeSpan(100000); // 1分40秒
TimeSpan t2 = new TimeSpan((long)sw.Elapsed.TotalMilliseconds);
TimeSpan t3 = t1.Subtract(t1);
Text = t3.ToString(@"mm\:ss");
おねがいしますアドバイスください
算数すらできないのか。
>>477 >TimeSpan t3 = t1.Subtract(t1);
おい!
初心者スレですし
>>478 ごめんなさい
>>479 ミスです
>>480 現実世界の時刻を利用するというより、1000みたいな数字で書くってやっぱりできないってことでしょうか?
1000で割って60で割った値と余りでいいじゃないか
>>482 ふはははは、タイムスパンのコンストラクタが1つだけだと思っているのかね。
ミリ秒まで指定できるんだぜ?
TimeSpan.FromMilliSecondでもいいぞ!
C#の入門書でいいのあるかな。 独習C#がamazonの評判がいいんだけど、文法に終始しているらしいし。 .NETの本は別に買うべきなの?
文法をちゃんとやって、ネットを調べながら GUI アプリケーションを作ってみる。 文法の本以外は買っても役に立たない。ネットのほうが詳しい。
490 :
デフォルトの名無しさん :2012/02/11(土) 03:17:16.17
>>489 その意見はどうかなあ
初心者は道しるべが欲しいはずだから後で見ると腐った本でも
入門中のモチベーション保つにはいいと思うよ
やりたいことが書いてある方がぜったいいい
文法本といえばCのK&Rを思い出すんだけど
あれは入門書なんだけど入門書じゃない
道しるべなら目次だけでもよさそうだ
入門書は複数読んだらいいと思うよ 1冊読んだら2冊目3冊目と読む時間はだんだん短くなっていく
昨日の先生方のコードを見ながら自分なりにこう書いてみたのですが long t = (215 - 0) * 10000000; Text = new TimeSpan(t).ToString(@"hh\:mm\:ss"); 215以上の数字を指定するとこの捜査はチェックモードでコンパイルしたときにオーバーフローしますってエラーがでてしまいました
続き int t = 215 - 0; Text = new TimeSpan(0,0,t).ToString(@"hh\:mm\:ss"); こうしてみたんですが215のところを200000などの桁の多い数字にすると表示される時間が狂ってしまいます
そのくらい自分で計算すればいいじゃない
マジでプログラマ向いてないわ
こういう奴はプログラムが完成するまでに100年ぐらい必要だなw
ゆとりは算数も出来ないのかよ わろえない
>>496 >>494 に関してはInt32の上限(+2147483648)を超えたからだ
式の型は式内で一番大きい型に合わされる
(215 - 0) * 10000000の数値はどれもInt32なので、Int32を超えるとオーバーフローとなる
どれかにサフィックスを付けてInt64型であると示せばいい
>>496 については
TimeSpan t = new TimeSpan(0,0,200000);
として、デバッガでTimeSpanの中身を見てみろ
「2日と7時間」を書いてあるはずだ
おかしいというのは2日=48時間を見落としているせいではないか
初心者スレですし
ところで、ここのところMSDNの.NET Framework4のデータだけ接続が重くね
504 :
デフォルトの名無しさん :2012/02/11(土) 12:14:14.26
.NET Framework4のリファレンスをローカルで見れるようにしてくれねえかな
表示がちょっと遅いね
>>494 はその型の最大値を超えたからエラーになったのは理解しました
>>496 は難しくて皆さんの行ってる回答が理解できません
じゃあどう表示されてて、どう表示されることを望んでいるか 書いてみろ
いやです
>>504 最低でもVC#Express入れれば入るだしょ
JavaのPropertyみたいに、 設定ファイルから値を読み込む簡単な方法は提供されているの?
C#で書いたコードをJavaに変換できるコンバーターってのないですか? 無料有料問わず
今のヘルプはコピペが出来ないというか やりにくいからダメだね 後は馬鹿が実装したようなインクリメンタルサーチ どうしてこんなもの平気で載せるんだろ
コンテキストメニューに「コピー」がないとかはアレだけど Ctrl+Cでできるし検索は速いし C#でCOMとかP/Invokeいじってる場合でもF1キーでそれなりに見つけてきてくれるし コンテンツ半自動で落としてくれるし Web版は左側のツリーの改悪っぷりが駄目だわ 俯瞰性がないというか
問題 3つの箱の中の1つか当たりです 一つ選べと言われて選んだ後、残り二つの一つを開けてもらい、それがハズレだと認識しました 変えますか変えませんか
端折りすぎ
何を変えんのさ
誤爆にしても酷い文章だな。
Metafileって再生するとかあるけどその辺どうするんだろうw 静止画なども入ってるようだけどw
クラスAのインスタンスをコピーするメソッド public A copy(){} をつくってるんですけど Aのint の即値?のメンバだけでも 漏らさずコピーできる簡単な記法はないですかね
clone
System配下のインターフェースは暗記すべし。
あいくろーにゃぶる
にゃにゃにゃ
>System配下のインターフェースは暗記すべし。 まじすか?! IAppDomainSetup インターフェイス IAsyncResult インターフェイス ICloneable インターフェイス IComparable インターフェイス IComparable ジェネリック インターフェイス IConvertible インターフェイス ICustomFormatter インターフェイス IDisposable インターフェイス IEquatable ジェネリック インターフェイス IFormatProvider インターフェイス IFormattable インターフェイス
C#の標準ライブラリで音をジェネレートしてるんだけど、方形波のレの時にアホになるのはなんでなんだろう・・・。 floatにしてないからかなぁ・・・。 ガクッと力が抜ける・・・。
531 :
530 :2012/02/11(土) 22:55:25.02
かーえーるーのーだいがっしょー
>>489 確かに文法が一番大切だもんな。文法分からないとソース読めないし。
でも文法分かっただけじゃ作れないんだよね。今までスクリプト言語しかやったことないので。
C#の文法書買ってみます。
昔はたくさんソース見れば文法もだいたい解ったんだが LINQとかラムダ式とか、文法わかってもソース追えねぇ
日本人の悪いクセだな。文法なんか適当でいいんだよ。 間違ってたらコンパイラが指摘してくれるし、 変な勘違いしてても、その勘違いは単体テストで発見される。
コンパイルまでしなくともソース読む機会はあると思うの その時に知ってる言語とのシンタックスの対応くらい把握してないとどうにもならんだろ
文法のこまけーこたー別にいい罠
>>530 調性が間違ってるんじゃね?
しらんけど
>>539 そのCSVはちゃんとしたフォーマットがされたCSVなのか?
だったらどちらでもいいけど
個人的にはOleDbは薦めない
もし動作が心配だったら自分で分けたほうがいいかもね
文字列が含まれていたらパースするのが面倒だけど
超初心者ならどちらでも大差ない. 初めて作るプログラムが「10年レベルの互換性、機能追加等のメンテナンス制を重視したいです。」なんてことは無理だから.
>>539 素直に TextFieldParse を使うのがいいと思う
OleDb って Microsoft Text Driver を使う方法と思うけど、自動認識で勝手に型を推論されて
うまくいかない場合がある
>>539 そのCSV自体を自分で作るならCSVやめて\t (tab)区切りにした方がいいよ
splitが非常に楽になる
もちろん文字列内にTABが含まれてないことが前提だけど
早押しイントロクイズゲームが作りたいんですけど クイズを出してから何ミリ秒で回答ボタンを押したか調べる一番制度の良い計測するライブラリってなんですか?
stopwatch
Stopwatchは刻みがマイクロ秒だから全く問題ない
ごめん嘘 100ナノ秒だった
質問する時は要点を最初に全部書けよ >一番制度の良い計測するライブラリは? >↓ >Stopwatch >↓ >10ミリ秒対応がいいけど対応してる? >↓ >してる 明らかに2回目のやり取りいらねえよ
551 :
539 :2012/02/12(日) 13:02:44.65
>>540-543 ありがとうございます! 助かります。
なお、csvはネットに公開されているものです。文字列と数字が含まれていて、
数字部分をフレキシブルにグラフ化したいと思っています。
CSVフォーマットの厳格さ(?)は微妙な気がします。
その2つだとTextFieldParseが素直(=より基礎的で自由度が高い?)で
おすすめなんですね。まずはこれを使って作ってみようと思います。
それで難しそうなら、自分で分けることも考えます。
>>541 初めてのプログラムでメンテナンス性をなんとかするのはやはり普通は難しい
のですね。なんとかがんばってはみますが…。
>>551 CSVは曖昧な部分が多いので人間用。
偉い人にはそれが分からんのです
>>552 他システムとの連携では一番無難だろ
仕様は明確にしておく必要があるけど
カンマよりタブで区切った方が楽だけどね
555 :
デフォルトの名無しさん :2012/02/12(日) 14:32:00.08
>>554 だねえ
テキストとして外部で見る際もあわせやすいし
タブで区切っても改行とかダブルクォーテーションとか考えるとあんまり変わらない
タブで区切るとExcelに直接コピペ出来て便利
>>556 改行はわかるけど、ダブルクォーテーションは格段に楽だと思うけど?
確かにExcelへCSVのコピペは一手間かかるね ファイルを開く場合は逆だけど
なんかタブ区切りテキストに夢見てる人がいるね
所詮はアスキー互換のコードで区切るんだし 改行だろうがタブだろうが問題ない
固定長に1票
XMLに一票
はらたいらに3000点
さ、三択の女王に……
>>561 別にタブ区切りがばら色の夢と言うわけじゃなくて、
カンマ区切りほど悪夢じゃないと言うだけのことだろ。
要素内にカンマを入れたくなるケースと タブを入れたくなるケースの頻度を考えるとタブを選択したい
569 :
デフォルトの名無しさん :2012/02/12(日) 23:32:18.17
>>539 TextFieldParserを使って自力でループして回してDataSetなりを構築していくほうがいい。
OleDbは列数が最大255だったりとかiniファイル作らなきゃいけないとか色々面倒な点がある。
RFC準拠とか厳密にきちんとやりたいならTextFieldParserじゃなくて、パースも自分でね。
C#はハンガリアン記法を全く使わないと思いますが、 なぜインターフェイスだけ I から始める命名規則なのですか?
変数名じゃないから・・・・かな?
>>571 いろんな解釈が可能だけど(例えば、Javaと違ってC#はクラスの継承もインターフェイスの
実装も同じ構文だから、とか)どう解釈しても一貫性がないのは否定しにくいな。
573 :
デフォルトの名無しさん :2012/02/13(月) 00:36:53.05
でもクラスとインターフェイスは区別されてる方が便利。構造体とかenumはそうでもないけど。 一貫性より実利をとったってことじゃないかな。C#っぽい。
構造体は微妙だけど、少なくともインターフェイスにプリフィクス付けた方が都合がよい程度には、 プリフィクスした方がいろいろ都合がいいと思うけど。 っていうと狂信的な人が「インテリセンスガー」って叫ぶのが目に見えるようだけど、 それならインターフェイスだって同じでしょっていう。
>>574 はenumについての話ね。
一番肝心なところがなぜか抜けたw
いやインテリセンスと組み合わせても便利じゃん 「I」って押すだけでフィルタできるし
全然関係ないけど、C#はJavaより圧倒的に使いやすいと個人的に思うけど、 enumについてはJavaの方が便利だね。
その割に使われていないのが現状だがなあ 必読書とまで言われるEffectiveJavaで猛プッシュされているにもかかわらず、だ みんなconst intが大好きらしい
>>578 最近Androidをちょっと齧ってるんだけど、それは激しく感じるね。
普通ここはenum使うでしょ、ってところが全部定数になってる。
Googleの中の人たちが頭悪いのかそれとも俺に理解できない理由があるのか知らんが。
タイプセーフがきつ過ぎてフラグとして使用するのが躊躇われるんじゃねえのかな SDKで列挙型を宣言されてしまうと、継承する側でフラグ増やしたくてもどうもならんもんね
おまえらの書くような糞コードを読まなきゃいけない立場から言わせてもらうと、 名前だけで分かるようにしとけや
MSのTechNetにあるやつじゃないの ZoomItとか言ったか?
ZoomItですね。 でも、これは……プロジェクタと連携してないような…… 他にも似たようなツールがあるんですかね?
違うよ プロジェクタの画面左下に何か貼り付けてあるだろ あれでおっさんのペンをマウス入力に変換すしてるだけ こんなスレでポインティングデバイスの使い方まで説明させるなよ 淀橋でも行ってその辺の店員に聞け
>>579 C#も拡張メソッドでenumにメソッドを生やせるようになって機能面でも、そう劣っちゃいないねえ。
Androidは、(特に初期は)パフォーマンスの問題でintを使うことになったようだね。
Javaのenumがクラスもどきだった故に、そういうことになってしまった。
もしC#と同じで、実態はただのintでしかなければ問題なかったのに。
Javaのenumはちょっとやりすぎで、使い勝手が損なわれてる面もあるような。
なんでふらっとスレでこういう話して 本スレでメッセージボックスが裏にまわるとかどうとかって話してんだよw
591 :
デフォルトの名無しさん :2012/02/13(月) 07:21:01.27
以前のJavaはswitchでenum使えなかったしな。その頃に使わない習慣が広まったのかもね。 定数値に対応させるのも一工夫しないといけないし、気軽に使うには不便だ。高機能なのは分かるけど。
>>589 拡張メソッドは禁止としているところも多いよね?
なんでだろ。
メソッド名被ったら面倒だから?
あえて拡張メソッドにする必要がないからだろうね
>>=ってなんですか?
[60]で配列を作った場合は[0]〜[59]までの要素が入る分とは別に[60]というあまりの領域が作られますか?
0÷0はなんですか?
そこに書いてある説明通りじゃないの? 剰余演算遅いから法を2のべき乗にすると AND演算で簡単に計算できるって
pow2自体はかなり無駄なアルゴリズムっぽいけどw
602 :
デフォルトの名無しさん :2012/02/13(月) 17:13:18.10
循環バッファの説明のためにPow2を使っただけじゃないの? なんか関係ないところに引っかかっていちゃもんつけてる状態になってない?
>>600 いや、そうなんだけどこのやり方で要素数を指定するのってやりにくくないですか?
>>601 一応書いてあるのだろうな。
>>602 いちゃもんでは。意図がよくつかめなかったんですよ。
Pow2はwhile使えばかなり理解しやすく シンプルに書ける気もするが int p=1;//uint なのか? while(p<n)p<<=1; return p; 何だか変な気もするので添削ヨロ
循環バッファの説明のページに書いてあって意図がつかめないとか 理解する気がないだけじゃないの?
循環バッファなんて今じゃめったに使う代物じゃないからね 昔はBASICで使ったりしたなあ
>598 そうです。
>>605 すいません。頭が悪いだけでした・・・
>>606 もう誰かが作ったものを使うだけですか。
>>597 その説明で言うと、60個分だね。0番目を1個目として数えて60個分。
>>609 Listだって昔は自作だったけどC++からテンプレート化されてて
C#でもList<T>じゃん
ほかにも作らなくなったのは結構ある
循環バッファ使う場合はかなり環境が厳しい場合ぐらいだろうね 8ビットBASICでゲーム作っててやむに已まれず使った小学生時代…
シリアルポートの受信に使ってたな。
>>599 二進数とビット演算を勉強すればわかる。
ufcppにPow2改善案を教えてあげなくていいんですか?
いいんですか?って何だよ いいですよ そうしなさい
何で素直に1 << nじゃ駄目なのか意味不明だな
>>614 なんか恥ずかしいお方w
nを越える2のべき乗が素直になると1<<nになんのか 新しい数論が纏められそうな予感
>>618-619 ああ、任意のn以上のもっとも小さい2の乗数を求めてるのかw
全くPow2って機能を表してないなw
適切な解かどうかはともかくとして、
>>617 も意味は合ってんぞ
n=2なら2^2>2、n=3なら2^3>3で
>>621 そのフォローに如何ほどの意味がありましょうか。
>>611 あれ?Listあたりで代用できちゃうんでしょうか?
使ったら重かったので作ってしまいました。
>>612 その話聞かせてくださいよ。
>>614 ようやくわかりました。
頭が悪かったです。
>>621 すいません。ついてけないです。
そもそも16bitマイコンじゃあるまいし、インデックスを循環させるのに 長さを2の乗数にすることが本当のパフォーマンスに貢献するのかね。 なーんか時代錯誤な気がするけど。 俺は組み込みもやってるからそっちでは当たり前に使ってる手法だけどさ
>>625 環境にもよるけどデータ容量の節約や処理の軽減のための努力がハードウェアの進歩でどんどん空しくなっていくよね。
そっち関係の技術は磨かずに他を伸ばしたほうがいいかも。
でc#に糞コードを溢れさせてc#は遅いって言いたいんですね。分かります。
アルゴリズムって今でも新しいものがでてきたりしてるんですかね・
整数の比較がビット演算(AND)より仮に遅いとしても、そんなの全体から見たら 0コンマ何パーセントだろw
それを言うなら0コンマ数パーセントだろ。
631 :
デフォルトの名無しさん :2012/02/13(月) 22:18:05.29
>>629 負荷コストの計算はその幼稚園児みたいな考え方はしない。
>>631 じゃあどんな考え方をするんでしょう。
まあ無理しなさんな
そういう僅かな差がJavaとc++の速度差に現れてると思ってくれていい。 大したことないだろw
The Art of Computer Programmingのサンプルコードにもケチつけそうだな
>>632 仮に遅いとしてとか妄想や仮定を使わず、実測する。
最適化のツール類はVSについてる。
もちろん権威には屈しないよ 無駄なコードには訂正を迫るまで
>>633 言いたくないけど、算数もできない馬鹿なロートルがよくその手の戯言を言うんだよね。
比例計算なんて小学校3年生の内容だぞw
どう積みあがってもX%はX%なんですけど。
よそでやれよそで
>>638 言いたくないけど、数学もできない馬鹿なゆとりがその手の戯言を言うんだよね。
多変量解析なんて大学1年生の内容だぞw
どのように積みあがるかは投機的予測して負荷を確率的に計算するのが最新のトレンドなんですけどw
どう積みあがってもX%はX%って単純すぎるw
なるほど、投機的予測をするコアだと整数の比較のようなありふれた処理が、
論理演算より極端に遅くなる場合があるのかw
世の中進歩してるのか退化してるのかよく分からんな。
もちろん、そんな不思議世界は
>>640 の脳内だけだが。
それ以前に論点はそんなところにはないんだけどね。 全体の1%の部分を仮に10倍高速化に成功したところで、全体とした何%高速になるのか。 そういう話なんだが、昔から馬鹿な奴はこれ不思議と理解しないよね。 特に俺と同じオッサン世代に多くて困るんだこれが
Intelがやってる投機予測って分岐後の先読みのことなんだが。 計算後の結果がどっちに転ぶかカウントしてるだけ。 ハズレたら極端に遅くなるかどうかはもっさりベンチで計測できる。 パイプラインが長いと糞遅くなる。P4のもっさりは有名。
645 :
デフォルトの名無しさん :2012/02/13(月) 22:40:20.45
>>642 そうそう。だからJavaやデザパタ厨、文系が書くコードは遅いんだよね。
どこを最適化していいか全然理解していない。
ARMもCortexA9だかで投機実行取り入れたというのに遅れているな
>>642 元々最適化するときは、ボトルネックのところを改善するから、
ふつうならその全体の1%はボトルネック部分。10倍高速化したらそのまま結果に出るだろう。
スループットが要件満たしていて、速度に問題が出てないのに
必死で最適化する奴はたいてい理系のオナニーだね。
c#3.0以降は、ヘジのオナニー。
ラベルの大きさをフォームデザイナで変更できないのはなぜ? 変更できるようにする方法があったら教えて
AutoSizeプロパティをfalseに
ありがとうー
>>637 ufcppにPow2改善案を教えてあげなくていいんですか?
他人にモノ尋ねる前に実行しろよ使えねえな
実行ファイルがある場所を返してくれる関数手なに? C:\Windows\aaa\bbb.exe だとしたらaaaというもじれつを返してほしい
>>654 実行ファイルの場所を調べて、splitして最後から2番目を返せばいいんじゃね?
てきとーだけど。
Assembly.CodeBase Uri.LocalPath Path.GetDirectoryName Path.GetFileName
657 :
655 :2012/02/14(火) 00:45:41.72
>>656 あらー、やっぱちゃんとした関数あるのね。さすがC#
C#じゃなくて.net frameworkのライブラリな
adoスレから来ました。 以下は転載ですが、よろしくお願いします。(向こうには断りを書いておきました) ******************************************* すみません。質問いいですか? C#でデータベースをdataset(データグリッドビューにバインドして作りました)にして扱っているのですが 訳あって同じ構造の別名テーブルに差し替える必要がでました。 クエリビルダでテーブルを差し替えると列の並びが狂うのですが、なにがおかしいのでしょうか? また、列の並びをそのままに差し替えるいい方法はないでしょうか? よろしくお願いします。
660 :
デフォルトの名無しさん :2012/02/14(火) 21:19:29.73
そんなことよりちょっと聞いてくれよ レンタルビデオ屋に、頭文字Dのビデオ借りに行ったんだけど「か行」探しても全然ないんだよ で、レンタルビデオ屋のアホ店員は 「あたまもじD」 って読んでるんじゃね?と思って「あ行」を確認したらマジで置いてあってびびったwww
661 :
デフォルトの名無しさん :2012/02/14(火) 21:20:00.47
はい、次。
private とかを何もつけないただの void hoge(string hogehoge) みたいなのはどういう種類になりますか?
privateになる(自己レス)
windowsFormでフォームの最大サイズを500,500に設定してあって ウインドウのサイズをマウスで小さくしたあとにタイトルバーをダブルクリックすると その位置のまま500,500になるようにしたいのですがどんな風に書けば良いでしょうか 何もしない状態だとスクリーンの0,0座標に500,500のサイズで表示されてしまいます。
665 :
デフォルトの名無しさん :2012/02/14(火) 23:07:32.74
え
プロパティってなんですか!?
属性
labelの文字をコピー(カーソルで選択状態)できるようにするプロパティってありますか?
LabelじゃなくてTextBox使う
class A { private B _b; public A(B b) { _b = b; _b.A = this; } } class B { public A A { get; set; } } ↑このようなクラスがある場合、 new A(new B()); とすると、AもBもお互いに参照しあっている状態になると思います。 もしかして参照カウントが永遠に0にならない(?)ため、メモリリークしますか?
しない ガベージコレクションは単純な参照カウントとは管理方式が異なる
672 :
デフォルトの名無しさん :2012/02/15(水) 01:58:46.00
やれやれ
マークアンドスイープ+世代GC
>>664 protected override void WndProc( ref Message m )
{
const int WM_NCLBUTTONDBLCLK = 0x00A3;
if( m.Msg == WM_NCLBUTTONDBLCLK )
{
if( this.WindowState != FormWindowState.Maximized )
{
this.Size = new Size( 500, 500 );
return;
}
}
base.WndProc( ref m );
}
若干違う気がす〜る〜
>>664 こうだな!!
private void Form1_Move(object sender, EventArgs e)//ウインドウ移動時。
{
this.MaximizedBounds = new Rectangle(this.Location, this.MaximumSize);
}
なぜ止まったし。
ある暗号キーファイルがないと文字列を複合化できない仕組みってどう作るのですか? keepassみたいなの
>>678 公開キーと秘密キーを作ってふたつの正当性が正しいものだけが複合できるようなアルゴリズムを考える。
VC#で作ったソースコードがどのバージョンの.NETで動くか調べる方法ってありませんか? 4.0としてコードを書いてるんですけど、3.5以上の機能を使わなければ2.0でも動くと思うんですが どれが3.5以上の機能なのかわからないので確認する方法教えてください
>>680 VSのメニューのプロジェクトの一番下にある○○のプロバティーを選択して
プロジェクトのプロバティーを見る
そして対象のフレームワークを選択してコンパイルすれば判ると思うよ
Windowsで作ったC#プログラムはmacやlinuxでmonoライブラリ?が入っていればそのまま動かせるのですか? それともmacやlinuxでコンパイルしなおさないと動かせませんか?
コンパイルし直す必要はないけど一部未対応の部分がある 事前にMoMAで確認するとよろし
684 :
デフォルトの名無しさん :2012/02/16(木) 13:58:29.46
ListViewを継承したカスタムコントロールを作っているのですが アイテムをドラッグアンドドロップして任意の位置に配置したいのですが ドロップ位置から挿入位置となるインデックス値を求めることはできますか?
可能です
686 :
デフォルトの名無しさん :2012/02/16(木) 14:40:46.94
>> 685 返信ありがとうございます。 どのようにすれば求められますか? 参考になるページでもかまいませんので 教えていただければ幸いです。
listview ドラッグ 並び替え
688 :
デフォルトの名無しさん :2012/02/16(木) 15:08:36.70
>>687 返信ありがとうございます。
調べてみて下記の通りで出来るみたいなのですが、
ドロップ先にアイテムがあるのに
※の部分でitemにnullが返ってきてしまいます。
原因がわからないのですが
何かわかりますでしょうか?
// ドロップ位置から挿入位置となるインデックス値を決定する
Point p = this.PointToClient(new Point(e.X, e.Y));
ListViewItem item = this.GetItemAt(p.X, p.Y);※
int destIndex = this.Items.IndexOf(item);
690 :
デフォルトの名無しさん :2012/02/16(木) 16:20:56.22
>>689 返信ありがとうございます。
そちらのページにも同じコードが載っているのですが
どうしても同じところでnullが帰ってきてしまい、
destIndexが-1になってしまいます。
eが何だか知らないけど 元々クライアント座標なんじゃないの
C#で書かれたピュアマネージドな分散KVSありますか?
そんなもんピュアマネージドにしてどうするというんだ ソースの参考にでもしたいのか?
そいついつもの奴だから放置でおk
VisualStudio2010で、「C# シルバーライトアプリケーション」を 使って、ファイルの有無を確かめたいんですが、うまくいきません。 以下の文で実行するのですが、ファイルが無いって言われてしまいます。 if (System.IO.File.Exists("C:\\test.txt") == false){ label1.content = "ファイルが無い"; } else{ label1.content = "ファイルがある"; } まったく同じ文を、VisualC#でやったら、うまくいくのですが…。 どなたか教えて下さい。よろしくお願いします。
aあのlistviewにプログレスバーは使えませんか?
listviewにプログレスバーってどういうこと?
>>698 回答ありがとうございます!
なるほどすっきりしました。
>>697 オーナードロー使って自分で書くしかない
描画自体はProgressBarRendererクラス使えば大した事はないよ
702 :
デフォルトの名無しさん :2012/02/17(金) 08:26:45.52
>>691 返信が遅くなり申し訳ありません。
おっしゃるとおり、クライアント座標だったようです。
ListViewItem item = this.GetItemAt(e.X, e.Y);
int destIndex = this.Items.IndexOf(item);
この記述でdestIndexに値が返ってきました。
ありがとうございました。
ListBoxで取得後に降順でソートしなおす方法がわかりません
馬鹿には無理
わからない奴はいちいち答えなくていいから
ディスプレイ上のマウス位置を基点に縦横100px程度の領域を拡大表示したいのですがこれはどのようにやるのでしょうか?
馬鹿には無理
元々ある画像に線や丸などの図形を描画したりそれらを削除したり、ということをしたいのですが サクサク動くようにするにはどのようにすればいいですか? 今は 1)元の画像をコピー 2)そこに図形を描画 3)削除するときは元ノ画像を再度コピーして削除する図形以外を再描画 とやってるのですが、元の画像が大きいと削除に時間がかかってしまってます いいアイデアがあれば教えて下さい
>>710 元の画像に直接描かなければいいだけじゃね?
編集中は画像レイヤーと図形レイヤーで分けておいて見た目だけ
重ねておけばいいし
最後保存するときは合成すればいいだけだし
でリドロー関連はシステムに任せちゃう
レイヤーってどうやればいいの?
ありがとうございます 週末にやってみます
717 :
デフォルトの名無しさん :2012/02/17(金) 13:23:14.07
ListViewで、指定したインデックス位置(下記だと3)に 選択したアイテムを移動するというプログラムを作りたいのですが foreach (ListViewItem item in this.SelectedItems) { int index = 3; ListViewItem newItem = this.Items.Insert(index, (ListViewItem)item.Clone()); newItem.Selected = true; this.Items.Remove(item); } このように定義したのですが 正しい位置(3)に移動されません。 今空いている一番インデックスの小さい位置に移動してしまいます。 定義の仕方が間違っていますか? 原因がわかる方がいらっしゃいましたら 御教授よろしくお願いいたします。
>>716 必要な情報はある程度提供したのにわからないってことは
自分で想像したプログラムをどういう風にすれば実現可能かという
細かい組み立てができてないから情報を追加したところでどうしようもない
>>717 部分的なコードださないで全部だせないの?
御教授〜
>>717 質問する前に紙にでも書いてみろよ
場合分けして…
セレクトされた行が3より前の時と
3以上の時を頭に思いうけて手順通り紙に書いてみろ
思い浮かべてな
725 :
デフォルトの名無しさん :2012/02/17(金) 14:01:01.65
>>720 まだできないです;
>>721 長くて全部載せれないので分けて載せます。
/// <summary>
/// ドラッグ開始
/// </summary>
/// <param name="e"></param>
protected override void OnItemDrag(ItemDragEventArgs e)
{
base.OnItemDrag(e);
const int LvmCreateDragImage = 0x1000 + 33;
Point pos = Point.Empty;
foreach (ListViewItem item in this.SelectedItems)
{
IntPtr pp = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(Point)));
Message m = Message.Create(this.Handle, LvmCreateDragImage,new IntPtr(item.Index), pp);
726 :
デフォルトの名無しさん :2012/02/17(金) 14:01:34.10
this.WndProc(ref m); Point p = (Point)Marshal.PtrToStructure(pp, typeof(Point)); Marshal.FreeCoTaskMem(pp); if (this.dragImage.Equals(IntPtr.Zero)) { this.dragImage = m.Result; pos = p; } else { IntPtr old = this.dragImage; this.dragImage = ImageList_Merge(old, 0, m.Result, 0, p.X - pos.X, p.Y - pos.Y); ImageList_Destroy(old); ImageList_Destroy(m.Result); } } Point view = this.PointToClient(Control.MousePosition); ImageList_BeginDrag(dragImage, 0, view.X - pos.X, view.Y - pos.Y); ImageList_DragEnter(this.Handle, view.X, view.Y); }
727 :
デフォルトの名無しさん :2012/02/17(金) 14:01:48.38
SelectedItemsをループで回してるときに アイテムの選択状態を変えるのは怖いな。。 あとわざわざクローンしないでRemoveしてからInsertすればいいんじゃね?
ライブラリがまともでも人間がバグってるからな
730 :
デフォルトの名無しさん :2012/02/17(金) 14:04:31.80
732 :
デフォルトの名無しさん :2012/02/17(金) 14:08:32.33
>>728 クローンしなかった場合、
ListViewItemは何を指定すればいいんでしょうか?
ほげ?!
>>734 それは「クレタ人は嘘つきだとクレタ人が言った」というやつのパロディかね?
736 :
デフォルトの名無しさん :2012/02/17(金) 14:15:06.95
>>723 すみません・・・書いてみましたが
ばかでよくわかりませんでした・・・
>>736 紙に0〜5まで書いてみろよ
たとえば1を選んだとする
そこから自分のコードどうりに作業するとそれはどこにあるか
調べてみろ
作業のつど状態を紙に書いて行ってどういうふうになるか見てみろよ
738 :
デフォルトの名無しさん :2012/02/17(金) 14:26:15.75
>>737 0 1 2 3 4 5
1を選択すると
ListViewItem newItem = this.Items.Insert(3, 1のクローン);
が実行されると
0 1 2 1 3 4 5
this.Items.Remove(1);
0 2 1 3 4 5
となると思うのですが違いますか?
//ループ内で毎回マウス下のアイテム取得してんじゃねーよハゲ var とりあえずリスト用意してドロップするアイテム追加しとけ = new List<ListViewItem>(); ListViewItem item = this.GetItemAt(e.X, e.Y); foreach( var lvi in なんかしらんけど要素のコレクション ){ とりあえずなんかのリスト用意してドロップするアイテム追加しとけ.Add( lvi ); } foreach( var lvi in とりあえずなんかのリスト用意してドロップするアイテム追加しとけ){ this.Remove( lvi ); } int destIndex = this.Items.IndexOf(item); // つーかこのマウス下のアイテムがドラッグソースに含まれてない保証しとけよタコが for( int i = とりあえずなんかのリスト用意してドロップするアイテム追加しとけ.Count-1; i>-1; i--){ this.InsetItem( destIndex, とりあえずなんかのリスト用意してドロップするアイテム追加しとけ[i] ); }
740 :
デフォルトの名無しさん :2012/02/17(金) 14:27:30.68
>>738 最後0と2の間はRemoveした1の分が空くと思います
0 2 1 3 4 5
>>738 それは予想した動作なのか
1が場所3じゃなく2にあるぞ
>>740 開かないぞ
コレクションは空白が開かない
743 :
デフォルトの名無しさん :2012/02/17(金) 14:36:27.42
>>741 >>742 前につめられるってことですか?
空白が空くと思っていたのですが・・・
0 2 1 3 4 5となるってことですよね?
744 :
デフォルトの名無しさん :2012/02/17(金) 14:38:02.91
>>739 List<ListViewItem> listItem = new List<ListViewItem>();
ListViewItem item = this.GetItemAt(e.X, e.Y);
int destIndex = this.Items.IndexOf(item);
foreach (ListViewItem lvi in this.Items)
{
listItem.Add(lvi);
}
foreach (ListViewItem lvi in listItem)
{
this.Items.Remove(lvi);
}
for (int i = listItem.Count - 1; i > -1; i--)
{
this.Items.Insert(destIndex, listItem[i]);※
}
こんな感じになったんですが、
※のぶぶんで
ArgumentOutOfRangeExceptionはハンドルされませんでした。
'2' の InvalidArgument=Value は 'index' に対して有効ではありません。
パラメーター名: index
が表示されてしまいます。
定義が間違っていたら教えてください
そういうこと あとは どうしてこうなったのか考えて どうしたらそれを避けられるか考えるだけ
外野だがソース見てて頭痛くなってきたw もっとシンプルに考えようよw
747 :
デフォルトの名無しさん :2012/02/17(金) 14:42:55.91
>>745 わかりました。ありがとうございます。
どうしてこうなったのか
どうしたらそれを避けられるか
考えてみます。
実行ファイルを起動する時に同じフォルダ内に一時ファイルを作成したいのですが、 たとえば.txtファイルを開く既定のプログラムとして実行ファイルを登録し、txtファイルをダブルクリックすると 実行ファイルのフォルダに作成されるはずの一時ファイルがtxtファイルの方のフォルダに作成されてしまいます。 実行ファイルのパスを正確に取得できる方法はありますか? Assembly.GetEntryAssembly とか System.Windows.Forms.Application.ExecutablePathを試してみたのですがダメでした。
一時ファイルを実行ファイルの位置に作る利点はなに?
>>730 int index = 3;
int count = 0;
for(int i = 0; i < Items.Count; i++)
{
if(!Items[i].Selected)
{
if(i != count)
{
var temp = this.Items[i];
Items.Remove(temp);
Items.Insert(count, temp);
}
752 :
751 :2012/02/17(金) 19:18:09.14
if(++count == index) { break; } } } if(count == index) { foreach (var item in SelectedItems) { Items.Remove(item); Items.Insert(insert_index,item); index++; } } こういうこと?
System.Xml.XmlDocument.Loadでxmlファイルを読むときに xmlnsを無視するにはどうしたらいいでしょうか?
WCF P2Pの実用的なサンプルありますか?
FlashからのWindowsFormsへの移植やってるにですがユーザーが複数カラムを選んでソートできるAdvancedDataGridに相当するコンポーネントはないでしょうか?
using使ってその内側でtry/catchするのと、 try/catch/finallyで処理するのは どちらがいいの?
760 :
デフォルトの名無しさん :2012/02/17(金) 22:14:19.58
unsafeなどを使わずにGPGPUは実現できますか?
762 :
デフォルトの名無しさん :2012/02/17(金) 22:19:42.30
Parallel.Forの分散数は調整できないのでしょうか? 複数のURLから分散してダウンロードするプログラムを書いてるのですが大して並列化してくれず全然カスカス負荷なのですが
763 :
デフォルトの名無しさん :2012/02/17(金) 22:22:38.00
NUnitでapp.config読み込むにはどうやるのですか? コピーすれば動くとググったら出てきたのですが読み込んでくれる気配がありません
>>762 じゃあ意味ねえじゃんと返されそうだが
Parallel.For自体
「反復処理が並列で実行される可能性のある for」
だかんね
確実に数起動したければTask使いましょう
より確実を帰すならそれこそThreadで
>>761 パスが取得できないと言ってるから一応絶対パスは指定しようとしてるんじゃないかなあ
>>756 あ、原因がわかりました。
static Assembly myAssembly = Assembly.GetEntryAssembly();
static string Tmp_path = System.IO.Path.GetFileNameWithoutExtension(myAssembly.Location) + ".tmp";
よく見たらこの書き方じゃ絶対パスになってなかったです。すみません。。。
767 :
デフォルトの名無しさん :2012/02/17(金) 22:31:47.01
これはひどい
769 :
デフォルトの名無しさん :2012/02/17(金) 22:35:22.44
ThreadPollで空になるまで(投入した全メソッドが完了するまで)待機させるにはどうすればいいにでしょうか?
770 :
デフォルトの名無しさん :2012/02/17(金) 22:37:57.52
ラムダ式がまったく理解できません サル未満でもわかる解説ページ教えて
771 :
デフォルトの名無しさん :2012/02/17(金) 22:40:32.66
monoってCentOSのパッケージねーの?
delegateはわかるの?
773 :
デフォルトの名無しさん :2012/02/17(金) 22:41:06.94
ThreadPollは「スレッド プールのスレッドが使用可能になったときに実行されます。」と言ってんだから待機用じゃねえだろ
776 :
デフォルトの名無しさん :2012/02/17(金) 22:48:01.36
777 :
デフォルトの名無しさん :2012/02/17(金) 22:51:22.87
>>774 自前でスレッドプール作るしかないか・・・
joinというか内部的に同期待ちをする仕切りを投入できると便利なんだがなぁ
>>777 .NET 2.0縛りでもやってるのか?
779 :
デフォルトの名無しさん :2012/02/17(金) 23:00:23.73
>>778 今年から4.0解禁になった
ぶっちゃけ去年まで2.0どころか1.1縛りだった
4.0解禁されてるなら全部Task.Factory.StartNewに突っ込んで Task.WaitAll
781 :
デフォルトの名無しさん :2012/02/17(金) 23:02:24.65
なるほど
782 :
デフォルトの名無しさん :2012/02/17(金) 23:07:04.91
WebClientクラスに自前のキャッシュ機構を付ける方法ありますか? 継承したクラスを作ってみたのですがどこをoverrideしてどうすればいいのかわかりません
そういうのを意図した設計にはなってないみたいだね 精々ヘッダやオプションを足したり引いたりといった所にみえる
自前のキャッシュ機能って自分で適当なフォルダ作ってそこにファイル入れとくだけだろ なんでwebclient出てくるのか判らないね
などと書きつつも一応ヒント WebClient.GetWebRequest メソッド をoverrideしたらいいだろう uriからキャッシュにあるか確認してあるならそっちを読み込む ただそれが更新されているかチェックしたほうがいいけどな
チェックボックスやラジオボタンでフォントを大きくしても、チェックをつけるところの大きさが変わりません。変える方法ってあるのでしょうか??
>>786 OSのVisualStyleがオンならそっちで描画されるから無理なんじゃないの
自前で書けばサイズは自由だからOnPaintをオーバーライドしたクラスを作ってみれば?
参考
以下のコードをFormのOnPaintのbase.OnPaint( e); のあとに貼り付けてみそ
ControlPaint.DrawCheckBox( e.Graphics, new Rectangle( 0, 0, 32, 32 ), ButtonState.Checked );
new VisualStyleRenderer( VisualStyleElement.Button.CheckBox.CheckedNormal ).DrawBackground( e.Graphics, new Rectangle( 0, 32, 32, 32 ) );
ControlPaint.DrawRadioButton( e.Graphics, new Rectangle( 0, 64, 32, 32 ), ButtonState.Checked );
new VisualStyleRenderer( VisualStyleElement.Button.RadioButton.CheckedNormal ).DrawBackground( e.Graphics, new Rectangle( 0, 96, 32, 32 ) );
上のほうに using System.Windows.Forms.VisualStyles; 追加しといてな
うん
>762 何で分散数見てるの? ファイル転送とかではcpuの負荷なんか大してかからないよ。
マトリックスみたいなコンソールにバババっとコードみたいなのが流れる奴って何分で作れますか?
792 :
デフォルトの名無しさん :2012/02/18(土) 10:25:38.25
>>791 まず1を見て2を見て3を見て、1にリローテッド。そしたらもいちど2をみて、3を見て
そっから始めて・・・えぇっと・・・ わからん
ParalellForの中身を見る限り ParallelOptions.MaxDegreeOfParallelismを指定しないと、並列実行の最大数はEnviroment.ProcessorCountになるようだ RangeManagerとRangeWorkerというのが内部で処理をしていて RangeWorkerは一定時間以内に処理が終わらないと自分を複製していくらしい 一定時間というのは100ミリ秒+RangeWorkerのID % Enviroment.ProcessorCount * 50 後半部分は複製タイミングをバラけさせるための調整だろう で、いろいろ眺めた結論ですが、並列度は調整できません ParallelOptions.MaxDegreeOfParallelismは指定してもいいかもね 気休めとして
へえ 普通に使うとProcessorCount以上にならないのか
うん
使えねえー。
その用途だったら並列度あげても関係ないだろ ダウンロードなんてクソ軽い作業なんだから…
ダウンロードは軽くねーよ。 ボトルネックは通信回線なんだから、通信回線の並列度を上げるべき。
CPU使用率的には軽いよ ほとんどIO待ちだし
質問者の言う負荷って何の負荷か分からないんだよね。
意味が通じていないw
当店のポイントカードはお餅ですか?と同じことをしているな
TCPIP.SYSの制限にすぐひっかかりそうだな どうせろくな用途じゃないだろう
TCPIP.SYSの制限ってこれか?
http://support.microsoft.com/kb/969710/en-us By default, the half-open TCP connections limit is disabled in Windows Server 2008 with Service Pack 2 (SP2)
and in Windows Vista with Service Pack 2 (SP2).
VistaSP2で解除されたにもかかわらずいまだにメモリ書き換えやパッチ当てしてる人いるんだよね〜
嘆かわしいね〜
DataGridViewの内容更新を速くしたいんですが リストビューなどにある、一時的にredraw禁止 みたいなことはできないでしょうか?
セッション数ならともかく、Half-open の制限なんてめったに引っかからんと思うが。
セキュリティ対策の一環だったらしいからね ウィルスがすごい勢いで接続試行すると引っかかる(セッション確立まではharf-open扱い)ということなんでしょう
>>807 DataGridViewの再描画抑止メソッドはDataGridColumnStyleの方にある
BeginUpdateはprotectedなので継承して呼ばないといけない
わんくまのサーバーは去年の12月から死んでいるので 貼るならgoogleのキャッシュにすべきだった
>>811 プログラミング歴25年だけどそれはたぶん違うと思う。
>>810 それは今は亡きDataGridの方じゃないかな
データソースをBindingSourceにして、RaiseListChangedEventsを一旦falseに
終わったらtrueに戻してResetBindings
SendMessage(dataGridView1.Handle, 0xb, IntPtr.Zero, IntPtr.Zero); これでも更新は止まった イベントを抑制してしまう方がスマートだし安全だしだろうけど
aaaa,100 bbbb,200 cccc,100 dddd,400 eeee,500 っていう名前と、料金のデータが5件あります これをlistviewに入れます これをlistboxで100って入れたら 1行目のaaaaと3行目のccccだけlistviewに表示できるようにフィルターすることはできませんか?
WinFormのListViewはバインディングもフィルタリングもできないからなー 普通に一旦Clearして該当データだけ再Addしてくしか
データバインドが使えるコントロール(DataSourceを受け付ける奴)以外は全部地道に連動する部分を書くしかない
listviewじゃなくて別の使えば?
たった数行ぐらい書けよ。
書けよ
それこそlistviewを継承した自作クラスでそういう動きする物を作ればいいんじゃね? 継承って元のクラスにちょっとスパイスが足りないので足すとかそういうので使うんだし
継承を安易に使うんじゃない。 安易に子供を増やせば管理できなくなることも分からないのか。
多重継承するわけじゃないんだしいいじゃないか
listviewじゃなくてlistboxだったできるってことですか? あとすいません >これをlistboxで100って入れたら は これをtextboxで100って入れたら のミスです
元のコントロールはなんでもいいよw 特定ワードで絞込みができればいいんでしょ?
>>825 列が複数欲しいなら DataGridView が使える
828 :
デフォルトの名無しさん :2012/02/18(土) 17:20:28.17
継承するしかないならやむを得ないが、 継承せずに実現できるなら、その方がいい。
ああ、できるぞ。Clear()してAddRange()するだけだ。
>>828 Formにべたべたコード貼るよりlistview依存の処理として
継承したクラスに封入できるんだから継承しちゃえって思うけどな
というか常にオブジェクトで考えちゃうのですぐに継承が浮かぶ
それはとてもOOとは言えない。
フィルタ機能がついたListBoxとついてないListBoxが 別のクラスっていう感覚はオブジェクト指向なのか?
じゃあどういうのがOOなんだよ
ListBoxとComboBoxは見た目、操作性が違うから、開発者じゃなくても別のオブジェクトみたいな。 でも実際、中身は似てるからListControlが親みたいな。 オブジェクトの粒度は、開発者じゃない人でも違いが分かるみたいな。
835 :
デフォルトの名無しさん :2012/02/18(土) 17:42:39.60
今のオブジェクト指向は、なるべく継承には頼りすぎない方向でしょう。 継承は実装に依存してしまう部分が大きいから。 もちろん必要なら継承すればいい。継承=悪ではない。
特定のことに依存したコードを分離できるんだし別にいいと思うけど むしろこれでも継承否定してFormに書けよって人は昔のC信望の人みたい
継承は悪だよ
>>835 MSの場合、MFCの頃から継承は多用していない。
839 :
デフォルトの名無しさん :2012/02/18(土) 17:47:23.32
必要なら継承すればいい。 しかしその前に考えろ。そこまでするほどの問題なのか? 継承せずに数行で済むことを継承するのは良くない。
むしろ聞きたいのがFormにだらだらコード書くことになる場合 region使わないでどうやってコードを管理してるの? 見難い(醜い)でしょ
既にDataGridがあるだろう?
むしろなぜ「継承しない=>Formにだらだら」になるの?
継承の本質は機能拡張ではなく、多態のためだろ。 多態を使わないならOOではない。 昔からあるただの構造化プログラミングだ。
オブジェクト指向の三要素は隠蔽継承多態だが、継承が多態に包含されるなら、わざわざ並べて書くまい ダックタイピングによる多態だってある
846 :
デフォルトの名無しさん :2012/02/18(土) 18:08:21.68
継承は隠蔽を破壊するリスクを内在している。 そして、多態を実現するのは継承だけではない。
つまり継承は悪
継承するために設計されていないクラスを継承してはいけない。 List<T>なんていい例。
クラスだらけのプロジェクトを見ると読む気がなくなる。 継承してクラス作るのは簡単だが、他人のそれを理解するのは難解。 保守することを考えてない奴ほど継承を乱用する。
継承厨が修正したと称する元switch文とか吐き気がするよ
852 :
デフォルトの名無しさん :2012/02/18(土) 18:34:36.48
ASP.netと併用ですが質問させて頂きます。 using system.IO; //pathにはフォルダのディレクトリパスが入ってます。 string[] List=Directory.GetFiles(path); List配列の要素数を求めたいんですけどどうしたらいいでしょうか? pathが指定しているフォルダは何も入っていない場合もあります。
Lengthだと思うんだがそんなの質問するまでもないことのように思えるし それ以外の何かなんだろうか……
var data = { データの配列
ごめん、間違えた。
巧妙な暗号なんだ
配列になってる物はLength 変動するリストのような物はCount で要素数を持ってるはずなんだが
858 :
デフォルトの名無しさん :2012/02/18(土) 18:45:25.69
すいませんでした
なんというトリック…
CからC#に入ったんだけど便利だね ゆとりみたい
そう言っていられるのは今のうち。 Cなんてまじ使わなくなるから。
jpegのストリームデコーダーすらなくて、わざわざlibjpegをコンパイルたよ やれやれ、一度全部DIBにしないと取り扱えないって、馬鹿にしているのかね
馬鹿を馬鹿にして何が悪い
それはVCもだろ…。 一度全読みしないと取り扱えないくせに、デカいファイル展開しようとすると例外起こすのは欠陥としか言えないが。
なんかタコなことしてるんだろ
w
pngは65535ピクセル制限だな jpgも書いてないけど何か制限あんのかな
>>852 変数名にListって名前使うのは問題ですよ
同名の使用頻度が極めて高いクラスがありますから
それ一次元の話だろ? そんなもんどうでもいいだろ
870 :
862 :2012/02/18(土) 19:30:02.28
いやそういう制限とかはどうでもいいですけどね、画像のピクセルを舐めたいだけなのに全部メモリに置く必要性無いでしょ DIBに展開したら50MBとか画像一枚でメモリ食うし 一行ずつ読み込むようにしたら10KBで済んだよ 小回りが利かねえなあと思うわけ
それはGDI+のせいだからC#とは無関係だと何度言えば理解してくれる?
フフフ
2万円で8GBx4のメモリが買える時代なんだぜ。
一行
875 :
852 :2012/02/18(土) 19:48:39.29
動的に関数作りたいんだけどどうしたらいいんだろう クラスの中でクラスって作れるんですかねああ作れましたね
動的
お前は何がしたいんだ そういう断片的な話じゃなくどういうシステムを目指してて そんな答えに行き着いたか語れ
878 :
852 :2012/02/18(土) 20:08:13.82
掲示板を作りたい コメントを画面に順番に表示ができた じゃあ次はそれを1単位としてスレッドをつくろう 掲示板ならスレッドをユーザーが作れるようにしないとね あれ?じゃあボタンやテキストボックスは使い方が重複するよね じゃあ1スレッド1クラスにしよう クラス作ったったこれでかつる! 実行したらボタンが「作ったクラス」のメソッドを実行しないどうしてなんで←いまここ
IO.File.Copyメソッドを実行する際にセクタやファイルが壊れていてエラーになることがあるのですが、 try catchで例外を処理しているのですが、エラーが出るまでに10秒以上かかるのですが、 正常に読み取れるかどうかをもっと速く判断する方法があったら教えてください。
Thread.Sleepで待機している時に何らかのイベントで待機をキャンセルすることはできますか?
OSやその先の装置の挙動もあるからなあ>読み取り関連 何回かリトライもやってるんじゃないの? DOSのころのように最悪は自分でFDDコントロールするとか できるのならあれだがwindowsじゃあまず無理だしなあ
動的に関数とどう関係があるか教えてほしいw
良く考えてみ どうやってセクタが異常だとか壊れているとか判断してるのか? ファイル情報のどこかに異常ですよフラグでもあると思ってんの?
>>881 Thread.SleepじゃなくてAutoResetEventみたいなの使え
動物的
888 :
デフォルトの名無しさん :2012/02/18(土) 21:19:55.99
>>884 public string FileName;
public string BottonSet(){
Label1 = "<asp:Button ID=\"+Button_"+FileName+"POST\" runat=\"server\" onclick=\"Button_"+FileName+"POST_Click\" Text=\"書きこむ\" />";
}
↓
FileName変数がtestだったら
public void Button_testPOST_Click(object sender,EventArgs e) {}
こういうメソッドが欲しい
ボタンは\"を駆使してWebformに出力できるけど、そのボタンが実行する名前のメソッドを作れない
フォームに置いたbuttonだけを表示して フォームを非表示にする方法を教えてください
フォームに置いてるのにそのフォームが非表示になったらボタンはどうすればいいんだ ボーダー無しでボタンと同じサイズのフォームでいいだろ
>>889 buttonだけ表示されてるようにする方法はありませんでしょうか?
っていうことでOK?
>>891 分かりにくくてすみません
その解釈でOKです
>>890 ■ ■
■ ■
一つならその方法でいいんですが
↑こんな感じで間隔をあけて配置することも考えているので厳しいです
>>892 WPFはむずかしくて・・・C#のほうで何とかできませんか?
Form.Region
>>888 windowformsって使ったことある?
ボタンだけ表示とか犯罪の匂いがする。
Form.Opacity
犯罪的に臭い
まずボタン生成する方法からして酷すぎる
>>895 これを応用したらできるようなできないような気がしました
>>897 >>899 ウィンドウで裏のプログラムが隠れないようにしたいからです
>>898 コントロールまで透過されてしまいました
コントロールの見た目はいじりたくないです
>>900 bitmap使う方法で出来そうな気がしました
>>903 OnLoadとかで
Point offset = PointToScreen(new Point(0, 0)) - new Size(Location);
Region r = button1.Region ?? new Region(button1.Bounds);
r.Translate(offset.X, offset.Y);
this.Region = r;
で出来るね。
ただわざわざコードでこんな風にしなくても、
>>890 が言ってるようにデザイナでButtonのDock=Fillにして
FormのFormBorderStyle=Noneにすれば何も考えずに出来る。
906 :
デフォルトの名無しさん :2012/02/18(土) 22:22:14.28
しましたね
907 :
デフォルトの名無しさん :2012/02/18(土) 22:28:25.23
C#のプログラム上で、任意のメソッドやプロパティのドキュメントコメントについて、 取得する方法があれば教えてください。
犯罪の匂いがする。
ドキュメントコメントって出力しようとするとXMLになるけどさ mscorlibとかのコメントってどこにおいてあるんだ? 仕様に明記されてないだけでリソースも参照できるのか?
場所はググればすぐ出てくるよ
フォーム外のマウス座標を取得したいんですがmousedownイベントをvc#の右下のイベントプロパティに追加しても動きません c#はフックできないらしいんですがライブラリありませんか?
> c#はフックできない マウス入力に関してはできる そのほかにDirectInputとかもある
Control.MouseButtonsでも取得できるけどポーリングしないとだめぽいな
ポーリング大好き
私もボーリングは大好きよ
何を掘るんだい
so gay
お前は文章読めないのか
堂々と嘘が書いてあるサイトを持ち出されてもな いや、確かに大筋では間違っていないのだが微妙に事実と異なる
できるよ。でもおれはフック用DLLはC++で書いてるわ。 書いてあるとおりWH_MOUSE_LL ならc#でもできるんじゃね? Vista以降はセキュリティ厳しいからUAC回避がかなり面倒だぜ。
>>921 というか以前同じようなこと調べててそこのサイトにいったことあるけど
その記事を書いたのが2005年だからな.netのバージョンいつの話だって感じだし
ほんとksだなc#
なんだかんだで10年くらい歴史あるんだっけ?>.net いろいろ変わったしなあ OSの仕組みが変わってIMEをいじるのも大変だしなあ
あしたつぎすれ
ボタンクリックイベントって、自分で作ったクラスに引越しできる?
そうすると、 CURASU.Butten_Clickってなるのか?
Baajon Appuみたいなもんか。
画像を表示する際にロックされないようストリーム経由で表示させているのですが ストリームのリソースを破棄してしまうとicoや一部のgifなどでGDI+の汎用エラーが発生してしまいます なにか良い方法はないでしょうか
Bitmap.Saveを使用してMemoryStreamで保持しておくとか Bitmap bmp = (Bitmap)Image.FromStream( ファイルストリーム ); MemoryStream ms = new MemoryStream(); bmp.Save( ms, bmp.RawFormat ); //bmpと元のファイルストリームは破棄 Bitmap bmp2 = new Bitmap( ms ); //bmp2とmsをペアで管理。面倒くさいけど。
>>931 わざわざコードまでありがとうございます
しばらくその方法を勉強してきます
いちいちSaveするんじゃなくて 初めにFileStreamからCopyToでMemoryStreamにコピーしてやっとけばいい
>>933 こんな感じでよろしいでしょうか?
using (FileStream fs = new FileStream(ソース, FileMode.Open, FileAccess.Read))
using (MemoryStream ms = new MemoryStream())
{
fs.CopyTo(ms);
Bitmap bitmap = new Bitmap(ms);
}
MemoryStreamまでCloseしたら台無しじゃないか
そうでしたすみません・・・ ストリームだけ破棄しておけば良いんですね
×ストリーム FileStreamでした
>>931 >>933 using (FileStream fs = new FileStream(ソース, FileMode.Open, FileAccess.Read))
{
MemoryStream ms = new MemoryStream();
fs.CopyTo(ms);
Bitmap bitmap = new Bitmap(ms);
}
これでロックされずICOやGIFアニメの表示もうまくいきましたありがとうございました
940 :
912 :2012/02/19(日) 10:16:29.77
どうやるんですか?
941 :
デフォルトの名無しさん :2012/02/19(日) 10:19:46.42
フック系はC++でDLLを自前で作ってC#から使うとかでいいんじゃね? でもvista以降特殊な動作のアプリはいろいろ面倒だからなあ 自分で調べろ
言語の問題じゃなくOSとの付き合い方になる
画面全体をキャプチャする 全画面の枠無しウインドウを最上面に表示 そこにキャプチャした画面を貼る あとは通常通りマウスイベントを拾う
何その無駄な処理
ちょっと検索すりゃすぐ引っかかるじゃねえかよ
DataGridViewってセルが多くなるとすごく遅くなりますね
マウスキャプチャーするとアンチウィルスにひっかかるじゃん
もう難しくてわかんないよ!
グローバルフックなんて犯罪目的しか思いつかない。 だからセキュリティガチガチでOSから怒られし、 アンチウイルスソフトからおまえトロイじゃね?だのなんだの怒られる。
WindowStateで最大化にしたら必ずタスクバーの領域も含めて最大化されますか?
951 :
デフォルトの名無しさん :2012/02/19(日) 11:40:03.18
今時マウスフックするアプリ作るって何をやる気なんだろうねw
マインスイーパでいたずらするソフト以外思いつかない。
labelを斜めに回転するにはどやるのでしょうか?
標準ではできないんじゃないかな? c# graphics pathとか使って描画すればいけるかもしれないが なんでそんな面倒なことするの?
>>955 Loadに書くからだろ
Show?でもタイミング的に微妙だよ
いい加減CreateGraphics使うサンプルは滅べばいいのに
>>958 コントロールに直接書くのはやめたほうがいいな
Loadなどタイミング的にダメなところにコード書いて
動きませんっていう質問は何度みたことか
buttonとか設置してClickイベントで実行しろ
>>956-957 load以外のイベントで読んだらできました助かりました
今はCreateGraphicsじゃなくて何を使うのが通ですか?
Bitmapに描く 描いた後はInvalidate呼んでおく Paintイベントでe.Graphics.DrawImageでそのBitmapを描画
動的にbitmap作ってそこへ描画してコントロールにはその内部で作った bitmapを渡す
bitmapを作るって事はテンポラリフォルダにファイルが生成されますよね?ちょっとそれは困ります
>>964 つくらねーよw
メモリ上に作るだけだよ
1st 2nd 3rd 4th みたいに数字の後ろになんちゃら表記を追記させる方法ってない? forループの中で使いたいんだけど・・・
なんかデジャブ
それはIFormatProviderの仕事だから、そういう動作をするIFormatProviderがあるかどうかによる なければ自分で用意するしかない ちなみに標準では用意されておりませんので
マジで突っ込んでいいの?
973 :
デフォルトの名無しさん :2012/02/19(日) 16:22:53.18
今後同じ愚かな質問する人のためにテンプレ部品として作っておいてくれ
偉そうにコード貼るならテストしろ
0x1Cってしらねえなあ LoadXmlではなくXmlReaderを引数に取るLoadメソッドを使って、XmlReaderSettingsを適当に設定すれば読み込めるのではないか 試してないから本当にできるかは知らないよ
0x1cってアスキーコードそのままならFSとかいう制御コードだな なんだろ
消せばいい
1c知らないってどんだけゆとりだよ。 おまえらバイナリ直接読まねーのかよ。
はい
File Sepratorなのか Field Separatorなのか Form Sepratorなのか
開発者が使うようなエディタなら表示される。
Notepad++では確かに表示されているが、表示されたからなんだというのか
985 :
976 :2012/02/19(日) 22:23:53.75
要するに混入した制御文字をすべて取り除きたいんですが、どうすれば速いですか? WebClientで受け取ったbyte[]をSystem.Text.Encoding.UTF8.GetString(byte[])で stringに変換してxmlDocument.LoadXML(string)で読ませたいのですが。
文字列の中の特定の文字のあとに "<br>" って付け足す方法を教えてください
replaceすればいいのでは
自分で書いた方法が遅くて困ったら質問に来い
ですが。って言う奴に碌な奴はいない。 これマメな
妹がオナニーしてるところを目撃してしまったのですが。
ノ・ゾ・キ・ア・ナという漫画を読んだところ 女もセックスしたがってることがわかった。
C#4.0の4.0は.NET Frameworkのバージョンのことですか?
違う
埋めるッッッッ
梅
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。