AMFをDecodeするプログラムを作りたいのですが、 何か良いサンプルが載っているサイトはないでしょうか? JavaやPHPはよくみるのですが、.net系があまりなく。。 もしご存知の方がいましたらご教授ください。
WaitHandleのWaitOneメソッド第二引数のブーリアンって何に使うのでしょうか? 同期ドメインがよくわからなかったので、調べて見たんですが、 リモート処理のときだけ関係するものでしょうか
剣の舞ですね
お前は一体何を表明したいんだ…
ちなみに普通はfalseで構わない。 ContextBoundObjectの派生クラスを作って、 SynchronizationAttributeを適用した場合で、 そのオブジェクト内で同期済み実行時にWaitOneしたときに、 待機中の別のオブジェクトを待機解除するかどうか。 まあ、多分大抵は関係しないだろう。
てよく見たらWaitOneの説明にそのまま載ってるじゃねーか…
WaitOne(int)でいいじゃん
Producer-Consumerパターンはget,putするthreadを延々とループさせるわけど これを終わらせるときはthreadをほっといても大丈夫?
普通は、whileの条件とかで終了できるようにする。Abortするのはやめとけ
Abortってどうしてだめなの?
finally が実行されなかったりとか
駄目とは言ってない。動作を完全に理解したうえで自己責任で使うならどうぞ
まあ普通はやらんな
Producer-ConsumerってAbort必須じゃなかったっけ? その辺の解説サイトじゃAbortすら使って無いからリークしまくってるけど
意味が分からん。 必須ってどういう事だよ。 インタラプトだって使えるし。
イミディエイトウィンドウで表示したくない例外等を表示しないようにする方法はありますか? 所定のメソッドを実行すると例外が飛んできてそれが表示され鬱陶しくて あと、デバッグ終了時にイミディエイトウィンドウがクリアされればいいと思うのですがそれに該当する設定が見あたりません
ごめん意味が分からない。出力ウィンドウのこと? それともイミディエイトウィンドウに出力をリダイレクトする設定にしてる? どちらにしても例外が発生したら勝手に表示されるということはない。 どこかで握りつぶしてログ吐いてるんだろ。 その個所に自分で手を入れられないんだったらどうしようもない。
いや、だからイミディエイトウィンドウだって 握りつぶすも何もデバッグ時に例外発生したらログがここに残るでしょ これを指定した例外のみ表示させたくないの
出力はされるけど通常はイミディエイトウィンドウじゃなくて出力ウィンドウだよ Debugクラスのリスナを通さずに直接出力されてるみたいだから VSの設定にないなら無理なんじゃないの
うそーん いやいやイミディエイトウィンドウだって Consol.WriteLine系は出力だけど例外はイミディエイトウィンドウ ほんとかと思って設定初期化で試したけどやっぱりそうだったよ 特定のメソッド使うと例外飛ぶから表示したくなかったんだけどなぁ 出来ないなら仕方ないか・・・
メニューからツール-オプション-デバッグ-全般に「出力ウィンドウの文字を〜」ってのがあるんだけど関係ないよね。
MessageBoxでMessageBoxIcon.Informationを指定した時のような音を ボタンを押したときにメッセージボックスを出さずに鳴らしたいのですが 可能でしょうか?
何だっけ… System.Media あたりに SystemSound とか SystemSounds みたいなのない?
>>30 おお!できました!
ありがとうございます!
ポインタ型って何に使うんですか? ポインタ使うので有用な処理ってどんなのがあります?
P/Invoke 画像処理やゲーム等,パフォーマンスを要するもの
API に渡すとき。
今までポインタ使ったプログラムを作ったこと無いんですが プログラマになるのなら必須事項ですかね? 避けて通れるなら難しいと聞くので触らないつもりなんですが・・・
必要になったときに勉強すればいいよ。
必要になったら勉強すればいいんじゃないの?
C#がちゃんとわかってればそんなに難しいものでもない C#ではなるべく使わない方がいいし使う必要に駆られることもまずないけど知識として知っておいて損はない
なるほど、ありがとうございます
よく使うデザパタとかある? 俺はSingleton,Adapter,Factoryはよく使うけどIteratorは全くと言っていいほど使わない
Iteratorは言語にもう組込まれてると思っていい。 Observerなんかもイベント絡みでフレームワークが使ってる。 Visitor、State、Compositeパターンあたりは意識せずとも 使ってるんじゃないかなぁ?
デザインパターンなんか糞の役にも立たないから勉強するだけ無駄。
何かを悟ったような気になった勘違い中級者は黙っておれ
Iteratorは仕組がわかってればいいと思うが。IEnumeratorの動きがわかる。
>>42 それは、C#の場合言語に組み込まれてるからだって。
Javaなんてパターン覚えなきゃやってられないとか言うし。
>>42 デザパタ知っておくと、必要になったときにライブラリに用意されているクラスを
探しやすかったり、自分で作りやすくなるから、大雑把に目的は知っておくべき。
実装方法は必要になったときに調べれば良い。
無理矢理パターンにあてはめて使う必要はないんだよね。 覚えたての奴ってなぜかSingleton使いたがる・・・
こんにちは。どなたかC♯でBMI計算プログラムをvisual studio 2008 もしくは2005 で作成してアップしてくださいませんか・・・? そのプロジェクトフォルダ全部をアップお願いします。
宿題スレ逝け
tryでcatchした致命的エラーのチェックをしたいのですが、 擬似的に致命的エラーを出す方法はありませんか?
throwですね、自己解決しました^^;
throw
>>47 それを言うなら「中二病の奴って〜」なんじゃないの?
君みたいのは見てるこっちが恥ずかしくなるよw
ちなみに、
>覚えたての奴ってなぜかSingleton使いたがる
そんな奴はまずいないと思うよw
あんなもの乱用のしようがないだろう。
そもそも、「覚えたて」も糞も、シングルトンなんてのは普通の知能があれば
誰でも自分で思いつくテクニックで、人に言われて覚えるものじゃない。
シングルトンの唯一の意義は、それに名前が与えられていること以上のものではないんだけどね。
なんでここで中二病が出てくるのか
あぁ、そうだ。
>>53 みたいなのを中二病っていうんだと思うよ。
こんにちは。どなたかC♯でBMI計算プログラムをvisual studio 2008 もしくは2005 で作成してアップしてくださいませんか・・・? そのプロジェクトフォルダ全部をアップお願いします。
ちいい
宿題スレ行け
行きました
>>56 同じような内容の文章を別スレでめ見ました
早く死んでいただけませんか?
死にました
65 :
デフォルトの名無しさん :2009/10/17(土) 17:14:37
質問です。 C#にはC言語のprintfみたいにデータを編集して出力する関数とかメソッドはあるのでしょうか。 プログラミングC#第四版(オライリージャパン)を見ると、載ってない。 JAVAではVer.5あたりで導入されたが、C#ではどうなんでしょうか。
Console.Writeじゃだめなん? printf形式の書式じゃないと駄目ってこと?
printf()のかわりなら、writeやらstring.Formatがいいでしょ。
69 :
デフォルトの名無しさん :2009/10/17(土) 20:49:36
>>66−68 回答ありがとうございます。 Cのprintf文は printf("%d\t%d\n", fahr, celsius ) ; 以下のように記述できるのですね。大変参考になりました。 Console.WriteLine("{0}\t{1}" , fahr, celsius); Console.WriteLine(fahr.ToString("D") + "\t" + celsius.ToString("D")); Console.WriteLine(String.Format("{0}\t{1}", fahr, celsius)); 回答ありがとうございました。
Console.WriteLineのオーバーロードは17つもある。
じゅうななつ?
とおあまりななつ
セブンティーンつ
最初からdefault引数実装し説けばいいものを・・・ へジスバーグのバカチンが。
デフォルト引数は関係ない。TextWriter.WriteLineのオーバーロードに合わせてるだけ。 TextWriter.WriteLineのオーバーロードは引数の型ごとに処理を変えたり ボックス化やparamsの配列作成などに伴うコストを避けたりするために沢山用意されてるんだと思う。
tabControlでSizeModeをFixedにした時 tabPageのTextがタブ幅よりも長くなった時に末尾に"..."と表示させたいのですがどのように実装すればよいのでしょうか?
オーナードローしてTextRendererを使う
PictureBoxで表示させた画像の中をクリックした場所によって処理を変更することはできますか?
そりゃ当然できるけどさ
座標とって処理を分ければOK
79に追記です、四角形の範囲指定だと、X,Y座標でif使って出来るのですが 円形でクリック処理を分ける場合はどうすればいいのでしょう?
Regionつかえ
>>82 円の方程式って中学数学だろw
そんな知識もないのにプログラムを書こうっての?
円の方程式の知識なんか無くても大丈夫、いける、いける。 でも自分で調べられないと無理だぜ。
円周の長さ=6×半径 ってやつのことですか?
ここで聞くよりフォーラムで聞いた方がよくね? ○○つかえとかしか言わないしさ あっちは回答者のレベルが高いからコードも提示してくれるよ
これがゆとりか・・・
○○でググればいいじゃない
ゆとりとか関係ねーよ。 検索廚の方がほんとウザい
いやお前の方が30倍ぐらいウザい
これがにとりか・・・
描写した図形にクリックイベントを付けるにはどうすればいいですか
WPF にして Canvas と Ellipse 使ったら?
>>94 ごめんなさい、解決したので既存の方法の
CreateGraphics.FillEllipseを使って図形を表示しているのですが、
別のウィンドウが描写した図形に重なると、そこに描写してあった図形が消えてしまいます
この対策はありませんか?
Paint イベント内で描画してる?
初歩的な質問ですいません 一つのメソッドに MouseEventArgs と通常の EventArgs を共存させることは不可能でしょうか? Form1のClickイベントで、押されたマウスで分岐処理させようと思うのですが MouseEventArgsでは無いのでe Button&MouseButtonsが使えません
>>96 あー。。どうしてもPaintイベントを使わなくてはいけませんか?
ボタンで描写させたいのですが、どうすればいいでしょう?
WS_CLIPSIBLINGSスタイル追加してやるとか
>>98 描画手順を持ったオブジェクトをListに格納しておくとかそういう方法を使う
1秒間だけラベルを表示させておきたい時って皆どうしてる? 俺は1000msのタイマー一つ用意して、Tickにlbl.Visible=false;書いて 表示させるときにlbl.Visible=true;Timer.Enable=true;ってしてるんだけど もっと良い方法無いかな
>>102 それでいいんじゃね
ライブラリ化するほど汎用性があるコントロールとも思えんし
>>103 詳しくと言うほどのこともないけど
Graphicsを引数に取るDrawメソッドを持った抽象クラスを用意
その派生として四角とか丸とかを描画するクラスを作成
んでそれらをリストとして持っておく
Paintイベントでリストの内容を列挙して順番にDrawしていく
描画追加ボタンでリストに描画クラスのオブジェクトを追加しInvalidateで再描画要求
103です
>>104 の言ってる事が全く分からない・・・w
抽象クラス、描画するクラス作成までは分かるんだけど
リストとして持っておくって何?駄目だ・・・ググってくる
やっと元の意味がわかった・・ 別ウィンドウってそういう意味か。 Imageに関連付けしたBitmapに直接描けばよろしい
107 :
デフォルトの名無しさん :2009/10/19(月) 16:02:37
DataGridViewのフォーカスの有るのセルの四角のラインを消す方法はありませんか? 出来れば具体的な方法をお願いします
>>106 bitmap使わないと駄目ですかね'?
>>108 paintがいやならそうなるかもね
再描画時に何を描いたか取っておくか、毎回描くかのどっちかしかないと思うよ
再描画されたってのを取得するイベントは無いですよね?
あ、されたってのじゃなくて再描画されるまえに呼ばれるイベントです そんな都合のいいの無いですよね
メモリリークしているようなのですが あるオブジェクトが現在どこから参照されているのか調べる方法はありますか?
115 :
112 :2009/10/19(月) 20:48:05
112です、別の方法を思いついたので質問します クリックした時にその座標の色を取得することは出来ませんか? これが実現すれば出来そうです、やり方あれば教えて下さい。
backgroundworker がツールボックスにない。 どこにあるんだ! 環境 Visual C# 2008 Express Edition
>>117 ツールボックスのコンポーネントの所にないかい?
>>117 そんな子供騙しなおもちゃ、なくても困らないでしょ。
あれは言っちゃ悪いけどちょっと前ならVB厨って呼ばれた用な人たちのための
コンポーネントだと思うけど。
あれで用が足りる時は普通に便利だと思うけど?
便利に使える物は使ったらいい
子供だましなおもちゃって 「オレはあんなもん無くても書けるぜすごいだろ!」 って言いたいの? 子供ですね。
Formにボタン等のコントロールを動的に生成した場合フォームを閉じれば 自動的にメモリは開放されるのでしょうか?
される。
メモリリークって何で駄目なの?
リソースは有限だから
一度メモリリークなったらどうやって復旧するの? 再起動するしかない?
プログラムの再起動ということならそう
なら、今の所完全にメモリリークを発生させないようにすることは出来ないの? 一つ一つにtry-finallyでdisposeするとか?
意図的に保持してるのかそうでないかは判別できないからね
133 :
デフォルトの名無しさん :2009/10/20(火) 11:14:04
ListやDictionaryのように、メンバとしてアレイやリスト構造のデータを持ちながら、 list[10]のように、あたかも配列の要素を取り出すようにアクセスできる ・・・という機能を、自作クラスに持たせる方法ってありますか?
134 :
デフォルトの名無しさん :2009/10/20(火) 11:20:27
ジェネリック
インデクサ
>>131 メモリリークをどういう意味で使ってる?
>>137 1. 新しいプロジェクトを追加し、[Windows フォーム アプリケーション] または [Windows フォーム コントロール ライブラリ] を選択します。
2. Windows フォーム デザイナ、ユーザ コントロール デザイナ、コンポーネント デザイナを開きます。
3. ツールボックスから任意のコンポーネントを配置します。
画面はWPFじゃないか ポトペタじゃなくてコードで作れ
WPFのXAMLエディタではサポートしてないという話だろ。 手作業で書くしかない。
BackgroundWorkerがコンポーネントなのがおかしいんだよな タイマーやダイアログなんかはUIに密着に関係してるからまだわかる データソースとは違ってデザイナが使えても何の意味もないし
タイマーもコンポーネントだけど。
タイマがUIに密着……? それならBackgroundWorkerも同程度には「密着」してると思うが
タイマーはWindowsのメッセージに依存してるからどうせUIの外では使えない BackgroundWorkerはUIには全く依存してない WPFでもそのまま使えるのがその証拠
基礎的なことですが教えて下さい Form1からForm2のフォームを呼び出し Form2のボタンを押したらForm1で宣言した変数に数字を入れたいのですが その場合Form2のButtonクリックイベントにどうやって書けばいいでしょう?
>>145 タイマーがWindowsメッセージに依存してるからって
デザイナと何の関係がある?
あとコンポーネントタブにあるのは
Windowsじゃないサーバータイマーだぜ。
タイマーはUIの外から使えないからコンポーネントでもおかしくないって? どんな理屈だよ。 まあサーバータイマーはUIと関係なく使えるけどな。 TableAdapterもデフォルトはコンポーネントだな。
>>146 Form1にpublicなメソッドなりプロパティなり作ってForm2から呼べばいい
Form2には事前にForm1のインスタンスを渡しておく。
>>149 インスタンスがよく分かりません;
参考になるサイト有りませんか?
>>150 初歩すぎるからどのサイトでもいいと思うが。
ちなみにForm1から見たForm1のインスタンスはthis
Form2からForm1を呼びたい場合は、Form1側に private static Form1 _form1Instance; int form2count = 0; public int form2ins { get { return form2count; } set { form2count = value; } } これでいいんですかね?
きも過ぎるだろ。
Form2のコンストラクタにでも引数追加してやれば
>>コンポーネントの人たち そもそも、ツールボックスに表示されているのは殆どコンポーネントだし [コンポーネント]にあるのは明確なカテゴリのない残り物 てか、適当な事書く前に.NETでのコンポーネントの定義を確認してくれよ
>>152 きもすぎワロタw
//Form1.cs
public string Data
{
get;
set;
}
private void button1_Click(object sender, EventArgs e)
{
Form frm = new Form2();
frm.Show(this);
}
//Form2.cs
private void Form2_Load(object sender, EventArgs e)
{
var frm = this.Owner as Form1;
if (frm != null)
frm.Data = "kimosu";
}
157 :
152 :2009/10/20(火) 21:39:46
>>156 駄目だw理解出来ないw
var frm = this.Owner as Form1;
これは一体何してるの?
if (frm != null)してるなら、どのタイミングでfrmをdisposeすればいいの?
Form2のClosingでdisposeしとけばいい?
まさか俺はdisposeの意味を全く理解して無いだけか
get; set;
これってgetとsetの処理分けて書かないと駄目なんじゃないの?
多分スルーされて涙目になるんだろうけど、
誰でもいいから教えてよ;w;
なんつーかまずはふらっと行ってこい。 get;set;については匿名係長でググれ
というかForm2からForm1の値を弄るとかキモイな
仕様からキモイから仕方ない。
え? じゃあ例えばForm2からForm1の背景色を変更するときとか普通はどうするの?
イベント使う
そんなイベントある? Form2に設置したボタンを押された回数を Form1で宣言した変数に入れたい時もイベントで出来るの?
カウントしてけばいいんじゃね?
その変数ほんとにForm1に宣言するのが自然ですか? 別の独立したクラスに持たせて,Form1とForm2の両方から参照した方がスマートではありませんか?
フォームがクラスであるとこを理解できないのとグローバル変数が大好きなのが合わさるとごらんの有様だよ
>>158 var frmは理解しました。
varってクラスの型なんですね
disposeの件は勘違いしてました。
今までのソース見てもそんなのしてねぇや、俺アホす
匿名係長でググってもめぼしい物が見つからない・・・
>>165 やべえ、感動した。
まだほんの小規模なツールしか作ったこと無くて、クラスも1つしか使ってなかった
そうか、それで別のクラス作ればいいのかw
>>166 「Form1の変数を弄るためのイベント」みたいにForm1を意識して作るんだったら
直接Form2からForm1を触るのと変わらん
どうせ意識するんだったら意識する範囲を別のクラスに括り出す
クラスの概念が理解出来てなかった 未だにnamespaceとかの概念も分からないわ 新規にクラス作るときは、Form1.csの中に書いても良いのかな? namespace app1 { public partial class Form1 : Form { public Form1 } //ここに、public partial class aho{ }ってすればクラス追加したことになるの? } というか、ここで聞けるほど簡単な所でひっかかってるんじゃなさそうだから ソースの構造体とかの概念を説明してるサイト無いのかな ググってもサンプルとかはいくつも出てくるけど、そんなサイトのほうが少ないし どうするかな・・・
>169 ここで聞いちゃいけないほど簡単なことをきいてんだよお舞は(´・ω・`)
どうも。読破するまで戻りません。 ありがとう
>>167 君が特命係長のファンだというならば、
次は自動プロパティでぐぐることをお勧めいたします。
174 :
デフォルトの名無しさん :2009/10/20(火) 23:07:04
ComponentModel.Componentのサブクラスの BackgroundWorkerはどうやってWinFormのControlや WPFのUIElementに同期してるんだろ。 コンストラクタなどでフォームのthisを渡しているふうでもないし、 DelegateのTargetを使ってるふうでもない。
いや同期したら意味ないから イベントは全部非同期コールバック
まだ読み終わってないけど、
>>173 見て
最後一つだけ質問させてくだはい
class plex{
private int clickcount=0;
public int ClickCount
{
set { clickcount = value; }
get { return clickcount; }
}
}
---
Comp c = new Comp();
if (c!=null)
{ c.ClickCount++; //0に1追加
MessageBox.Show(c.ClickCount.ToString()); } //毎回1が返される
何度setしてもカウントがgetするたびに0になってます
上手くsetされていないのかもしれないんですが、どこがおかしいか指摘もらえませんか?
プロパティに++は使えない
あ、class名はCompですね、書き間違えました
++が使えないなら0が返るのでは? c.ClickCount=c.ClickCount+1; こうしてみましたけど、これでも毎回1しか返してきません
Comp c = new Comp();をクラス直下に移動する
エスパーしてみる。 おそらくButton_Clickなんかの中でnewしてるんでしょ。 var c = new Comp(); // ←新しく作ったので、値0から : なんか処理 var c = new Comp(); // ←また新しく作ったので、値0から
一番いいのはイベントを飛ばすのだけれど、この分だとForm1のインスタンスを渡すのも辛そうだ。 staticなclassにpublicフィールドもta せればいいと思うよ。
>>180 ,181
見事、それが原因でした
そういうものなのね、少しそれも疑ったけれど
毎回clickcountに++されていってると思ってて
newごとにそうなるとは思わなかった。
ありがとうございます。
>>175 説明が足りなんだ。DoWorkじゃなくて
ProgressChangedとRunWorkerCompletedのこと。
小間苛やさしいなw
>>184 コンポーネントなんだから自分の親が誰かくらいは知ってるんじゃないの
188 :
183 :2009/10/20(火) 23:34:17
あー・・・
>>176 のソースで、
Comp c = new Comp();を使うと、clickcount=0になるんですよね?
この場合、値をリセットせずにプロパティを参照することはできませんか?
何度かそのフォームを表示させて、ボタンをクリックさせるたびに、
以前のクリックした回数は保持させておきたいのですがそんなことは出来ませんか?
>>174 AsyncOperationつーもんがある
>>188 毎回インスタンス生成してるんだから、カウントをリセットしているわけじゃなく、毎回新しいCompのプロパティを0→1にしている。
>>184 WinFormsやWPFがグローバルなSynchronizationContextを提供してるみたい
Componentは特に関係なさそう
>>190 あー、毎回1になる原理は分かりました。
しかし、毎回インスタンス生成しないと、参照出来ないのでは?
>>189 ,191
ありがとう。AsyncOperationは少し調べてみます。
>>194 何か重要なレス見逃しました?
一応全部目を通してるんですが・・・
>>195 >>180 Comp c = new Comp();
private void button1_Click(…
変数のスコープをもっと考えなさいってこと。
>194 そもそも読んだところで理解出来ないと思われ
>>196 あ、じゃなくて、直下に移動させてその問題は解決したんですが
Form1からForm2出して、Form2のボタンをクリックすると、
>>176 使ってclickcountにクリックした回数を++した後でForm2をClose
このあと、2回目以降にForm2を呼んだとき、
どうしても毎回Comp c = new Comp();通りますよね。
このときclickcountに格納された値も0になってしまうのを回避する方法は無いですか?
わかりづらくてすいません。
生存期間を考えて、ふさわしい方法を考えようぜ
はじめての言語がC#、いま2ヶ月たちました。 結構簡単ですね。簡単な業務用ツールいくつか作れました。 って感じがするw
>>199 だけ教えて貰えませんか
この方法あれば終われますので;
あきらめろよ
最初に答えるときに、ふらっと誘導しようと思ったんだが ここまで引っ張るとは思ってなかったわ・・・
HTMLをネット上から取得した場合 画像や、リンクがフルパスではなく ../img/image.jpg /help.htm のように、なっていることが多いのですが これをどうにか、フルパス指定にする方法はないでしょうか
base要素か現在のurlからUri作るだけ
C#一切関係ないなそれ BASEでも指定すればいいんじゃないの。何に使いたいのかは知らんけど
>>207 ,208
ありがとうございます
教えていただいたもので考えた結果
string url="
http://google.com ";
Uri base=new Uri(url);
HTMLをサーバーから取得し、htmlというstring変数に入れる
html内を検索し、../や/で始まるものを置換するという方法で一応できる・・・のでしょうか
こういう処理しか思い浮かばなかったのですが
最初から、フルパスで取得したりはできないですよね・・・・
この処理すごく煩雑になると思うのですが、もうちょっとスマートな方法はないでしょうか?orz
あ、ちなみにやりたいことは ネットを見る際特定の広告などを表示しないなど、直接ではなく少し改変して表示するブラウザの作成です
現在のページのUriはわかってるわけだから、 このタイプのコンストラクタを使う。 Uri (Uri baseUri, string relativeUri)
>>211 それを調べてみたのですが
BaseUriの後にRelativeUriをくっつけてるだけですよね?
つまり、RelativeUri(/index.htmlなど)が分からなければいけないので
取得したソースから[/***.html]や[../***.jpg]などを検索、取得しRelativeUriにいれて一個ずつ置換しなければなりませんよね?
自分が勘違いしているだけかもしれませんが
そうなると、ソースの中から上記のものを取得しなければならない作業があるわけですが
それを簡単に行うことはできますでしょうか?
自分が考えついたのは
ソースないで「"../」や「"/」で始まる部分を検索し、そこを置換という方法だけだったのですが
すごく煩雑でしかも、/で始まらない場合には対応できないので
何か他にいい案がないものかな。と思いまして・・・
正規化
>>212 言ってる意味が分からないな。
urlを食わせればそのページからのリンクをフルパスで
一覧してくれる便利な関数やライブラリはないかという話なら標準のBCLにはない。
だいたい、相対URLが ../ や /で始まってるとも限らないだろ?
216 :
デフォルトの名無しさん :2009/10/21(水) 17:54:17
リストビューで、非フォーカス時に選択されている行の背景色は淡いグレーですが、 まるでフォーカスが当たっているように青にするにはどうすれば良いでしょうか?
グローバルな設定はできたと思うけど混乱するのでやめた方がいい リストビューだけ変えるにはオーナードローしかないんじゃね
フォーカスの外れたタイミングでSelectedItemsのBackColorとForeColorかえてやるとか
219 :
デフォルトの名無しさん :2009/10/22(木) 20:37:24
すいません。教えてください。 クライアント複数(C#でWinアプリ)→サーバー(SqlServer2005Express)というアプリを作りたいです。 このアプリを配布する前提なのですが、どのように作成したらよいでしょうか。 「サービスベースのデータベース」で作成してサーバーでのデータベース運用にできるのでしょうか? また、どのように配布するのでしょうか。 よろしくお願いいたします。
>>219 1)ASP.NETでつくる。
2)WebServiceでプレゼンテーション層を作り、ClickOnceでクライアントに配布。
便乗で質問してよろしいでしょうか?
XmlWebサービスでDataTableを取得し、コンボボックスのデータソースにしようとしています。
DataTableを取得するまではできたのですがDataSourceにつっこんでも欲しい値がでません。
コンボボックスには〜.DataViewみたいな型情報が出てしまいます。
XmlWebサービスで取得する値は、DBからSelect文で1列だけ取得したものです。
for eachで値が取れていることは確認し、Items.Add()で追加することもできました。
だけど、ComboBox.DataSourece = datatable;の形で値を表示したいです。
なぜ正しくでないのか、そして正しくでる方法を知っている方がいましたら教えてください。
よろしくお願いします。
>>220 DisplayMember と ValueMember を指定
すまん、どっかにオブジェクト参照残ってるぽくて、強制ガベコレしてもデストラクタまでこないんだがどんな風に掴まれてるのかオブジェクトグラフを辿る方法とかない?
知るか禿げ
アルゴリズムとデータ構造を勉強しようと思っているんだけれど、言語はC#でいいかな? 本はC言語の方が充実しているみたいだが、C#にも強くなりたいと思っているので。 他にC、Java、JavaScriptの文法ならわかる。
>>226 今からC++覚える意義は何もないのでC#でいいよ
Rubyがいいよ
Haskellにしとけ
ふざけんなとは、どういう意図で言ってるんだ?
C#スレで別の言語すすめんな!スレ違い!って意味じゃないのかね。 まあ Ruby も Haskell も別にふざけた言語じゃないと思うけど。 ちなみにC#でアルゴリズムの勉強するとしても Cとほぼ同じレベルの文法しかつかわないと思うよ。 使い方じゃなくて実装の方の勉強をするんでしょ?
おまえに答えろと言ってねえよ すっこんでろ
>>232 うん。
使い方なら、(言語は何であれ)そもそもライブラリが充実しているのでそちらを使えるようになればいいと思っている。
目的はそのための基礎づくり。
C#のすれでC#でいいかなとかもうばかかと
なにこのうんこな流れ
うんこは水に流すしかないな
別のExeのプロセスをフックするにはどうしたらいいんでしょうか?
プロセスのフック、なんてものはない。 別プロセスの何をフックしたいんだ?
240 :
238 :2009/10/24(土) 13:08:39
自己解決しました
よかったね。
242 :
238 :2009/10/24(土) 13:28:53
してません。 サブクラス化?って奴だと思うんですが、自身のウィンドウしかできないもので。
自己解決しました
サブクラス化ってことは、ウィンドウメッセージね。 あれは C# じゃ無理。グローバルフックが必要だから。
C#でグローバルフックできるよ。
へー。どうやってやるの? LL じゃ意味がないのはわかってるよね?
LL じゃん。ウィンドウメッセージをフックしてくれよ。グローバルフックで。
まぁ、意味がわかってないバカってことだな。
251 :
243 :2009/10/24(土) 23:25:50
おれのことスルーしてる?
お前ははなから相手にされてない。
ぐぐっても分からなかったんだけど、LLってなに?
LightningLazer
LoveLevolution
>>254 WH_KEYBOARD_LL, WH_MOUSE_LL
LowLevelHook
体重が100kg以上だとLLサイズになる
XLは?
「列挙型はクラスではない」で合っていますか? あと「文字列や配列はクラスである」という理解でいいんでしょうか? 値型となるのが数値、文字、真理値、構造体 参照型となるのが配列、文字列、クラス、インターフェース、デリゲート 列挙型は特定の数値しか取らない型定義だから、値型。つまり参照型のクラスではない という論法。
俺もそういう理解だけど、困ったこと無いからいいんじゃないかな? 間違ってるとして、困った事が起こるのはどんな時?教えて偉い人。
配列はクラスかというとちょっと微妙だな 配列型の基底クラスであるArrayは確かにクラスだけど配列型そのものは やっぱりクラスではなく配列型と呼ぶのが普通だろう デリゲートだってDelegateはクラスだけどデリゲートそのものはデリゲート型と呼ぶだろ(実体はクラス)
なんですかそのパンダは哺乳類と呼ぶべきで動物じゃない理論は
動物か植物か矛盾だらけの世界〜♪とかいう歌を最近聴いた気がする。 System.EnumはSystem.ValueTypeを継承してるから値型の一種でいいと思うけど、 struct型の値型とは分類が違う。EnumはEnum型と呼ぶべきだろう。
列挙型ってCLIのプリミティブ型に型情報をくっつけてるだけだよ その意味ではInt32やCharなどと同じ
ILで見ると分かりやすい。 public enum ABC { aa, bb, cc } が、こうなる。 .class public auto ansi sealed ABC extends [mscorlib]System.Enum { .field public specialname rtspecialname int32 value__ .field public static literal valuetype ABC aa = int32(0x00000000) .field public static literal valuetype ABC bb = int32(0x00000001) .field public static literal valuetype ABC cc = int32(0x00000002) }
>>261 C#言語仕様14章より
列挙型とは、名前付き定数のセットを宣言する固有の値型 (4.1 を参照) です。
C#でネット通信するとき Webproxy=NULL; にすると通信がすっごく早くなるのですが、これを使う(プロクシを使用しない)ことによる問題はありますか? プロクシ通さないと繋がらないPCはおいといて、通常の環境での話です あと、たとえばWebで じゃんけんゲームをcgiで作ったとします ボタンが3つあって、 Aを押すとグー Bを押すとチョキ Cを押すとパー ボタンを押すと相手もランダムに手を出し勝負するという単純なものです cgiの内部的には、Aというボタンが押された、という情報を受け取って表示をしていることは分かるのですが C#のアプリ側で そのAというボタンが押されたという情報を送って、帰ってくる結果を取得するにはどうすればいいのでしょうか? WebBrowserを用いて直接ボタンを押す以外でです。 わかりにくかったらすいませんorz
HTTPがわかればわかる
申し訳ありません 説明不足でした HTTP Header というもので、どういう情報を送信すればいいかはわかってます 上のやつで ボタンAが押された場合は Agaosareta という情報が送られるようになっています でも、どうやって送信、取得すればいいのかがわからなくて・・・・・
実際の通信の中身が知りたいのか、HTTPRequest等の使い方が知りたいのかどっちよ
http://www.dotup.org/uploda/www.dotup.org315393.png こんな感じです
おおげさですが
専用ブラウザみたいなものを作りたいといえば通じるようなきがします
元々はシンプルなものを、ローカル側で見やすくして表示するじゃんけんゲーム専用のブラウザを作りたいです
ブラウザなら、ボタンを押せば勝手に情報が送信されますよね?
そして、かえって来た情報を元にテキスト(勝ち負け)を表示
でも、それをローカルのアプリからやる方法がわからないんです
この絵で言うパー(じゃんけんの手を送信)を送信
と、結果を取得(じゃんけんの結果を取得)
がよくわかりません・・・
結果さえ取得できれば
勝ちならif(win)〜
負けならelse if(rose)〜
みたいにして結果のぺーじをかえればいいんだとは思いますが
>>274 まさにこれです
本当にありがとうございました
このじゃんけんゲームは自分で作ったので
それぞれ
paagaosareta
guugaosareta
tyokigaosareta
という内容を送信するということは分かってます
それを見てふ、と思ったのですが
googleで検索ボタンを押したときや、たとえば2chに書き込む情報を送るなんていう場合は
色々POSTされているんだと思いますが
そういうのを調べる方法はあるのでしょうか?
FirefoxでHTTP Live Headersアドオン入れるのが手軽
って中身もか、、、HTTPわかりゃいい、、、というかcgi書いてるなら中身わかると思うが
いったいHTTPのことは分かってるのか分かってないのかどっちだ
入門書の通り作っただけなのでさっぱりわかってません・・・・ 動いた!わーい! って感じです・・・・
281 :
デフォルトの名無しさん :2009/10/30(金) 15:23:47
すいません。プログラマの熟練/猛者の方教えてください。 メインスレッド(フォーム表示関連)と 別スレッドからメッセージボックスを表示させたいのですが メインスレッドのフォームの裏に隠れてしまう場合があり、困っております。 ググるとメインスレッドにイベントをあげてそっちで処理するとの方法がありましたが、 今の自分のプログラムではメインスレッドにてどのフォームが表示中か場合によって変わるため、 できれば別の方法で出来ないか模索しております。 メッセージボックス表示を暫定的でも最前列に持って行く方法は無いものなでしょうか? セットアップパッケージを起こすまで全くこの問題に気づきませんでした 助けて、今日納めないといけないのだが・・・
http://homepage3.nifty.com/midori_no_bike/CS/index.html?form.260 * Form を「モーダル ダイアログ」表示する
public class Form1
{
Form2 form2 = new Form2() ;
form2.ShowDialog() ;
:
:
form2.Dispose() ;
}
public class Form2
{
/* Form1 とは並行操作できない処理 */
}
*Form がアクティブか判定
// Form がアクティブか判定する
if (Form.ActiveForm == this)
{
// Form がアクティブ
}
// Form を最前面に移動し、その Form にフォーカスを移動する
this.Activate() ;
*Form を最前面に配置
// Form が常に最前面に表示されるように設定する
this.TopMost = true ;
// Note: TopMost を false に「再」設定すると、ToolTip が最前面に表示されなくなる
// 不具合がある?
これをMessageBoxにおきかえて考えればいいと思うんだがそういう話じゃなくて?
>>281 以下のコードでテストした
オーナーが最前面なので裏に行くことは無いと思う
他にも常に最前面ウィンドウがあるとZオーダー次第で裏にいくのは変わらない
Thread thread = new Thread(new ThreadStart(delegate()
{
using (Form ownerForm = new Form())
{
ownerForm.TopMost = true;
MessageBox.Show(ownerForm, "test", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}));
thread.Start();
284 :
281 :2009/10/30(金) 16:00:41
285 :
デフォルトの名無しさん :2009/10/30(金) 16:02:21
void this_activate() { // Thread のアタッチ int fore_thread = GetWindowThreadProcessId(GetForegroundWindow(), IntPtr.Zero) ; int this_thread = AppDomain.GetCurrentThreadId() ; AttachThreadInput(this_thread, fore_thread, true) ; // this をアクティブ MesseageBox("ここを改造") // Thread のデタッチ AttachThreadInput(this_thread, fore_thread, false) ; }
>>285 ところで親ウィンドウが分からないとエラーメッセージ表示中に
裏のウィンドウ操作されちゃうけどそれはいいの?
287 :
281 :2009/10/30(金) 16:05:36
>>283 さま
すいません。よくコードを読んでいませんでした。
ダミー(非表示)のフォームをたたき台にして、
その上にメッセージボックス表示させることで最前列にするわけですね!!!!
この方法が一番変更が容易そうなので、この方法で行く方向で検討させて頂きます。
大感謝!!!
288 :
281 :2009/10/30(金) 16:08:23
>>285 今はあきらめていますが、
裏のウインドウをを操作させない方法があるんでしょうか?
これは本当にモーダルにしないと駄目ですよね
>>288 たまたまオブジェクトブラウザ眺めて見つけた Application.OpenForms を使ってみた
Form ownerForm = new Form();
ownerForm.TopMost = true;
if (Application.OpenForms.Count > 0)
{
ownerForm.Owner = Application.OpenForms[0];
}
ownerForm.Owner.Invoke(new Action(delegate()
{
using (ownerForm)
{
MessageBox.Show(ownerForm, "test", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}));
>>288 ダミーフォームをたたき台にするなら
* Form を「モーダル ダイアログ」表示する
public class Form1
{
Form2 form2 = new Form2() ;
form2.ShowDialog() ;
form2.Dispose() ;
}
public class Form2
{
/* Form1 とは並行操作できない処理 */
}
これで一発で通るよ
それ以上をやりたいならしらん
291 :
281 :2009/10/30(金) 19:49:04
>>282 〜290の皆様
皆様にピンチを救って頂いた281で御座います。
283さまのコードと同じ対応で、こちらでも問題の無いことが確認できましたので、
先ほどなんとかリリースすることが出来ました。
セットアップパッケージなんてすぐ出来るものと考えていたため、
時間をとっていなかったため、びびりまくっておりました。
次からは気をつけようと思います。
また289様/290様のコード勉強になります。
皆様、本当に有り難う御座いました。m(_ _)m
C#で同一プロジェクト内でも[EditorBrowsable(EditorBrowsableState.Never)]がきくようにならないかねぇ インテリセンスにズラズラ出てくるのがうざったいよ・・・
293 :
デフォルトの名無しさん :2009/10/31(土) 14:49:05
1.3つのコンボボックス1〜3を縦に連ねる。 2.3列(列1、列2、列3)のデータセットを作成 。 データ型はvercher(20)です。 3.コンボボックス1のテキストをデータセットの列1に格納 同様に、コンボボックス2、3の値をデータセットの列2、3に格納 4.データセットの内容をタブ区切りでテキストに書き出す。 5.そのテキストを各部門で活用。 としたいのですが、おかしな現象が生じます。 コンボボックス1に「集客力」と入れると、テキストに書き出されないんですが、 「集客」で入れると正常にテキスト出力がされます。 なぜ、「集客力」と集客で結果が異なるのでしょうか。 コンボボックスのテキストの利用に何かコツがあるのでしょうか? よろしくお願いいたします。
そのテキストは4で言うテキストなのか、コンボボックスのテキストなのか? コンボボックスのテキストだとして、コンボボックス間の連動をどう設計してある のか分からない。
295 :
デフォルトの名無しさん :2009/10/31(土) 21:31:19
>>294 さん、ありがとうございます。
申し訳ありません、コンボボックスが直接の原因ではなく、エンコード方法に起因しているのかもしれません。
タブ区切りのテキストを出力しようとしましたが、
Streamwriterのメソッドの中で、
encoding.default
のパラメーターを指定していました。
読むときも同じパラメーターでした。
それが原因なのかもと思いました。
タブ区切りでテキストを入出力するときは、皆さんはどのように記述されているのでしょうか?
こっちで再現できるだけの材料をくれ・・・ タブ区切りなんてほとんど書かないけど、JoinしてWriteLineとかでいいんじゃ
正常に出ないってのはどんな風に出ないんだ? 現象を正確に書くとこから始めようぜ。 まあ他にも不明点が大杉だが。
IPCのサーバについての質問です。 クライアントから通信を受け取った後Application.Restart()すると、 通信終了処理のタイミングか、使用ポートが閉じられていないみたいで、 起動時にIPCポートが開けないとのエラーがでます。 で、ポートが開くまで待ってみようと、下のソースでループを掛けてみると、延々ループが回り続けます。 一度手動でアプリを終了させてから、再実行するとポートが開けるので、 キャッシュ辺りに実行開始時のポート状態を格納しているっぽいんですが、 このキャッシュをクリアする方法はありませんか? もしくは、実行中に指定のIPCのポートが使用可能になったかどうかを調べる方法が知りたいです。 宜しくお願い致します。 while (true) { try { IpcServerChannel ipcServerChannel = new IpcServerChannel("hoge"); break; } catch (System.Runtime.Remoting.RemotingException ex) { continue; } }
難しい質問します。 今photoshopやpainterの様なソフトを作ろうとしていのですが、 すごい大きな画像(1200*1200*15*15くらい)のものを作るとメモリをすごく使います。 もちろんメモリ不足のエラーがでます。 しかしphotoshopなどで同じサイズで画像を描写などしてもあまりメモリを消費しません。 これはどういった操作を行っているのか分かる方いませんか? またc#でも同じことができるのかも知りたいです。参考になる本などなんでいいので情報ください。 よろしくお願いします。
小分け
301 :
デフォルトの名無しさん :2009/11/02(月) 07:20:20
C# プログラマだと思い込んでいる、 ただの C# ユーザー、Visual Studio ユーザー って多いよね。 プログラマではなく、ただの統合環境(IDE)ユーザーでしかない人。 IDEをそれなりに使いこなして、アプリっぽいものを作れる人と、 IDEがあってもなくても、アプリをガツガツ組める人とは 雲泥の差がある。
770 名前:デフォルトの名無しさん[] 投稿日:2009/11/02(月) 06:24:27 Visual Basic プログラマだと思い込んでいる、 ただの Visual Basic ユーザー、Visual Studio ユーザー って多いよね。 プログラマではなく、ただの統合環境(IDE)ユーザーでしかない人。 IDEをそれなりに使いこなして、アプリっぽいものを作れる人と、 IDEがあってもなくても、アプリをガツガツ組める人とは 雲泥の差がある。
>>300 小分けは考えたのですが、そのためのライブラリがよく分からなかったので諦めてました。
ですので、もし分かるのであれば教えてください。
できるならC#でできる範囲でお願いします。
ファイルマッピングでViewをこまめに設定とかか
マネージドでファイルマッピングできるようになるらしいけど、いつ完成なのかなぁ。 .Net5.0 なのかな?まさか4.0?
C# webBrowserのクッキーについて質問です。 webBrowserで開いたページのクッキーは、 AppData\Roaming\Microsoft\Windows\Cookies\*(IE8) に保存されますが、この保存場所を変えるにはどうしたらいいでしょうか? webBrowserで開いたクッキーは、終了と同時に削除したいからです。 よろしくお願い致します。
>>306 IEコンポ使ってたら保存場所の変更はレジストリ弄る以外無理でしょ、たぶん。
保存される場所もVista移行は保護モードのON/OFFで変わるよ
終了時に消したいなら単純にAPIのDeleteUrlCacheEntryで消せば?
ただ普通のIEのCookieまで消えちゃうけどねw
>>308 おうっ来年。CreateFileMappingは使ったこと無かったんだ。
と、そもそも必要になるようなアプリは作ってなかったり。
ネタ考えとくか。
memorymappedfileってなんですか? どんな利点があるんですか?
>>305 ファイルマッピングってC#で扱えないんじゃなかったけ?
ずーとwinAPIを使ってやるものだと思っていた。
そうだよ。そんで、.NET 4.0 で新しくサポートされるようになった、ってこと。
分からないことがあるのでぜひ力を貸してください。 2つのクラスc1,c2が以下のように定義されてるとします。 public class c1{ public Pen p{get;private set;} public c1(){ p = new Pen(Color.Black); } } public class c2{ public c2(){ c1 c = new c1(); c.p.Color = Color.White; ← } } c2のインスタンスを作ると上記コードの'←'を実行した時点で c.p.ColorがWhiteになっています。 c1の方でprivate setとしているのに、なぜWhiteになってしまうのでしょうか。 上記コードではPenを利用していますが、一般に内部に値型のプロパティを持っている クラスならばこのようなことが起こるようです。 よろしくお願いします。
>c.p.Color = Color.White; ← これc1クラスのpにはsetしてないよ。 getしてるよ。 それで返ってきたPenのColorプロパティにColor.Whiteをsetしてる。
知り合いに紹介してもらった女をどうするかはお前の勝手だ 知り合いは関係ない
>>314 もしかしたら言葉足らずだったかもしれません;
私がやりたいのは、
>c.p.Color = Color.White; ←
この書き方が通らないようにprivate setと書いたのですが、
>>313 のコードだと'←'を実行した後c.pのColorプロパティを見るとWhiteになってしまっているのです。
c.pに直接Penを入れるのは当然コンパイラがNGだと言ってくれるのですが。
>>316 そりゃ、set できないのは c.p であって、
c.p を get した後にそこの Color 書きかえるのは自由。
private set はそのプロパティの中身を immutable にはできない。
>>317 なるほど、分かりました。
このような場合にgetした中身に対してもsetできないようにすることは無理ですか?
もしそうなら根本的にPenをプロパティにすること自体をやめるしかないですよね。
>>318 プロパティのゲッタでは、変更されても問題がない値を返すようにすればいいんだよ。
具体的にはクローンを返せばいい。
だけど、自分で利用するだけのコードなら普通はそこまで気を使う必要はないと思うけど。
そんなものがバグの原因になることは殆どないと思うし。
>>319 なるほど!それいいですね。
>だけど、自分で利用するだけのコードなら普通はそこまで気を使う必要はないと思うけど。
>そんなものがバグの原因になることは殆どないと思うし。
そうなんですよね。
でもなぜかなーと疑問に思っていたら気になって寝られなくなってしまったのです。
お答えくださったみなさん(?)、夜分遅くにありがとうございました!
プロパティでコピーを返すのはNG。メソッドにしろ
プロパティでコピーを返すのがNGなら値型のプロパティは禁止だな
>>304 ありがとうございます。つまりC#だけでは大きなサイズを操作することは無理って事ですね。
残念です。
無理じゃない、実際にやってる
>>326 wib32apiを使わずにできるのですか?
いったい何を言ってるんだ?
>>327 「C#だけ」の見解の相違。
アンマネージドコードなapi呼び出しだってC#で書けるから、C#だけで書ける。
>>324 ありがとうございます。参考にさせてもらいます。
ただねえ、MSDNに書いてある「掟」にはそれを守るべき理由も一応書いてあるわけで、 つまりその理由に反しないのであれば形式上「掟」に反しても何の問題もないんじゃないかと 個人的には思うけどねえ。 Penのクローンなんてどう考えても問題ないでしょ。 それに、その「掟」は、あくまでクラスの利用者に、作ってる側が想定している 使い方を期待できない、甘えが許されないケースの「掟」なわけで、 利用者と使用者が同じケースなら配列をプロパティで返そうとなーんも問題ないんじゃないかと。
その理屈ならクローン自体いらないじゃん 変更しないように気をつければいい それにPenのクローンはアンマネージリソースも複製するから特に遅いしDisposeも必須 普通に考えればプロパティにするのは特に不適切なケース
>>332 「変更は」したいケースなんでしょ。
例えば何かのオブジェクトが持ってるペンと、同じスタイルで色だけ変えた
ペンで描画したい、とか何とか。
>それにPenのクローンはアンマネージリソースも複製するから特に遅いしDisposeも必須
それはメソッドに変えたところで改善される問題じゃあないね。
プロパティではなくメソッドになっていることで、それがそれなりに「重い」処理であることを明示できる、
という考えかもしれないが、明示されたところで回避方法はないのだから何の意味もない。
それなら使う側でクローンするべき 使う側でいったん一時変数に入れて後でDisposeしないといけないプロパティなんか常識外れにも程がある
あ、いやまあメソッドになっていれば「繰り返し使う場合はキャッシュして使えよ」 っていうサインにはなるか……。 自分の書いたコードでも実装の詳細なんて数日で忘れちゃうことを考えれば、 確かにそういう意味ではメソッドの方が適切かもしれない。 ただ、個人的にはこんなものまでGetXXXなんてメソッドにするのは嫌いw
>>334 Penに限れば確かにそうだねすまん。
Win9x以外はPenのDisposeを必ずしも呼ぶ必要はないって説も聞いたことはあるけど。
PenのDisposeなんて呼んだ事無かった・・・ もちろんusingも使ってない・・・
技術者なら掟は絶対に守るべきだけどな
それは技術者じゃなくて、教条主義者とか村人の態度だと思う。
とりあえず従っとけば嫌がられることもないんだし わざわざ反抗する意味がわからない
これから作る Windows7 向けアプリで WPF を使わないで Windows Form を使う理由ってありますか?
ないんじゃないかな。 4.0 にならないと DataGrid 使えないとかそういう理由はあるけど、 それも来年の初めには解消されるしねぇ。
WPFにはWinFormsの同名のそれとは比較にならない恐ろしく柔軟なListViewがあるので データグリッドはいらないはずだったんだよ まあ面倒でわかりづらかったけど
>>339 技術者なら掟を守った上で、更に凄いものを作るべきであって、
決して掟を破るということはあってはいけない。
掟を破って作ったもので利用者が被害を被った場合、
裁判したら賠償させられるかもしらんぞ。
掟って何だよ ガイドラインの話が法の話に置き換わってるぞ
DOSのアプリ作って、 一瞬、もじが表示されて、 すぐに消えてしまうんだけど きえないようにするには、 どうしたらいいの?
Console.ReadLine();
348 :
346 :2009/11/04(水) 02:45:49
わかったから もうええわ
どういたしまして
>>345 ガイドラインだけじゃなく、標準(基準)のことだろ。
日本では標準から外れても動いていれば評価されるが、
海外では標準から外れると、例え素晴らしい動きをしても評価されないからな。
それはない
従うとは負けることなんだよ
オレオレ言語でも作ってろ
いろんなサイトで結果を出力する時に「Console.WriteLine()」を 使ってるんだけど、何度やっても何も起こりません。 わからないのでいつもMessageBox.Show()を使ってるのですが、 どうすれば正しい結果が得られるのでしょうか。
う
>>354 GUI が必須なのかどうかで回答変わるが。
GUI 必要ないならそもそもコンソールアプリで作れ。
そうでないなら、適当なデバッグ用のTextBlockでも用意して、
そいつに debugText.Text += "出力";
>>354 VisualStudioでデバッグ中なら出力ウインドウに出てるよ
>>326 方法としては大きく分けて、
winプロジェクトで作った物を使う。
c#のコードの中でwinapiを呼び出して使う。
の2種類だと思うのですが、後者でもbitmapを部分的に呼び出して、drawlineとかで線をひくことはできるのでしょうか?
今の所ブロック状にbitmapを分けて、描写したいブロックを呼び出して絵を描く、戻す。ということを考えているのですが、
関数の説明などを見ていてもいまいち掴めません。
RijndaelManaged aes = new RijndaelManaged(); デフォルトで何ビットでしょうか?
KeySize見ろよ
>>360 MessageBox.Show(aes.KeySize.ToString());
あんがと。
362 :
354 :2009/11/04(水) 20:56:43
PreFilterMessageで拾えるウィンドウメッセージと 拾えないウィンドウメッセージがあるみたいだが、 どこかに一覧か法則が公開されてないのかな
クラスのインスタンスの内容が等しいことを調べるメソッドを教えてくれ。 面倒なのでpublicとか余計なの省略するが class MyClass{ int x,y; } Main(){ Myclass m,n=new MycLass(); m.x=20; m.y=30; n.x=20; n.y=30; if (m==n){ } mやnは参照なので実行されない。全部のメンバが等しいことを調べるのはどうやりゃいい?
>クラスのインスタンスの内容が等しいことを調べるメソッドを教えてくれ。 言ってることのお馬鹿具合とこの口調のギャップがなんかユーモラスだな。 体を張った新手のギャグのつもりだろうか
だってさ、x=10;y=10; if(x==y){ ってやったら実行されるじゃん。 xのアドレスとyのアドレスが違うから if(x==y)が実行されなかったら困るだろ? 参照型だからってなんで実行されないんだよ!不便!
等価性をいじりたいなら Equals、IEquatable<T>、GetHashCode や operator==, != あたりの実装を自力でやれ。 でも Mutable なクラスに対してのソレは推奨されない。 というか例のようなのは struct にしろよ。真面目にやるんなら こっちもそれやらないといけないけど
>>367 そんなおバカなこと言っているのはお前だけだ
もう一度勉強しような?
誰か
>>358 に答えてくれ。
今後者の方法でやってるんだけどcreatefilemappingを作ってから行き詰ってます。
そのあとに新しい大きなビットマップを作って、
viewして部分的に取り出して線とかイメージを描きたいと思っているんだけど、全く分かりません。
やはり.netのbitmapをファイルマップする事は無理なのでしょうか?
createfilemappingなんているのかなぁ・・・ まあ、とりあえず単純に大きなBitmapから処理に必要なブロックを切り出して Bitmap(略, IntPtr scan0) コンストラクタの scan0 にバイト配列食わせたら? それかBitmapの一部を切り出して読み込むStreamクラス作って渡すとかさ それが出来てから表示とか線の描画、テンポラリ、保存を順に解決してきなよ 質問の内容読んでも、どういう処理の流れで作ろうとしてるのかさっぱり読み取れん
メモリマップドファイルって説明読むだけで今まで使う機会無かったんだけど、自前で読んで-書いて-とかやる場合と比べてメリットデメリットってあるもの? 素人考えだとあっちこっち読み書きしたいがメモリ使用量を抑えたい場合、自前でやる場合コンパクトにコントロールしやすそうだが。メモリマップドファイル使うとOSネイティブの実装として速いけど細かいコントロールはしにくそう? 教えてエロイ人。
>>371 回答ありがとうございます。
普通にやると大きなビットマップを作った時点でメモリがオーバーしてしまう状態です。
filemapを作ったあとに大きなビットマップが作れない状態です。
>>それかBitmapの一部を切り出して読み込むStreamクラス作って渡すとかさ
これもfilemapを調べる前にやろうとしたのですが、bitmapでやる方法がよく分からなかったです。
大きなビットマップを作る方法も合わせて具体的に教えてもらえませんか?
374 :
371 :2009/11/06(金) 07:15:30
>>373 すまんが「大きなビットマップを作る」の意味が分からん
元がJpeg画像とかで、それをBitmapに変換してるのか?
それとも丸ごとBitmapクラスに突っ込んでインスタンスを作ろうとしてるのか?
出発点は巨大なBitmapファイルがディスクにあってそれの読み込みからじゃないのか?
処理の流れを説明してくれんと何が分からないのかが分からん
こちらこそ申し訳ないです。以前の方と同じ人と思い説明を省いていました。 photoshopのような感じで新規作成で大きな画像(1200*1200*15*15くらい)を何枚も作って描写加工保存、再度開くという操作をしたいと思っています。 c#で作られているpaint.netで同じ事をやるとメモリオーバーで実行されませんが、photoshopだとできるので真似したいと思っています。 さらにcomicstudiominiというソフトだと大きな画像を作って扱っていても、メモリがphotoshopに比べてほとんど消費されません。 できるなら.netのbitmapで扱えれば便利なのでそうしたいと思ってます。
376 :
371 :2009/11/06(金) 07:57:57
>>375 そういうのをBitmapクラス介してやると逆に大変そうだけどどうなんだろ・・・
とりあえず、Bitmapクラスに表示用のデータを持ってそれをフォームに描画するのなら
必要最低限のサイズはフォームを最大化したときの表示サイズじゃないかい?
GCもBitmapクラスの内部もよく知らないから間違ってるかもしれんけど、
Bitmapクラスは内部で byte[] とかでデータ持ってて、それを確保するのに
連続した空きメモリーが必要になるんじゃないかね
そうだとすると、大きすぎるBitmapクラスを作ろうとすると、メモリーの空きが足りても
確保に失敗するケースも出てくるんじゃなかろうか
いずれにしても、画像と同じサイズのBitmapクラスを作ろうとするのは無理があるよ
>>376 ということはほとんどの機能はwinの方で作った方がいいということ…ですよね?
win内で大きな画像をファイルマップか何かの状態で保持して、それをstretchか何かで表示サイズの画像が配列にして、
.netのimage系のクラスに渡して表示をさせる。って感じでしょうか?
分割して扱えよ。縦横適当なサイズで区切って。 ファイルへの保存は分割したバイト列を扱えるように。表示とかは分割したバイト列から適当にBitmapつくってやれば。
379 :
371 :2009/11/06(金) 08:43:56
>>377 winの方?C++とかアンマネージのこと言ってるのかな?
メモリマップ使うならC#でもC++でも大差ないと思うけど、
扱いやすいクラス作って分割管理するしかないよ
まあC++のほうが画像加工するライブラリはいろいろありそうね
Bitmapクラス使いたいなら、そのとき表示編集したい部分だけを
Streamで渡してインスタンス作ってごにょごにょすればいいんじゃない
画像全体にエフェクト掛けたりするなら、byte[] のまま自分でゴリゴリやるしかない
メモリマップドファイルのことを知らんで回答してる奴も多そうだ
皆さんありがとうございます。 winはwin32apiのことです。 クラスの分割だと使っていないときにファイルに保存になる際にメモリの開放がGCまかせになるせいで不安なのと、 >>画像全体にエフェクト掛けたりするなら、byte[] のまま自分でゴリゴリやるしかない と言うことを考えるとG単位で扱えるらしいwin32apiの関数の方がいいかなって思ってます。 ただこれだとc#内で書くより、win32のプロジェクトにまとめて作って、c#で呼び出した方がいいかなって思っています(できるか不安ですけど)
>>381 のジレンマはC++/CLIで解決するとみた
WebBrowserコンポーネントを使ってPOSTするには Navigate2を使えと書いてあるのですが Navigate2は一体何をusingすれば使えるようになりますか? 存在しませんといわれてしまいます .NET2.0です
ActiveXの方のWebBrowser
WebBrowser.Navigate (String, String, Byte[], String) WebBrowser.Navigate (Uri, String, Byte[], String)
Postするだけなら HttpWebRequest使った記憶が俺にはある
あごめん、Postして遷移か。
>>386 はスルーで
>>384-386 解決しましたありがとうございました
同等の機能がNavigateでもしようできるのですね
重ねてもうしわけないのですが
デバッグ用にステータスをテキストファイルにログとして残そうと思っております
調べたところWebBrowserのステータスが変更されるたびにStatusTextChanged のイベントが呼ばれるとか
しかし、そのようなイベントは見あたらず色々調べてもそれが存在するからそれを仕えという記述しかありませんでした
using System.Windows.Forms;
の中にあるらしいのですがちゃんと宣言してもやっぱり存在しないと言われてしまいます
このかわりになるイベントもしくは、これを使う方法を教えていただけませんでしょうか
確認したけど、普通にあるじゃん
>>389 表示されないんです
また、手動で追加しても存在しないとおこられてしまいます
何がダメなんだろう・・・・
Visual stdioのC#つかいづらいな。 EclipsってC#もできるの?
>>391 EclipseはもっぱらJavaでしか使わないのであれだが、
PHPやCはあってもC#は無かったかも。最近確認してないけど
なんなら SharpDevelopでも試してみたら?特に薦めるポイントは無いが
ちなみにVSのC#が使いにくいとか言ったら、VS2008C++なんて使えないぜ
かなり優秀だと思うVSC#
VSの代わりにEclipsって時点で釣りだろw
あたしが釣られたとわ‥w
>>391 不満なら ReSharper でも試したら?
>>393 それがわかるなら質問してないだろ
お前バカっていわれない?
>>392 そのイベントは初期搭載(デザイナでは表示されない)から自分で宣言する必要がある
宣言するのは
using System.Form;
の下に
public delegate void StatusTextChanged(object sender, EventArgs e);
って一文を追加するだけ
それだけで使えるようになるよ
>>394 WindowsFormアプリケーション作るときなぜかしらんけど
Paticalだっけ?クラスを分割するやつ使われててソースコードが四つくらいにわけられない?
あれがなんかきもいんだよなぁ。
using Windows.Forms;
staticMain(){
Application.Run(new Form());
みたいなことをするだけのちょっとしたプログラムつくるも
デリゲートだのコンストラクタの設定だのがProgram.csとかForm.csとか一個のcsファイルでできるじゃんっていうのも
無駄にファイル多くなってキモイんだよね。
メモ帳でもいんだけど、行数が表示されないのが不便。
>>399 デザイナの操作に連動して勝手に編集される部分のコードを
わざわざ見えるようにしてもアホが編集しちゃうだけだろ
そんで、勝手にコード壊された><って文句言われるくらいなら
触る必要が無いor触ってはいけないコードは隔離すべき
structってなんで最初に変数設定できないの? struct Person{ int age=0; } みたいなのができない。クラスだったらできるのに・・・ なんで?
Formに限らず、クラスがデカい時等イニシャライズ処理やその他でパーシャルする事はたまにある もちろん意味付け整理してクラスそのものを分割する事を検討するけどね
>>399 メモ帳でも書けるぐらいC#に習熟してるのに、なぜそんな事を言い出すのか理解に苦しむ。
嫌ならデザイナ使わず手書きすればいいだけの話だろ。簡単でしょ?
>>404 別にメモ超で書くのは熟練じゃないし。
俺は全部手書きでやりたいんだよ。
Point p=new Point(100,100);
Fomr1.Location=p;
Form1BacColor=Color.Black;
Form1>OnClick+ ner EvnetHandler(クリック);
とかな。足しかに自動入力してくれると楽だけど自分で全部管理しないと気持ち悪くて仕方ない。
本来10KBくらいの容量ですむものがslnファイルとかbinとrereaseに同じexe作られて50KBくらいの大容量になっちゃって気持ち悪いし。
だから、黙ってそうすりゃいいのに・・・ 何が言いたいんだろ
メモ帳もVisualStudioも使いづらいから もっと良いエディタないか聞きたいだけ
notepad++
>>408 使いやすい使いにくいは主観だから、具体的なこと言わずに喚いてもしょうがないよ
まあ、ファイルがいっぱいなのがキモイってのは分かったから、それだけ回答するが
Visual Studioでフォーム作るときは新規作成でクラスファイル追加して
Formの継承クラスにして後は全部手書きでコントロール配置できるよ
つまり全部手書きしたいのにデザイナ前提のWindows フォームを使おうとするのが悪い
空っぽのプロジェクトに空のファイル追加してけばいいって話だ
手書きでも追加できるって言うより、フォームデザイナが代わりに書いてくれてるだけって事 コントロール類もフォームも結局ただのクラスである事を思い出せば答えは簡単な話であった
>>406 すまん「50KBの大容量」について書いてるの見落としてたな
少ないファイル数と容量を実現するには、VS立ち上げてプロジェクト一切作らずに
新規作成で空のファイル作ってコード書き終わったら名前をつけて保存
クラスはいくつでも1つのファイルに押し込めるから1個で大丈夫だよ
ビルドはコマンドラインで自分でやることになるけど
スタートメニューにある「Visual Studio 2008 コマンド プロンプト」を起動
>csc ファイル名.cs
でおk・・・と思ったがまだ容量に無駄があるな・・・
できればソースを保存するHDDをNTFSで再フォーマットして
その際にアロケーションユニットサイズを512にしよう
そうしないと1文字しか書いてないファイルでもほぼ4kbもの大容量が無駄になるよ
WebBrowserコンポーネントを使用する場合 特定のURLをクリックしたときだけ違う動作をさせたいのですが これから遷移するURLを取得する方法などはありますか? 移動してからのURL取得はできるのですが 移動前にはクリックしたURLを取得したりはできないのでしょうか よろしくお願いします
>>416 早速の回答ありがとうございました解決しました
続けて申し訳ないのですが
リファラを設定していて、トップページ以外からの遷移を拒否しているサイトに接続する場合
ボタンなどで、Navigateで遷移するとリファラがクリアされアクセスが拒否されてしまいます
リファラを自由に設定することはできないみたいなので
画面上のリンクを、クリックした扱い(リファラを持って)そのページを表示することはできないのでしょうか?
ヨロシクお願いします
>>416 Navigate(string urlString, string targetFrameName, byte[] postData, string additionalHeaders)
additionalHeaders に "Referer:
http://www.google.co.jp/\n " とかやったらいけそうじゃない?
相変わらずオブジェクトブラウザで眺めただけだから確認してないけどさ
>>417 その方法だと、POSTになってしまいませんか?
GETでやる方法はないでしょうか
自己解決しました postdataをNULLにすればGETになりました ありがとうございました
webBrowser.Dcument.cookieってなんのために存在すんの? Webriqとかに汎用できるのかと思ったらできないみたいだしさ
>>420 HTML内に記述するJavaScriptでさわれるdocument.cookiesと同じ
むしろそれ。なので用途も同じ
そのDocumentが持ってるメンバは大体そのつもりで見てくと正体わかるよ。
ただしJavaScript側をまったく知らない場合、ちょっと判別や理解がしづらいかもしれない
>>414 ついでにネタを一つ書いておくと、Navigateのタイミングだけでなく、
webBrowser.DocumentからJavaScriptで書くときの要領でDOMを辿り、
HtmlElementを特定してそれのClickイベントをハンドルするって方法もある。
ハンドラに来るsenderからUrlに限らず、「そのタグ」に書かれている全ての内容を引ける
詳しくはオブジェクトブラウザを見るか、インテリセンスで出てくる候補をつぶさに観察してください
>>422 それめんどくさすぎないかい?
どのタイミングでハンドルする?DocumentComplete?
ページロード中にすばやくリンク押された場合を考えると
結局 WM_LBUTTONDOWN も処理しないとダメで厳しい気がするが
>>423 あ、だからいつでもこの方法を推奨とまでは言わない。やりたい内容によるぜ
俺はDOMに慣れちゃってるので面倒とは思わないが、JavaScriptと同じノリでなんでも操作できるのが面白いかなと
なのでネタとして追記してみた。
使い道としては‥ 既存サイトを開いて一部を変更したり、ページ上のあるアクションのタイミングで
何かしたい場合に使う。なのでやりたい内容次第。
モデルが見えてるなら、かなり楽ちんなんだぜ
書き漏れた。 DOMを辿るタイミングとしてはCompleteは見てるな。 以前に作ったのは、ファイルブラウザのような物を作って、適当にファイルを選択してショートカットキーを押すと 設定してある既存のうpロダページが立ち上がり、ボタン押下で マルチパートPOSTするようなアプリケーション。 開いた任意ろだページのDOM辿って処理する流れにした。 流れ分かればわき道にそれずに書けるので逆に手早かったりもする
>>424 なるほど、デリゲートをセットするタイミングの難しさがあるから
漏らさず拾うのは無理がある手法だけど、ネタとしてならありかね
TABLEのカラムクリックを拾ってソートしたりとか、
そういう目的のために使う分にはいいかもね
>>426 そうそう!まさにそんな感じ。
ここんとここのスレでは WebBrowserコントロールの話が出てるので、選択肢の一つとしてあげてみた。
この方法の場合、JavaScript側で使うようなDOMの知識は必須
428 :
デフォルトの名無しさん :2009/11/08(日) 00:55:06
質問させてください。 自作コントロールにあるプロパティをVC#のプロパティウィンドウに表示したいのですが どうすればいいのでしょうか? ↓では出てきませんでした。 public static int Signedmitaina{ get{xxx} }
ごめん、よくわからない
VisualC#2008で 継承ピッカーってどこにありますか?
432 :
デフォルトの名無しさん :2009/11/08(日) 01:10:27
むむむ。言葉足らずですみません。
C#でユーザコントロールを作りました。
新たにウィンドウズフォームプロジェクトで、
フォームに自作コントロールを貼りつけました。
コントロールを選択するとプロパティウィンドウに継承元のプロパティが並ぶのですが、
自作コントロール専用プロパティをプロパティウィンドウに表示するコーディング方法が知りたいのです。
>>431 あら不思議、消したら現れました。
ありがとうございます。
まず、ということは、続きがあったりしますか
意味不明でしたね 継承されたフォームテンプレートがそんざいしないのですが どうすれば表示されるようになりますか?
434 :
433 :2009/11/08(日) 01:31:03
早い話 コンストラクタでプロパティ決めたほうが早いと思わんかね
質問があります Webページを閲覧する場合通常は、画像を読み込みつつ表示されていくと思います 現在 自前でWebClienteを用意し、Webページのソースを取得 画像をダウンロードし ダウンロードしたソース内のURL置換を行い ローカルに保存させた画像にパスを変更 WebBrwserコンポーネントにソースを投げて表示 という仕組みでうごいているのですが ダウンロードを同期的に行っているため全てのダウンロードが終了するまでフリーズ状態となります 重い画像が使用されているページなどはフリーズ時間が長くなってしまうので どうにか通常の場合のように読み込みつつ表示はできないものでしょうか 最初からURLだけNavigateにすればそれですむ話なのですが よろしくお願いします
>>438 WebClientの〜Asyncってメソッド使ってみたら?
タブが選択されてるとてんてん表示されますよね? あれを消す方法ってありませんか?
わけわからん、タブコントロールのフォーカスレクトのことか?
>>441 ありがとうございますそういう名前だったのですね
解決しました
続いて申し訳ないのですが
DeselectTabで右に移動はできるのですが
左に移動する方法ってありますか?
DeselectTab見てみたけどインデックスや名前で直接指定するんじゃないの? 右も左も無いと思うけど。インデックス番号は0から始まる。
って非選択にしたあとの選択を1つ前にしたいのか 現在の場所調べてひとつ前にSelectしては?
すみません。質問です。 TextBoxを作成すると、DataGridのマウスホイールでのスクロールが機能しなくなる問題がありました。 フォーカスを変えても変化が無いので、 MouseWheelというイベントを試してみようと思いましたが、再現する方法が難しく強引な様な気がして断念しました。 TextBoxのスクロール機能を停止させてDataGridのスクロールを有効にする方法を教えてください。 御願いします。
447 :
446 :2009/11/10(火) 18:00:55
灰色になったけど、Enabledてのがあった。。。すみません。ありがとうございました。
状況がよくわからんのだよね。 確認できてないけどフォーカスだろ?
449 :
446 :2009/11/10(火) 21:16:51
>>448 申し訳ないです。DataGridはフォーカスとは言わないかもしれないですが…。
Formの上にDataGrid(展開するとDataSourceが枠の縦幅を越えるのでスクロールが表示される)、
下にTextBox(マルチライン)を配置して
DataGrid或いはTextBox上でスクロール(ホイール)すると、
Form内のどの場所であってもTextBoxのみがスクロールされます。
DataGrid上をクリックしてもアクティブになるような事がないので、
どんな操作をしてもTextBoxしかスクロールせず困っていました。
EnabledでTextBoxを無効状態にすれば、スクロールも強制的に機能しなくなり、
DataGridのスクロールも機能するようになったという次第です。
釈然としませんが、MouseLeaveでEnabledを切り替えようかと検討していたところです。
DataGridView試してみたら、そんなことは起きない。 2.0 以上ならDataGridView使いなよ。 うちの2008ExpressじゃDataGridなんてツールボックスにも出てこない。
451 :
446 :2009/11/11(水) 22:31:50
むほ、うちはXPあぼんして今は7だしなぁ。 それで発生していないか、それともアプリからスクロールバー制御とかしてない からなのか。
32bitカラーのBitmapを縦横4倍拡大表示(面積比16倍)するのに Graphics.DrawImage()を使っているのですが、もっと速い表示方法ないですか? ドット補完なしカクカクのまま拡大で十分です 60fps出したいのに、40fpsくらいしか出ない 拡大せずに等倍だと60fps出ます
455 :
デフォルトの名無しさん :2009/11/14(土) 19:08:43
ファイルやディレクトリをエクスプローラへドラッグ&ドロップするには?
http://www.atmarkit.co.jp/fdotnet/dotnettips/384expdragdrop/expdragdrop.html この方法でエクスプローラへドラッグ&ドロップができるようになりましたが、
この中の図の説明にある通り、「なおエクスプローラでは、[Ctrl]キー+[Shift]キー
を押しながら、もしくは[Alt]キーを押しながらドラッグ&ドロップすると「リンク」
(=ショートカット)を作成することができるが、本稿の方法ではエラーが出るので
「DragDropEffects.Link」には対応しなかった」ことを確認。
DragDropEffects.Linkを設定してDoDragDrop()しても、エクスプローラにDropしたときに
エラーが出て「%1が見つかりませんでした」とメッセージされます。
DataFormats.FileDropフォーマットでfiles配列をDataObjectに載せる以外にほかのデータを
設定する必要があるのでしょうか?ご存知の方おられましたらよろしく。
g.InterpolationMode = InterpolationMode.NearestNeighbor
VC++6からC#に宗旨替えしようと初めてVS2008触ってみたんですが C#ってソリューションエクスプローラにメソッドやメンバ変数って表示されへんの? さっき作ったばかりの関数名なんだっけ?と揮発性の高いオツムなんで 見えないと不安でしょうがない。 トシかなぁ・・・。
ソリューションエクスプローラには表示されない。
クラスビュー使え。
C++では常に使うけどC#でクラスビューってそういえばほとんど使ってないわ ソースの見通しがいいから必要性を感じない
変数に'.'打つと補完出て、メソッド選んだら今度はオーバーロード選択できてと、 至れり尽くせりだしなぁ。VC#
いたれりつくせりすぎて他の環境で生きていけなくなりそうで怖い 一種の囲い込みだよなw
たまにC++やると面倒すぎて鬱になる。 俺の精神安定のためにもVS2010でもっと賢くなってくれ…。
便利な開発環境が「あるのに使えない」状況に置かれたら辛いかもしれんけど、 そんなもんがないプラットフォームなんて組み込みなんかじゃざらにあるわけで、 それならそれで案外割り切ってコーディングできるもんだし、思ったほどストレスもないよ。 要は使えるはずのものが使えない不条理が辛いわけで。 切れないハサミならハサミで、それを工夫して使いこなす楽しみもないではないしね。 まあそれも程度問題だけどさ。
eclipseでjava使ってるとレスポンスが悪くてイライラする 中途半端にVC#に似てるとダメだな
えくりぷすじゃVSの快適さには遠く及ばんわな
それが、世の中には Eclipse >>>> VS と信じて疑わないやつがいるんだよ・・・
eclipseのプラグインの種類が多いところは認めたい。
>>470 それは認めるが、いくつかは入れないと開発すら始められないのはいただけない
プラグインの多さが標準のエクリプスの機能不足を証明しているのは皮肉なものだ
しかし安全にアンインストールできるプラグインって都市伝説級。 pluginsとか消して回っても起動時エラー続出。
VSしか使ったことないんだが、エクリプスってそんなに微妙なの?
プラグインを一度いれたら外せないのは本当だけど、俺はeclipse派だわ。 楽だから。先にeclipseから入るとvsは別の意味でとろく感じる。
>>474 >楽だから。別の意味でとろく
具体性がなさ過ぎてチラシの裏レベル
コード補完はVS2003にも劣るレベル
まぁいいんじゃね? ここは C# スレであって、Eclipse を語ろうスレじゃないし。
さっきから気になってたんだがeclipseにC#のプラグインなんてあるの? ないならスレチをベラベラとなにをやってるの?
あるけどどう考えてもjavaの話
C#使いたければVisual Studio使えってことですよ 馬鹿な人はそれがわからんのです
SharpDevelopのことも、たまには思い出してあげてください・・・。
VSにExpressEditionが出た時点で#devは……
俺はphpでさえVSを使ってる
#dev はどっちかってーと fork されたやつのほうが うまくいってるよね
ごめんなさいVisual Studio使ってないです。サクラエディタ + nantです。
つまんね
昔Javaやってた頃はEclipse使ってたけど、C#ならVS以外考えられないな。
ちゃんと全部かかないと嫌だからVS使ってないな。 Windows アプリケーション作ろうとすると Main関数とか勝手に書き込まれちゃうし。 static void Main(){ } これとか、ボタンやフォームの位置やサイズはすべて自分でコードにちゃんと書かないとプログラミングしたっていう気がしない。
趣味グラマならかまわんが、同僚とかだったら( ゚Д゚)<氏ね!って感じだな。
>>491 またおまえかよ
先日やり方教わったばかりだろ
VS使って1から好きなだけ書けよ
C#の追加されたdynamic機能めっちゃ使いやすいな。 dynamicを使えばジェネリックやvarによる型推論を使う必要が少なくなる。 早くC#4.0がベータ版じゃなくて正式実装されないかなー
おまえ・・・ おまえも別の意味で同僚にいたら( ゚Д゚)<氏ね!って感じだな。
DllImportも定数定義もなしにWIN32APIを素で叩けるようにして欲しい
>>496 それはいやだ
宣言固定で引数がIntPtrだらけになるより
自分でオーバーロード書いてマーシャリングしてくれるほうがいい
決定版のWin32API宣言集をMSが標準で用意してくれたらなーとはおもったことある
Windows API Code Pack for Microsoft .NET Framework
>>499 あったwwwwwwwww
マジありがとうwwwwwwwww
byteの2次元配列をディープコピーしたいのですが、 forの二重ループするしかないですか?
Buffer.BlockCopy
サンクス!すごく速くなりました!
同じアプリで複数の人がネットワーク上にある1つのファイルを編集する場合のファイルアクセスについて 誰かが開いていると他の人は読み取り専用で読み込むようにしたいです。 fileStream = new FileStream( loadPath, FileMode.Open, FileAccess.ReadWrite, FileShare.Read ); この記述でIOExceptionの例外を受け取ったら誰かが編集中と判断して FileAccess.ReadWriteをFileAccess.Readに切り替えて読み込もうとしましたが出来ませんでした。 FileShare.Readを指定すれば読み取り専用で開くことは出来ると思ったんですが。 コピーを作成してそっちを読むという方法もありますが、できれば1つのファイルで完結させたんですが 何か方法はありますか?
そりゃ、ShareReadだけのままじゃ無理だろうな
506 :
455 :2009/11/17(火) 22:01:53
>>469 おお。お答えありがとうございました!!早速見てみます!!またよろしくです!!
StreamReaderって非同期のメソッド無いの?
メソッド一覧ぐらい見ろ
StreamReaderのメソッドは非同期操作の単位として小さすぎると思う テキスト一行や数バイト読むためにいちいちスレッド起こすのか
普通にハンドラでいいとおもう
511 :
504 :2009/11/18(水) 10:28:25
>>505 のとおり、IOException例外を受け取ったあとの読み込みを
fileStream = new FileStream( loadPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite );
このようにしたところ上手く読み込めました。
しかし、最初にFileAccess.ReadWriteで読み込んでいた方のプロセスで書き込みを行おうとすると例外が発生し
別のプロセスで使用されているためプロセスはファイル○○○にアクセスできませんというメッセージが返ってきます。
最初に開いた人は読み書きできて、あとから開いた人は読み込みだけできるようにしたいんですが。
このままだと複数の人が開くと誰もファイルを更新できなくなってしまいます。
解決策があれば教えていただきたいです。
実際にやってないから動くかどうかはわからんけど、FileSystemRights を調べてみては?
>>511 ん?ほんとか?
ネットワークだとうまくいかないのかな?
514 :
504 :2009/11/18(水) 14:48:57
>>512 調べてみましたがFileSystemRightsだとファイルの一般的な排他制御での
一時的なロックという扱いには出来ないようですね。
>>513 ローカルでも無理なようです。
アプリを複製して同時起動し、ローカル内の1つのファイルにアクセスした場合も同じことが起きました。
IOException例外のあとの読み込みで中身をメモリにコピーしてからすぐに閉じることで一応解決はしましたが
開いたままにしておくと最初に読み書き両用で開いた方もアクセス出来なくなるようです。
本当はfileStreamに常にアクセスできるようにしておきたいんですが閉じるしか術はないみたいですね・・・
ローカルでダメだったらどこかでプログラムを間違えてる そんな馬鹿な、と思ってこれだけ書いて動かしてみたが問題なく動いた private FileStream fileStream = null; private void button1_Click(object sender, EventArgs e){ try { fileStream = new FileStream("test.txt", FileMode.Open, FileAccess.ReadWrite, FileShare.Read); } catch (IOException) { fileStream = new FileStream("test.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite); } } private void button2_Click(object sender, EventArgs e){ fileStream.Write(Encoding.Default.GetBytes("aaaaaa"), 0, 6); } private void button3_Click(object sender, EventArgs e){ fileStream.Close(); }
516 :
504 :2009/11/18(水) 17:01:20
>>515 原因を特定できました。
更新処理で
fileStream.Close();
if ( File.Exists( savePath ) ) File.Delete( savePath );
m_fileStream = new FileStream( savePath, FileMode.CreateNew );
こんな風に書いていたんですがFile.Deleteは他のでFileStreamに読まれている時点で使えませんね。
button2_Clickの記述を見てそういえば・・・と。
すでにファイルがある場合にIOExceptionがスローされるのを避けるために事前に削除しようとしてましたが
FileMode.Createを指定すれば良かった事に気がつきました。
完全に自分の凡ミスでした。お騒がせしてすみませんでした。
例外が出た時点でスタックトレースくらい確認しろよもうっ
FileShare.Deleteというのがあってだな。 ってまあ今回はそもそも削除しようとするのが間違いだが。
ジェネリックについての質問です。 制約をつけてで数値型(byte, sbyte, char, short, ushort, int, uint, long, ulong float, double)だけを指定してもらいたいと思っています。 System.ValueTypeは制約に出来ないとコンパイラにしかられてしまうのですが、 どのような指定の方法がございますでしょうか。 よろしくお願いいたします。
520 :
デフォルトの名無しさん :2009/11/19(木) 18:25:13
IDictionaryクラスなど、KeyとValueがベアになっているクラスはたくさんあるけど、Keyの属性が(多次元配列のように)2つ以上あって、それに対してValueが1つつくようなクラスはないの?
別のキーに対して同じValueを設定するのじゃだめなのかな?
522 :
デフォルトの名無しさん :2009/11/19(木) 18:44:46
うん、キーを2次元配列みたくしてバリューを決定するみたいがいいかな。
普通にKeyに多元配列なりなんなり指定すりゃいいんじゃない? Key同士を比較したときに同じだって判断できりゃいいだけだし。
524 :
デフォルトの名無しさん :2009/11/19(木) 18:51:50
なるほど。ありがとうございます。
数値型から列挙型に変換する方法はありますか?
527 :
519 :2009/11/19(木) 20:44:44
>>526 やはり無理でしたか。
where T : int... とかもだめだったので諦めがつきました。
>>526 サンクス
ついでにもう一つ
C#は列挙型の継承は出来ますか?
検索しても出来ないとあるから無理かな…
Enumの型に数値から変換する匿名メソッドとか無かったっけ。 なんか前に使ったぞ。
うーん… 調べても列挙型の継承は出来ないっぽいなぁ それ風のクラスを作るとしたらこんな感じ? public abstract class MyEnum{} public abstract class MyEnums { public static MyEnum foo; } public abstract class MyEnumChilds : MyEnums { public static MyEnum bar; } 先生方、いかがでしょう?
IConvertible じゃ文字列とかも入っちゃって嫌なのかな?
>>530 class MyEnum {
public static readonly MyEnum Foo = new MyEnum(0);
public static readonly MyEnum Bar = new MyEnum(1);
private int value;
private MyEnum(int value) { this.value = value; }
//あとはEqualsやGetHashCodeや==などを実装
}
533 :
513 :2009/11/19(木) 21:17:49
すまん クラスならvalueはいらんね 常に参照比較でおk
>>532 なるほどなるほど…
とても勉強になりました
ありがとう!
参照型=型安全なポインタ
違います 参照というのはGCによって管理されたオブジェクトにアクセスするためのハンドルです
ポインタとハンドルって本質的には違わないよ ひょっとしてポインタ = メモリアドレス、とでも思ってるのかなw
参照型は、& と言うアドレス演算子を使ってだな…ってここはC#のスレか
CLIの用語上は意味が違う GCによって移動されても追跡できるのがハンドル,そうでないのがポインタ
同じかどうかってのは観点による。 みかたをかえれば たとえばstr型もint型もdougle型ポインタ型もまったく同じだよ。 どれもメモリ上の数値でしかない。 同じように操作できちゃうと困るから違うようにみせかけて 人間が勝手に違うものとして認識してるだけ。根本的には 何もかもメモリ上の数値。 それをわからずに、一方的な観点でしかものをみられない人は str型とint型は全然違うと思い込んでる。
>>540 いや、そういう話をしてるわけじゃないから。
>>541 そういう話だよ。みんな物を一方的な側面でしか見られないから
同じだとか同じでないとか決め付けたがる。
「何を中心として考えるか」で同じか違うかなんて変わってくるだろうが。
>>540 なんかズレたお方。
本質的に違わない、とは、別の言い方をすれば機能的に等価だということ。
君が言ってるような青臭い話とは全然違うw
えっと、
>>532 のような列挙型っぽいクラスのpublicフィールドを全て列挙するにはどうすればいいのでしょうか?
C# リフレクション でググる 実はEnum.GetValues/GetNamesもリフレクションで実装されてる
うんこ
まあ、普通に使う分には参照型もポインタ型も大差は無いだろうけど それでいいのか?
>>542 いや、そういう話じゃないから・・・いやほんと。
間違いを指摘されたからって別に必死で自己弁護せんでもいいよ?
C++/CLI使うなら明確に
>>539 のように違いを意識しないといけない
C#ならその違いが表に出てくることは普通ない
>>540 見かたを変えてどうするよwww
なんのために誤解がなくなるよう厳密に仕様書で言葉定義してるのか考えてみな
素人さんか??
>>545 ぬああ、、駄目だ
わけわかめになってきた
汎用性のある継承出来るEnumクラスって誰か作って無いのかな?
Enumのことはおいといてもリフレクションは勉強しときなさい 乱用は良くないけど.NETのキモと言ってもいい非常に重要な機能だ
>>544 その質問の答えではないけど、Enumにメソッドをくっつけたような事がしたいってことなら、
対象のEnumをprivateなフィールドに持って、implicitに相互変換可能な
イミュータブルなクラスを作るのが一番簡単でわかりやすいと思う。
メソッドくっつけるだけなら拡張メソッド使えばいいだけ
リフレクションってそんなに頻繁に使う機会ある?? 開発ツールを作る時とかぐらいしかイメージわかない・・・ あとシリアライザみたいな「クラス」を弄る場合か。 皆様どんな時に使ってますん?
enumの継承、もっと手軽に出来たら嬉しいよねえ。 ValueObjectなクラスの数を結構減らせるのに。
C#5.0はEnumの継承が実装か・・・
リフレクションは試験の時とか、PHPみたいに名前でクラスインスタンスを作成したい時とか
あうあう、、、列挙型を継承したいだけなのにぃ・・・・ トップクラスのMyEnum.GetNames内でリフレクション使えばよいのん? 後は継承してオブジェクト追加するだけで汎用的に使える? GetFieldって子クラスのフィールドまで走査してくれるのかな? わけわかめ
DIフレームワークとかがあれば事足りることも
そもそも列挙型みたいにして何の意味があるの? 指定できる値が限られてるからこそ「列挙型」なんだよ? 派生クラスでどんな得体のしれない値が定義されるかわからないなら意味がないと思うんだけど?
子クラスのフィールドも、じゃなくて親クラスのフィールドも列挙する
>>561 パラメータを列挙型にしたい
数百あるパラメータが数十セット
各セットのパラメータ重複値は数百ある
だから継承して差分だけ追加して定義したい
個別に重複した列挙型を定義すると変更に弱い
こんな理由です
>>562 むむ?
ということは継承する度にGetNamesとかGetValuesとかを定義しないといけないのん?
ぬぬぬぬぬ・・・・
>>561 よく考えてみると継承関係が逆じゃないと成りたたん気もするな・・・
enum A { A1, A2, A3 }
enum B : A { B1, B2, B3 }
A a = B.B1; // これだと a は A として評価しようがない???
やりたいことって
enum 野菜 {根菜, 葉菜, 果菜};
enum 根菜 : 野菜 {ゴボウ, ニンジン, ダイコン}
enum 葉菜 : 野菜 {ホウレンソウ, コマツナ}
野菜 a = 根菜.ゴボウ // a == 野菜.根菜
野菜 b = 葉菜.ホウレンソウ // b == 野菜.葉菜
とかなのかね?
>>563 ってことは、部分的に定義出来ればいいってことか。
子クラスを親クラスに代入したりはしないのか・・・。
#include とか使えたらよかったのにね。
だったら
>>532 方式に値列挙はリフレクションでOKじゃないの?
ベースクラスにメソッドいれとけば
派生クラスでは追加のEnum値書くだけでいいし。
>>563 そんなに沢山あるんだったら,どうせメソッドを呼び出すときにその列挙体フィールドを直接引数に指定することはないだろ?
列挙型のソースを自動生成してしまうとか,
列挙型を使わずに文字列や数値にしておいて意味は外から後付けにするとか
そういうアプローチでいい気がする。
もし全ての値をhoge(A.A1)みたいな形で直接使うんだったら,一般論としては設計を見直すべき。
>>564 とりあえずこんな感じで列挙出来ればいいです…
enum A = {A1, A2, A3}
enum B : A {B1, B2, B3}
foreach B myEnum in B.GetEnums {
//Dictionary<B, string> params
string tmp;
if (params.TryGetValue(myEnum, tmp)){
//A1,A2,A3,B1,B2,B3をkeyとした値について何か処理する
}
}
>>566 もし上記のような動作をさせる場合
public MyEnum GetEnums()を継承するたびに追加定義するんですよね?
なんだか無駄なような気が・・・
>>567 文字列だとコンパイル時に不正な値かどうかわからにゃい
ほかにも色々問題が…
enum A {A1=0, A2=1, A3=2}
enum B {A1=A.A1, A2=A.A2, A3=A.A3, B1=4, B2=8}
みたいにするのも有りかなとおもったけど
これ書いた瞬間無いなと思いますた(´・ω・`)
GetType().GetFields() でいいからGetEnums()みたいなのはベースクラスだけあればおk
コード生成でもしちゃえば? T4 テンプレートとか結構使いやすいよ。
全部ひっくるめてEnumにして、マスクのバイト配列でも用意した方が良さそうな気もする。
T4とかだっせえよw あんなもん使えるか 素直にコード書いた方がマシだろ
>>569 ベースクラスでGetType("Base")とかやっちゃうの???
なんでGetType()にパラメータつけるん? typeof() とごっちゃになってない?
数百のenumとか意味あるのかなw
数はともかく、
>>563 を読んでも必要性が俺には腑に落ちない。
仮にそんな「互いに一部の名前が重複する値の集合」が複数必要だとしても、
素直に「コピペ継承」した方が分かりやすいんじゃないのかな。
なんでそこまで列挙型にこだわるのかわからない GetValuesとか使うならどうせコンパイル時チェックも効かないしディクショナリと同じだろ
>>569 具体的にはどうするの??????
いろいろやってみたけど良い方法が思いつかない
public class MyEnum {
private int value;
protected MyEnum(int value) { this.value = value; }
protected abstract Type GetMyEnumType();
public static List<MyEnum> GetEnums() {
List<MyEnum> list = new List<MyEnum>();
//Type t = this.GetType(); //静的メソッドだから出来ない
foreach (FieldInfo fi in t.GetFields()) {
if (fi.IsPublic) {
list.Add((MyEnum)Activator.CreateInstance(fi.GetType()));
}
}
return list;
}
}
public class MyEnumA : MyEnum {
protected MyEnumA(int value) : base(value) { }
public static readonly MyEnumA Foo = new MyEnumA(0);
public static readonly MyEnumA Bar = new MyEnumA(1);
}
だよな。this.GetType()できひんよねえ。
>>575 とある集合に追加すべき項目が出来た時の修正が困難
その集合を使ってる物全てにペースト、ペースト、ペースト・・・・
継承したEnumなら該当する集合に項目を追加するだけ
便利だよー
>>576 全然違うよー
文字列なんかで指定したら使う側からしたらインテリセンスきかないし
バグの温床になる可能性が…
そもそもその集合をベースと派生部分で分離出来るんじゃないのかね? 何をしようとしてるのかわかんないからなんとも言えないけど。
あー、GetEnums()はスタティックだったか。 Enum のつもりのものを new するのも変か。
Enum問題とはちょっと離れるけど、静的クラスで自分自身のクラスを取得する方法ってどうやるんだ・・・???
そんな巨大で多数の列挙型を直接普通のコードから使うのかよw さすがにそれは設計が酷すぎる
>>579 機械生成はダメなん?
どっちにしても public static readonly A1 = new A(); とか百も手打ちしたりはしないでしょ?
>>579 ちょっと怒らないから何を作ろうとしてるのかオジサンに教えてみなさい。
>>577 へんな抽象メソッドはいってるね
もう一つのパターンの残党です
それはこんな感じでしてみたんだけど同じく怒られた
public abstract class MyEnum {
private int value;
protected MyEnum(int value) { this.value = value; }
protected abstract Type GetMyEnumType();
public static List<MyEnum> GetEnums() {
List<MyEnum> list = new List<MyEnum>();
//Type t = GetMyEnumType(); //静的メソッドだから抽象化出来ない
foreach (FieldInfo fi in t.GetFields()) {
if (fi.IsPublic) {
list.Add((MyEnum)Activator.CreateInstance(fi.GetType()));
}
}
return list;
}
}
public class MyEnumA : MyEnum {
protected MyEnumA(int value) : base(value) { }
protected override Type GetMyEnumType(){
return typeof(MyEnumA); //親に子のTypeを通知してみるが…
};
public static readonly MyEnumA Foo = new MyEnumA(0);
public static readonly MyEnumA Bar = new MyEnumA(1);
}
>>582 typeof?
動的にそれが出来れば言う事なしなんだけど…
>>583 設計は関係ないw
このケースは文字列で指定するのが普通ですとか言われたら何も言えないけど…
>>584 機械生成???なんじゃらほい??
定義はわりと長くなっても平気だったりするから手打ちでも気にならなかったり…
>>585 とある機械のラッパークラス…
>>587 コードの機械生成。
機械のラッパークラスってことはなんらかの仕様をそのまんまEnumに投影してるってことなんだろし
それをテキストファイルに落しこんどくわけ。
で、それを読みこんで enum を書き出すプログラムを作っといてビルド時に自動的に実行されるようにしとく。
もちろん納品するときはそのプログラムとテキストファイルも一緒に入れるわけよ。
どうしても横一列に沢山の値を定義しなきゃいけないときとかよくやる手だよ。
結局・・・ ・ベースクラスに Type を引数に取る GetEnums() を作って A.GetEnums(B)とか B.GetEnums(B)とかする。 ・EnumUtilクラスとかのヘルパークラス作って GetEnums(Type x) を実装、EnumUtil.GetEnums(B)とかする。 ・サブクラスでも GetEnums() をコピペ実装する。 メソッドが改修されることはないからデメリットはコードが増えるぐらい。 ・コピペ。コンパイラになんぞたよってられっかい!! ・仕様見直し。ある意味前向きな対処だと思うけどなぁ。 ・機械生成。力技だけど発展させれば仕様書からそのままコード生成とか出来るからよさげじゃね? さあ選べ。
static にするとこんなんしかできなかった。 パラメータ付きの所で具体的な列挙をすればおk class hoge { static public Type GetEnums() { return GetEnums(typeof(hoge)); } static public Type GetEnums(Type t) { return t; } } class fuga: hoge { static public Type GetEnums() { return GetEnums(typeof(fuga)); } }
どう見てもEnumの機械生成でいいだろ。
ありがちなパターンだと表から生成
ロマンがない
ロマンなんかいりません。エロイ人にはそれがわからんのです。
>>582 log4net使ったstaticクラスのロガー取得部分でもググってみ
ガベージコレクタンがメモリ内をお掃除してくれてるおかげで きれいになってるよ。ポインタはメモリ内を汚す悪いやつだ。
>>598 誤爆か? ポインタの話は初心者スレで盛り上ってたはずだが
600 :
デフォルトの名無しさん :2009/11/22(日) 09:37:05
Graphics#DrawString() を使って縦書き描画をすると、 ローマ数字が90度回転して描画されてしまうのですが、 どうしたら良いでしょうか? [ソース] Graphics g = pictureBox1.CreateGraphics(); String drawString = "あいうえおTUV"; Font fnt = new Font("@MS ゴシック", 16, FontStyle.Bold); StringFormat sf = new StringFormat(); sf.FormatFlags = StringFormatFlags.DirectionVertical; g.DrawString(drawString, fnt, Brushes.Black, 0.0F, 0.0F, sf); fnt.Dispose(); g.Dispose();
マルチすんじゃねぇっっっ、そもそもマルチ元の48の回答も見てないだろお前。
まぁ48のやり方じゃできないんだけどな。 マルチは良くないな
「アイコンとマニフェスト」で指定したアイコンをNotifyIconでも使用したいのですが、 プロジェクトにアイコンを追加してビルドアクションを「埋め込まれたリソース」に変更、 追加したアイコンを「アイコンとマニフェスト」に指定するとビルド後のバイナリサイズが アイコン1個分多く増えてしまいます。 ※アイコン無しバイナリ50KBとして100KBのアイコンx2で250KBのバイナリが作成される 同じアイコンを使用しているためアイコンは1つだけ追加したいのです。 何か良い方法はないでしょうか? 「埋め込まれたリソース」にしないで「アイコンとマニフェスト」で指定したアイコンを プログラムから読めれば良いのですが・・・。
結局リソースとして格納されてる ただしWin32ネイティブのリソース なのでWin32APIのLoadIcon/LoadImage関数を使えばロードできる 問題は/win32iconだとリソース番号/リソース名が明示できないことだな 一応0x7F00になってるみたいだけど保証はできない EnumResourceNamesで列挙してみるのもいいけど一つしか埋め込まれない保証もないな 大丈夫だと思うけど 一番確実なのはrc.exe使ってリソースファイル作って設定することだが
CSVデータから、高速に多次元配列を作るにはどうしたらいいでしょうか? "000111","abc","123","あいうえお" "000112","def","3718","かきくけこさしすせそ" ・ ・ と並んだデータを [000111][abc][123][あいうえお] [000112][def3718][かきくけこさしすせそ] ・ ・ として配列にしたいんですが、データのサイズが4万行程度*複数ファイルあり、かなり時間がかかります。 しかも頻繁に参照しないといけないので、毎回読み出すわけにもいかず困ってます。
>>605 データ変換の論理が全く意味不明
なんで、片方は2つのフィールドを1つにしている?
そこはただのタイプミスでしょ常識的に考えてw
っていうか、
>>605 は結局何を聞きたいのかね。
これは俺の持論だけど、こういう文章推敲できない人は、
プログラミングの適性もえてして低い。
>>605 まずデータ中の"は、どうエスケープされてる?
""か?それとも\"?
という所から聞かないと分からん。
CSVなんか簡単、枯れ果ててライブラリとかあるんでしょ。
なんて思ってるとえらい目にあうのよ。
むしろXMLの方が簡単なんだよね。規格化されてるから。
それでも何故か量産されているvalidどころかwell-formedにもなってないxmlファイル
>>608 > まずデータ中の"は、どうエスケープされてる?
特に指定されていないければ、RFC4180に従って処理するのが普通だろ
エスケープの問題に関しては、 現状で既に動いてるのがあるんだから 自力でパースしてるかデータとして存在してないのではないかと。 そこは飛ばしてもいいと思う。 あと多次元配列にしたいといってるんだから {{"000111", "abc", "123", "あいうえお"}, {"000112", "def", "3718", "かきくけこさしすせそ"}} こういう意味じゃないかな?
まずは時間がかかってるのがパースなのかオブジェクト生成なのか切り分け
しかし、高速に読めるんだったら、2次元配列に入れる必要も無いな そしてどうせ読み込むなら配列よりDataTableやListの方が便利だな
>>612 パースしてる部分とオブジェクト生成部分を
それぞれループでぶん回せは分かるね。
データが定型的で、"とか改行とかを考える必要が無いならその処理を省けるし、
最初の列がただの数字の羅列("000111")と決まりきっているなら
行頭からの文字数で直接指定とかも考えられるw
汎用性はまるで無いけど、いちいちデリミタを検索よりは早いだろう。
全体の行数列数が決まってるならオブジェクト生成部分で早くできるかも。
>>607 他のみんなが(下手だなと思いながらも?)それなりに
(どうやって投げ返せばいいのか分からないけど)ボールを投げ返しているのに、
君だけボールとミットを地面に叩き付けて、お前は下手糞だ、となじってる様に見えるんだけど。
RFC4180に準拠となると、改行コードもデータ中に許可しなきゃならんが宜しいか?
remove
>605 具体的にフィールド何個のデータが合計何レコードあって、それに何秒かかってるから困る、 ぐらいの情報は出して貰わないと、君が遅いといってる時間が本当に遅いのかどうかも不明。 もちろん改善できるかどうかも不明。 つか、この程度の処理じゃ何一つ難しい内容は登場しないと思うんだけど。。。 何が解らないのかが解らないな。CSVの厳密なパースをしたい場合はちょっと面倒だけど。 多次元配列にする理由もわからんし。 頻繁にアクセスするという話から察して、本当に必要なのはディクショナリじゃ ないのかとエスパーする。 あと、もし業務でやってるんだとしたら、依頼元なり上司なりに「スキル不足でできません」と ちゃんと言ってね。力技でいい加減なものを作られるぐらいなら「僕にはできません」と 言って貰った方が、依頼元から見れば1000倍マシだから。
質問主は逃げたかな? もしかしたら、使うCSVを毎回読み込むか、最初に使わないものも含めて全部読み込んでおくか の2種類しか思いつかなかったから全部読み込むのを速くしたかった、と言うことかもしれんね。
>>617 そういう話題はマ板でやれば?
ボールを返すにしてもデッドボールを狙ってるでしょ。
君の身に着けた知識は相手を傷つけるのが目的なの?
バカは相手にすんな
レベルの低い質問には食いつきがいいなw
>>619 >そういう話題はマ板でやれば
最後の3行に関しては仰るとおりだ、悪いね。
「できます」の回答の後でとんでもないコードを上げてくるマが
よく居て、質問者もそういう手合いに見えたから、つい。
自分にできない事を請け負うのは悪事だということを、知識のついでに
理解して欲しかっただけ。おしまいにするよ。
>>622 いあいあ、こちらこそどうも。
トゲのついたボールをあなたに投げてしまったと思ってますので。
きも
虎視眈々と初心者がくるのを待ってるんだろうな。 そして初心者が(上級者にとってくだらない)質問をしたら 待ってましたとばかりにバカにする。 プログラマなんて他人をバカにするのが大好きなやつばっかだよ。
プログラマに限らず質問スレはだいたいそんな感じだな
>625 そういう悪意満々の目線で状況を見てるお前が一番ヒネてるよ。 過去にスキル不足の指摘でもされて逆恨みしてんの?
>>625 こういう奴もなんだかね。
俺個人の見解を言えば、「××の質問スレ」なんだから××に関する知識や技能の
低さを責めるのか酷だとは思うが、
>>605 のように質問の意図が読み取れない文章を
書く人間(こういう人は、要は横着なんだと思うが)は責められて当然だろう。
>>630 まぁ、とりあえずそんな真っ赤にならずにない知恵絞って解決策探してやろうぜ
>631 そのためにも最低限の情報を出せという流れな訳だが、本人まだ居るのか?
csv関係のはそれはもう面白いぐらい車輪の再開発されてる部分だしなぁ。 なんで標準で用意しないんだろう?標準仕様がないわけでもないのに。
たかが4万行くらいでそんなに遅くなるかなあ
2次元配列をどうやって作ってるかにもよるな。 まあ2次元配列なんか使うなってのが正直なところだが。
>>633 TextFieldParserがある Microsoft.VisualBasic.dllにだけど
ADOでCSV読めるよね
>>636 超絶に利用し辛い名前空間だなそれwwwwww
String の split じゃ非力?
うん非力 テキストの解析って意外に簡単なんだけど慣れが必要なんだよな
つか.NETで標準サポートされてるフォーマットテキストの形式ってXMLだけだからな CSVとかサポートしだしたらキリがない
>>638 便利なのに、VisualBasicという名前空間が付いているせいで利用され難い不思議なクラス。
645 :
603 :2009/11/22(日) 20:10:31
>>604 遅くなりましたが大変参考になりました。
LoadImageでリソースを読み込もうとしましたが、
MAKEINTRESOURCEマクロで躓いて成功していません。
リソース番号もわからないので今の自分のスキルでは
出来ないと判断しました。
結局、NotifyIcon用のアイコンを16x16のみにして
サイズを減らすことで無理矢理解決することにしました。
ありがとうございました。
>>640 字句解析のステートマシン作りだもんね。
一度作り方覚えちゃえばなんちゅうことないんだけど。
ファイナライザの中で他のオブジェクトにアクセスすると,そのオブジェクトが今回のGCの対象に 入っている場合は復活するらしいけど,この復活したオブジェクトって 既にファイナライザが呼び出されている可能性があるというだけで他は変化していないと考えていいの?
TextFieldParserってRFC準拠のCSV読み込めるんだっけ?
>>636 TextFieldParserっていろいろ罠があって使い物にならないと思うが、
それを薦めるならせめて一言あってもいいんじゃなかろうか
罠があるの?
ただいま罠を検索中です しばらくお待ち下さい…
「TextFieldParser 罠」だと見つからなかった・・・
ただいま英語で検索中です。 しばらくお待ち下さい… words is 「TextFieldParser wana」「TextFieldParser trappu」 etc...
trappu ってなんだ
これだけ居ながら茶化すだけで誰もしらんのか
自分で試せ
レス番,メール,本文
"648","sage","TextFieldParserってRFC準拠のCSV読み込めるんだっけ?"
"649","sage","RFC読みゃわかるけど別にきっちり定義してるわけじゃないんだよな。
最大公約数的な仕様を書いておきますよーぐらい。
http://www.ietf.org/rfc/rfc4180.txt で、ちゃんとTextFieldParserはレコード中の改行も処理してくれるみたいよ。"
"650","sage","
>>636 TextFieldParserっていろいろ罠があって使い物にならないと思うが、
それを薦めるならせめて一言あってもいいんじゃなかろうか"
1up 1up 罠に落ちそう
知らねえから聞いてるのに「茶化すだけで誰もしらんのか自分で試せ 」って… なんか会話が成立しない人だな。 アスペルガーって言うんだっけこういうの もちろん説明するのが嫌なら嫌でいいと思うんだが、だったらこんなスレに わざわざ居なくていいだろうによ。
RFCとかいうtorappuを見たいのですが異国語がわかりますん 英語は得意なのに中々英語で書かれてる文章ってないんですよね… かなぴぃ
真面目に罠ってなんのことなんだ?
""内の改行コードがエスケープされないって事じゃない? なんにしろ、もったいぶるような事じゃないな。 異常性格な人としか思えん。
>>659 グダグダ文句言ってないで657のデータでやってみりゃいいじゃん
5,6行のコードも書けないの?
普段、質問者が1から10まで全部聞こうとすると叩くくせに 自分にはすいぶん甘いんだなw
それがプログラマーの生態ってやつよ
プログラマーの性格の悪さは異常
それが○○○○の生態ってやつよ
マ板に行け馬鹿共
プログラマの人としての浅さは異常
自己紹介するスレはここですか?
レス乞食・・・しかも最低ランクの雑魚
RFCの通りには読めない場合があるって話なのか? そもそもどこにもRFC準拠なんて書いてないし、 仕様に書いてある通りに動くんだろ? まあ強いて言うなら、パフォーマンスはあまりよくなかったはず。
>>674 まだ言ってんのかよw
口で説明してもらわないとわからないんでちゅか?
どうして自分で動作確認しないでちゅか〜?
誰と戦っているんだろう・・・
大人が幼児相手に幼児語を使うのは日本だけらしいね
もちもちパパでちゅよー
違うんなら違うって書けよ。 どんな罠で使いもんにならないんだよ。 仕様通りに動かないとか仕様が使いものにならないとか パフォーマンスが使いものにならないほど悪いなら分かるが。 はっきり言われなきゃ分かんないんだよ。
ほのめかしってたちが悪いよね
>>679 質問する態度じゃねえなw
試した結果や、自分の考えを示した上で
質問者に相応しい文体で再挑戦しようね
スレッドプールにプロセッサ数を超えるアイテムを突っ込んだときって プロセッサがアイドル状態じゃなくても、突っ込んだ分スレッドは動き出す? それともアイドル状態になるまでは動き出さないとか あるいは何らかの調整が入るとか その辺どうなってるのか知らない? 最小スレッド数まではすぐに動き出すような気もしないでもないが。 あ、動き出すってのは、スレッドがスケジュール対象になるって意味ね。
質問w
プリエンプティブな形でスライスされるんじゃね?
ヒント: とかやる奴と一緒で、自信がないんでしょw いや自信がないのならないでいいと思うんだが、それならそれで「自信はないが・・・」 と前置きして説明する程度のコミュニケーション能力が欠如していると言った方が 適切かもしれない。
>>685 おまえ教えて欲しくてしかたないんだろw
それなら相応の態度を取れ、そうじゃないならスルーしろよ
>>684 それは、投入された分動き出すって意味だよね?
※まだ作成されてないスレッドが作成されるまでのタイムラグは別として
となると、重いタスクと軽いタスクの同時処理で、重いタスクを優先させたいとき、
重いタスクを先に投入するって方法だとあまり上手くいかないのかな。
何がしたいかって言うと、例えばフルパワーで2秒かかるタスクが一つと、
1秒かかるタスクが2つあるとき、
2コア環境でスループットを最大化するには、
2秒かかるタスクと1秒のタスク一つをまず処理開始して、
1秒のタスクが終わり次第残りの1秒のタスクを処理開始する必要がある。
もしプロセッサがアイドルになるまでスレッドがスケジュールされないなら、
重いタスクから順にプールに突っ込むだけで、それなりに上手く動く事になる。
全部スケジュールされてしまうなら、そういう単純な方法ではすまなくなる。
っつか面倒過ぎるから
.NET4のタスクパラレル機能を待つのが賢明か…
教えてほしい≠まともなこと言ってるのか確認したい
>>685 ずばり教えてもらわないとわからないほど無能なら、質問時にそう書いとけって話
たぶんいちばーん最初の質問者と関係無いところで戦ってるよね、この人ら。
>>687 TPL、.NET 3.5 でも使えるβもあるっちゃあるよ。
まあそうなんだけどね、なんせβだし、 今のスレッドプールで上手く動くなら、 できれば余計なものは持ち込みたくないからね〜
確か空行の扱いと、後は空白文字のトリムが柔軟性に欠けるってのはあったな。 他には?こんなもん?
スレッドって最初に動いたCPUにぶら下がりっぱなし? んな訳ないと思うんだが。
それなら空行のあるデータには使えないってはっきり言えばいい話だと思うが、 いろいろってことは他にも罠があるのか? なんでもったいぶるのかよう分からん。
>>694 んな訳ないが、お前は一体唐突に何を言ってるんだ?
>>687 の前提通りにいくわけねーじゃんって言いたいんじゃないかなぁ。
2秒の処理が片側プロセッサで処理し続けるわけないみたいな。
どっちにしてもよくわかんない。
どこに2秒の処理が片側プロセッサだけで動くような前提が書かれてるのか教えてもらいたい。
読解力ねーのな・・・
>>700 誰に言ってるのかわかんねーよ
>>687 は、1秒のタスクが一つずつスケジュール開始されるようにすれば、
2秒のタスクはほぼ全力で動き続けることができるってことを言ってるだけ。
一つのプロセッサだけとかそういうことではない。
スケジュール対象のスレッドが2つなら、OSがうまくプロセッサを活用してくれる。
もちろん一つのプロセッサになるとは限らんが、割とそうなった気がする。
効率よく動かそうとすると自然にそうなるからだと思うが。
アンカー付けなければ簡単に手の平返しが出来て便利だお
まともにアクティブな(スケジュール対象の)スレッド数がプロセッサ数以下なら。 そのスレッドはほぼ全力で動けるようにOSがうまくスケジューリングしてくれたはずだよ。 まあそうでなきゃOSとしての出来が悪いってことになるからあたり前だとは思うが。
for文ってwhile文とほとんどかわらないね。 for文いらないね。
forでwhileと同等の事をやるのは簡単だけど、逆はめんどくさいだろw
だよな。whileいらないじゃん!ならまだしも。
命名規則でたまーにプライベートメソッドにCamel形式使ってる人いるけどなんでだろ?
命名規則なんて現場やプロジェクトで色々あるがな 理由もそれぞれ
プライベート変数はCamel式ってのを誤解釈したんじゃない? って出典調べようとしたんだけどプライベートフィールドはCamel使ってくれってのは MSDNのどこに書いてあったっけ・・・
ソースの書き方までMSに指図される覚えはない。
しかし、フレームワークにおけるクラスやメソッドの命名規則を無視して 自前のコードのみ勝手な命名規則を採用するのも考え物だ。 単純に美しくない。
>>710 その通り
書きやすい読みやすいコードが一番
でも多くがMSに準拠する書き方をしているという現実
俺的に最初慣れないうちは読みにくかったけど慣れれば見やすかった
713 :
デフォルトの名無しさん :2009/11/24(火) 10:39:17
714 :
623 :2009/11/24(火) 11:40:54
見たことないエラーだなぁ… ちなみにVisibleの所コメントアウトして実行したらどうなるんだろ・・・
716 :
623 :2009/11/24(火) 13:04:15
717 :
623 :2009/11/24(火) 13:21:23
スタート → microsoft office ツール → Microsoft office アプリケーションの回復 を実行すると、ダイアログ内に、「microsoft office word 実行中」っていう項目が生成されて、表示されています。 この項目が、上記ワードオートメーションプログラム(microsoft提供)を実行するたびに1つずつ増えていきます。 つまり、いまは、上記ワードオートメーションプログラムを3回実行したので (もちろん、何れもoWord.visible=true;でつまづきましたが・・・) アプリケーションの回復っていうダイアログ中のリストボックスには、 「microsoft office word 実行中」っていう項目が3つも生成されています。
>>712 ぶっちゃけ無茶な書き方しろっていってるわけじゃないしな。
ガイドラインがあるならプロジェクトや客毎に毎回書き方変えさせられずに済む。
Cの時はほんと場所によって違いが激しすぎた。
MSはなんでプロパティのバッキングストアの命名規則をちゃんと決めなかったのかが謎だ。 アンダーバー付けたりプロパティのCamel形式にしてみたりと人それぞれになってるよな。
プロパティのバッキングストアってなに?
>>714 >windowsXPsp3
>word 2003
の環境で、参照の追加はMicrosoft Word 1.1 Object Library
それでサンプルとの相異は
using Word = Microsoft.Office.Interop.Word;
を
using Microsoft.Office.Core;
に変更した。
これで動いてるよ。
PIA絡みか・・・?
>>720 private int age; // ← これ
public int Age { get { return age; } set { age = value; } };
バッキングフィールドとも呼ばれることがある。
MSが公式にガイドラインを定めてるのはアセンブリの外から見えるものだけ あくまでクラスライブラリのためのガイドラインだからな
>>723 トン
>>724 m_ がついたコードはMSDNにもうじゃうじゃあるよ
アンダースコアで始まるのもあるし
何も付いてないのもあれば、thisで参照してるのもある
727 :
623 :2009/11/24(火) 14:15:36
>>721 でも、それをやると、
//Start Word and create a new document.
Word._Application oWord;
Word._Document oDoc;
oWord = new Word.Application();
で、Wordってなんですか?っていうエラーメッセージを大量に
受けていsまいます・・・。
728 :
623 :2009/11/24(火) 14:17:52
エラー 1 COM 参照 "VBIDE" の依存関係を決定できませんでした。タイプ ライブラリ/DLL の読み込みエラーです。 (HRESULT からの例外: 0x80029C4A (TYPE_E_CANTLOADLIBRARY)) WindowsFormsApplication1
>>714 だと、デバグ前にこんなエラーが出てしまいます・・。
これをきっかけとして何か糸口を見つけたいです・・・。
>>727 これを
using Word = Microsoft.Office.Interop.Word;
こうしてない?
using Word = Microsoft.Office.Core;
正解はこっち。
using Microsoft.Office.Core;
730 :
623 :2009/11/24(火) 15:22:16
>>729 正解の方です!
//using Word = Microsoft.Office.Interop.Word;
です。
>>730 using以前に参照の設定間違っていない?
XNAだかXMAだか使ってみたけど 明らかに普通にC#でポトペタでゲーム作るほうがいいね。 ラベル貼って Label1.Textで簡単に文字書いたり 誰に話しかけますか?って書いてボタン三つ配置して 「Aさん」「Bさん」「Cさん」 ってやって入力するほうも楽。 XNAってなんなの。Hello Workって表示するだけですらわけわからんし。
>>732 落ち着いてDirectX・XNAの概要だけでも読んでみては?
そのラベルを動かしたりするとWindowsFormではちらついたり色々するんだ
ひとまずそのレベルならWindowsFormでもいいと思うけど
動くものを作ろうと思ったり、キーパッドの入力を拾うとかしてみたくなった時に判ると思う
あと明らかにXBOXのソフトが作れる作れないってのは明確な差かな?
734 :
623 :2009/11/24(火) 16:34:51
>>731 http://kissho.xii.jp/1/src/1jyou97502.gif ちゃんと参照していると思います。
というか、以前、WORD2003とC#をPIAでやるのを作っていたのですが、
そのプログラム、ずっと調子よかったのですが、急に動かなくなってしまったのです。
バグるところは、WORD文書を開くとこです。
try catchでエラーを吐くようにしているのですが、
ダイアログで、
「なんらかの原因でワード文書を開けませんでした。ごめんなさい。」っていうメッセージが
出てきてしまいます。
あぁなつかしいな、そういやそんなことも出力するようにしていたっけな。
だったのですが、それは前の職場での話でして、
今の職場にうつってきた当初も(少なくとも先週末まで)問題なく
利用できていました。
一つ気になっているのは、先週木曜日の時点では、
わたしが利用しているPCでは、をrd2007とをrd2003が共存している状態でした。
をrd2007は使わないので、その木曜日の時点でアンインストしました。
金曜は、もしかしたら、をrd2003を使用しなかったと思います。
なので、をrd2007をアンインストした時点で何らかの変化があったと
いうことしか考えられません。小出しにしてしまい申し訳ございません。
どうしたらよろしいでしょうか。
735 :
623 :2009/11/24(火) 16:46:26
とりあえずいま、木曜日に消したをrd2007を入れ直しております。 結果報告します。
736 :
623 :2009/11/24(火) 16:56:18
えっと、結果報告です。 とりあえず、わたしが4年前にVC#2005エクスプレスで作ったmysoft(PIA利用)は (改めてインストールしたをrd2007ではなく、をrd2003が起動するような設定であっても)正常に動くようになりました。 Office2007をアンインストしたときに、まさかそれまで消すのかよ、といったような ファイル削除があったということでしょうね・・・。 ここにいらっしゃる専門家の先生たちのご意見はいかがですか?
737 :
623 :2009/11/24(火) 17:01:01
microsoftのHPに掲載されているワードオートメーションのサンプルプログラム(
>>714 )も
無事、(をrd2003がデバッグ時に起動するように、予めをrd2003をスタートメニューからたどっていって起動しておいた)
問題なく実行されるようになりました。
ということで、
再現方法(たぶん);
をrd2003とをrd2007を共存状態にインストールしておく。
(このとき、2007を先に、2003を後にインストールする。)
をrd2007を削除する。
>>714 を実行する。
解決方法:
をrd2007を入れ直す。
うぅ・・・なんか切ないです・・思いっきり対処療法でかこわるいです・。
日本人なのか疑いたくなる文章だな
739 :
623 :2009/11/24(火) 17:41:47
>>732 XNAはゲーム作ったことある人じゃないとよくわかんないと思うよ。
まあターン制のゲームとかトランプみたいなのだったらWPFで作った方が楽かもね。
ゲームには何をもっても代えられない"パフォーマンス"という神様がいるんだ
デザイナで、一時的にそのコントロールを非表示にしたいのですが 可能ですか?
というか開発環境で複数のOFFICを入れてて動かないとか笑える 基本動くだろうけどマイクロソフトは推奨しないって書いてあるだろうに・・・ きちんと説明書読まずにやるからだろ プログラムもその勢いで作ってたらいつか大失敗すると思うぞ
うるせーバカ
メソッドの引数に中小クラスやインターフェースを設定することで 特定の行動を実装できるわけか。 class 自動販売機{ public ジュース put(Money money){ return 何かのジュース } } class ジュース{ } class コーラ:ジュース class ファンタ:ジュース class Money{ } こんな感じ?日常的に経験してる自動販売機にお金を入れてジュースを取り出す という文章をそのまま素直にクラス化できるわけか。これがオブジェクト思考の力・・・すごいな
その構造だと商品一つしか扱わない自販機になるぞw 客に出す商品を選ばせろw
名前空間って含まれてるようなのが多いけど たとえば SystemとSystem.DrawingとSystem.Drawing.Design名前空間とか これってSystem名前空間の中にDrawing名前空間が入っててさらにその中にDesign名前空間があるってこと?
んなわけない
>>745 その例だと抽象化されているのは引数でなく戻り値なわけだが
>>745 オブジェクト指向の話題で荒れたスレがあったらコレ投下させてもらうわww
>>747 そう解釈してもいいけど、
using System; ってやった状態で
new Drawing.Hogehoge() ってやってもエラーがでる。
>>747 実際にはコンパイル後のアセンブリを見るとSystem名前空間とSystem.Drawing名前空間は全く別個に存在する。
でもC#ではNamespaceA.NamespaceBの中ではNamespaceAの中にあるクラスにクラス名だけでアクセスできる。
なので
>>751 の動作は単に名前が被る可能性を減らすためだと思われる。
だから,C#に限って言えばSystem名前空間にDrawing名前空間が含まれていると考えるのが正しいんだと思う。
CLR的には名前空間というものが存在してる訳じゃなくて、 型には長い名前がつけられるというだけ。 まあ概念としては名前空間があると言えるけども。
CLRにロードされたときの表現は知らんが 少なくともIL上は名前空間は存在する
755 :
デフォルトの名無しさん :2009/11/25(水) 21:37:29
>>732 最近は「Hello Work」なのか。不景気だな。
>>732 ,755
気付かんかったww
Hello Work 地味に時代を反映してていいな。
double hoge = 1234.5678; String.Format("hoge = {0}", hoge); みたいな感じのを +1234.5678 -1234.5678 とプラスの符号も表示させるにはどうすればいいの?
カスタム数値書式指定文字列 でセクション区切り記号を使う
759 :
デフォルトの名無しさん :2009/11/26(木) 07:48:14
VB.NETスレに書き込んで指摘をもらいまして、こちらで質問させてください。 WindowsサービスにIPCサーバーさせてるんですが、IPCクライアントから接続すると、 「IPCポートに接続できません。アクセスが拒否されました。」と出ます。 TCPの時は問題なかったのですが、IPCだとACL設定がいるようで、その方法がわか りません。 誰にでもアクセス許可させたいんですが、どのようにACL設定したらよいのでしょうか。 下記のようにしてダメでした。 SecurityIdentifier allUserSid = new SecurityIdentifier(WellKnownSidType.WorldSid, null); DiscretionaryAcl dacl = new DiscretionaryAcl(false, false, 1); dacl.AddAccess(AccessControlType.Allow, allUserSid, -1, InheritanceFlags.None, PropagationFlags.None); CommonSecurityDescriptor securityDescriptor = new CommonSecurityDescriptor( false, false, ControlFlags.GroupDefaulted | ControlFlags.OwnerDefaulted | ControlFlags.DiscretionaryAclPresent, null, null, null, dacl); App.configに何か書くサイトもありましたが、Expressで空のプロジェクトから自前でW indowsサービスにしたので、App.configがなく、自前で下記を追加したら「'application' のスキーマ情報が見つかりませんでした。」と怒られました。 <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.runtime.remoting> <application> <service> <wellknown mode="SingleCall" type="Server.MyRemoteObject, Server" objectUri="MyRemoteObject.rem" /> </service> <channels> <channel ref="ipc" portName="MyIpcChannel" authorizedGroup="Users"/> </channels> </application> </system.runtime.remoting> </configuration> どうしたらよいのか教えてください...
>>757 String.Formatでは無理
hoge.ToStringつかえ
>>760 String.FormatはToStringを呼び出してるだけなんだが
DoDragDrop()の返り値について質問させてください。 コントロールAからBへのドラッグ&ドロップが目的で、 以下のように実装しました。 コントロールAで、 ・DoDragDrop(xxxx, DragDropEffects.All)を実行 …(1) コントロールBの、 ・DragOverイベントでDragDropEffectsをDragDropEffects.Moveに変更 ・DragDropイベントで処理を行う …(2) (2)の処理内容によって、(1)の返り値が変化してしまいます。 ・処理を行わない → 返り値:DragDropEffects.Move ・処理を行う → 返り値:DragDropEffects.All 第2引数に指定した「DragDropEffects.All」が返されることが あるのですが、そうなる条件がわかりません。 DoDragDropの返り値が変更されている箇所やタイミングを特定する 方法はないでしょうか?
+−表示用のプレースホルダはなかったかな〜 とりあえずこれで {0:+#0.0000;-#0.0000}
>>759 >「'application' のスキーマ情報が見つかりませんでした。」
は無視してよい。
>>762 最後に設定したDragEventArgs.Effectの値が返るだけのはずだが
処理って何よ
> DoDragDropの返り値が変更されている箇所やタイミングを特定する
> 方法はないでしょうか?
ないな
766 :
762 :2009/11/26(木) 17:35:48
大変申し訳ありません。私の実装がダメダメでした。
>>762 の質問は取り消させてください。
>>765 さんに言われて処理を見直したところ、
Dropのイベントハンドラの関数内で、例外が発生していました。
(2)の処理が最後まで実行されてなかった為に762の現象に
なってしまっていました。
お時間とらせてしまいすいません。
hoge
static な Abs関数を作成して使えよwwwww retrun math.abs みたいに記述して お前のハイなセンスにジャストなミートすると思うんだよ
藪からスティック
次のようなタイプ付き関数で、座標[nx,ny]の時だけ1にするというシンプルな関数を考えると 1を代入する部分で、int型を型T1に暗黙変換できませんとでます。 これはどうしたら解消できるのでしょうか? public void setInitialValue<T1>(int nx, int ny, T1[] pict ) { int j = 0; for (int jy = 0; jy < ny; jy++) { for (int jx = 0; jx < nx; jx++) { if( jx == nx && jy == ny ) img[j++] = 1; } } }
>>771 そりゃT1にintを代入できるなんてそのコードからじゃまったく伝わらないから
Func<int, T1>な第4引数でも用意すれば?
>>772 /target:libraryへのリンクを踏んでみるんだ
774 :
771 :2009/11/28(土) 12:40:04
>>773 そこを何か技があるのかなーってオモテ。
例えば
img[j++] = (T1)1;
みたいなことが出来れば簡単じゃないか。
じゃないかとか言われても知らんがな
>>771 ・img[j++]ってどこから沸いて出てきたの?
・何を目的にGenericを導入したのか説明して。
T1の具体的な型はこの関数の使い手が指定するワケだけど、例えば
setInitialValue<DateTime>として指定した場合、(pictがimgのタイポだと
仮定して)imgの型はDateTime[]になる。つまり「img[n]に1を代入する」という
考えそのものが破綻する。
何でも入る箱が欲しいならobject[]を使うべきだし、フラグを立てるのが
目的なら別の手段を考えるべき。
777 :
771 :2009/11/28(土) 12:53:21
>>776 imgはpictの間違いでした。
pictは使い手によってintであったり、float、doubleでもある。
つまり数値限定である。
であるといわれてもコンパイラさんは知らんこと
779 :
771 :2009/11/28(土) 12:56:59
そこをなんとか技を使ってお見逃しを(´・ω・`)
ジェネリックでは無理。object[]を使う必要がある。 そして普通はそんなことはしない。 共用体(構造体)を作って演算子オーバーロードという手もあるけど君にはまだ難しいと思う。
>>777 public void setInitialValue<T1>(int nx, int ny, T1[] pict, T1 one)
dynamic one = 1; img[j++] = (T1)one;
>777 無理。 Genericの仕様上T1を「何らかの数値」に限定する手段が無い。 そして、型が未定の変数に対して1を設定する手段も無い。 [対策案] ・この関数でGenericを使うのは止めて、素直にdoubleやdecimalで組む。 ・>781 ・>782(未来の姿)
img[j++] = (T1)Convert.ChangeType(1, typeof(T1));
お、>784いいですね。 ただ、>782もそうだけど、T1に数値以外のデータ型も指定できてしまい、 その際は基本的に実行時例外が発生してしまうので設計を見直した方が 良いとは思う。
jxもjyも、nxとnyに到達しないんじゃないの?
ほんとだw
where T : Numeric みたいなのが出来たらいいのにね。 前にここか初心者スレで出てた加減算が出来ねーってのでも思ったけど。
それにはまず、全ての数値型がNumericを継承したオブジェクトでなきゃならんのだけどな
Int32 とかが IComparable 実装してるように INumeric みたいなのも実装してくれてりゃいいだけじゃん?
数値同士の演算結果がどうなるかは言語仕様によって違うから 実行時に全てを解決するジェネリックでは無理だ Int32などが演算子オーバーロードを持たないのもそれが理由
ちなみにdynamicはどうかというと、たとえば 「floatとintの掛け算はこういう動作、足し算はこう、floatはdoubleに変換可能・・・」 のような実行時のルールがMicrosoft.CSharp.dllで定義されてる。 同様にVBならVB、PythonならPythonのルールもあって、それぞれの言語仕様に合った動作をするようになってる。
いや統一しろよ
dynamicは本気で気持ちわるい仕様だと思う・・・
DLRとかCOMとのinterop目当てだと思えば、割と悪くない文法だけどもね。
そのうち何でもかんでもdynamicにするような奴も増えるにちがいない
それ俺だ
dynamicとvarで充分じゃない? いや真面目な話。
>>796 それはないんじゃないかな。
C# はインテリセンス前提なことを考えると、補完候補出てこない dynamic は使いにくいだけ。
>>798 普通の用途ではね。
だから、DLR との連携用、あるいは、JSON とか XML とかの読み書き用。
まあまともにコーディングしてたら 引数を dynamic にするなんてことはやらないだろうしなぁ。
したとしてもなぁ・・・・ 余りに自由すぎる動きは逆に後でわかりづらくなることもある気がするし・・・ 改修とかのときに結局何が起きるかわからなくて怖い代物は回避したくなるしさ
ShDocVw で本来は IHTMLDocument とかのオブジェクトが .NET 4.0 の tlbimp だと object から dynamic になっていたのは感動した
dynamic使ったとしてもだ、どのみち期待するメソッドがなかった場合の異常系の処理 かかなきゃいけなくなるから長いスパンでの使用はむずかしいんじゃね? XMLの要素アクセスが楽になるやつは結構いいと思ったけど。
>>802 インテリセンスが欲しいからさっさとキャストすると思うんだがな……
>>804 mshtml の dll がでかすぎるから…
と思ったが .NET 4.0 だとラッパライブラリで使っているクラスとメンバだけを
exe に埋め込んでくれちゃうんだよね
.NET 4.0 だと IWebBrowser2 ie = new InternetExplorerClass(); ってコードがコンパイルできなくて IWebBrowser2 ie = new IWebBrowser2(); のように interface を new するとコンパイルできる。 Reflector で見てみると Activator.CreateInstance で InternetExplorerClass のインスタンスを作るコードに 置き換わっているみたいだけど、 C# の言語的に interface を new するのってOKなのかな?
なんじゃそりゃ・・・
前々からCoClass属性の付いたinterfaceに対してはinterfaceをnewできたよ?
言語的にどうよって話じゃない?
RCWの仕様だな
少なくともECMAのC#言語仕様には記述されてない動作だな MSの独自拡張というなら確かにそうだけどどうせMSが仕様だろ
普通のインターフェースでNew書いてフックする方法はないものか?
csc.exeの代替を作ればいい
配列から派生するってできませんか?
おっとスレ間違えた あっちで聞きます
C#でバイナリなどのファイルをシーケンシャルに読み出しながら何らかの処理を行う場合、 かつ解析速度はディスクからの読み取りよりは速いがそれほど余裕はない場合、 出来るだけ最速で処理するにはどんな風にするのがいい?
普通に読みとって解析すりゃいいんじゃないの? 読みとりをバッファリングするってのが常套手段ではあるけど。
スレッドだな
マルチスレッドだな
例えばそのバッファサイズをどの程度にするかとか、 読み取りと解析を別スレッドにするべきかそれは意味がないかとか、 結局OSの先読みスレッドとの連携になるので、 その辺との絡みでどんなやり方が最も効率よく処理できるのか。 下手をするとディスク読み取りに間が出来てパフォーマンスが大幅に落ちてしまうから。
さらにマルチコアとそうでない場合でアプローチは全く変わるのか。
俺ならパフォーマンスなど気にしない 動けばよい
実際に問題になるほど遅かったらどうするの? まあそうなってから考えるのがパフォーマンスの基本なんだけどな
メソッドの先頭で変数宣言するのがカッコいいとか思ってた時期が俺にもありました
ぶっちゃけプロトタイプつくって測定してみるのがはやいんじゃないのかねぇ 解析処理と読み込み処理の中身によって変るだろうし それだけの情報じゃ一般論の展開も難しい気がする
ファイル処理はAPIのオーバーヘッドが大きいから パフォーマンス重視なら自前で巨大なバッファを取って 読み書きの回数を減らすのがセオリーだってばっちゃが
それがそもそも誤解だよ いやもちろん完全に間違いではないんだけどな
>>817 スループット重視なら妙な工夫はせずにベタにやるのが一番。
スレッドとか書いてる奴の意見は無視していいと思う。
DataSet 作って DataTable 作って SqlDataAdapter 作って SqlCommandBuilder 作って SqlDataAdapter の Fill でデータ読み込んで DataGridView の DataSource に DataTable 突っ込んで 修正確定するとき SqlDataAdapter の Update 呼んで終わり。 …ん?DataSet 要るか?
832 :
デフォルトの名無しさん :2009/11/30(月) 21:08:05
Fillで読み込む先がDataSetでは?
>>831 >>832 回答ありがとうございます
>DataSet作ってDataTable作って
>SqlDataAdapter作ってSqlCommandBuilder作って
>SqlDataAdapterのFillでデータ読み込んで
>DataGridViewのDataSourceにDataTable突っ込んで
>修正確定するときSqlDataAdapterのUpdate呼んで終わり。
上記、大変参考になりました
>Fillで読み込む先がDataSetでは?
DBManagerからDataSetを受け取り、Tableに格納してDataGridViewのDataSourceに格納しています
あと、修正したレコード数をどうやって算出すればいいでしょうか?
元のDBと修正後のDBでなんらかの比較処理か何か必要とは思うのですが・・・
メッセージボックスで
追加 2レコード
削除 1レコード
修正 2レコード
計 5レコード
のようなメッセージを出したいのですが
大方のケースではDataTableにFillで事足りるんだよなぁ。 正直、DataSetの存在意義がよくわからん。 ADO.NETやデータバインド周りの仕様を無駄に汚してるだけのような気がしてならない。
835 :
デフォルトの名無しさん :2009/11/30(月) 22:00:20
プログラミング初心者の学生です。質問させてください。 開発環境はC#(3.5)+VS2008です。 アルバイトでPowerPointオートメーション(?)を用いる、 ClickOnceでIEから呼べるWindowsフォームアプリケーションを作っています。 PowerPointオートメーション(?)を使うために外部参照として Microsoft PowerPoint [Version] Object Libraryを設定すれば 良いというのは理解できたのですが、この[Version]の部分が、 ターゲットとなるクライアントPCにインストールされている PowerPointのバージョンごとに異なっています。 (具体的にはXP,2003,2007の3バージョンを考慮する必要があります) Office 2007 Professionalがインストールされている開発環境で [Version]=12.0として参照を追加してビルド・発行したアセンブリ(?)では、 下位のバージョンがインストールされている環境で実行することができず、 要求を満たすことができません。 そのため、実行時にターゲットにインストールされているPowerPointの バージョンを取得し、動的に参照を追加するような設計にはできないか、と 考えています。 以上のような要求は.NETアプリケーションでは作成可能でしょうか。 よろしくお願いたします。 (メンテナンス不能なActive Xコントロールの置き換えです。助けてください)
できません。VB で CreateObject しましょう。
>>836 VBでできてC#にできない事は原則無い。
遅延バインディングはちょっと面倒臭いけどな。
リフレクションでレイトバインドするくらいなら、C# 4.0 を待つか、VB を使うよ。俺は。
リフレクションがどんなに面倒でもVBだけは生理的に受け付けない。 というのは俺だけじゃないはず。C#4.0早く来い。
wshでやるのがいいって結論に達した
まとめると、リフレクション使うか他言語使えってことか
それもありだね。エラー処理とかが面倒だけど。
あとは、ClickOnce の差分ダウンロード機能を使って、それぞれのバージョンに対応した アセンブリをダウンロードする、なんてのもありかな。
>>835 >[Version]=12.0として参照を追加してビルド・発行したアセンブリ(?)では、
>下位のバージョンがインストールされている環境で実行することができず、
エクセルだと一部のメソッド以外バージョン違ってても動くんだけど、
パワポは事情が違うのかね。
いや全然アドバイスになってなくて申し訳ないw
>>832 DataSet の中の DataTable。
>>834 >正直、DataSetの存在意義がよくわからん。
DataRelation 使わないなら、単なる DataTable のコレクションでもよかばい。
>>834 複数のテーブルをまとめたい時に使うのがデータセットだと思っとけばいい
テーブルが1つしかないとセットの意味が薄れる
質問 値型のNullable型への値やnullのセットは アトミックにならない? もっと言うと、同期化せずに値をセットした場合、読みだし側で不整合が発生する可能性はある? もちろん対象の値型はアトミックなサイズのもの。 テスト&ゲットの機能がないからどっちにしてもだめか… 結局bool型変数などを別に持たんとだめかな。
849 :
デフォルトの名無しさん :2009/12/01(火) 12:05:47
>>845 ClickOnceで発行してテスト用のクライアントPCで実行しようとしたのですが、
アセンブリがGACにありませぬ警告が出て起動すらできませんでした。
必須コンポーネントから除外する設定をやってもどうも上手く動かんしorz
プラグイン的な感覚でやれば? 各バージョン用のDLLに対しインターフェイスだけ共通化しといて参照するDLLはレジストリなり参照して切り替える 呼び出しは全てインターフェイス経由 とかどうだろ? 代わりに各バージョン用のDLL全部クライアントに入れることにはなるけど・・・
>>848 かわりにStrongBox<T>でも使えば
>>849 それって単にIDEが自動生成するラッパークラスが入ったアセンブリ(Interop.xxx.dllみたいな感じの
ファイル名のあれ)をexeと一緒に配布してないだけじゃないの?
1:nのデータ構造が存在するなら、テーブル+リレーションなんてまどろっこしい 方法じゃなく、自前でエンティティオブジェクト作った方が取り扱いが楽で融通も 効くんじゃないかと思ってしまう。 レコード単位のステータス管理を自動でしてくれるとかの利点は解るんだけど。 シンプルなマスタメンテアプリとかだったら楽チンで良いのかも知れん。
854 :
デフォルトの名無しさん :2009/12/02(水) 11:57:29
>>852 んー、ちょっと設定見直してみます。。。
えっと、質問なんですが
レイトバインディングを使ってOfficeオートメーションを
利用する場合に、
MsoTristate.msoFalseとか
PpSaveAsFileType.ppSaveAsHTML
とかの値を使うためにはどうすればいいんでしょうか。。。
自分で定義する
>>855 それでいくことにしました。
質問です。
ClickOnceで発行したアプリケーションがインストールされている状況で、
ActiveXのようにページ遷移と同時に起動するようにすることはできますか?
(「<a href="...">ここをを押して起動</a>」のような二度手間を避けたい。)
>>856 スタートメニューに登録するのはダメなの?
>>857 Webシステムの一部として利用しているActiveXの置き換えなので。。。
あと、ClickOnceを起動したIEのウインドウを操作できる必要がありますorz
つーか、ActiveX で作れよ。
>>858 ClickOnce発行時に生成されるhtmlファイルに
javascriptを仕込めば出来るんじゃないかなと妄想。
861 :
デフォルトの名無しさん :2009/12/05(土) 00:25:04
>>859 今後の保守性を考えてC#で作りたいのです。
今のActiveXコンポーネントはATLで書かれてて、
x64版Windowsじゃなぜか動かない。
外注製らしくメンテナンスできる人がいない。(ドキュメントも無い)
C#じゃないと困る、のです。
メンテナンスできる人がいないようなモジュールを使っときなが保守性とか言われてもなあ… 説得力が皆無ですよ
モノによるけど、C# でも ActiveX コンポーネントが作れるだろ。
メンテナンスできる人が居ないせいで困った事になった(仕様変更に対応できないとか?)ので 作り直す羽目になったって話しだろ。 痛い目にあってる分だけ教訓としての説得力があると思うけどw
学生バイトらしいから C#でやれと言われたか自分からC#でやると言ってしまったかして C#じゃないと困るんだろう あとはまあC++使えないとか
作るものに対して言語(開発ツール)を選ぶのがプロ C#しかできないからとC#でできるものを作るなんてのは サンデープログラマのみ許される。
↑イミフ
頭悪
そうっすか。じゃあプロ(笑)さんいろんな言語でがんばってくださいね^^;
当たり前だろ。必要ならいくらでも勉強するのがプロ。
>869 職業プログラマならニーズに合わせた多言語習得なんか当たり前だろ。 ユーザから見れば使用言語なんぞどうでもいいんだし。 考え方が甘っちょろいな。学生さんか?
馬鹿は反省しないから馬鹿っつうことで放置推奨
>>874 何をがんばれというのかわからないが、とにかくがんばるよw
応援ありがとうw
本当に困ったときは別のHPで質問するのが一番。 昔ここで質問したけど、嘘教えられたからな。何人も答えておいて誰も間違いに気づかず、知ったかぶりで進行していった。
2ちゃんなんてニートの集まりだな
>>876 単に質問がくだらなすぎて初心者にウソをおしえて遊んでただけだろ
>>878 たぶん違うな。いま答えをみる限り、半分は無知が頑張った。もう半分は説明不足。
その半分っていうのは、回答者の意見が曖昧だから正解とも間違いとも取れる意見。
逆に別のHPの回答者はレベルが違うよ。まぁ2chと比べちゃいけないけど。
そもそも本当に困ったときに頼るものが2chしかないって時点で終わってるな。 誰か信頼できるやついねーのかよ。
本当に困っていないから2chで質問したんだろ?何いってんの。
ちょっと困ってるけど、別にたいした問題でもないときに利用するんだろう
>879 回答者はボランティアなんだから、「詳細な説明が出ないから」と不満を垂れるのは お門違いだと思う。ヒントが貰えただけ有難いだろ。 よく知らないで回答しちゃう人が居るのはしょうがない。いろんなレベルの人が 見てるんだから。取捨選択しろよ。
>>879 2ch含めてネット掲示板に過度の期待を寄せるのは止めた方がいい。
回答者は正確な解答を返す義理がそもそも無いんだから。
嘘を教えられた、不正確だったと憤っても、そもそもそんな訳のわからん相手に
頼った質問者が悪い。
ニーズにあわせた多言語習得はあたりまえといえども 自分の中で枯れた言語で出来ないか検討するのもあたりまえ
自分の中で枯れたものより対象を作成するのに一番枯れたもの使うのがプロ
ここはMSC#限定ですか?monoC#もOK?
質問は自由よ ただし答えられる人がいるかどうかは運次第 MONOスレも建ってるけど見事に過疎ってんね
グローバリゼーション
890 :
デフォルトの名無しさん :2009/12/05(土) 11:46:25
>>862 ,864
ActiveXコンポーネントは
自分が作ったわけじゃないのですが(;´Д`)
ActiveXに限らずこの会社のコードはひど・・
>>863 この会社、ASPだけじゃなくサーバー納入もやってるので
ActiveXはこの際切りたいっていう要望もあるんですよね。。。
ただ、ClickOnceで現状と同程度のユーザビリティを満たせない場合は、
C#でActiveXコントロールを作る方向も考えます。
>>864 SEさんからは「C#で作って」って言われてます。
(この会社の別部署ではASP.NETのソリューションを
扱ってるのでC#プログラマならたくさん居るから。)
自分は私用ではC++を使ってますが、ATLを覚えるのは時間かかりますし、
自分がやめたらまたメンテできない状態になるので・・・×
>>866 プログラマにも単価ってものがありまして。。。
優秀な人を雇うのにはそれなりにお金がかかるみたいです。
そこらへんも考えて「そこそこのコーダー」でも容易に保守できる
ってのが求められてるんです。
>>876 匿名掲示板以外だと書き込むの恥ずかしいんです。。。
恥ずかしいのか!視ね
>>890 「そこそこのコーダー」
まったくそのとおりだよな。
そこそこの能力はあるが、安く働いてくれる人
高い能力があるが、安く働いてくれない人
プロならいろんな言語使えて当然!とか全くイミフだ。
犬小屋作成者に向かって、ビルの建築方法しらないやつはプロじゃねぇ!つってるようなもん。バカすぎるw
ノコギリとトンカチしか入ってない道具箱はしょぼいって事だ 犬小屋程度しか作れない奴はプロじゃないし
プロじゃないよ?プロになる必要性がないひとに向かって プロなら○○は当然!とか言うのはイミフ。
そもそも犬小屋しか作れないなら、家の建築は断れよ
スレ違いの話を延々と繰り返すプロ(笑) ム板でプロ云々と語る人には馬鹿しか居ないと思う。 マ板に行け馬鹿。
金貰って仕事してるのに「プロじゃないよ?」とかどんだけ
今、読み返したら学生バイトか 犬小屋程度でもしょうがないな
ここのプロ(笑)さんたちはたくさんの言語使ってがんばってね。 やたらプロ(笑)にこだわる人って世の中にはプロ(笑)じゃなくても安く働いてくれる人を募集してることも 多いってことを知らないんだろうなぁ。
そういう所と一緒にしないでもらいたい
安いやつじゃ結局何もつくれないじゃん 現にそこの学生のバイトくん
ActiveXのメンテができるやつがひとりしかいない会社って。。。
低い所に目線がある奴は低い所しか見えないわけだ
犬小屋を作ってる人に向かって 「ビルを作れないやつはプロじゃない」とイミフなことを叫ぶ連中が多いのがこのスレ。
作るのは犬小屋だったっけ?
要件を満たすにはビルを作らないといけないのに 犬小屋をつくる力しかないのにビルを作りたいっていってるから ビルを作るには勉強しよねって言ってるんだろ
>>906 ActivXだけなんで
明らかにビルを作る必要はないですが。
C#しか知らないやつは犬小屋作成者な。
いろんな言語を知ってるやつがビル建築家な。
C#だとActiveXが不可能ならともかくできるのに他言語を勉強させる意味がない
発言ぶれまくりwww
909 :
デフォルトの名無しさん :2009/12/05(土) 12:24:28
>>901 いや一応、現在試作してるClickOnceアプリケーションでも
既存のActiveXコンポーネントと(ユーザーから見ると)
同じような動きをするように色々と工夫してるんですがあ。。。
ただ、サーバーサイドスクリプトが現状より複雑になるのと、
SHDocVwを使ってIEのウインドウを弄くるので、
どんな環境でもちゃんと動いてくれるか不安なのが問題点なのですが。
まあしかしソフトは力業で作るってことが出来ちゃうのが怖いところ。
どう考えてもVC++でActiveXコントロールを作るのが適している 場面なのにC#でごまかそうとするのはプロとは呼べない
ビル建てるのは金がかかるから、でかい犬小屋を建てるつもりなんですよね。 迷惑するのはクライアントなんですが。
プログラマーがプロじゃなかったらグラマーになっちまうだろうが!
つーか、そのSEがバカなんだよな 何が最適かも見極めることができない。 だから下のレベルがいつまでも低いまま。 単価は安いほうがいいだろうがモノには限度ってものがある。
こんなゴミプログラマが崇高なC#を使っているかと思うと反吐が出るな
とりあえず>899や>904の頭が悪い事はよくわかった。 浅薄な考えでいい加減な物を作ることが、結果としてコストダウンを塗り潰すほど 大きな損失になる事を理解していない。
>>916 うんうん。899や904ってか俺一人だから。
ヨシヨシ、高い給料でがんばってね><
C#しかできないからコンプレックスの塊なんだな
こんな無能な奴がプロジェクトの旗振り役になったらと思うとぞっとする。 経営層への受けはよさそうだけど、アウトプットは出せそうもないな。
底辺職の諸事情なんかには興味がないので スレタイ通りC#の話をしてくださいね
とりあえずうちの会社がそんなじゃなくてよかった^^ 変な会社も世の中にはあるんすね。俺ならすぐ辞めるな。
底辺職の諸事情なんかどうでもいいわ、マジで。 ム板いけや。
×ム板 ○マ板
925 :
890 :2009/12/05(土) 12:56:57
もう、この業界でやってける気がしない。 俺は死んだほうがいいのかな。
928 :
890 :2009/12/05(土) 13:21:25
スレチかもしれないんですが、 ActiveXとClickOnceを比べたときの互いの長所・短所を 教えてもらえませんか? どちらも.NET Framework2.0(C#)で開発するとします。 主な利用目的はローカルにあるWord/Excel/PowerPointファイル などのローカルのファイルをサーバー(CMSみたいなもの) で利用できる形式のWebコンテンツへ変換することです。
>>883 >ヒントが貰えただけ有難いだろ。
何様wwwヒントにすらなっていないってアレは。むしろ足を引っ張られて時間を無駄にしたから。
まぁ2ch自体自意識過剰な奴が多いから仕方ないんだろうけどさ。
890は本気で困っているならここでやらない方がいいよ。言い訳は上手い人たちだらけで、のんびりまったりやるスレだから。
ビルなんて作れないのにビルが作れると勘違いしている人が多い。せいぜいプレハブ小屋程度なのにビルが作れると思ってる、
くらいのレベルなんだよ。ビルが作れる人たちから見れば。
実際質問に対して文句ばかり言ってまともな回答できていないだろ?
ネットなんだし他のサイトで質問しても匿名と同じ。IDが必要なら捨てIDを作ればいいだけだし。
俺はVC++でActiveX一択 他の選択肢は無い C#でやるならそれに適した環境が整ってから
ActiveXっていうだけでVC++が最適と言い切っちゃうとか どんだけ短絡的な思考してるんだwまったくアホどもめw
>929 >何様www 一般論で話をしたつもりだったが喧嘩腰だな。 一方的に頼る側がガタガタ文句言うのは常識的に言って筋違い。 足を引っ張られるのは情報の取捨選択をしなかった当人の責任だ。 そんな糞みたいな書き込みしてる暇があったら質問の回答書けば?
匿名掲示板での質問者が回答にブー垂れるとか、それこそ 何様www だろ
一般論ではなく、個人の論です
ぶーたれるって死語だね
>>935 え、マジ?www
俺結構言っちゃうけど。やべえ
「私の質問に真摯な回答をするのがあなたたちの責任です」 権利の主張が過ぎるのがゆとりクオリティ。
伸びてるなと思って来てみればアホがわいてるなw 押しつけがましい回答者が居座ってるときに質問してしまったようでご愁傷様w いっつもいるんだよな。 政治的事情も考慮せずに、ただ自分好みの方法を質問者に押しつけようとするやつ その上、自分好みの方法が受け入れられないと、こんどはバックグラウンドにある 組織の批判を始めたりして結局、何の助けにもならないっつう迷惑な回答者 まあ、いまの雰囲気じゃ挽回は無理なので、教えてgooにでもいきなさいw
ここは技術系スレなので政治的事情は考慮する必要はない 政治的事情を考慮したいなら情報システム板に行け
Silverlight4なら.NET不要で配布も超手軽で Office操作もできてC#4.0でdynamicも使えて最強
>>940 そうそう。そういうのが出てきてから移行すべきで
今のところはVC++一択
いつまでVC++ごり押ししてんだよ低能w
つか.NETでActiveXとか言ってる人にもっと技術情報を出して貰いたいんだが。 あんまり実施例として聞かない話だよな。
>942 文句は具体的な代替案とセットでお願いします。
MSとしてはSilverlightを推していきたいところだから サポートも望めないわな
そうそう managedDirectXとかどうなっちゃったか考えてみろ
ClickOnceってただのアプリケーション配布手段じゃなかったっけ? なんでActiveXと同列に語られてんの? じぶんとしてもSilverlight使えばいいと思う。
言語の習得コストを無視する体育会系も多いよな。 そういう体質がデスマを招くわけなんだけど
すばらしいなSilverlight4 さっすく勉強しよっと
SilverlightでOfficeなどのCOM操作ができるようになるのは次のバージョン4から VS2010ベータで作れるけどさすがにそれはちょっとw まあ要件はSilverlight4のデモに使えそうなくらいぴったりなんだけどな
つか、クライアントサイドの話が中心になってるんだけど、>928の話からすると 変換はサーバサイドで実装するのが常道なんじゃないの? 変換ロジックがサーバサイドにあると仮定すると、クライアントなんて ActiveXだろうが、ClickOnce配布のアプリだろうが、Silverlightだろうが、 好きなの使えば良いと思うんだよ。 ActiveX云々の話が目的にどう絡んでくるのか見えないな。
Silverlight4って仕様側は.Net不要なんだっけか? てかなんでVS2008じゃ出来ないんだよぉ…
たった今VC++ or Sliverlight4の二択になった。
xbapのことも時々でいいから思い出してください
4のアウトオブブラウザで
おれもサーバーサイドを推す。 まぁ、サーバーサイドで Office をオートメーションするのはサポート外なんだけど。
サーバーサイドでオフィスってライセンス大丈夫なの?
もうクライアントのofficeVer意識するのは疲れたお
961 :
890 :2009/12/05(土) 17:32:50
サーバーはLinux+Apache+PHP・・・(;´Д`) ロジックをできる限りサーバーサイドに持ってきたいのも 事実なんですけど、PHPに巨大なロジック持たせたくないんです。 ASP.NETだったらいかに楽だったか。 ActiveXの置き換えは自社パッケージの時期バージョンからなんで、 Silverlight4のリリース時期次第では、Silverlight開発も通せるかも。 別部署のパッケではずっと前からクライアント側をSilverlightにしてるし。 Silverlightの入門ってどこ見たらいいでしょうか。。。
そういや新しいOfficeってサーバーサイドになるんだっけ?
>>959 クライアントにオフィス入ってないとダメw
オフィス文書の変換をクライアントサイドで、ってどういう仕組みに なるのか想像もつかんな。 変換ロジック自前で書いたりしないだろうし。 もしや変換のためのライブラリ/アプリを全ユーザに事前インストールさせる、 なんて仕様? 現状、具体的にどんな操作でどうやって変換してるのかが凄く気になる。
なんだか力技で処理してる悪寒
インターネッツに繋がっていないときはエクセルとか使われへんのん?
イントラ上のサーバに載せるんとちゃうの?
スタンダロンの場合はどうなんね?
大阪に帰れ
Web版は無償版だよ。 普通のOfficeは普通にアプリケーション。
Web版はレンダリングにSilverlight使うそうな
WEB版はgoogleドキュメントみたいになるってことかな。 Azure
googleと競合させてくるわけか・・・ どうなるんだろう
???梅???
アプリケーションのウィンドウの一番左上の所(タイトルバー含む) のスクリーン座標を取得したいのですがどうすればいいでしょう? FormのLocation.Xだとかをしてもタイトルバーの位置は分かりませんでした。 (当たり前)
>>977 PointToScreenはやってみたのですが
Formをもとにしたクライアント座標の変換であって
ウィンドウの(0,0)のスクリーン座標は取得できませんでした。
いったい何がしたいんだろう
ちなみにProcess.GetCurrentProcess().MainWindowHandleをWinAPIに放り込んでも無理でした
>>978 すまん。知りたい座標を勘違いしてた。
つ Form.Bounds.Location
ありがとうございます ちゃんと取得できました
AxWMPコンポーネントUIに、ContextMenuStripを関連付けさせたいのですが、 AxWMPのプロパティ、ContextMenuStripで設定するだけでは、 デフォルトのWMPコンテキストメニューが表示されてしまいます。 どうすれば望む動作が出来ますか?
Formに複数のコンポーネントを配置してOnResizeが走る度にコンポーネントの大きさも調整しているんですが ウィンドウの左を掴んでリサイズするとコンポーネントがリサイズされる時にうねうねして気持ち悪いんですと思ったんですけど どうやら僕の作ったプログラム特有の現象ではないみたいなのでやっぱりどうでもいいです。
うねうねてw
>>984 dockやanchorをうまく使うようにするべきだろうね。
アンカーやドックでは出来ない配置なのか? 確かに自由度は低いけど大抵用は足りると思うが。
できない配置だから使ってないんだよ^^
いってごらん、使えないから使ってないんじゃないの^^
組み合わせればかなりのことはできるね。
dockはパネルとうまく組み合わせるのが肝
できないっつうと、複数コントロールを均等比率で拡大・縮小するとか?
そうだよ。
オレはDockは基本的に使わないことにしてるな 安易に使うとちらつく原因になって後々困る
WPF使っとけ
まだまだXPが主流で描画もっさりのWPFにはいけない
リサイズの必要があるなら 多少ちらついても楽するにはDock使うね
>>983 enableContextMenuをfalseにしといて、
MouseUpEventでContextMenuStrip.Showで直接表示させる
>>998 なるほど!それは思いつかなかったです;
1000get
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。