ふらっとC#,C♯,C#(初心者用) Part56
F#最強wwwwwww
>>1 さん ありがとうございます。
前スレのクリップボードについての質問者です。
MDIEというファイラーの挙動を見てみたのですが、切り取りはアプリ外にも
できましたが、終了するとクリップボードは空にされました。
切り取りかコピーかの情報をアプリケーション側が保持しているっぽいですね。
エクスプローラと同じ挙動をするように、切り取り情報をOS側に投げられたら
よいのですができなさそうですね・・・
ほぼプライベートで使うアプリケーションなので、こんなところにしておきます。
みなさんありがとうございました。
5 :
4 :2010/02/28(日) 19:24:56
ごめん、コピペには対応していなかったみたいだ
弱いなおいw
>>3 切り取り/コピーの情報もクリップボードに入っている
アプリ終了すると消えるのは、終了しても残すように指定されていないから
// StringCollection fileDropList;
var buf = BitConverter.GetBytes((int)DragDropEffects.Move);
var memStream = new MemoryStream(buf);
var data = new DataObject();
data.SetFileDropList(fileDropList);
data.SetData("Preferred DropEffect", memStream);
Clipboard.SetDataObject(data, true);
>>8 さん
ありがとうございます!
うまくいきました。
クリップボードに情報が入っていたのですね。
過疎が酷いw
くそ韓国のせい
こうやって韓国がどんどん嫌われるのは嬉しい
スレチ
exploerのように3桁づつカンマを入れたリストビューを ソートしようと思っているんですが (例)123,456,789(右揃え)を数値に変換するにはどうすればいいでしょうか? 文字列でソートしてもうまくいかないので数値に変換しようと思ってます
NumberStyles 使った Int32.Parse 使えば変換できるけどさ それよりTagとかにソート用の情報オブジェクト持たせた方が楽よ
System.Net.Mail.SmtpClient でメールを送るプログラムを書こうと思います。 このクラスを使うとして、envelope from を設定することは可能でしょうか? TcpClient とかを使って自分でサーバとやりとりをすれば出来そうなのですが、 出来れば楽をしたいな、と。w
>>19 ありがとうございます。
いまはちょっと寝ぼけているので、明日チャレンジします。
こんなにすぐに教えていただいたのに、ごめんなさい。
21 :
デフォルトの名無しさん :2010/03/03(水) 03:47:03
前からプログラムっていうのがやってみたくて、重い腰をあげてC#Expressというのを 苦労してインストールしてみたお。だいぶGUI画面とかできるようになったお。 だけど、今日、本屋いったらF#って言う本が出ててVisualStudio2010から正式にうんちゃらかんちゃらって かいてあったお。 C#はこの先置いてけぼり食らうのかお・・
衝撃的なデビューから早10年 結局メジャーにはならず、プログラム初心者向けの言語にしかならなかった そして時代はF#
public string Name { set { _name = value; } } こういったプロパティって何か意味があるんですか? サイトのTIPS見てもよくわからない ただ単にデータを格納するだけなら直接publicな_nameに格納してもいいものだけど
>>21 C#とF#は棲み分けが違う
>>23 オブジェクト指向では直接フィールドメンバにアクセスすることを嫌う。
カプセル化でぐぐりなさい。といっても、意味が広いからすぐに理解はできないと思うけど。
>>24 オブジェクト指向というよりコンポーネント指向。
C#など最近の言語はこの二つが混ざり合ってるけど、
interfaceやpropertyはコンポーネント由来の機能。
WEBページで右クリックして出るIEショートカットメニューに 自作ソフト登録して、自作ソフトにそのWEBページのURLが 送られるようにしたいんだけどどうすればいいですか?
IEMenuExt入れてヘルプ見ながら色々弄ってみれば何やってるか分かるよ ちなみに登録できるのはあくまでJavaScript
>>25 コンポーネント指向っていうのはキャッチコピーみたいなもので
具体的にどこがどうコンポーネント指向かというのは難しい
あえていうなら、MSのようにクラスの利用者を「お客様」として扱う考え方かな
あくまでオブジェクト指向がベース
30 :
23 :2010/03/03(水) 12:22:18
>>24 内部を隠蔽化とかそういう説明は沢山あるけど
具体的にどういう場合に支障があるんでしょうか?
ただ代入するだけなら意味がないと思うんだけど
例えば
>>23 だとフィールドメンバの型を変更することになった場合
public string Name
{
set
{
_nameNumber =int.Parse(value);
}
}
こんな感じにできるということ?
まあそれはかなり極端な場合だがそういうのもある 他にも入力値チェックしたくなったりとか値変更時にイベント発生させたりとか で、「初めはフィールドにしといて何かしたくなったらプロパティにすればいいじゃん」については 取り敢えずこう返す、「今なら自動実装プロパティがあるからフィールドにする意味ないじゃん」
プロパティは遅いやん
オブジェクト指向の真髄は多態であって、 カプセル化なんてのは構造化プログラミング時代でも普通にやってた。モジュール化とか。
つい最近某所のベンチマークソースで試してみたら、デバッグビルドではプロパティが数倍遅かったけど、リリースビルドなら誤差レベルだったな
>>32 それは実際できたものを動かしてみたら遅くて、その原因箇所を探したら
プロパティアクセサだったとき(まずありえないけど)に考えること
SilverlightやらWPFやらで流行りのMVVMパターンで組むなら Setterの中であれこれやる事になるからプロパティ必須
リモートオブジェクトで値を受け渡す場合の方法に 値渡しとインターフェイスポインタ渡しがあって、 プロパティはインターフェイスポインタ渡しで必要になった技術なんだよね。 現在ではリモート処理以外でも広く使われるようになった。
38 :
23 :2010/03/03(水) 14:16:55
エラーチェックと言っても普通呼び出す側でチェックするのに プロパティでする意味が有るのかな? エラーチェックを2回することになるんですよね?
int[] a = new int[1]; int b = 2; a[b] = 4; bがa.Length未満かどうかはそりゃ呼び出し側はチェックするだろうけど だからといってint[]側がチェックしないわけないだろ?
規約をチェックして例外投げるのはかまわないけど 利用者が例外をキャッチしないといけないような設計はダメだよ プロパティが例外を投げることは普通想定しない 利用者が事前にチェックできないような条件なら、代入時じゃなくて そのプロパティの値が内部で使用されるときに例外を投げるべき
41 :
23 :2010/03/03(水) 15:08:27
例えば @ファイル入出力クラスを利用するクラス Aファイル入出力をするクラス エラーメッセージとして"ファイル名を入力してください"と出す場合 この場合両方のクラスでファイルが存在するかチェックすべき? それともAに一旦ファイルパスを送って例外が出された場合@のクラスでエラーメッセージを表示すべき?
両方
43 :
23 :2010/03/03(水) 15:19:34
うーん、こういうことってやっていくうちにわかるのかな なんとなくわかったようなわからないような とにかく、ありがとうございました
>>23 は頭固いというか誰かの洗脳でも受けたのか?
45 :
23 :2010/03/03(水) 15:27:31
オブジェクト志向って同じ機能をまとめることでしょ? 同じ機能が他のクラスに合ったらまとめたくなるじゃない?
46 :
デフォルトの名無しさん :2010/03/03(水) 15:30:35
今度のMicrosoftの新言語はG♭
>>45 機能をまとめるってのがなあ・・・
まあそういうのはクラスわけができてないっていうんだろうけど
Aのクラスはファイル名が与えられなかったので、ファイルを開けませんでした というエラー報告を、例外として利用クラスに投げるだけにとどめるべき どう扱い、どう表示するかは、ファイルクラスには関係ない デバッグ時ならAクラスがエラー表示してもかまわんと思うけど
流れぶった切ってすいません。 ちょっと教えて。 System.Diagnostics.Trace クラスで出力したデータを VSの出力windowみたいな感じにモニタするソフトってあります?
あったな、そういうの syslogに投げるやつもあったな
DebugViewが定番
「VSの出力windowみたいな感じ」かどうかは自分で確認してくれ
何を持ってそう判断するのかは
>>49 にしか分からんので
52 :
49 :2010/03/03(水) 16:23:50
>>50 さま
レス有り難う御座います。
ログを出力する側に手を加えてTextやEventLogへ出力する方法は
ググると結構見つかるのですが・・・
TraceListenerを自作するべきか、悩んでます。
苦労して作った後に、いやこんなツールはあるんだけどね。知らなかったの?
ってなるのが、怖わかとです。
53 :
デフォルトの名無しさん :2010/03/03(水) 16:25:06
>>52 >TraceListenerを自作するべきか、悩んでます。
>苦労して作った後に、いやこんなツールはあるんだけどね。知らなかったの?
それも勉強だろ
54 :
49 :2010/03/03(水) 16:36:32
WEBページのボタンを自動でクリックしたい・・・
56 :
デフォルトの名無しさん :2010/03/03(水) 17:02:20
ピクピク webbrowserでやればいいのかな? 第一歩の踏み出すためのぐぐる検索キーワード教えて
HTTPとかPOSTとかGETとか・・・
え!?そこから勉強しないとダメなんだ・・・orz
魔法じゃないんだからすこしはやれよ
61 :
デフォルトの名無しさん :2010/03/03(水) 20:29:07
webbrowserでナビゲート終了後にhtmlドキュメントを調べるだけだろ javascriptとかでボタンの列挙とかあるしやることはそれほどかわらん
webbrowser click でググルだけで出てくる
web 自動運転 ボタン Document.GetElementById HtmlElement とかで必死にぐぐってたのになかなか目的サイトが見つからなかった これで半日かかってしまった webbrowser click で検索すると大量に目的のサイトが出た 初心者はこういうので時間かかるんだよなぁ
自動運転はねーよww
どうでもいいなりよ
TraceListenerはなんか変。 なんであんな派生しにくいんだよ。
>>23 >>32 最近出版されたEffective C#嫁。
そのプロパティのことがずばり書かれている。
>>52 TraceListener使うのが一番。
ログの吐き出しはlog4netで。
log4netいまいち NLogのがいい気がする
C#2008EE使っているのですが デザイン画面のコントロールのプロパティで boolの値をドロップダウンで選択しようとしても 一瞬開いて閉じてしまう症状があるのですが こういった症状になったことある方いますでしょうか? 何度か連打していれば元に戻るのだけど
boolならドロップダウンさせずともダブルクリックで切り替えれば十分な希ガス
>>33 それはただのフィールドの隠蔽化。カプセル化はもっと深い。
>>71 プロパティ、中身がシンプルなものは JIT 時にインライン化される。
プロパティにすることで、フィールドをpublicにするよりも変更に強くなる。
>>75 いやいや
>>33 の言うとおりでしょ。
(OOPの真髄が多態という見解には異論があるが)
カプセル化なんてOOPよりずっと昔からある概念なんだけど。
インライン化されてもコピーが入るからまったくコストが無くなるわけじゃないよ
へえ
>>23 まあごく例外的な場合とか「フィールドは公開すべきでない」という精神論を別にすれば、
プロパティにする必要性が出た時点でプロパティにする、という方針でも
別に悪くはないと個人的には思う。別にたいした手間でもないし。
ただ、今時プロパティ書くのもフィールド書くのも手間はあまり違わないわけで、
そういう現状を前提にすると「なぜ<あえて>プロパティなのか」っていう疑問は
あまり自明じゃなくなって来てるな。
>>77 オブジェクト指向のこころを読めば世界が広がるよ。
クラスの内部から、フィールドには直接アクセスすることもプロパティが実装されていれば プロパティからフィールドにアクセスすることもできますが、プロパティが 実装されている場合、積極的にプロパティを使ってフィールドにアクセスすべきですか? Javaのアクセッサ(getter/setter)では記述のコストが高くてやってられないのですが、 C#ではどうなんでしょうか?
自分でテストコード書けばいいじゃねえか
>>84 速度だけの話じゃないです。
クラスの内部からフィールドへのアクセスもプロパティを通すことで、
カプセルとその他もろもろの恩恵を受けられると思ったんだけど、
そういった形でプロパティを使うってありですか?
自分でテストコード書けばいいじゃねえか
いや、あんたに聞いてない
ママにでも聞けばいいじゃねえか
論外さようなら
二度と来るなよ
日本語分かる?ちんぱん
webbrowser <input type="image" onclick="hoge" name="homo"> GetAttribute("onclick")でonclickの値(hoge)が取得できないのですが、普通はできるのでしょうか? 値は"System.__ComObject"というのが返ってくるだけです 同じやり方でtypeの値はちゃんと取得できます
vc# 2005使い始めたんだけど、 デフォルトのインデントがタブじゃなくて、スペースなのね。 c#ではこれが流儀? これに慣れた方がいい? 行をBSで逆インデントする時に、 BSを連打しないといけないのが、苦痛。 Shift+tabは面倒。
94 :
デフォルトの名無しさん :2010/03/04(木) 06:26:08
>>92 その周辺のコードは晒せる?
>>93 設定で切替できなければタブとスペースの切替はできないってことだろ
それにVC#の場合オートインデントなのでガシガシ打ってもどうにかなるだろ
トイレに行ってきます(´・ω・`)
96 :
94 :2010/03/04(木) 06:31:20
どこでもいいので { int aaaa = 10; aaaa++; } を書いた上で //{ int aaaa = 10; aaaa++; //} という感じでネストをいじった上で 上記4行を一旦切り取って同じ位置に貼り付けてみると勝手にインデント調整してくれるよ
C#で生ソケットについて経験者いたら教えてください。 下記のコーディングで間違いとか、抜けとか、ありますか? Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Tcp); TCPヘッダ作成 IPヘッダ作成 ヘッダ連結 チェックサム int nBytes = socket.SendTo(sendbuf, sendbuf.Length, SocketFlags.None, endpoint); SendToメソッドの箇所でエラーが発生します エラーコード:10022 エラーメッセージ:無効な引数が提供されました 原因分かる方、教えてください。
98 :
デフォルトの名無しさん :2010/03/04(木) 06:34:13
TCPヘッダ作成 IPヘッダ作成 ヘッダ連結 チェックサム あと可能な限りここも書きなよ 固有情報は適当に書き換えて
TCPヘッダ作成は下記の通りです。 /******************************************************************************** * TCPヘッダ取得 *******************************************************************************/ public byte[] getTcpHeader(Int16 selfport, Int16 destport) { TcpHeader header = new TcpHeader(); header.selfport = (UInt16)IPAddress.HostToNetworkOrder(selfport); header.destport = (UInt16)IPAddress.HostToNetworkOrder(destport); header.seq_num = 1; header.ack_num = 0; header.offset_and_reserved_and_flags = 5; // offset header.offset_and_reserved_and_flags <<= 6; // reserved header.offset_and_reserved_and_flags |= 0; header.offset_and_reserved_and_flags <<= 1; // URG header.offset_and_reserved_and_flags <<= 1; // ACK header.offset_and_reserved_and_flags <<= 1; // PSH header.offset_and_reserved_and_flags <<= 1; // RST header.offset_and_reserved_and_flags <<= 1; // SYN header.offset_and_reserved_and_flags |= 1; header.offset_and_reserved_and_flags <<= 1; // FIN header.window = (UInt16)IPAddress.HostToNetworkOrder((Int16)32767); header.checksum = 0; header.urgent_pointer = 0; return header.getBytes(); }
IPヘッダ作成は下記の通りです(パート1) /******************************************************************************** * IPヘッダ取得 *******************************************************************************/ public byte[] getIpHeader(byte[] databuf, string selfAddress, string destAddress, byte protocol) { Ipv4Header header = new Ipv4Header(); header.version_and_length = 69; header.service_type = 0; if (protocol == 4) { header.packet_length = 20; } else { header.packet_length = 40; } Random rand = new Random(); header.identifier = (short)rand.Next(32767); header.flagment_offset = 0; header.ttl = 64; header.protocol_no = protocol; header.checksum = 0;
IPヘッダ作成は下記の通りです(パート2) int startpoint = 0; int endpoint = selfAddress.IndexOf("."); header.self_ip1 = byte.Parse(selfAddress.Substring(startpoint, (endpoint-startpoint))); startpoint = endpoint + 1; endpoint = selfAddress.IndexOf(".", startpoint); header.self_ip2 = byte.Parse(selfAddress.Substring(startpoint, (endpoint - startpoint))); startpoint = endpoint + 1; endpoint = selfAddress.IndexOf(".", startpoint); header.self_ip3 = byte.Parse(selfAddress.Substring(startpoint, (endpoint - startpoint))); startpoint = endpoint + 1; endpoint = selfAddress.IndexOf(".", startpoint); header.self_ip4 = byte.Parse(selfAddress.Substring(startpoint, (selfAddress.Length - startpoint))); startpoint = 0; endpoint = destAddress.IndexOf("."); header.dest_ip1 = byte.Parse(destAddress.Substring(startpoint, (endpoint - startpoint))); startpoint = endpoint + 1; endpoint = destAddress.IndexOf(".", startpoint); header.dest_ip2 = byte.Parse(destAddress.Substring(startpoint, (endpoint - startpoint))); startpoint = endpoint + 1; endpoint = destAddress.IndexOf(".", startpoint); header.dest_ip3 = byte.Parse(destAddress.Substring(startpoint, (endpoint - startpoint))); startpoint = endpoint + 1; endpoint = destAddress.IndexOf(".", startpoint); header.dest_ip4 = byte.Parse(destAddress.Substring(startpoint, (selfAddress.Length - startpoint)));
IPヘッダ作成は下記の通りです(パート3) if (protocol == 4) { header.checksum = this.calcCheckSum(header.getBytes()); } else { header.checksum = this.calcCheckSum(header.getBytes().Concat(databuf).ToArray()); } return header.getBytes(); }
チェックサム計算は下記の通りです。 /******************************************************************************** * チェックサム計算 *******************************************************************************/ public short calcCheckSum(byte[] buf) { Int32 checksum = 0; byte[] wrkbyte; if (buf.Length == 1) { checksum += buf[0]; } else if (buf.Length >= 2) { for (int i = 0; i < buf.Length; i += 2) { if ((i + 1) == buf.Length) { checksum += buf[i]; } else { wrkbyte = new byte[] { 0, 0 }; Array.Copy(buf, i, wrkbyte, 0, 2); checksum += Convert.ToInt32(BitConverter.ToInt16(wrkbyte, 0)); } } } checksum = (checksum >> 16) + (checksum & 0xFFFF); return (short)((~checksum) & 0xFFFF); }
処理の流れは下記の通りです。 // Initialize a Socket of Type TCP socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Tcp); byte[] tcpheaderbuf = Common.getInstance().getTcpHeader(Int16.Parse(this.selfPort), Int16.Parse(this.destPort)); byte[] ipheaderbuf = Common.getInstance().getIpHeader(tcpheaderbuf, this.selfAddress, this.destAddress, 6); byte[] sendbuf = ipheaderbuf.Concat(tcpheaderbuf).ToArray(); // Send the Packet over the socket IPEndPoint ipendpoint = new IPEndPoint(IPAddress.Parse(this.destAddress), UInt16.Parse(this.destPort)); EndPoint endpoint = (ipendpoint); this.iStartTime = Environment.TickCount; socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, 1); int nBytes = socket.SendTo(sendbuf, sendbuf.Length, SocketFlags.None, endpoint); if (nBytes == -1) { return false; } return true;
書き込み制限食らってました^^; 以上がソースですが、まだネットワーク系を勉強中なため、基本的なことが抜けてたらご指摘ください。
SocketType.Rawは使ったこと無いけどConnectしてないのが悪いみたいだな 変更後の例でもsocket.Connectをコメントにするとエラーになるし Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Tcp); TCPヘッダ作成 IPヘッダ作成 ヘッダ連結 チェックサム int nBytes = socket.SendTo(sendbuf, sendbuf.Length, SocketFlags.None, endpoint); ↓ Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); TCPヘッダ作成 IPヘッダ作成 ヘッダ連結 チェックサム socket.Connect(endpoint); //int nBytes = socket.SendTo(sendbuf, sendbuf.Length, SocketFlags.None, endpoint); //ソースみたら内部でoffset指定タイプを呼んでるだけだった int nBytes = socket.SendTo(sendbuf, 0,sendbuf.Length, SocketFlags.None, endpoint);
109 :
デフォルトの名無しさん :2010/03/04(木) 07:46:10
EEじゃないのならMSからソースなどを入手して 自分のプログラムと一緒にトレースしてみた方がいいかもね
2chに貼られても読む気がしねー うpろだに丸々うpしる!
>>92 onclickのスクリプトコードそのものが欲しいのならOuterHtmlから切り出すくらいしかないはず
コード手に入れて何したいのか知らんけど
関係ないけど、offset_and_reserved_and_flagsはflagsなenumか定数にでもしとけ
>>111 そこにクリック後のURLの一部が書いてあって
それを使えばわざわざクリックしてページを開かなくてもいいことに気づいたので
利用しようと思っていたのです
OuterHtmlでいけました
ありがとうございます
114 :
デフォルトの名無しさん :2010/03/04(木) 16:36:28
デザイナーで配置したコントロールのNameを一括変換とかする方法はありますか? プロパティ開いてNameをシコシコ書き換え?
もとの名前に何かルールがあるなら フォーム名.csとフォーム名.Designer.csを正規表現置換 ないなら一括変換機能がもし仮にあったとしても無理だと思うよ
116 :
デフォルトの名無しさん :2010/03/04(木) 17:11:25
>>115 レスありがとうございます。
やっぱり外部ツールとかで正規表現かけるかデザイナーのプロパティのところでNameを変更して
デザイナーに関連項目の名称置換を行ってもらうとかになりますかね・・・
>>72 なんですが
ドロップダウンで選択するものは全部すぐ閉じます
あと、スニペット挿入時で出るウィンドウを一瞬で閉じます
どなたかこの対処法ご存じないでしょうか?
どこかキーボード押しっぱなしになってない?
っマウスを買い換える
>>116 いや普通に
>>115 の2つのファイルをエディタで開いて
VSの置換機能で置換するだけ
ただしコントロールのアクセスレベルがprivateの場合に限る
>>118 特に何もしてないdす
久しぶり起動してそれまでにいくつか常駐ソフトやいろいろなソフトいれたので
それが影響してるのかもしれないが、一応常駐しているのはすべて切ったけどだめだった
コンテキストメニューはちゃんと開くんだけど、スニペットのウィンドウだけ違う方法で開いているのかな
>>119 買ったばかりです・・
スニペット挿入はどういう操作で閉じるか教えていただけませんか?
C#4.0ではExcel2007みたいなリボンとか作れるようになるけど どうせある程度慣れたらCtrl+Dみたいなキーボード操作しかしなくなるからでっかいボタン表示してもうざいだけだな・・・ リボンとか意味のない機能だ
Officeくらい機能盛りだくさんでないとあんまり使い道ないわねぇ、リボン。
124 :
デフォルトの名無しさん :2010/03/04(木) 22:43:46
>>123 候補はある>2chブラウザ
あとwindowsを搭載したタッチパネル系デバイスがイマイチ普及しないのは
windowsの基本UIが小さすぎるのでペンなどの先が細い物じゃないと使いにくい
というところがあったからなんだよね・・
タッチ前提になると変わると思うよ
ただおofficeはそもそもタッチで使うことはないので意味ないだろうけどw
エンターテイメント要素がある物には有効だよ
いやリボンはタッチパネルを想定してアイコンでかくなってるわけではないでしょ。 っていうか、汎用OS上のアプリに限れば、タッチパネルは指をポインティングデバイスに しようって発想じゃなくて、むしろマウスジェスチャー的な補助的操作の 延長線上のものでしかないと思うけど。 あと、リボンは、たとえカスタマイズ可能になっても作業領域や表示領域を 広くとりたい用途(例えばワード)には全然向かないね。
ケチくせーこと言うなよ。 じきにモニターの解像度が20000*10000とかになるって
使う前は叩いてたけど、実際に触ってみたら結構快適で気に入った。 作業領域を広くしたい時は隠せばいいじゃん。
>>126 解像度上げてもフォントが読めるサイズでないと話にならないから
モニターのインチが大きくならんと意味なかろう
俺のはすでに24なんだが、この数倍のモニターは部屋に置けねーよw
>>126 モニタは今くらいでいい
HMDをそれくらいにしてくれ
>>128 文字を大きくすると意味ないしなぁ。
必然的にモニタサイズ大きくする必要があるわけで、27インチが俺の射程距離内
に入ってきますた
マルチモニタおいしいです
うん
リファラ設定していろいろダウンロードできるようになったけど MMSのストリーミング動画の落とし方がわからない・・・
GAS使っとけ
GASでできるけど タイトル変えたりするのが面倒だから 自分で作ろうと奮闘してるんだが むりぽww
////////////////////////////////////////////////// public void button1_Click(object sender, EventArgs e) { int y = int.Parse(textBox1.Text); int x = int.Parse(textBox2.Text); int _y = 520 * x / y; textBox3.Text = Convert.ToString(_y); } /////////////////////////////////////////////////// Form1の中なんですけど、デバッグ中にボタンおしてもtextBox3に変化がない どうすればいいんでしょうか? よろしくお願いします
138 :
デフォルトの名無しさん :2010/03/05(金) 10:29:33
イベントハンドラが設定されてないとか? buttonのclickイベントでその関数呼ばれるようにしてある?
public……そのメソッド手で直接追加した?
>>138 ちょこっと探してきたら,これがあったので大丈夫ですかね?
this.textBox3.TextChanged += new System.EventHandler(this.button1_Click);
>>139 見る人が見れば分かるんですね
元々はprivateで書かれてて、それでいろいろと試行錯誤をしてみたんですよ
まぁ、それの跡ですねw 一応直しておきました
>>140 ちげーよw
ボタンが押されてもbutton1_Click(object sender, EventArgs e)これが呼ばれてないから
変わらないんだろうw
メソッドの名前は便宜的なもので、button1_Clickという名前でもbutton1のクリックとは関係ない で、明らかにtextBox3のTextChangedのときに呼び出されるようにしてるじゃん
143 :
デフォルトの名無しさん :2010/03/05(金) 11:00:51
windowsでプログラム組む上での基本的な仕組みを分かってないのは痛いな
144 :
デフォルトの名無しさん :2010/03/05(金) 11:03:28
というか分かっててあえて分からないフリして釣ってるようにも見える
>>141 ,142
フォームのデザイナでもう一回メッソド作り直したら、
正常に動きました
>>143 おっしゃるとおりだと思います
勉強し直します
ありがとうございました
>>136 そういう時はGASを制御するアプリを作るんだ
>>146 ダウンロードするリストだけ自前で作って
MMSをダウンロードするソフトに読み込ませてdlした方が早そうですね
148 :
デフォルトの名無しさん :2010/03/05(金) 16:34:44
ねえ。。俺もそれで(
>>137 )迷ってたんだけど・・・
解決方法がわからん・・誰か教えて。。
Form1_ClosingとnotifyIcon1_DoubleClickを手で直接入力しちゃったんだけど・・
たしか、VB6だと、オブジェクトをフォームデザイナの左のコンボボックスで選択して右のコンボボックスで
適したイベントハンドラを選択できるようになってたんだけど・・
VC#2005Expressだとやり方わかりません。すみません、誰か教えてください。。
自動プロパティをして、後でフィールド変数が欲しくなった場合 すべての変数を書き換える作業をしないとダメなんですか? public string Name{get;set;} public void hoge() { Name="hage"; ←こういうの全部 _name に書きかけなきゃならないの? } だったらやっぱり、最初からフィールド変数使った方が楽な気がするんだけど
150 :
デフォルトの名無しさん :2010/03/05(金) 16:39:02
>>149 別に内部だからってプロパティに代入しちゃダメな訳じゃないが?
152 :
150 :2010/03/05(金) 16:44:24
まだイベントハンドラが無い場合は作りたいイベントのところでダブルクリックすれば 勝手に作ってくれる
内部も外部もプロパティで制御するのか・・・その方が便利か
155 :
デフォルトの名無しさん :2010/03/05(金) 17:48:01
クラスについて教えてください。 (1)クラスを呼び出すとき、別スレッドにするには、どうしたらよいですか。 おなじ名前空間にあるクラスを呼び出しています。 クラス名 名前 = new クラス名(); 名前.メソッド名(); で呼び出すときに、スレッドにするにはどうしたらよいですか? (2)この処理って、終わったら、呼び出したクラスに関するいろいろはぜんぶ自動的にdisposeされるんですか? それとも、 名前.Dispose(); と処理する必要があるのですか? 以上2点、よろしくお願いします。
157 :
デフォルトの名無しさん :2010/03/05(金) 17:55:03
>>156 いや、ぜんぜん賢くないし。
get/setなんて使ったことないです。
ごめんなさい。
>>155 スレッドとクラスって関係ないし
Disposeなんて所詮そう言う名前のメソッドに過ぎないんだからusingもせずに勝手に呼ばれるとかないし
はじめから >public string Name{get;set;} こんなのしなければいいだけ
>>149 Nameプロパティをリファクタリングで_nameに名前変更
_nameプロパティの宣言をフィールドの宣言に変更
Nameプロパティを設けてgetとsetを書く
ん?
>>160 いやいや、それだと外部からそのプロパティを参照しているところも
全部_nameになるじゃない・・・
>>161 プログラマなんだから英数字や記号は半角にしか変換できないようにIMEセッティングすべき
>>163 じゃあクラス内の文字列置換なんかですればいい
public class StreamDataSet { public string URL = ""; public string Title = ""; } List<StreamDataSet> SrcList=new List<StreamDataSet>(); StreamDataSet src=new StreamDataSet(); src="ww.google.ne.jp"; if("-同じURLが既に追加していなければ-") SrcList.Add(src); if文の条件式にどのように書けばいいか迷ってます この場合SrcListに同じURLがあるか探すにはForeachで ひとつひとつ照らし合わすしかないですか? List<string>だと.Findメソッドなどで簡単にできるけど オブジェクトだった場合のやり方がわかりません よろしくおねがいします
>>166 一般には
if (!SrcList.Any(x => x.URL == src))
でも効率が悪いのでIComparer<T>を実装してBinarySearchを使うのがいいと思う
>>168 srcは多分StreamDataSetだと思う
その次の、フィッシングサイトみたいなURLのあるコンパイルエラーになる行が気になるけどw
あと、効率考えるならDictionaryを使うことを検討した方がいいと思う
>>166 のケース限定であればListじゃなくてDictionary使うな。
すいません。書き間違えてました。 × src="ww.google.ne.jp"; ○ src.URL="ww.google.co.jp"; ID付きで追加削除したりするならはじめからDictionaryにしておくべきでしたね 使い勝手がいいからList<>を使っていたけど、データ構造はもうちょっと慎重にすべきでした ありがとうございました
172 :
デフォルトの名無しさん :2010/03/05(金) 21:01:03
>>158 ?
(2)は自動的にDispose()はされないってことですか?
>>167 ありがとうございます。
挫折しました。
まだぜんぜん読めるレベルでありませんでした。
されるかもしれないしされないかもしれない それはクラスの実装次第 後処理が必ず必要になるようなクラスではGCされるときに自動的に後処理が行われるように 作ってあるはずだけど必ずしもそうだともかぎらない でもそれはクラスを書いた奴が悪いのでそこまで考えても意味がない
174 :
148 :2010/03/05(金) 21:25:13
>>150 さん
どうもありがとうございます。その方法でできました。。
助かった〜。ひさしぶりにプログラムやってみまして、
ウィンドウ右上の×印クリックしたときの挙動が違ったので
困っていました。
ちょっと所要で出かけていたので、お礼が遅くなりました。すみませんでした。
ありがとうございました。
175 :
148 :2010/03/05(金) 21:28:25
画像までキャプチャーしてアップしてくださり、どうもありがとうございました。
(´・ω・`)
よくデスクトップ右下あたりからにょきにょきっとバルーンが出てるけど C#で作れますか?
うん
にょきにょき環を上手く出すにはC#ではどうすればいいですか、
No results found for "にょきにょき環". すまん、説明を頼む
石塚英彦が大山のぶ代の物真似で「ニョキニョキリング!」って叫ぶ声が 聞こえた気がした。
183 :
148 :2010/03/06(土) 02:48:38
>>177 君の「C#」「バルーン」というキーワードに咥えて「タスクトレイ」という3つを スペースで区切ってグーグルで検索するとたくさん情報がでてくるよ(´・ω・`) デスクトップの右下あたりをタスクトレイというんだよ(´・ω・`) 。
豪鬼くんありがとう
右下じゃないが?
10年間、「タクストレイ」を「タスクレイ」と思ってた
Windows 8 新機能 タ ス ク R A Y
>タスクトレイ 実はそんなものはない。
正式名称は通知領域だって? microsoft.comの中の人もうっかり使うぐらい普及してんだからそんな指摘はナンセンス
タスクバーのプロパティのダイアログにははっきり通知領域と書いてあるんですがね。
そもそも.NET 4.0自体まだ製品はでてないのだが Monoだって.NET4.0相当品はまだRCだろ精々
>>191 手元にないから確認はできないがコンパイラはdmcsらしい。
gとかdとかどういう基準のネーミングなんだろ。
mcs # C#1.0
gmcs # C#2.0-3.0
smcs # moonlight
dmcs # C#4.0 preview
にょきにょきってCravingExplorerのダウンロードが 終わったときにでるやつじゃなくて? ただのバルーンなの?
195 :
デフォルトの名無しさん :2010/03/06(土) 11:13:36
ローカル変数の名前をつけるとき、変数の型が int だったら n とか i とかつけちゃうような 場面で、string[] だったらなんて名前にする? int n; string[] ???; 慣用的な名前ってある? 具体的には、 var ??? = text.Split(new[]{'='},2); var key = ???[0]; var value = ???[1]; みたいな場面で使いたいんだ。
splitted
pairとかtmpとかやっちゃうな
Splitの戻り値はfieldsにしたりする
parts
s
複数のstringだからss
>>195 string[] って型だけでは、慣用はない。
用途・意図に基づいた名前付けないと。
自分はSplitの戻り値はtokensとか多用。
tmpStringsかな。 変数名は書く人のポリシーみたいなのが出て面白いな。 俺はnとかiとかは絶対使わない派かな。
tmpStringsならnやiと一緒じゃね
一文字じゃなきゃいい、とか訳わかんないルールなんだろ?
変数名に型情報入れるのはなしだなぁ。 n とか i よりよっぽど悪い。
itemsとかやってしまうな
>>204 のネーミングはおいらは使わないが、
tmpStringsを型情報というのも賛同できないな
つってもintだったらtmpIntsなんだろ
Employee[]をemployeesと名付けることはあってもstringsはないな 漠然としすぎ
Employee[] な変数に格納するのがほんとに漠然と従業員全員なら employees にするけど、 LINQ とかで条件絞るとまた別の名前にするしね。 漠然と strings はちょっと範囲広すぎると思う。
単に末尾にsつけたんじゃ配列だかListだかDictionaryだかわからないから lstとかdicとか頭につけてるが、これもハンガリアン的なアレなんだろうか
>>212 ハンガリアンそのものでしょ。
今時そんなことやる人いるのか。
「型名」を「略号」で変数名に組み込むより、
「機能」を「明示的に」変数名に組み込む方がずっと合理的だとは思わないのかな。
ローカル変数のうちでも狭い範囲でしか使わないような変数の名前なのだから 機能うんぬんもちがうんじゃないかい。 配列だったら ar lst dm あたりを使ってるな。
216 :
デフォルトの名無しさん :2010/03/06(土) 14:08:33
arrでいいだろ、どうでもいい
>>215 なんなのその「なのだから」って。
幻聴持ちですか?w
まああまり感情的になって煽りに走ったりせず 冷静に話しましょう
自分だけかもしれないけど、形式的に名前付けちゃうと スコープ広くして使いまわしたくなるんだよね 変数名自体よりもそのほうが問題
>>195 単語帳みたいなイメージでwordsでつける
222 :
195 :2010/03/06(土) 14:33:11
トン。
慣用されてる名前はないのか。
じゃあ、
>>225 が決めてくれ。
そもそも、intだってiだのnだので必要十分な場面がそう多いとも思えんけど。 まして文字列なんてもっとそうだろう。 もしそんな場面があるなら普通にsでいいと思うけど。
224 :
220 :2010/03/06(土) 14:50:25
int nとかやると、あとでまたintの変数が欲しくなったときについ 新しい変数を宣言せずにnをそのまま使い回したくならない? 一文字変数がどうとかいうよりそういうのがコードを分かりづらくすると思うんだ ループカウンタなんかはそもそも使いまわすわけがないのでiでも問題ないけど
候補は出てるんだから自分で決めろ
命令口調クンって馬鹿だな、まで読んだ。
nとかiとかはさすがに使い捨て目的で、それを使いまわすってことは無いだろう
228 :
191 :2010/03/06(土) 16:02:42
>>193 コマンドのdmcsはおそらくなくなってます。gmcsだけに統一されたのかも?
TPLってオープンソースじゃないんだな DLRやMEFみたいにMS-PLで公開されてるのかと思ってた
(from x in items.AsParallel() where x.A < 3 select x.B).ForAll(x=>時間のかかる処理(x)); もう異次元すぎるな こんなの書く日が来るんだろうか
中途半端にクエリ式混ぜないで、全部メソッド形式で書く方がマシ。
クエリは保守性が一気に落ちるからな。
234 :
195 :2010/03/06(土) 18:16:42
>>225 がきっとボケてくれると思って振ったのに、
ぼけてくれなくて残念。
ちょい補足。
ruby みたいに多重代入があれば、
key,value = text.Split(new[]{'='},2);
としたいところだが、それができないので一時変数名を決めないといかん。
そんな場合にどうするか。
自分は、ひとに見せる予定がないときは手を抜いて a (arrayの意)。
人に見せる予定があるときは、ary,tokens とかなんだけど、
ソースを読んだ人がわかりやすい名前があればそれに
しとこうと思って、皆に聞いてみました。
最初の頃はフォームアプリで作成していたんだけど 簡単なプログラムの場合、コンソールで作った方が早いと気づいて 最近はまずコンソールアプリを作って、それを制御するフォームアプリを作るように しているんですが、おかしいですか?
うん
237 :
デフォルトの名無しさん :2010/03/06(土) 19:18:12
>>235 好みの問題でしょ
VC#ならEEでもGUI作るのは簡単だし
VC++のネイティブとなるとエディションによってはいろいろ面倒だけど
好みの問題じゃないよ。
好み、つーか何をつくりたいかある程度明確にしてから作り始めるんじゃないのか、普通は。 途中で変更はあるにしろ。
240 :
191 :2010/03/06(土) 19:28:48
自己解決です。 SVNからビルドしたらできるようになりました。
>>204-210 いやいや、
>>195 の例では何のワークかわからんし、テンポラリの文字列という意味でtmpStringだよ。
もっと何の用途にというのがわかれば、具体的な名前つけるけど。
俺からは
>>196 とか
>>197 のようなsplitで分割するからsplitted、keyとvalueのペアだからpairとか
そっちの方があり得ない。
まあ、俺が馬鹿という結論でいいよ、この手の論争は疲れるし。
コンソールアプリとそれを制御するGUIフロントエンドの形態って ロジックと外観の分離ができてるから良いかもね
243 :
デフォルトの名無しさん :2010/03/06(土) 20:36:22
コンソールアプリっていきなりDOS窓が開かないようにできたっけ?
子プロセスとして起動するならコンソールが開かないようにはできるな ていうかDOS窓とかすでに郷愁を誘う言葉だ
アプリ側では無理。
246 :
デフォルトの名無しさん :2010/03/06(土) 20:43:01
データ処理側はローカルproxyのようなスタイルで分離して テキストを投げてもらうとかもいいかもね
なんでDOS窓が邪魔なら素直にクラスライブラリにしないのw 意味がわからんよ
249 :
デフォルトの名無しさん :2010/03/06(土) 20:48:40
>>247 まあやり方はいろいろあるからなんでもいいんじゃないの?
処理部分はC/C++で書いて・・・とかあるとDLLとして使うのもいいし
裏でサービスとして起動しておいて汎用的なアクセスにするでもいいし
>>247 コンソールアプリはコンソールアプリで楽に自動化できるからあればいいじゃない
で、先にコンソールアプリがあるなら一々クラスライブラリ化するより
GUIアプリはコマンドライン用の文字列作ってコンソールアプリに丸投げした方が手っ取り早いじゃない
ないわぁ
ハンガリアンやめたのはMSの大失敗 一目で型が分かるアレは便利だった ハンガリアンに批判的なのは低脳プログラマに多い
プリミティブな変数は使わない方向なんだから ハンガリアンはなくなって行く方向なのは間違いない
プロセス間 I/F のひとつとしてコマンドライン‥‥実行ファイルへのコマンドラインパラメータ?で渡すのはアリじゃないかと。 単純なパラメータで済むなら楽と言えば楽だし。
255 :
デフォルトの名無しさん :2010/03/06(土) 21:09:52
>>252 それを.netスレでいうのはかなり痛いぞ
.netで開発してると過去のみみっちい省略がアホくさく思える
タダ単に古参ギークが新参をバカにしたいだけにしか見えない
アセンブラからいろいろやってきてるが古いやり方で駄目な物は変えるべきだし
変わってる以上は受け入れるべき
こだわってるってことは新しいことについていけない昔を懐かしむだけの
老人に見える。
>>254 普通にメソッド呼び出しできた方がずっと楽だと思いますがw
バッチファイルやWSHとか、.NET以外の言語からも弄れるようにしたいのならともかく、
.NETの世界で完結していいのならわざわざコンソールアプリにする意味ってあるのかしら。
>>255 どうせ釣りだろうにそうムキにならんでも....
ただ、クラス名にCを付ける習慣まで否定しなくてもよかったんじゃないのかなとは
個人的にはちょっと思う時がある。
そのくせなんでインターフェイスだけIでプリフィクス推奨なんだろう。
IDEでの開発を前提として実用性を第一に考えた時に インターフェースがIから始まってたらクラスの山の中からすぐ探せて便利。 クラスのPrefixがCだとタイプ数が1回増えるだけで意味ない。 てな結論に至ったんじゃない?
258 :
デフォルトの名無しさん :2010/03/06(土) 22:05:21
>>256 >ただ、クラス名にCを付ける習慣まで否定しなくても
クラスの塊なのにC付けたらウザいだろ
splitted www
>>256 だから選べる手段のひとつとしてだってばさ。w
プロセス分割の基準はいくつもあるだろ。
> バッチファイルやWSHとか、.NET以外の言語からも弄れるようにしたいのならともかく、 そこ除く意味が分からない
そもそもそんな話は出てなくて、Windows フォームアプリなのにコンソールで作り始める、 ってことだろ。
この言語より手早くにフォームアプリ作れる言語ってある? より簡潔な言語とデザイン画面での操作性にすぐれたもの 多分フリーだとこれ以上のものはないよね?
264 :
デフォルトの名無しさん :2010/03/06(土) 22:30:41
VB
266 :
デフォルトの名無しさん :2010/03/06(土) 22:37:17
タダじゃねーだろ
あれこれやらないのであればAccessの方が簡単に出来るな。 フリーじゃ無いが。
notifyIconについて質問です。 Windows XP以降のOSでアクティブでない通知アイコンが隠せるようになりましたが、 notifyIconをアクティブな状態にするにはShowBalloonTipしかないのでしょうか。 独自のフォームで通知を行い(メーラーやウィルスチェックソフトのように) その際に通知アイコンを表示したいのです。
269 :
デフォルトの名無しさん :2010/03/07(日) 00:19:08
これだけは言わせてくれ。 tmpString はないわ。
270 :
デフォルトの名無しさん :2010/03/07(日) 00:34:01
意味不明だが、その独自のフォームの通知イベントのときにnotifyIcon.Visible = trueにすればいいだけの話ちゃうの? Formにしろ、notifyIconにしろVisibleプロパティをtrueにすりゃ、アクティプになるだろう・・と思うんだけど
2001のころからやっているけど 未だにまともなプログラミングができないおれ涙目
文法からやりなおすんだ
>>270 Windows 7で確認していますが、
Windowsの通知領域アイコンの設定が「通知のみ」になっているとバルーンを出したとき?にしか
表示されなくなるんです。
これを、バルーンを出さずに一時的に表示する方法がないかな、と。
Visibleの変更は試してみましたがだめでした。
独学だとつらいだろうね。 いろんなプロジェクトに参加していいところを吸収できれば短期間でもすくすくと成長できる。
フォームアプリ作る場合いつもProgram.cは手付かずなんだけど このクラスって何に使うべき?
例えば重複起動禁止処理とか
コマンドライン引数の処理とか 二重起動を弾くとか
while ( true ) {
new Form1().Show(); }
ブラクラかよw
281 :
デフォルトの名無しさん :2010/03/07(日) 08:24:00
>>271 専ブラでも作れ
GUIの作り方からいろいろ学べるぞ
282 :
デフォルトの名無しさん :2010/03/07(日) 09:14:39
.NET 1.1(C#)でFTPクライアントアプリの作成はどのように行えばよいですか?
誰かライブラリ作ってないか探してみて見つからなかったらTCPを自分で喋る
KBにあるからそれを使う。
1.RFC読んでFTPを理解する。 2.System.Net.Sockets で実装する。 3.できあがり。
wininetを使うのが一番簡単
287 :
デフォルトの名無しさん :2010/03/07(日) 11:14:30
英語苦手だとクラスの名前考えるだけで苦労する urlを与えるとhostとか細かく分解処理して管理するクラスだとなんて名前付ければいいだろうw
System.Uriじゃだめなの?
289 :
デフォルトの名無しさん :2010/03/07(日) 11:21:26
>>288 host+その他
以外もできましたっけ?
以外が何を指してるのか分からんが取り敢えずメンバ一覧確認すれば
291 :
デフォルトの名無しさん :2010/03/07(日) 11:38:53
urlparse
>>281 2ちゃん専ブラって自分用にいろいろカスタマイズしたいし
作ってみたいんだけど参考サイトがあんまりないんだよね
ツインテールの初期のソースとかあったら見てみたいんだけど
今のソースは規模が大きくてもう理解不能
規模が小さければ理解できるんなら、時間さえあれば理解できるってことだ。
>>243 コンソールアプリで作って、プロジェクトの出力の種類をWindowsアプリケーションにすればOK
コードが時系列に並んでいないので 頭の中で実行プロセスをイメージしながら ソースを見ていると混乱する 少し時間が経ってからクラスやメソッドを見ているとき これがどのタイミングで実行されるかすぐにはイメージできない ある動作をさせるとき多くの手段があり過ぎて迷う
>>296 なんかダメグラマ具合が文章にも出てるね。
文章力とプログラミング能力って相関がありそうだもんなw
論理性に長けてるかどうかだもんな。
299 :
デフォルトの名無しさん :2010/03/07(日) 18:20:17
初心者が特にイベントドリブンで混乱するのはわかる気がする 処理が細切れになって頭の中でイメージしにくい
イメージしにくいですね
同じ処理が10回あれば10回記述する、とかじゃなきゃ どんな言語だって多かれ少なかれそんなもんだろ
それは、たぶん問題の取り違えだと思うよw イベントドリブン「だから」混乱するんじゃない。 イベントドリブン「ですら」混乱するんだよ。
大昔の割り込み処理もイベントドリブンといえるんだろうか
305 :
デフォルトの名無しさん :2010/03/07(日) 19:57:48
>>304 まあいえるんじゃないの?
マウスが動いたら〜、サウンドボードのバッファーが空になったら〜
割り込みは(普通は)応答時間を小さくするために使うものだから 目的は全然違うけどね。 っていうか、割り込み処理って別に大昔じゃないだろうw マルチタスクOS上のアプリのコーディングでは使わないだけでしょ。
逆に言うと普通のアプリの場合については大昔になるわけで
何がどう「逆」なのか意味がわかりません。
309 :
デフォルトの名無しさん :2010/03/07(日) 21:34:14
とあるテンプレート <div> <h2>[VAR1]</h2> <p>[VAR2]<p> <div> があるとして、 [VAR〜]に値を流しこんでいきたいのですが、 どんな方法がありますでしょうか。 テンプレートは、 - div: - h2: VAR1 - p: VAR2 のようなYAMLでもJSONでもなんでもいいのですが、 とにかく、同じようなデータセット?をテンプレートに流し込みたいです
Replace()
311 :
デフォルトの名無しさん :2010/03/07(日) 21:49:22
データグリッドビューでカレントセルが変わったときに private void dataGridView1_CurrentCellChanged(object sender, EventArgs e) で処理してるんですけど、処理が終わるまでカーソルの移動がわかりません。 先にカーソルを移動させたいんですけど、どうしたらいいでしょうか。
312 :
デフォルトの名無しさん :2010/03/07(日) 22:12:01
>>310 ありがとうございます。
なるほど、普通に置換すればいいのか。
連続で申し訳ないんですが、
フォルダのパスなどの定数ってどこに書くのが適切ですか?
不変値なフォルダパスって一般的ではない気がする アプリケーション構成ファイルとかに書かない?
>>311 重い処理するならUIをブロックしないように非同期にする
315 :
デフォルトの名無しさん :2010/03/07(日) 23:15:35
>>314 それしかないんですね・・・
ありがとうございます。
(´・ω・`) ………あ!
318 :
デフォルトの名無しさん :2010/03/08(月) 05:53:43
Foo f=new Foo(); f.Run(); と Foo f=new Foo(); Thread t= new Thread(new ThreadStart(f.Run)); t.Start(); t.join(); はほぼ同じ動きをすると考えていいですよね? 後者にするとすごく遅くなるんですけど これは余計なことやってるからだけなんでしょうか?
319 :
デフォルトの名無しさん :2010/03/08(月) 08:26:13
5月とかまた先延ばしにしたな
320 :
デフォルトの名無しさん :2010/03/08(月) 08:29:09
>>313 プロジェクトプロパティの
リソースや、設定っていうタブのことですか?
321 :
デフォルトの名無しさん :2010/03/08(月) 11:19:46
リストビューだろ。
323 :
デフォルトの名無しさん :2010/03/08(月) 11:25:19
ありがとうございます!!
おれは app.config に出して、ConfigurationManager で読み出し、かな。
>>324 あれってよくわからんが、自分でapp.configとかいう名前のファイル作って
そこに書きだすのとどう違うんだ?
C#使っててPythonのが楽なときってある? デスクトップアプリで
>>326 色々あるけど機能としては
IDEが自動的に型指定されたプロパティとしてSettings.名前でアクセスできるラップクラスSettingsを用意してくれる
ユーザースコープの方はSettings.Default.Saveで簡単に保存できる
とか 自分もこういう基礎的な部分以外は使わんから詳しくないけど
アプリケーション設定でもapp.configを使うんだけど
普通直接app.configに値を埋め込む場合は普通configuration/appSettingsを使うのに対して
configuration/configSections/sectionGroupを使って別ツリーに書き出す
Dictionaryのキーだけ保持したようなクラスありますか?
HashSet<T>
HashSet<T>がそれですか。 ありがとう。
というか、集合(set)を実現したいというならちゃんとそう説明しないと、 Dictionary<TKey, TValue>.KeyCollection とか答えちゃうぞ
>>332 一般的な呼び方がわからなかったので329のように書きましたが
以降はそうさせてもらいます。
ロギングについて質問です。 例外発生時にエラーログを出力したいのですが、 後で統計などを取るためにプログラムから読みやすい形を考えています。 ただし、バイナリはNGにしたいと思います。 独自のErrorクラスを作って、その配列をXmlSerializerや SoapFormatterでSerializeというのを考えたのですが、 こういう手法というのは一般的に見てどうでしょうか。 書き込むのにDeserialize→配列に追加→Serializeという手順になるので、 パフォーマンス上は不利だとは思いますが、 試しに3MB位までログ容量を増やしても体感上は遅延は感じませんでした。 本番運用では100KB以内で収まる程度だとは思います。
専用のTraceSourceというクラスを使う XMLにも出力できる
>>327 ないね
かなり小さいコードでもインテリセンスに頼った方が早かったりする
スクリプト言語はコンパイルが不要なことに意義がある
log4netとか使っちゃうな。
sage
339 :
334 :2010/03/08(月) 20:39:59
>>335 ,337
ありがとうございます。調べてみます。
>>337 あれ結構便利だとは思うけど
やれる事が多いだけに設定がめんどくせぇ・・・
俺の中では設定ファイルの中身グチャグチャにされるイメージがでかいかな・・
今は必要な機能だけ持った独自のログ機能自作して使ってるわ
341 :
デフォルトの名無しさん :2010/03/09(火) 12:45:06
bmpのファイルのロックを解除する方法を教えてください。 WPFでjpg画像を読み込んでいます。 BitmapImage bmp = new BitmapImage(); bmp.BeginInit(); bmp.UriSource = new Uri(fileName); bmp.CacheOption = BitmapCacheOption.OnLoad; bmp.EndInit(); これで、jpgが壊れているときに、 bmp.EndInit(); でエラーになります。 そこで、これ全体をtry-catchして、エラーが出たらDisposeしようと考えました。 catch{ bmp.Dispose(); Close(); } としたのですが、bmpにはDispose()が見当たりません。 どうやってDisposeして終了したらよいでしょう? WPF掲示板は初心者の質問には答えていただけないようなので、 こちらに来ました。 よろしくお願いします。
最近この板でキモいC#信者が暴走してるから自重するように
343 :
デフォルトの名無しさん :2010/03/09(火) 12:59:43
>>341 以前とあるソフト書いたときはこんな感じにしたな
FileStream fs = new FileStream(save,FileMode.Open);
b = new Bitmap(fs);
fs.Close();
fs.Dispose();
これだと自分でdiposeできるのでロックがかかったままにならない
どこかにこれはあったはず(@ITあたりにサンプルコードあったはず)
>>343 それSystem.Drawingや、と
まあWPFでも同じ回避方法になるね
UriSourceじゃなくてStreamSourceを使う
ていうかこれはバグだなー
345 :
デフォルトの名無しさん :2010/03/09(火) 13:04:37
346 :
デフォルトの名無しさん :2010/03/09(火) 13:06:27
>>344 バグというか仕様というか仕様考慮漏れというか
GCをあてにする言語なんでこういう仕様も許容範囲かと
コード書く側でまったく対処できないなら問題だけどね
347 :
デフォルトの名無しさん :2010/03/09(火) 13:10:12
>>343 の補足
saveってのはこの前のロジックの都合でそうなってるだけで
fileNameとか自分の環境にあったのに書き換えてね
>>346 いや、内部でStream作ってるんだからそれを例外時にCloseしないのは問題でしょ
「using使えよ」的な話
ストリームをCloseしたときに例外が出たって状況ではないんだから
349 :
デフォルトの名無しさん :2010/03/09(火) 14:03:42
>みなさんありがとうございます。 が、下記のコードで、画像が表示されなくなりました。 読み込めていないようです。 どこがまずいでしょう? BitmapImage bmp = new BitmapImage(); try{ //FileStream fs = new FileStream(fileName, FileMode.Open); //bmp = new BitmapImage(); //fs.Close(); //fs.Dispose(); bmp.BeginInit(); //bmp.UriSource = new Uri(fileName); bmp.StreamSource = new FileStream(fileName, FileMode.Open); bmp.CacheOption = BitmapCacheOption.OnLoad; bmp.StreamSource.Close(); bmp.StreamSource.Dispose(); bmp.EndInit(); }catch{ Close(); }
EndInitする前にCloseしたらそりゃダメだろ… あとCloseとかDisposeとかは明示的に呼ぶんじゃなくてusing構文で
なんでusingという名前にしたんだろうな?まぎらわしい( ・ω・)y─┛〜〜
正常な場合はCloseしちゃだめ。 基本的にオープンの状態を維持して読み直せるようにしないといけない。
>>352 BitmapCacheOption.OnLoadの場合ロード時=EndInit時にデータを全部メモリにコピーしちゃうから
元Streamがどうなろうがしったこっちゃないよ
354 :
デフォルトの名無しさん :2010/03/09(火) 14:25:28
その辺うまく使いこなせないならMemoryStreamで読み込みできるように 自分でメモリに上げちゃえばいいんじゃないの?
355 :
デフォルトの名無しさん :2010/03/09(火) 14:54:55
>みなさんありがとうございます。 bmp.EndInit(); bmp.StreamSource.Close(); bmp.StreamSource.Dispose(); と順番を変更してうまくいきました。 ありがとうございました。
配列に入っている値の符合をプラスから全部マイナスにしたいんだけど、簡単に出来る方法はないですか? もちろんループをつかって全部−1を掛け算すればいいんだけど、ビット演算とかで簡単にできないかなーと思って
ループが一番簡単だろ
最近は2の補数とかやらないのか・・・
それ以前に配列なんだからループ以外にどうしろと
360 :
デフォルトの名無しさん :2010/03/09(火) 15:30:25
>>356 int32の場合だと-1かけるっていうのは0xFFFFFFFFをかけるってことだけど
素直に計算したほうがいいんじゃないの?
参考までに
1*-1は0x00000001*0xFFFFFFFF=0xFFFFFFFF
2*-1は0x00000002*0xFFFFFFFF=0xFFFFFFFE
以下略
余計なシフト演算するくらいなら掛け算したほうがいい気がする
意地でもループを使わずなんとかするって方向ですか?
うん、ループ怖いし
-1 をかけるって、実際にはループの中で a[i] = -a[i]; だろ。 これより高速な方法なんてある?
365 :
デフォルトの名無しさん :2010/03/09(火) 15:54:32
x86だと命令を繰り返すための命令もあったけど そういうのを除けばすでに言語はあまり関係ないよな・・・
そんなもん数万回やってやっとms単位の差が分かる程度だろ。意味ない。
どうしてもループしたくないならこういう感じで行けるんじゃないかな int[] val = new int[10]; var tmp = from n in val select n * -1; var minus = tmp.ToArray();
それ結局ループしてね?
369 :
デフォルトの名無しさん :2010/03/09(火) 16:19:48
だから言語は関係なくてループを書かないってのはできないんじゃね?といってる 再帰でやるほどでもないだろうし
できんこたないだろ a[0] = -a[0]; a[1] = -a[1]; ・・・ さあ全部書くんだ
手段のためなら目的は選ばない
完全にネタ化してきたな
373 :
デフォルトの名無しさん :2010/03/09(火) 16:29:22
SSEとかそういうの使えばループ無しで出来るんじゃね? Cとかアセンブラの域になるが。
無限ループって怖くね?
えッ!?
メッセージループは無限ループだから怖い
まぁその程度の事で難しく考えるより 単純でミスがないような後々わかりやすいコードのが大事だろ
>>349 今更だけど、FileStream.Close()ってDispose呼ぶだけだから、
CloseとDisposeの両方を呼ぶ必要はなく、片方1つで十分のはず。
>>379 MSDNには「Disposeのtrueと同じ」って書いてあったから
ちょっと違うのかもと思ってた
>>380 Dispose()はDispose(true)をよんでいる。
382 :
デフォルトの名無しさん :2010/03/09(火) 18:59:18
Stream系は全部using使わないと開放漏れが気になっちゃう
解放漏れよりも更新されなくて嵌まることがある
そーいえば、SmtpClient と MailMessage で添付ファイル付きのメールを送ったときに、 添付ファイルとしていたローカルファイルを削除できなくて悩んだことがあったな。w この時初めて Dispose の重要性を実感した。
マネージDllに記述したメソッドの説明などに使う///コメントが、Dllを使うプロジェクトで参照できません。 どうやったら参照できるようになりますか。
プロジェクトのプロパティ→ビルド→XMLドキュメントファイル プロジェクト参照じゃなくてdllをそのまま配布する場合は必ず生成されたxmlファイルも一緒に
387 :
デフォルトの名無しさん :2010/03/09(火) 23:32:07
XmlSerializerを使ってDeserializeするクラスの中に配列があった場合はうまくいかないのかな?
388 :
387 :2010/03/09(火) 23:47:58
自己解決しました・・・
死ね
どうやって解決したか書かない子はほんと自決して欲しい
392 :
デフォルトの名無しさん :2010/03/10(水) 00:27:11
一度覚えたら忘れにくい言語ないですか?
日本語
listview.items[].subitems[].text ↑長い ↓こんな感じにできたらいいのに listview.items[](str,str,str,str)
398 :
デフォルトの名無しさん :2010/03/10(水) 13:43:09
IDisposableの正しい実装方法おしえてちょ
string型をKeys列挙型に変換する書き方がわかりません。 下のような変換をするにはどのように書けばいいですか? string "J" → Keys.J string "Divide" → Keys.Divide string "NumPad2" → Keys.NumPad2
400 :
デフォルトの名無しさん :2010/03/10(水) 15:34:09
スレッドセーフについて教えてください @private static List<string> sampleList = new List<string>();として 同じクラス内の以下のスレッドを同時に実行します スレッド1はsampleListに要素を一つずつaddして追加 スレッド2もsampleListに要素を一つずつaddして追加 スレッド3はsampleListの先頭の要素を取得後、RemoveAt(0)で削除 この場合はSynchronizedは必要ですか? Aprivate static int n1;として 2つの同時進行のスレッドからn1の値を変えたりする場合は Interlockedが必要ですか? Bprivate static int n1;として スレッド1からはn1の値を変更するが、スレッド2からは参照するだけ ならばInterlockedは必要ないですか? よろしくお願いします
>>399 (Keys)Enum.Parse(typeof(Keys), "NumPad2", false);
書き換えてる途中に参照しようとしたらどうする?
>>401 できました。ありがとうございます!
他にも色々使えそうなので更に勉強してきます。
途中ってなんだよw
405 :
400 :2010/03/10(水) 16:05:14
>>405 >この型の public static (Visual Basic では Shared) メンバは、スレッド セーフです。
>すべてのインスタンス メンバがスレッド セーフになるかどうかは保証されていません。
いらないよ
逆にCountプロパティとかその辺はセーフかどうかなんて保証されてないってこった
>コレクションが変更されない限り、List では、複数の読み込み操作が同時に発生しても問題ありません。
コレクションの列挙処理は、本質的にはスレッド セーフな処理ではありません。
まれに 1 つ以上の書き込みアクセスによって列挙処理で競合が発生する場合、確実にスレッド セーフにするには、列挙処理が完了するまでコレクションをロックします。
コレクションに対し複数のスレッドがアクセスして読み取りや書き込みを行うことができるようにするには、独自に同期化を実装する必要があります。
と書いてあるがこれ読めば参照時にもロックかけるべきかどうかは判断つくと思うんだけど
407 :
400 :2010/03/10(水) 17:01:26
>>406 ありがとうございます
まとめると、Listをスレッドセーフで使うには
・public static以外はSynchronizedが必要
・For EachやCountプロパティ等を使用する時はロックが必要
ということでいいのかな。
助かりました、サンクス。
List<T>などのジェネリックコレクションにSynchronizedはない 常にロックが必要
Form1のボタンを押すと、Form2のテキストボックスにテキストを移すのってどうすればいいですかね? DOBONさんのTipsを見て Form2 f = new Form2(); f.ShowDialog(this); f.Dispose(); な感じでForm2をForm1に所有させてやってるんですが 他にやり方とかないでしょうか?
>>409 それでできるのに何が問題なのかが
重要なんだと思うが・・・・
412 :
デフォルトの名無しさん :2010/03/10(水) 19:42:12
同じ説明をしたなあ Form2にアクセス用の関数を作って公開する
413 :
デフォルトの名無しさん :2010/03/10(水) 20:09:20
>>409 テキストボックスのModifiersプロパティをPublicにする
>>409 状況が分からないのでどういう方法が適切か何ともいえないけど、
Form1とForm2の間に相互に依存関係を持たせたくないのなら、
第三の仲介者役のオブジェクトを間に入れる。
単に依存関係を逆転させたい(Form1はForm2を知るべきでないが、Form2はForm1を知っててもいい)
だけなら、イベントを使ってもいい。
(1) Form1はボタンがクリックされたらテキスト伝達のためのイベント(仮にTransmitTextイベントとする)を発生させるようにする
(2) Form2がForm1の参照を持つ
(3) Form2にForm1のTransmitTextイベントのイベントハンドラを書いて、その中でTextBoxを更新する。
こんな感じ。
416 :
409 :2010/03/10(水) 22:23:46
Form同士で受け渡しがしたかった理由は Form1からForm1所有でForm2とForm3を出した際に Form2の情報をForm3で取得したいときに所有しているのはForm1なので 受け渡しが出来ないのでどうすればいいのか?と考えていました。
>>416 それは設計がおかしい
と普通の人は考える
オブジェクト指向の世界は縦割りなんだよ 横の繋がりは必要としない 絶対的な権力を持つボスがすべてを操る
もう全部static変数にすればいいよ そんなレベルで頭捻ったって結果は同じだからとりあえず動けばいい どこが悪いかはそのうちわかってくる
最初はform2で処理したデータをform1で一旦取得してから form3に渡すのは不自然だったり、非効率的に思えるかもしれないが 両方のformで利用するデータはform1で管理したほうが 実は安全で効率的なのだ もしform3がform2とのやり取りだけしかしないなら form2の子としてform3を宣言すべき
それならForm1にも直接データは持たせないべきだろ データを保持するクラスを別に作って持ちまわる形にする
MVCしろよ
423 :
409 :2010/03/10(水) 23:24:17
みなさんありがとうございます。 参考にしてC#をちょっとずつやろうと思います。
>>423 まあ、Formの本来の役割は入力と表示だってことは理解した方がいいよ。
つまりFormの仕事は、ユーザーからの入力を何か別のオブジェクトに伝達したり、
別のオブジェクトからのデータを表示するのが仕事。
PCでいったらモニタやキーボードに相当する部分。
だからそんな部分同士がデータを直接やりとりするのは本来おかしい。
キーボードとモニタの間が配線でつながっててデータやりとりしたらおかしいでしょ?w
キーボードはPCに対して入力データを送るだけ。
モニタはPCからの信号を表示するだけ。
GUIのプログラムも基本同じような考え方で作るべきだ。
Form1はオブジェクトhogeにユーザから入力があったことを伝達するだけ。(ボタンClickイベントハンドラで
hogeの何かのメソッドを呼び出す)
Form2はhogeからの情報を表示するだけ。(hogeからのイベントでTextBoxを更新する)
一見面倒だけどこれが結局シンプルで標準的なやり方。
425 :
409 :2010/03/11(木) 00:01:00
>>424 なるほど。
もう一度入門書などをちゃんと読みなおしてみます^^;
複数のFormから一つのオブジェクトにアクセスする方法がわからない
427 :
デフォルトの名無しさん :2010/03/11(木) 00:03:26
>>426 アクセス用のクラスでも作ってそのインスタンスを教えておけばいいんじゃないの?
参照型の強みだよ
>>400 BでInterlockedをどう使うわけ?
せいぜいvolatileじゃないか?
>>400 Aだって値の更新をどういう風にやるかによる。
読み取りと書き込みを合わせてtアトミックにやりたいならInterlockedとかがいるが、
条件によってはただ書き込むだけでいいかもしれない。
もしくはvolatileにするくらいでいいかもしれない。
@は普通ロックが要るが、それはそれとしてListよりQueueの方が向いてないか?
>>422 最近多い、GUIでプログラム作らせる初心者用入門書の弊害だと思う
だってMSの旧来のコントロールだとコントロール自体がデータ持ってる場合が多いんだもんよォォォォォ
432 :
デフォルトの名無しさん :2010/03/11(木) 13:22:50
WPFのバインドのようにできれば分けやすいんだけどな あれできないと小規模な開発ならMVCの境目を考えるのあほらしくなるもん 大きくなればMVCしようかとも思えるけど
リストボックスを表示中に上下キーを押すと選択中の項目が変わるが、文字を入力するとテキストボックスに文字が入力されるようにしたいんだが、その方法がわからない。 実現する方法があったら教えてほしい。
>>434 IDEでよくある入力補完を実装したいので、それはNG。
436 :
デフォルトの名無しさん :2010/03/11(木) 19:11:30
入力アクションが何かしらんけど入力アクションを検知したらリストボックスの 一つの項目と同じサイズのテキストボックスを表示して制御をそこへ移して そこから制御が離れたらテキストボックスの中の文字をリストボックスへ反映すればいいんじゃないの?
438 :
デフォルトの名無しさん :2010/03/11(木) 19:38:11
ああいいたいことわかったわ リストボックスはあくまで候補の表示だけな サジェストの候補表示とかをやりたいのか アクティブにならないForm作ってそこへリストボックス張って候補だしゃいいだろう 半透明表示もできるぞ
>>438 ためしにやってみたが、リストボックスにフォーカスを合わすと、インクリメンタルサーチができなくなって…エディットぼっくにフォーカスを合わせたままだと、リストボックスの選択項目をキーボードで操作できなくなって…となった。
フォームの初期化時
this.autocomplete_box.Visible = false;
this.Controls.Add(this.autocomplete_box);
文字を入力した
this.input_word += e.KeyChar;
int index = this.autocomplete_box.FindString(this.input_word.ToString());
if (index != ListBox.NoMatches)
{
Point current = this.GetPositionFromCharIndex(this.SelectionStart);
this.autocomplete_box.SelectedIndex = index;
this.autocomplete_box.Location = new Point(current.X, current.Y + this.Font.Height);
this.autocomplete_box.Visible = true;
}
普通にテキストボックスをオートコンプリートにしたいわけではないんだよな? Googleサジェストのような挙動ではなく、インテリセンスのような挙動にしたい つまり、 ・補完するのはテキスト全体ではなく、その一部(単語など) ・テキスト入力時には候補の絞込みは行わないで、選択項目のみを変更 ということに相違ないか?
それでは回答どうぞ
なら、438で問題ないな > リストボックスにフォーカスを合わすと、インクリメンタルサーチができなくなって… リストボックスに、必要な全てのイベントハンドラを設定すればいい 例えば、 文字はそのままテキストボックスにスルー 上下は選択変更 左右はテキストボックスの方のカレット移動 Enterは確定(Tabも?) とか自分で決めて適当に処理すればいい
えらそうな質問者に対して、ちゃんと答えるなんてえらいやつだな。
>>443 なるほど。
そうすればいいのか。
答えてくれてありがとう。
ComboBoxのテキスト部分をユーザーからの書き込みをできないようにするには DropDownStyleプロパティをDropDownListにするといいというのでやってみたところ たしかにユーザーからの書き込みはできなくなりましたがComboBoxの見た目がTextBox調からButton調になり Textプロパティをプログラム内部でも書き換えられなくなりました しかし「DropDownListにするといい」と見つけたいくつかのサイトではそのようになってる様子は見られません これはVisual C# 2008の仕様か何かなのでしょうか?
何も言えなくて・・・夏
そういうやり方じゃなくてユーザーからのテキスト入力イベントが 発生したときに、入力を受付なくさせるメソッドか何かがあったはず 忘れた
C++と比べるとC#は何がダメなんでしょうか? GCがあったり色々便利な機能が付いてると思うのですが、ずいぶん叩かれてる印象を受けます TRUEが1じゃなかったりするのが、あまり好かれないとかそんな感じでしょうか?
>>450 アンチが多いのは人気の裏返しだよ。
ほんとに悲惨なのはユーザーからの無反応。
TRUE が 1 じゃないとか、たたくポイントじゃないというか、
むしろ TRUE が 1 な方がたたくポイントだろ。
>>451 ありがとうございます。C#使いたくなってきました
TRUE=1等の暗黙の型変換は悪い意味での慣れでしょうか、
個人的にはちょっと残念なのです
別に言語ごとのプログラミングパラダイムに従うことは悪いことじゃないよ C#に使うならC#の作法に従うべきではあるが これは逆も然り
1番はC#がC++のスーパーセットだと思って使い始めて落胆するパターンな。 さすがに最近は減ったけど。
C#実際そんなに叩かれてない 見向きもされてない所がある あまりに注目されてない不運な言語だ
ネイティブコンパイルされないのが唯一の欠点だろう。 あとは完璧
C#はいいとこ取りっていうか中途半端な感じだな でもC#覚えれば、他の言語にも馴染みやすいと思うし 初心者向きな言語だと思う すくなくともVB覚えるよりはいい
そこそこのことするならそこそこのことが出来るC#が「完璧」だろうが、 難しいことするなら難しいことができないC#が「中途半端」になる 見方次第だな
.net対応のマイコンも出たしもう完璧だろう
C# 5.0でコンパイラ、メタプログラミング関係整備されて完璧。
もう一度言うが、完璧。
しつこいようだけど後もう一回だけ・・・完璧。
完璧さが周知されてない所がたまに暇。
FALSEが0以外なら全力で叩くがTRUEが1以外って処理系によっては昔から普通にあるし その程度で動かなくなるようなコードを書く方が悪い
しかし最近はPythonに人気を取られがちのようだが どうせ最速の言語じゃないんなら コード記述が短くて、動的なほうが手軽というイメージ smallbasic、Ironpythonでますます中途半端な存在になったな
>>465 サンクス
おもしろそうだ!!!
おれもやってみてぇ
人気ねぇw
プログラム板の勢いみると 言語ではC#が一番あるけどな
裾野だけは広いからな
敷居は低いが仕事は少ない
まだjavaなのか
そろそろマ板でやれ
using(StreamReader sr = new StreamReader(ws.GetResponseStream(), Encoding.GetEncoding("Shift-Jis"))) { boardListHtml = sr.ReadToEnd(); sr.Close(); ←これいらないですよね? }
うん
C#はヴィジュアルスタジオ使うと WindowsFormアプリケーションってやると とっぱじめ最初にFormを継承したForm1が出てきて それにボタンを貼り付けて、「はじめてのC#」とかいうメッセージボックスを出す これだけのプログラムでも継承、カプセル、ポリモーフといったオブジェクト指向を使ってるな 初心が意識せずにオブジェクト指向できるようになってる言語?
日本語でOK
デザイナが勝手にやってるだけで全く使ってないだろ
むしろ日本語がNGの人
Visibleのtruefalseかちかちやるだけでメモリ食うのはなんで?
どうして「メモリ食う」と分かる? その観測方法がオカシイ可能性は疑ってみた?
visual studioでbutton1とlabel1と↓作って private void button1_Click(object sender, EventArgs e) { if (label1.Visible == true) { label1.Visible = false; } else { label1.Visible = true; } } Windowsタスクマネージャ開きながらbutton1かちかち押すとメモリ使用量が増えるんだが
再現できなかった。
製作中のアプリの一部をクラスライブラリで分離する場合 完全に別プロジェクトでアプリプロジェクト->ライブラリプロジェクト(デバック) の参照をつけてやったりするのかな?
>>472 ばかだなぁ。なければ作ればいいじゃないか。
無知なお客さんを言いくるめるくらいワケないだろ。
‥‥ほんとうに生産効率はいいんだから。
>>487 別プロジェクト以外ってことは、1つのプロジェクトでexeとdllの両方を出力とか?
普通の方法ではそんなことできないと思うけど
普通はひとつのソリューションでやるわな。
>>487 普通そうでしょ。
でもプロジェクト参照は循環参照不可だから、、
複雑なプログラムになってくると案外プロジェクトの切り分けが難しかったりする。
>>489 アセンブリが別とは言ってないんじゃない?
492 :
487 :2010/03/12(金) 22:26:45
>>491 最終的にアセンブリを一つにするかexeとdllに分けるかで
変わってくる感じですかね
>>492 internalアクセス修飾を有効活用したいから、という、
人によってはちょっと不純に見えるかもしれない動機の場合もあったりする
495 :
デフォルトの名無しさん :2010/03/13(土) 02:33:26
WEBアプリケーションって自分ブラウザとかじゃなくブラウザ上で動くプログラムということでOK?
>>495 自分ブラウザです
IEやfirefoxの簡易版を作りたいです。
497 :
デフォルトの名無しさん :2010/03/13(土) 02:42:44
それだったらc# WebBrowserでぐぐれば基本的なことは本買わなくてもできるよ
>>496 それってデスクトップアプリというんだよ
WEBアプリはブラウザをクライアントとするものだから
まったく別物
たとえば、何の前置きもなしに「WEB開発」って言われたら、 WEBアプリを作るって解釈しておk? 面接でそういう質問があったんだけど。
>>499 そうだね
JAVA,javascrpt,HTTP,Perl,RCFの知識があるのかってことになる
どこから突っ込めば
502 :
デフォルトの名無しさん :2010/03/13(土) 05:52:56
WEB開発って面接官もへぼいな WEBに関係することって ・クライアント(webブラウザー)そのもの ・クライアント上で動くスクリプトなど ・サーバー側 大きく分けてもこんな感じだしなあ ものすごく範囲は広いよ さすがに最近はhttpのプロトコル処理関連まで作るなんてのはないだろうけど
その面接官は多分ホームページ作ったことあるか聞いてたんじゃないかな
いいかげんスレチだけどwebってwwwの略なんだから 全てクライアント上で動作する物はwebアプリとは言わないだろ基本的に その面接官もwebを理解してるのかあやしいがweb開発なんて言ったら 重箱の隅から隅まで含まれるぞ
phpくらいしかできないよ
十分だよ
つまりズブの素人ってことだよ 言わせんな恥ずかしい(AA略
こんなスレみるんじゃなかった・・・ ヤホーの知恵袋にでもいってくりゃよかった なんかゴメン
つうか、たまたまだろ 平日に仕事しながら見てるやつて結構とレベル高いと思うけど?
日本語のレベルが低いですね
ちっ、うっせーな
うっ、ちっせーな
ちっ、ちっせーな
C#だとCの供用体みたいなのをつくるときって unsafeつかわないと無理?
StructLayoutとFieldOffsetだけで一応作れるけど 今時共用体とかないわー
日本語のレベルが低いって、ふだんはC#で他人と会話しているのか?
は?
ここは普段他人とはなさずに一日中PCの前でプログラム組んでるオタが来る場所だから 日本語をまともに話せない人がいても仕方ない
>>516 if (This.Seiyoku >= 95) {
This.Hand.GetTimpo();
for (int i = 0;i < 2000;i++) {
This.Hand.Up();
This.Hand.Down();
}
this.Say("あああああ───────");
}
MessageBox.Show("ふぅ・・・");
2000も要らんだろ。
細胞が壊死するぞ。
C#を猛プッシュしてるキチガイうぜー
おまえらは4でじゅうぶん
C#はWindowsのGUIアプリを作るっていう非常に限定された状況でのみ CやC++より優秀
あと初心者にはかなり使いやすい
>>526 それはC#のメリットというよりVC#環境限定の話だろ
最初にインテリセンス体験したとき開発者マジキチって思った
スニペットのせいで構文覚えられない初心者が多発、という弊害がもれなく付いてくるけどなw
ただの補完なら大概の言語で使えるけどね
構文を覚える必要はない
構文は自然と覚えるものだと思うが
構文と言うよりも単語が覚えれないかな
スニペットなんてただの初心者騙しの鬱陶しい機能にしか思えないけど、 あんなの活用してる人いるのか っていうかPEZみたいな名前が気に入らん。 ラムネ菓子かっ
楽できるなら楽したらいいと思う いまさら a += 3 を a = a + 3 って書きたいひとはおらんじゃろ
プロジェクト内だけのスニペットは便利だったりする
昔はprop->のproperty作成とかやってたな。 private変数作ってから、crtl+r, ctrl+eのリファクタの方が便利だと知ってからは使わなくなった。
よく入力するパターンは自分で定義して使ってるな dw: Debug.WriteLine( ); eh: (_sender, _e) => { }; とか
541 :
デフォルトの名無しさん :2010/03/13(土) 20:53:42
>>475 なにこのコード
なんでusing使ってるの?
俺がC#触ってない間になんかあったのか
どれぐらい使ってなかったんだ
IDisposable
>>541 button1.Click += (sender, e) => MessageBox.Show("こんなのもできるよ");
using構文はC#1.0当初からある構文だが
強いて言うなら
>>541 が触ってない間に
>>541 からC#の記憶が飛んだんじゃないか
最初から知らなかっただけだろう
2.0からだと思ってた俺
2.0からだろ
ちょっと教えてください 文字列が入ったリストデータをTreeViewに表示する場合 TreeViewを継承した自作クラスにリストデータを直接読み込んで表示するようなメソッドを作るべきか TreeViewのNodesに追加する処理をForm1でするべきか どちらがいいのでしょうか?
その程度なら後者
553 :
デフォルトの名無しさん :2010/03/13(土) 23:23:28
>>551 どっちでもいいんじゃね?
なんでもかんでもFormに書くのもあれだし継承してあれこれ作れるならそういう練習を兼ねて別途設計してもいいだろうし
練習も兼ねて自作クラス作ってみようと思います ありがとう
うむ
フォームアプリで処理内容を表示したいのですが Form1の処理内容ならtextboxなどに表示すればいいですが form1でインスタンス化したオブジェクト内部の処理内容を表示したい場合 どうすればいいでしょうか?
オブジェクトに処理状況を返すメソッドを作って Form1から非同期で動かして定期的に処理状況を調べる
非同期・・・ちょっと難しそうですね・・・ 諦めます
なんでも試してみるもんさ と、偉大なゲイは言いました
もしくはそのオブジェクトに textbox なりを教えてあげて、 オブジェクト内部の処理が終わったら textbox に直に書き換えてさせてしまうとか。 他との兼ね合いがないなら、自分はそうする。
BackgroungWorker使えばそこまでめんどくもないと思うんよ
スレッドの扱いやすさ考えるとBW使うのめんどくさくてね・・・
>>556 >>558 のように言ってるって事は、恐らくその「オブジェクト」の処理は
UIと同じスレッドで動くってことなんだろうから、
それなら単純にその「オブジェクト」のクラスに〜Changed系のイベントを実装して、
Formの方はその〜Changedイベントで表示内容を更新すればいいんだよ。
それが面倒で、かつ更新するコントロールの数が少ないなら、
Formにタイマくっつけてタイマのイベントで表示内容を更新してもいい。
何か難しく考えすぎてないか?
ですね
>>563 >>560 なるほど、イベントは自前で作った事ないからやってみてもいいかも
簡単なのはtextboxの参照渡すのがいいですね
検討してみます
ありがとうございました
なんか初心者が間違った知識を覚えるのをほっとくのも気が引けるんで一応突っ込むけど、 >簡単なのはtextboxの参照渡すのがいいですね こういうやり方は普通は邪道とされている。 馬鹿だと思われたくなければやっちゃダメ。 これがダメな一番の理由はそんなことをしちゃうとそれぞれのクラスの 役割分担が明確じゃなくなるから。 TextBoxの更新を担当するのは、その持ち主であるFormであるべきだとは思わない? 他のオブジェクトがTextBox更新しちゃうのなら、Formの役割って一体何よ。
それは設計によるとしか言いようがない。
ただ機能的要件が果たせさえずればOK、と思いつくままにTextBoxの参照を 渡すような馬鹿で間抜けな行為を「設計」とは言わない。
まぁそれをいっちゃうとMVCとかObserverとか面倒なので
570 :
デフォルトの名無しさん :2010/03/14(日) 14:29:27
まあtextboxもクラスだからついついやりがちだけど所詮はGUI部品だからなあ 一番いいのはデリゲートだっけ?
563の言うようにするかなあ その処理オブジェクトは、進捗を公開するかしないかを決め、 GUIオブジェクトは、それを見るか見ないか自由にする
573 :
デフォルトの名無しさん :2010/03/14(日) 14:51:23
hogeクラスはスレッド起動部分を書いてないけど移植前の方では動いてるので問題ないと思う。
PInvokeでもつかえば
P無しで
ほうピンボケを
関数名をhogehogeにするつもりがhogehoeになってたw hogehoeは本当はスレッド起動をさせる関数なんだけどその辺は端折ったw
http://codepad.org/xOdJsJie こんな感じで遊んでたんだがApplication.DoEvents入れて経過を分かるようにすると
スレッドの動作が変わった感じなんだが何が変わったんだろう。
Application.DoEvents無し->適度に3スレッドの出力が混じる
Application.DoEvents有り->最初の一回だけ起動した順に結果がでるけど2回目以降は後で起動したスレッドだけ?やってる感じ
100x3は多いので10x3に絞ってみた Application.DoEvents有り [ 0000 ] 0 [ 0001 ] 0 [ 0002 ] 0 [ 0002 ] 1 [ 0002 ] 2 [ 0002 ] 3 [ 0002 ] 4 [ 0002 ] 5 [ 0002 ] 6 [ 0002 ] 7 [ 0002 ] 8 [ 0002 ] 9 [ 0001 ] 1 [ 0001 ] 2 [ 0001 ] 3 [ 0001 ] 4 [ 0001 ] 5 [ 0001 ] 6 [ 0001 ] 7 [ 0001 ] 8 [ 0001 ] 9 [ 0000 ] 1 [ 0000 ] 2 [ 0000 ] 3 [ 0000 ] 4 [ 0000 ] 5 [ 0000 ] 6 [ 0000 ] 7 [ 0000 ] 8 [ 0000 ] 9
あるインスタンスが同じクラスの別のインスタンスに影響を与えるのは悪いことですか?
たとえば、Form1の中にButton1とButton2があったとして Button1.Clickを、Button2のサイズとか名前とかを変える みたいなイベントにしたら、Button1はButton2に影響を与えてるけど これっていけないことなの? インスタンスはすべて独立させたほうがいい みたいなこと書いてたんだけど
583 :
デフォルトの名無しさん :2010/03/14(日) 17:47:20
そんなこと真面目に聞いてたら無効にしたボタンは二度と有効にできないな どこでそんなこと言ってたのか興味あるから教えて欲しい
Button を継承した Button1 のメソッドで Button2 をいじったらだめだろうけど 実際いじってるのは親の Form なんだから、 Button1 が Button2 に影響を 与えてるわけではない
>>556 の話はインスタンス化したオブジェクト内部なんで
関係としては
>>572 >>578 >>579 あたりのコードのような状態だからなあ
buttonが直接外の何かに影響するってことは標準ではなくて
イベントハンドラを登録して処理は別途書くよね
「影響」というのがメソッド呼び出しの事をさしているのであれば、(それ以外にありえないと思うけど)
影響を与えるなというのはメソッド呼び出しするな、と同義になるわけで、
じゃあprivateなメソッドだけを持つ自律的なクラスだけでコードが書けるのかと。
まあ、要するに愚問過ぎるw
>>585 いや意味わからないしw
はぁ〜い ちゃぁ〜ん
アプリ起動時にフォームとフォーム内のコントロールが ちゃんと表示されてからプログラムが実行されるようにしたい shownでもフォームが表示されただけでコントロールが ちゃんと表示されない状態で実行されるのですが なにか良い方法はないでしょうか?
ない。
Application.Idleが近いかねぇ
ままっままま、まじっすか
あるあるよ
594 :
デフォルトの名無しさん :2010/03/14(日) 19:00:40
WebBrowserだとnavigatedイベントなんてあるけどそれと似たようなのって聞いたこと無いな
普通はフォームが表示される前に 事前処理を終了させるのかな 他の言語でもこんな感じ?
言語の問題じゃなくてWindowsの問題だと思うけどなw
597 :
デフォルトの名無しさん :2010/03/14(日) 19:07:45
Formが表示されてからしばらく何か動くのであればshownのタイミングで Form全体のコントロールを触れないようにして処理した後ユーザーが触れるようにするとか ちなみにやり方に普通はないよ ユーザーがフリーズしたんじゃないの?とか 表示されたので触っていいと思ったけどなんか触ったらおかしくなった・・・とか そういうのを回避できてればいいと思うよ
activateかなんかなかった
shownだとユーザーがフリーズしたと思われそうだなー loadイベントで処理する方がマシか
うん
601 :
デフォルトの名無しさん :2010/03/14(日) 19:28:16
>>599 Loadでやるにしてもスプラッシュウインドウでも出しておかないといらちにはあれだぜ
いらちをだますには適度なタイミングでちびちび変化を見せてあげるほうがいい
ほとんどビョーキ
603 :
デフォルトの名無しさん :2010/03/14(日) 19:31:25
いやShownでちゃんと表示されてるはずだし。 でなきゃ"Shown"って名前が嘘になっちゃうし。 何がしたくて何を言ってるのかサッパリ意味がわからんな。
605 :
デフォルトの名無しさん :2010/03/14(日) 19:34:57
>>604 FormのShownでしょ
確かに上に乗ってるコントロールはFormのコンストラクタでできてるので
問題はないけどshownの段階ではForm上にのってるコントロールのどれかが
何かしら動いてる?から今回の質問なわけでしょ・・
まあ自分のアプリの処理のタイミング調整でなんとかなりそうだけど
>>605 ごめん真面目に何言ってるのか理解できん。
っていうか、それ
>>589 が言ってることと明らかに違わないか?w
>>601 イラチのおれはスプラッシュウィンドウなんて表示しなければ
もっと起動早いだろって思う
609 :
589 :2010/03/14(日) 20:00:28
610 :
デフォルトの名無しさん :2010/03/14(日) 20:01:35
え・・・そんな基本的な話だったの?
>>608 ブログ主はなんか勘違いしてるな
Appliation.DoEvents()って、そんなもので自分のいってる問題が
本当に解決してると思ってるのかw
悪いけどおめでたすぎるわ。
613 :
589 :2010/03/14(日) 20:13:33
Application.DoEvents()すげーー ループ処理の中に記述しただけで 今までListViewが随時更新されずに、処理後結果が一気に表示されてたのに リアルタイムで再描画してるーーー これをあっちこっちに入れるとしあわせだな
614 :
デフォルトの名無しさん :2010/03/14(日) 20:14:31
でもそれやると処理が遅くなるけどね
>>612 OnShown()なりOnLoad()なりでApplication.Idleとかに紐付けするのが
正攻法だとは思う。
内緒だが、同じことを簡単にやる方法としてはthis.BeginInvoke()を使う、
なんて手もあったりする。
まあ、これってそもそも下らない問題意識だと個人的には思うけどね。
>>589 Application.DoEvents()なんか必要もないのに(必要な場面がそうあるとも思えんけど)
VB厨って言われるよ。
それはともかく、明らかに悪い作法だ。
DoEventsはおかしな動作する元だからな
DoEventsやるとメッセージ処理されるから順番が逆になったり弊害が出る
618 :
589 :2010/03/14(日) 20:24:43
え・・・ WEBからファイル落とすときにフリーズ状態になるので Application.DoEvents()で描画更新されるようになったんだけど 本当は非同期でやるべきなんだおろうけど
>>618 そう端的に言って努力の方向が間違ってるよ。
WebからファイルってAsyncあるだろーが
>SystemException は、ユーザープログラムで回復できる致命的ではないエラーが発生した場合に、共通言語ランタイムによってスローされます。 とのことだが、キャッチして回復しようとすると「CA1031汎用的な例外をキャッチすんな」って怒られるんですけどどうしろと HAL9000もバグっちゃうよ
ああ、もうSystemExcpetionとかApplicationExceptionとか過去の話だから
俺の問題解決にはすべて非同期プログラミングの習得するか否かにかかってるとみた 私はあえてこの高度なアルゴリズムに挑むことにする すべてはより高度なアプリを開発するために
Console.WriteLine("{0}",intA) この書式をtextBoxに表示するのに利用するにはどうすればいいですか?
String.Formatとかどう?
626 :
デフォルトの名無しさん :2010/03/14(日) 23:13:41
intA これって文字通りintの変数? だったら textBox1.Text += intA.ToString(); とか textBox1.AppendText(intA.ToString()); とか 数字の出力パターンを変えたい場合はintA.ToString("0000") とかすればいいよ この辺は調べて
>>625 これこれ、こういうのがほしかった
ありがとう
クラスが10個ぐらいになるともうわけわかめ UML導入するか
UMLでどうにかなる問題じゃないだろ 10個程度のクラスの相関を把握できないでどうするよ
わけ分からない→じゃあUMLだ、という発想がイミフ。 これまでドキュメントとか無かった現場なんだろか。
そうだよ
ユーザーが数字ではなく文字を入力した場合のエラーの取得はこういう感じでいいのでしょうか? それともUserInputクラス内ではtry文を使わないでProgramクラスだけでやったほうがいいんでしょうか? public class UserInput { public int Input() { int a = 0; try { a = Int32.Parse(Console.ReadLine()); } catch (Exception e) { throw e; } return a; } }
>>632 の続き
class Program
{
static void Main(string[] args)
{
UserInput ui = new UserInput();
try
{
int b = 0;
b = ui.Input();
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
}
>>632 catch { throw; }
とか何がしたいんだか分からんw
(゚∀゚)
右から左に受け流したいんだろう
左から右へ受け流すのはゆるさないからなw
わざわざコケさせなくてもTryParseとかあるし
例外ロンダリングだよ。
640 :
デフォルトの名無しさん :2010/03/15(月) 13:41:01
入力された文字が数字だけかどうかって面倒なら Convert.ToInt32(textBox1.Text) とかやってtry catchで判断すればOKだよ
try catchなんてするくらいならTryParseでいいだろ って話だ
TryCatchなんかでやってたらエラー時のスタック解析の時間とか入れたら劇遅になるじゃねぇか
643 :
632 :2010/03/15(月) 14:23:37
すいません、これは単純なモデルで表現したくてやったので この場合だとTryParseを使ったりすればいいですが 本当に聞きたかったのは ファイル入出力時のエラーや、WEB操作時のエラーや オブジェクトがnullだったりなど、Formとは別のクラス内部のエラーが あった場合に別クラスの内部で例外処理をするのか Form上で例外処理をするのかがよくわからないんです 一般的にどういうやり方をするのか聞きたかったのですが うまく説明できなくてすいません
644 :
デフォルトの名無しさん :2010/03/15(月) 14:26:32
.net時代のエラー処理ってやつですかね? C/C++時代だと暴走の元なのでポインターがnullかどうかチェックしたりとかやってたようなのをどうしてるのか? ってところ?
例外もみ潰しても続行できるなら内部で処理 できないなら外に投げる
お前らって例に噛み付くよね。 例えばの話に本気になってどうするの。
一事が万事という 小事に本気になれない奴がどうして大事に本気になれようか
(^ω^;)
649 :
632 :2010/03/15(月) 15:05:46
>>644 多分そういう感じです
例えばフォーム上であるクラスのメソッドを呼び出して
nullが返ってくる場合もあるし、例外で投げられる可能性もあります
ResCollection thread_Honbun=bbs.ReadRes(url); ←例外がでる可能性
thread_honbunを利用 //←nullで例外がでる
なぜこういう質問するかというと
別クラス内部でいくら例外処理をしたところで
結局利用する側のformでやはり同じような例外処理を
しなければならないのでみなさんはどうしているのかと思いまして
まずnullをなるべく返さない所から始めたらいいと思うよ。
>>649 CodePlexで他人の書いたコード(なるべくメンバーの多い奴がいい)でも読んでみるといいよ
うんこ漏れそうなくらいtrycatch使いまくりだから
例外は昔の言語のnullチェックとエラー値チェックの代替機能なんだから
エラーチェックそのものをを省くための手段じゃないのよ
目的にしているのはエラーに対して画一的に対処できることね
例えばWin32APIにはnullを返すものもあれば、INVALID_HANDLE_VALUEを返すものもあるし
E_OK、E_SUCCESSなんてのを返すのもある
これら全部例外として括ってしまおうって趣旨だから
うんこは漏れない。
653 :
632 :2010/03/15(月) 15:42:58
つまりちゃんとデータを返すかもしくはエラーを返すかの 2通りにするほうがいいということかな 確かに今のソースはnullかどうかをform側でも別クラスでも 条件分岐で何重にもやっている状態でしかもやってない場合もあったりと かなりごちゃごちゃしてます C#しかやったことないけど、自分は古いやり方をしていたということなのかな 他人のコード見て勉強してみます どうもありがとう
エラーコードを例外に置き換えるリファクタリングを思い出した
この辺か Replace Error Code with Exception tp://www.refactoring.com/catalog/replaceErrorCodeWithException.html Replace Exception with Test tp://www.refactoring.com/catalog/replaceExceptionWithTest.html
これはうんこ漏れるわ
657 :
デフォルトの名無しさん :2010/03/15(月) 16:06:58
まあ続行しても意味がないようなところで出るエラーはtryで拾ってもいいんじゃねーの?とか思うけどな コストがかかるとか言っても継続できねーんだからいいだろうと・・・
658 :
デフォルトの名無しさん :2010/03/15(月) 16:30:09
テーブル 部 コード 名前 01 営業部 02 開発部 テーブル課 部コード 課コード 名前 01 01 第一営業 02 01 第一開発 テーブル社員 部 課 名前 01 01 山田太郎 といった データ構造で 社員をDataGridViewにデータバインドで表示する場合、 DataGridViewComboBoxColumを用いて課を表示することはできるでしょうか? 部テーブルは一意キーなので表示できますが 課テーブルは複数キーですので無理ですか? 型付データセットを使っているので、手動で余計なカラムを増やしたくなく、 リレーションをComboBox側のデータバインドでやってしまいたいっていう考えです。 どなたか回答お願いします。
DBで取ってきてるなら 部と課をくっつけた一意な文字列のカラムも加工して取ってくるようにして、 課のキーではなくそれにバインドさせたら駄目だっけ?
C#はプロパティがめっちゃ便利だな 変数に代入するのと同時に処理ができるってのはすばらしい C言語だと同じようなことをどうやってたんだろうな。 Privateとかないからポインタを引数にとって参照私とかやってたんだろうか。
C#を作った人物って Delphiを作った人と同一人物なの?
普通にgetter/setterじゃないのか JavaやC++は今でもそうやってるだろ
プロパティなんて無い言語のほうがおかしくて、 無いJava, C++, Perl, Rubyが同化してるとだけ言っておこう C#との類似性がよく指摘されるVisual Basic, JavaScriptにはプロパティが存在する あとPHPにもプロパティがある
665 :
デフォルトの名無しさん :2010/03/15(月) 20:19:45
>>664 古い言語にそんなこといっても仕方ないと思うけどw
Jeffrey Richterだったと思うけど、プロパティなんてイラネって意見の人もいるんだよね。 俺は同意できんけど
リッチャーの本大量に持ってるのに・・・ 捨てっかな
670 :
デフォルトの名無しさん :2010/03/15(月) 20:56:23
でも結局は言語作ったおっさんの思想<多く使われる言語ってことなんだよな
>>664 がプロパティ無いって言語は設計も古いし今となってはそれほど拡張もされてないような物だし
C#もそこそこ年数たったけどVBのよい部分は引き継いでるので似てても不思議ではないし
>>664 そういう歴史を無視した発言はゆとりだから?
>>672 君の方じゃないの?歴史を無視してるの。
例えばBASICなんてCより古いんだけど。
それに、どの言語も日々仕様を拡張して進歩してる。
しかし、「ゆとり」みたいな無意味な言葉を平気で使える奴は例外なく馬鹿だな本当。
またゆとりの逆ギレか。 「ゆとり世代」実は野心満々ってニュースでやってたなw 努力も勉強もしてない馬鹿なのにw
,,-―--、 |:::::::::::::;;;ノ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |::::::::::( 」 < MSX-BASICにプロパティがないのはおかしい ノノノ ヽ_l \______________ ,,-┴―┴- 、 ∩_ /,|┌-[]─┐| \ ( ノ / ヽ| | ゆ | '、/\ / / / `./| | と | |\ / \ ヽ| l, り | | \__/ \ |  ̄ ̄ ̄ | ⊂|______| |l_l i l_l | | ┬ |
わるいけど多分君より年上だぞ。 ちなみに、「ゆとり教育」なんて臨教審前から始まってる。 臨教審っていつだか知ってる? 君が30代以下なら、君自身もその「ゆとり教育」にどっぷり使ってる世代なんだけど。 そんなことも知らないのな。
ゆとりって言われてゆとり教育について語りだす 定番の行動だな
恥ずかしいから消えて死ねです
まあ初めにゆとりと口にして、ツッコまれるやつが一番マヌケなんだけどな
,,-―--、 |:::::::::::::;;;ノ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |::::::::::( 」 < C言語にプロパティがないのはおかしい ノノノ ヽ_l \______________ ,,-┴―┴- 、 ∩_ /,|┌-[]─┐| \ ( ノ / ヽ| | 高 | '、/\ / / / `./| | 齢 | |\ / \ ヽ| l, 者 | | \__/ \ |  ̄ ̄ ̄ | ⊂|__ ____| |l_l i l_l | | ┬ |
馬鹿な奴って何でも自分中心に考えるのな。
「言われて」?
お馬鹿な手前の吐く言葉にそんな力があると思ってるのかおめでたいねw
ちなみに、
>>673 を書いた俺は
>>664 とは別人物なんだけどね。
だから「言われて」すらないんだけど。
ただ、知った風な馬鹿を見ると叩きたくなっちゃう性分なだけ。
木枯紋次郎だなw
馬鹿に言われたよ
685 :
663 :2010/03/15(月) 22:01:51
俺はこんな流れにするつもりで発言したんじゃないのになー
686 :
デフォルトの名無しさん :2010/03/15(月) 22:04:20
>>685 まあこういうネタはよく荒れるんだよw
ちなみにVC++はgetter/setterぽく書くための機能をMSが用意してるんだっけ?
>>678 AMDのビットスライスam2900でマイコン開発
たかがシンタクスシュガーで
>>685 こんなくだらないことにいちいち突っかかってくるとか
プログラムを組むというのがいかにストレスがたまるかがよくわかるスレであった。
最近、仕事中にやたら眠くなるのもストレスのせいに違いない。
バカしかいない
スニペットが表示されないのなぜかわかった FileBox eXtenderって奴がwindowsメッセージに割り込んで いろいろやってるせいだったわ
と思ったら違うかった GoogleIMEのせいだったわ これないと文字打つの面倒なんだよなー くそおおおお どうせスニペット使わない機能ないんだろうけど くそおおお
694 :
デフォルトの名無しさん :2010/03/16(火) 01:11:27
GoogleIMEって相性があるソフトおおいな
スニペットがIMEの機能を使っていて GoogleIMEがその機能を殺すメッセージを 送ってるんだろうな だから開いてもすぐ閉じる
スニペットは英語版VSにもあるんだからIMEとは関係ないと思う
>>608 これってLoadの動作が一番好ましいんだけど、ShownやShown+DoEventsのほうがいいと感じる人もいるの?
メンドクサイから終わった話題を掘り返すなよ…
699 :
デフォルトの名無しさん :2010/03/16(火) 02:35:07
結論 ちゃんと動けばなんでもいいよ。あと
>>597 の
>ユーザーがフリーズしたんじゃないの?とか
>表示されたので触っていいと思ったけどなんか触ったらおかしくなった・・・とか
>そういうのを回避できてればいいと思うよ
これに尽きる
以上
デリゲートわかんねええええええええええ 関数ポインタ?はあ?Cやってないんだからそんな説明されてもわかんねーよ 簡単なデリゲートの実装例が書かれているが こんなの普通にメソッド直接呼び出した方が簡単だろってのばっかり なんでこんなめんどくさい書き方をわざわざしなければならないのかの説明がどこにもない あーーもーーわかんねーー
デリゲートは普段使ってるじゃーか button.Click += ・・・ とか
702 :
デフォルトの名無しさん :2010/03/16(火) 02:43:37
最近じゃbutton.Click += も特に理由が無きゃラムダ式だな
704 :
デフォルトの名無しさん :2010/03/16(火) 02:58:58
>>703 言語開発者ってなんでこんな省略の仕方好きなんだろう・・・
だめだ見てもわからなねえええ それぞれの構文が一体何をしているのか どうしてそういう記述しているのか さっぱりわからねえええ おれのキャパシティはここまでか!
706 :
デフォルトの名無しさん :2010/03/16(火) 03:00:57
俺も「よくわかんないけどデリゲートにしないと動かないから使ってる」程度の認識だなぁ・・・
form1の中にすべてぶち込んで完結するから気にしたことないな
例えばどういう時にデリゲート使っているの? イベントはわかる普段使っているし クリックされるとここのメソッドが使われるんだろうなって 想像できるしわかりやすい でも、if文の条件式に入れているデリゲートとか ひとつのメソッド内でデリゲートでいくつかのメソッドを呼び出しているような 多態性?みたいな使い方しているのが実際のプログラミングで必要なのかよって感じ ただ、二つの振る舞いをするメソッド書けばいいだけじゃない x*y x+yの2通りできるからってなんだよって感じ
以前ここかもう一個のスレで教えてもらったマウスホイールでIEの拡大縮小機能を呼び出すコードなんだけど 今これがラムダ式なんだと脳内一致したんだが this.MouseWheel += new MouseEventHandler((s, e) => { if (this.webBrowser1.Document == null) return; r += e.Delta / 120 * 25; object or = r; object z = Type.Missing; ((SHDocVw.IWebBrowser2)this.webBrowser1.ActiveXInstance).ExecWB((SHDocVw.OLECMDID)OLECMDID_OPTICAL_ZOOM, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DODEFAULT, ref or, ref z); }); わざわざ関数にしなくても書けるってのは分かる
>>706 ぐぐって上位にあるサイトのデリゲート説明はすべて読んだ
でもさっぱりわからない
おおお!デリゲートってめちゃくちゃ便利じゃん
おれもデリゲート使おうという説得力が全然ない
712 :
デフォルトの名無しさん :2010/03/16(火) 03:11:46
>>711 まあデリゲート使うような動きをするコード書かなきゃいらないかもね
>>711 上位サイトのデリゲートの説明って端折りすぎなんだよな
そんなにコード量にならないはずなのになんでそんなコードで説明すんの?
それならxxしたほうがいいじゃんと思ってしまうような説明
既存のデリゲート要求するメソッドで考えた方が分かりやすいと思うよ。 例えば正規表現置換とか。 static string Test(Match match) { return String.Format("U+{0:X4}", (int)match.Value[0]); } Debug.WriteLine(Regex.Replace("test", ".", new MatchEvaluator(Test))); 結果: U+0074U+0065U+0073U+0074 マッチした文字列をどう変換するかを、呼び出し側が好きにデリゲートで指定できるわけね。 ちなみにラムダ式使うとこう。 Debug.WriteLine(Regex.Replace("test", ".", match => String.Format("U+{0:X4}", (int)match.Value[0])));
>>579 のコードをデリゲート使わないでやるコード書いた
http://codepad.org/s8jnxIC2 分けるの面倒なんで上から
Form1.Designer.cs
Form1.cs
hoge.cs
hoge.csは自分でクラスを追加してくれ
やろうとしてることはあるスレッドがForm1のtextboxにログを吐くってやつなんだが
hoge.csの中でスレッドを立ててるけどtextboxのインスタンスを渡したのではこける
それを回避するためにログを吐きたくなったとき(ここ重要)に呼び出す関数を登録するようにしたのが
元の
>>579
>>714 そういう説明見てもifで分岐すればいいんじゃないの?って思うんだよ
例えばユーザーがタブブラウザみたいにタブを増やせる場合
なんか使えそうな気もするけどよくわからん
>>715 重い処理は別スレッドでという説明もあるけど
コントロールは操作できないんだよね
だからそういうときには使えるのかも
hogehogeばっかりでそこで何がしたいのかよくわからないけど
じっくり見させてもらうわサンクス
717 :
デフォルトの名無しさん :2010/03/16(火) 03:50:31
>>716 とりあえずIDEに貼れw
色分けされて分かりやすくなるから
codepadってC#対応してないから色分けされないんだよな
>>715 このコードは別スレッドのコントロールを使おうとしてエラーが出るだけど
デリゲートの有用性を説明するための意図的ものなんだよね?
719 :
デフォルトの名無しさん :2010/03/16(火) 04:06:35
なるほど、これはわかりやすい こんな手間隙かけてあなたいいひとですね
こういうさ、使いたくなるような実例がないとねー 文字の羅列から奇数を導き出すとか、 5以下の数字を見つけるとか 普通にやればいいじゃんって実例は役に立たないよな
722 :
デフォルトの名無しさん :2010/03/16(火) 04:11:02
>>720 つーかまあぐぐって上位にでてくるサイトの管理人は頭がいいんだろうけど
頭がいいだけにこういうもうちょっとコード書けば分かりやすいのになあ・・・という
作業をやってなくて理解に悩むことが多いんだよね・・・
atなんとかってサイトのサンプルもひどかったし
atなんとかのデリゲートのサンプルは本当にクソだったな。 あれ読んだせいで「デリゲートってすごくわかりにくいんだな。別に無理して使わなくていいか」と放置してたw
724 :
デフォルトの名無しさん :2010/03/16(火) 04:21:13
Hallo worldをインスタンスのメソッドを使ってデリゲートで呼び出して表示できますとかな そんなの普通に直接メソッド呼び出せばいいだろってのばっかり
デリゲート使ったのはスレッド間のコントロール操作が初めてだった そのときついでに匿名メソッドの使い方も覚えた はっきり言って無理に使う必要のない機能ではあると思う
取得結果の間に挟むパース処理の時とかよくデリゲート使うんだが。 あとは非同期処理のコールバックもデリゲート。 もうちょい設計を考えて組もうよ…。
ソフト作るのなんて年に1回か2回だから忘れるんだよ
730 :
デフォルトの名無しさん :2010/03/16(火) 08:39:22
>>729 俺は自分サンプルを調べたケースごとにおいておいてあるぞ
だから
>>579 を出せるんだが・・・
余計なことして寝ないで行かないと・・・
ラジオの解析なんてするんじゃなかったw
ブログでやれ
だからよぉ 例は例なんだよ 実際にそういうコードを使うかどうかは別として構文として覚えろってことで安易な内容で書いてんだろ 極端なことを言えば、たかがデリゲートの説明で数百行あるプロジェクト読まされたらたまんねえだろ どういう用途で使うの?っていちいちうっせーんだよ 微分に文句垂れる文系高校生かお前は
オブザーバーパタンやコールバックパタンを理解してる人向けの説明と、 それも初めてという人向けの説明は分けてしないといけないな。 前者の場合機能的な説明だけで済む。
>>579 shownイベントのh.hogehogeの後に
同じようにforループ書いたら
shown内のforループが一方的に処理されるんだが・・
デリゲート使わないと関数に関数を渡せない、で終了じゃないの? 渡す関数によって処理が変えられるから便利じゃん。 よくある用途としては、 非同期処理、オブザーバパターン(イベントハンドラetc)、コールバック処理(htmlをgetして ゴニョゴニョする関数にコールバックを渡すことでそのゴニョゴニョ部分の処理を指定できるとか)、 あと上で出てたようにログ吐き関数を渡してその関数内でのログ処理の仕方を指定するとか、 引数チェックする関数を渡して引数チェックさせるとか、たくさんあるけど
ブログでやれ
何で必要なの厨はクラスのインスタンス渡せばいいじゃんと言い出すよ だったらてめーアセンブラ使ってろカス 低機能で高機能賄えると思うなら使わなくていいっつの
関数って言い方がわからない
インターフェースを知っとけば、デリゲートはイラネ すみません、違いがわかりません
>>739 オブジェクト中心か、メソッド中心かの違いかな。
Javaの匿名クラスよりは、C# のラムダ式の方が書きやすいと思うけどなぁ。
あっ、あと、マルチキャストデリゲートなるものがある。
Javaの匿名クラスも結局委譲パターンを普通のオブジェクト指向の文法で サポートするのは煩雑だから追加された機能だしねぇ〜。 委譲のための特殊なサポートを言語に追加したことには変わりに無い。
デリゲートと委譲は関係ないような 直訳すると委譲だけど
必要性も感じないうちから勉強する必要はないよ。 Cでも関数ポインタ使わなくてもどんなソフトでも書けるだろ。
理論上はアセンブラだけあればなんでも作れるもんな
愚者は経験に学び、賢者は歴史に学ぶ
しかし、歴史で学んだ知識はそれを信念として行動することはとても難しいが、 経験で学んだ知識は容易にそれを信念として行動することができる。 経済学者が株で失敗する。経営学者が事業で失敗する、よくある話だ。
経験上はアセンブラだけでやろうとすればちゃぶ台ひっくり返したくなるもんな。
まずOSを作ります 次にエディタとコンパイラを作ります
>>747 知識や経験があったらやろうとすら思わない
そのまえにちゃぶ台を買ってきます
ちゃぶ台をひっくり返すだけの腕力がない
まずダンベルを買ってきます
ダンベルを買う金がない
ペットボトルに水入れとけw
筋力がつく間にアセンブラで何か作れるんじゃない?
プログラミングスキルはあるけどデザインセンスのない奴っているよな
C#かはちょっと微妙かもしれませんが、Delphiで言うBinToHex、HexToBinはC#には無いのでしょうか?
ToStringやFormat、Parseが使えるけど System.Convert でだいたいまかなえる
ToHexString
お前ら、みんな外に出ろ
Convert.ToStringでOK
バイト列(byte[]) <=> 16進数文字列(string) の変換だろ BASE64ならメソッド一発だけど、16進数文字列だとそういうのは用意されていない 右方向で辛うじてBitConverter.ToStringが使える程度
結論:c#では無い。
byte b=(byte)str;
それぐらい作ればいいじゃん
最近似たような処理を作ったときは、 バイト(byte) -> 16進数文字列(string) byteのToString() 16進数文字列(string)->バイト(byte) Convert.ToByte() を使ってた。 ぐぐれば出てくるレベル
768 :
デフォルトの名無しさん :2010/03/16(火) 19:09:25
<?xml version="1.0" encoding="UTF-8"?> <stations area_id="JP13" area_name="TOKYO JAPAN"> こういうxmlの場合どうやって検索かければいいんだろ
F1押してMSDN見た情報って古いよね Directory.GetFilesのオーバーロードが二つしか表示されない 公式見た情報だと3つある
>>769 どんだけ古いの使ってんだよ。さっさとMSDN更新しろよ。
H2Viewer これ最悪 レジストリに書き込むくせにアンインストーラついてない
レジストリに神経質ってPC Japanとか読んでる中学生みたいw 別にレジストリの値なんか削除されなくてもどうってことないだろう。 んなこと言ってたらシステムドライブの中の訳のわからん深いパスの中に 設定値を保存することが推奨されてる.NETアプリだって使えないよ。
まあレジストリっていう仕組みは失敗だったよな
スレ違い
Revo Uninstaller使えば良いから問題無し H2Viewerはあまり知られてないし非公式だからアレだが良ツール
そんないいツールだっけあれ。 VS付属のビュワと違ってタダで配れる以外のメリットはないように感じたが
ローカルに置いとけば便利なんだろうけど、 使い慣れたブラウザでMSDN見ちゃうな。
2008EEについてくるMSDExplorerがバージョン古いんだよ! 2007のバージョンだから検索する記事の2007年のもの なんでこんな古臭いの付属するんだよ で単体で落としたりバージョンアップしたいのにできないし
誰か最新版のURLを貼ってやれよw
さっき貼ろうとしたが
>>772 の悪態見て止めたんだ。
2008 SP1用MSDNライブラリならMSDNに入ってなくてもダウンロードできるでしょ。 っていうか、こんなの知らない人いるのか ガキ臭い2ch用語とか使いたくないけど、そんなことじゃ情弱って言われても 仕方ないな
>>782 >>783 いや、MSDNのダウンロードの仕方は知っている
F1押した時のヘルプのバージョン見てくれ
それが古いのでリンクも古くて困っているんだ
MicrosoftDocumentExplorerのことをさっきから言っているんだよ
MSDNのことを言っているわけじゃない
MSDNライブラリは新しいのでも最新のライブラリではないから結局オンラインで見ることになる
だからバカでかいのをダウンロードしても意味が無いと思っているんだ
ん? F1押してもDirectory.GetFilesは3つでてくるけど?
pictureboxに画像表示するビュアー作ったが 重ww
>>784 何を言ってるのかよく分からんが、"Document Exploter"ってのは
あのビューワ自身のプログラムのことなんだけど分かってる?
F1キーに対応してないのは当たり前。
もともとExpress用のじゃないんだから統合できないに決まってる。
っていうか、あんな初心者向けの機能使ってるのか。
F1はパテで埋めたぜ
F1押したらDocumentExplorerが立ち上がって当該項目表示されるけど? Directory.GetFilesは三つ出る。 Express用だけ新しいのに更新できないという意味?
>>787 え、じゃあ他にどういう方法があるんですか?
>>789 そのヘルプをみてバージョン教えてください
2007Cop 9.0.3...とかじゃないですか?
>>767 これでできました
ありがとうございます
ごみ箱にファイルを移動したものを アンドゥで戻したいのだけどどうすればいいですか? *:\RECYCLERの中には数字のファイルがあるだけ 他のソフトの挙動を見ていると、削除後ゴミ箱に実際に送るのは そのアプリを終了するときにやっているようですが
さっきから"Document Explorer"はプログラムの名前であってドキュメントとは違うよ、 って言ってるんだけど、こんな簡単なことが理解できない人っているんだな実際。 正直こんな人の書いたプログラムは怖くて使いたくない
>>796 お前が理解できてないんだろ
誰がドキュメントって言ったよ
おれはMSDNダウンロードしてないって何度も言ってるだろ
だからオンライン検索になってるんだよ
ブラウザの話してるのにおまえらが勝手にMSDNだなんだって言い出してるんだよボケ
ほんと理解力ないな
>>780 これみてみろ、どこにMSDNなって書いてんだよハゲ
単体で落とせるとかいいながら、MSDNのこと言ってたり コイツらほんとプログラマかw 自分が使ってるブラウザの名前すらわからないのかハゲ
>>798 Document Explorerにしても、MSDNライブラリをインストールすれば
勝手に(必要なら)アップデートされると思うけど。
というか、Document Explorerのバージョンが古かったら何か問題あるのかね。
よくわからん。
お前ら荒らしに餌やるなよ
>>798 おまえがどういう勘違いしてるかやっと分かったよ。
オンライン検索ってのはDocumentExplorerで検索をかけたときに使われる設定で、
F1キーやキーワード検索じゃオンラインに調べにいかないよ。
DocumentExplorerバージョンが古いとか関係ない。そういう仕様。
素直にMSDNライブラリをダウンロードして更新しろ。
ろくに推敲もしてない日本語でOKな質問で逆切れとか、本当神経疑うよ。 っていうか、逆切れまでないにしても、 日ごろ取引先にこの手のまともな日本語でメール一つ書けない人が多すぎて 疲れるよな本当。 文部省は国語の時間に文学鑑賞ばっかり教えないでもっと説明能力を養成する カリキュラムに変えてほしいよ。
>っていうか、逆切れまでないにしても、 >日ごろ取引先にこの手のまともな日本語でメール一つ書けない人が多すぎて この日本語も相当だと思う
>>805 君って中学英語は関係代名詞で挫折した口じゃないの?w
>>803 それはMSDNがインストールされている場合な
おれは入れていないからF1でオンラインに直接検索にいくわけ
で、検索に行くページが2007時点の古い記事ばかりということ
>>807 ふーん。それは大変だね。
一人で違うことして一人で不便して、でも文句はネットのみんなに言ってw
SplitContainerの分割線についての質問です。 splitContainer1.Panel1の幅がsplitContainer1の幅を変えても 動かないようにしたいのですが、どうしたらいいでしょうか。 よろしくお願いします。
811 :
デフォルトの名無しさん :2010/03/17(水) 00:59:23
星空の下のディス・・もとい 常に固定するならIsSplitterFixed そうじゃないならSplitterDistanceを覚えておくとか?
>>809 どうもありがとうございます
助かりました
splitContainer1_SizeChanged に覚えておいた値いれて
splitContainer1.SplitterDistance = splitterDistance; としたら一応できました。
>>811 ありがとうございます。
でも分割線がすっごく(・(・(・(・д・)・)・)・)振れます。
Janeはどうやっているのだろう・・・。
814 :
デフォルトの名無しさん :2010/03/17(水) 01:15:09
最近はじまったラジオのサイマル放送、radikoはrtmpというプロトコルが使われています。 このrtmpに関連するライブラリ等について情報があれば教えてください またC#でこんな応用アプリが作れるよ、っていうのがあれば教えてください。
817 :
デフォルトの名無しさん :2010/03/17(水) 01:24:38
Splitterって自分が摘まれたら・・・とかイベントなかったっけ? 同時にSplitterを摘むこともないだろうから摘まれてないSplitterを一時的に固定して 離されたらフリーにするとか
819 :
デフォルトの名無しさん :2010/03/17(水) 01:32:59
俺が応えるのかよ rtmpは知らん。アドビの作った物だしね phpなんかだとフリーのコードはあるみたいだけど
splitContainer1.FixedPanel で固定するPanelを指定できましたー。
>>811 >>817 ありがとうございました。
アドビと聞いて地雷と認定しますた
816 名前:デフォルトの名無しさん[sage] 投稿日:2010/03/17(水) 01:23:26 最近はじまったラジオのサイマル放送、radikoはrtmpというプロトコルが使われています。 このrtmpに関連するライブラリ等について情報があれば教えてください またC#でこんな応用アプリが作れるよ、っていうのがあれば教えてください。 アイデアとしては、radikoはノイズレスですが、逆にAMのあたたかみを入れるためにノイズ音をわざとのっける アプリケーションを作りたいとおもっております。 このアイデアはまねしないようにお願いします。(まあだれも作らないとは思いますが。。。)
わざとノイズを追加するアプリはすでにあったはず… rtmpの仕様はアドビのサイトで公開されてるってどこかで見たような…
フォーム1がメインでデータグリッドビューにデータテーブルをバインドして 血圧の表を表示しています。 フォーム1のメニューを選択して、元にサブフォームを表示してフォーム2で 1ヶ月の血圧グラフを表示しようとしてるんですけど、 データの受け渡しがうまくいきません。 どうやりかたがありますか?
826 :
デフォルトの名無しさん :2010/03/17(水) 11:07:22
この手の話題は定期的にでるね (やる夫のチンコ立つねAA貼りたいくらい
827 :
デフォルトの名無しさん :2010/03/17(水) 11:23:35
電子カルテがこんな連中のソフトで構成されてると思うと目頭が熱くなるな
830 :
デフォルトの名無しさん :2010/03/17(水) 13:00:20
>>828 老人に言えよ
元は専門性の高い職だったのに文系大量にいれやがって
ですね
日々の体調管理ソフトだろ。電子カルテなわけがないじゃないか!
電子カルテって要はDBでしょ
>>833 まぁそうかもね
血圧計についてるソフトかもしれないし
電子カルテは別に難しくもなんともないんだが薬、検査とか多いからめんどくせぇ
しかも病院毎にちょっとずつ違う上に内科、外科でも違ってくるし・・・
これにレセプトとか加えたらたまんねぇなおい・・・
改正毎にちょこちょこメンテ代とれるからおいしいけどね
Delphi Borlandか
はあ?
こんにちわ C#でのプログラミング業務に就いてもうじき1年なんですが 椅子に長時間、ほとんど同じ姿勢で座りっぱなしなせいか どうやら痔になってしまったようです 同様の悩みを持つ同僚・先輩もいるんですが、いわば職業病みたいなものだから しょうがないといわれました・・・みなさんのお尻はどうですか? 何か対策や気をつけること・なってしまった場合の対策など アドバイスあればご意見うかがいたいので、よろしくお願いします
痔になる前から座布団を使う 痔になる前から正しい姿勢で座る 痔になる前から1時間ごとに体操をする 痔になる前からディスプレイやキーボードの位置を調整しておく これでおれは痔にならない自信がある
>>827 ありがとうございます。
((Form1)this.Owner). を使うことにしました。^^
841 :
デフォルトの名無しさん :2010/03/17(水) 15:45:26
それ最悪の方法 勉強する気がないならどうでもいいけど
こういうマナー違反するがRuby信者か・・・
C#信者は最近あちこちのスレを荒らし過ぎだろ
本当のC#信者ならそういうことはしない そういうことは他所でやってくれ
他所でやってるやんw
848 :
842 :2010/03/17(水) 16:21:26
本スレじゃなかった誤爆した
誤爆と見せかけてコピペ荒しか これがRuby信者です
荒らしに言葉通じるわけ無いのに引き取れって無理を言う
851 :
デフォルトの名無しさん :2010/03/17(水) 16:42:46
2chで「xxちゃんがあらすんです〜」って言われてもどうしようもないw スルーしろとw 同じレベルだから気になるんだよと
荒らされたので荒し返しますかw Rubyスレで揉めてるだけなのに 他のスレに火種持ってくるなと
>>841 どうして最悪なんですか?
とりあえず、これで動かして次の段階で他の方法を使うことにしようかと。
854 :
デフォルトの名無しさん :2010/03/17(水) 17:03:42
>>853 最悪ではあるけど
それで問題が出るまでやり続けて自分で気づくしないと思う
プログラミングなんてそういうものだから
ただ、要領の良い人は先人達に見習ってやる
857 :
デフォルトの名無しさん :2010/03/17(水) 17:09:05
>>855 わからねえなら聞けよ
Form間でどういう形式でデータ渡すかわからねーから
サンプルとしてstringにしてあるんだよw
Form2の中でForm1って書いちゃうとForm1からしか使えなくなるでしょ それが絶対にダメとは言わないが、Form1に依存するならするで Form2のコンストラクタやプロパティで明示的にForm1のインスタンスを渡したほうがいい 840だとぱっと見ただけではForm1に依存してないように見えるから質が悪い
>>857 stringだと値のコピーが渡されるから
例としては悪いね
860 :
デフォルトの名無しさん :2010/03/17(水) 17:16:14
ここで似非グローバル変数ですよ。
RubyもPythonもすべての変数はグローバルでパブリックで便利だお
863 :
デフォルトの名無しさん :2010/03/17(水) 17:21:48
そういうのでスパゲティにならないようにしたのに・・・ その作法を学ばないとは
スパゲッティって言うのはGoto文だらけのコードを言うのですよ。
>>840 ならむしろグローバル変数のほうがいいと思うよ
Form2が必要としてるのはForm1が表してるデータだけのはずなのに
Form1のUIにまで依存してるから余計に悪い
>>825 form2.SendForm(form1)
form1.SendForm(form2)
コントロールはすべてpublicに変える
これでおk
>>865 データを引数で渡したら時間もリソースも食うじゃない
868 :
デフォルトの名無しさん :2010/03/17(水) 17:29:02
きっと数千のオーダーの数のフィールドが並んだ構造体でデータを管理してるんだよ
714 名前:デフォルトの名無しさん[sage] 投稿日:2010/03/12(金) 16:23:13 では、質問です RubyやJAVAと比べて C#にできないことはなんですかぁ? C#より処理速度速いものってなんですかぁ? そしてあなたたちは答えます だからわたしはこういってあげます linuxやMac限定の話されてもねw でもこれももう時期払拭します C#最強時代到来
756 名前:デフォルトの名無しさん[sage] 投稿日:2010/03/12(金) 16:54:30 あらあらwRubyでは対抗できなくなってC++信者に七変化ですかw C++は最強ですよ確かに、私も好きですし否定はしません しかしですよ、もしC++が亡くなったら何使いますか? 何が2番手にきますか? そう、もちろんC#ですよねw C#最強 767 名前:デフォルトの名無しさん[sage] 投稿日:2010/03/12(金) 17:12:30 C#スレはプログラミングの話題がほとんどだが RubyスレもPythonスレも毎日バグ対処の話題ばかりw これだけ糞面倒なくせに処理速度はC#の足元にも及ばない
872 :
デフォルトの名無しさん :2010/03/17(水) 18:53:03
コピペ君って馬鹿だな、まで読んだ。
なにがしたんだろうなぁ
日本人で最強のC#使いは誰?
誰かがわんくま同盟だっていってたお
宇宙最強は俺だが日本だと誰かな
検索かけるとよくわんくま同盟関係のページが出るけど、 正直説明がよくわからん
業界のガンだからなぁ。
C#には型名に別名をつけるtypedefみたいなのはないの?
無いよ
usingならあるよ
ここでusingを挙げるのはわざととしか思えんw。
>>880 シールクラスか値型じゃなければ、メンバの追加変更なしの空っぽの派生型を作って、
implicitで元の型への暗黙変換だけ定義しとけば機能的には別名と同じかも。
まあ、そうだとしても邪道過ぎるね。
特にVBだとジェネリックの表現が長くて見づらくなるので、こういうことをする誘惑に
駆られたことがある。
P/Invoke絡みでint型のハンドル値をラップして 値を変更不可能にした構造体を作ったことはある IntPtrでは型が分からないしだからってクラスにするほどのものでもなかったから
C#を使って、2つ以上のwavファイルを繋げ、1つのwavファイルとして出力するようにしたいのですが、 どのようにコーディングするのが妥当ですか?
その程度だと妥当も糞もなくね
なくねくね
妥当と思えない方法ではできてるってことかな?
893 :
デフォルトの名無しさん :2010/03/18(木) 12:41:57
簡単? まあフォーマットを限定するなら波形データは単なる配列だからなあ 変換するとなると面倒かも
894 :
888 :2010/03/18(木) 12:51:31
895 :
デフォルトの名無しさん :2010/03/18(木) 12:56:37
>>894 フォーマットがまったく一緒ならdata部分を連結してチャンクの中の長さとかを変更すれば問題ないよ
でもデータが違うとモノラル、ステレオの対応や8bit,16bitの対応もしないといけない
あとサンプリングレートか
この辺絡むとノイズの問題がでてくるんだよな・・・
WAVファイルのヘッダとデータ部取ってきて それを2つ分 で、ヘッダーの情報を結合したデータの長さとかそのへん書き換えてデータ部分を連結させる で、おわりじゃ? やったことはないけどフォーマット仕様があるから簡単にできそうだけどなぁ
897 :
888 :2010/03/18(木) 13:06:22
フォーマットは8bitと16bitの両方があるです。。 やっぱり、この方法しか無いんですかね。。チャンクとフォーマットについて、調べ直してきます。
8bit 16bit変換は楽だよ たしか8bitは符号なしで管理してて音が鳴ってない場合は127か128あたり 16bitは符号ありで音が鳴ってない場合0だから単純に計算でいいかも 面倒なのはサンプリングレート変換かな
出来合いのライブラリに逃げちゃうな俺だったら
ライブラリどころかフリーソフト拾ってきてProcessで動かすだけでいいや
いまさら自分で変換する明確な理由でもない限り 実績のあるものに任せるのは正解な気がするな
バグってても人のせいにできるからね
GPLの罠
オープンソースでは非常に緩いライセンスが主流で GPL汚染が進んでないのは.NETの良いところだな
908 :
デフォルトの名無しさん :2010/03/18(木) 15:15:38
このレベルで4000円近くするのか
うひょ〜
DirectX使えば古いアナログシンセみたいのも作れるのかなあ どこまで行けるように頑張ろう
そこまでいくとDirectXなんか小手先の道具に過ぎない 専門の勉強しないと
サウンドバッファに正弦波書き込んでるだけで感動していた工房の頃
そう言えば昔はベジエ曲線書くだけで感動したなぁ
写真屋を超えようと思っていたあの頃
915 :
840 :2010/03/18(木) 22:06:03
やっと昨日教えてもらったことがわかりました!!!! ありがとうございました。^^
割り込みでFM音源ボード2を制御して使いこなす前に終わったあの時代
最近はじまったラジオのサイマル放送、radikoはrtmpというプロトコルが使われています。 このrtmpに関連するライブラリ等について情報があれば教えてください またC#でこんな応用アプリが作れるよ、っていうのがあれば教えてください。
でじゃぶーかと思ったら
>>816 と同じか
無いと思うよ
919 :
デフォルトの名無しさん :2010/03/18(木) 22:33:51
この板でPart50超えるほど伸びてるのにペース遅いだと…?
921 :
デフォルトの名無しさん :2010/03/18(木) 22:43:16
C#ってC/C++より歴史無いのに使いやすい言語なので ぐぐればそれなりのサンプルでてくるしなあ 2chで聞かれる内容は超初級か、マニアックなところかくらいだしペースは落ちてると思うよ
18日で900スレオーバーで、ペースが落ちてると・・・?
速度的にもこっちム板で4位だよ(相談室11位)
ここより速いスレってC++相談室とJava相談室とゲームプログラミングスレしかないけどな・・・。
18日で900スレはすごいな。
別れた経緯的に統合したくないという意見。
string[] a = Directory.GetFiles(textBox1.Text); これを配列1つごとに改行を入れてstring型のbに代入したいのですがどうすればよいのでしょうか?
String.Join
くっついたらC#相談室が1位になるのか
コンソールで実行した場合にプログラムを常に最前面に表示するようにできますか?
>>928 これ配列1つごとに改行を入れるのってどうすればいいんですか?
>>931 そのくらいMSDN読めよォオオオオオオオオオオオオオオオオオオオオオオオオオオ
String.Join("\r\n",a);
\r\nでも\nでもEnvironment.NewLineでも好きなの使え
933 :
デフォルトの名無しさん :2010/03/18(木) 23:11:56
>>930 コンソールってできたっけ?・・・・
コンソールじゃないとだめなの?
ウィンドウ意識したらコンソールじゃないし ウィンドウがあるとは限らないし
自分のウインドウ取得してTopmostにするしかないね。
標準入力パイプして起動してるかも知れん
(・∀・)
Dictionaryを途中からforなどで回すことはできますか? インデックスが指定できればいいんだけどどうやらなさそうなんですが
Dictionaryは要素が順番に並んではないから途中も糞もない 極端な話、一回目のforeachと二回目のforeachで列挙順が違っても文句は言えない
>>941 うわーそうなんですか
失敗した・・・
順番も大事なのでList<>で作り直します
ありがとうございました
visualC#でtextboxに入力した文字をint型で受け取りたいのですが Parseメソッドを使う以外にどんな方法がありますか?
Convert.ToInt32 など
TextBoxじゃなくてNumericUpDownを使う
>>946 お前疲れてるんだよ
AVでもみて一発抜いて寝るべき
UTF-8のフォルダ名やファイル名を検索する方法はないでしょうか? Directory.GetDirectoriesなどをやったときに「"ファイル名"の一部が見つかりません」 と例外が出てしまいます よろしくお願いします
一体どんな文字を検索しようとしてるんだ…・ 単にパス間違えてるとかじゃなくて?
大体NTFSでもWindowsでもUTF-8なんて使ってないはずだが
UTF8だからと思っていましたが フォルダ名などの末尾に全角スペースが入っているからのようです
ずいぶん前にMSが「ごめんそれバグ」っていってた気がする
仕様でしたか、では適当にスキップします ありがとうございます
先頭末尾に空白があるファイルはファイル名によるアクセスは無理じゃねーかな .NETじゃ\\.\+フルパスによる指定ができないから
955 :
デフォルトの名無しさん :2010/03/19(金) 13:17:14
ちょいと質問。くだらない事だけど、教えてけろ 以下コードだと、宣言が重複していますとコンパイラに怒られます。 @のクラス名かAの公開変数名を変えればいいのですが、 ほかに適切な名前がないので、困っています。 変数名をキャメル表記にすると、内部変数の命名規則とかぶってしまうし。 皆さんなら、どっちをどんな名前に変えますか? class GlovalData{ class InspectVals{ //--@ ... } public static InspectVals InspectVals = new InspectVals() //---A }
それ本当に内部クラスにする必要あるの?
957 :
955 :2010/03/19(金) 13:29:11
>>956 現状はデータ種別ごとに階層化させたくて、
こんな構造になってます。
別に外部クラスにしてもいいのですが、
この場合も何も考えずコーディングすると結局クラス名と公開変数が
かぶってしまうのですが、この場合の命名規則についても、
どうすればいいかよくわかっていません。
クラスは先頭にCとかプレサフィックスをつけるべきなんでしょうか?
その為にプレフィックスつけてたら命名規則守る意味なくね 本末転倒 クラス(構造体)名と識別子名が被ってるのなんか沢山あるから気にしなくていい たとえばRectangle.Sizeとか
OpenGLだとかOpenCvとかのC#用のライブラリがどのように作られてるか分かりません どこか詳しいサイトやぐぐるためのキーワードがあれば教えてください
公開されてるソース嫁ばいいじゃん
>>957 まず、内部クラスを外に見せるのはガイドライン違反。
それから、型の名前とプロパティ名を一致させるのはガイドラインではむしろ推奨。
>>957 まあ既に指摘されてるけど内部クラスを公開するのはおかしいよね。
ただ、内部クラスの「型」を公開するのはよくないけど、
内部クラスのインスタンスを公開するのは別に悪くないと思う。
何が言いたいかっていうと、公開する「型」は名前空間直下で定義して
(つまり内部クラスじゃない)、内部クラスはその型の派生型としてprivateで定義すれば
>>955 のやりたいようなことは一応できるよと。
言語ヲタてw 別にそんなヲタ好みのアクロバティックな手法ってことないと思うけど
>>962 それ意味無いよ
どうせ余所で勝手に派生型作られたら同じこと
素直に名前空間直下で宣言すればいいと思う
勝手にインスタンス作られるのが嫌ならコンストラクタをinternalに
967 :
966 :2010/03/19(金) 21:35:26
補足 外側のインスタンスフィールドにアクセスしたいというような 内部クラスが外側に密接に結びついてる場合は別だよ
今の時代はいいよな パソコンやっててもオタクと言われなくて おれが中学のとき丁度初代シムシティが出た頃 プログラミングに熱中してたらオタク扱いされたな でもその後、パソコンやっていた奴と パソコンをバカにしていた奴らの差は開くことになたがなw
そんな考えだから馬鹿にされたんだよ あ、今もか
>>966 インスタンスを外に公開するのにあえて内部クラスを選択する理由は、
外側のクラスのpivateメンバ(フィールドに限らない)にアクセスできることぐらいで、
そしてそういう使い方がしたい場合は稀にはあるでしょ。
クラスをネストしてもインスタンスの生成を禁止することはできない。
そういうことがしたい場合も、
>>962 に書いたように抽象型のみ公開するのが普通じゃないの。
971 :
デフォルトの名無しさん :2010/03/20(土) 00:47:01
>>968 こんなスレ居る(プログラム書いてる)時点で、大した差なさそうだけど・・・w
Directoryみたいな機能があって それプラスitem追加した順番に並ぶようなクラスは どうすれば作れますか?
973 :
デフォルトの名無しさん :2010/03/20(土) 01:31:56
>>972 >Directoryみたいな機能があって
>それプラスitem追加した順番に並ぶようなクラスは
>どうすれば作れますか?
えw
自分で文字にしたのがすでに仕様じゃん
976 :
デフォルトの名無しさん :2010/03/20(土) 01:40:49
えw DirectoryじゃくDictionaryなの?
って972=974なのか Directoryとか言うから関連があるとは思わんかった 内部にDictionary<TKey,TValue>とList<TKey>持ったIDictionary<TKey,TValue>実装クラス作ればいいよ
978 :
デフォルトの名無しさん :2010/03/20(土) 01:51:43
こういう小さいクラスも作れないのはキツイな・・・
おっと 書いてる途中で正解が書き込まれてた
すいませんDirectoryじゃなくてDictionaryで
途中から追加した順番に要素を検索するクラスが
作りたいのです
と言わなくても理解してくれた超能力者がいたので助かりました
>>977 のようなクラスは例えば
class foge
{
Dictionary<TKey,TValue>
List<TKey>
}
みたいになるんですよね?
そうじゃなくて
Foge<string,myclass> f=new Foge<string,myclass>();
for(int idx=9;idx<f.Count;idx++ )
{
myclass mc=f.items[idx];
}
のようにしたいのです
そこまでやりたいこと見えてるんなら 自分でできそうなもんだが
できることはできるんですが、 自分がやるとオシャレじゃないので もっとスマートに実現してくれるひとはいるかなと 思いまして
すいません間違いました こういう感じにしたいのです for(int idx=9;idx<f.Count;idx++ ) { myclass mc=f[idx]; }
984 :
デフォルトの名無しさん :2010/03/20(土) 02:07:58
>>980 そこまで分かってるなら検索ワードも浮かびそうだし
ぐぐれば出てきそうだけどな
というかその程度の実装で答えもらってると後で苦労しそうだけどな・・・・
誰か作ってくれるまで続けるつもりなのか?
頭悪いな
Foge<string,myclass> f=new Foge<string,myclass>(); List<string> g = new List<string>(); for(int idx=9;idx<f.Count;idx++ ) { myclass mc=f[g[idx]]; }
989 :
980 :2010/03/20(土) 02:17:06
990 :
980 :2010/03/20(土) 02:18:46
>>988 それだとスマートじゃないですよね
ひとつの自作クラスだけで実現したいんです
そう思うのはお前の頭が悪いから
992 :
980 :2010/03/20(土) 02:22:18
>>988 これだとアイテム追加する度に
二つの変数にそれぞれキーとかインデックスとか入れないとだめですよね
f.Add(string,item)
だけで済むようにしたいんです
>>991 ひとつの行いをするのに二つのクラスを使うなんてスマートじゃないです
993 :
デフォルトの名無しさん :2010/03/20(土) 02:23:54
>>992 そこまで分かってるならクラス自分で実装しろよ
お前がわからないのはクラスの作り方だろ?
994 :
980 :2010/03/20(土) 02:25:17
>>993 そうです
作り方がわからないので教えてください
995 :
デフォルトの名無しさん :2010/03/20(土) 02:25:52
996 :
980 :2010/03/20(土) 02:26:41
>ひとつの行い いや二つだよ
998 :
デフォルトの名無しさん :2010/03/20(土) 02:42:20
まあがんばれ このくらいはできるようにならんと
m,
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。