ふらっとC#,C♯,C#(初心者用) Part52
CA1031に汎用的な例外をキャッチしないで下さいってのがあります キャッチしないように書きたいのですが、ExceptionもSystemExceptionも 規約でキャッチしていい例外のスーパークラスなのでcatch(XXX ex)で取り除けず面倒です 何か手はないですか
Exceptionを引数に取る拡張メソッドでも書けば。
どうしたいの? 面倒だからまとめてキャッチしたいということならそもそも その考え方自体が規約違反なのでどうしてもそうしたいんだったらCA1031なんか無視すればいい
7 :
デフォルトの名無しさん :2009/12/26(土) 15:15:37
コンボボックスにBindingSourceを指定しているときの、データ連結表示について コンボボックスに、下記の2列のデータセットをBindingSourceとして指定しています。 このデータセットは、レンタルサーバー内のSQLサーバーにバインドしています。 TITLE PRICE りんご 100円 みかん 50円 なし 75円 このとき、TITLE列とPRICE列を連結して、 コンボボックスに 「TITLE + " " + PRICE」(例:「りんご 100円」というように表示させたいのですが、 BindingSourceを指定している時にも、その連結は可能でしょうか。 よろしくお願いいたします。
8 :
デフォルトの名無しさん :2009/12/26(土) 15:29:52
>>7 やったこと無いけどオーナードローにしたら?
オーナードローはできませんw
コンボボックス継承して動作弄れば
SQLサーバーからの取得時にくっつけとくとか
軟弱者C#厨の巣窟を発見(≧▽≦)
Visual Basic.net VS C#
はじめてプログラミングするんですが VBとC#とC++とJAVAだとどれがいいですか><;;
c#
>>16 その辺だったらどれでも、
だがここはC#スレだ
いっそ全部平行して覚えるのもいいかもね。
つ F#
おまいら暇すぎ
Whitespaceマジオススメ
>>25 Brainfuckにしました><
ありがとうございました><
昨日一昨日あたりからずっと脱線しっぱなしな気がする
画像認証を行いたいのですが、 例えば、123 という数字を画像にし、 この画像を数字として読み込む、ということがしたいのです。 どうすればいいでしょう?
>>31 そんな事も知らないんでちゅか?よくそんなんで生きてられまちゅね?
(;゚;ё;゚;)←C#厨
>>31 ググった方がはやい。
.NETにはそれをしてくれるAPIはたぶん存在しない。
真面目にやろうと思うならここで聞いてもたぶん解決しない。
出力する画像のパターンがわかってて遅くてもいいなら
単純にバイト列の比較でいいんじゃないの?
ググりたくないので質問したのですが。。。
>>37 数字を画像にして、それを数字として読み込むといいんじゃないかな
39 :
31 :2009/12/26(土) 17:17:50
>>34 APIは無いだろうと思いました。
バイト列で比較していってもいいのですが、数十桁x複数列となるとかなり時間がかかってしまい・・・
ググっても、画像認証は初めてで
>>35 OfficeにはOCRソフトがついてるみたいで、そのソースも参考にしたいと思います。
>>36 そうですね、ただ、スパム防止画像認証を突破するほどのものではなく、
単純に文字を画像化したものなのですが、フォントが数種類に分かれてて…
>>6 >面倒だからまとめてキャッチしたい
えー
tryブロック中でABCDEFと5種類発生する可能性があって
進行上問題がある例外はABCだけであり、DEFに関してはスルーしたい
メソッドは成功か失敗かだけを要求しているので汎用例外以外は再スローする気はない
この時
catch(A){}
catch(B){}
catch(C){}
catch(D){}
catch(E){}
catch(F){}
って書きたくない(どうせDEFのcatchブロックは空で冗長なので)
スルーする奴に関してはExceptionでキャッチしたいがCA1031に引っかかる
で、DEFを省略できないか?ということです
Javaは次版でマルチキャッチ(catch(D,E,F)とか書ける)導入するらしいですが、そんな感じの奴
諦めたほうがいい OCRライブラリ買うかCOMでOfficeのOCRコンポーネント動かすか
>ABCDEFと5種類 まず、数の数え方から勉強しよう。
煽りは結構です^^;
やりたいのは画像認証じゃなくて、画像認証破りか・・・。
Windowsから送られてくるイベントを取得するにはどうすればいいですか WM_GETMINMAXINFO とか。
WndProc をオーバーライド。
48 :
31 :2009/12/26(土) 17:53:25
>>41 やはり複雑そうなりますか・・・
バイト列比較でやってみようと思います;
>>47 もう少し詳しく解説してるホームページなどはありませんか?
ワロタ
位置もフォントの形も画像にしたとき1ピクセル違わず決まってるなら 単純なバイト列比較でも全く時間かからないだろ ある程度自由度があるなら画像認識が入ってくるので諦めろ
>>40 今の所そういうことができる機能はねぇと思うます。
CA1031の項目を見ると「もしくはブロックの最後に再スローしてください」とあるので、
if(ex.GetType==typeof(Exception) || ex.GetType==typeof(SystemException)){ throw; }
とでも書いておけば良いんじゃないでしょうか。
一応試した所これでCA1031は消えましたよ。
画像処理でやるなら2値化すりゃ簡単そうだけどな
>>53 再スローせずにスルーしたいって言ってるだろ
だから無理って言ってんだろキチガイ
>>55 私の考えてることを勝手に代弁しないで下さい
偽物が最近多いな
59 :
デフォルトの名無しさん :2009/12/26(土) 18:27:24
>>7 ですが、どなたか教えていただけないでしょうか
(>_<)
知ってるがお前の態度が気に入らない
64 :
デフォルトの名無しさん :2009/12/26(土) 18:54:27
65 :
デフォルトの名無しさん :2009/12/26(土) 18:57:31
教えてください (T_T;)。
(・∀・)イヤダ!!
67 :
7 :2009/12/26(土) 19:04:27
自己解決しまシタ(゚∀゚)
良かったな。二度と来んなよ。
平気で成りすますヤツが多いスレだな
ひゅ〜ひゅ〜
ここまで自演。
、、、、、、、、、、、、、((((( ^ω^)もそもそ
1000なら次スレからID出る
IDが出たら確実につまらなくなる
75 :
デフォルトの名無しさん :2009/12/26(土) 20:05:52
ちょっと… 教えてください(>_<;)。 コンボボックスのバインディングについて…。
76 :
7 :2009/12/26(土) 20:07:39
includeってどうやるんですか?
自己解決しました。
ホントにこの板の連中は引き際を知らなくて白けるな
C#にはヘッダファイルがないので、include はできないし、意味がありません。
81 :
デフォルトの名無しさん :2009/12/26(土) 20:36:37
テキストファイル内の、指定した行の内容を書き換える方法を教えてください。
その行だけ書き換えて、残りの行はそのまま出せばいい。
>>81 1 . 全行読込
2 . 指定行の値を変更
3 . 全行書込
簡単だろ?
自己解決しました。
誰が自己解決したのかわからんw
COMコンポーネントと.net frameworkコンポーネントって何がどうちがうの?
いろいろ違う。
そりゃ違うんだろうけどどういう点が違う
自分で調べろ
COMコンポーネントは、VCとかVCとか.NETとかいろいろなモノで作れるし、いろいろなモノで呼べる。 .NETコンポーネントは.NETだけ。
あ。VCとかVBとか、の間違い。
やっぱり自分で調べた方がいいぞ 簡潔かつ明快に説明出来るやつはここにはいない
COMの規格とNETのアセンブリの規格
そうだね。
だな
ちょっと質問なんですが、 マネージドなexe1つとDLLがいくつかあってひとつのアプリケーションを構築するとして、 DLL側のアセンブリに改ざん防止のキーを設定したうえでexeに参照設定を通してリンクすることで DLLの改ざんを防止することができますが、 同じ要領でexe側の改ざんを防止するための方法はあるんでしょうか?
もし可能だったとして exe改竄するやつは 防止機能も改竄しそうだけどな
なるほど
マネージドでもリバースエンジニアリングできないわけでもないしなぁ。
>>96 どうしても改ざんを防止したいんだったら、
証明書がついている公開キーでアセンブリを署名するしかないでしょう。
つうかマネージドの方が圧倒的にしやすいだろ
署名したって無駄だぜ。 実行そのものを阻止する手はないから。
「このアセンブリは改竄されてないから安心してご使用ください」は可能だけど 「このアセンブリのここ気にくわねえ書き換えてやるか」に対応するのはね
究極的にはクラサバにして弄られてこまる処理はぜんぶサーバで行なうとかするしかないよな。
>>102 もちろん、クライアントには適切なポリシーを設定して頂かないと。
改ざんされても大丈夫というのは不可能なので、改ざん防止をするしかない。
ついでに言うと、.NET3.5SP1からは デフォルトでは厳密名の署名確認もしないから気をつけろよ。 改ざんされてたって何も言わずに実行できるからな。
Enum.ToString()ってまだクソ仕様直してないの?
改竄されて困るようなものに.net使わない方が・・・
直ってませんw
クソ仕様って何?
>>108 改ざんされて困らないものってなんだ…?
ほとんどの物は改竄されても困らないだろ
まあ商用の連中だけだな
ネイティブのほうが改ざんされやすいと思うが。
困らないな
>>110 Enum.ToString()がメタデータテーブルをいちいち検索に行くせいで超遅いとかいう奴じゃね。
>>107 Enum.ToString() なんて、デバッグの時しか使わないだろ。
118 :
デフォルトの名無しさん :2009/12/26(土) 23:21:19
私は楽器店を経営していますが、顧客や商品管理システムを外注で頼んだら1人・1日あたりいくらくらいが相場ですか?
>>117 お前の主観で物事語ってんじゃねえよ調子乗るなクソが。
>>118 会社の規模にもよるけど今なら6000円/hじゃね
大きなところに頼むと10000/hぐらい?
商用で.NET使ってるソフトでショボイエラーとか例外吐かれると マジでイライラすることがある 積極的に例外使ってる奴は本当にムカツク
普通は一番最後にログに落し込むもんなんだけどな。 素の例外が外にでるのは流石に問題ありだ。
人月60万〜200万くらい。
へえ
小規模な店なら 顧客管理/商品管理はOffice買うかOpenOfficeダウンロードして 適当なDBなり表なりに記入でもしたほうが安上がりなんじゃないかなあって気もするけどな。
顧客管理と商品管理だけならAccessとExcelだけで十分だろ POSと連動させて単品売上管理までするとなるとOfficeだけじゃ無理だけどな
パッケージなら2〜30万くらいであるんじゃね?
POSと連動するソフトとかって幾らぐらいするんだろね?
POSと連動って何?
>>131 はやい話、レジで処理したらDBに販売結果が反映されること。
あー。POSの定義がおかしいのね。了解。
ググるとその手のソフト結構引っかかるけど 普通にパッケージ買うのとどっかの会社に作ってもらうのどっちが安くすむだろねぇ。
昔VB.NETで作ったなぁ。 PCにバーコードスキャナ、レシートプリンタ、キャッシュドロワとかつないで。
おかしいか? POSって言うのは販売時点情報管理として独立したシステムだし 使っているPOSが顧客管理システムを実装していなければ 別なシステムと連動させる必要があるだろ
パッケージの方が全然安い。
ある程度の汎用品と特注品でコスト同じだったら笑えるがな(´・ω・`)
普通の小売だと汎用品でもたりるよね、たぶん・・・ よくわからんけど今時の汎用POSソフトって独自のポイントカードぐらい標準で処理できたりすんのかな。
フリーのPOSソフトがむちゃくちゃ高機能でワロタw まぁパッケージで会社がなりったてるから高機能なのは当たり前なんだけど…
>>130 で紹介されてる商品スタッフUってソフトは
顧客管理システム実装してるな
これがフリーなら俺も自分で作ろうなんて思わんわ
ポイントカードシステムくらい自分でつくればいい
顧客管理ってどういう風にやりたいの?
画面数この数でフリーとか狂ってるとしか思えんわ
今時のフリーソフトはすごいなぁ。
お前らもこういう才能発揮しろよな…
こんなんやったら近くの同業者にマジで刺されるぞ…。
IT業界ってほんと土建屋チックだなw
どう高機能か動画みてみたらマジですごかった件orz
フリーソフトのカスタマイズも商売になるんだからいいじゃないか。
>>118 結論:商品スタッフUのスタンドアロン版使え
POSの購入代行をオークションでやりますって所がいかにも個人だなw
フリーで会社って事は最低でもJaneStyleレベルって事か。
(´・ω・`)←ウンコ臭いw
何か作ろうかって思っても既に高機能なものがフリーで提供されてて 萎えることって結構あるよね。
スレ的にはPOS for .NETくらい挙げて欲しいな ただし、Application Programmer's Guideが1400頁超(しかもWord)で 検索すらままならないし、まさしく悪夢としか言いようがないが
ε( υ´-∀-)
where from
( ゚-゚)ボー
Dim a As Integer と書いてもエラーします。なぜでしょうか?
自己解決すました。
こうゆう人ってなかなか成長しないよね
var pugyaa; と書いてもエラーします。なぜでしょうか?
164 :
デフォルトの名無しさん :2009/12/27(日) 09:11:25
エラーしますって斬新な日本語だなぁ
1-1000.Dispose(); と書いてもエラーします。なぜでしょうか?
168 :
デフォルトの名無しさん :2009/12/27(日) 12:09:54
C#でPCのマスタ音量を変える(ボリュームコントロール)機能を実現したいのですが、 いい方法やクラスをお知りの方がいましたら、ご教授おねがいします。
>>168 >239 名前: デフォルトの名無しさん [sage] 投稿日: 2009/12/27(日) 12:24:13
>んなこといったって初心者用スレはごく一部の上級者とほぼ全員初心者しかいないから、たまにしかまともな回答えられないし
>両方で相談するしかないじゃん。
>>168 マルチまでして聞いてきたわけだし俺が教えてやるよ。
カーソル操作API使って画面右下のボリュームコントロールの操作をエミュレートすればいい。
>>168 マジレスするとIMMDeviceEnumerator.GetDefaultAudioEndpointでサウンドデバイスを取得して
RenderのIMMDeviceCollectionを取ってIMMDeviceを取ってIAudioEndpointVolumeを取って
ようやくマスタボリュームが弄れる
あなたに使うことができるかどうかは知らない
私は相手の実力が判断できない初心者なので
Formでコンソールから呼ばれたときに、コンソールに結果を返すにはどうしたらいい? 単に、処理の最後に、 Console.WriteLine(processMessage); Close(); と書けばいいかと思ったら、コンソールから起動しても処理してみたら、なにも戻ってこないんだけど。
結果を返すって何? 終了コードを返したいなら、Application.Exit()とかEnvironment.Exit()だけど。
処理結果よ。処理結果。 string processMessage = いろいろ処理後のstring; Console.WriteLine(processMessage); Close();
なんでえらそうなの?
Windowsフォームアプリだと、Consoleクラス使ってもコンソールには出力できなかったような。 Console系のAPI使え。
>>174 プロジェクトのプロパティのアプリケーションの項で
出力の種類をコンソールアプリケーションにすればOK
馬鹿ばっか
178 :
デフォルトの名無しさん :2009/12/27(日) 13:34:56
179 :
デフォルトの名無しさん :2009/12/27(日) 13:35:30
質問させてください。 WindowsXP,Visual Studio2008で開発をしています。 サーバーエクスプローラにてMysqlのデータベースを読み込み、DataGridViewに表示をさせるといったことをしているのですが、 データベースに接続はできても、DataGridViewの表示の段階で躓きます。 どこで躓いているかというと、 デザインにてDatagridViewを張り付けて、そこからデータベースを関連付けるところで、 予期しないエラーが発生しました。 エラー メッセージ:アセンブリ'Microsoft.VisualStudio.DataDesign.SyncDesigner.DslPackage, Version=9.0.0.0, Culture=neutral, PublicKey Token=***************' から型'Microsoft.VisualStudio.DataDesign.SyncDesigner.SyncFacade.SyncManager'を読み込めませんでした。 とでました。 google先生に聞いてもHITしないし、エラーの原因がよくわかりません。 これはどういったことなのでしょうか。ご指南よろしくお願いします。
>>175 えらそうだったですか? すまん。ごめんなさい。
>>177 おお。これです。ありがとうございます。
ただ、これだと問題があります。
このアプリケーション、Formアプリケーションなのです。
出力の種類をコンソールにすると、実行時に必ずコンソールが開いちゃいます。
・ふつうはFormとして実行。
・if (args[1] == "console") {
string processMessage = "いろいろ処理後のstring";
Console.WriteLine(processMessage);
Close();
}
としたいのです。
ごめんなさい。自己解決しました。
どっちが解決したんだろう?w
187 :
デフォルトの名無しさん :2009/12/27(日) 15:23:35
パネルのオートスクロールをオンにしているとき そのパネルにスクロールバーが表示されているか否かを知るプロパティはありますか?
ありません
190 :
デフォルトの名無しさん :2009/12/27(日) 15:31:23
ごめんなさい 質問を取り消します
どれが取り消されたんだろう?w
192 :
デフォルトの名無しさん :2009/12/27(日) 15:34:56
Panelを使うとき、スクロールバーが出てるかどうかは確かに調べたいな。 どちらかというと強制的に出しっぱなしにしたいんだけど。
C#は小学生向けの言語というのは本当ですか?教えてちょo(´∀`)oワクワク
そうだな
どちらかというと何かと白黒を付けたがって 世の中のすべてのものがはっきり決まっててほしいと思いたがるような 中学・高校生向きかもしんない。
小学生のおじちゃんたち、教えてくれありがとーo(´∀`)o
中高生はたしかに極端なこと言うの多いよな。
一面だけ見てわかった気になっちゃうからね C#関係ねーよバカ
小学生でも使える素晴らしい言語です。 次は、英語を使えるようになりましょう。
で、小学生には、案外lispとかSqueakやPythonのほうがいいのかも。 Rubyでもいいけど、イディオムが多くて教えるのが大変そう。
小学生向きの言語はLogoと昔から相場がきまっておる
しかし小学生に教える先生達はVBしか使えないのであった
間を取ってSmallBasicだな
オッサンどもはいつになったらスレタイが読めるようになるの?
>>182 なるほど〜。Mainのなかで引数で条件わけするんですね。
すごい。目からうろこが落ちました。
ありがとうございました。
207 :
デフォルトの名無しさん :2009/12/27(日) 18:14:59
コンボボックスで表示されるリストのうち、 どれかをマウスでクリックしたら、 次のタブオーダーの項目に遷移するようにしたいとき、 どのイベントを使用するものなのでしょうか。 Clickイベントだと、リストを表示しようとコントロール上の▼をクリックした瞬間に移動してしまいます。 また、SelectedIndexChangedに記述しても同様です。 教えていただけないでしょうか。よろしくお願いいたします。
>>207 マウスでクリックしてるのに勝手に別のコントロールに
フォーカスが移動しちゃったら却って不自然だろ?
209 :
デフォルトの名無しさん :2009/12/27(日) 18:32:13
>>207 やったこと無いけどBeginInvoke 使えば出来るかもよ
210 :
デフォルトの名無しさん :2009/12/27(日) 20:37:08
自己解決しました!
自己解決できません。どうしたらいいですか
だからどれだと聞いているだろ
213 :
デフォルトの名無しさん :2009/12/27(日) 21:09:53
データグリッドビューに、データセットをバインドして、 3項目表示させるようにしていますが、 ある1行をクリックすると、 BindingSource_PositionChangedが3回起きてしまいます。 なぜ、1行を1回クリックするだけで、 BindingSource_PositionChangedが3回起きるのでしょうか…。
>>207 SelectionChangeCommitted ではどう?
>>213 ごく単純なのを書くと一回しか発生しなかったので多分どっかでなんかやってる
Enterやカーソルで行変えた場合はどうなの?
せめて全イベント試してから聞こうぜ・・・
質問があります。 <People> <Person IsReal="true" Name="坂本竜馬" Age="35"> </Person> <Person IsReal="false" Name="明智小五郎" Age="39"> </Person> <Person IsReal="true" Name="勝海舟" Age="18"> </Person> <Person IsReal="true" Name="西郷隆盛" Age="52"> </Person> </People> というXMLから、LINQ to XMLでAgeが38より大きい値のPersonを抜き出したいと思っています。 XDocument xdoc = XDocument.Parse(People); var query = from text in xdoc.Root.Elements() where text.Element("Person").(int)Person.Attribute("Age") >= 38 select (int)Person.Attribute("Age"); としてみたのですが、ぜんぜんだめです。 Elementの下はAttributeだと思うんですが、どこがどうだめなんでしょうか?
自己解決しました。
自己解決できませんでした。
と思わせて自己解決しました。
こんなカスしかいないところで質問した私がバカでした。 質問は取り下げます。
やーいやーい こんな質問も答えられないのかよゴミ!視ねや!
どうしようもないな・・・
226 :
デフォルトの名無しさん :2009/12/27(日) 22:47:06
単純に文字を印刷する場合 DrawStringが良いんですかね? DrawStringだと、2行印刷しようとした場合 座標を文字の大きさを読み取って、足していかないといけないので 座標を打ち込まなくても、文字を印刷する方法ってないんですかね? 教えて下さい
227 :
デフォルトの名無しさん :2009/12/27(日) 22:47:27
ないお
同じく
あるね
ないあるよ
質問は取り下げます。
どれが自己解決したんだかわかんねーよw
>>219 var query = from text in xdoc.Root.Elements() where (int)(text.Attribute("Age")) > 38 select text;
>>219 RootがPeople要素なんだから、そのElements()は各Person要素になるっしょ
Personの子要素にPerson要素は存在しないからtext.Element("Person")は当然失敗する
あとtextじゃなくてpersonにすべきだと思うな
>>226 意味がよく分からん
DrawStringでRectangleFを指定すれば、横幅を超えた分は自動改行してくれるが
そうでなければまあMeasureStringとかで計測するのが妥当だな
むかしAPIスレにいた頃こういうの流行ってたわ。
あるお
あるお)キリッ
>>219 people より persons の方が好き
>>226 確認してないけど StringFormat で折り返しできなかったっけ?
できるだろw
>>226 普通に改行コードいれても改行できるし、文字を描画する矩形領域を指定してやれば
折り返しの改行もできる。
まあまあできてもあまりやらない気がするけど。
っていうか、MSDNライブラリぐらい読もうよ。
できますん
>>233 >>234 早速ありがとうございます。
テストデータでは動くのを確認できました。
ただ、実際のデータはもうすこし複雑で、数が多くエラーが出ています。
<People>
<Person IsReal="true" Name="坂本竜馬" Age="35"><birthday="1836/01/03">
</Person>
<Person IsReal="false" Name="明智小五郎" Age="39">
</Person>
<Person IsReal="true" Name="勝海舟" Age="18">
</Person>
<Person IsReal="true" Name="西郷隆盛" Age="52">
</Person>
<Person IsReal="true" Name="坂本龍一" Age="57"><birthday="1952/01/17">
</Person>
</People>
から、「坂本」でAgeが38より大きい値のPersonの名前と年齢をセットで抜き出すにはどうしたらよいでしょう?
テキストファイルに文字を出力したいとき FileaAllWriteとStreamWriterってどっち使うほうがいいい?
>>244 birthdayタグが閉じてないから整形式XMLじゃないぞそれ
whereにNameの条件追加してselectで匿名クラス作ればいい new { Name = text.Attribute("Name"), Age = (ry
whereの前でletでnameやageを確保しとくと楽だな
whereは||でつないでもいいしwhereを二個書いてもいい
>>245 どっちでもいいよ
手軽だけど細かい操作ができないかその逆かだ
247 :
233 :2009/12/28(月) 00:34:45
初めから実際のデータ書けば二度手間にならないのになあ ハァ…
そういうない
xmlから自作のクラスのリストに放り込んでからselectするとインテリセンスも効いて楽かもしれない
一分間に100万行、改行をスペースに変換するソフトを作りたいのですが、 できません。どないしたらいいですか?
まずLANケーブルを抜きます
せやな
常駐ソフトなどを止めて CPUをより高性能なものにします
せやせや
楽しい?
個人的には既存のUnEditerとかじゃ駄目なの? という疑問と 環境がわからないのにそんなことできるかぁ〜というのと
分からない人はレスしなくていいです
ですね
C#でPC本体のビープを鳴らすにはどうすればいいですか
分からない人はレスしなくていいです
>>260 文字コード0x07を出力してみればいいんじゃね?
いいね
コメントありがとうございます。
>>246 whereの前? let。うう。使ったことがない。
っていうかLINQそもそも初めての初心者なのです。
いまこんな感じ。
var query = from person in xdoc.Root.Elements()
select new{
Name = person.Attribute("name").Value,
Age = (int)person.Attribute("Age") > 38
};
contents = "";
foreach (var q in query)
if (q.Name.Contains("坂本")) contents += q.Name + "\t" + q.Age + "\r\n";
とかで見よう見まねでコンパイルは通ったのですが、whereなくなってるし。…。
実行すると、「オブジェクト参照がオブジェクトインスタンスに設定されていません」のエラーだし。
やっぱりwhereですかね。
>>248 ほんとに、すみません。
質問するときには頭が混乱していて、うまく質問を整理できていませんでした。
>>249 初見の言葉が多すぎてちと自分では無理です。
>>264 取り敢えずforeachとif文から始めた方がいいかもしれんね
型 'App1.Form1' は 'menuItem7' の定義を既に含んでいます。 こんなのが、3くらい出てデバッグ出来ません;どうすればいいですか?
menuItem7を多重定義してる var menuItem7 = … 〜なんかいろいろあって var menuItem7 = … ってなってるところを探せばいい
>>264 そういうことなら、質問する前にLINQを基礎から勉強しろよ。
それが終わるまでは質問する資格すらない。
StreamReader @in = new StreamReader(fileName); string line = @in.ReadLine(); これで読み込ませるとマルチバイト文字が 文字化けします。Shift-JISのテキストも読ませたいです…
>>270 StreamReader @in = new StreamReader(fileName,Encoding.GetEncoding("Shift-JIS"));
272 :
270 :2009/12/28(月) 12:53:20
事故解決。System.Text.Encoding.GetEncoding(932) を第二引数に付けるべし 乙乙
>>271 おぉ…"Shift-JIS"でもいいんか
便利だ…
@inってなに?
Orz→@rz→@in
>>274 あんまり推奨はされないけど、@ を付ければキーワードを変数名に使える。
in は foreach ( in ) で使われるキーワード。
ようするに、@inなどという変数名は気色悪すぎるということだな。 _in などのほうがよほどマシ。
@ は基本的に、他の言語との連携用。 まあ、他の言語で使われることが想定されるなら、 そっちの言語でもキーワード限り避けるのが作法だけど。
ローカル変数にそれを(@)使うというのはどうかと思う。
>>281 ヘ_ヘ
ミ ・ ・ ミ < はつみみです
( ° )〜
C#、テキストボックスの中身をStreamWriterなどを使って、テキストファイルに一行ずつ書き出してるんだけどc互換の \n 改行コードではき出すにはどうしたらいいでしょうか? エンコーディングとか変えてみたんだけどうまくいかない
WriteLineとかEnvironment.NewLine使うとか。
VOIDさんって今どうしてるんだろ?
Form上に配置したラベルの上にポインターを持っていくとメッセージが出るようにするにはどうしたらいいんでしょうか?
ToolTipのこと?
>>289 ありがとう、名前が出てこなくってどうやるんだっけって悩んでた・・・。
>>290 そりゃ教えた甲斐が有ったわ。ヨイヨイっと。
ということにしたいのですね
へみ猫・・・
>>287 fjで活躍したあの人は今、って特集やらないかな
マ板にずっとスレがあったような・・・ しかし、アンチ脳にしろ信者脳にしろ、人に執着する奴って気色が悪いな。 精神分析の対象としか思えん。
怪物と戦う者は、その過程で自分自身も怪物になることのないように気をつけなくてはならない。 深淵をのぞく時、深淵もまたこちらをのぞいているのだ。 〜 ニーチェ 〜
Symbian上でもC#って使えるんですか?
へみ猫・・・
C#ソーステキストを読み込んで、自動でHTML用にfontタグ付加してくれるツール無いかな using System; //for form だと <font color="blue">using</font> System; <font color="green">//for form</font> みたいなの。
Blog用ツールとかであるな。俺は Emacs の csharp-mode でやって、face2html で出力してるけど。
いろいろあるねぇ ただ残念なのはほとんどのWebサービスが海外製ということ
ワードに貼り付け→WEBページとして保存、で出来るな。 COMコンポーネント呼び出しでなんか出来るんじゃないの。
いろいろあるね
>>296 一時期職場からpostできなくなったlalaとか懐かしい
C#はクラスや関数内じゃなくても並列処理されるんだな。 C言語だと完全に上から見ていくから int main(){ func(); } func(); これだとプロトタイプ宣言だかがないとかでエラーになるけど C#だと ClassOne{ //ClassTwoを使ったメソッドなど } ClassTwo{ } これがエラーにならなくて便利だな。
へえ
ふう
そういうの並列処理って言うのか.....?
言わないね。
static void
ああ、2期か 誰が買うんだよこんなのw
(゚∀゚)!
volatile void
319 :
デフォルトの名無しさん :2009/12/30(水) 00:18:36
コンボボックスに、Valueメンバー、Displayメンバーとして (Value,display)= (1,イヌ), (2,ネコ), (3,スズメ) と3種類を設定します。 そして、隣にテキストボックスAを設置し、例えばAに 「イヌ」と入力されたときは、コンボボックスに存在するのでValueの"1"を、別のラベルに表示。 「スズメ」と入力されたときも同様、Valueの"3"を、別のラベルに表示。 「ニワトリ」と入力されたときはコンボボックスにないので、別のラベルに"なし"と表示。 と、したいのですが、 あるテキストが、コンボボックスのリストに存在するかどうかを調べるにはどうすればよいのでしょうか。 よろしくお願いします。
FindStringとか
321 :
319 :2009/12/30(水) 00:25:53
自己解決しました。
よかったね。死ねハゲ
Form2から、Form1のメソッドにアクセスしようとしても、 メソッド自体が見つからないみたいで使えないんです。 どうやれば使えるようになりますか?それとも、Form2にそのメソッドをコピーするしかないですか?
Publicにする。
変数とかもpublicにすれば使えるようになるんですか? というか、publicにしたら使えるのなら、何故始めから全部publicにしないのですか?
したきゃすればいい 止めない
使わせたくないから。
関数型プログラミング的に 匿名クラスやラムダ式が使えるのは大きい。 いちいちクラスを別の場所にごちゃごちゃ書いてから MyClass mc =new MyClass(); とかかくより var mc = new {Name="Kobayashi",age=17,}; このほうがすっきりしてはるかに読みやすいな。マジ最強
>>327 いや、使わせたくないってのは想像付きます
だけど、何で駄目なんですか?ミスがおきやすくなるから?とかですか?
使えると、モジュール結合度が高くなるから。 あとは、カプリングとコヒージョンについて書かれた文書でも読んでください。
モジュール結合度が高くなったらまずいんですか? 便利だと思うんですが
なんで便利なの?
分かってて書いてる人のようですよ 以下スルーでよろしく
とりあえず、みんなに使ってもらいたいもの*だけ* public にすると思ってください。
まったくわかってない「どちて坊や」な可能性もあると思われ。
全く分かってなけりゃモジュール結合度って何ですかと聞くよ。 高くなったらなぜまずいのか?は墓穴掘ってます。
わざとらしさプンプンだよなw
んじゃ、それで。
とりあえず
>>334 で覚えておきます
別フォームから使いたくなったメソッドと変数はpublic付ければ良いんですね
モジュール結合度ってそんなに重要なものですか?
そんなに意識して開発したことは無いのでよく分からないです。
次の方どーぞー。
ぷぅ〜、スッキリした
めんどくさいのが増えるよね、この時期は。
internal ってなんですか?
公開範囲を決めるキーワードで”同アセンブリ内へ公開”を示す
staticとどう違うんですか?
ぜんぜん違うじゃん・・・教科書読むところからやりなおしたら?
教科書無いんですがどうすればいいですか?
買え。
お金無いんですがどうすればいいですか?
自己解決すました
自己解決してないです。 お金が無いんですがどうすればいいですか?
ヘルプ読めよ。
InfernalDispose(351);
マウスを監視して、放置状態を一定時間ごとに確認する常駐プログラムを作りたく思っているのですが、 マウス位置を10分ごとに比較するとして、 そのような処理は、Timerで600000msでポーリングかければ良いのでしょうか? 他に良い方法ありますか?常時起動しておくものなので、CPU負荷は最小にしたく思います。
C#でできるRoboCodeのようなものってないでしょうか? 以前から探しているんですがそういったものは見つかりません。 やはりないのでしょうか。よろしくお願いします。
356 :
355 :2009/12/30(水) 15:34:29
ちなみにイメージしているのは以前あったTerrariumのようなものです。 お願いします。
10分なら、タスクスケジューラでもいいんじゃね?
358 :
デフォルトの名無しさん :2009/12/30(水) 16:40:35
a
>>357 タスクスケジューラのほうが軽いでしょうか。
というより、タスクスケジューラなるものを始めて知りました。
一度も使ったことが無かったです・・・
ちょっと調べてみます。出来そうならそれでやろうと思います。
そんな神経質になるほどCPU使わないよ
タスクスケジューラは、呼び出したときに、以前保存したマウス座標と比較して、 マウス座標をファイルに書き込んで、って処理を行うって事で良いのでしょうか? 出来ればそのように、常駐じゃなく10分に一度走らせる、のほうが良いのですが… でも、出来るだけ同時実行するファイルは少ない方が良いですし・・・ 負荷出来るだけ無くしたいじゃないですか。そこまで気にする人は少ないんですかね
もしフリーソフトかなんかで不特定多数が使うなら,タスクスケジューラなんて得体の知れないものは嫌われるよ
常駐の方が、負荷は少ない。
364 :
デフォルトの名無しさん :2009/12/30(水) 17:16:07
起動終了繰り返す方が常駐より負荷高いよな
Console.SetWindowPosition(0,0); ってやってもコマンドプロンプトの位置が変わらないんだけどなんで?
「得体の知れない」って、タスクスケジューラが? OSが提供してるサービスなんだけどな。
負荷を下げたいならC#もやめないと
ハァ?
>>366 中途半端に知識がある非プログラマにとっての話だよ
勝手に登録されたら気持ちわるいけど インストーラーで説明入るなら別にかまわない
かまわないですね
やはりそうですね、タスクスケジューラは嫌う人が居ると思うので、 常駐起動にして、普通に10分ごとにポーリングすることにします。 簡単なプログラムならC++でも出来るので、そっちでやろうかとも悩んでます。 とりあえずありがとうございました。
「人間が操作をやめたか」を調べるなら根本的に方法が間違ってるけどね。 検知したいなら「マウスが動きを止めてから10分間経過したら」だよ。キーボードだって調べないと。
WebBrowserクラスもしくはmshtmlでjavascriptが使われてるページの情報 を取得したいと考えています。 ajaxでDOMを書き換えたとき、それをイベントとしてハンドルすることは できませんか?(OnDocumentCompletedじゃないですよね) また、書き換えた差分を抽出するのはdiffをとるしかないでしょうか?
377 :
355 :2009/12/31(木) 02:29:53
>>368 2.0が出てたんですね。散々探してたくせに全然知りませんでした。
さっそくやってみます。ありがとうございました。
>>375 操作をやめたか、なんですが、そこまで正確にする必要は無いんです。
それに、無駄に複雑にして重くするのも嫌ですし、出来るだけ軽くしたいので最低限の処理でやろうと思います
まあ思うとおりに組んでみなよ。実際に組んでみたら自分の考えてる最低限の動作もしないことがわかるよ。
うむ。このスレの住人ってたま〜に良いこと言うな
ありがとう
素朴な疑問なんですが this.WindowState = FormWindowState.Maximized; は何故 this.WindowState = WindowState.Maximized; こうじゃないんですか? this.FormBorderStyle = FormBorderStyle.None; とかはプロパティ名=列挙型なのに。
windowsstate列挙体はWPFが使ってるから
なにそれこわい
こわいですね。
おまいら大晦日に暇だな
そういえばなんでWinFormsはSystem.WindowsじゃなくてSystem.Windows.Forms名前空間にしたんだろうな 今はWPFがSystem.Windowsを使ってるが.NETの初期のバージョンの開発時にそんなことを予期してたとは思えないし
.NET Framework1.0が2002年だった そのころにはAvalonって言葉はあったと思うけど?
CLRの開発がいつから始まったと思ってんだ
VS2010って何が変わるの?
2000年にはベータが配られてたな。確か。 つーか、MSのやることなんて、昔から全然一貫性ないじゃん。 臨機応変といえば、その通りなのかも知らんけど。
というか、.NET Frameworkってやっと2.0が普及したところなのに、 4.0なんて入れてくれる環境あるか?w
>>394 そのうちMicrosoft Updateで自然と入るだろ。
3.5までは自然に入るよね
WPFの開発計画の発表は2001年らしいから、それくらいから考慮していても不思議じゃない
398 :
355 :2009/12/31(木) 13:13:15
たびたびすみません。 教えていただいたterrarium2.0をいじってるんですが 現在はオープンソース化したとのことでMSのマニュアル等がないようなので つたない英語力でwiki等も調べてみたものの、APIのマニュアルが見つからないのですが これについてはやはり古い書籍等を参考にするしかないでしょうか?
俺は始めたばっかだから 3時間9分54秒だった・・ 惜しい
誤爆スマソ
撤回するなw
403 :
399 :2009/12/31(木) 13:34:13
自決しました
Terrarium-2.0-SDK.zip にドキュメントがあるんじゃないの?
405 :
355 :2009/12/31(木) 13:50:29
>>404 忘れていました。確かにありました。
ありがとうございました。
本来、以下のように記述すべきところを string str; for(〜){ str = 〜〜; } 以下のようにforループ内で毎回ローカル変数を定義しては無駄が多いですよね。 for(〜){ string str = 〜〜; } でもこのように記述すれば1行減ってソースはスマートになります。 この程度ならC#のコンパイラは最適化してくれますか。 だとしたらこのように記述したいのですが
forの内と外で宣言するとスコープ範囲が違うけどそれはわかってる?
前に調べた限りじゃ、ILへのコンパイル時に、その手の最適化はしてくれなかったような気がする。
>>406 for の中で string のインスタンス作って、for の中だけで使うんなら
どっちで書いてもパフォーマンス変わらないと思うけど。
string str; ってやっただけだと何も起きないよ。
最適化はしてくれませんか。 いちいちループ内でのみ使う変数を宣言だけループの外でするのは面倒だけど、最適化してくれないなら そう記述したほうが処理的には効率が良いということですね。 しかしループ回数が少ないなら殆ど影響ないかも。
>>409 でもループ内で毎回string str;とすると、stringクラスインスタンスのアドレスを確保する領域が
毎回そのつど確保されるんじゃないですか。
いいえ ローカル変数は一つの宣言につき静的に一つ確保されるだけ ループでも同じ
>>411 コンパイルしたら、forの外にいようと中にいようと、
吐かれるコードは ldloc (load local) だからなぁ。
一緒。
今、IL Disasm してみたけど、for 内でしかインスタンス作ってないなら
コンパイル結果寸分たがわず完全一致してたよ。
Debug コンパイルですら全く一緒。
一つのメソッドで使われるローカル変数の領域っていうのは完全にコンパイル時に決まるんだよ ループ内で宣言しようが全く関係ない
415 :
414 :2009/12/31(木) 14:57:20
誤解されそうなこと言ってるな もちろん実際に確保されるのはメソッドに入る時だけど そのときのレイアウトや必要なサイズはコンパイル時に確定しているということ
>>412-415 皆さんありがとうございます。
ローカル変数の領域確保の仕組みがよく分かりました。
クラスのnewとかならそりゃヒープ確保とかインスタンス作成とかでオーバーヘッドはかかってくるが、 ローカル変数自体なんて 単なるスタック領域にすぎないんだからどっちにしても普通は変わらん。
スコープとか関係なかったんだね。これは良いことを聞いた。
WndProcってなんですか?
ggrks
System.String str = new System.String(""); string str = "";
自作しました。
はあ?
自炊しました。
425 :
【凶】 :2010/01/01(金) 00:46:08
てst
趣味でC#を勉強中なのですが ネット上で紹介されているプロの方の書いたコードサンプルを見ていて 継承元クラスのフィールドなどにアクセスする際 通常は「base.」と付けないような印象を受けたのですが こういう記述の仕方にセオリーといったものはあるのでしょうか? よろしくお願いします。
baseは、自分のメンバーに親と同じ名前付けちゃって、明示しないと親のメンバーにアクセスできないときしか使わないなぁ。
なるほど。そういう時は確かに明示する必要がありますね。 実際、明示の必要がある時だけ書く方がわかり易いですね。 ありがとうございました。
class A : B{ } って書くより class A{ B b =new B(); func(){ b.func(); } } でおk、baseいらね
>>429 継承元クラスって書いてあるだろ
ちゃんと見ようぜ
まあどうしても継承でなければならない理由がない限りは
>>429 の下の方が望ましいのは確か
継承するより委譲しろってことだろうけど それは今回の問題とはまた別の話
base.Hoge 変数・メソッドにアクセスなら普通付けない : base(Hoge) 継承元のコンストラクターをコールするときは付ける
434 :
デフォルトの名無しさん :2010/01/01(金) 20:54:24
VC#2008で開発しています ツールボックスに登録されているbuttonを継承したクラスを作った場合 IDEのデザイン機能の恩恵を受けることはできないのでしょうか?
1回ビルドすればツールボックスに登録されるはず
436 :
デフォルトの名無しさん :2010/01/01(金) 21:10:23
できました ありがとうございます グーグル先生に拾ってもらうメモとして ソリューションエクスプローラーを開いてbutton継承クラスを追加 using System.Windows.Forms; using System.ComponentModel; を継承クラスに追加 下記のように設定 class ExButton : Button { public ExButton() { base.SetStyle(ControlStyles.Selectable, false); } } まさに上の質問も参考になりました。 たぶんそれがなければその辺でもはまったかも
437 :
デフォルトの名無しさん :2010/01/01(金) 21:12:41
とあるbyte配列にbyte,byte,short,longとデータが並んでるとして、 それぞれの値を別の変数に格納するにはどうすればいいですか?
439 :
デフォルトの名無しさん :2010/01/01(金) 21:27:52
>>438 unsafeにして、ポインタ使うのが楽じゃね?
440 :
デフォルトの名無しさん :2010/01/01(金) 21:30:51
byte配列ならBitConverterか 自前で合成 short配列に byte[3]*256+byte[2] のような感じで(エンディアンは自分で考えてください
442 :
デフォルトの名無しさん :2010/01/01(金) 21:31:06
アホかbitconverter使えよ
>>406 遅レスだけど、
ILでは、
.locals(...)
で関数の最初で確保される。(確か)
444 :
デフォルトの名無しさん :2010/01/01(金) 22:33:34
以前スクリーンキーボードの件で相談した物です。
ある程度形になったのですが一つ困った挙動があります。
スクリーンキーボードの性質上なるべく最前面で表示させておきたいので、
TopMost=trueにしてアクティブにならないように制御して自前ツールが
アクティブにならないように動くようになりました。
しかし、ツール以外のウインドウのタイトルバーをダブルクリックした場合
の挙動が死んでいるようで、一般的な「ウインドウの最大化」、「もとのサイズに戻る」
が渡っていないようです。
この場合の対策方法はありますでしょうか?
右上の並んでいる□が今回製作中のツールです
http://uproda.2ch-library.com/201727nKr/lib201727.png わかっている範囲ではタイトルバーのダブルクリックだけ受け付けず
その他は問題ないです
445 :
444 :2010/01/01(金) 22:41:46
すみません 非表示の際にTopMost=flaseとしてみましたが結果は同じでしたので TopMostは関係ないようです。
知ってます
447 :
444 :2010/01/01(金) 22:46:59
おそらくこの辺が関係してるんですかね? //アクティブにならないウインドウに //するためのオーバーライド protected override void WndProc(ref Message m) { const int WM_MOUSEACTIVATE = 0x21; //const int MA_ACTIVATE = 1; //const int MA_ACTIVATEANDEAT = 2; const int MA_NOACTIVATE = 3; //const int MA_NOACTIVATEANDEAT = 4; if (m.Msg == WM_MOUSEACTIVATE) { m.Result = (IntPtr)MA_NOACTIVATE; return; } base.WndProc(ref m); }
タイトルバー、どこにあんの?
449 :
デフォルトの名無しさん :2010/01/01(金) 22:52:09
>>448 あ、わかりにくくてすみません
ツールじゃないほかのウインドウのタイトルバーのダブルクリック制御です
その他ウインドウに影響を及ぼさないツールとして作りたかったのですが
今回のスクリーンキーボードが起動していると他所のウインドウの
タイトルバーのダブルクリック挙動が効かない状態になるんです
ん? 自アプリじゃなくて、別のアプリの話? あんたのアプリを実行中に、他のアプリのタイトルバーをダブルクリックしても、反応がない、ってこと?
勿論、
>>447 を追記しただけのフォームで再現できるんだよな?
452 :
444 :2010/01/01(金) 22:59:35
>>450 そうです
名前がないと面倒なのでスクリーンパッドと仮名をつけます
メモ帳やブラウザなどを任意のウインドウサイズから最大に広げる際に
右上のボタン以外にタイトルバーのダブルクリックでも同じことが行えま
すがスクリーンパッド起動中にそれができなくなるのでそれを回避する
方法が知りたいと思いまして・・・
453 :
444 :2010/01/01(金) 23:02:26
>>451 formクラスは
>>447 でオーバーライドします。
それとは別にタイマーを使って一定サイクルで下記処理を動かします。
private void timer1_Tick(object sender, EventArgs e)
{
int ThreadProcessId = GetWindowThreadProcessId(this.Handle, IntPtr.Zero);
IntPtr OldWindowHandle = IntPtr.Zero;
IntPtr targetWindowHandle = GetForegroundWindow();
if (targetWindowHandle == this.Handle && OldWindowHandle != IntPtr.Zero)
{
SetForegroundWindow(OldWindowHandle);
}
else
{
if (targetWindowHandle != OldWindowHandle)
{
int targetThreadProcessId = GetWindowThreadProcessId(targetWindowHandle, IntPtr.Zero);
AttachThreadInput(ThreadProcessId, targetThreadProcessId, true);
OldWindowHandle = targetWindowHandle;
}
}
}
うーん。オレの環境じゃ再現できないな。 Vista SP2 x64 + Visual Studio 2008 SP1
455 :
444 :2010/01/01(金) 23:14:27
あ、すみません
書き込んだらなんとか・・・がきちゃいました
メッセージ処理などが他に居るのかと思い込んでたのですがどうも違ったようです。
タイマー内のIntPtr OldWindowHandle = IntPtr.Zero;の位置が悪かったようです
これをタイマー処理のスコープから出したら問題なく動きました
>>454 お付き合いしていただいて済みませんでした
AES暗号なんかを使う場合に鍵長なんかの指定はどうやればいいんでしょうか?
SymmetricAlgorithm.KeySize Property とかで指定。
>455 そんな面倒なことせずにWS_EX_NOACTIVATEを使えばいいのに
460 :
444 :2010/01/02(土) 04:58:39
461 :
デフォルトの名無しさん :2010/01/02(土) 07:07:13
おかしな挙動ではまってるのでアドバイスいただければと思います。 デスクトップ上の始点と終点を指定するとその範囲だけを スクリーンショットとして保存するソフトです。 半透明で表示するフォームにラベルx4とpictureBoxを使っています。 ラベルx4の内、x2には始点と終点のXY座標を表示しています。 問題の挙動というのがpictureBoxをフォームにドッキングしてしまうと ラベルのテキストがまったく更新されないという物です。 pictureBoxのドッキングを解除してフォームより小さいサイズに するとラベルのテキストが更新されます。 対処方法とか何かありますでしょうか?
このスレからクソ内容の書き込みを特定するLINQつくってみた var a = from L in このスレ where 内容がクソ select 数値 a = 462
>>461 windows付属のsnipping toolを使う
465 :
デフォルトの名無しさん :2010/01/02(土) 16:20:56
今、業務用Windowsフォームアプリケーションを作成しています。 その中で、ローカルPCの所定の場所に、重要データをテキストデータで保存できるようにしたいのですが、 個人情報はないものの、機密データでもありますので、テキストデータ保存時に暗号化したいと考えています。 C#で、そのような暗号化の機能はありますでしょうか。 ご教示ください。
System.Security.Cryptography.Rijndaelとか使えば ↓暗号化したって無駄だとかそういう突っ込みはいい 質問者が良いって言ってるんだから話をこじらせようとすんな黙れ
はい、ありますよ。
突然なんなのw そう言われると指摘したくなるなぁ。
469 :
デフォルトの名無しさん :2010/01/02(土) 16:43:07
>>467 どのような方法があるの?僕にも教えてください。
ドットネットで完結しようとしないでOSの機能とか調べてみたらいいのに
>>466 > ↓暗号化したって無駄だとかそういう突っ込みはいい
なんらかの形で、それなりの長さのパスワード入力させれば、無駄ということはないんじゃないか?
歌の一フレーズ入力させるとかあったな。
474 :
デフォルトの名無しさん :2010/01/02(土) 20:32:50
このスレからクソ内容の書き込みを抽出するLINQ from このスレ select クソ内容の書き込み
>>474 まさかとは思うけど、そのコードでscreencap_rec(どうでもいいけどもうちょっと命名工夫しようよ)
のpicturebox1をドックすると期待した動作にならない、って話?
ラベルを更新するコードがformのMouseMoveイベントに書いてあるんだから当たり前じゃん。
フォームの全辺にドックしたらformのクライアント領域の全部をpictureboxが覆うんだから
マウスイベントはんて発生するわけないでしょ。
477 :
474 :2010/01/02(土) 21:53:49
>>476 >まさかとは思うけど、そのコードでscreencap_rec(どうでもいいけどもうちょっと命名工夫しようよ)
みなさんはどういう感じでやってるんでしょうか?
頭の中に思い描いたプログラムを急いであれこれ実装してたので
命名まではあまり考えてませんでした
>フォームの全辺にドックしたらformのクライアント領域の全部をpictureboxが覆うんだから
>マウスイベントはんて発生するわけないでしょ。
あーなるほど・・・
つまりformのMouseイベントで処理してるところをpictureboxでやればいいんですね
478 :
デフォルトの名無しさん :2010/01/02(土) 22:39:38
SATA のポート番号何番にどのハードディスクが刺さってるか知るには どうしたらいいでしょうか? WMI 使うのかなとは思ったんですが、どの namespace と class 使えばいいか わからなかったので、よろしくおねがいします。
479 :
デフォルトの名無しさん :2010/01/03(日) 00:06:52
shift+tabキーでカーソルが入ったときにも Enterイベントを発動させるにはどうすればいいですか?
別に何もしなくても発生するけど?
保存形式を独自の物にしたいと考えたのですが(他のアプリケーションでは開けない) そこで考えたのがAES等による暗号化を施そうと考えました。 こういった場合にAES暗号化時に用いる鍵、IV情報はプログラム的に毎回同じものを生成するようにしておいたほうがいいのでしょうか?
変数名とnewの名前同じなのにいちいち二回かくのめんどい abcde a= new abcde(); だったらabcdeが二回あってしつこい a= new ebcde(); でよくね? 一回で済ます方法ないの?
483 :
482 :2010/01/03(日) 08:10:24
new abcde() a; 解決しましたありがとうございます。
var つかえ
インテリセンスを使わない理由がわからない
AClass a = new までうてば AClass() が補完候補にでてくるもんな。 var だとそうはいかない。
C#にvarなんてあったのか!
何でも入る変数ではないぞ。コンパイル時に型推論してくれるだけだ。
拡張メソッドって何ですか? Wikipedia見て見たけどよくわかんないです;
ポリモーフのルールがわからん たとえば void func(AClass); なメソッドがあったとして Object o=new AClass(); でfunc(o)はダメ AClass a =new AClass(); func(a);は大丈夫 AClassを敬称してるBClassについては BClass b = new BClass(); AClass a = new BClass(); のばあいfunc(b)、func(a)両方大丈夫 でOKなのか?
>>490 関数の引数の多態性は静的多態だからなぁ。
変数の型(new した方じゃなくて、 o とか a とか b の宣言時の型)に基づく。
それがキャスト可能かどうかがすべて。
>>489 MyFunctions.Foo(hoge);
というstaticメソッド呼び出しを
hoge.Foo()
と書けるようにする仕組み。
493 :
デフォルトの名無しさん :2010/01/03(日) 17:56:54
C#でoracleと接続する方法を教えて下さい C#はExpressEdition 2008で oracleは11g_home1です かなり初心者ですので 一から教えていただけるとありがたいです
ODP.NETを使います。Oracleのサイトにやり方が載ってるので、 それを参考にしてください。
金払って教えてもらうレベルのことをただで丁寧に教えろという神経がわからん
496 :
デフォルトの名無しさん :2010/01/03(日) 20:29:57
まず、コンピュータを購入します
497 :
デフォルトの名無しさん :2010/01/03(日) 20:31:26
>>495 そう思ったらスルーすればいいだけですよ
>>493 ODBCでも使ってつないでろよ・・・。
>>493 ここはC#のスレです。
Oracleとの接続に関してはOralceのスレで聞いてください。
まあodp.netでぐぐればあとはできるからほっとこう
501 :
デフォルトの名無しさん :2010/01/04(月) 00:51:58
System.Collections.IEnumerable 型で渡されたCollectionオブジェクト を処理する場合、その要素の元の型を知っていないと処理できないかと 思うのですが、使うときは foreach() 内などではその既知の型にキャスト してから(そのプロパティ値などを)処理するということでよいでしょうか?
うん。 今から作るなら普通は System.Collections.Generic 名前空間内のものを使うだろうから 型がわからないってことはないと思うけど。
503 :
501 :2010/01/04(月) 01:23:21
>>502 >System.Collections.Generic
こちらで送られてくる場合は型が付いてくる、ということなのですね。
古いコントロールだとIEnumerable で出来ているためにそういうことになる
ということなのですね。わかりました。ありがとうございました!!
foreachにキャストが含まれているのは知っているだろうけど、 あれもジェネリック型が無かった時代の産物というか発想だよな
Formやプログラムの終了方法ですが Close(); Dispose(); Application.Exit(); Environment.Exit(0); どれがいいんですか?
タスクマネージャーより最前面にフォームを持ってきたいのですが、 GetForegroundWindowAPIを使って自スレッドにアタッチした後Activateも駄目、 勿論TopMostやFocusも駄目でした。仕様上出来ないものなのですかね?
>>505 Close()やDispose()は指定したFormだけ。
Application.Exit()なら全てのFormを閉じてくれる。
Environment.Exit()は知らね。
ストリームからデータを読み出そうとすると 'System.Security.Cryptography.CryptographicException' のハンドルされていない例外が System.Core.dll で発生しました。 追加情報: 入力データが完全なブロックではありません。 というエラーが発生してしまうのですが何故なのでしょうか?
そのまんまだろう 復号ストリームに食わせたブロックが欠落してる
FileStreamを対象ファイルで作成し CryptoStream作成時に上記で作成したストリームを渡して CryptoStreamMode.Readを行っているのですがどこでデータが欠落するのでしょうか・・・。
対象ファイルの中身
>>512 そりゃそうですよね・・・orz
ファイル書き込む時に暗号化データをStringに直して書き込んでればそりゃだめになりますわ・・・orz
死んだ方がいい
PictureBoxの画像を半透明にしたいのですが。
if (a == 1) { b = 10; } else { b = 100; } 例えば上記の様な場合 b = (integerA == 1) ? 10 : 100; のように書くというのは 1)極力(あるいは絶対に)上の例のように書くべき。 2)極力(あるいは絶対に)下の例のように書くべき。 3)見易さに応じてケースバイケース。 4)特にセオリーはなく、完全に好みの問題。 熟練されてる方々は一般的に1〜4のどのスタンスで使用されているのでしょうか。 よろしくお願いします。
517 :
516 :2010/01/04(月) 17:25:44
下はintegerA じゃなくてa の間違いです。 それから上の b=100; も字下げ忘れてました。 見辛くてすみません。
あとから修正の入る可能性がないと仮定したうえで、 禁止されてない限り(禁止されることは珍しくない) 2 。
>>515 BackColorをTransparentにする
実装に無理があっていろいろトラブルが起きやすい方法なので,できれば
下に描画するものも含めてGraphicsで自前描画してしまうか
WPFでも使ったほうがいい
3でしょ、見やすさと言うかプログラムとして自然な方になる 例えば他にelse if が続いていて、たまたまこれだけがelseのみだった場合 これだけいきなり後者で書かれても不自然だ
521 :
516 :2010/01/04(月) 17:37:50
>>518 >>520 可読性が上がるなら特に使用に抵抗感はないものの
職場などでは使用を禁止されることもあるという感じでしょうか。
下のような書き方はネット上では目にする機会があまり多くないように感じたので
一般的には推奨されない書き方なのかなと疑問に思っていました。
ありがとうございます。参考になりました。
どうしてもと言うならせめてこうして欲しい。 b = (hoge == 1 ? 10 : 100);
なるほど。勉強になります
>>516 式が複雑なら上で、計算しないなら下。
上の書き方は bが2回登場するので、自分は嫌い。
「手続き的ではなく宣言的に書け」という原則があるが それに則っていえば一応下の方が良いことになるな
WinApp1-Resources-bg.bmpをBitmap型に取り出したいのですが、上手くいきません。 Bitmap bmp = new Properties.Resources.bg; これでもbgが存在しないらしく、ビルド失敗します。
527 :
デフォルトの名無しさん :2010/01/04(月) 19:45:35
>>516 三項演算子は複雑になると他人が(そして未来の自分が)解読しづらくなるから
ネストするようなのは素直に if 使うわな。
というか迷ったら if でいいと思うわ。
将来的に保守していくコードは冗長でつまんないぐらいでいい。
生成結果が変るならまた話は別になるけど。
530 :
デフォルトの名無しさん :2010/01/04(月) 20:43:42
個人的な見解としては?使うのはマネージドな言語が使われる 今の時代でみるとギークぽいなあと思う。 C言語使うにしてもあえて?は使わないようにしてる
一行で済むなら三項演算子使うわ
ここまでを纏めると 1でも2でも3でもなく4ですね
533 :
デフォルトの名無しさん :2010/01/04(月) 20:55:41
>>532 そうそう
古参コーダーはたぶん
>>531 の意見だろうし
まあ変な先輩と一緒になるとスタイル押し付けられそうだけどね
if elseが大量にあるようなのなら三項演算子ですっきりさせるかあも
>>530 うーん、時代ってのでいうと、
・LINQ とかで文よりも式が見直されてる(if は式木にならないけど、? : はなる)
・C#の cond ? a : b は a と b の型の一致を保証できる
ってのもあって、むしろ昔よりも条件演算子使いやすいと思うよ。
>>534 if-else が大量に並ぶのはむしろ設計見直した方がいいかも。
仮想関数にならないかとか、分割できないかとか。
if-else が大量に並ぶような場面で ? : 使うと余計にひどいことになりそう。
537 :
デフォルトの名無しさん :2010/01/04(月) 21:02:43
>>535 使いやすいというかせこせこ1行にまとめてもなあと思う
ちゅーか
>>516 が聞いてるのってあくまで単純な代入の場合だよね?
なんか途中で if か?三項演算子か?な議論にすりかわってるような
自分がどう書くかはともかく、他人が書いたソース読むときは
同じような処理が同じような書き方になってりゃどっち使ってても別に気になんないわ。
ちょくちょくぶれてるのが一番気持ちわるい。
>>539 泥臭い処理は泥臭く書いた方が間違いが少ない
三項演算子の是非の話? 三項演算子は値に注目して論理性がはっきりするからいいと思うけどな
迷わずifです。ステップ数増やさないと稼げません。
今時ステップ数はないわ。
544 :
デフォルトの名無しさん :2010/01/04(月) 21:57:00
H社あたりはステップ換算じゃないの?
工程数だろ今は
人月換算なんかしてるから日本は終ってる
馬鹿は if (a == 1) { b = 1; } else { c = 1; } みたいのですら a == 1 ? b = 1 : c = 1; ってやりたがるからな。
特定のキー入力を受け付けない、ということは出来ませんかね? 左CtrlキーやAキーなど、入力されても他のウィンドウにはメッセージ送らない、みたいな。
>>548 キー入力全部いったん食ってから、特定のキーのときだけhandled=trueにしてしまう手はある。
グローバルフックでキー拾えばウィンドウまたがったキー入力拾いも可能。
550 :
デフォルトの名無しさん :2010/01/05(火) 00:36:24
特定のウインドウもしくはexeなどを監視してキー情報を 送ることは可能でしょうか?
>>550 再提出
特定のウインドウ(の○○)もしくはexe(の○○)などを監視して
キー情報を(○○へ)送ることは可能でしょうか?
552 :
デフォルトの名無しさん :2010/01/05(火) 01:07:04
細かい部品までは意識しません 送り先が起動してるかどうか確認して要るようなら指定されているキー情報を送るだけです
可能だけど、何を条件にするかによって判定する方法は違う 条件を聞いたのに答えなかったから回答もここまでだ 方法は自分で考えろ
554 :
デフォルトの名無しさん :2010/01/05(火) 01:19:06
いやそんな難しい条件ではないんですが・・・ ただ送りたい相手を調べる方法もよくわからないので ヒントだけでもわかればと思ったんですが・・・ というかここは初心者スレですよね・・・
だからその条件を書けといってるんだろうが馬鹿め 話の通じない奴は初心者じゃなくて池沼だっての
そうだぞ池沼が
557 :
デフォルトの名無しさん :2010/01/05(火) 01:25:59
その辺がうまく説明できたらここで聞く必要がないと思うのですが・・・ やりたいことは特定アプリのショートカットキーなどを登録したボタンを フォームに貼り付けて、そのボタンを押した際に送りたいアプリが居れば sendkeyで送るなどして、居なければ送らないというだけの動作です
559 :
デフォルトの名無しさん :2010/01/05(火) 01:42:54
>>550-551 549の答えでいんじゃない?
> 特定のウインドウ(の○○)もしくはexe(の○○)などを監視して
前者は
FindWindow→GetWindowThreadProcessIdして
SetWindowsHookExするDLLをDLLの作って
キー入力をSend/PostMessageで流すぐらいかな
後者は自分の頭ではちと大変で
EnumWindows→GetWindowThreadProcessIdで
exe特定するのに逆に辿る必要性がある気がするので
ハッシュリストにマーキングしたりで色々とめんどくさそう
561 :
548 :2010/01/05(火) 02:19:10
>>549 キーボードをグローバルフックして、Handled=trueですね、やってみます。
グローバルフックはDLLいらんよ知ったか。
いつからいらなくなったんだ?
564 :
548 :2010/01/05(火) 02:43:44
とりあえず、グローバルフックを使い、 メモ帳上でCtrl+Aを押してもaが入力されるようになりました。 しかし、Altキーの入力を防ごうとしても、Alf+Fでメニューが表示されたり、 Ctrl+Alt+Delでタスクマネージャが出たり、Alt+F4が使えたりします。 これらは仕方がないんですかね?
うろ覚えな知識でレスするもんじゃないなぁ
>>562 ありがとう
566 :
デフォルトの名無しさん :2010/01/05(火) 02:50:00
>>564 CallNextHookExに渡すパラメータを何やかんやするとキー入力潰せた気がするけどどうかね
MSペイントで文字を画像にした場合と全く同じ結果になるように Graphics.DrawStringを使用して文字列を画像化しています. Graphics.DrawString
569 :
568 :2010/01/05(火) 03:35:41
とちゅうで投稿しちゃいましたごめんなさい Graphics.DrawString()の引数でフォントやサイズ,GraphicsUnitはきちんと指定したんですが どうもMSペイントの場合と結果が異なってる気がします. アンチエイリアスのせいかと思いすべて試してみたんですが同じ結果にはなりません. 文字描画の設定どうすればMSペイントと機能がおなじになるんでしょうか?
570 :
デフォルトの名無しさん :2010/01/05(火) 04:23:17
コードの難読化のためのツールとしてDotfuscator Community Editionというのが 付属してるような記述をネットで見つけたのですがVisual C# 2008 Express Edition のような無料の物には付属しないのでしょうか?
573 :
デフォルトの名無しさん :2010/01/05(火) 07:53:46
>>569 何が問題か解らないが、(DrawStringの引数として)StringFormatを使うと色々設定出来る
>>569 TextBoxRenderer.DrawTextBox
あ、それとFontの生成も違ったような気がしたから、自前で生成した方が良いかも
GDIだろうからTextRenderer.DrawTextを試してみれば
>>566-567 ありがとうございます。Alt+F4,Alt+Fのメニューはうまく出来ました。
bool control = ((GetKeyState(VK_LCONTROL) & 0x80) != 0) ||
((GetKeyState(VK_RCONTROL) & 0x80) != 0);
一応HookCallBackProcではCtrlキーも受け取るようにしたんですが、
やはりCtrl+Alt+Delのタスクマネージャは潰せないみたいです。
CallNextHookEx自体呼び出さなくても駄目でした。
Ctrl+Alt+Delを乗っ取ることができるとセキュリティがやばくなるからなあ
>>578 やはりそうですよね、それだけは仕方無いんですかねぇ・・・
出来ればCtrl+Alt+Delも防ぎたかったのですが、仕方無いみたいなので別の手段考えます
キーボードのdelのところのパターンを切ればいいよ
>>580 DelでCallNextHookEx呼ばないようにしてみましたが、やっぱり駄目でした
物理的に切るんだろw
583 :
デフォルトの名無しさん :2010/01/05(火) 12:01:18
タスクマネージャ監視しててあがってきたらkillとかは?
結構みんなガチガチにつくってるのね・・・・・ 流石にそこまでやったことないが・・・・
>>583 一定時間ごとにtaskmgr監視して、kill送るって事ですかね
タイマーの空回しは嫌いだからもっと良い方法無いかなと探してたので・・・
でも、それしか無いのならそうしてみます。
完全個人利用なので、いっそtaskmgrをリネームしてその時だけ使えなくしてもいいなと思ったり、
個人利用なら気にしないでいいかもしれないが、 Ctrl+Alt+Delでタスクマネージャーが出るだけの環境じゃない場合も多い
と、思ったらtaskmgrって消しても上書きしても修復されるんですね・・・
>>586 そうなんですね、今後作るときに気をつけます
既にC#から外れまくっているけど、キーマップ弄ってAlt無くせばよくね?
>>588 キーマップ初めて知りました。見て見たのですが、レジストリ弄るって事ですか?
再起動が必要なら使えないですね・・・一時的にブロックしたいだけなので…
あ、レジストリ探してたら、taskmgr無効にする値がありました。 CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Policies/System DusableTaskMgr(0x00000001)書き込んで無効にするようにします。 弊害があるのかもしれませんが、とりあえず再起動無しでも適応されましたので、 これを使いたいと思います。ありがとうございました。
そこまでかたくなに防御するとかウィルスでもつくってんのか?
店頭に置くデモマシンとかそういうのじゃないの?
UACがはじいてくれそうなぬるいウイルスだな
ヌルヌル
起動中にキーボードの掃除するとか
俺だったらキーボード抜く
自機がXPなのでUACは別に考慮してません
店頭とかではありませんが、
>>592 のようなもので、
キーボード入力は使うので外すことは出来ないんです
とりあえずコーディングして上手く動作しました。ありがとうございました。
CreateDesktop で別デスクトップ作っても、タスクマネージャとか出るんだっけ? GINA 置き換えとかもあるけどなー。
C#のconstてC言語のconstとはまったく違うなぁ。 どっちかというとDelphi(Pascal)に近い。
まあ、C++のconstは色々詰め込み過ぎな感もある。 コンパイル時定数とimmutableは分けてもいいと思う。
というかC++自体詰め込みすぎ
C言語だと配列のような記号[]は*(a+b)と同じだったから array[5]が5[array]という変わった書き方ができたけどC#だとウンサフェでもできないんだな。 完全移植じゃないんだな。
603 :
デフォルトの名無しさん :2010/01/06(水) 01:16:39
>>602 C#は何やるにしてもCのころに比べてレイヤー増えてるから
そうじゃないの?
604 :
デフォルトの名無しさん :2010/01/06(水) 01:30:12
>>599 つうかC#ってDelphiの人がMSに入って作った言語だから
C#はDelphiを無理やりC言語やJava風の構文にしただけの言語。
C#は読み書きするにはかなりいい言語だと思うが
foreachって、単なるシンタックスシュガー?
いいえ
はいいえ
健介の南西ガチ止めwww
>>572-576 みなさんいろいろ意見ありがとうございます.
試してみてダメだったらもう少し日本語整えてまたきますw
WIndows7-64bitで以下の方法でIE8を起動すると、IE8-64bitが起動します。 ie = Type.GetTypeFromProgID("internetexplorer.application"); IE8-32bitが起動するように記述する方法はありますか? それともOS側で設定を変更しなければならないのでしょうか? VC#2008を使用しています。ご教示、宜しくお願いします。
>>613 ネイティブのDLLやCOMは32bitからは32bit、
64bitからは64bitのものしか呼び出せない。
だから、呼び出しもとのC#のプログラムを/platform:anycpuから
/platform:x86にすればいけると思う。
フォームの右上に 最小化、最大化、閉じるボタンあるしょ _ □ × みたいなやつ。 最小化したときとかClosingイベントに書くんじゃなく 右上のボタンを押したときのイベントを作りたいんだがどうやればいい?
>>615 フォームの右上に自分で作ったボタンを重ねて配置
そんなイベントありません。
WM_NCLBUTTONDOWN辺りかね
タスクバーの機能の一つだと思うんですがクイック起動がありますよね あれをランチャーぽく分離して使おうかと思ったのですが常に前面表示 ができても半透明がかけれなかったりするのでショートカットの置き場所だけ クイック起動と共通にして表示部分だけ独自に実装したいのですが どういう機能が関係するでしょうか? アイコンの画像をボタンに取り込んで・・・とか考えているのですが 簡単なやり方とかありますでしょうか?
win7買ったほうがいいんじゃないかな
621 :
デフォルトの名無しさん :2010/01/07(木) 06:51:16
そういわれちゃうと・・・ ランチャー単独ではなくほかの機能+ランチャーなので・・・
>アイコンの画像をボタンに取り込んで・・・とか考えているのですが Icon.ExtractAssociatedIconでも使えば クイック起動と置き換えたいとか言わなけりゃランチャなんて専門生の宿題レベルのプログラム
バイナリファイルを読み書きする際にunsafeメソッド内で byte[]をfixedした上で構造体ポインタへキャストし、使用しています。 その時に使用する構造体の定義内で配列を使用したい場合、 どのような記述をすればいいのでしょうか?
固定長ならfixed
625 :
623 :2010/01/07(木) 11:39:11
626 :
デフォルトの名無しさん :2010/01/07(木) 12:02:08
C#限定じゃない感じもしますが一応C#でもできるので 外部アプリのウインドウの位置やサイズを変更するのに MoveWindowを使ってるのですがたまに隠れた親ウインドウを 持ってるアプリがいるようでそのままだとうまくいきません。 何か対策方法はありますでしょうか?
実際に表示されてるウインドウハンドルをを探すしかないな。 >C#限定じゃない感じもしますが一応C#でもできるので わかってるならなぜここで聞く?
ウィンドウハンドルが取れてないってわかってるなら5分で正解にたどり着けるレベルなのにね
ハンドルからウィンドウスタイルを取って、子ウィンドウなら親を取得して座標補正して終わり なんも難しいことはない
626の言い方なら子ウィンドウのハンドルは取れてるだろ。 親ウィンドウの場合はMoveWindowで指定する座標はスクリーン座標になるが 子ウィンドウの場合は親ウィンドウのクライアント領域の左上隅が原点になるから上手くいかないと言ってるんだろう。 2連続で的外れなレスってどんだけ低脳だらけなんだこのスレ。
サーセン…
ハンドルが取れてるとかそりゃずいぶんと希望的な観測だな。日本の未来も安泰だ。
取れてないってのも希望的観測には違いないがな
Process.GetProcessesで取ってるんだとしたら取れてないかもよ〜
>>615 ついでに便乗質問なんだけど、Vista以降では「元に戻す」の
システムメニューアイコン『□』のグリフ(文字の形)がXP以前とは変わっている。
あれのグリフってどっから取ってきたらいいんだろ?
うーん 部分的な抜き出しですが下記処理でいろいろ試してみましたが やっぱりJane Style(3.11)だけが意味不明なウインドウがでてきちゃいますね・・・ あと私のレベルでは皆さんのアドバイスを理解しきれませんでしたorz System.Diagnostics.Process[] p = System.Diagnostics.Process.GetProcessesByName("Jane2ch"); if (p.Length == 1) { SetForegroundWindow(p[0].MainWindowHandle); p[0].WaitForInputIdle(); MoveWindow(p[0].MainWindowHandle, 0, 0, 300, 200, 1); }
うわきめぇ…。
delphi系統は昔から「並べて表示する」とか使うと隠しウィンドウが一人分確保してたしな 「みえてるけど取れてない」とかだいたいそれだよ
きもすぎわろた
642 :
デフォルトの名無しさん :2010/01/07(木) 13:44:31
>>640 開発環境の癖と言う感じですかね?
その他アプリに関しては問題なくハンドルも取れてウインドウの変更もできるので
保留にしておきたいと思います。
spy++とかで見てみては
>>636 VisualStyleElement.Window.MaxButtonとか
ヒープ領域ってどういうときに壊れますか?
メモリが壊れてたり熱暴走したときとか
パソコンを窓から投げ捨てたとき
CLRのヒープ管理やOSのメモリ管理にバグがあったとき
ヒープ領域が壊れていたとき
飛行機の2階席に乗ったときとか 誰かmemtestとかやってないかな
いまだかつてドトネトのフレームワークでヒープが壊れたためしはないが、マニアックな使い方してたらたまにはあるもの? それとも俺が無知なだけ?
きっと
>>645 がC#とCの違いが分かってないとか、
スレタイをよく見てないとかいつものアレでしょ。
すみません 前任の人がSQLサーバのテーブルにある画像フィールドを 更新していたのですが、わたしがどうやってもフィールドのデータを 更新して表示できなくなってしまいました データの表示はASPXでもって Response.BinaryWrite(CType(.Item(0), Byte())) としているだけで、ACCESSから見るとそのフィールドはOLEオブジェクトとなっています ここにコピーアンドペーストやオブジェクトの挿入からファイル名を入力したりいろいろやってみましたが ウェブページで見ると×印になってしまいます ContentTy;peファイル形式はpjpegとなっており、フォトショップで作ったjpegファイルを挿入したいのです 他のちゃんと表示されるレコードを参考にファイルの縦横pixcelなどは正しく作ったつもりなのですが、 冴えない結果で泣きそうです OLEオブジェクトフィールドにバイトデータをファイルから挿入するにはどうしたらいいでしょうか? プログラミングは必要なくて、スレ違いかと思いますが、作業の手順さえわかればいいのです なにとぞヒントをお願いします
平方根を求めたいのですが 小数点以下32桁など桁数を指定できればと思うのですが どうすればいいでしょうか?
doubleどころかdecimalでも有効桁はそんなにないから数値クラス書くところからはじめるといいよ
いやまて、基数が3かもしれんぞ
そうだな
SHA-1を利用して作成したハッシュをトリップのように 表示できる文字列にしたいのですが何か方法はあるのでしょうか?
32ビットに直してそれをシードに乱数で生成すれば?
なぜ検索しない
663 :
デフォルトの名無しさん :2010/01/07(木) 20:43:19
>>658 そのクラスに対する四則演算書くところから始まって
勿論ルートなどの演算も一から書く必要有るけどな
そらいくらでもあるわな。 BASE64か16進文字列にでもしとけば?
BASE64がおすすめ
演算子オーバーロードできるからラッキーだったな。
>>663 そのクラスが用意できたとしたらあとは何をすれば?
収束すれば何でもいいから好きな方法で近似しろ
>>668 クラスをnewして使えばいいだけだろw
671 :
デフォルトの名無しさん :2010/01/07(木) 22:01:02
C#で携帯にメールを送るプログラムで質問です。 auへ画像を添付してメールすると添付画像が受信できません。 MailMessage msg = new MailMessage(); msg.Body = "本文"; とした場合はちゃんと添付できるのですが、 msg.AlternateViews.Add(AlternateView); を使用した時が添付できません。 絵文字を送信するため、AlternateViewの方で送信しないといけないので、 後者のほうを使用しています。 わかる方いらっしゃいましたらご教授ください。
オーバーライドとオーバーロードの区別があやふやになってきちゃいました… どっちがどっちか教えてください
オーバーロードがシグネチャを重ねるほう オーバーライドがシグネチャを乗っ取るほう
override overload overlord
>>614 仰られる通りの変更で動作しました。有難うございます。
AクラスとBクラスにhogeという名前の関数があったとしよう funcはAにもBにも乗っているからライドしてるんだよ! クラスがトラックで、メソッドやプロパティが荷物な感じ class A{ func(int x); func(string s); } って二種類あったら荷物を二つ積んでる(オーバーなロードしてる)だろう? 一方 class A { func(); } class B { func(); } funcは二つに乗ってる(オーバーにライドしてる(だろう?だからrideなんだよ!
>>676 なんか小学校の先生がお勉強ができない子に教えるような言い方だけど、
そんな方法でないと物事覚えられないお馬鹿な子は、そもそもプログラミング
やっちゃダメだと思うw
overlordは空から降りてくる奴だろ
指定したレジストリの値に読み書きされるのを検知するのは無理ですか 数ミリ秒ごとにポーリングするしかありませんか?
C++だったらadvapi32.dllフックするとかやりようはあるけど C#じゃ無理なんじゃねえの
RegNotifyChangeKeyValue とか。
しかし、「読み」に関してはポーリングしたってどうしようもないと思うんだけどねw
あー。読みは無理だね。監査でもするしかないんじゃない?
>>673 C#だとシグネチャにはパラメータ情報も含まれるからその説明はちょっと
チートを作りたいんですがどうすればいいですか
>>679 Win32APIスレで聞けば教えてくれるよ。
黙っときゃわかりゃしないよ
APIスレはなぜか.NET敵視してるのに なんて所に誘導するんだよ。
流れぶったきるが 演算子のオーバーライドってどうやるんですか
ぐぐれ
かす
694 :
691 :2010/01/08(金) 00:20:01
自己解決しました
もしかして: 演算子のオーバーロード
シリアル化ってなんですか?
>>697 朝ごはんをコーンフレークにすること
当時はこれが流行の最先端だった
トニー・ザ・タイガー
演算子のオーバーロードの間違いなら ふつうにメソッドを作る方法と同じ。 ただメソッド名の部分をoperator+にするだけ class A{ public static void add(int x,int y){ return x+y; } このaddが名前、operator+にしてみただけ。
>>676 同じクラス内で同じ名前の関数を複数持つ(引数の数や型が違う)のがオーバーロード
違うクラスで同じ関数があった場合同一と認識するのがオーバーライド
であってますか?
めんどくせーけどいいんじゃねーの 同一と認識するって言葉が意味不明だが。
704 :
デフォルトの名無しさん :2010/01/08(金) 02:08:40
>>701 そこでint x,int yは無いだろ・・・しかもvoidって
vold main(vold){ printf("%d","222"); } とか懐かしいなw
デザイナーでGUIを作って、その変数に他のクラスから値を代入しようとするとアクセスできないので、 変数の宣言の部分をprivateをpublicに変えてやっているけど、本来はどうやって実現するのでしょうか?
>>707 どの変数?
よく分かんないけど、普通は必要な部分だけプロパティ経由でset/getできるようにする。
ビューはあくまで表示のためのものだから、データの実体を持たせるとかありえん
710 :
デフォルトの名無しさん :2010/01/08(金) 11:19:16
余りに距離があったんで、フォームにスタティックのイベント定義しちまったんだが これ、やはり不味いかな? 皆さんは遠くてもカスケード方式でちゃんとイベント処理している?
なにがしたいのかさっぱりわからん。form2からform1のコントロールにアクセスしたいだけか。 まあそんなのmodifiers一発だが
カスケード方式って何ぞ
713 :
デフォルトの名無しさん :2010/01/08(金) 12:29:23
buttonのstyleをflatもしくはpopupにした上で 実線を取り除いて画像を当てはめてbuttonを使ってない 感じにしたいのですが無理でしょうか? pictuerboxを使ってそれっぽい動きにしたほうが簡単ですかね?
714 :
デフォルトの名無しさん :2010/01/08(金) 12:30:12
pictureboxだった
715 :
707 :2010/01/08(金) 12:55:37
>>711 modifiersを触ってみたら、結局、707でやったことと同じコードになった。
つまり勝手にprivateを変更しても構わないわけだ。
まあプロパティのmodifiersを触るとここが変更されるとは知らなかった。
イイこと聞いた
なんでも変更できるわけじゃないよ
文字定数を使って文字列定数を定義したいのですが、下のようにやるとRのところでエラーになります。 const char A = 'x'; const char B = 'y'; const string R = A + B; うまい書き方はないでしょうか?
const string A = 'x'; const string B = 'y'; const string R = A + B;
719 :
717 :2010/01/08(金) 13:42:02
>>718 ありがとうございます。
でも一行目からエラーになりますね。
開発環境は、Visual Studio 2008 Professional Edition です。
720 :
デフォルトの名無しさん :2010/01/08(金) 13:43:28
それくらいは・・・ const string A = "x"; const string B = "y"; const string R = A + B;
ダブルクオート
これがProfessionalの力か…
Rはreadonlyで我慢汁
const char A = 'x'; const char B = 'y'; string R { get { return A.ToString() + B.ToString(); } }
どうせstringに型変換して使うのになんでchar型なのC++ひきずってるのという気がしないでもない
726 :
デフォルトの名無しさん :2010/01/08(金) 13:58:09
>>712 formAにcontrolBとControlCが乗っかっていて、ControlBにはControlD,ControlCにはControlEが乗っかっている場合
ControlDのイベントをControlEに伝える場合、
ControlD→ControlB→ControlA→ControlC→ControlEの経路で伝搬させる処を
ControlDにスタティックのイベントを登録してControlE Load時にイベント登録し
直接ControlD→ControlEでやっちまったんだが、普通どうするのかな?という話です
727 :
デフォルトの名無しさん :2010/01/08(金) 14:01:45
>>724 そこまでコード書くなら、大概 const string R= "xy";
と書いた方が早い様な・・・気持ちは判るが
>>726 それってほんとにC#の話なの? スレ間違ってない?
private void Form1_Load(object sender, EventArgs e)
{
controlD.Click += new EventHandler(controlD_Click);
}
void controlD_Click(object sender, EventArgs e)
{
controlE_Click(sender, e);
}
729 :
デフォルトの名無しさん :2010/01/08(金) 14:37:33
>>728 FormAからControlDは直接見えず
同じくControlEもFormAから直接見えない構造とすると?
730 :
717 :2010/01/08(金) 14:38:28
僕のやりたい事は素直には書けないってことかな
>>725 プログラム中で文字として使うからcharにしてるんです。
Aをstringにしておいて、文字として使いたいときは A[0] とするか
Rを"xy" にしておくか
どちらかかなあ
ありがとうございました。
731 :
デフォルトの名無しさん :2010/01/08(金) 14:41:09
あ、乗っかってるの書き方が不味かったね ClassB:ClassDじゃなくて ClassB{ private ClassD = new ClassD(); } って感じ(所謂委譲)です
デザイナで作ってるんでしょ? カスタムコントロールじゃないっていうならなおさら意味不明だよ。 入門書からやり直したら。
733 :
デフォルトの名無しさん :2010/01/08(金) 14:47:04
>>732 当然カスタムコントロールです、カスタムコントロール上にカスタムコントロールが貼り付けて有るイメージです
>>730 const にこだわらないなら逆の発想で、
const string R = "xy";
char A = R[0];
char B = R[1];
>>733 >スタティックのイベント
というのがよくわからないけど、イベントの包含と委譲ならこういう感じで。
class Bar {
public event EventHandler Do;
public void Fire() { var eh = Do; if (eh != null) Do(this, EventArgs.Empty); }
}
class Baz {
Bar bar = new Bar();
public event EventHandler BarDo { add { bar.Do += value; } remove { bar.Do -= value; } }
}
C++で作成されたDLL内関数を呼び出した際に確保された(malloc等)領域は自動で解放されますか?
738 :
736 :2010/01/08(金) 15:40:28
>>737 ありがとうございます。
では、C#のコードで解放するにはどうすればいいのでしょうか?
MemAlloc() ならAPIを直接呼べばよさそうですが、
malloc() や new がDLL内で呼ばれていた場合の対処法がわかりません。
DLLにfreeやdeleteを呼び出す関数を持ってればいいだろ。
740 :
736 :2010/01/08(金) 15:45:50
>>739 それはそうなのですが、DLLのソースが行方不明になってしまい・・・。
正直なところどの関数によって確保されているのかすらわかりません。
741 :
デフォルトの名無しさん :2010/01/08(金) 15:45:56
>>735 class Bar {
public event EventHandler Do;
を
public static event EventHandler Do;
というインチキやって
ハンドラー側で
742 :
デフォルトの名無しさん :2010/01/08(金) 15:50:17
>>741 おっと書き込んじゃった
続き
class hoge{
func()
{
Bar.Do += new EventHandler(hoge);
}
}
でイベント登録しちゃた
hogeでインスタンス持ってくるのはしょる為にこんな事したけど、皆さんはどうしているのかな?と言うのが知りたいんですよ
744 :
736 :2010/01/08(金) 16:05:31
>>743 わかりました。
DLLを新規に作成することにします。
ありがとうございました。
プロパティーとクロマティーって似てるよな(´・ω・`)
C#でスクリーンのある位置のpixelが、 何色を表示しているかわかる方法ってありますか?
748 :
デフォルトの名無しさん :2010/01/08(金) 20:58:35
>>747 画面の部分SS撮影してbmpに落とし込んで・・・は面倒か
749 :
デフォルトの名無しさん :2010/01/08(金) 21:06:45
>>748 のやりかた
Bitmap bmp = new Bitmap(_width, _height);
Graphics g = Graphics.FromImage(bmp);
g.CopyFromScreen(new Point(_left, _top), new Point(0, 0), bmp.Size);
_width _height は切り取りたいサイズ
_left _top 画面上の切り取り開始位置
あとはBitmap のGetPixelで指定すればOK?
750 :
747 :2010/01/08(金) 21:10:13
>>749 ,748
ありがとうございます
自分も
直接得る方法はないか
調べてみます
C#やドットネトとはずれるがDirectX使えばできる
C#ってほかの言語の良い部分をパクリまくってる言語だな。 それでいておかしなごちゃごちゃ言語構造にならないのはC#製作者の腕が良いからかね。
パスカルを作った人なんだっけ? C#は本当に使いやすい
VisualJが外部から潰されなければC#は生まれてなかった
foreachを使えば int配列から3の倍数だけ取り出して 新しい配列をつくる みたいなことがただの通常のfor文よりはるかに楽にできるよね
.Where()で十分だろ
>>752 そうは言っても、「ここは変だよ」的な不合理な点もいろいろあるにはあるよ。
個人的、例えば==演算子の扱いとか。
これに関しては悪い遺産を引きずってるはずのVBのやり方の方がまともだわ。
引数付きプロパティを頑なに忌避する姿勢もよくわからん。
分野によってはあるのとないので大違いなのに。
>>754 そういう意味では駄作に見切りをつけるきっかけを作ったSunはGJだな
>>755-756 あとは、ver < 3.5の場合にArrayかList<T>のFindAll()くらいだな
次の C# が言語崩壊の始まりかも。 yield は、いまでも不要と思う。
>>758 Visual J++ は、今でも名作とされているけどな。
あれもこれもと食い散らかして肥満体になるのです かつてのC++の様に
762 :
デフォルトの名無しさん :2010/01/09(土) 01:49:25
何か忘れてると思ったらVisualJなんてありましたね
763 :
デフォルトの名無しさん :2010/01/09(土) 01:54:39
流れぶった切って悪い FormのTransparencyKeyとBackColorを同じ色にして透明化して BackgroundImageに透過色ありの画像を挿入するとFormの一部が 当然抜けるんだがこれって透過部分は判定すら無いんだけど これはこういう仕様なの?
レイヤードウィンドウの仕様
VJ++ってWFCが使いやすかった印象なんだけどな
>>761 言語仕様のシェイプアップは難しいもんな
なんで最近関数型言語の機能を入れるのがブームなの? 誰が得するのかよくわからないんだけど
>>767 CPUのマルチコア化や巨大クラスタの導入が進んで、並列化が重要になってきているから。
769 :
デフォルトの名無しさん :2010/01/09(土) 02:12:19
>>764 なるほど
>>767 マルチコア化でオブジェクト指向より関数型の方が並列処理に向いてるとかなんとか
どの辺が関数型? ラムダ式なんて糖衣構文レベルじゃねえの?
772 :
デフォルトの名無しさん :2010/01/09(土) 07:33:52
>>771 アスペクト指向って部品化に向いていないからね
F#のこといってんのかね
F#はC#を駆逐するために放たれた刺客。
775 :
デフォルトの名無しさん :2010/01/09(土) 10:42:39
印刷プレビューダイアログボックスに、印刷用のボタンが付いていますが、 その印刷用のボタンを押したときに印刷ダイアログボックスを表示するようにする方法を教えてください・・・!
776 :
デフォルトの名無しさん :2010/01/09(土) 11:02:05
2.【C#】文字列が全角か半角かを調べる方法 C#の正規表現を用いて、漢字を除去する方法を考えています。 public static string Remove_Kanji(string moji) { string a = ""; try { for (int i = 0; i < moji.Length; i++) { if (Regex.IsMatch(moji.Substring(i, 1), @"^.*\p{IsCJKUnifiedIdeographs}.*$")) { } else { a += moji.Substring(i, 1); } } } catch { エラー命令 } return a; } と記載したのですが、「佐々木」の「々」が漢字とみなされないのか、除去されずにReturnされます。 正規表現で漢字を検知する機能には限界があるのでしょうか。 もし、他に方法があれば教えていただけないでしょうか。
777 :
デフォルトの名無しさん :2010/01/09(土) 11:03:56
778 :
デフォルトの名無しさん :2010/01/09(土) 11:11:51
>>776 「残してもいい文字」で考えればいいんじゃないの?
>>777 1文字取り出して半→全変換して変化があったら半角
々〃とか鬼門だったな。単純に00ffを越える文字は全部読み飛ばすじゃダメなの?
々って 3005か
783 :
デフォルトの名無しさん :2010/01/09(土) 12:18:44
ということは、正規表現の
\p{IsCJKUnifiedIdeographs}
だけでは日本人の要望に合致しないわけか…。
あと何が必要なんだろう。
>>781 さんの定義が必要なのかな。
と言いつつ、…CJKって何…?
784 :
デフォルトの名無しさん :2010/01/09(土) 12:20:54
支那日本朝鮮
チャイニーズ・ジャパンニーズ・コリアン文字セット 16ビットに入りきらないんで漢字圏の文字はごちゃ混ぜなのよ。
787 :
デフォルトの名無しさん :2010/01/09(土) 12:25:03
なんと…China・Japanese・Koreanの頭文字とな…!!!!!!!!!!!
788 :
デフォルトの名無しさん :2010/01/09(土) 12:26:01
Chinese-Japanese-Korean-Vietnamese もあるんだな BRICsとかVISTAみたいなもんか
789 :
デフォルトの名無しさん :2010/01/09(土) 12:27:57
>>788 「vista」もそういう流れできてるの?
790 :
デフォルトの名無しさん :2010/01/09(土) 12:29:54
>>789 OSは知らんけど数年前の投資ブームの時はVISTAってこれから発展するであろう
国の名前並べていってたね。VISTAじゃなかったかもしれないが発音はビスタだった
BRICs(ブリックス)とは、経済発展が著しいブラジル (Brazil)、ロシア (Russia)、インド (India)、中国 (China) の頭文字を合わせた4ヶ国の総称。 V ベトナム I インドネシア S 南アフリカ共和国 T トルコ A アルゼンチン
792 :
デフォルトの名無しさん :2010/01/09(土) 12:31:48
つまり…isCJKで始まる分類を指定しておけば、 漢字を除去できると考えてよさそうだね。 勉強になりました。今日得た知識でも数万円の価値がある…!
795 :
デフォルトの名無しさん :2010/01/09(土) 12:45:50
>>793 難しすぎる…英語もあるし…。
英語の成績丙の私に分かりやすく教えていただけないでしょうか・
796 :
デフォルトの名無しさん :2010/01/09(土) 12:47:48
CJKVとか御託並べてるけどJオンリーなんだろ? S-JISにコンバートしてアスキーの基本文字以外のコードが出てきたらそのコードともう一文字削っとけばいいよ
797 :
デフォルトの名無しさん :2010/01/09(土) 12:49:33
>>779 もともと半角の文字が紛れているときはどうしたらいいんだろ。
返還前後で変化がないけど半角として残したいし…。
bool IsHankaku(string c) { }って書くんだよ。元を変更する必要なんてない
799 :
デフォルトの名無しさん :2010/01/09(土) 12:54:49
800 :
デフォルトの名無しさん :2010/01/09(土) 12:56:43
>>798 もし半角が引数に与えられて、
半角から全角への変換前後で変化があったときだけ、全角とした場合は、
もし「カ」が入ってきたら変化がないので全角とみなされてしまうよ。
まあ、試してみる? static class ExtensionMethods { public static bool IsHankaku(this string target) { return target.CompareTo(Strings.StrConv(target, VbStrConv.Wide, 0)) != 0; } }
文字コードがらみの話が出るたびに英語圏に産まれたかったなと切に思う。
移住しろよ、今からでも
VisualStudio2008を使用してC#を独習中なのですが 規模の大きいプログラムを扱った経験がなく 一つのプロジェクトの中で、1ファイルとしてまとめるクラスの規模を どのように扱っていいのか迷っています。 例えばポリモフィズムを使うことで作られた複数の数行だけのサブクラスや その継承元の抽象クラスなどを、どの単位で1つのファイルとして扱うのか といった基本的な事なのですが 指針として参考にできそうなサンプルや、解説サイト等はありますでしょうか。 よろしくお願いします。
そういうこと知りたいなら2chじゃなくて C#の知識が豊富な誰かと仲良くなることからはじめるといいよ
>>804 1ファイル1000〜2000行以内が目安。
あまり分けても保守が大変なので、機能別や保守単位でまとめてもいいけど、
基本は、プロジェクトチーム内で方針を相談して決める。
プロジェクトごとに全然異なるので変なこだわりを持つと諍いの元。
行数で、って愚の骨頂。
>>806 なるほど。コーディング規約などのように
一般的な基準が設けられていたり、セオリーがあるわけではないんですね。
自分としては、職場はプログラミングとは無縁ですし
今後もサンデープログラマーの域を出ることはないので
機能などから適せん判断して整理していこうと思います。
ありがとうございました。
809 :
デフォルトの名無しさん :2010/01/09(土) 15:22:24
いや、行数は俺もないと思うわw
行数が(たとえば)2000行を超える場合、機能の分割が不十分なことが多い。 なので、機能の分割を考える。 なら理解できるかな。
C#だったら、基本は1クラス1ファイルじゃね?
>>812 それ言い出すとpublic enumもpublic delegateも1ファイル1つになってしまうよ。
カプセル化と同じだと思うけどね 意味的にカプセル内なのに割っても仕方ないし、意味的に分けたのに同一ファイルにいるのも危険
>>812 基本はそうだけど
イベントとイベント引数みたいなのは一つに纏めること多いなぁ。
Javaみたいに1ファイル1クラスを強制されてないから結構一纏めやってるわ。
フォームなんかは partial で複数ファイルに分割されてる(隠蔽されてるけど)し、 データクラスなんかは、ひとつのファイルに複数の関連クラスが含まれてるね。
>>810 行数が一番効率的に管理できんだよ。
PGに割り振るときって最低1000〜2000行ぐらいの機能ずつ割り振るだろ。
1クラスにでかいメソッドがあって、それを一人のPGに任せるときは、それだけ1ファイル切り出す。
それがまた数千行。そしたら結局は行数が目安になんだよ。経験則に合致するだろ?
10万行のプロジェクトで50から100ファイル。
行数からしてテスト項目が数千とか推測できて、楽に管理できる。
ああ、ダメだ
これが反面教師ってやつですね。わかります。
まあでも実装からだいたいの行数は想像出来たりするわな。 特に業務系のベタに手続き書く系のメソッドなんかは。
オブジェクト指向がわからないコーダーをひきいてでっちあげる技術と考えれば、まあ
>>820 納期や線表、人月を考えなくていい人には理解できない話だよ。
ど素人PGが混ざってる可能性とか考えたことあるかい?
それが重要な基幹クラスのファイルをコンパイルできなくなった日にゃ・・・
どこまでロールバックしていいかすら本人聞いても分からないんだぜ。
このソースは誰が書いたってだけが明白なだけでも全然違うんだよ。
人月とかさすがに忌むべき習慣になってきてると思うけど、 現実的に会社で管理やるとなるとそれで話するしかないんだよね。 成果主義で見積りたててる人ってどうやってるの? うちはC#でやるときも人月とステップ or ページ単位の見積りだよ、いまだに。
普通は、ビルドに問題ないことを確認してからチェックインの流れです。 ソース管理ツールを使ってれば、誰が書いたコードなのかすぐにわかります。 こういうダメなプロジェクトには参加しないようにしましょうね。>素人PGのみなさん
Javaのように1万ファイルとかになってまともに管理できると思ってる奴っているの? デスマーチってほんとにPGが消えるように連絡なしに急に来なくなるんだよ。
ソース管理ツールを銀の弾丸だと思ってるやつって未だにいるんだな。
アジャイルとかって青臭い理想論だよね。
>>826 それは単純なプロジェクトの場合。
ひとつのファイルを複数の人がいろいろな理由で更新するなんてよくあることなんだけど。
というか大きなプロジェクトや複雑な機能のプロジェクトやったことないんじゃないの?
(両陣営ともに長文を準備中です。しばらくお待ちください。)
>>830 ここは妄想SEが跳梁跋扈するスレだってことをお忘れなきよう。
なのでそろそろ手仕舞いしてください。
つーか、お前のプロジェクトのことなんて知らんから、その前提を質問者に押しつけるなよ、って話だな。
そろそろ「数百万行規模のプロジェクトをやってる」って話が出て終わりかな。
>>832 そうですね。最初に言ったことが結論です。
>変なこだわりを持つと諍いの元。
退散します。
行数で、っていうのがあるんだな。おどろいた。 とりあえずのお勧めは、1クラス1ファイル。enumだろうがなんだろうが1ファイルで。 そのうち「ここはこうした方がいい」部分が見えてくる。
言行不一致カコワルイ
テキストボックスを改行するにはどうしたらいい? string s="abcd\nefgh"; TextBox1.Text=s; ってやると、abcdefghてなっちゃう abcd efgh ってやりたいんだけど
Visual Studioは、1クラス1ファイルだと、リファクタリングしてくれるね。
プロだけど1ファイル1万越え普通にある俺は異端かもしれんねw
>>839 \r\n
Environment.NewLineを使ったほうがいいかも。
あとMultiLineプロパティも忘れずに
844 :
804 :2010/01/09(土) 16:27:03
プログラミングでゴハン食べてる方々の間でも 様々に苦労されてるテーマなんだと実感しました。 まずは1クラス1ファイルで書きながら、試行錯誤してみます。 本当にありがとうございました。
Byte配列から特定の範囲だけ取り出したいのですがどうしたらいいんでしょうか?
>>842 それはちょっと流石に問題ありだと思う。
手続き指向のころだってそんなんやってると叱られたぞ。
>>842 一人でコーディング、テスト、デバッグならいいけど、複数人にまたがったら効率悪いじゃん。
848 :
842 :2010/01/09(土) 16:38:31
>>847 複数人で同じファイル開発するとかマゾいからやらない
1ファイル1人だね
でも行数が多くなったという理由で分けたりはしない
あくまでも機能レベルで分けるだけかな
>>845 List<byte>.GetRange()
1万行越えってゴテゴテのformとか?
クラスの概念よくわからんから 全部初期のクラスに書いてる 後はフォーム別に分けてる メソッドとかごちゃごちゃしてて、見づらいけどね
>>852 そういうときは
#region
#endregion
勿論regionで分けまくってる メインフォームがもう3千行レベルになってるからね
regionで読みやすくなると思ってる馬鹿は絶滅した方がいい
>>855 ガキじゃないんだから代替案ぐらい出してから言えよ、低脳。
MSのソースだって使いまくってるのに。
#region使うと逆に見落としとか起きない?
全部wwwwww初期のクラスにwwwwwwww書いてるwwwwwwwww VB使ってろボケ
見落とすも何も見たくないから見えないようにするの。
データをクラス化してメソッドにすればどんどん外に出てくだろ…常識的に考えて button_clickに10行以上書いたら負けだと思え
>>850 言うと思ったw
>>852 行数多いのは主にカスタムコントロールだね
ファイル分けてもプロジェクトに取り込むときによけいに
分かりにくくなるだけだから、実際に使う単位でしか分けない
カスタムコントロールだったらコントロール毎かカスタムコントロールまとめてかでDLL化するもののような気がするから ソースを分けたら判りにくくなるってのはよくわからん 見たくないからregionってのもオレにはわからん
>>863 いつもの自称プロだろ。気にしないほうがいいよ。
>>863 そうか分からないのかw それは仕方がないな。
叩かれてレス番真っ赤になった自称プロに馬鹿にされたことはある
一貫性があるんならどうでもいいけど
w
一貫性なんて幻想ですよ。 思想の全く異なる複数のPGがひとつのものを開発するのですから。
あまり気にしないこった。 初心者が気を揉んでもどうしようもないがな。
行数が目安なんて関数の長さとかでLinusが昔から言ってたじゃん。パクリネタでしょ。
パクリもなにもLinusを引き合いに出すまでもなく普通の話。 C言語華やかなりしころの教科書にはその手の話が普通に載ってたわ。
マクロの手法とミクロの手法を混ぜて語ってもしょうがないな。 週末だから仕方ないかもしれんがそろそろお開きにしよか。
連休は始まったばかりだ。 あぁプロは連休などないのですね。分かります。
PGSEってどうしても他人のしてることにケチを付けざるをえないんだよな。 上手く運用されてようが失敗してようが関係ない。 何時だって自分が最高に正しいもんな、俺等って。
批評家きどりっすからね
c言語あたりからの人ってコーディング暦20年ぐらい?
まだ14〜23で9年
せめてどこどこで議論されてるよ、くらいの情報は欲しい 俺はこうしてる!なんてどうでもいい
このスレでこういう議論がされてる
ト学会か何かですかw?
突っ込んだつもりがボケになってるなw
現実を知らないど素人どもよ。IT業界には来るなよ。
言われなくても行きません
初心者スレでしか偉そうに語れないIT土方のおっさんw
おっさんにバカにされたくないなら自分で10分くらいは検索してからきてくれよ。頼むよ。 「C# なんとかかんとか」って入れれば80%以上の確率で正解にたどり着くんだから。
んなことしたらこのスレの意味ねーじゃん このスレの存在意義を否定してどうすんだw
おっさんが出てけばいいだけの話 自分好みのスレ立ててセンズリこいてろハゲ
>>795 East Asian Widthでググる
>>888 おっさんバイバイ
おっさんが居なくてもこのスレはまわる
893 :
デフォルトの名無しさん :2010/01/09(土) 21:41:32
>>777 氏の質問でふと感じたのだが、
半角⇒全角に変換できない文字って存在するのでしょうか。
ガキってすぐキレて、出てけとか排他的になるよな。 .netみたいにどんな言語でもいらっしゃ〜いみたいに大きな心持てよ。 でないとjavaみたいになるぞ。
C#はそろそろ言語の根幹部分の肥大化やめた方がいいなぁとは思うけどな
>>889 普通、先に検索するだろ。初心者とか関係ない。
そんなルールこのスレにねえよ マイルール遵守させたければ出てけ 決められた(コーディング)規則に歯向かうのか? プロさんよ
ルール作る側なんじゃね。
つうかプロとオッサンは相談室行けよ。邪魔。
年食うと粘着質になるから無理
自分より詳しい人が許せないんですね。分かります。
>>899 初心者用スレで知ったかできないでどこで知ったかするんだって話だもんなw
>>894 お前こそ検索しない奴にも寛容になったら。
他人には素養を求めるくせに自分には求めないって恥ずかしい大人だな。
PGSEの70%は恥ずかしい大人だよ(俺調べ)
別にプロでもおっさんでもいいけど
ここにいる全員がプログラマみたいな前提で雑談するのやめろよ
>>824 みたいなのな
おまえらの職業の事情なんて知りたくもないんだよ
嫌な業界だな…
業界ネタはマ板でやってくれw
ところで
>>821 のEffective C#って買いですか?
Effective C++とかEffective Javaとか良書だったけど
「項目49 C#2.0への準備」とかあるのが気になるw
定年がx5歳とか言われてる業界が正常な訳ないだろ。
定年15歳ってマジですか? おれいま15歳だけど、何か質問ある?
>>905 規模の大きいプロジェクトについて聞かれたから答えたという流れだったよ。
無知を指摘されたからってガキみたいに突っかかるなよ。
コーディング規約に行数の目安が入ってるなんて普通だから。
プロジェクトって…別に”社内”でとは質問者は一言もいってないようだけど。 何勝手に解釈してるのこの人。
ムキになんなよ、低脳w
>>844 からして個人ベースでの範囲を意図して質問してるよなぁ
得意気にコーディング規約とか語っちゃってアホちゃうかと
背伸びしたいお年頃(30代)
>>913 その前に
>>808 読んでねえだろ。
>自分としては、職場はプログラミングとは無縁ですし
>今後もサンデープログラマーの域を出ることはない
こんなのに業界の常識がどうとか語って天狗になって馬鹿じゃねえの。
本当に馬鹿じゃねえの。
そうだね^^
球界の常識を知らないのか!って昔あったな
ヘジのコーディング規約ぐらい嫁よ
神を馬鹿にする奴はここから去れ
>>907 その本、なぜかMore Effective C#の訳本の方が先にでちゃったんだよな。
だから言語仕様的な部分はちょっと古い。
〆⌒ヽ ( ‘д‘)<誰が禿やねん!! ∪l| ||ペシッ!! @ノハ@ ( ‘д‘)<誰が禿やねん!! ∪l| ||ペシッ!! @ノハ@ ( ‘д‘)<誰が禿やねん!! ∪l| ||ペシッ!! @ノハ@ ( ‘д‘)<誰が禿やねん!! ∪l| ||ペシッ!! @ノハ@ ( ´D`)
今度はヘジ教かよ。病気だろお前らw
>>918 読んでサンデープログラマが何の得すんの。
カトラーにヘジ。かっこよすぎでしょ。ゲイツ君は見る目あるね。
神だって 盲目的だな
仕事でもあんまり行数でってのはないけどなー 規模が大きくなっても、大抵クラスの分け方は概ねルールになってるから、 それに従うとそこまで極端な大きさにはならないし。 まあなることもあるけどね、
けど、各言語には信者が居るわけで、宗教には違いないと思うぞ。 設計者を崇めるのはちょっと毛色が違うとは思うが。
>>921 なるほど、More〜のほうはC# 3.0/3.5対応なんですね。ありがとう
両方買ってみようかな
サイドストーリーというかそれぞれの人格知ってたほうが面白いでしょ。
なんでもいいけど こんなスレでそこまで必死にさせるものって一体何なの? 何が駆り立ててるの? まさか虚栄心だけってことはないよね
心の隙間を埋めたいんだ。
なるほど 喪黒腹蔵の出番だな
C#でのFormでは表ってないんでしょうか? DataGridとかならあるんですが・・・。
DataGridの何がいけないの?
クラス作ってデータソースに追加してフォームにD&Dすれば一式セットアップできるだろ表くらい
Formに使うならDataGridViewでないかい?
ああ、すいません。 SQLiteで組み込んでいたんですがDataGridViewでやってしまうと ./***.dbってソースを指定した場合にデザインだとフォームプロジェクト直下に。 実行時になるとDebug、Releseの直下になってしまってこれじゃだめだよなぁと思ってたんです。 でも、よく考えたら作ってやってからコピーすればいいんですよね。 それか自前で登録していく処理をかくだけですよね。 すいませんでした
初心者なのでListViewしか使ったことがありません。 DataGirdViewを使えばどれぐらい便利になるのですか?
943 :
デフォルトの名無しさん :2010/01/10(日) 01:29:38
uniqするときに、数を数えるにはどうしたらよいですか? fruit.txt りんご りんご みかん みかん みかん バナナ から、 りんご 2 みかん 3 バナナ 1 を得たいと考えました。 たんにuniqするだけなら、次のようにしてできます。 string[] fruits = File.ReadAllLines("fruit.txt"); string uniq; foreach (string fruit in fruits) { if (!uniq.Contains(fruit)){ uniq = uniq + fruit + "\r\n";} }
944 :
デフォルトの名無しさん :2010/01/10(日) 01:30:42
数を数えるためには、果物の種類ごとに分類してstringを作り、その行数を加えてから、最後にリストを作ればよいと考えました。 string[] fruits = File.ReadAllLines("fruit.txt"); string uniq; int りんご; int みかん; int バナナ; foreach (string fruit in fruits) { if (fruit.Contains("りんご")) りんご += 1; else if (fruit.Contains("みかん")) みかん += 1; else if (fruit.Contains("バナナ")) バナナ += 1; } foreach (string fruit in fruits) { if (!uniq.Contains(fruit)){ if (fruit.Contains("りんご")) { uniq = uniq + fruit + りんご.ToString() + "\r\n";} else if (fruit.Contains("みかん")) { uniq = uniq + fruit + みかん.ToString() + "\r\n";} else if (fruit.Contains("バナナ")) { uniq = uniq + fruit + バナナ.ToString() + "\r\n";} } これだと、fruit.txtに、イチゴが加わると、プログラムじたいを書き換えなければならなくなります。 こういう場合、どのようにしたらスマートなんでしょうか?
果物の種類と数を格納するクラスのコレクションを作る。
Constainsじゃなくて 名称 または 名称_XX _はブランク だったら名称で同一とみなしていいのかい? それならまず数字の除去からはじめる。
948 :
デフォルトの名無しさん :2010/01/10(日) 01:40:12
ああすまん。 >りんご 2 は結果か。とにかくConstainsというのは必須なの?
んなわけねえだろ
string[] fruits = File.ReadAllLines("fruit.txt"); foreach (var g in fruits.ToLookup(x => x)) Console.WriteLine("{0} {1}", g.Key, g.Count()); こんなんとか
public class ふるーつ { public string なまえ; public int こすう; } List<ふるーつ> list = new List<ふるーつ>();
>>950 再利用しないならGroupByでよくね
それもそうだ
string result = (from fruit in fruits group fruit by fruit into fruitGroup select new String.Format("{0} {1}", fruitGroup.Count(), fruitGroup.Key) ).Agreegate((a,b) => a + b); LINQなら一行でいける。読みやすいかは別として
データ構造とアルコリズムを理解してない初心者を置いてけぼり。 これだから自称プロは
>>942 表の表示・入力インターフェースとフィールドの内容が直結連動する。それだけ。
別に質問者のために回答してるわけじゃないからなぁ。
一回きりならdictionary<string,int>で充分 データとして扱うならclassが必要 アイテム別処理が必要ならポリモーフィズム 初心者なら勉強しろ。ましてそれは自分の仕事か好きで書いてるかだろ。甘えてどうすんだよ。
>別に質問者のために回答してるわけじゃないからなぁ。 >別に質問者のために回答してるわけじゃないからなぁ。 >別に質問者のために回答してるわけじゃないからなぁ。 友達いないんだろうなぁ
960 :
デフォルトの名無しさん :2010/01/10(日) 02:46:04
>954 エラー 'string.Format(System.IFormatProvider, string, params object[])' は 'メソッド' ですが、'型' のように使用されています。 です。
>>955 本物のプロ様、初心者にご教授願います。
ム板はマ板のように病んでないと聞いてきたけど 質問者も回答者もスキあらば煽りあい ルール無用の残虐ファイトじゃないですか
週末ですから
さーせん、昨日から荒れてますなぁ
965 :
デフォルトの名無しさん :2010/01/10(日) 03:06:21
>>951 レベル的には配列の方はがいいんじゃないの?
そうすえばリストの必要性もみえてくるだろうし
というかこれ以上仲間が増えないように口減らししてるのかね?
string[] fruits = File.ReadAllLines("fruit.txt"); Dictionary<string, int> dict = new Dictionary<string, int>(); foreach (string fruit in fruits) { if (dict.ContainsKey(fruit)) dict[fruit]++; else dict[fruit] = 1; } foreach(var kvp in dict) Console.WriteLine("{0} {1}", kvp.Key, kvp.Value);
968 :
デフォルトの名無しさん :2010/01/10(日) 04:34:32
Aというtextboxに "私の出身は東京で、…………"と自己紹介を1,000文字表示させたいとき、 A.Text = "私の出身は…"と入力していくと画面右側に切れてしまいます。 また、途中で改行を入れてしまうとエラーになります。 大量文字を移送するとき、「+"…"」を繰り返して でつなぐしかないのでしょうか。
969 :
デフォルトの名無しさん :2010/01/10(日) 04:49:08
textBox.MultiLine = true; で複数行使える フォーム上は単行にしておいて入力だけ複数行で行いたいなら textBox.MultiLine = true;にしたtextBox Bを用意してtextBox A にキャプションが来たらtextBox Bを表示してそっちで処理させるとか
もしかしてこれのこと言ってるのかな。 string msg = @"aaaaaaaaaaa bbbbbbbbb cccccccc ddddddddd";
>>968 勝手な俺用語使われても困るんだが、要点は「文字列リテラルに長文を書く場合について」でいいか?
文字列に改行を含んでもいいなら
>>970 そうでない場合は、+ で結合してその前後で改行
>>961 ではコボルっぽいやり方を伝授しよう。
配列もコレクションも使わん。
string line; string savekey = ""; int count = 0;
while ((line = Console.ReadLine()) !=null) {
if (savekey == line) count++;
else {
if (count > 0) Console.WriteLine("{0} {1}", savekey, count);
savekey = line; count=1;
}
}
if (count > 0) Console.WriteLine("{0} {1}", savekey, count);
C:> sort fruit.txt | ThisProgram
973 :
デフォルトの名無しさん :2010/01/10(日) 09:41:52
コンボボックスに文字を直接入力できるようにしています。 また、Enterキーで次のタブオーダーに遷移するようにしています。 このときのビープ音なのですが、 テキストボックスについてはKeyPressイベントで Handled=trueにすることにより音をけすことができましたが、 コンボボックスに文字を入力してEnterを押すと、ビープ音が鳴ります。 コンボボックスについて音を消すにはどうすればよいのでしょうか。
PreviewKeyDownとか、WndProcとか
975 :
デフォルトの名無しさん :2010/01/10(日) 11:21:52
VS2008のリソースエディタは何でこんなに重いの?
嫌なら使わなくて結構です!
977 :
デフォルトの名無しさん :2010/01/10(日) 11:26:14
そんな事言わずに代替アプリ教えてくれよぉ
どれのこと言ってるの? C#スレだし、重いというとこみるとWPFか?
リソースくらい手書きしろ
980 :
デフォルトの名無しさん :2010/01/10(日) 11:42:04
resxファイル編集の事だー 数十行の文字列つっこむだけで糞重くなる なんぞこれ?
GetKeyboardStateをC#で使いたいのですが引数にバイト配列を渡す書き方は どのようにすればいいのでしょうか?
983 :
デフォルトの名無しさん :2010/01/10(日) 12:12:51
ああごめん GetKeyBoardStateの引数はPBYTEか
次ぎ立ててくる
987 :
デフォルトの名無しさん :2010/01/10(日) 12:18:41
別に重くない プレス子かAtomででも開発してるの?
991 :
デフォルトの名無しさん :2010/01/10(日) 12:25:01
いや、i9で開発してるけど糞重いよ 長い文字列突っ込むと30秒ぐらいフリーズする
…長いってどのくらいよ
993 :
デフォルトの名無しさん :2010/01/10(日) 12:30:42
100行3000文字ぐらい
馬鹿だろお前
ワラタ
996 :
デフォルトの名無しさん :2010/01/10(日) 12:38:20
なんでだよボケ リソースにテストデータ突っ込んでもいーだろksg
画像データはデータ量として多いから普通にありだと思います。
それ仕様という名の有名なバグ 解決策はありませんのでお引き取り下さい
999 :
994 :2010/01/10(日) 12:41:16
>>996 俺はi9について言ってる
i9発売は2010年4〜5月の予定だぞ
未来人?
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。