C#, C♯, C#相談室 P ..
199:デフォルトの名無しさん
09/04/14 23:15:40
どっちも非同期で実装すればいいんじゃね?
200:デフォルトの名無しさん
09/04/14 23:18:27
>>198
ページングとは、
1. クライアントで検索依頼
2. クライアントから1ページ目要求
3. データがなくなるまで、2をnページ繰り返し
ということでしょうか?
サーバで全データをメモリに読み込むことは出来ないので、データベース上に
昇順でユニークなIDが必要になるという理解であってますか?
201:デフォルトの名無しさん
09/04/14 23:20:07
SQL で指定できるでしょ。上限件数
202:デフォルトの名無しさん
09/04/14 23:21:31
>>199
すみません。具体的に御願いできますか?非同期でクライアントから依頼して
サーバから非同期でコールバックするという意味でしょうか?
だとすると>>197の案1, 2ですよね
203:デフォルトの名無しさん
09/04/14 23:23:35
WCF でのサービスメソッド呼び出しを非同期にする。
サーバーでのクエリ実行を非同期にする。
で、適宜タイムアウト。件数が多すぎるとき? シラネ。
204:201
09/04/14 23:23:55
あー、説明不足かもしれんので一応。
TOP 句
URLリンク(msdn.microsoft.com)
ROW_NUMBER 関数
URLリンク(msdn.microsoft.com)
205:デフォルトの名無しさん
09/04/14 23:25:22
>>201
上限件数は指定できます。ただ、最初の件数以降の次のデータを指定するのは
難しい状況です。ユニークで昇順なキーがないので。
データが多いからといって、途中で検索をやめてしまうのはだめです。
ただ、サーバがメモリ不足で落ちるのは駄目ですが、クライアントがメモリ不足
で落ちるのはまだ許容範囲です。
206:デフォルトの名無しさん
09/04/14 23:28:13
ダメです、とか、なんでえらそうなの?
207:デフォルトの名無しさん
09/04/14 23:30:37
>>204
ROW_NUMBER知りませんでした!!使えそうですね。ちょっとこれから調べてみます。
>>206
申し訳ないです。エラーで結果が出ないのはいいのですが、結果が正しくないの
は一番やってはいけないことなので、あのような書き方になってしまいました。
208:デフォルトの名無しさん
09/04/14 23:31:17
>>205
TOP でも 3 回(だっけ?)組み合わせればここからここまでっての
一応できるんだよ。
まぁ天啓にあった某関数と同じ機能な ROW_NUMBER サポして
くれたからこれでよくなったけど
209:デフォルトの名無しさん
09/04/14 23:58:26
カーソル付きのDBMSならHTTP鯖のセッション情報にカーソル情報書き込んでしまえばいいと思った
210:デフォルトの名無しさん
09/04/15 00:08:13
>>209
なるほど。
211:デフォルトの名無しさん
09/04/15 21:30:23
OLAPに対応してるのってMSSQL2008からだよね。
大丈夫かな?
212:デフォルトの名無しさん
09/04/15 22:49:05
質問失礼します。
タスクトレイに格納した状態で再生できるサウンドAPIを探しています。
再生させる際、タスクトレイに格納された状態で、ボリューム調整を行いたいです。
始め、System.Media.SoundPlayerを利用したのですが、音量調整ができませんでした。
次に、Microsoft.DirectX.DirectSound.SecondaryBufferを利用したのですが、タスクトレイに入った状態では再生できませんでした。
上記には勘違いがあるかもしれません。
その点の指摘も含め、分かる方よろしくお願いします。
開発環境:
VisualStudio2008
WindowsXP
213:デフォルトの名無しさん
09/04/15 22:56:04
なんで既にタスクトレイさんがわるものなのぉぉおwwww
214:デフォルトの名無しさん
09/04/15 23:03:29
SetCooperativeLevelが不適切なだけじゃね?
215:デフォルトの名無しさん
09/04/15 23:07:58
ありがとうございます。
協調レベルは真っ先に疑いました。
CooperativeLevel.Normal
CooperativeLevel.Priority
CooperativeLevel.WritePrimary
全部試しましたが、ダメでした。。。
フォームを表示すると鳴るんですけど、何故でしょうね。。。
216:デフォルトの名無しさん
09/04/15 23:14:06
SetCooperativeLevel(this, CooperativeLevel.Priority);
今このようなコードを書いています。
thisがいけないんですかね?
表示しているのはフォームではなく、NotifyIconですからそのownerを指定???
う〜む。やっぱり分からないです。。。
217:212 215 216
09/04/15 23:29:32
すいません。
自己解決しました。
BufferDescription の GlobalFocus を true にする事で鳴りました!
218:デフォルトの名無しさん
09/04/15 23:31:14
なーんか似た内容の人が居たらしい
URLリンク(hpcgi1.nifty.com)
219:デフォルトの名無しさん
09/04/16 16:45:54
指定したアセンブリのプロセッサアーキテクチャを調べるにはどうすればいいでしょうか?
VS2008で参照を追加したとき.csprojに
processorArchitecture=x86
などと書かれる情報のことです。
ildasmでマニフェストは見てみたのですが、それらしき情報は見つからなかったです。
よろしくお願いします。
220:デフォルトの名無しさん
09/04/17 05:03:44
プログラムでやるなら、Assembly.ReflectionOnlyLoadFromで読み込んでAssemblyName.ProcessorArchitectureで
221:デフォルトの名無しさん
09/04/17 20:13:06
なんかプロジェクトの規模が大きくなるにつれてIDEが激しく重くなるんですが
どうしようもないんでしょうか?
といってもたかだか*.csファイル数126個、全45109行なんですが。
ユーザーコントロールも10個くらい作ってますが、それも関係してるのかな。
222:デフォルトの名無しさん
09/04/17 21:33:29
exeとは異なる任意のフォルダにdllファイルを置きたいため以下のプログラムを書きました。
(WidgetLibrary.Widgetクラスは別プロジェクトでdllとして作成)これだとWidgetLibrary.Widgetの名前が解決できないのでビルド
できません。ビルドできない原因は何でしょうか?
namespace ConsoleApplication1
{
public class Loader
{
static void Main(string[] args)
{
AppDomain.CurrentDomain.AssemblyResolve += FindAssm;
Program.Go();
}
static Assembly FindAssm(object sender, ResolveEventArgs args)
{
string simplename = new AssemblyName(args.Name).Name;
string path = @"c:\sample\" + simplename + ".dll";
if (!File.Exists(path)) return null;
return Assembly.LoadFrom(path);
}
}
public class Program
{
public static void Go()
{
WidgetLibrary.Widget w = new WidgetLibrary.Widget(1, "a");
w.widgetDisplay();
}
}
}
223:デフォルトの名無しさん
09/04/17 21:41:29
参照設定で追加していないのでメタデータを参照できないのが原因
と思う。
224:デフォルトの名無しさん
09/04/17 21:41:44
自分で言っているように「WidgetLibrary.Widgetの名前が解決できないので」だろ。
225:デフォルトの名無しさん
09/04/17 21:45:01
>>222
任意のフォルダにDLLを配置するのが目的なら、GACに登録した上で参照設定するのが王道。
.NET Frameworkに含まれるDLLは、ローカルコピーしなくても参照できるだろ。
それは.NET FrameworkのDLLが特別扱いされているわけじゃなくて、それらが
GACに登録されているから。
自作のDLLもGACに登録すれば同様に扱える。
226:デフォルトの名無しさん
09/04/17 21:58:34
レスありがとうございます。
>>223
参照設定を追加するとプライベートアセンブリになってしまうので回避したいのです。
>>224
解決策でした。
>>225
GACに登録せずに任意のフォルダに置くことは不可能ということでしょうか??
このソースは C# 3.0 IN A NUTSHELL の558ページのコードを確認したくて
書いたものです。
227:デフォルトの名無しさん
09/04/17 22:20:42
あの本の綴じ込みはすごくいいね
洋書は製本がイマイチなのが多くて困る
228:デフォルトの名無しさん
09/04/17 22:28:17
参照しているアセンブリのプロパティでローカルコピーをオフにすればよい
と思う。
229:デフォルトの名無しさん
09/04/17 22:43:09
>>228
できました。
どうもありがとうございました。
230:デフォルトの名無しさん
09/04/17 23:57:22
GACって何のことか全く知らない俺が、ぐぐる前に適当に妄想してみる。
GACとは、Global Assembly Cacheの略で、システムワイドに.NETのアセンブリを
登録しておくキャッシュ。概念としてはUNIX系のOSでldconfigすると、システム
ワイドに利用するダイナミックライブラリがld.soに登録されるのと似ている。
231:デフォルトの名無しさん
09/04/18 05:25:56
>>230
おまえgoogle先生だろw
232:デフォルトの名無しさん
09/04/18 13:04:23
1.1のContextMenuって、MenuItem.CloneMenuを使用して
状況に合わせたコンテキストメニューを作れみたいになっていたと
記憶してるんですが、
ContextMenuStripだと、ToolStripMenuItemにCloneMenuがないので、
これはどう解釈したらいいんでしょうか?
デザイン時にパターンの数だけ作り付けのContextMenuStripを
用意しとくんですか?
233:デフォルトの名無しさん
09/04/18 20:48:31
Timerで回しているときにint(値型?)の配列が画面最小化すると消えてしまうのですが
残しておきたいです
どうすればいいのでしょうか?
234:デフォルトの名無しさん
09/04/18 20:52:43
>>233
それだけで回答すると、
そりゃあんたの作り方次第としか言いようがない。
235:デフォルトの名無しさん
09/04/18 21:02:42
>>234
作り方が悪かったですorz
OnActivatedを初めてFormが表示されるときにだけ呼ばれると勘違いしてました…
236:デフォルトの名無しさん
09/04/18 22:06:35
それなんてLoadイベント
237:デフォルトの名無しさん
09/04/18 22:51:48
例えばZキーが押された状態でAを押してもOnKeyDownが発生しません。
これをZキーが押されている時にAが押されていることを知りたいのですがどうすればいいでしょうか?
238:デフォルトの名無しさん
09/04/18 23:06:29
e.Handled = true;でいけました
239:デフォルトの名無しさん
09/04/18 23:12:15
先日、C言語の勉強を始めた者です。まだまだ参考書の始めの方なのですが、エラーが起きてよくわからないことになってしまいました。
いまだにキーボードから数値を入力させて、それを表示する程度のものの自己流改変なのですが、なぜか二つ目を入力した後にエラーが起きて止まってしまいます。
それと、途中でプログラムの流れを止める方法がわからないので、それも出来れば教えていただけませんでしょうか?
とりあえず理想としては、エンターを押してからもう一度押す迄
変数X + 1の答えを変数Xに代入し続けるようなプログラムが作りたいのです。
一応、ソースを書いておきます。
#include <stdio.h>
int main(void)
{
int PS;
float PS2;
float PS3;
printf("まずは整数を入力してください。");
scanf("%d",PS);
printf("次は、小数を入力してください。");
scanf("%f",PS2);
printf("最後にもう一度、小数を入力してください。");
scanf("%f",PS3);
int end;
printf("では、なにか数字を入力してエンターを押すと、結果が表示されます。");
scanf("%d",end);
240:デフォルトの名無しさん
09/04/18 23:13:35
>>239
すれ違い
241:デフォルトの名無しさん
09/04/18 23:13:52
printf("最初の整数は %d ですよね?",PS);
;
printf("そして次は少数一回目は %f ですよね?",PS2);
;
printf("そして最後は、 %f となっておりますよね?",PS3);
;
int red;
printf("最後に、面白いものを見せましょう。適当に数字を入れてエンターを押してください。");
scanf("%d",red);
printf("exeファイルのダブルクリックをしていなければ、適当に入れてもらった数字を足した数を「%d」内に表示しておきます。では、さようなら。",end + red);
return 0;
}
最後のprintf()が終わっても自動的に閉じないようにするには、いったいどうすればいいのでしょう?
242:239,241
09/04/18 23:15:53
申し訳ございません。
スレ名をチラっとしかみていませんでした。本当に申し訳ありません。
243:デフォルトの名無しさん
09/04/18 23:36:08
C#ってヘッダーファイルが無いのか。
変な言語だな。
C#って手続き型のプログラムができないのか。
不便な言語だな。
C#って関数に省略可能な引数を使えないのか。
代替手段としてオーバーロードしないといけないのか。
馬鹿げた言語だな。
C#ってswitch文でbreak無しで下に降りることができないのか。
気が狂ったような言語だな。
それと、0かそうでないかを評価できないのか。
初期化する前の不定値を参照するのはコンパイルエラーか。
244:デフォルトの名無しさん
09/04/18 23:46:36
省略可能な引数は確かにほしいな。
他のは賛同しかねるが。
245:デフォルトの名無しさん
09/04/18 23:49:30
省略可能な引数はC#4.0で追加される。
swichでのフォールスルーに関しては議論が分かれるとこだろう。
C#ではステートメントを含まない場合にのみ許可されている。
gotoステートメントによってラベル付きステートメントに直接移動する事もできるけど滅多に使われない。
246:デフォルトの名無しさん
09/04/18 23:58:26
>>239
初心者は恐ろしいことするよなぁ
247:デフォルトの名無しさん
09/04/19 00:00:32
セグメントエラーです。。。
248:デフォルトの名無しさん
09/04/19 00:37:30
C#はC言語の標準関数を使えないんだろ。
ぼろい言語だな。.Netでしか通用しないノウハウだな。
C++ならC言語のノウハウは生かせるから、VC++やC++Builderで、MFCやVCLの知識は無いけども、
イベントハンドラにC言語のコードを差し込んで、単にGUIの画面を借りるだけのスタイルで、
普段コマンドプロンプトのプログラムしか作らない俺でも、Windowsプログラムを作れたぞ。
249:デフォルトの名無しさん
09/04/19 00:49:14
釣りたいならもっと勉強してから出直してきな
250:デフォルトの名無しさん
09/04/19 01:10:24
>>243 と >>248 は逆に、C/C++ への皮肉だと思う。
251:デフォルトの名無しさん
09/04/19 01:14:24
C#でC言語の標準関数を使った事がある俺は神か
252:デフォルトの名無しさん
09/04/19 01:14:35
ある意味釣られたってわけだなw
253:デフォルトの名無しさん
09/04/19 01:17:50
ああ、msvcrt*.dllの関数も呼べるよな
254:デフォルトの名無しさん
09/04/19 01:39:12
C++人はマネージ拡張C++に手を伸ばせば同じことができるし、
VB6人やMS-Office VBA人は差分学習ですぐにVB.netやれるし、
(中途半端に似ててかえって混乱するとかいうのはデマ)
.Netしか通用しないノウハウのC#を学習する意味不明。
255:デフォルトの名無しさん
09/04/19 01:42:37
C互換ライブラリとかどこかにあったりしないかな。
C.StdIO.Printf() とか用意してある
256:デフォルトの名無しさん
09/04/19 01:42:57
第二段来ました
257:デフォルトの名無しさん
09/04/19 02:07:22
>>254
ところがどっこい。
.NETのサンプルがC#だけで出て来る例というのがよくあるため、
VBの人もC++の人もC#のサンプルを見て自分の言語に移す羽目に。
ここから蛇足。一昔前だったら、Cで書かれたWinAPIのサンプルを
VBへ移したり、C++ならクラスでラップしてみたりしていたわけで、
時代が移ってもやっていることに変わりはないのさ_| ̄|○
258:デフォルトの名無しさん
09/04/19 02:09:54
しっ、話しかけちゃいけません!
259:デフォルトの名無しさん
09/04/19 02:10:41
>>254
じゃあdelphiしか選択肢がないな
260:デフォルトの名無しさん
09/04/19 02:14:42
kylixってどこいったん?
261:デフォルトの名無しさん
09/04/19 03:24:35
>>257
要は君はコピペグラマってこと?
だったら.NETの問題っていうより君自身の問題なんじゃないの?
普通はサンプルの考え方を拝借することはあってもコードをそのまま引っ張る
なんてしないよ。
262:デフォルトの名無しさん
09/04/19 03:47:00
そりゃそうだ。だいたい、C#に癖のある構文なんてそんなに無いから、
サンプルを理解するくらいなら特にC#の知識を持ち合わせていなくても問題ないだろう。
もっとも、VB.NETやC++/CLIからもうちょっと手を伸ばせばC#にも手が届くだろうとは思う。
手が届くというだけではC#を学習する理由にはならないから、254への答えでは無いけどな。
263:デフォルトの名無しさん
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行ずつ読み込む方法しか書いてなかったもので。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4334日前に更新/229 KB
担当:undef