09/04/19 08:38:49
>>239が一瞬HLSLに見えた
264:デフォルトの名無しさん
09/04/19 08:53:42
あんな見え見えの構ってちゃんの相手してやるんなら>>239に答えてやればよかった
もういないだろうけどscanfの引数は取得したい値を格納する変数のポインタを入れなきゃだめだよん
265:デフォルトの名無しさん
09/04/19 10:09:38
一章とかでscanf()してる入門書とかあるからなあ
266:デフォルトの名無しさん
09/04/19 10:47:06
いまだにCやるときはscanfを使う俺
なんで一行読み込みがgnuのgetlineしかねーんだよ・・・標準で作れよ
メモリ確保こわい
って感じ
267:デフォルトの名無しさん
09/04/19 18:12:40
fgets して sscanf するのが面倒だから
getopt に頑張ってもらうか適当な設定ファイル読ませるようにしちゃうなぁ。
つか C# 関係ないな。
268:デフォルトの名無しさん
09/04/20 02:23:31
たまに使うVC++でgetline()を使おうとして、「あれ?」と思う俺。
269:デフォルトの名無しさん
09/04/20 11:37:48
Collection系(例えばQueue)でロックされた状態で処理を行いたいとき
1.lock(独自のロックオブジェクト)
2.lock(対象.SyncRoot)
3.Queue.Synchronized(対象)
とか考えられるんですが
使い分けの方法がわからない
1・・・コレクションだけではなくその他の変数やオブジェクトもロックしたいときにまとめて一回でやりたいから使うかなと
2、3 この違いは一体何なのか教えてほしいです。
そして Queue.Synchronized でMSDN調べたら
同期されている (スレッド セーフな) Queue ラッパーを返します
とありますが、型が同じということだけはわかりますがこれはコピーされたオブジェクトなのかそれとも元の本体そのものなのか・・・
予想すると
3のラッパーはオブジェクトのディープコピーをかえしてきて読み取り専用的に扱う
削除なんかは3の操作ではできないから1,2の方法を使って要素を削除したり
こんな考え方でいいのでしょうか?
270:デフォルトの名無しさん
09/04/20 21:40:44
>>269
.Net Reflector
271:デフォルトの名無しさん
09/04/20 22:08:11
ソース公開されてるからReflector使わんでもええやん
272:デフォルトの名無しさん
09/04/21 05:09:56
ReflectorとReflectionは違うものですか?
273:デフォルトの名無しさん
09/04/21 05:15:22
>>272
うん
274:デフォルトの名無しさん
09/04/21 05:20:35
ツールか。新しい機能かとオモタ
275:デフォルトの名無しさん
09/04/21 08:45:40
>>269
どっちかっていうと1.2.が似てて、3.が違うよ
3はクラスメソッドがスレッドセーフになったコレクション。
Dequeue()やEnqueue()はスレッドセーフで実行できるけど、
列挙処理中はSyncRoot等でロックしないと別スレッドでの変更に対応できない
あとラッパーっていうのは元のオブジェクトに
新しい機能をかぶせるテクニックの総称だから元の本体だね
削除も普通にできる
276:デフォルトの名無しさん
09/04/21 08:49:30
object ICollection.SyncRoot
{
get
{
if (this._syncRoot == null)
{
Interlocked.CompareExchange(ref this._syncRoot, new object(), null);
}
return this._syncRoot;
}
}
277:デフォルトの名無しさん
09/04/21 11:09:13
説明ありがとうございます。
>>275
列挙している間に別スレッドからの追加・削除処理が入る場合は基本ロックが必要そうですね・・・
そこまで処理速度が必要そうなわけでもないので、ひとまずロックさせて使ってみようと思います。
>>276
結局は内部で専用のロックオブジェクトを提供してくれているだけという感じでしょうか
278:デフォルトの名無しさん
09/04/21 13:29:20
Shared code , Shared source といった類のキーワードでgoogle先生に聞けば以前はあっさり見つかっていたのに・・・
どこにいったんだろう?
VisualStudioのライブラリソースコード表示の説明リンクを次から1の直下に張り付けておいたら良いと思う。
誰か場所知っていたらリンク張って欲しいです。
>>277
実はソースコードみた方が圧倒的に正確だしてっとりばやい、凄い単純な実装なんで。
URLリンク(www.microsoft.com)
とりあえず VisualStudio からではないですが、ソースコードです。
ダウンロードしてgrepして探してみてください。
279:デフォルトの名無しさん
09/04/21 18:40:07
条件によって異なる複数の変数(string或いはint)を
配列化して(一列に並べて)、各変数に代入するメソッドを変数の個数だけ実行したいのですが、
デリゲートを使うとオーバーロードできないため、Object型を渡して判別するという事も考えたのですが納得できません。
unsafeのポインタを使うべきなのでしょうか。
280:279
09/04/21 18:52:28
すみません。具体的に言うと
foreach (string tmp in bufStr)
{
str = DataTypeCheck(tmp);
if (str == null)
{
//・・ここでメソッドを呼び出してそれぞれ代入
}
else if (str == "case1")
{
//・・代入する変数のリストを作成
}
else if (str == "case2")
{
}
}
データ(string[])は以下のようになっており
case1
a
b
case2
・・・
この場合はa,bをcaseに応じた変数に格納します。
281:デフォルトの名無しさん
09/04/21 19:23:47
具体的といいつつ酷く分かりづらいな
Func<T>でも使えばいいんじゃね
privateなメソッドなら型制約とかもいらんっしょ
282:279
09/04/21 19:53:25
>>281
説明下手で、すみません。
ググりましたが、おそらくお察しの通りです。
感謝いたします。m(_ _)m
283:デフォルトの名無しさん
09/04/22 19:00:44
Dispose()のCLRにマネージされていないデータを解放するという説明を読んで思ったのだけど、
CLRにマネージされてるかどうかってのはつまりどういう事なの?
284:デフォルトの名無しさん
09/04/22 19:12:25
ざっくりいってIDisposableがマネージド、IntPtrがアンマネージド
285:デフォルトの名無しさん
09/04/22 19:23:50
>>283
C++なんかだと、COMやスマートポインタを使って、リファレンスカウンタで生存管理をしているんだが
この方式だと、参照がなくなると同時に解放処理がされる。
対して、ガベージコレクタを使った.NETでは解放処理はメモリーが尽きたとき。
で、C++では参照がなくなると同時に解放処理を行う事を前提に組んであるケースが多いんだ。
だからC++の場合ちゃんとリファレンスカウンタで管理されているファイルシステムオブジェクトなどはこのタイミングでClose処理もされるのでCloseを忘れていても大丈夫
アンマネージをラップしたクラスを作るとこれが問題になることがある、これ明示的に開放する関数がDisposeだよという意味。
あくまでもラップした先のオブジェクトの解法、ラッパ事態はマネージドなので、ガベージコレクタで解放される。
たとえば.NETでStream系のオブジェクトでこれを忘れていると、Closeしわすれているとガベージコレクタで回収されるまでOpenされっぱなし。
286:デフォルトの名無しさん
09/04/22 19:42:28
>>283
CLRの関与していないところで確保したもの。主にWin32ハンドルとか。
287:デフォルトの名無しさん
09/04/23 13:27:12
IntPtrにAPIで取得したハンドルなんかもIntPtr.Zeroとかやった方が
いいんですかね…。基本的にマネージド以外の方法で取得したものは
全て何かしらの処理を加えた方がいいんでしょうか。
288:デフォルトの名無しさん
09/04/23 13:35:57
意味が分からん
アンマネージドリソースの解放ってのはIntPtr.Zeroを変数に代入することじゃないぞ
CloseHandleとかDeleteObjectとかのAPI関数呼び出しのことだぞ
処理した方がいいかどうかじゃない、必要な手順で解放する必要がある
もちろんシステムグローバルな値とかでその必要が無いものもあるがな、ウィンドウハンドルみたいな
289:デフォルトの名無しさん
09/04/23 14:14:38
請求書捨てても借金ちゃらにならない感じ
290:デフォルトの名無しさん
09/04/23 22:32:21
あとIntPtrを生で使うんじゃなくてSafeHandle使え
291:デフォルトの名無しさん
09/04/23 22:37:01
VisualStudio2008のツールボックスで使われているみたいな、プッシュピンで表示/非表示を切り替えられるGUIは、.
Netの標準コントロールとしては提供されていないのでしょうか?
市販コントロールには似たようなものがあるようなのですが。
よろしくお願いします。
292:デフォルトの名無しさん
09/04/23 22:48:19
標準には無い
293:デフォルトの名無しさん
09/04/23 23:42:08
オレそれ市販の買おうか真剣に悩んでる。
devexpressの試用版DLしたとこ。
294:デフォルトの名無しさん
09/04/24 00:05:34
>>292,293
残念です。Microsoftも便利な部品はどんどん使えるようにして欲しいですね。
295:デフォルトの名無しさん
09/04/24 00:11:37
>>294
どんどんしてるんだけど、今、SilverlightとかASP.NETとかの優先順位がむちゃくちゃ高いから、
VS風ドックコントロールは、ちょっとやそっとの要望あっても当分後回しになると思う。
296:デフォルトの名無しさん
09/04/24 08:36:28
>>287
API直接操作するなら、APIの仕様通りに使わないとアカンで
マネージド側の特徴もちゃんと考慮して、アンマネージドの処理がアンマネージドの仕様に合うように。
297:デフォルトの名無しさん
09/04/24 09:05:35
【知的財産】中国:ITソースコード強制開示強行へ・制度を5月に発足…国際問題化の懸念 [09/04/24]
スレリンク(bizplus板)
298:デフォルトの名無しさん
09/04/26 16:20:35
質問ですが、Flashのムービークリップの様に、
同じ性質を持ったオブジェクトの中にオブジェクトを上限なく動的に入れる方法はありませんか?
299:デフォルトの名無しさん
09/04/26 16:29:21
List<T> じゃあかんの?
300:デフォルトの名無しさん
09/04/26 16:32:52
表示上のオブジェクトという話かな?XAMLでどうよ。
301:298
09/04/26 16:56:29
>299-300
ありがとうございます。そこまで複雑な事ではないです。
302:デフォルトの名無しさん
09/04/26 17:06:03
じゃあどういうことよ、なのよ
303:デフォルトの名無しさん
09/04/26 17:09:44
int[] array = new int[999999];
とでもやって多めに確保しとけ
304:デフォルトの名無しさん
09/04/26 17:11:07
>>301
むしろ>>298の説明のほうがそれいじょうに複雑なことではあります
305:デフォルトの名無しさん
09/04/26 18:35:03
Compositパターンのことを言ってるんじゃないの?
306:デフォルトの名無しさん
09/04/26 18:35:51
「コンポジットパターン」と言いたいんじゃないかな?
ということで、これでぐぐってみてください。
307:デフォルトの名無しさん
09/04/27 08:52:01
このスレはやさしいエスパーが多いな
308:デフォルトの名無しさん
09/04/28 00:51:39
FormBorderStyle.Noneにして標準のタイトルバーとか表示させないで独自のものを表示したりしています。
タスクバーの右クリックでのシステムメニューは下のURL等を見て表示できるようになったんですが、最小化などが無効になったままです。
これは何かメッセージを処理したりすれば有効にさせることなど出来るのでしょうか?
最大化などもFormのWindowStateをNormalのまま最大化らしくふるまうように無理くりやっています。
もしくはこんな風な独自のウィンドウを作る時の従うべき方針などあれば是非是非エロイ人
309:308
09/04/28 01:11:26
さーせん、const int WS_MINIMIZEBOX = 0x20000;
とかをCreateParamsのStyleに追加したら最小化も表示されたっす。
310:デフォルトの名無しさん
09/04/28 01:39:19
Graphicsに任意のControlを描画することって出来ます?
var webControl=new WebControl()
webControl.Draw(graphics);
みたいな感じで。
311:デフォルトの名無しさん
09/04/28 01:44:28
Excel 2003 vbaの関数をC#から呼んでるんですが
実行時にvba内のブレークポイントで処理を止めるには
どうしたらいいんでしょうか。
312:デフォルトの名無しさん
09/04/28 02:05:10
>>310
でやってみていかがでしたか?
313:デフォルトの名無しさん
09/04/29 18:41:06
public partial class Form1 : Form
{
[DllImport("libmecab.dll")]
extern static int mecab_new2(string arg);
[DllImport("libmecab.dll")]
extern static string mecab_sparse_tostr(int m, string str);
[DllImport("libmecab.dll")]
extern static void mecab_destroy(int m);
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int mecab = mecab_new2("");
string s = mecab_sparse_tostr(mecab,textBox1.Text);
mecab_destroy(mecab);
textBox2.Text = s;
}
}
これがXPでは動くのだけど、Vistaでは動かない。
mecab_sparse_tostr(mecab,textBox1.Text); で
System.AccessViolationException はハンドルされませんでした。
Message="保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。"
がでる。
意味がわからない。なぜ?
314:デフォルトの名無しさん
09/04/29 18:51:15
そのメカブってどこからもってきてんのよ
315:デフォルトの名無しさん
09/04/29 18:55:02
これ。
URLリンク(mecab.sourceforge.net)
316:デフォルトの名無しさん
09/04/29 18:55:19
オレも何かメカブそば食いたくなったわw
317:デフォルトの名無しさん
09/04/29 18:58:36
実はVista x64版だったというオチ、とか
318:デフォルトの名無しさん
09/04/29 20:04:16
>>317
それはさすがに大丈夫だった。
また、Mecabインストール時についてくるEXEは、普通に動きます。
319:デフォルトの名無しさん
09/04/29 20:06:30
とりあえずpInvoke行って宣言正しいかみてこようず
320:デフォルトの名無しさん
09/04/29 20:37:13
>>313
いま実際に動かしてみた
返値がStringだとマーシャラがギブアップするみたい
IntPtrで受けてMarshal.PtrToStringAnsiとかで文字列変換すべし
321:デフォルトの名無しさん
09/04/29 21:21:30
ref string でもいけそうな気がする。
322:デフォルトの名無しさん
09/04/29 21:28:24
返値にrefは使えない
エラーが出る原因だけど、あくまで推測レベルだが
返値にStringを指定した場合UnmanagedType.BStrならSysFreeStringが、
それ以外ならLocalFreeだかCoTaskMemFreeだかが自動的に呼び出されたはずなんで
メモリ周りの保護の強化との兼ね合いと思われる
323:デフォルトの名無しさん
09/04/29 22:10:13
>>320 >>322
ありがとう。XP、Vista両方動いた。
324:デフォルトの名無しさん
09/04/30 09:23:57
DataGridviewって動的列つかったCross集計もできないし機能ショボスギですね 代わりにMSレポートのマトリックス使ってますが将来DataGridviewにGrapeCityのGridみたいな機能が付加されることはないでしょうか
325:デフォルトの名無しさん
09/04/30 11:46:10
高機能すぎると独禁法が面倒なんだ
326:デフォルトの名無しさん
09/04/30 14:35:30
コンポーネントは機能が少ないほど良い。
327:デフォルトの名無しさん
09/04/30 19:31:39
×コンポーネントは機能が少ないほど良い。
○コンポーネントは機能が洗練されているほど良い。
328:デフォルトの名無しさん
09/04/30 21:23:18
>>326機能ゼロが最高だよね。
329:デフォルトの名無しさん
09/04/30 21:52:40
せめてAlt+F4で終了する機能ぐらいはつけてくれ
330:デフォルトの名無しさん
09/04/30 22:54:12
ListView を View == Details で使っていて、
選択された行をタブ区切りでクリップボードに転送してみようと思っているのですが
簡単な方法もしくは、一般にListViewからクリップボードへの定型的なやり方ってありますか?
331:デフォルトの名無しさん
09/04/30 23:02:53
1パターンしかないと思うが 細かい差異はあるかも知れんけど
332:デフォルトの名無しさん
09/05/01 02:27:08
C++で
const int data[] = {1, 2, 3, 4};
のようにやっていたのを
C#で書き直したいんだけど、
const int[] data = {1, 2, 3, 4};
とか
const int[] data = new int[]{1, 2, 3, 4};
って書くと文句言われる。
int[] data = {1, 2, 3, 4};
なら、文句言われなくなるんだけど、
C#でconst配列の初期化ってどうすればいいの?
333:デフォルトの名無しさん
09/05/01 02:29:31
そんなもの無い
dataそのものへの代入不可ならreadonly
要素の変更不可ならReadOnlyCollection<T>でラップ
334:デフォルトの名無しさん
09/05/01 02:31:20
private readonly int[] data = new int[] {1,2,3,4};
335:デフォルトの名無しさん
09/05/01 11:22:09
>>334
配列の要素に書き込めます
336:デフォルトの名無しさん
09/05/01 11:37:53
>C++で
>const int data[] = {1, 2, 3, 4};
は要素の書き換え可なの?
337:デフォルトの名無しさん
09/05/01 12:22:30
>>336
それは
int const data[] = ...
と同義だから、constはintに掛かってて、要素は書き換えられない。
338:デフォルトの名無しさん
09/05/01 13:03:46
スレ違いだが、
>>336
要素の書き換えは不可。
>>337
前半がウソ。それは同義ではない。
339:337
09/05/01 13:40:55
ごめん適当に書いたんだけど、C++とCで違いがあるの?
リンケージ変わったりとか?
340:デフォルトの名無しさん
09/05/01 14:16:41
static または auto に宣言しているなら変わらないかと、つか C# スレですが
専門のスレで聞いた方が良いで
341:デフォルトの名無しさん
09/05/01 14:21:46
>>335
readonly System.Collections.ObjectModel.ReadOnlyCollection<int> data = Array.AsReadOnly(new int[] { 1, 2, 3 });
こうかな、使ったことないんで自分で確かめてくれ。
342:デフォルトの名無しさん
09/05/01 14:23:28
読み取り専用その他、各種アダプタ類は、class に static 関数として定義されている事が多いんで、いろいろ見てくらはい。
343:デフォルトの名無しさん
09/05/01 16:36:37
メインのフォームから別スレッドを起動して、そのスレッドからフォームのテキストボックスにアクセスすると
CrossThreadMessagingExceptionが投げられるのですが、どのように回避するのが良いでしょうか?
344:デフォルトの名無しさん
09/05/01 16:42:06
コントロール スレッド でぐぐれ
345:デフォルトの名無しさん
09/05/01 17:48:18
スレッドをAbort()した後に、同じスレッドをStart()すると、
ThreadStateException
{"スレッドが実行中か、または終了しています。再起動できません。"}
が投げられます。
一度Abort()したスレッドを再開するにはどうすればよいでしょうか?
毎回new Threadをし直す必要があるのでしょうか?
できれば、new Threadはアプリ起動時に1度だけで済ませたいです。
346:デフォルトの名無しさん
09/05/01 18:00:27
メッセージどおり、Abortしたら再起動はできない
つーかAbortなんか使っちゃダメ SuspendとかResumeとかも禁止
フラグとかでスレッド自身が自分の状態を管理するようにする
別にThread作りなおしてもかまわんとは思うが
347:デフォルトの名無しさん
09/05/01 18:08:39
自分も独学でフラグで誤魔化したので、
スレッドの待機をメッセージが無い.NETでどうするか疑問だった
マジでみんなフラグ管理で逃がしてるの?
348:デフォルトの名無しさん
09/05/01 18:48:39
>>346
Resume、Suspendは「使用しないでください」と書いてありますが、Aboteには書いていません。
何故、Abortを使うのはダメとおっしゃっているのでしょうか?
349:デフォルトの名無しさん
09/05/01 18:52:43
>>348 マジ?どこどこ??
350:デフォルトの名無しさん
09/05/01 18:56:26
>>348
メモとかに書いてるっしょ どこで終了するか分からないからオブジェクトが不完全な状態になりうるとか
更には確実に終了されるかどうか保証できないとか実にやばそうな匂いが漂ってくる
351:デフォルトの名無しさん
09/05/01 19:14:36
>>349
Visual C# Express 2008のインテリセンス
>>350
そうは書いていないようです
352:デフォルトの名無しさん
09/05/01 19:26:48
インテリセンスて
ヘルプの解説見ろよ……
353:デフォルトの名無しさん
09/05/01 19:35:28
>>352
ヘルプの解説でも、
SuspendとResumeの項には
「メモ : このメソッドは,互換性のために残されています。」
「[ObsoleteAttribute("Thread.Resume has been deprecated. Please use other classes in System.Threading, such as Monitor, Mutex, Event, and Semaphore, to synchronize Threads or protect resources. URLリンク(go.microsoft.com)", false)] 」
とありますが、
Abortの項にはありません。
詳しくはヘルプをご覧ください。
354:デフォルトの名無しさん
09/05/01 20:21:44
Thread.Sleep() に Timeout.Infinite を渡す。
再開は Thread.Interrupt() で ThreadInterruptedException をスローさせる。
355:347
09/05/01 21:40:05
さんくす
Thread.Interruptのコード例でsleepSwitchフラグの位置がイマイチ納得いかなかったけど
>>354に書いてあるように使うよ
356:デフォルトの名無しさん
09/05/01 22:04:03
>>347
一般にはフラグは使わない、イベントやセマフォやミューテックスの類を使って制御する。
フラグは簡単にミスするしバグりやすいよ、CPUパワーは無駄にするし、スレッドの実行優先順位も狂って非効率になる。
357:デフォルトの名無しさん
09/05/01 22:10:40
再開はそれでいいんだけど休止をどう伝えるのかイメージつかないんですが
358:デフォルトの名無しさん
09/05/01 22:25:42
>Thread.Interruptのコード例でsleepSwitchフラグの位置
デバッガで確認したけど、Thread.SpinWait(10000000);の行には行かないね。
シングルコアだとJoin呼ぶまでスレッド動かないからだね。
試しにInterrupt()のあとでThread.Sleep()入れてメインスレッドをスリープ待機に
入れちゃうとThread.SpinWait(10000000);がThreadInterruptedException起こすし。
マルチコアだと動かないんじゃないか?このサンプル。
359:デフォルトの名無しさん
09/05/01 22:48:07
>>357
メモリ操作オンリーの計算なら止めてしまっても問題ないと思うが
普通にいろいろなリソースを操作しているなら勝手なタイミングで止められたらマズくね?
もちろん上記のような特殊な状況があるならそれこそSuspendしちまっても全然問題ないと思われますけど。
普通の状況では、イベントを確認して問題なければそこで止める。
360:デフォルトの名無しさん
09/05/01 23:04:40
Sleepする前にInterruptされていたら停まらないでThreadInterruptedException起こすし
問題ないかを確認するのはInterruptする側でしろということじゃないかな。
361:デフォルトの名無しさん
09/05/01 23:07:19
なんつーか、AbortにしてもInterruptにしても、これらの操作はスレッドに対する最終手段だぜ
普通に使うものじゃない
362:デフォルトの名無しさん
09/05/01 23:09:02
同期を使わないなんてアリエナイ。
363:デフォルトの名無しさん
09/05/01 23:11:25
いや、開発するアプリの種類によるか・・・
スレッド自体、使わない人は使わないんだし。
364:デフォルトの名無しさん
09/05/01 23:11:48
スレッドの外部から停止再開させたいなら、同期オブジェクトを使おうが
結局フラグ的な使い方をすることになりそうな気がする。
365:デフォルトの名無しさん
09/05/01 23:13:55
>>364
フラグだとvolatile付け忘れたり、メモリーバリア忘れたり、素人には難しいぞ。
366:デフォルトの名無しさん
09/05/01 23:23:06
ManualResetEvent だともろフラグだ。
そういえばBackgroundWorkerの実装をみると
volatileもmemorybarrierも使ってなかったのを思い出した。
367:デフォルトの名無しさん
09/05/01 23:24:28
つかEventはマルチスレッド用のフラグですから
セマフォはマルチスレッド用のカウンタですから
368:358
09/05/02 03:35:46
嘘こいてた。
>入れちゃうとThread.SpinWait(10000000);がThreadInterruptedException起こすし。
起きない。そもそも待機してない風?
>スレッドを iterations パラメータで定義した時間の間待機させます。
ってヘルプにあるのに・・・ある・・・定義した時間って単位はいくらだ?フェムト秒?
Causes a thread to wait the number of times defined by the iterations parameter.
・・・誤訳かよ!
待機とブロックと中断の用語がなんか変な気もするし。日本語ヘルプはだめすぐる。
369:デフォルトの名無しさん
09/05/02 03:40:54
WCFとかAzureの質問ってここでしていいのかな。
Azure SDKのdevelopment fabric上でWCFサービスを動かすと、
127.0.0.1からはアクセスできるのに、自分のホスト名から叩くとアクセスできなくて、
俺の設定ミスなのかAzure SDKのバグなのか分からないんだけど。
解決策を知ってる人がいたら教えて欲しい。
370:デフォルトの名無しさん
09/05/02 03:56:03
切り分けしようぜ
371:デフォルトの名無しさん
09/05/02 03:56:30
手元に無いんで試してないがエスパーしてみると
リスナーでIPAddress.Anyとすべきところがそうなってないとか
372:デフォルトの名無しさん
09/05/03 10:20:58
>設定ミスなのかAzure SDKのバグ
自分のプログラムが悪いとはこれっぽっちも考えてないのね
373:デフォルトの名無しさん
09/05/03 11:22:10
>>372
「俺」って言うのは日本語で「自分」を示す一人称の一つだよ。
374:デフォルトの名無しさん
09/05/03 11:42:24
設定ミスと考えてるってことはプログラムは悪くないと思ってるってことだろ
375:デフォルトの名無しさん
09/05/03 11:44:41
設定はプログラムでするだろ
376:デフォルトの名無しさん
09/05/03 12:15:09
何言い返してんだよ、本人か?
そうでなけりゃ、自分のプログラムミスを設定ミスと言い直してごまかす人か?
377:デフォルトの名無しさん
09/05/03 12:58:12
あ、回答どうも。
>>370
がんばってみたんだけど無理だった。。
とりあえず、MS提供のサンプルで同じことが起こるのは確認済み。
別環境でやっても同じく。
>>371
なるほど。そういうオプションがあるのか。
IISでその辺設定するにゃどうしたらいいんだろ。調べてみますわ。
>>372
ランタイムの初期化って設定って言いませんかねぇ。
あと、言うの忘れてたけど.svc使ってIISの機能でホスティングさせてたんで。
378:デフォルトの名無しさん
09/05/03 13:43:49
WCFはIISでホスティングさせているか否かでだいぶ違うから、
そういう大事なことは先に言えよな。
あとはトランスポートになに使ってるかかな、BasicHttpBindingとかそんなの。
379:377
09/05/03 14:05:03
失礼(´・ω・`)
バインディングはBasicHttpBindingにしてる。
ウィザードのデフォルトはWebHttpBindingだけど、
それだとそのまま使うとなんか例外投げたので。
とりあえず、MSの開発者側も認識している既知の問題としては、
WCFアプリをAzureにうpすると、自分のホスト名を、
ユーザが使うロードバランサのアドレス(URLリンク(***.cloudapp.net))ではなく、
分散環境内でアプリが実際にロードされている鯖(URLリンク([guid].cloudapp.net))のもの
として認識してするせいで、それをendpointとしてWSDLを生成してしまう、
というのはどっかで見かけたけど、それがこの問題とも関連しているのかよく分からない。
380:デフォルトの名無しさん
09/05/03 14:06:36
ちなみにこれ。
URLリンク(code.msdn.microsoft.com)
381:デフォルトの名無しさん
09/05/03 14:10:18
内部識別子でWSDLを公開している様子
URLリンク(wcfazure.cloudapp.net)
URLリンク(wcfazure.cloudapp.net)
けど、ローカルで動かす分には鯖名自体は(もちろん)合ってるから関係ないはずではあるんだけど。
382:デフォルトの名無しさん
09/05/04 15:59:03
まずはIISで動かしているのかASP.NET開発サーバーで動かしているのか確認かな。
後者なら127.0.0.1(localhost)しか受け付けない。
タスクトレイにASPNET開発サーバーアイコンが表示されているようなら後者。
IISで動いているなら、コンピューターの管理からIISの設定を確認する。
まずWEBサイトの識別のIPアドレスで「未使用のIPアドレスすべて」になっているかどうか。
ここが127.0.0.1になっていればそれでしか繋がらない。
次にこのアプリの仮想ディレクトリを確認でセキュリティ関係に矛盾がないか確認。
よくやってしまうのが、統合認証+匿名認証の設定になっていて、
WEBで公開しているディレクトリにIUSR_xxxxのアクセス許可がないケース。
統合認証で認証された場合は問題ないが、匿名の場合にアクセス拒否を食らう。
383:デフォルトの名無しさん
09/05/04 17:09:52
>>382
ありがとう。
いま、手元に環境がないので、後日確認してみて報告しますわ。
384:デフォルトの名無しさん
09/05/04 18:30:41
C#でテキストを1行ずつ読み込み、条件に合った行を取得するような簡単なものを組んでいるのですが、
条件に合った行から連続する3行とかを取得するにはどうすれば良いのですか。
初歩的かもしれませんが、ご教示願います。
385:デフォルトの名無しさん
09/05/04 18:32:17
>>384
とりあえず下の場合の動作は?
テキスト
1234
1234
1234
abcde
abcde
abcde
条件: 1234
386:デフォルトの名無しさん
09/05/04 18:37:32
>>384
条件に一致した行のインデックスとって自分でそこから2行読めば?
387:デフォルトの名無しさん
09/05/04 18:41:59
なんかJavaより面倒そう
388:デフォルトの名無しさん
09/05/04 18:42:02
var result = new List<string>();
int flag = -1;
foreach (string line in lines)
{
if (条件に合ってる行の場合)
{
flag = 0;
}
if (flag =! -1)
{
result.Add(line);
flag++;
if (flag > 3)
{
flag = -1;
}
}
}
389:デフォルトの名無しさん
09/05/04 18:50:20
=! だと・・・?
390:デフォルトの名無しさん
09/05/04 19:08:04
grepと同じ挙動ならこんな感じか
IEnumerable<string> Grep(IEnumerable<string> source, string pattern, int after) {
int n = 0;
foreach (var line in source) {
if (line.Contains(pattern)) n = after + 1;
if (n > 0) {
n--;
yield return line;
}
}
}
391:デフォルトの名無しさん
09/05/04 19:25:31
>>384
bbbが条件だとして、そこから3つを取得
string[] list = { "aaa", "bbb", "ccc", "ddd", "eee" };
var result = list.SkipWhile(s => s != "bbb").Take(3);
392:デフォルトの名無しさん
09/05/04 19:44:16
linqを使いたいお年頃なんですね
393:384
09/05/04 20:03:01
返事が遅くなりました。
1234
aaa
bbb
ccc
2345
ddd
eee
fff
のようになっていまして、ReadLineで順に読んでいって、1234を発見したときに、
aaa、bbb、cccの3行を取得するようにしたいです。
1234の行は取得できるのですが、その次の行を読んでbreak;の方法がいまいちわかりません。
394:デフォルトの名無しさん
09/05/04 20:10:11
もし1234が見つかったらのifステップ中は
ReadLine();
ReadLine();
ReadLine();
じゃだめなの(;´Д`)
395:デフォルトの名無しさん
09/05/04 20:10:39
>>393
1234が2回以上あらわれることはあるか、
また1234に続く3件のうちに1234が含まれていた場合の扱いは?という確認だろ。
そういうことはありえないという条件でもよいのだが。
その条件が確定すれば簡単だよ。
396:デフォルトの名無しさん
09/05/04 20:16:30
すみません。おそらくすごい初歩的なことだと思います。
検索する行(この場合は1234)は、他の行には一切ありません。
>>394さんの3回記述をするのは、次の2行も取得できるということですか?
Webはいろいろ調べてみたのですが、1行ずつ読み込む方法しか書いてなかったもので。
397:デフォルトの名無しさん
09/05/04 20:30:44
>>385はスルーですかそうですか
398:デフォルトの名無しさん
09/05/04 20:31:52
>>391はスルーですかそうですか
399:デフォルトの名無しさん
09/05/04 20:33:15
>>398
いやまて391は流石に役に立たないだろう根本的な部分で
400:384
09/05/04 20:41:24
>>385を書かれた時点で自分の伝えたいことが伝わってないことがわかり、をれを参考にして例示を上げてみました。
スルーするつもりはありませんでしたのでご容赦ください。
今>>394の方法でやってみたところ、思った通りの挙動が確認されました。
まだ本片手で勉強している最中ですので、このような質問内容になったことをお詫びいたします。
みなさん、ありがとうございました。
401:デフォルトの名無しさん
09/05/04 20:59:57
ReadLine()は
今まで読んだ行の位置からスタートして
次読み込む行を調べて
その行に移動して
その行に書いてあることを読んで
今読んだ行を覚えておいて
読んだ内容を返す
っつー動作をするんじゃね?
402:デフォルトの名無しさん
09/05/05 17:19:16
ちなみに和布蕪(めかぶ)は, 作者の好物です.
403:デフォルトの名無しさん
09/05/07 00:49:52
.net framework って、普通1.1なの?
2.0や3.0, 3.5って企業や業務アプリで使ってないノア?
404:デフォルトの名無しさん
09/05/07 00:52:12
使っていいよ。
405:デフォルトの名無しさん
09/05/07 00:53:08
2.0は十分なシェアあるだろうが可能な限り低いバージョンでやるべきだろ
406:デフォルトの名無しさん
09/05/07 01:03:04
ほとんど2.0じゃないかな。1.1まではベータ版みたいなものだし。
407:デフォルトの名無しさん
09/05/07 01:10:24
FrameworkClientProfileで開発しとけば色々便利
408:デフォルトの名無しさん
09/05/07 01:22:03
俺様メモからの引用
--
.NET Framework 3.5 Client Profile
3.5 SP1のサブセット
インストール可能な環境は
Windows Server 2003; Windows Server 2008; Windows Vista; Windows XP(SP2以降)
であるが、さらに次の条件が付加されるため実質XP(SP2以降)だけが対象となる。
フルセットの.NET Frameworkが導入されていないこと。(2.0以降だけでなく1.1や1.0も!)
フルセットの.NET Frameworkがすでに導入されている場合に
Client Profileのインストーラは3.5SP1フルセットのインストールを行う。
409:デフォルトの名無しさん
09/05/07 01:40:15
3.5 SP1
410:デフォルトの名無しさん
09/05/07 01:41:20
3.5 SP1 フルインストールってすごい長いんだよな・・・
411:デフォルトの名無しさん
09/05/07 02:18:57
>>394で正解とか他の解答者がさすがにかわいそうすぎたw
412:デフォルトの名無しさん
09/05/07 02:19:21
Silverlightで皆幸せ
413:デフォルトの名無しさん
09/05/07 03:58:32
和暦のカレンダーコントロールが必要になった
めんどくさいからだれか知ってたらサンプルのページ紹介か作ってくれw
サードパーティはバグに引っぱられるからかるからなるだけ使いたくねえ…
もう和暦とか辞めればいいのに
西暦で統一してぇ・・・
414:デフォルトの名無しさん
09/05/07 04:07:32
天皇制がある限り無理
415:デフォルトの名無しさん
09/05/07 07:10:32
面倒だけどそんなに手間じゃないよな
416:デフォルトの名無しさん
09/05/07 11:28:41
まあ、「今後は」西暦に統一したとして、
過去に作った分にまで遡及させるのは無理だから
実際に和暦が消えるのは数十年後よ。
417:デフォルトの名無しさん
09/05/07 11:37:04
太陽暦移行後だけでいいなら簡単だろうな。
418:デフォルトの名無しさん
09/05/07 11:59:10
普通は平成、昭和、大正、明治をサポートすれば大丈夫なんだろうけど、
お寺の過去帳データベースを作ったときはまいったな。
419:デフォルトの名無しさん
09/05/07 13:47:29
和暦とか旧暦とか六曜とか月齢とかまとめて計算してくれるクラス欲しいな
海外ローカルも含めて国際カレンダークラスみたいなもの。
420:デフォルトの名無しさん
09/05/07 13:50:57
暦計算だけならCalendarクラス使えばいいだろう。
六曜や月齢はないが。
421:デフォルトの名無しさん
09/05/07 17:17:40
和歴はあってもイイけど業務で使うのは辞めて欲しい
役所が一生懸命使ってる限りは無理だろうけどさ
422:デフォルトの名無しさん
09/05/07 17:36:57
和暦に命をかけてるんじゃないかってほどこだわってた客がいたな
昭和何年何月何日は存在しないから入力できないようにしてくれとか
結果的にあってんだからいいんだよ!
423:デフォルトの名無しさん
09/05/07 18:14:23
世界のローカル暦サポートなんて、Unicodeの比じゃない難事業だぞ。ヨーロッパ各国に限っても、
ユリウス暦からグレゴリウス暦の移行期は国ごとに日付が違うし、ユリウス暦の初期は閏年が
いつだったのかわからないし、ユリウス暦導入前は最高神祇官が勝手に閏年を決めるし、一方
ギリシアではポリスごとに暦が違うし……
日本だって南朝と北朝で暦が違っていたり、暦書がなくて暦を復元できない時代があったり、
ああもう面倒くせえ
424:デフォルトの名無しさん
09/05/07 18:16:23
旧暦の暦の正当性は閏月とかあってとてもじゃないけど保障できない。
さきの過去帳DBなんだけど、古いのはもう計算じゃ出せなくてテーブルで持つしかなかった。
古いのは書き写したときのミスとかいろいろあってもう記述がいい加減なんだよね。
咸豊とか中国の元号が出てきたときにはもう勘弁してください状態だった。
南北朝や九州年号はさすがになかった・・
425:デフォルトの名無しさん
09/05/07 19:35:09
さすがだな、おまえらw
”和暦のカレンダー”だけでここまで穿り返すとはwww
426:377
09/05/07 19:43:50
>>382
今日いろいろ調べてみた。
結果としては、Development Fabricは内部でASP.NET開発サーバを使っているのではないか、
という感触を持った(サービスが自分をホストしている鯖の情報を取る方法を知らないので確定的ではないけど)。
AzureのドキュメントにはIISを使ってるって書いてあるし、ASP.NET開発サーバアイコンも表示されていないんだけど、
IISにアクセスログを吐かせてみても、127.0.0.1:81を叩くときだけログに残らないし、
よく考えると、80番の設定で起動してるのに81番で起動するのは、IIS以外に鯖を起動した上でホストしている証拠かな、と。
そうなると、ホスト名がつかえないのは、現状では「仕様」ということになるんだと思う。
とりあえず、CTPの文字が外れるまではこのままなんだろうなぁ、というオチにしておく。
みんな、いろいろ教えてくれてありがとう。
427:デフォルトの名無しさん
09/05/07 20:20:27
すみません、
HTML文からタグのみを取り出す関数はありませんか?
逆に言うと、HTML文のタグ以外を削除するような関数
のことですが。
428:デフォルトの名無しさん
09/05/07 20:32:18
安易に考えたらXML名前空間の機能使って取り出すとか?
429:デフォルトの名無しさん
09/05/07 20:34:59
関数はないな
正規表現使えばタグの抽出だけなら比較的簡単だ
>>428
XHTMLじゃない限りほぼパース不可能だよ
430:デフォルトの名無しさん
09/05/07 20:35:48
酷いHTML読まされる事考えるなら、MSHTML使うのが一番楽じゃないかね
431:デフォルトの名無しさん
09/05/07 20:56:10
SgmlReader っていうのもある。
432:デフォルトの名無しさん
09/05/07 21:04:57
CommitChanges()はパフォーマンス面で悪かったりする?
普通に多用していいもの?
433:432
09/05/07 21:42:45
ああスレ間違えた
434:デフォルトの名無しさん
09/05/08 00:20:25
>>427
URLリンク(msdn.microsoft.com)
URLリンク(msdn.microsoft.com)
435:デフォルトの名無しさん
09/05/08 00:26:09
System.Windows.FormsのHTML DOMはWebBrowserなしだと普通には作れないのが難
標準でwebスクレイピングライブラリとか作られんかのう
436:デフォルトの名無しさん
09/05/08 00:31:13
寺とかちょっとした歴史の勉強だなw
437:デフォルトの名無しさん
09/05/08 00:31:51
プログラムにフォルダ名が入っているのですが、いれないようにするにはどうすればいいですか?
438:デフォルトの名無しさん
09/05/08 00:34:01
SilverLight
439:デフォルトの名無しさん
09/05/08 00:37:25
>>435
んじゃ、これ。
URLリンク(htmlagilitypack.codeplex.com)
440:デフォルトの名無しさん
09/05/08 00:38:35
すんません、書きなおします
プログラムをバイナリエディタでみたところプログラム内にフォルダ名が書き込まれているのですが、
ビルド時、かきこまれないようにするにはどうすればいいですか?
441:デフォルトの名無しさん
09/05/08 00:38:55
>>437
相対パス使うか、定義ファイルにパス書くか、レジストリにパス書く。
442:デフォルトの名無しさん
09/05/08 00:39:43
>>440
リリースビルド & .pdb を作らないようにすればいいんじゃなかったっけ?
443:デフォルトの名無しさん
09/05/08 00:40:43
あ、ありがとうございます
ビルドー詳細設定でデバッグ情報をnoneにしたらいけました
あせった><
444:デフォルトの名無しさん
09/05/08 00:48:43
ビルドーってディルドーに似てる
445:デフォルトの名無しさん
09/05/08 02:31:26
2000年問題に対応したとき、「なんでこんなややこしい閏年の置き方をするんだ!」とか
思ったものの、よく勉強してみたら、現行暦がいかに単純で合理的か納得したw
446:デフォルトの名無しさん
09/05/08 06:10:15
>>445
日本の季節感にはまったくあってないけどな
昔は一番寒い時期が1月1日で新年を迎えると暖かくなる一方だった
戦争に負けたアジアは所詮白人のおまけということだな
447:デフォルトの名無しさん
09/05/08 07:14:01
>>446
おじいちゃん乙
448:デフォルトの名無しさん
09/05/08 07:21:58
>>446
中国行って旧正月でも祝ってればいいんじゃない
449:デフォルトの名無しさん
09/05/08 07:22:24
そのせいで地方によってはいくつかの行事は月遅れでやることが多いけどな。
ひな祭り、七夕、盂蘭盆会などなど。
450:デフォルトの名無しさん
09/05/08 10:56:45
なんか思いっきりスレチ方向へ進んでないか?ww
451:デフォルトの名無しさん
09/05/08 12:22:22
じゃあディルドーの話に戻そう
452:デフォルトの名無しさん
09/05/08 23:07:53
三叉路まで戻って別の違う道に進んだみたいな。
453:デフォルトの名無しさん
09/05/08 23:17:29
ディルドゥーなら喜んで食いついたのに
454:デフォルトの名無しさん
09/05/09 13:32:15
vbでいうところの
for i=0 to 4
label(i)="abc"
next
みたいな
ループの添字で複数の連番的なオブジェクトを指定するにはどうしたらいいのでしょうか
オブジェクトに番号振るっていう状態をどういうのかがわからなくて調べられないです
1日いろいろ探してみましたが思いつく宛が詰まってしまったのでヒントが欲しいです
455:デフォルトの名無しさん
09/05/09 13:35:24
配列に入れておいて、あとは同じように。
456:デフォルトの名無しさん
09/05/09 15:23:13
ありがとうございます
457:デフォルトの名無しさん
09/05/09 21:20:30
質問です
フォームのテキストラベルにH2Oと入れたいんだけど2を下付きにするにはどうすればいいのですか?
Hのラベル、2のラベル、Oのラベルを3個並べてお茶を濁してきたけど、詳しい方どうか教えてください。
458:デフォルトの名無しさん
09/05/09 21:23:57
そうやるしかない
459:デフォルトの名無しさん
09/05/09 21:30:23
自前で描画するしかないな Paintイベント使って
460:デフォルトの名無しさん
09/05/09 21:30:36
>>457
U+2082 ₂ SUBSCRIPT TWO
461:デフォルトの名無しさん
09/05/09 22:04:02
>>457
文字を書いてつくったイメージを貼り付ければいいじゃん
462:デフォルトの名無しさん
09/05/09 23:36:39
H₂0
な なるほど!thx
463:デフォルトの名無しさん
09/05/09 23:44:44
リッチテキスト
464:デフォルトの名無しさん
09/05/09 23:48:55
₀₁₂₃₄₅₆₇₈₉
465:デフォルトの名無しさん
09/05/12 11:40:49
ComboBoxの項目の表示色を項目内容によって変えるとき
DrawItem()でDrawString()すれば良いんだけど。
ComboBoxの数が多いのでユーザコントロールにするとしたら
どこでDrawString()すればいいんだろう?
OnDrawItem()で直接書いちゃっていいのかな?
466:デフォルトの名無しさん
09/05/13 23:19:39
その前にやってみれば?
467:デフォルトの名無しさん
09/05/14 01:11:13
>>465
OnDrawItemでいいよ。
468:デフォルトの名無しさん
09/05/14 09:36:16
ありがとう。
OnDrawItem()でうまくいきました。
ついでに背景色とかも変更してみます。
469:デフォルトの名無しさん
09/05/14 16:20:55
指定したディレクトリ以下のすべてのファイルを効率的に列挙していく場合どのクラス、メソッド使うのがいいですか?
GetFilesみたいにリストを作って返すのではなくWin32APIのFindFirstFile/NextFile相当のものが使いたいんですが。
470:デフォルトの名無しさん
09/05/14 17:01:05
Linq
471:デフォルトの名無しさん
09/05/14 17:08:21
FindFirstFile/NextFile
472:デフォルトの名無しさん
09/05/14 17:18:48
.NETは非コンテナに対するイテレータが弱すぎる
473:デフォルトの名無しさん
09/05/14 17:29:26
yieldがありゃ十分だろ
474:デフォルトの名無しさん
09/05/14 17:30:22
>>469
.NET Framework 4.0 のGetFiles
475:デフォルトの名無しさん
09/05/15 02:24:16
実行時の object 階層を値込みで表示用の tree にまとめ上げたいんだけど、
その手のライブラリなど、ご存知の方いますでしょうか? Reflection で自前
で再帰するしかない?
476:デフォルトの名無しさん
09/05/15 02:42:10
CodeProjectとか探せばありそうな予感。
まぁ実装してもたいした手間じゃな下げだけど。
477:デフォルトの名無しさん
09/05/16 13:13:47
>>475
>実行時の object 階層を値込みで表示用の tree にまとめ上げたいんだけど、
object階層の意味がよく分からないけど、
Visual Studioのウォッチウィンドウみたいな感じで
インスタンスの情報を展開してくれるのが欲しいってこと?
だったらオブジェクト参照が循環している場合もあるので注意かな。
シリアライザ/デシリアライザみたいにグラフとして扱うか、
ウォッチウィンドウみたいにクリックするまで子ノードの評価を行わないといった
工夫が必要になると思う。
478:475
09/05/16 16:25:07
>>476
いや、それが結構面倒くさい。CodeProject はなさそうでした。
>>477
なるほど、シリアライズして XML を使うのもありですね。
どうもありがとう。
479:デフォルトの名無しさん
09/05/16 16:58:37
ソースいじくれるのならExpandObjectConverterでPropertyGridとかがお手軽じゃね
480:90
09/05/16 20:36:16
すいません、教えてください。
ユーザコントロールを作成していますが、
既存の型を使用した場合は問題ないのですが、enum型を定義して
使用すると、このコントロールを使用するプログラムで
デザイン時に初期値を選んだ場合は問題ないのですが他の候補(この場合type2)を
セットすると
「'System.Windows.Forms.Control.ControlCollection' に 'xxxComboBox' の
定義が含まれておらず、型 'System.Windows.Forms.Control.ControlCollection' の
最初の引数を受け付ける拡張メソッドが見つかりませんでした。
using ディレクティブまたはアセンブリ参照が不足しています。」のエラーになります。
481:デフォルトの名無しさん
09/05/16 20:39:20
名前を間違えました。90のかた申し訳ありません。
ソースはこんな感じです。
namespace Controls
{
public partial class xxxComboBox : ComboBox
{
public enum DrawingMode : int
{
type1 = 0,
type2 = 1
}
private DrawingMode _ItemDrawingMode;
[Category("Custom")]
[DefaultValue(typeof(DrawingMode), "type1")]
[Browsable(true)]
public DrawingMode ItemDrawingMode
{
get { return _ItemDrawingMode; }
set { _ItemDrawingMode = value; }
}
482:デフォルトの名無しさん
09/05/16 20:40:31
private Color _FirstBGColor;
[Category("Custom")]
[DefaultValue(typeof(Color), "White")]
[Browsable(true)]
public Color FirstBGColor
{
get { return _FirstBGColor; }
set { _FirstBGColor = value; }
}
public xxxComboBox()
{
InitializeComponent();
_ItemDrawingMode = DrawingMode.type1;
_FirstBGColor = Color.White;
}
...
}
使用する側では参照設定にこのdllを指定しています。
FirstBGColorプロパティは他の色に変更しても正しくビルド・実行できます。
DraingModeのプロパティをtype2に変更してビルドすると上記の
エラーがでます。
エラー箇所を見ると
this.xxxComboBox1.ItemDrawingMode = Controls.xxxComboBox.DrawingMode.type2;
の行が解決できないようです。
using Controls;を加えても同じです。
ControlCollectionに追加するにはどのメソッドを使用すればいいのでしょうか?
483:デフォルトの名無しさん
09/05/16 22:32:52
使う側を
this.xxxComboBox1.ItemDrawingMode = 1;
にしたらエラーでないよね?
484:デフォルトの名無しさん
09/05/16 22:41:13
何もおかしなことはない。エラーメッセージの通り
this.Controls は Control.ControlCollection クラスのインスタンスだろ
485:480
09/05/17 08:30:40
>>483, 484
ありがとうございます。
this.xxxComboBox1.ItemDrawingMode = 1; は型が違うのでエラーになります。
呼び出し側でusing Controls;を定義して、コードで(例えばForm1_Load内で)
xxxComboBox1.ItemDrawingMode = xxxComboBox.DrawingMode.Type2;
のように書けば、正常にビルド・実行可能です。
ただし、先程書いたようにデザイナからプロパティ値を変更すると
エラーになります。ControlCollectionにxxxComboBoxを追加して
導出してやらないといけないのかと思いますが、やり方が分かりません。
486:デフォルトの名無しさん
09/05/17 09:23:29
名前空間にglobal::Controlsなんてのはやめようよ
せめてライブラリ名.Controlsに
487:480
09/05/17 11:08:57
お騒がせしました。解決しました。
そうだよな、namespaceの名前を変えよう・・・
ということでControlsからmalib.Controlsにnamespaceを変更したら
ちゃんと動作しました。
488:デフォルトの名無しさん
09/05/20 21:40:44
この言語笑うしかないわw いい意味で。
今C#の勉強の意味もこめてC#のいろんな機能をフルに利用するつもりで
ちょっとしたプログラムを作っているんだが
本当にC++、Javaから発展してきた言語とは思えん。
まず、DataGrid使って表を作る。
row.SetValues(1,2,3)とやることで、一行のデータを一気に入れられる。
そこで一行全部の背景色をつけたいと思った。
SetValuesと同じように、row.SetStyle(style)とやりたかったが、
残念ながらSetStyleはセルごとしかなかった。
DataGrid(正確にはDataGridViewRow)になんでSetStyleが無いんだよ!って
怒るような事例なのに、拡張メソッドを使うことで継承を利用せずに
いとも簡単にrow.SetStyle()を付け加えることができるとはw
489:デフォルトの名無しさん
09/05/20 23:09:50
>>488
それでC#にケンカ売ってるつもり?
まさかそんなわけないよねwww
490:デフォルトの名無しさん
09/05/20 23:13:11
C#はあれだよあれ
メロンパン言語だ
491:デフォルトの名無しさん
09/05/20 23:25:01
どう見ても誉めてるじゃん
492:デフォルトの名無しさん
09/05/20 23:36:57
コンポーネントと言語をごっちゃにして、的外れだけどな。
493:デフォルトの名無しさん
09/05/21 00:24:35
うん
C# の話じゃなくてフレームワークの話だな
494:デフォルトの名無しさん
09/05/21 00:25:41
C#じゃなくてWinFormsの話だな。
C#はソースが読みやすいとか、一貫した仕様でスッキリしてて覚えやすいとか色々あるけど、
何よりVSっていう最強のIDEが付っきりで開発支援してくれるのが最大のアピールポイントだと思う。
VSが無ければ他の言語でいいけど、一回VS+C#で慣れると他の言語やる時にかなりメンドクサイ。
・・・あれ、ここって相談室だよな?
495:デフォルトの名無しさん
09/05/21 00:34:35
C#ならまずdelegateを褒めたいな。リスナめんどい。
496:デフォルトの名無しさん
09/05/21 00:42:09
Enumerable.DistinctにはなぜFunc<TSource, TSource, bool>を受け取るオーバーロードがないんだ
497:488
09/05/21 00:44:37
>>492
> コンポーネントと言語をごっちゃにして、的外れだけどな。
言っとくけど、言語の話だよ。
mix-inといえばわかるかな?
(標準ライブラリの)クラスに、メソッドを後付できる。
という言語仕様。
498:デフォルトの名無しさん
09/05/21 00:47:05
拡張メソッドは便利だな、で終わる話なのに、つらつら書かれても・・・
ってことを言ってるんだと思うよ。
499:デフォルトの名無しさん
09/05/21 00:48:35
俺「拡張メソッドは便利だな」
他の人「そうだな」
で終わってくれればいいのに、
コンポーネントとかWinFormsの話だなとか
間違ったこと言い出すからレスせざるを得なかったんだよw
500:デフォルトの名無しさん
09/05/21 00:49:48
>>497
あきらかに主題の文章量と副題の文章量の比がおかしいww
おまえは女かwwwwww
501:デフォルトの名無しさん
09/05/21 00:51:06
>>499
先に言っとく。基地外(500など)は無視したほうがいいよw
502:デフォルトの名無しさん
09/05/21 00:52:42
>>501
おけw
間違ったことを何も言っていないのに、
なんで変なやつがまとわりついてくんだか。
こちとら本格的にC#はじめて五日目だ。なめんじゃねーぞw
503:デフォルトの名無しさん
09/05/21 00:54:31
それでは次の型どうぞ~
504:デフォルトの名無しさん
09/05/21 01:01:24
System.Collections在住 : ArrayList さん
最近みんなジェネリック、ジェネリックって言って僕を呼んでくれないんです。
昔はあんなにちやほやされてたのに・・・。
これから僕はどうしていけばいいんでしょうか。
505:デフォルトの名無しさん
09/05/21 01:02:54
つまらん
それでは次の型どうぞ~
506:デフォルトの名無しさん
09/05/21 01:42:30
ブラウザの機能が安定しません。
public Form1()
{
InitializeComponent();
webBrowser1.Navigate("URLリンク(www.google.co.jp)");
}
たったこれだけの実装ですが、googleのページがすぐに表示されるときと
ずっとまっ白でまったく表示されない時があります。
環境は、XPProSP2、IE6です。
どなたか解決方法を知りませんか?
507:デフォルトの名無しさん
09/05/21 01:47:34
つける薬は無い
508:デフォルトの名無しさん
09/05/21 01:48:23
ロード後に Navigate しても状況は一緒?
509:デフォルトの名無しさん
09/05/21 01:54:11
ロード後にというのがよくわかりませんが、
ボタンをひとつつけて、その中でNavigateしても状況はかわりません。
非常に安定しないんです。
510:デフォルトの名無しさん
09/05/21 01:56:19
ウェブブラウザーコントロールは一度「about:blank」を表示してから
目的のページを表示するんが一般じゃなかったっけ?
511:デフォルトの名無しさん
09/05/21 02:04:35
>>510
書き忘れましたが、それも試して効果はありませんでした。
public Form1()
{
InitializeComponent();
webBrowser1.Navigate("about:blank");
webBrowser1.Navigate("URLリンク(www.google.co.jp)");
}
512:デフォルトの名無しさん
09/05/21 02:06:14
じゃあ、無理じゃね? 素直にリロードしてもらえよ。
513:デフォルトの名無しさん
09/05/21 02:13:33
わかりました。
自分でもかなり調べてダメだったので、諦めることにします。
ありがとうございました。
514:デフォルトの名無しさん
09/05/21 02:51:04
前にAxWebBrowser使ってた時に俺もそんなことあったな。Navigateするタイミングだと思うんだけど。
起動時にNavigateするようにした時に稀にあった。
とりあえず、起動時にいきなりNavigate使う時はコンストラクタじゃなくてLoadイベントなり登録してそこでやった方がいいと思う。
それでこの症状が直るわけではないと思うけど。
515:デフォルトの名無しさん
09/05/21 12:03:16
>>506
webBrowserだけじゃなくて
IE6のそのものが、ずっと真っ白のままで表示されないことがあるんだが・・・
AVGのリンクスキャナを停止してからは少しマシになったかも?
普段はChromeを使っているから見なかったことにしてるけど。
516:デフォルトの名無しさん
09/05/21 14:18:15
>>506とおんなじコードで試してみたけど、
何度やっても問題なく表示されるな。
環境はXPProSP2、IE6、VS2008Pro
517:デフォルトの名無しさん
09/05/21 14:49:26
webBrowser1.BusyがTrueのときそうなるんじゃないか?
518:デフォルトの名無しさん
09/05/21 15:58:51
>>515
ウィルス対策ソフトは切ってます。
>>516
ほんの2日ほど前まで私もその環境でしたが、なぜか動きません。
XPProSP3、IE8、VS2008Exにしましたが、改善はありません。
>>517
ちょっと見てきます。
519:デフォルトの名無しさん
09/05/21 16:02:12
取り敢えず514な
System.Windows.Forms.WebBrowserはコントロール上に乗って無くても大丈夫なように作られてるけど一応
520:デフォルトの名無しさん
09/05/21 16:23:25
>>517
■PG
public Form1()
{
InitializeComponent();
Console.WriteLine("IsBusy:" + webBrowser1.IsBusy);
webBrowser1.Navigate("about:blank");
webBrowser1.Navigate("URLリンク(www.yahoo.co.jp)");
Console.WriteLine("IsBusy:" + webBrowser1.IsBusy);
}
■出力
IsBusy:False
'Test.vshost.exe' (マネージ型): 'C:\WINDOWS\assembly\GAC\Microsoft.mshtml\7.0.3300.0__b03f5f7f11d50a3a\Microsoft.mshtml.dll' が読み込まれました
IsBusy:False
■結果
画面まっ白
>>514
LoadイベントでやってもThread.sleep(5000)をnavigateの前後に入れてもまっ白になることが多々ありました。
521:デフォルトの名無しさん
09/05/21 18:07:17
Shownを使え
522:デフォルトの名無しさん
09/05/21 22:09:23
IE でダメなら、WebBrowser でもダメだろよ。
523:デフォルトの名無しさん
09/05/21 22:32:09
ReadStateがcompleteになるまで待ったほうがいいんじゃないかな?
524:デフォルトの名無しさん
09/05/21 22:49:46
ContextMenuStripに追加したToolStripMenuItemの
DropDownItemsに追加したToolStripMenuItemのイメージ余白の消し方を教えてください。
1階層目はShowImageMarginをFlaseにすれば消せるのですが
2階層目以降のToolStripMenuItemは余白が出たままになってしまいます…。
525:デフォルトの名無しさん
09/05/22 01:41:24
>>313さんのMecabの返り血をAnisで受けると文字化けするんですけど、
文字化けしない方法をどなたか教えてください orz
526:デフォルトの名無しさん
09/05/22 01:44:57
キャー!
527:デフォルトの名無しさん
09/05/22 01:46:46
PtrToStringAuto だとどうなる?
528:デフォルトの名無しさん
09/05/22 02:00:25
>>527
こんななりました。。
?慣???麩????????????弊(ry
529:デフォルトの名無しさん
09/05/22 02:26:54
Shift_JIS(CP932)をUTF-8と誤認識してるんじゃね。
530:デフォルトの名無しさん
09/05/22 03:09:18
俺はこれでできた
[DllImport("libmecab.dll")]
extern static int mecab_new2(string arg);
[DllImport("libmecab.dll")]
extern static IntPtr mecab_sparse_tostr(int m, byte[] str);
[DllImport("libmecab.dll")]
extern static void mecab_destroy(int m);
int mecab = mecab_new2("");
this.textBox2.Text = Encoding.Default.GetString(Encoding.Convert(Encoding.UTF8, Encoding.Default, Encoding.Unicode.GetBytes(
Marshal.PtrToStringUni(mecab_sparse_tostr(mecab, Encoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(
this.textBox1.Text))))))).Replace("\n", "\r\n").Replace("\r\r\n", "\r\n");
mecab_destroy(mecab);
531:デフォルトの名無しさん
09/05/22 06:06:52
これはひどいコード・・・
532:デフォルトの名無しさん
09/05/22 06:24:15
なんのためのマーシャリングなのかって感じだな
533:デフォルトの名無しさん
09/05/22 14:52:19
printPreviewDialog1.Bounds = this.Bounds;
printPreviewDialog1.ShowDialog();
こう書いても何故かthisと重なって表示してくれない
大きさは反映されるのに位置が自動的に決定されてしまう
解決方法知ってる方いたら教えてください
534:デフォルトの名無しさん
09/05/22 15:08:59
ウィンドウの初期位置を指定するプロパティがあるからそれをManualだったかなんかにする
535:デフォルトの名無しさん
09/05/22 15:32:25
PrintPreviewDialogにStartPositionプロパティは無いみたいです
536:デフォルトの名無しさん
09/05/22 15:40:11
.NET Framework クラス ライブラリ
PrintPreviewDialog..::.StartPosition プロパティ
537:デフォルトの名無しさん
09/05/22 15:49:14
インテリセンスに出ないので無いと思ってましたが頑張って手打ちしたら出来ました
ありがとうございました
538:デフォルトの名無しさん
09/05/22 15:55:42
>頑張って手打ち
ワロタ
気持はわかる
539:デフォルトの名無しさん
09/05/23 18:31:31
>>424 クソワロタ
540:デフォルトの名無しさん
09/05/24 01:39:48
笑い事じゃねえよ!
541:デフォルトの名無しさん
09/05/24 11:01:56
いや、声出して笑っちゃったよw
ユニークな仕事だなw
542:デフォルトの名無しさん
09/05/24 12:58:03
たぶん日本で唯一だy。食いっぱぐれなくていいな。
543:デフォルトの名無しさん
09/05/24 14:30:22
\拍手を打つ仕事があるときいてやってきました/
544:デフォルトの名無しさん
09/05/24 16:14:58
ListBoxの、選択されたアイテムを囲っている破線を消したいのですが可能でしょうか?
なぜか一瞬だけ、選択していないアイテムに破線が出るので消したいと思っています
545:デフォルトの名無しさん
09/05/24 16:45:38
>>544
独自描画にすれば消せるんじゃないかな。
546:デフォルトの名無しさん
09/05/26 10:30:51
その破線はキーボードフォーカスの存在を見せるためにある。
勝手に消されると状況によってはユーザーが混乱すると思うが
それでもいいなら>>545の言うようにオーナードローしては。
547:デフォルトの名無しさん
09/05/29 20:30:10
label.Text = "Value: ";
このようなValueを表示するラベルを貼りました。
スペースの後に増減する数字を代入していくのですが、どうやるのがいいのですか?
"Value: "が無い場合は単純で、
labal.Text += i.ToString();
でよかったのですが、、
548:デフォルトの名無しさん
09/05/29 20:45:57
>>547
labal.Text += i.ToString(); = labal.Text = labal.Text + i.ToString();
549:デフォルトの名無しさん
09/05/29 20:49:05
>>547
string.Format
550:デフォルトの名無しさん
09/05/29 22:01:44
if(i==0)
label.Text = "Value: 0"
else if
....
551:デフォルトの名無しさん
09/05/30 17:38:53
コンストラクタ名のとこにクラス名書かなきゃならないという無様な仕様は
未来永劫そのままなの?
552:デフォルトの名無しさん
09/05/30 17:59:09
そりゃ、そんな根幹にかかわるところ変更はできないだろ。
嫌なら新しい言語作るしか。
553:デフォルトの名無しさん
09/05/30 18:11:25
不自然かもしれないけどC++やJavaで十分に受け入れられてるからな
はじめの頃のC#ではキーワードを少なくすることが重視されてたみたいだし
554:デフォルトの名無しさん
09/05/30 18:23:57
Javaの、ソースファイル名とpublicクラス名を同じにしとかないとエラーだよーん。
の舐めた仕様よりはマシになってるとは思う。
555:デフォルトの名無しさん
09/05/30 18:34:15
>>551
同感。同じことを2度書くのは無駄だよな
もう.ctorでいいのに
556:デフォルトの名無しさん
09/05/30 18:39:31
まあ、元々がC++プログラマーを逃がさないようにする目的があったから、
あの構文は変えようがないでしょ。
C# 開発者的に、C++ との互換性重視しすぎて失敗したなぁと思う部分もちらほらあるみたいなんで、
今よりさらにもうちょっと .NET が普及したら、その辺りなおした新言語を作るのもありかもしれないけど。
557:デフォルトの名無しさん
09/05/30 18:43:24
Font Font = new Font
558:デフォルトの名無しさん
09/05/30 18:44:46
>>557
var Font = new Font();
559:デフォルトの名無しさん
09/05/30 18:45:32
newはインテリセンスがなきゃ発狂する構文だが、あるから我慢できるレベル。
var使う事自体が冗長
560:デフォルトの名無しさん
09/05/30 18:50:41
>>559
いやー、var は要るよ。
宣言と代入は分けたい。
new なくすとすると、例えばどういう構文?
C++ のスタック割り当て時みたいに、クラス名() だけとか?
561:デフォルトの名無しさん
09/05/30 18:53:18
Python みたいに font = Font() とか書けたら嬉しさのあまり自決する
562:デフォルトの名無しさん
09/05/30 18:55:01
>>561
それはなぁ、型名と同じ名前のプロパティ定義できる C# だと文法的にあいまいになりそう。
563:デフォルトの名無しさん
09/05/30 18:57:39
後からの拡張とか考えると、new とか var とかの構文解析の起点になる部分は削らない方がいい。
font = Font() なんて認めたら、多分、後から機能足せなくて泣く。
564:デフォルトの名無しさん
09/05/30 19:13:55
結局コンストラクタの構文は無駄?必要?
565:デフォルトの名無しさん
09/05/30 19:16:03
>>561
それ出来るとIntelliSenseの暴発を招くから、今の型推論によるvarでの定義がバランス的にちょうどいい。
566:デフォルトの名無しさん
09/05/30 19:16:07
今のC#の方向性考えると必要。
C#の原型とどめないような改変が許されるんなら別にどっちでも。
567:デフォルトの名無しさん
09/05/30 19:19:12
キーワードconsを導入すれば万事解決
568:デフォルトの名無しさん
09/05/30 19:31:22
ぶっちゃけなれればどうでもいい
569:デフォルトの名無しさん
09/05/30 19:50:07
>>565
同感、C#は強く強くインテリセンスを意識した文法であって欲しい。
でないと、今のライブラリでさえ全体を憶えきれないのにこういうサポート外されたら気絶する。
570:デフォルトの名無しさん
09/05/30 21:19:51
何でPythonがはやってるんだ?
前に来た時はDが話題だったような…
571:デフォルトの名無しさん
09/05/30 22:39:22
個人的にはもう少し型を意識したJavaScriptのような言語がはやって欲しいな。
572:デフォルトの名無しさん
09/05/30 22:43:12
>>571
JavaScriptは十分はやってるだろ
573:デフォルトの名無しさん
09/05/30 22:47:18
PowerShellいいぞ。PowerGUIのコード補完との相性もかなり良好。
$a = [xml]"<data>foo</data>"
$a.
で候補にdataが出てくるんだぜ。
ソースコードじゃなくプロンプトで実行しながらじゃないと駄目だけど。
574:デフォルトの名無しさん
09/05/30 23:02:46
「C# .NETアプリケーション開発 徹底攻略 C# 3.0/.NET Framework 3.5対応」
という本で、FormのLoadイベントはコンストラクタ完了よりも先に実行される(ことがある?)
とか書かれてるんだけどほんとにあるの?
どうもこの本思い込みで書いてるような部分も見られてちと怪しんだが…
575:デフォルトの名無しさん
09/05/30 23:31:51
InitializeComponents で子コントロールにプロパティを設定する際に、子から
親フォームが呼ばれてLoadされることが危惧されている。
576:デフォルトの名無しさん
09/05/30 23:38:37
そのフレームワークいいのかな
設計が甘いのでは?
577:デフォルトの名無しさん
09/05/30 23:44:14
甘いねぇ。
578:デフォルトの名無しさん
09/05/30 23:47:51
>子から親フォームが呼ばれてLoadされる
ってどういう状態かわからん…
579:デフォルトの名無しさん
09/05/30 23:49:48
んーマルチスレッドと例外絡みのこと書いてあるとこもでたらめだしなー
580:デフォルトの名無しさん
09/05/30 23:51:20
ちゃんと引用したらいいと思うよ
581:デフォルトの名無しさん
09/05/31 00:11:54
>>574
うろ覚えだけど、
Win32だと、CreateWindow()内で、WM_CREATEを直接呼び出してたような気がする
(CreateWindow()の復帰値はWM_CREATEの復帰値に依存する)
なので、
- C#のFormのコンストラクタ内で内部的にCreateWindowの呼び出しを行う
- FormのLoadはWM_CREATEに相当する
の2つの条件が成り立てば
>FormのLoadイベントはコンストラクタ完了よりも先に実行される
は、成り立つかもしれない
582:デフォルトの名無しさん
09/05/31 00:19:12
子が初期化待たないで親を Visible = true したら起きた。
でも、普通しねえよなぁ、こんなことwww
583:デフォルトの名無しさん
09/05/31 00:19:31
>>581
そんなこと考えるまでもなくマネージドだけで成立するよ、意味があるかどうかは別として
public class Form1 : Form {
public FFFF() {
Ctrl ctrl = new Ctrl();
this.Controls.Add(ctrl);
ctrl.Do();
Debug.WriteLine("Ctor");
}
protected override void OnLoad(EventArgs e) {
Debug.WriteLine("OnLoad");
base.OnLoad(e);
}
}
public class Ctrl : Control {
public void Do() {
Form form = this.FindForm();
if (form != null) form.Show();
}
}
相互参照はやっかいだね
584:デフォルトの名無しさん
09/05/31 00:22:05
namespace WindowsApplication1 {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
MessageBox.Show("end of init");
}
private void timer1_Tick(object sender, EventArgs e) {
Visible = true;
}
private void Form1_Load(object sender, EventArgs e) {
MessageBox.Show("Form.Load");
}
}
}
でタイマのintervalは1。
585:デフォルトの名無しさん
09/05/31 00:31:27
その前に
コンストラクタでこんなことしていいんか
586:デフォルトの名無しさん
09/05/31 00:38:47
そもそもそんなこする方がやばいんだから
しないように修正するべきだろう。
587:デフォルトの名無しさん
09/05/31 00:39:33
フォームをNewしたらいきなり表示されるとか、冗談ではないわ。
588:デフォルトの名無しさん
09/05/31 00:46:51
しないように済む方法を指導しないテキストがクズだな。
589:デフォルトの名無しさん
09/05/31 00:46:50
引用した方がいいんだが、何せ立ち読みで読んだだけなんで、すまんね。
しかし、デリゲートの非同期実行でEndInvokeせずに、なんと例外が無視されてしまうのだ!!
みたいなこといって、非同期実行するメソッド内で即座にコントロールにInvokeして、これで例外をとれる
っておまえそれ非同期実行の意味全然ないだろうがよとか、こんなの見るとなんか書いてあることが信用できない。
590:デフォルトの名無しさん
09/05/31 01:04:13
あー、エスパーすると、非同期実行すると例外取れないから同期しましょう、
と書いてあるのか?
591:デフォルトの名無しさん
09/05/31 01:11:44
そういうこと
592:デフォルトの名無しさん
09/05/31 01:17:58
その本でスレッド周りに何書いてあるのか、ちょっと気になってきたww
593:デフォルトの名無しさん
09/05/31 01:39:23
意外と好評な書評も。
URLリンク(mag.autumn.org)
594:デフォルトの名無しさん
09/05/31 02:11:24
んー今はどうかわからんけど、
Formは2回以上ShowDialogすると動作保証されない
だった気がするけどな。
ナレッジに出てなかったっけな…
595:デフォルトの名無しさん
09/05/31 07:20:32
C#で複数接続ができるサーバーを作成しているのですが、多くの接続を受け付けると、
「転送接続からデータを読み取れません: ブロック不可のソケット操作をすぐに完了できませんでした。」
というエラーが出て、例外が発生してしまいます。
誰かこのエラーの解決方法をご存じないでしょうか?
よろしくお願いします。
596:デフォルトの名無しさん
09/05/31 07:30:32
XPのコネクション制限に引っ掛かってるとか。
597:デフォルトの名無しさん
09/05/31 07:48:28
>>596
XPのコネクション制限には引っかからない程度でも発生するんですよね…
# 10本くらいConnectが発生すると5本目くらいからエラーが発生→例外→…という感じで
598:デフォルトの名無しさん
09/05/31 09:22:23
サーバOSやTCP/IP Pacherとかで制限ない状態で試してみれば?
599:デフォルトの名無しさん
09/05/31 09:51:46
その前にプログラムを
600:デフォルトの名無しさん
09/05/31 13:22:18
自分以外のコネクションが5~6個あるんでしょ?
601:デフォルトの名無しさん
09/05/31 14:13:55
VistaSP2と2008サーバでは撤廃されたっていうからXPでもパッチこないかな・・・
いやがらせとして残されたりして。
602:デフォルトの名無しさん
09/05/31 14:15:20
>>593
これWM_CREATE代わりなんだ、確かにShowDialogするごとに呼び出されるね、名前が悪いよな。
603:デフォルトの名無しさん
09/06/01 12:05:26
C#というか.netで使える
rubyでいうところの,Narray
pythonでいうところのNumPy
のような配列の形で演算してくれるクラスライブラリはありますか?
604:デフォルトの名無しさん
09/06/01 12:21:34
>>603
コンセプトがまるで違うけれども、あえて言えばLINQがそのような処理を担当するライブラリと言えるかと思われます。
だけれども、そういう操作そのものを求めるとちょっと、というかまったく違うものかも
やりかたとしては二つのシーケンスを一つのシーケンスにまとめる、そこに select なりで全体に演算を施す、といった具合。
605:デフォルトの名無しさん
09/06/01 12:46:05
数値演算ライブラリが欲しいと言ってるのに、linq挙げるってのはないだろw
でも、.NET向けってのは商業ものしか知らんわ。
BLAS系の.NETバインディングは探せばありそうだけど。
606:デフォルトの名無しさん
09/06/01 12:53:14
>>603
詳細はまだ調べてないけど、.NET で線形代数を助けてくれるライブラリなら
Math.NET があるみたい。
URLリンク(mathnet.opensourcedotnet.info)
607:デフォルトの名無しさん
09/06/01 13:01:57
>>605
そうですか?むしろ汎用度の高いライブラリだと思うんですけどね。
自分は今は線形代数周りは全部LINQで構築してしまいましたけど
608:デフォルトの名無しさん
09/06/01 13:04:41
そもそもLINQってのはテクノロジー()笑の名前であって、ライブラリの名前ではないと思うんだが。
609:デフォルトの名無しさん
09/06/01 13:04:55
LINQのコンセプト、モナドと抽象線形空間の相性がいいというか……
実数上の線形空間はもちろん、複素数でも有限体でもいけるし、いっそ関数を基底とかも。
まぁなんかそんな感じてす
610:デフォルトの名無しさん
09/06/01 13:15:52
LINQは集合演算
mapもあるしリスト演算(コンベア的な)もつかえるし
そういういみじゃん
611:デフォルトの名無しさん
09/06/01 13:26:56
LINQtoObjectによる各種演算処理からLINQtoSQL or LINQtoXMLと次々と同一コンセプトでつながっていくのも気持ちいいしね。
612:デフォルトの名無しさん
09/06/01 18:04:30
列挙型を含んだクラスをシリアライズしようとすると
例外が発生してしまいます。
↓こんな列挙型です。
public enum ActionType
{
[XmlEnum(Name = "Single")]
One,
[XmlEnum(Name = "Double")]
Two,
[XmlEnum(Name = "Triple")]
Three
}
なにか方法などありますでしょうか?
613:デフォルトの名無しさん
09/06/01 18:10:14
例外の詳細ぐらい書けよ
614:デフォルトの名無しさん
09/06/01 18:15:12
IXmlSerializableを実装しろ
615:デフォルトの名無しさん
09/06/01 22:20:33
アンマネージコードからコールバックされるマネージコードで例外をアンマネージ側に
漏らしたくない場合は以下のMyCallBackのような処理であってる?
public delegate bool CallBack();
[DllImport("hoge.dll")]
private static extern int Hoge(CallBack callback);
static void MyCallBack()
{
// このメソッド内で発生した例外を hoge.dll に漏らしたくない
RuntimeHelpers.PrepareConstrainedRegions();
try {
// hoge
} catch (Exception e)
Console.WriteLine(e);
}
}
static void Main()
{
Hoge(new CallBack(MyCallBack));
}
616:デフォルトの名無しさん
09/06/01 22:25:23
それはいいけど渡し方がダメ
アンマネージコードに渡したデリゲートはstaticフィールドに入れとかないとGCされて死亡
617:デフォルトの名無しさん
09/06/01 22:25:31
エラー時コールバック(イベント)でも登録できるようにするべきじゃないかな。
常にコンソール出力だけでOKなら別にいいかもだけど。
618:デフォルトの名無しさん
09/06/01 22:29:47
>エラー時コールバック(イベント)でも登録できるようにするべきじゃないかな。
>常にコンソール出力だけでOKなら別にいいかもだけど。
おっと、CERじゃこんなのは無理か。
ってその前にコンソール出力も無理なんじゃないか?
619:デフォルトの名無しさん
09/06/01 22:37:08
なんかイマイチやりたいことが伝わってこない
例外握りつぶしてしまっていいのか
620:デフォルトの名無しさん
09/06/01 22:45:50
>public delegate bool CallBack();
>static void MyCallBack()
>Hoge(new CallBack(MyCallBack));
返り値違うぞ
621:デフォルトの名無しさん
09/06/01 23:07:24
>>616
GCHandleいじるのが作法上正しいのでは
622:デフォルトの名無しさん
09/06/01 23:22:17
>アンマネージコードに渡したデリゲートはstaticフィールドに入れとかないとGCされて死亡
このコードだと問題ないけどね。
もちろんこういう構造じゃない場合は問題あるので考慮は必要。
623:デフォルトの名無しさん
09/06/01 23:29:05
問題ないかどうかはHogeの中身による
非同期にコールバックされたり戻ったあとも向こうで関数ポインタ保持されたりしたら死ぬ
624:デフォルトの名無しさん
09/06/01 23:59:45
非同期にコールバックする頃にはプログラム終了してるんじゃないかな、この場合
625:デフォルトの名無しさん
09/06/02 00:11:12
この場合ってhogeの中身が何も書いてないんだから
何も判断できない
626:デフォルトの名無しさん
09/06/02 00:31:25
static void Main()
{
Hoge(new CallBack(MyCallBack));
}
だから後でコールバックされるような使い方じゃないと「想定したら」、だよ。>このコードだと問題ない
627:デフォルトの名無しさん
09/06/02 07:29:09
ホゲが何者かわからん状態で
てめー勝手に都合の良い想定をするのは愚の骨頂じゃないか
628:デフォルトの名無しさん
09/06/02 09:57:11
未来永劫大丈夫。
PCのメモリも640KBで十分だし。
629:デフォルトの名無しさん
09/06/02 11:05:07
別に普通の想定だろ。
まあ別に軽く突っ込んでみただけで、ホントにそれでいいとは思ってないよ。
630:デフォルトの名無しさん
09/06/02 11:28:47
>>628
いつまでそんなネタひっぱってんだよ化石
631:デフォルトの名無しさん
09/06/02 19:10:23
登録しといて後で呼び出してもらう形の方が想定としては一般的だと思うんだが
P/Invokeでは特に
632:デフォルトの名無しさん
09/06/02 19:10:47
未来永劫ひっぱるぜ
633:デフォルトの名無しさん
09/06/02 19:27:06
だから、このコードだと、なんだろ?
634:デフォルトの名無しさん
09/06/02 19:33:36
Hogeが非同期ならこのコードでも死ぬよ
635:デフォルトの名無しさん
09/06/02 19:44:12
CallBackが引数無い、返り値はbool、例外は関数の外に出したくない
工夫のしようがないよね
hogeのインターフェイスを変更可なら色々出来るが
636:デフォルトの名無しさん
09/06/02 22:18:06
>>634
いやまずあり得ないね。
まあ意味ないしどうでもいいけど。
637:デフォルトの名無しさん
09/06/03 17:19:43
ちょっと相談させて下さい。
ネットワーク経由で送られてくるバイトストリームがあるとして、あるバイト位置まで読み進めないと
どんなフォーマットのパケットが来てるか分からないという形態のプロトコルを処理する場合、C#的には
どう書くとするとスマートなんでしょうか?
結果的には、パケットの種類に応じた構造体として後の処理で使えるようになればいいです。
C言語だと共用体を使うとスッキリ書けますが、C#でFieldOffsetを使うのは何となく邪道な気がします。
638:デフォルトの名無しさん
09/06/03 17:46:28
自分なら迷わずFieldOffsetを使うけど、なぜそれが邪道なのかはわからん。
639:デフォルトの名無しさん
09/06/03 18:08:37
>>637
何で邪道なんだろ
どうしても嫌ならビットシフトやらこねくり回せば?
640:デフォルトの名無しさん
09/06/03 18:15:36
指定位置までMemoryStreamに入れといて
データの種類が判明してから適宜変換して使うとか?
641:デフォルトの名無しさん
09/06/03 19:44:55
>>637
バッファと実インスタンスを分けて書くしかないんじゃないかなぁ
642:デフォルトの名無しさん
09/06/03 19:45:46
>>637
ある時点でpush backできるストリームを使うか作る
643:デフォルトの名無しさん
09/06/03 20:48:33
経験者に聞きたいのですが、C#はC++やCに比べて使いやすいでしょうか?
普及度とか今後を見たときに覚えておくと便利ですか?
644:デフォルトの名無しさん
09/06/03 20:51:46
段違いで使いやすい。
今後は、まあ、CやC++は上級者のための代物になりつつあるから
今からC,C++を一からやるよりは良いんじゃないかね。
645:デフォルトの名無しさん
09/06/03 21:12:48
C/C++で書く経験自体はしておいた方がいいと思うけど、実用的にはC#のが楽。
まぁ、C#じゃなくてもJavaでもRubyでもErlangでも好きなものを使えばいいと思うが。
646:デフォルトの名無しさん
09/06/03 21:17:40
レスありがとうございます。
C#は確かに使いやすくなっているようなイメージがあるのですが
CやC++でしかできなくて、C#じゃできない事ってあるんですか?
647:デフォルトの名無しさん
09/06/03 21:22:53
大きく見ればデバイスドライバとかシステムフックとかぐらいか
648:デフォルトの名無しさん
09/06/03 21:39:34
>>646
.NET言語だから移植性に難
649:デフォルトの名無しさん
09/06/03 22:03:33
cしらないとdllimportかけないじゃん
650:デフォルトの名無しさん
09/06/03 22:08:27
全部やっといた方がいい
651:デフォルトの名無しさん
09/06/03 23:02:14
>>646
OS関係の高度な操作とかは、C#では茨の道かも。
特定のCPUに特化したプログラムの作成とかも難しい感じ。
652:デフォルトの名無しさん
09/06/03 23:42:57
そういう、プリミティブなことをするか、組み込みなどで選択肢が少ないこと、よほどの高速性(これもものによっては関数型のほうが速い場合もあるが)でなければ生産性などなど考えたらC++というのは選択肢にはあがらんなぁ・・・
昔C++で今はC#メインだが、コンパイル速度が激速な点が一番うれしい。
653:デフォルトの名無しさん
09/06/03 23:53:16
Windows上で動く普通のアプリを作るだけなら
C#だけで充分だね。
654:デフォルトの名無しさん
09/06/04 06:39:10
C#がここまで評価される言語になると誰が予想しただろう
655:デフォルトの名無しさん
09/06/04 08:06:22
そりゃ、C# でググって出てくる上位サイトは
たいてい1.0とかそれのCTPの頃からC#の記事書いてるし、
その人らは予想してただろ。
656:デフォルトの名無しさん
09/06/04 08:08:06
.NET 1.0の頃は見向きもせずC++使ってた。
.NET 2.0とVS2005が出た時に、熱心に布教してたMS見て試しに使ってみたら意外と良くて、そこから徐々に乗り換えた。
>>654
VistaがまだLonghornと呼ばれていた頃
Win32を置き換える!とか言って浮き足立ってたなぁ
>Longhorn登場時期と予想されている2006年、PCは4~6GHz/2コアのCPUを搭載し、メモリ2Gバイト超、HDD1Tバイト超
2003年の記事眺めてて噴いたw 今だからこそ言える。ねーよwww
657:デフォルトの名無しさん
09/06/04 11:41:06
>>652
>昔C++で今はC#メインだが、コンパイル速度が激速な点が一番うれしい。
C#が速いというよりもC++が致命的に遅いというのが実態な気がする。
いずれにしても、ある程度の規模を超えたらC++のコンパイル時間・リンク時間は実用的でないです
特にリンクが遅いのが余りに致命的
658:デフォルトの名無しさん
09/06/04 11:47:56
>>656
Core2辺りで一応達成といえるんじゃないかな、Pen4と同クロック比較で2倍程度(当時のCPUの想定はPen4クラスだと思われる)
メモリは一応2Gにはなった、HDD1Tバイト超だけが実現されていないかと
しかし、必要ない人には今の時点でもHDDは余っているだろうね
659:デフォルトの名無しさん
09/06/04 14:18:04
>>657
ヘッダ書き換えた時のコストがあまりにもひどいと思うよ。
660:デフォルトの名無しさん
09/06/04 14:20:34
>>659
それに関しては、分散コンパイルを使えば……、あんまり解決してないけど一応解決する
けれどもリンクはもう完全にお手上げ
661:デフォルトの名無しさん
09/06/04 14:27:54
今や、マネージコードで書かれたFPSなんかが出てきても、驚くほどのことじゃないな。
662:デフォルトの名無しさん
09/06/04 15:06:12
FPSって何?
663:デフォルトの名無しさん
09/06/04 15:08:35
ファーストパーソンシューティング
ゲームの一ジャンル。欧米で今一番はやってる形態
664:デフォルトの名無しさん
09/06/04 15:12:38
ファーストパーソンズシュータアァー!
665:デフォルトの名無しさん
09/06/04 17:06:53
空気よまずに、、、
フレーム・パー・セコンド
666:デフォルトの名無しさん
09/06/04 17:52:15
そういや、Silverlight3で書かれたFPSのデモがあったな
普通に3Dの画面がサクサク動いてて驚いた
667:デフォルトの名無しさん
09/06/04 18:33:59
>>666
これ?
URLリンク(www.innoveware.com)
668:デフォルトの名無しさん
09/06/04 18:55:11
>>659
そういうコストを減らすために
ヘッダの依存を分散させる設計が必要
そのコストが高いってことは設計が悪いってことだ
ヘッダのあるプログラミング言語的には
669:デフォルトの名無しさん
09/06/04 19:14:07
template…
670:デフォルトの名無しさん
09/06/04 21:22:45
>>668
それが最近の統計情報によると、ヘッダの重複コンパイルがコンパイル時間の8割がたを占めていて
ぶっちゃけヘッダ別けファイル別けするよりも、全ヘッダ・ソースを一つに結合してコンパイルしたほうがマシって状況にあるらしい。
さらに、リンクファイルに無闇に外部参照ラベルが出現している上、それがCからの名残でツリー構造ではなく名前空間にヘッダやらフッタやら特殊規則の名前やらが無節操にぶちまけられてまともに検索もできない有様。
古すぎるんだ、技術的に……
昔はこれでよかったんだよ、むしろこうする事により高速なコンパイルが期待できたんだ、だけどこの方法は数が増えるとコンパイル時間が爆発的に増えるんだ。
ちょっともうスレとは関係なさすぎますね、自粛します。
671:デフォルトの名無しさん
09/06/04 21:55:00
倍々ゲームでコンパイル時間が増えていたが、それでもコンピュータのパフォーマンスも倍々ゲームで増えていたので
しばらくは問題にならなかったんだな、しかしDiskIOその他は倍々ゲームパフォーマンスアップはしなかったので次第に問題が表面化してきたと。
672:デフォルトの名無しさん
09/06/04 23:53:55
>>670
ヘッダに全部コードを書いて、ソースはそいつをインクルードしてるだけってソフトがあったんだが、
それが理由なのか。
673:デフォルトの名無しさん
09/06/05 00:56:58
それはアレやないすかね、テンプレートの扱いがややこしいので
割り切って全部ヘッダにしただけやないですかね。
C++ は重複の多さもあるけど、コンパイル時に色々やりすぎって
話もあるんではなかろうか。
674:デフォルトの名無しさん
09/06/05 01:45:06
ひとまとめにしたほうがコンパイラも最適化を聞かせやすい品。
SQLiteがやってる。
675:デフォルトの名無しさん
09/06/05 02:10:54
.NetFrameworkのJITってSIMDを使わないんですか?
使う事があるのはmonoだけですか?
676:デフォルトの名無しさん
09/06/05 02:48:54
せいぜいmovqくらいじゃね
677:デフォルトの名無しさん
09/06/05 02:58:36
>>673
C++のコンパイル速度の遅さは文法の複雑さが主な原因。
678:デフォルトの名無しさん
09/06/05 03:10:57
>>674
VC++はリンク時の最適化というのがあって、
それ使えば全部ひとまとめにしたのと同じような効果が得られる。
まあこれ使うとさらにリンク時間が長くなるんだが。
679:デフォルトの名無しさん
09/06/05 03:47:29
>>675
SIMDが使える環境では使うようにJITコンパイルされる。
Mono.SIMDはSIMDによる"手動の最適化"を"マネージコードだけ"で行えるのが武器。
.NETでやるには部分的にC++/CLIを用いてネイティブで実装する必要がある。
680:デフォルトの名無しさん
09/06/05 03:53:06
むしろC#のコンパイル速度が速すぎる。
入力中にバックグラウンドでコンパイルしてるんじゃないかと疑ってしまったぞ。
681:デフォルトの名無しさん
09/06/05 07:14:37
>>680
VBにしてもJavaにしてもこんなもんじゃね?
デルファイとかさらに早いし
>>677
無意味なコンパイルだと思われる、一度コンパイルし結果が得られるはずであっても、直前のヘッダファイルが変更されると
全部コンパイルし直さない限り、そのままでいいか確定しないからな。
コンパイルの流れがちゃんとすれば、C++よりはるかに複雑な構造は取り扱えるし、C#だって今となってはC++と比較して遜色ないくらい複雑な内容をもっているし。
682:デフォルトの名無しさん
09/06/05 07:21:48
>全部コンパイルし直さない限り、そのままでいいか確定しないからな
この原因を作り出しているのがプリプロセッサで、C系のプリプロセッサの仕組みは今となっては非常にマズイという事になっている。
それとincludeされるファイルがincludeし始めると、対象が指数関数的に増えるのも問題。
C#の場合はどんなに複雑でも、各ファイルが独立しているので、コンパイル時間は線形的にしか増えない。今の言語はほとんどこのスタイル。
683:デフォルトの名無しさん
09/06/05 09:43:48
構文解析やコード生成自体はそんなに大したコストじゃないよ
684:デフォルトの名無しさん
09/06/05 11:11:08
>>683
十分デカイって、特に何か処理のする事がない、ただラベルの付け合わせだけのリンクでさえボロボロのC++においては
685:デフォルトの名無しさん
09/06/05 11:25:48
C言語とオブジェクトファイルをリンクするldの方式は1960年代の技術だからな、C++も基本的にはこの考え方を踏襲しているわけで
かれこれ40年越し、そろそろ半世紀前から使われてきた技術だ、さすがに熟成通り越して酢になってますよ。
今でも実用的に使われているというのはそれだけでも凄い事なんですけどね。
686:デフォルトの名無しさん
09/06/05 12:04:10
>>680
実際にバックグラウンドコンパイルを研究する価値はあるんじゃないか?w
というか、きっと誰かしてる。
687:デフォルトの名無しさん
09/06/05 13:55:37
たしかにコーディング中の入力待ちアイドルタイムって長いもんな
688:デフォルトの名無しさん
09/06/05 15:35:15
これからのC++ではC#やVBがIntelliSenseを使うための情報収集をする時間でコンパイルか……
追い詰まっていると思われ
689:デフォルトの名無しさん
09/06/05 19:08:53
>>686
ていうか書いた奴が
インテリセンスで即反映、コードチェックも即掛かる
なんだからバックグラウンドってーか入力がある度にやってるんじゃないか
690:デフォルトの名無しさん
09/06/05 20:20:30
C++も使うが、Visual Studio 2010はびっくりするほどIntelliSenseが効くようになったのが凄い。
ブログでも今までのを捨てて新しくしたと言っていたし。
まあそれでもC#には敵わないが。
691:デフォルトの名無しさん
09/06/05 21:33:22
個人的にはできる限り早い段階でC++よりC#へ移行させてほしいと願うばかり
さすがにもうC++ではやりきれない
692:デフォルトの名無しさん
09/06/07 09:41:03
C#で十分にできることを、C++でやってるんだとしたら、
それは悲しいことだな
693:デフォルトの名無しさん
09/06/07 10:08:20
激しく計算するような分野じゃC#は使えないよ
694:デフォルトの名無しさん
09/06/07 10:44:08
GUIと通信部分をC#で書いて、計算はworkstationでやってるけど?
695:デフォルトの名無しさん
09/06/07 10:47:45
いいんじゃない
696:デフォルトの名無しさん
09/06/07 11:18:04
だから向き不向きあるゆーとろーが
向いてるところに生産性の悪いC++使うことないともゆーとろーが
697:デフォルトの名無しさん
09/06/07 13:28:22
激しく計算するような分野だが、C#に変えちまったけどな
C++でスレッド管理めんどくさすぎ、やってられない
結局やりきれずにシングルスレッドで書いてC#より遅くて使い物にならん事多々あり
698:デフォルトの名無しさん
09/06/07 13:29:49
いまならC++を使う状況はメモリを直接参照して変更するような処理かな?
いまならC++/CLIつかってその部分だけ書くのが便利かもと思ってる。
C#でちょっとした画像処理をポインタを使用して書いた時は、
unsafeがいちいちめんどくさくてストレスがたまったよ。
699:デフォルトの名無しさん
09/06/07 13:34:34
C#のunsafeでだるいならC++でもだるいだろう。
ちょっとコード書き足すだけだし
700:デフォルトの名無しさん
09/06/07 13:35:43
C++スレで存分に語れよ
701:デフォルトの名無しさん
09/06/07 13:36:11
C++のほうもOpenMPはだいぶ楽だと思う。
C#にもあれくらい簡単に使えるのが欲しい。
というわけで、.NET 4.0の並列化関係のライブラリに期待している。
702:デフォルトの名無しさん
09/06/07 13:37:34
OpenMPは総合力に掛ける、使いどころが限定的すぎる。
703:デフォルトの名無しさん
09/06/07 13:43:00
そんな最強言語決定戦みたいなのは厨二に任せて、
寛容なC#ユーザーはC++を使う人を一々否定しないって顔しとけよ
704:デフォルトの名無しさん
09/06/07 13:43:16
>>699
いや、アンセーフじゃないC++は普通に業務でつかってるかよ。
書くのは全くだるくはないが、ヘッダの依存関係を解決する方が面どくさい。
705:デフォルトの名無しさん
09/06/07 13:44:29
だからC++スレで存分に語れよ
706:デフォルトの名無しさん
09/06/07 14:15:56
public class DoubleList : List<double>
ってクラスがあって、
コンストラクタが
public DoubleList () { }
こうなってる場合は
みたいなクラスを作った場合には、 new DoubleList()
が呼ばれた時点でList<double>が作られますよね?
ここで Listのコンストラクタのうち、引数としてcapacityをとるものを
DoubleListのコンストラクタとしても用意したいのですが、どうしたらいいでしょうか?
707:デフォルトの名無しさん
09/06/07 14:24:58
public DoubleList(int capacity) : base(capacity) {
}
708:デフォルトの名無しさん
09/06/07 14:25:23
public クラス名() : base(スーパークラスの引数) {}
709:デフォルトの名無しさん
09/06/07 14:29:44
少しエスパーしてみた、本当に欲しいのはこっちか?、ちがってたらまぁ適当にやってくれ。
using DoubleList = List<double>;
710:706
09/06/07 14:31:20
>>707,708さん
それです!ありがとうございました。
>>709さん
doubleの可変長配列に各種メソッドの追加、演算子のオーバーロード等がしたくて
DoubleListなんて作ってました。
皆様ありがとうございました。
711:デフォルトの名無しさん
09/06/07 14:39:09
>>710
ならば、定石としてはコンポジションをとるべきである、多態性を目的としない機能追加を伴う導出は悪だ。
712:デフォルトの名無しさん
09/06/07 14:41:54
extention method もあるな
713:デフォルトの名無しさん
09/06/07 15:27:51
>>703
C++使う人を否定してるってよりは、
仕事でいやいやC++使ってる自分を否定したいんでは。
714:デフォルトの名無しさん
09/06/07 16:17:41
DoubleListだが、こいつはIList<T> に対するアダプターパターンで解決するのが基本かと。
演算子のオーバーロードというのだから、線形代数系の何かだと思われるが。
相手がList<double>限定では汎用度が低すぎるしな、double [] にも適用したいだろう。
特にIList系より抽象度が低くてよいのなら、IEnumerable<T>ベースで作ってやればLINQの恩恵にもあずかれるだろうし。