[プログラム板] C#, C ..
175:デフォルトの名無しさん
08/07/11 16:20:27
>>165
別のスレッドでフォームを書き換えるの?それは無理
[STAThread] <-
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
176:デフォルトの名無しさん
08/07/11 16:21:05
>>170
LOHに何があるか、専用のデバッガやプロファイラで調べられなかったっけ?
CLRProfilerやsos.dllを使えばできそうな気がするよ。
177:143
08/07/11 16:24:22
>>153
できたっ
ありがとうありがとう
178:デフォルトの名無しさん
08/07/11 16:27:06
>>176
ちょっとそのあたりのツールを調べてみます。ありがとうございました。
179:デフォルトの名無しさん
08/07/11 16:28:15
>>174
それって最初のボタンのクリックイベントの最初に
非同期通信中だったら非同期通信キャンセルなり終了させるような処理書けばいいのでは?
その完了を待って再度非同期通信を開始すればよいのでは
180:デフォルトの名無しさん
08/07/11 16:30:31
>>175
>別のスレッドでフォームを書き換える
スレッドからフォームのプロパティを書き換えるのではなく、
同期通信のメソッドが通信を受けた時のイベントがあるんです。
そのイベントの中でフォームを弄るので、簡単に言えば、
ButtonClickイベントが起きたら通信メソッドをDispose()出来れば良いんです。
ですが、DoWork()内にButtonClickをどう通知したら良いのかわかりません。
181:デフォルトの名無しさん
08/07/11 16:33:08
>>180
IsBusy
CancelAsync
こんな感じのメソッドとプロパティなかったか?wwww
182:168
08/07/11 16:34:11
FileNameに"/c"パラメータとかつける方法ありませんか。
183:デフォルトの名無しさん
08/07/11 16:40:19
>>179 >>181
ButtonClickイベントの中で
BackgroundWorker.IsBusyでスレッドの使用を確認して、
動いていたらCancelAsyncを呼び出せばRunWorkerCompletedイベントが発生する訳ですね。
よくわかりました、ありがとうございます
184:デフォルトの名無しさん
08/07/11 16:51:07
一応いっとくけどCancelAsync呼んだだけじゃRunWorkerCompletedは発生しないぞ
CancelAsyncの解説読めば分かることだけど
185:デフォルトの名無しさん
08/07/11 17:12:52
object result = type.InvokeMember("test", BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Static, null, null, new string[1] { "sample" });
ってDLLを動的に呼び出して MyClass1 ってのを返すんだけど
object型のresultをMyClass1にキャストする方法がわからないのだが誰かヒントでも良いから助けて
186:デフォルトの名無しさん
08/07/11 17:17:16
>>185
動的にDLL呼び出しができてキャストできないとか・・・・・
(T)
187:デフォルトの名無しさん
08/07/11 17:23:16
きっと「動的にキャスト」みたいなこと考えてるんだろう
188:デフォルトの名無しさん
08/07/11 18:00:26
MyClass1返すならなんで動的に呼ぶ必要があるんだよ
まあこれはMyClass1が対象のアセンブリに含まれてると仮定した場合だが
MyClass1を静的に参照してるんじゃなきゃキャストなんてできるわけがないぞ
189:デフォルトの名無しさん
08/07/11 18:03:13
解決しました
第三のDLLかましてあげればよかったんですね
190:デフォルトの名無しさん
08/07/11 18:07:32
>>170
>任意の型(ただしdoubleに変換可能、実際の想定はfloatとdouble)
ならdouble決め打ちでいいんじゃね?
って思うんだが駄目ですか
191:デフォルトの名無しさん
08/07/11 18:15:15
double[]引数にはfloat[]を与えられない
192:デフォルトの名無しさん
08/07/11 18:25:51
つうかキャスト動作が食ってるとかありえないのかな?
何万も回せばコストはでかいと思うんだが
外からは意識しないように内部で分岐させて処理してみればよくねぇか?
この分だとキャストは一回だけで終わりそうな感じがするんだが・・・
193:デフォルトの名無しさん
08/07/11 18:34:48
>>189
第3のDLLのはインターフェイスにしておくと融通が利く。
194:デフォルトの名無しさん
08/07/11 18:44:04
>>170
<T>[]で受けると型が特定されなくてそのままSystem.Convert.ToDoubleが呼ばれる
結果的にもう1つ<T>[]を作っている感じな予感。
float[],double[]で受けると最適化されてSystem.Convert.ToDoubleは呼ばれない。
195:デフォルトの名無しさん
08/07/11 18:48:26
IConvertibleで制約してhoge[i].ToDouble(null)とか
196:デフォルトの名無しさん
08/07/11 18:55:15
>>173
return直前にdoubleにすればいいだろ。
197:デフォルトの名無しさん
08/07/11 18:57:26
Tのままじゃ比較できないじゃん
198:デフォルトの名無しさん
08/07/11 19:00:52
比較はCompareToかな。それよりT.MinValueって使えるのかな
199:デフォルトの名無しさん
08/07/11 19:18:12
lengthがゼロならMinValueを返すのが仕様なら仕方ないが
普通初期値は配列の最初の要素だろ。
T ret = src[offset];
200:デフォルトの名無しさん
08/07/11 19:36:11
総称型の場合Convert.ToDouble(Object)でボクシングが
大量発生してヒープを使いすぎるのはわかるがLOHが使われるのは解せんね。
201:デフォルトの名無しさん
08/07/11 19:55:28
>>170
じつはToArrayでラージオブジェクトヒープを使っているとか言うオチだったり
List<int> arr = ..
double ans = Max(arr.ToArray(), 0, ar.Count);
202:デフォルトの名無しさん
08/07/11 19:58:18
>>199
そうなんだけどT.MinValueが使えるのかが気になった。
Length==0なら例外投げるのが妥当だよね。
203:デフォルトの名無しさん
08/07/11 21:42:05
相談です。
C#3.0(2.0でも可)にて
PDFからオブジェクトの取得をしたいと思っています。
PDFはベクトルデータであることが前提で、ラスタデータは考慮しません。
●抽出
テキストデータは テキスト、フォント、サイズ、座標を取得
画像データは 画像、座標を取得
各データにジャンルを割り当てDBに保存
●復元
テキスト、フォント、サイズ、座標からPDFに復元する。
その座標に画像も存在していれば画像も復元する。
何か良い方法はご存知でしょうか?
204:デフォルトの名無しさん
08/07/11 21:45:08
>>203
本屋でPDFの仕様書を見たことがあるから、amazonで探せばあるんじゃね?
英語なら買うまでもなく、ネットでもありそうだけど。
205:203
08/07/11 23:43:25
>>204
PDF仕様書の英語版はWebで公開されてます。
日本語版の仕様書は本で出てます。
PDFの使用がわかってもC#でPDFを扱う術(COMやSDKなど)がわからないのです。
iText,PDF4NET, PDFLib など様々なものを試していますが、これというものがありません。
画像抽出に関しても、抽出するだけならできるが、座標の取得などは不明だったりします。
206:デフォルトの名無しさん
08/07/12 00:15:58
つかライブラリ使うつもりなら、仕様書まで読む必要ないよ。
207:デフォルトの名無しさん
08/07/13 03:14:35
>>205
そこに挙げてる既存のライブラリで満足できないなら、新しいのを書くしかないだろ。
208:170
08/07/13 08:05:41
170ですが、遅くなって申し訳ありません。まだ解決したとはいえないのですが、>>194っぽい気がしています。
なお、最初に書いた文章が改行大杉と言われたので改行減らしています。読みにくいかもしれません。すみません。
とりあえず
public double Max<T>(T[] src, int offset, int length)
{
double ret;
if(src is float[])
{
float[] srcFloat = src as float[];
int end = offset + length;
for(int i = offset ; i < end; i++)
{
double val = (double)srcFloat[i]
if(val > ret)
ret = val;
}
}
else if(src is double[])
{
(略。明示的キャストをしないこと以外はfloatと同じ)
}
return ret;
}
というようにfloat[]、double[]の型に変換してからキャストするようにするとLOHを食う現象は見られなくなりました。
ただ、今でもキツネにつままれたような気分は抜けないので、もう少し元のコードだと何をやっているか調べてみようと思っています。
>>200で指摘があるように、キャストでヒープを消費するのはわかるんですが、Gen0やGen1ならともかくLOHを食うのは相変わらず解せないので…。
また何かわかったら報告します。ありがとうございました。
209:170
08/07/13 08:07:17
あと、>>208のコードでは対応していませんが、
・キャストは最後に1回やればいい(float、doubleに決め打ちできれば可能)
・Tで受けずに最初からfloat[]、double[]で受けるほうがいい
というのも納得しています。追って対応しようと思います。
ありがとうございました。
210:デフォルトの名無しさん
08/07/13 08:29:38
そうまで限定するならoverloadしたほうが早いような。
211:170
08/07/13 09:29:10
>>210
「Tで受けずに最初からfloat[]、double[]で受けるほうがいい」
はoverloadにすることを考えて書いてました。
212:170
08/07/13 09:31:16
細切れですみません。いずれにしても
>>170のコードだとなぜLOHを侵食する?
という大本の疑問はまだ謎のままなので、
追い追いプロファイラとかで調べてみようと思っています。
213:デフォルトの名無しさん
08/07/13 13:11:43
何かよくわかりませんが、これ↓
やねう企画代表者やねうらお(本名・磯崎元洋)が
・ソフトウェアの不正コピーを行っていた
・労働契約上の違反をしていた
・他は不正コピーしていないことを証明しようとしてエロゲーのパッケージを発見し、
写真に撮ってアップロードしようとした。
URLリンク(d.hatena.ne.jp)
やねう企画の裏側(競馬の詐欺ソフトの製作現場)
URLリンク(d.hatena.ne.jp)
URLリンク(d.hatena.ne.jp)
URLリンク(d.hatena.ne.jp)
有限会社やねう企画(所在地・大阪府八尾市末広町2−1−2)が計画倒産
URLリンク(www.sia.go.jp)
やねうらおプロフィール
性格:友達から「チンピラ」「ヤクザ」と呼ばれている。前世で殺人鬼だった宿業を背負っているという妄想(自覚)あり。
最終学歴:専門学校卒
主な職歴:有限会社センキ(凌辱系アダルトゲームの製作会社)を経て独立、有限会社やねう企画を設立、2006年に計画倒産
代表作:『夜這いマニア』『盗撮マニア』『お楽しみCDシリーズ』『競馬詐欺ソフト』『BM98』
やねうらお語録
>「ワシのほうが潔癖やと思うんやけどな。
>絶対に違法コピーのソフトしか使わんし。
>たとえば強盗に入ったときに、ちょっとかわいそうになって
>十万円だけ残してったら、おかしいやろ?
>自分の『強盗する』という意思に対して矛盾やろ?
>だからワシは、一個も買ったソフトを使ったことがない!!」
214:デフォルトの名無しさん
08/07/13 13:15:09
コピペ君って馬鹿だな、まで読んだ。
215:デフォルトの名無しさん
08/07/13 13:21:57
最近、やねうらおは弓月(>>213)とか言う真性のキチガイに絡まれている
【自作自演】弓月城太郎氏に関するまとめ【神秘体験】
URLリンク(d.hatena.ne.jp)
216:デフォルトの名無しさん
08/07/13 13:57:02
コピペ君って馬鹿だな、まで読んだ。
217:デフォルトの名無しさん
08/07/13 14:00:45
こっちにまではってやがるw
218:デフォルトの名無しさん
08/07/13 21:54:07
ここまでコピペ
219:デフォルトの名無しさん
08/07/14 11:21:45
何度かここで質問しようとした事があるんだけど、なんでだろう。
書き込みボタン押す直前に閃いて解決してしまう。
220:デフォルトの名無しさん
08/07/14 16:34:41
日記はチラシの裏に
221:デフォルトの名無しさん
08/07/14 16:44:41
やだね
222:デフォルトの名無しさん
08/07/14 17:44:05
じゃあチラシの表でいいや
223:デフォルトの名無しさん
08/07/14 17:45:26
やだね
224:デフォルトの名無しさん
08/07/14 18:46:51
今作ってるプログラムが500行超えた
こんなに長いコード書くの初めて・・・
フォームアプリケーションってめんどいね
225:デフォルトの名無しさん
08/07/14 18:57:13
むしろそんなに大きくないファイルがたくさんできないか?
と思ったら500行か、、、、そりゃテストコード書くんでもなけりゃ
あっというまだべ。
226:デフォルトの名無しさん
08/07/15 12:24:44
データバインドとか使わずに愚直コピーしてるとか?
それでも500ぐらいあっと言う間だろうけど
227:デフォルトの名無しさん
08/07/15 22:48:06
UI絡みは長くなるの仕方なかろう
228:デフォルトの名無しさん
08/07/16 17:14:27
チラシって普通両面に印刷されてるよね。
そういえば昔は片面印刷だったっけ。
229:デフォルトの名無しさん
08/07/16 17:15:27
どことまちがえてるんですか?w
230:デフォルトの名無しさん
08/07/16 22:07:19
マーシャリングについて教えてくれ。
C#からCで書いたDLLのGetImageを呼び、ImageProcデリゲートで画像のデータを受け取りたいんだが、
ImageProcデリゲートの第一引数を何と書いていいか分からない…
【C側】
typedef void (*ImageProc)(unsigned char* pImageBuffer, unsigned int imageSize);
__declspec(dllexport) void GetImage(char* pFileName, ImageProc pImageProc)
{
unsigned char* pImageBuffer = 0; //画像バッファ
unsigned int imageSize = 0; //画像サイズ
//中略:pFileNameの画像を開き、pImageBufferを動的確保し、
//pImageBufferに画像のデータを、imageBufferSizeに画像のサイズを入れる。
pImageProc(pImageBuffer, imageSize);
}
【C#側】
↓???を何と書いていいか分からない…
public delegate void ImageProc(???, UInt32 imageSize);
231:デフォルトの名無しさん
08/07/16 22:16:41
IntPtr
232:デフォルトの名無しさん
08/07/16 22:28:42
string
233:デフォルトの名無しさん
08/07/17 08:51:39
byte[]でいいんじゃね?
推奨できないけどどうしてもというならunsafeつけてbyte*とか
234:デフォルトの名無しさん
08/07/17 11:07:03
正直受け側の実装次第
235:デフォルトの名無しさん
08/07/18 09:35:50
脱線するけどBitmap.LockBitsじゃダメなのか
236:230
08/07/18 11:15:25
>>231で行けました。THX!
【c】
#include <windows.h>
typedef void (CALLBACK* ImageCallBack)(VOID* pImageBuffer, UINT32 imageSize);
【c#】
public delegate void ImageCallBack(IntPtr pImageBuffer, UInt32 imageSize);
public static void ImageCallBackHandler(IntPtr pImageBuffer, UInt32 imageSize)
{
byte[] imageData = new byte[imageSize];
imageData.Initialize();
Marshal.Copy(pImageBuffer, imageData, 0, imageData.Length);
}
237:デフォルトの名無しさん
08/07/18 22:27:57
VisualStdio2005なんですが、使用する.netFrameworkを1.1にして開発に使用する事って可能ですか?
238:デフォルトの名無しさん
08/07/18 22:30:37
いいえ
239:デフォルトの名無しさん
08/07/19 01:03:13
実はできなくもなかったりするんだが、いろいろと面倒なんでお勧めしない。
240:デフォルトの名無しさん
08/07/19 14:35:26
ListViewの詳細表示モードで、ダウンロードの進歩状況を表示するような・・・
例えば、WinnyなどのP2Pソフトによくある横棒グラフに % 表示があるような
ものを表示したいんですが、どのように実装したらいいでしょうか?
とりあえずオーナードローでサブ項目にRectangleで描画したりしてみましたが
あまりにも遅くて実用的ではありません。
もっと効率的な方法があるのでしょうか?
241:デフォルトの名無しさん
08/07/19 14:36:40
それはおそらく実装の方法に問題がある。
そんなに遅くなるはずがない。
242:デフォルトの名無しさん
08/07/19 14:46:42
>>241
いや、それが試しにRectangleの描画処理だけを入れただけのものなんで
ほとんどこれが最少の処理なんですよ
確か、Winnyを作っていた47氏も描画の遅さに悩んでいた記憶があるので
もともとどうやってもある程度の遅さはしょうがないのかもしれませんが
オーナードロー以外にもっと上手い方法があれば教えて頂きたいのですが
243:デフォルトの名無しさん
08/07/19 14:57:24
その部分のコード晒せば今日暇だから改良してみようか
晒せないならしょうがないけど
244:デフォルトの名無しさん
08/07/19 15:13:27
ListViewのDetailモードはバギーだからさもありなん、という気もする。
245:デフォルトの名無しさん
08/07/19 15:21:43
>>243
上記した通り、四角の描画しかしていないんですが
具体的に書きますと
if (e.ColumnIndex == 3) {
e.Graphics.FillRectangle(Brushes.Red, e.Bounds.Left, e.Bounds.Top, percent, e.Bounds.Height);
}
の処理を入れてあるだけの、最小限の物です。
他の余計な処理は一切していません。
246:デフォルトの名無しさん
08/07/19 15:23:38
描画処理が何回呼ばれてるかとか描画に何ms掛かってるかとか調べてみたら
247:デフォルトの名無しさん
08/07/19 16:37:44
>>245
そんなんじゃわからん
普通に軽いのができてしまったぞ
248:デフォルトの名無しさん
08/07/19 17:34:04
ほかの部分が重いんじゃないか?
追加部分をコメントアウトして確認
249:デフォルトの名無しさん
08/07/19 18:43:16
俺のもめちゃ軽い。ちらつきはDoubleBufferedで抑えてみた。
250:デフォルトの名無しさん
08/07/19 19:06:50
追加するときに重いとかいうオチだったり?
251:デフォルトの名無しさん
08/07/19 19:09:28
どうせListViewだし、
0u2007 FIGURE SPACE
0u2588 FULL BLOCK
0u258C LEFT HALF BLOCK
0u2590 RIGHT HALF BLOCK
の手抜きでいいじゃんとか思ってしまう
虫食いなしなら、1/8のまで使えるし
一応こんな感じに
URLリンク(www.imgup.org)
252:デフォルトの名無しさん
08/07/19 19:09:34
実は実行環境が驚くほどプア
253:デフォルトの名無しさん
08/07/19 19:31:09
>>244
ListViewといえばDetailなのにバグ多いよね。
そして改善されない。
254:デフォルトの名無しさん
08/07/19 19:40:35
うわ、疲れて寝てしまった。
>>247
でも、これしか書いてないから他の部分無いんですよ、全く。
>>248
上にも散々書きましたが、他の処理は無いのです。
ListView検証の為にTestListViewというプロジェクトを作って
フォームにListViewを貼り付けただけのプロジェクトなので
描画処理部分以外も、余計な処理が全く無いんですよ。
>>249
やっぱり軽いですか。何で重くなってしまうのか・・・
>>250
動的にデータを追加することは無いです。
>>251
うわ、昔を思い出す処理ですね(w
MSX の SCREEN 1/2 でやっていた時に
そんな感じでゲームのパラメータそんな感じでやってたなぁ
>>252
Pentium-M 1.6GHz なので、それほどプアでも無いと思うのですが。
255:デフォルトの名無しさん
08/07/19 20:46:38
Debugつうオチではない?
256:デフォルトの名無しさん
08/07/19 22:32:15
そんだけのプログラムならうpすればいいのに
257:デフォルトの名無しさん
08/07/19 22:38:16
サブ項目は、一つ一つがリソースを消費するから
数によってはかなり重くなってメモリを消費すると思うが
それとは違う?
258:デフォルトの名無しさん
08/07/19 23:06:06
自分のは10万個とか追加したらスクロールバーでのスクロールははっきり重くなった
マウスホイールでのスクトールは軽いままだけど
259:デフォルトの名無しさん
08/07/19 23:22:24
配列かリストのスライスとかないんでしょうか。
260:デフォルトの名無しさん
08/07/19 23:22:53
自分で作ってください…
261:デフォルトの名無しさん
08/07/19 23:24:17
ちゅうかまず描画の頻度がどの程度なのよ
262:デフォルトの名無しさん
08/07/19 23:28:01
そりゃWM_PAINTとんでくる度だろ
263:デフォルトの名無しさん
08/07/19 23:36:49
オーナードローって言ってるのにねぇ
264:デフォルトの名無しさん
08/07/19 23:41:58
>>254
プロジェクド丸ごとうpしろよ
原因見つけてやるから
265:デフォルトの名無しさん
08/07/19 23:52:00
馬鹿はレスしなくて良いと思うんだ
266:デフォルトの名無しさん
08/07/20 00:02:49
じゃあお前レスすんな
267:デフォルトの名無しさん
08/07/20 00:07:23
オーナニードローのパフォーマンスが悪いのは仕様だと思う。
268:デフォルトの名無しさん
08/07/20 00:10:48
>>267
言いたかっただけだろw
269:デフォルトの名無しさん
08/07/20 00:20:08
俺もやってみたが軽かった
どんな糞コード書けば重くなるんだ?
270:デフォルトの名無しさん
08/07/20 01:09:26
バーの長さをe.SubItem.Textでパーミル指定とかしてみたけど、
10万個の項目でもスムーズに動く。スクロールも無問題
因みに、環境はPemM 1.7GHz/mem 1GB
271:デフォルトの名無しさん
08/07/20 01:16:30
そういえば、カスペが入ったPCでデバッグビルドを動かした時に、
異様に遅くなったことがあったな。
コンボボックスを開くのに数秒かかったり。
VSを信頼するアプリに設定してプロセス動作の監視対象から外したら
普通に動くようになった。
272:デフォルトの名無しさん
08/07/20 12:40:04
こんな親切なレスの流れはひさしぶり
273:デフォルトの名無しさん
08/07/20 13:12:32
火スペって何?
まさか名取裕子とか出てくるドラマ枠のことじゃないだろうし
274:デフォルトの名無しさん
08/07/20 13:28:30
ググれば一発で出てくるのに
しかも、一番上に
275:デフォルトの名無しさん
08/07/20 13:33:21
質問者の反応が悪いな
諦めたんかね
276:デフォルトの名無しさん
08/07/20 15:41:54
カスペ、監視からjustの扱ってるアンチウィルスソフトだとわかると思うんだがなぁ。
これくらいは許されてもいいような省略系じゃないのか?
277:デフォルトの名無しさん
08/07/20 15:45:09
よくない
278:デフォルトの名無しさん
08/07/20 15:45:43
はじめて聞いた
俺は気付いたけど
279:デフォルトの名無しさん
08/07/20 16:19:19
すまん。セキュリティ板なんかではよく見かける略称だったもんで。
280:デフォルトの名無しさん
08/07/21 23:35:58
C++のboostみたいなC#の定番ライブラリってないですかね
281:デフォルトの名無しさん
08/07/21 23:46:18
標準で機能かなりそろってるからなぁ。
patterns & practices とか EntLib とか、MS が提供してる標準外コードも多いし。
282:デフォルトの名無しさん
08/07/22 14:23:54
entlibなんかきらいだ
283:デフォルトの名無しさん
08/07/22 18:08:55
最近C#に乗り換えたんだが
初心者はSDKから入ったほうがいいよな?
284:デフォルトの名無しさん
08/07/22 18:15:47
日本語でおk
285:デフォルトの名無しさん
08/07/22 19:24:45
>>283
初心者はIDEから入るべき
自分でことを難しくすることはない
286:デフォルトの名無しさん
08/07/22 21:43:08
VC# Express Edition 1択。
287:デフォルトの名無しさん
08/07/22 22:14:16
ム自体初心者なら SDK というかそのレベルのことからはじめるのは
ありだと思うが C# の言語的な思想ってのは IDE が存在する世界だ
から IDE で触れないとなんつーか色々わかりゃしない。結果遠回り
288:デフォルトの名無しさん
08/07/22 22:17:11
別にそんなこと無い
289:デフォルトの名無しさん
08/07/22 22:38:55
別にそんなこと無い
インテリセンスとGUI作成以外は、
SDKから構築した自作コンパイル環境の方が早かったりする
でも初心者はVC#EE使うべきだよ
楽だもん
290:デフォルトの名無しさん
08/07/22 22:39:49
初心者はCASLからだろJK
291:デフォルトの名無しさん
08/07/22 23:22:09
>>289
コーディングの速さなんか問題にしていないしそれぐらい慣れたら
できる人間(他から移行中とか)で C# 初心者の場合に言ってる
IDE からみないと C#(.NET) 的なコンポーネントとかメタデータやらで
宣言的にとかそういう発想が分かりにくいよという話
292:デフォルトの名無しさん
08/07/22 23:32:43
> IDE からみないと C#(.NET) 的なコンポーネントとかメタデータやらで
> 宣言的にとかそういう発想が分かりにくいよという話
もっと具体的に言ってくれないとわかんない
293:デフォルトの名無しさん
08/07/22 23:40:15
IntelliSense は楽をさせてくれると同時に、
初心者にとっては学習ツールでもあると思う。
294:デフォルトの名無しさん
08/07/23 00:41:02
通ぶってるのか何か知らないけど、今時SDKだの素のエディタ使うだのって
そういう背伸びは中学生までにしとけって言いたくなるよな。
傍から見てても恥ずかしくなるよ。
295:デフォルトの名無しさん
08/07/23 00:45:17
SDK→IDE ・・・ 時代に取り残されたおっさんの発想
296:デフォルトの名無しさん
08/07/23 00:45:55
C#でIDE使わないならJAVAでいいじゃん
297:デフォルトの名無しさん
08/07/23 01:06:37
俺はVSのエディタとVIMを併用してるが、
2003→2008にしたら比重が1:9→8:2くらいになったな
LINQ、ラムダ式、拡張メソッドを使うときとか、
コンパイラ並みの構文解析してくれないエディタだと面倒くさい
298:デフォルトの名無しさん
08/07/23 01:18:22
>>294
ム板だし、人に強要しなきゃいいんじゃね?
マなら仕事できない奴確定だがな
299:デフォルトの名無しさん
08/07/23 01:25:47
VC#使うのは当然としてもコンソールアプリから始めてみるのはいいんじゃないの
基本的なところの勉強で小さいコード動かすために
わざわざVBみたいにボタン一つだけ載せたフォーム作るのは格好悪すぎ
300:デフォルトの名無しさん
08/07/23 01:31:42
誰もコンソールアプリから始める事には反対してないような…
301:デフォルトの名無しさん
08/07/23 01:33:55
>>291
302:デフォルトの名無しさん
08/07/23 01:43:38
俺も反対してないけど始めるのはGUIからでもCUIからでもいいと思うよ
303:デフォルトの名無しさん
08/07/23 02:38:56
夏か!
304:デフォルトの名無しさん
08/07/23 02:47:40
どうでもいいけど、cscやmsbuildは.NET Frameworkに付属しててSDKなしでも
たいていのコンパイルはできる。
305:デフォルトの名無しさん
08/07/23 04:22:22
DLLからクラスやメソッドを詳細検索してくれるようなツールない?
protected で A から始まるメソッドをクラス 'Tool' から全部表示する みたいな
306:デフォルトの名無しさん
08/07/23 04:59:02
Reflectorでも使うか、リフレクション使って自作したら?
307:デフォルトの名無しさん
08/07/23 05:26:40
Assembly.LoadFrom("Hoge.dll").GetType("Hoge.Tool").GetMethods()
.Where(m => (!m.IsPublic && !m.IsPrivate && m.Name[0] == 'A'))
.ToList().ForEach(Console.WriteLine);
とか
308:デフォルトの名無しさん
08/07/23 06:23:03
'A'))
やっぱり顔文字に見えるな
309:デフォルトの名無しさん
08/07/23 06:24:08
>>306
Reflectorは修飾子まで考慮してくれないんだよなぁ
自作してみるわ
>>307
3.5ってそんなキモイことできるんかwwすげーなwSTLみたいだw
310:デフォルトの名無しさん
08/07/23 06:57:53
>>308
ワロスw
311:デフォルトの名無しさん
08/07/23 10:56:44
繋げて書けるのはいいけどぬるぽが怖い
312:デフォルトの名無しさん
08/07/23 13:33:57
ブレークポイント置いてデバッグする時は複数行に分けるよね
313:デフォルトの名無しさん
08/07/23 18:36:29
ToList().ForEach()はムダだろ
IEnumerableに対するForEach拡張メソッドを自分で書くか素直にforeach使うべき
314:デフォルトの名無しさん
08/07/23 18:58:33
米国時間22日、マイクロソフトは「Xbox LIVE Community Games」を北米で今年後半から
開始すると発表した。その他の地域については2009年から逐次開始する予定。
Xbox LIVE Community Gamesは、XNA Game Studioで開発されたXbox360用ソフトを
Xbox Liveを通じ一般利用者へ販売することを可能とするサービス。
Xbox LIVE Community Gamesでの販売は、XNA開発者コミュニティ「XNA Creators Club」の
有料会員(年額9,800円)であれば誰でも行うことが可能となる。
販売価格については200〜800マイクロソフトポイントの間で自由に設定することができ、
手数料として売上の30%が引かれることとなる。
XNA Game Studioは、マイクロソフトが無償で公開しているVisual Studioをベースとした
ゲーム特化型の統合開発環境。.NET Framework及びDirectXをベースとしたライブラリ
「XNA Framework」を使用し、基本的には設定ひとつでXbox360及びWindowsへの両対応が
可能となる。
XNAについては、RPGツクールが次期バージョンでの対応を表明しており、日本での
普及にも期待がかかる。また、教育機関による学習教材としての採用も増加しており、
月刊ベーシックマガジンの休刊以降問題視されていた日本人ゲーム開発者の急激な
減少に歯止めをかける期待も持たれている。
URLリンク(news4xbox.blogspot.com)
315:デフォルトの名無しさん
08/07/23 19:00:00
XNAとC#関連のスレみてると何回もこれ読まされるんだが
316:デフォルトの名無しさん
08/07/23 19:01:42
そういう気分の時は「コピペ君て馬鹿だな、まで読んだ」と書くんだ
317:デフォルトの名無しさん
08/07/23 19:41:15
「コピペ君て馬鹿だな、まで読んだ」
ってことはさ、そのコピペの中に「コピペ君て馬鹿だな」って文言が含まれているって事だよね?
だとしたらそこそこまともな事言ってるって事になっちゃうよ。
318:デフォルトの名無しさん
08/07/23 20:02:51
>>315
巡回してるとこ見てきたら、6箇所で貼ってあった・・
コピペ君て馬鹿だな
319:デフォルトの名無しさん
08/07/23 21:38:55
どうせ数独とかマインスイーパーみたいなのが氾濫して
おわるんじゃねーの
320:デフォルトの名無しさん
08/07/23 22:58:03
ボンバーマンの超ぱちもんなら既にある
321:デフォルトの名無しさん
08/07/23 23:09:13
1時間もあれば作れるようなくそげーが氾濫することは目に見えてるけど
URLリンク(www.nicovideo.jp) を見る限り期待できるかも
X 期待できるかも
O 期待したい
322:デフォルトの名無しさん
08/07/24 01:05:08
文章の最後に「コピペ君て馬鹿だな」って書いておくと、
「コピペ君て馬鹿だな、まで読んだ」ってレスされても
即座に「最後まで読んだんかい!!」ってレスできる。
これ豆知識な。
コピペ君て馬鹿だな
323:デフォルトの名無しさん
08/07/24 01:16:40
僕は馬鹿なコピペ君です、まで読んだ。
324:デフォルトの名無しさん
08/07/24 01:20:46
>>323
なんということでしょう・・・orz
325:デフォルトの名無しさん
08/07/24 15:35:07
swichとforとifの組み合わせって速度にどれくらい差があるんでしょうか?
326:デフォルトの名無しさん
08/07/24 15:36:56
調べてみたら?
327:デフォルトの名無しさん
08/07/24 15:54:20
switch と if に for が絡むのがわからん
328:デフォルトの名無しさん
08/07/24 16:06:37
複数のコンポーネントがある時に、
label[i]みたいにインデクサを使いたいんですが、
コンパイラにlabelなんてねーよバーヤヽ(`Д´)ノ
って言われてしまいます。
やっぱり一行づつ書いていくしかないのですか?
329:デフォルトの名無しさん
08/07/24 16:08:15
もうちょっと具体例を
330:デフォルトの名無しさん
08/07/24 16:10:37
>>328
自分でコレクションに入れろよ。
331:デフォルトの名無しさん
08/07/24 16:31:29
>>329-330
しょうがないからLabel配列型の変数にいれてやりました。
コンパイラが面倒みてくれたらいいのに・・・
332:デフォルトの名無しさん
08/07/24 16:40:28
そんなキモいことされてたまるか
333:デフォルトの名無しさん
08/07/24 16:56:37
どう考えてもコンパイラじゃなくて、せいぜいライブラリのありがた迷惑だろ。
334:デフォルトの名無しさん
08/07/24 17:27:25
MenuItems.Addでメニュー項目を追加するときにイベントハンドラを指定しますが、
項目の数だけメソッドを用意するのが個人的に好きじゃありません。
各項目に共通のイベントハンドラを指定し、
その中でどの項目が選択されたのかを確認したいのですが、
このようなことは可能でしょうか。
335:デフォルトの名無しさん
08/07/24 17:28:10
sender
336:デフォルトの名無しさん
08/07/24 17:33:09
public void menuItem_Click(object sender, EventArgs e)
{
if (object.ReferenceEquals(sender, menuItem1))
{ ... }
else if (object.ReferenceEquals(sender, menuItem2))
{ ... }
}
337:デフォルトの名無しさん
08/07/24 17:50:18
>>335
>>336
サンクス!
338:デフォルトの名無しさん
08/07/24 18:04:23
Tag使えよ
339:デフォルトの名無しさん
08/07/24 18:10:25
うむ
340:デフォルトの名無しさん
08/07/25 01:38:05
プログラミングの初心者で恐縮ですが、質問です。
オセロゲームを練習として作ってみたいと考えています。
そこで、Panelを継承したクラスを作ってOseroPanelという名前にしました。
このOseroPanelを
this.Controls.Add(p);
とフォームに貼り付けました。
次にパネル側の描画処理を書きました。
一つはOnPaintをオーバーライドして描画しました。
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
e.Graphics.DrawLine(new Pen(Color.Red), 10, 100, 200, 100);
}
こちらはうまく動いています。
341:デフォルトの名無しさん
08/07/25 01:39:03
もう一つはイベントを使ってみたのですが、問題が発生しました。
VSを使って、イベントを自動作成し、
private void InitializeComponent()
{
this.SuspendLayout();
//
// OseroPanel
//
this.Paint += new System.Windows.Forms.PaintEventHandler(this.OseroPanel_Paint);
this.ResumeLayout(false);
}
private void OseroPanel_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawLine(new Pen(Color.Blue), 100, 10, 100, 200);
}
というコードを書きました。
どうやら
OseroPanel_Paint()メソッドが呼ばれていないようです。
原因がわかる人がいましたら教えてもらえるとありがたいです。
342:デフォルトの名無しさん
08/07/25 01:51:20
this.Paint += new System.Windows.Forms.PaintEventHandler(this.OseroPanel_Paint);
↓
this.OseroPanel.Paint += new System.Windows.Forms.PaintEventHandler(this.OseroPanel_Paint);
343:デフォルトの名無しさん
08/07/25 09:40:22
>>342
OseroPanelクラスのなかでやっているので
thisはOseroPanelを指しています。
344:デフォルトの名無しさん
08/07/25 11:09:12
×Osero
○Othello
345:デフォルトの名無しさん
08/07/25 11:18:37
取りあえずその記述だけでは原因不明なので
まずデバッガでInitializeComponent通ってるかどうかから確認
346:デフォルトの名無しさん
08/07/25 14:13:04
オセロは(TM)だから注意ね
347:デフォルトの名無しさん
08/07/25 14:16:22
TMならセーフじゃん
348:デフォルトの名無しさん
08/07/25 14:43:35
暑さでボケてたw
(R) だよ
349:デフォルトの名無しさん
08/07/25 15:43:20
>>345
orz
まさにそれでした。
InitializeComponent()の呼び出しは自分で書かないといけないんですね。
Oseroクラスのコンストラクタに書いてみたところ、
すべてうまくいきました。
どうもありでしたm(_ _)m
350:デフォルトの名無しさん
08/07/25 16:30:44
フォームアプリのForm1とかのように使い捨てのクラスはともかく、
継承クラスではイベントハンドラではなくOn〜メソッドのオーバーライドが推奨のはず
探したけどソースが見つからんorz
>>346-348
オセロ(玩具)とソフトウェアじゃあ区分が違うんじゃないか?
351:デフォルトの名無しさん
08/07/25 17:48:32
>>350
たしかにOnPaintをオーバーライドした方が、
コードがすっきりしますね。
352:デフォルトの名無しさん
08/07/25 17:57:31
>>340-351
ふらっと行け
353:デフォルトの名無しさん
08/07/25 18:42:36
一様乱数を生成する関数のソースについて質問があります。y=1/sqrt(2)*exp(-1/2*x*x)の計算で
In function `GaussRandom':: undefined reference to 'sqrt’と In function `GaussRandom':
: undefined reference to `exp'
というエラーがでて実行できません。もちろん<math.h>は定義しました。
レポート課題なのでマジで困ってます。是非教えてください。ソースを下に載せておきます。
ちなみにxが一様乱数で、yが正規乱数です。
double GaussRandom()
{
double x;
double y;
x=UniformRandom();
y=1/sqrt(2)*exp(-1/2*x*x);
return y;
}
double UniformRandom()
{
double x;
int r=1;
r=1229*r+351750;
x=r/1664501;
return x;
}
354:デフォルトの名無しさん
08/07/25 18:44:02
>>353
スレタイをよめ
355:デフォルトの名無しさん
08/07/25 18:57:48
>>353
>In function `GaussRandom':: undefined reference to 'sqrt’と In function `GaussRandom':
>: undefined reference to `exp'
翻訳するとだな
「型または名前空間名 'sqrt' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
型または名前空間名 'exp' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。」
だな。何に翻訳したかは秘密だ。
さらに言うとusing System.Math;が足りないなw
356:デフォルトの名無しさん
08/07/25 18:59:27
>>354 すいません。
357:デフォルトの名無しさん
08/07/25 19:09:17
>>353
マルチすんなゴミ
358:デフォルトの名無しさん
08/07/25 19:12:00
ReflectorでSystem.Randomクラスのコードをパクる奴とかいそうだな
359:デフォルトの名無しさん
08/07/25 19:23:59
>>355 ありがとうございます。
>>357 期限が迫ってたので色んな場所で聞こうと思っただけです。気を悪くしてすいません。
360:デフォルトの名無しさん
08/07/25 19:32:50
ほんとにKYですね^^
死んでください
361:デフォルトの名無しさん
08/07/25 19:35:51
気を悪くしてすいませんだと?
気を悪くしたのはこっちだ!クソが!
362:デフォルトの名無しさん
08/07/25 20:43:39
期限が迫ってたので色んな場所で聞こうと思っただけです
363:デフォルトの名無しさん
08/07/25 20:47:26
こういうゴミに教えてあげるような偽善者も死ねよ
364:デフォルトの名無しさん
08/07/25 21:43:47
自己中乙
365:デフォルトの名無しさん
08/07/25 22:26:13
レポートの最後に「参考:2ch プログラム板」って書いておけよ
366:デフォルトの名無しさん
08/07/25 22:36:26
>>361 気を悪くさせての間違いです^^
>>365 課題落とされるかもしれないので書けません 教えてくれた人ありがとうございました^^
367:デフォルトの名無しさん
08/07/25 22:36:57
今プログラミングスレがいっぱい上がってるがどゆこと?
368:デフォルトの名無しさん
08/07/25 22:45:14
>>367
なに言ってんだお前
369:デフォルトの名無しさん
08/07/25 22:46:18
しまった板違いwwwAA板じゃねえwwwww
370:デフォルトの名無しさん
08/07/25 23:00:15
>>369
斬新な板違いだなおい
しかもよりによってスレタイに[プログラム板]って付いてるこのスレで
371:デフォルトの名無しさん
08/07/26 01:30:27
なんでこんな荒れてんの?
372:デフォルトの名無しさん
08/07/26 01:35:00
荒れてないよ
373:デフォルトの名無しさん
08/07/26 12:06:15
突然すみません。
C/C++のように構造体配列の定数データを持ちたいんですが、
C#ではどうすればよいのでしょう?
374:デフォルトの名無しさん
08/07/26 12:21:19
無理
375:デフォルトの名無しさん
08/07/26 12:23:06
static readonlyな配列で良いんじゃね
376:デフォルトの名無しさん
08/07/26 12:30:22
static readonly な ReadOnlyCollection<T>
377:デフォルトの名無しさん
08/07/26 17:04:31
GDI+でICONへは変換不可ですか?
378:デフォルトの名無しさん
08/07/26 17:27:39
>>377
可能
Dim bmp As New Bitmap("hoge.bmp")
Dim ico As Icon = Icon.FromHandle(Bitmap.GetHicon())
Dim fs As New FileStream("hoge.ico", FileMode.Create)
ico.save(fs)
fs.Close()
ico.Dispose()
bmp.Dispose()
379:デフォルトの名無しさん
08/07/26 17:40:09
ども、やってみます!
380:デフォルトの名無しさん
08/07/26 18:15:04
ただし制限きついけどなー
381:デフォルトの名無しさん
08/07/26 19:11:37
>>378
意味不明な質問には「日本語で書け」と叱責してやるのが本人のためだと思うけど。
ああちゃんと嫌味の意味でVBで答えてるわけかw
382:デフォルトの名無しさん
08/07/26 19:33:38
>>381
そういうことwww
お前は、エスパーかw
383:デフォルトの名無しさん
08/07/26 22:03:26
Using使えよって思った。
384:デフォルトの名無しさん
08/07/26 22:04:52
キモすぎ
385:デフォルトの名無しさん
08/07/26 22:12:36
>>381
意味不明な質問には「日本語でおk」だろ?
386:デフォルトの名無しさん
08/07/26 22:15:29
意味不明な質問にわざわざ絡む奴ってなんなの?
いじめられっこ?
387:デフォルトの名無しさん
08/07/26 22:19:19
>>382
自作自演乙
388:デフォルトの名無しさん
08/07/27 04:59:50
>>381
二行目で気づいたならその時点で書き直せよ気持ち悪い
389:デフォルトの名無しさん
08/07/27 15:52:58
GraphicsクラスのDrawImageメソッドで
画像の表示位置や高さ幅は通常intで指定すると思います。
ところが、実はfloatで指定する方法も用意されています。
public void DrawImage(
Image image,
float x,
float y,
float width,
float height
)
floatで指定すると何かよいことがあるのでしょうか?
基本的には四捨五入でintに繰り上げていると思うのですが、
そのような理解で正しいでしょうか?
390:デフォルトの名無しさん
08/07/27 16:07:44
>>389
WMFとかベクター画用じゃね?
391:デフォルトの名無しさん
08/07/27 16:10:09
Graphicsの描画単位はPixelだけじゃないぜ?
392:デフォルトの名無しさん
08/07/27 16:14:24
DirectXで使うためでしょ
393:デフォルトの名無しさん
08/07/27 16:15:14
ピクセル単位が整数だとしても
縮小拡大の原点が0,0で固定されないで
指定点から始まると困ることが多数あるのです。
394:デフォルトの名無しさん
08/07/27 16:47:49
いやそういうことじゃないでしょw
>>391が言ってることが全てだよ。
よく言われることだが、そもそもピクセルなんていうのは
デバイス側の勝手な都合に過ぎん。
395:デフォルトの名無しさん
08/07/27 17:48:10
VB6時代にもTwipsとかあったな。
GraphicsUnit列挙体がGDI+で扱える単位すべてじゃね?
396:デフォルトの名無しさん
08/07/27 18:50:20
画像表示するアプリ作ったときWin32APIのStretchBlt使ってたら
スクロールの更新部分だけ描画させるたら非更新部分と結果がずれて困ったことあったな。
無効領域だけしか処理しないから全体を更新すればいいんだけど
大きい比率で拡大したときに表示してくれないから結局自前で処理するしかなかった。
GDI+が出たときに少数単位で渡したらずれなかった。
397:デフォルトの名無しさん
08/07/27 19:01:47
画像を反転させるには
RotateFlip(RotateFlipType.Rotate180FlipXY);
というメソッドを使えばいいことがわかりました。
画像Aと反転後の画像Bを作りたいのですが、
Cloneメソッドを使うと両方反転してしまいます。
Imageオブジェクトをコピーする良い方法はありますか?
398:デフォルトの名無しさん
08/07/27 19:09:50
RotateFlipしたあとにCloneしてるってオチじゃないだろうな
399:デフォルトの名無しさん
08/07/27 22:51:02
ものすごくヘビーな処理をしています
計算途中でスリープやサスペンドに入られるとちょっと困るので、計算中は一時防止したいのですが
何か良い方法はないでしょうか?
400:デフォルトの名無しさん
08/07/27 22:56:56
何か処理してれば普通サスペンドしないだろ
401:デフォルトの名無しさん
08/07/27 23:01:32
いや、寝る前に仕掛けて朝起きたらサスペンドしていてちっとも処理が進んでなかったです。
402:デフォルトの名無しさん
08/07/27 23:18:35
>>399
処理と重力定数は関係ない・・・
403:デフォルトの名無しさん
08/07/27 23:21:21
電源の設定でサスペンドしないように出来ない?
404:デフォルトの名無しさん
08/07/27 23:44:05
>>399
WM_POWERBROADCASTのPBT_APMQUERYSUSPENDの応答でサスペンド入りを拒否できるらしい。
405:397
08/07/28 02:27:50
>>398
違うようです。
シャローコピーのようで、
Imageクラスの中ではイメージ実態への参照(ポインタ)
を持っているようです。
一方、回転するのはイメージ自体です。
406:397
08/07/28 02:48:15
大ボケかましました。
RotateFlip(RotateFlipType.Rotate180FlipXY);
だと画像が回転せず
正しくは
RotateFlip(RotateFlipType.Rotate180FlipNone);
でした。
頭悪すぎてすみません。
暑さでやられましたorz
407:デフォルトの名無しさん
08/07/28 11:10:24
rubyにおけるmechanize的なクラスとか無いんですか?
408:デフォルトの名無しさん
08/07/28 11:40:56
よほど自明でない限りrubyのmechanizeを説明するのが先だろ
409:デフォルトの名無しさん
08/07/28 12:05:25
C#にはスクレイピング用の定番ライブラリはないんじゃないかな。
410:デフォルトの名無しさん
08/07/28 12:15:43
逆行列、最小二乗法のフリーのライブラリないでしょうか?
411:デフォルトの名無しさん
08/07/28 12:31:34
ライブラリっつーか、ソース探してきては
412:デフォルトの名無しさん
08/07/28 19:17:38
CLapackなんかの必要な関数だけC++/CLIでラップして使うのが楽
413:デフォルトの名無しさん
08/07/28 19:41:02
string に格納されたデータが整数に変換可能な形なら int に
浮動小数点形式なら float に変換する方法教えてください。
414:デフォルトの名無しさん
08/07/28 19:44:33
TryParse
415:デフォルトの名無しさん
08/07/28 19:44:49
TryParse
416:デフォルトの名無しさん
08/07/28 20:24:51
プロパティというのは、クラスのフィールドを外部に公開する時に、柔軟性や冗長性を持たせるために、
必要ならば何らかのラップ処理を行うためのものだと、今まで思っていました。
つまり、プロパティは必ずpublicなものしか存在しないのかと。
ところが、最近、外人さんのソースを読んでいると、すべてのフィールドに対してプロパティを用意して、
クラス内部のアクセスに対しても、privateのプロパティを経由して行っているプロジェクトが多いです。
個人的には、フィールドは小文字で、publicなプロパティは大文字の命名規則(Pascal)だったのですが、
外人さんの流れでは、privateなプロパティもPascal記法になっていて、
クラス内部のすべての操作が大文字から始まるメンバを操作しています。
皆さんはどうされてます?もしかして、外人さん流儀の方が主流なんでしょうか?
C#以外の言語も含めて、そっちの方が主流になるんでしょうかねぇ。
個人的には、ローカルなnullチェックなどはプロパティの中ではなく、メソッドの中で操作する前に
行うほうが行儀が良いんじゃないかと思ったりもするのですが‥‥。
417:デフォルトの名無しさん
08/07/28 20:42:03
>>416
質問の意図がクリアーじゃない気がするよ。
も一度他人の目線で自分の文章読みなおしてみ?
418:デフォルトの名無しさん
08/07/28 20:53:45
>>417
単に話題提起してるだけなので、こんなもんじゃないでしょうか。解析的に解ける問題でも無いし。
興味を持たない人には、一生縁のない内容でもあると言えるし。
おそらく、LL言語的にはプロパティはあって当然の記述なので、おそらく外人さんが正しいのでしょうが。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4933日前に更新/181 KB
担当:undef