C#, C♯, C#相談室 Part62
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2010/09/18(土) 10:57:11C#, C♯, C#相談室 Part61
http://hibari.2ch.net/test/read.cgi/tech/1280008155/
Visual C# 2010 Express Edition 日本語版
http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/
その他テンプレ>>1-5くらい
0002デフォルトの名無しさん
2010/09/18(土) 11:14:440003デフォルトの名無しさん
2010/09/18(土) 11:57:15でアクセスして、が一番無難な気がする。仮想領域サイズにも優しいし。
0004デフォルトの名無しさん
2010/09/18(土) 11:59:570005デフォルトの名無しさん
2010/09/18(土) 12:03:56Azukiの人に謝れ
0006デフォルトの名無しさん
2010/09/18(土) 12:21:200007デフォルトの名無しさん
2010/09/18(土) 12:24:08誰気にすることなく作りたいものを作ればヨシ
0008デフォルトの名無しさん
2010/09/18(土) 12:32:20WPFアプリケーションにGDIを使ったテキストエディタを埋め込むと違和感が出るから
0009デフォルトの名無しさん
2010/09/18(土) 14:05:01どうも CLR の実装で X64 モードでも 32bit の制限が存在するようです。
しかしだとしたら X64 の存在意義が微妙ですね
0010デフォルトの名無しさん
2010/09/18(土) 14:26:380011デフォルトの名無しさん
2010/09/18(土) 14:33:26でもさ・・・
配列として大きく確保できなくても分割すれば扱えるんだから
その辺はかなりの物じゃないの?
メモリに置けないからってストレージにアクセス行くことを考えると
クラスで管理することのコストなんてかなり小さいと思うけど
0012デフォルトの名無しさん
2010/09/18(土) 14:54:47巨大なメモリ領域との相性が悪い
分割のオーバーヘッドが気になるような処理は
アンマネージドでやれって事なんだろう
WPFも画像処理はみんなアンマネージドだしね
> しかしだとしたら X64 の存在意義が微妙ですね
巨大なアンマネージドメモリを使おうとすると、32bitモードは使い物にならないよ
0013デフォルトの名無しさん
2010/09/18(土) 14:59:42そうだったのですか。
「すこし」大きめの BLOB データを扱うデータベースアプリの作成が目的だったのですが
X64 で動かせばマネージドで処理できる。というのが間違いだったようですね。
こりゃ、考え直さないといけないですね。
ありがとうございました
0014デフォルトの名無しさん
2010/09/18(土) 16:06:22を書いてみたんだけど、CreateFromFile がコケる…
System.ApplicationException: MemMapArray.new() error ---> System.IO.DirectoryNotFoundException: パスの一部が見つかりません。
場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
場所 System.IO.MemoryMappedFiles.MemoryMappedFile.CreateCore(SafeFileHandle fileHandle, String mapName,
HandleInheritability inheritability, MemoryMappedFileSecurity memoryMappedFileSecurity, MemoryMappedFileAccess access, MemoryMappedFileOptions options, Int64 capacity)
場所 System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile(String path, FileMode mode, String mapName, Int64 capacity, MemoryMappedFileAccess access)
場所 System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile(String path, FileMode mode, String mapName, Int64 capacity)
場所 MemoryMap.MemMapArray`1..ctor(Int64 size) 場所 C:\User\VS2010\Projects\test\MemoryMappedArray\MemMapArray.cs:行 26
--- 内部例外スタック トレースの終わり ---
場所 MemoryMap.MemMapArray`1..ctor(Int64 size) 場所 C:\User\VS2010\Projects\test\MemoryMappedArray\MemMapArray.cs:行 29
場所 MemoryMappedTest.Program.Main(String[] args) 場所 C:\User\VS2010\Projects\test\MemoryMappedTest\Program.cs:行 10
file = "C:\\Users\\<ユーザ名(英数字のみ)>\\AppData\\Local\\Temp\\tmp61C6.tmp"
またWindows7なんだけど、もしかしてVista以降だとPath.GetTempFileName()が使い物にならなくなってる?
0015デフォルトの名無しさん
2010/09/18(土) 16:07:550016デフォルトの名無しさん
2010/09/18(土) 16:08:47フォルダに対応していないのか。
0017デフォルトの名無しさん
2010/09/18(土) 16:17:17http://ideone.com/o8Toz
何を指定するんだろう、コレ?
0018デフォルトの名無しさん
2010/09/18(土) 16:25:450019デフォルトの名無しさん
2010/09/18(土) 16:29:420020デフォルトの名無しさん
2010/09/18(土) 16:44:35ひまわりとかか
0021デフォルトの名無しさん
2010/09/18(土) 16:52:39ファイルが空っぽ(長さ0バイト)なんだから当たり前じゃないのかそれ....
0022デフォルトの名無しさん
2010/09/18(土) 16:56:10http://ideone.com/zzNU9
でも、new MemMapArray<int>(100) で・・・
System.ApplicationException: MemMapArray.new() error ---> System.IO.IOException:
このコマンドを実行するのに十分な記憶域がありません。
場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
場所 System.IO.MemoryMappedFiles.MemoryMappedFile.CreateCore(SafeFileHandle fileHandle, String mapName, HandleInheritability inheritability, MemoryMappedFile
Security memoryMappedFileSecurity, MemoryMappedFileAccess access, MemoryMappedFileOptions options, Int64 capacity)
場所 System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile(FileStream fileStream, String mapName, Int64 capacity, MemoryMappedFileAccess access, Memory
MappedFileSecurity memoryMappedFileSecurity, HandleInheritability inheritability, Boolean leaveOpen)
場所 MemoryMap.MemMapArray`1..ctor(Int64 size) 場所 C:\User\VS2010\Projects\test\MemoryMappedArray\MemMapArray.cs:行 25
--- 内部例外スタック トレースの終わり ---
場所 MemoryMap.MemMapArray`1..ctor(Int64 size) 場所 C:\User\VS2010\Projects\test\MemoryMappedArray\MemMapArray.cs:行 29
場所 MemoryMappedTest.Program.Test(Int64 size) 場所 C:\User\VS2010\Projects\test\MemoryMappedTest\Program.cs:行 11
引数勘違いしてるのかな?_| ̄|○
0023デフォルトの名無しさん
2010/09/18(土) 16:56:13http://hibari.2ch.net/test/read.cgi/tech/1225957942/
0024デフォルトの名無しさん
2010/09/18(土) 17:04:26> File.Create(file).Close();
ただ単に、
ファイルが作られる前にcloseしてるだけじゃないの?
0025デフォルトの名無しさん
2010/09/18(土) 17:05:34ファイルが作られる前にcloseしてるからじゃないの?
0026デフォルトの名無しさん
2010/09/18(土) 17:12:00さすがにちゃんとコード見ろと言いたい
0027デフォルトの名無しさん
2010/09/18(土) 17:12:06http://ideone.com/xnBcs
しかし
System.ApplicationException: MemMapArray.new() error ---> System.IO.DirectoryNotFoundException: パスの一部が見つかりません。
場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
場所 System.IO.MemoryMappedFiles.MemoryMappedFile.CreateCore(SafeFileHandle fileHandle, String mapName, HandleInheritability inheritability, MemoryMappedFile
Security memoryMappedFileSecurity, MemoryMappedFileAccess access, MemoryMappedFileOptions options, Int64 capacity)
場所 System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile(FileStream fileStream, String mapName, Int64 capacity, MemoryMappedFileAccess access, Memory
MappedFileSecurity memoryMappedFileSecurity, HandleInheritability inheritability, Boolean leaveOpen)
場所 MemoryMap.MemMapArray`1..ctor(Int64 size) 場所 C:\User\VS2010\Projects\test\MemoryMappedArray\MemMapArray.cs:行 29
--- 内部例外スタック トレースの終わり ---
場所 MemoryMap.MemMapArray`1..ctor(Int64 size) 場所 C:\User\VS2010\Projects\test\MemoryMappedArray\MemMapArray.cs:行 33
場所 MemoryMappedTest.Program.Test(Int64 size) 場所 C:\User\VS2010\Projects\test\MemoryMappedTest\Program.cs:行 11
FileStream 渡してるのに DirectoryNotFoundException ってナニソレ・・・
0028デフォルトの名無しさん
2010/09/18(土) 17:15:27これって何?
0029デフォルトの名無しさん
2010/09/18(土) 17:16:45Dispose()でファイル抹消するため。
0030デフォルトの名無しさん
2010/09/18(土) 17:17:530031デフォルトの名無しさん
2010/09/18(土) 17:18:370032デフォルトの名無しさん
2010/09/18(土) 17:34:49とりあえず、MemoryMappedFile.CreateFromFile のmapNameパラメータに
Path.GetTempFileName()で取得したパスを指定しているのは変だと思う。
003324
2010/09/18(土) 17:41:50ちゃんと見てませんでした
さて…
では答えは?
mapName
型 : System.String
メモリ マップト ファイルに割り当てる名前
をファイルネームと勘違いしているから!
これは任意の文字列でいい
ただ、これには使っていい文字とダメな文字があるはず。それを使ってるからアウト
と書いてるうちに誰かがレスしてるね…
0034デフォルトの名無しさん
2010/09/18(土) 17:47:53名前を指定するのは共有メモリとして使いたい場合
0035デフォルトの名無しさん
2010/09/18(土) 18:16:02とはいえ、マニュアルが言葉足りないのは常。nullに変更。
http://ideone.com/aOfRy
進んだけど、今度は CreateViewAccessor() で…
System.UnauthorizedAccessException: パスへのアクセスは拒否されました。
場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
場所 System.IO.MemoryMappedFiles.MemoryMappedView.CreateView(SafeMemoryMappedFileHandle memMappedFileHandle, MemoryMappedFileAccess access, Int64 offset, Int64 size)
場所 System.IO.MemoryMappedFiles.MemoryMappedFile.CreateViewAccessor(Int64 offset, Int64 size, MemoryMappedFileAccess access)
場所 System.IO.MemoryMappedFiles.MemoryMappedFile.CreateViewAccessor(Int64 offset, Int64 size)
場所 MemoryMap.MemMapArray`1.SetValue(Int64 index, T value) 場所 C:\User\VS2010\Projects\test\MemoryMappedArray\MemMapArray.cs:行 49
場所 MemoryMap.MemMapArray`1.set_Item(Int64 index, T value) 場所 C:\User\VS2010\Projects\test\MemoryMappedArray\MemMapArray.cs:行 41
場所 MemoryMappedTest.Program.Test(Int64 size) 場所 C:\User\VS2010\Projects\test\MemoryMappedTest\Program.cs:行 10
はて、FileStream渡してるのになぁ。
0036デフォルトの名無しさん
2010/09/18(土) 18:23:08初心者スレ行けば?
0037デフォルトの名無しさん
2010/09/18(土) 18:25:440038デフォルトの名無しさん
2010/09/18(土) 18:33:25相変わらず「パスの一部が」で駄目と確認。
http://ideone.com/t0PJ5
System.ApplicationException: MemMapArray.new() error ---> System.IO.DirectoryNotFoundException: パスの一部が見つかりません。
場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
場所 System.IO.MemoryMappedFiles.MemoryMappedFile.CreateCore(SafeFileHandle fileHandle, String mapName, HandleInheritability inheritability, MemoryMappedFile
Security memoryMappedFileSecurity, MemoryMappedFileAccess access, MemoryMappedFileOptions options, Int64 capacity)
場所 System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile(String path, FileMode mode, String mapName, Int64 capacity, MemoryMappedFileAccess access)
場所 System.IO.MemoryMappedFiles.MemoryMappedFile.CreateFromFile(String path, FileMode mode, String mapName, Int64 capacity)
場所 MemoryMap.MemMapArray`1..ctor(String file, Int64 size) 場所 C:\User\VS2010\Projects\test\MemoryMappedArray\MemMapArray.cs:行 32
--- 内部例外スタック トレースの終わり ---
場所 MemoryMap.MemMapArray`1..ctor(String file, Int64 size) 場所 C:\User\VS2010\Projects\test\MemoryMappedArray\MemMapArray.cs:行 35
場所 MemoryMappedTest.Program.Test(Int64 size) 場所 C:\User\VS2010\Projects\test\MemoryMappedTest\Program.cs:行 9
0039デフォルトの名無しさん
2010/09/18(土) 18:44:10これでも駄目。あとはUACの関連とか?
メイン関数は
http://ideone.com/OXO53
なので、出来たら教えてくれ。自分は諦めた。
0040デフォルトの名無しさん
2010/09/18(土) 19:18:55スタックトレースを貼るな
0041デフォルトの名無しさん
2010/09/18(土) 19:41:51意味なくクラスとか使ってるんで、見る気なくした。
0042デフォルトの名無しさん
2010/09/18(土) 20:35:23当たり前ソース見直せ
>>39
そう
それととんでもないことしてるぞ
0043デフォルトの名無しさん
2010/09/18(土) 20:43:48わからないのなら黙っとけ。
わかりもしねえのに口調だけ上から目線とか馬鹿じゃなかろうか
0044デフォルトの名無しさん
2010/09/18(土) 20:45:470045デフォルトの名無しさん
2010/09/18(土) 20:46:320046デフォルトの名無しさん
2010/09/18(土) 20:55:20ゆとりどもめ
>>38
>mmf = MemoryMappedFile.CreateFromFile(file, FileMode.Open, file, tsize*size);
直してないだろ
>>39
ユーザーフォルダではかけるでしょ
0047デフォルトの名無しさん
2010/09/18(土) 23:54:07しかし、既にそのディレクトリがエクスプローラー上で
開かれている場合には開きたくありません。
どの様にすれば、
タスクバー上に既に特定ディレクトリが開かれているかを判定する事が出来ますでしょうか?
ProcessStartInfo psi =new System.Diagnostics.ProcessStartInfo();
psi.FileName = @"C:\";
psi.Verb = "explore";
Process.Start(psi);
0048デフォルトの名無しさん
2010/09/19(日) 00:11:25判定すればいいんじゃね?
0049デフォルトの名無しさん
2010/09/19(日) 01:20:50Windows API は使わずに.Netで提供されている機能を使用して
実現したいと思います。
0050デフォルトの名無しさん
2010/09/19(日) 01:28:140051デフォルトの名無しさん
2010/09/19(日) 01:31:580052デフォルトの名無しさん
2010/09/19(日) 01:35:21.NETで提供されている機能もWin32APIで実現されてるんだし
Win32APIを呼び出す機能も.NETで提供されてるよ?
まあExplorerの列挙ならShell32.dll使った方が便利だけど こういう時dynamicは本当に楽だな
0053デフォルトの名無しさん
2010/09/19(日) 11:46:010054デフォルトの名無しさん
2010/09/19(日) 11:47:470055デフォルトの名無しさん
2010/09/19(日) 12:12:40うーんやっぱり.Netだけじゃムリポですか。
Windows API を使うとコードが汚くなるから嫌なのです。
0056デフォルトの名無しさん
2010/09/19(日) 12:24:04OSに依存しまくっているからなあ。
0057デフォルトの名無しさん
2010/09/19(日) 12:53:54よく分からん発想だなぁ
適当にクラスとか作って隠蔽しちまえばいいじゃん?
0058デフォルトの名無しさん
2010/09/19(日) 13:31:48コード内にAPI宣言等が存在する事自体が嫌い。
0059デフォルトの名無しさん
2010/09/19(日) 13:56:120060デフォルトの名無しさん
2010/09/19(日) 13:58:23なるべくAPI使うよ
0061デフォルトの名無しさん
2010/09/19(日) 13:59:330062デフォルトの名無しさん
2010/09/19(日) 17:44:190063デフォルトの名無しさん
2010/09/19(日) 17:49:09まあControl.CreateGraphicsを使うことを見直す方が先かもしれんがな
0064デフォルトの名無しさん
2010/09/19(日) 17:53:56使えないなぁ
0065デフォルトの名無しさん
2010/09/19(日) 18:03:48文句があるならWPF使え
0066デフォルトの名無しさん
2010/09/19(日) 18:10:56GCされるときはされる。
0067デフォルトの名無しさん
2010/09/19(日) 18:14:46BrushやGraphicsをDisposeしなくていいようにも作れたはずだよな
実際WPFだってもちろん最終的にはアンマネージリソース使うわけだけど
WinFormsみたいに局所的な管理じゃなくてフレームワーク全体で管理してるから
ほとんどDisposeは要らないようになってる
0068デフォルトの名無しさん
2010/09/19(日) 18:35:17ほぼ無問題のようだけど、Graphicsは若干事情が違うんじゃないの?
ランタイムが包括的に管理すればDispose不要にできるとかそんな性質のものとも思えんが
0069デフォルトの名無しさん
2010/09/19(日) 18:54:23他のアプリのDCとか余裕で横取りできるから危ない
0071デフォルトの名無しさん
2010/09/19(日) 19:10:06だからさAPI呼ぶ専用のクラス作って
代替え案でたら置き換えればいいじゃん
0072デフォルトの名無しさん
2010/09/19(日) 19:53:44API Code Packでも使えば。
0073デフォルトの名無しさん
2010/09/19(日) 20:49:19DisposeはGCが走るときに通るから別に必ず呼ばなくてはいけないってことではない。
ただ少ない資源を明示的に管理したいときには呼びましょうねってこった。
いずれ廃棄されるけど、廃棄タイミングがわからないと、
次に使うときに困るものとかな。
0074デフォルトの名無しさん
2010/09/19(日) 21:05:140075デフォルトの名無しさん
2010/09/19(日) 23:36:120076デフォルトの名無しさん
2010/09/19(日) 23:41:28???
0077デフォルトの名無しさん
2010/09/19(日) 23:47:210078デフォルトの名無しさん
2010/09/19(日) 23:48:220079デフォルトの名無しさん
2010/09/19(日) 23:53:45.NET世代になって自分が出来ないのを棚にあげて.NETを糞扱いしてたよね
0080デフォルトの名無しさん
2010/09/19(日) 23:56:412.0くらいで消えると思ってたよ
0081デフォルトの名無しさん
2010/09/20(月) 00:06:16まじでそうおもう?
仕様だってC++並みに太ってきてんだけどな。
C#だって思う通りの事やりたければ基盤の.NET
事だった相当調べないと実現できねーぞ。
おまえ単なる「奥深い」症候群じゃね?
0082デフォルトの名無しさん
2010/09/20(月) 00:07:160083デフォルトの名無しさん
2010/09/20(月) 00:15:35C++よりでかいし
008475
2010/09/20(月) 00:22:200085デフォルトの名無しさん
2010/09/20(月) 00:24:360086デフォルトの名無しさん
2010/09/20(月) 00:33:250087デフォルトの名無しさん
2010/09/20(月) 01:32:37LINQ とかの高機能面みれば、C++ よりずいぶん進んでる部分もあるし。
0088デフォルトの名無しさん
2010/09/20(月) 01:47:27どーでもいいがLINQまだ使った事が無いけど
便利?
便利で実用性があるなら勉強しようと思う。
0089デフォルトの名無しさん
2010/09/20(月) 01:55:17Enumerableの拡張メソッドなんかは便利だよ
0090デフォルトの名無しさん
2010/09/20(月) 01:56:060091デフォルトの名無しさん
2010/09/20(月) 02:00:160092デフォルトの名無しさん
2010/09/20(月) 02:06:590093デフォルトの名無しさん
2010/09/20(月) 02:10:15それは得意とかいわん
0094デフォルトの名無しさん
2010/09/20(月) 02:11:010095デフォルトの名無しさん
2010/09/20(月) 02:18:08実務経験が無いのに得意とかいってる奴は
童貞の癖してSEXは気持ちいいと言ってるのと同じ
0096デフォルトの名無しさん
2010/09/20(月) 02:22:160097デフォルトの名無しさん
2010/09/20(月) 02:26:140098デフォルトの名無しさん
2010/09/20(月) 02:42:160099デフォルトの名無しさん
2010/09/20(月) 03:04:14ttp://venus.bbspink.com/test/read.cgi/hneta/1284299158/
0100デフォルトの名無しさん
2010/09/20(月) 03:17:47http://msdn.microsoft.com/ja-jp/library/system.threading.tasks.parallel.aspx
4.0から。
0101デフォルトの名無しさん
2010/09/20(月) 07:25:48お前は業務プログラマもしくは人事だろ
根っからのプログラマなら実務経験年数よりも実務外の経験値が強力な意味を持つことは(ry
実務何年たっても使えないヤツは使えないんだよ
0102デフォルトの名無しさん
2010/09/20(月) 09:43:190103デフォルトの名無しさん
2010/09/20(月) 10:30:32C# は実用性の塊だから安心していい。
なれたらむちゃくちゃ便利で、もう Java とか C++ 書けない。
Python とか Ruby には似たような機能あるけど
(yield 的な機能とか、メソッドチェインでデータ処理する機能とか)、
この手の言語の利用者も口をそろえて Java とか C++ は使いたくないって言うし。
>>92
2・3割はまだ言い過ぎかなぁ。
いまだ、Java の方が3倍くらい案件多いみたいだし。
最も、Java は下がる一方、C# は伸びる一方だけども。
抜くのは4・5年後かなぁ。
あと、組み込みとかゲームとか、C か C++ しか使えない環境もまだまだ多いし。
0104デフォルトの名無しさん
2010/09/20(月) 10:32:17必ずしもGraphicsがGDI+のGraphicsと一対一で対応してる必要はないんだよね。
たとえばWPFでは、UI要素は実際に使用されてる間だけ内部でアンマネージリソースが割り当てられる。
フレームワーク的に都合の悪いAPIは最初から公開しなければいい。
薄いラッパーのメリットももちろんある。WinForms自体そういうコンセプトなのでそもそもどうしようもない。
その良し悪しは別。
0105デフォルトの名無しさん
2010/09/20(月) 10:46:110106デフォルトの名無しさん
2010/09/20(月) 11:20:500107デフォルトの名無しさん
2010/09/20(月) 14:48:17そういう 106 は GoF すら知らないのであった・・・
0108デフォルトの名無しさん
2010/09/20(月) 15:00:250109デフォルトの名無しさん
2010/09/20(月) 15:03:420110デフォルトの名無しさん
2010/09/20(月) 15:31:470111デフォルトの名無しさん
2010/09/20(月) 15:35:32/ (●) ..(● うるふです
| 'ー=‐' i
> く
/ ̄ ̄ヽ
/ (◎) ..(◎ ごふっ
| 'ー=‐' i
> く
/ ̄ ̄ヽ ┏┓
/ (●) ..(● ┏┛
| 'ー=‐' i ・
> く
_/ ,/⌒)、,ヽ_
ヽ、_/~ヽ、__) \
0112デフォルトの名無しさん
2010/09/20(月) 15:41:500113デフォルトの名無しさん
2010/09/20(月) 15:50:180114デフォルトの名無しさん
2010/09/20(月) 15:53:180115デフォルトの名無しさん
2010/09/20(月) 16:08:09GoFはあまり関係ないと思う。
0116デフォルトの名無しさん
2010/09/20(月) 16:21:260117デフォルトの名無しさん
2010/09/20(月) 16:31:22釣り師 ↓
. /| ←竿
○ / |
. (Vヽ/ |
<> |
゙'゙":"''"''':'';;':,':;.:.,.,__|_________
|
餌(疑似餌)→.§ >゚++< 〜
の組み合わせだと思ってたんだけど、
最近自称釣り師がダイレクトで自分の本音を攻撃されて「釣れた!」とか
言ってるの多いよね。
これは、どっちかというと、
,〜〜〜〜〜〜 、
|\ ( 釣れたよ〜・・・)
| \ `〜〜〜v〜〜〜´
し \
゙'゙":"''"''':'';;':,':;.:.,., ヽ○ノ
~~~~~|~~~~~~~ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ト>゚++<
ノ)
かと思うんだけど、どうよ?
0118デフォルトの名無しさん
2010/09/20(月) 16:31:37http://www.youtube.com/watch?v=1cAY4hW-ljA
0119デフォルトの名無しさん
2010/09/20(月) 16:37:540120デフォルトの名無しさん
2010/09/20(月) 16:42:450121デフォルトの名無しさん
2010/09/20(月) 16:44:340122デフォルトの名無しさん
2010/09/20(月) 16:50:45もしかしてexplicitのこと?
0123デフォルトの名無しさん
2010/09/21(火) 09:17:00foreach (object item in source) yield return (T)(dynamic)item;
}
var doubleValues = new int[] { 1, 2, 3 }.ExplicitCast<double>();
こういうこと? Select使えという話だが
0124デフォルトの名無しさん
2010/09/21(火) 14:11:40http://hibari.2ch.net/test/read.cgi/tech/1281236906/
0125デフォルトの名無しさん
2010/09/21(火) 22:10:14既に起動中のプログラムがある場合、
起動中のプログラムをアクティブにするという処理をしたいです。
色々調べて、↓を参考に作成しました。
すると、★印のところで、画面のハンドルが取れるときと取れない場合がありました。
・取れる場合:起動中画面のVisibleがtrueで画面表示されている状態(アクティブではない)。
・取れない場合:画面のVisibleがFlaseでタスクトレイにアイコンが表示されている状態。
前提条件として、画面(Form1)は閉じる処理を行うと、タスクトレイに常駐します。
画面の閉じる処理で行ってるのは、Visibleプロパティをfalseにしているだけです
取れない場合、どのようにすれば良いのでしょうか?
0126デフォルトの名無しさん
2010/09/21(火) 22:13:060127125
2010/09/21(火) 22:15:01// 以下の名前空間をインポートする
using System.Diagnostics;
using System.Runtime.InteropServices;
public class MyProcess {
[DllImport("USER32.DLL", CharSet=CharSet.Auto)]
private static extern int ShowWindow( System.IntPtr hWnd, int nCmdShow );
[DllImport("USER32.DLL", CharSet=CharSet.Auto)]
private static extern bool SetForegroundWindow( System.IntPtr hWnd );
private const int SW_NORMAL = 1;
0128125
2010/09/21(火) 22:15:57/// ------------------------------------------------------------------------------------
/// <summary>
/// 同名のプロセスが起動中の場合、メイン ウィンドウをアクティブにします。</summary>
/// <returns>
/// 既に起動中であれば true。それ以外は false。</returns>
/// ------------------------------------------------------------------------------------
public static bool ShowPrevProcess() {
Process hThisProcess = Process.GetCurrentProcess();
Process[] hProcesses = Process.GetProcessesByName(hThisProcess.ProcessName);
int iThisProcessId = hThisProcess.Id;
foreach (Process hProcess in hProcesses) {
if (hProcess.Id != iThisProcessId) {
★ ShowWindow(hProcess.MainWindowHandle, SW_NORMAL);
★ SetForegroundWindow(hProcess.MainWindowHandle);
return true; }
}
return false; }
}
[System.STAThread()]
private static void Main() {
// 同名のプロセスが起動していない時は起動する
if (!MyProcess.ShowPrevProcess()) {
Application.Run(new Form1());
}
}
0129デフォルトの名無しさん
2010/09/21(火) 22:16:240130デフォルトの名無しさん
2010/09/21(火) 22:17:020131デフォルトの名無しさん
2010/09/21(火) 22:17:570132デフォルトの名無しさん
2010/09/21(火) 22:20:08Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase
派生させれば単一インスタンスも楽勝なんだが。コマンドライン引数も渡せるし。
0133デフォルトの名無しさん
2010/09/21(火) 22:23:440134デフォルトの名無しさん
2010/09/21(火) 22:31:360135デフォルトの名無しさん
2010/09/21(火) 22:52:080136デフォルトの名無しさん
2010/09/21(火) 23:08:230137デフォルトの名無しさん
2010/09/21(火) 23:11:350138デフォルトの名無しさん
2010/09/21(火) 23:14:44状況によって動作が異なる。
0139デフォルトの名無しさん
2010/09/22(水) 08:00:03状況をくあしく
0140デフォルトの名無しさん
2010/09/22(水) 08:26:27アクティブウィンドウを切り替える権限を持ったプロセスから呼び出した場合は
点滅するのではなくて、アクティブウィンドウが切り替わる。
通常はアクティブなウィンドウを持つプロセスがこの権限を持っている。
この権限を持つプロセスは、ほかのプロセスに権限を与える事も出来る。
0141デフォルトの名無しさん
2010/09/22(水) 12:12:28※内部アルゴリズム等は全く同じとします。
個人的にはいちいちインスタンスを作ってから実行するのは面倒なので
静的メソッドをよく使っています。
0142デフォルトの名無しさん
2010/09/22(水) 12:35:02ただし、なぜかメモリ使用量は静的メソッドの方が多くなるらしい
0143デフォルトの名無しさん
2010/09/22(水) 12:39:18http://msdn.microsoft.com/ja-jp/library/ms245046.aspx
>メソッドを静的としてマークすると、コンパイラはこれらのメンバーに対する
>非仮想呼び出しサイトを出力します。非仮想呼び出しサイトを出力することで、
>現在のオブジェクト ポインターが null ではないことを確認する各呼び出しの
>実行時のチェックが行われなくなります。パフォーマンス重視のコードでは、
>これにより大きくパフォーマンスを向上できます。
0144デフォルトの名無しさん
2010/09/22(水) 13:38:45結局どちらの方が早いのでしょうか?
>>142
さんのおっしゃる様に実際は変らないのでしょうか?
0145デフォルトの名無しさん
2010/09/22(水) 14:18:38プロファイル取ってボトルネックになってるとこをチューニングする時になってはじめて意識すれば十分。
0146デフォルトの名無しさん
2010/09/22(水) 14:41:24こんなメソッドがあったとして、このメソッド呼び出しのオーバーヘッドと、メソッドの中で実際に行われる
文字列連結処理にかかる時間を比較するとどれくらいだと思う?
たぶん1:数千とか1:数十万とかそんな感じだよ。
もしstaticに変えることでその1が0.5になったところで実際には全く速くならないの。
0147デフォルトの名無しさん
2010/09/22(水) 16:32:510148デフォルトの名無しさん
2010/09/22(水) 17:43:59プログラム言語を作れるレベルの人に聞かないと拉致があかないかもね。
0149デフォルトの名無しさん
2010/09/22(水) 17:51:480150デフォルトの名無しさん
2010/09/22(水) 18:04:14パスワード再発行すると思うんですが、下のような流れで
登録時のメールアドレス又はアカウントを送信
↓
メールアドレスへパスワード変更フォームのアドレスを送信
↓
フォームでパスワードの変更
ってのはどうやって実装するのがいいんでしょ。
めっちゃざっくりで申し訳ないんですがどういった手順で考えれば効率的でいいのかヒント教えてもらればうれしいんですが。
よろしくお願いします。
0152デフォルトの名無しさん
2010/09/22(水) 18:11:20コード要求してるの?
0153デフォルトの名無しさん
2010/09/22(水) 18:13:460154デフォルトの名無しさん
2010/09/22(水) 19:23:57>>152
コードというよりは
153さんがいうような、これ使えばいいよっていうのを教えてもらいたかったもので。
>>153
ありがとうございます。参考にしてみます。
0155デフォルトの名無しさん
2010/09/22(水) 21:29:32プロセス名からパケットを見たい
0156デフォルトの名無しさん
2010/09/22(水) 21:41:12呼び出しだけ見れば、圧倒的にstaticが速い。高速化のためにstaticメソッドにしたりもする。
しかし、多くの場合は誤差の範囲。
0157デフォルトの名無しさん
2010/09/22(水) 21:43:54ありがとうございます。
ようやくまともな方が現れてほっとしました。
0158デフォルトの名無しさん
2010/09/22(水) 21:48:12これで2000〜7まで対応するとなるとWinSockをフックしかないような
0159デフォルトの名無しさん
2010/09/22(水) 21:50:110160デフォルトの名無しさん
2010/09/22(水) 23:02:13それだけのC#のサンプルってないですか?
0161デフォルトの名無しさん
2010/09/22(水) 23:11:540162デフォルトの名無しさん
2010/09/22(水) 23:23:49サンプルがどうとか言ってるレベルで手を出せるものじゃないよ。
0163デフォルトの名無しさん
2010/09/22(水) 23:28:28これが理解できるなら行ける
0164デフォルトの名無しさん
2010/09/22(水) 23:29:29ほとんど変わんねーよ。
どこが圧倒的なんだか。
ちなみにこんな情報もある。
ttp://msdn.microsoft.com/ja-jp/magazine/cc507639.aspx
0165デフォルトの名無しさん
2010/09/22(水) 23:33:12→単一の呼び出し命令にコンパイルされる、最も高速な種類の呼び出しです。
0166デフォルトの名無しさん
2010/09/22(水) 23:36:46初心者にも分かるようにURL先の内容を3行にまとめてください
0167デフォルトの名無しさん
2010/09/22(水) 23:37:401行で纏まってると思うのですが…
0168デフォルトの名無しさん
2010/09/22(水) 23:44:250169デフォルトの名無しさん
2010/09/22(水) 23:46:150170デフォルトの名無しさん
2010/09/22(水) 23:51:520171デフォルトの名無しさん
2010/09/22(水) 23:53:50全く歯が立ちません><
sharppcap関係を見てます
0172デフォルトの名無しさん
2010/09/23(木) 01:21:522倍のコストなんて中身のコストに比べれば無いも同然。
結局
>プロファイル取ってボトルネックになってるとこをチューニングする時になってはじめて意識すれば十分。
って事じゃん
0173デフォルトの名無しさん
2010/09/26(日) 20:10:35その間違いがわかるのは、実際にサービス(のインターフェース)
にアクセスしたときなんでしょうか?
てっきり、ChannnelFactory<T>.CreateChannel()でエラーが出ると思っていた
のです…。サービスにアクセスする前にUriの間違いを判別することは
できないでしょうか。
0174デフォルトの名無しさん
2010/09/26(日) 22:50:130175デフォルトの名無しさん
2010/09/26(日) 22:53:050176デフォルトの名無しさん
2010/09/27(月) 17:21:44今、ASP.netのスレッドってないんですか?
コーディングでなく環境周りの話なので、こちらでないことは十分に理解してるんですが、WebProg板にどーしても見つからんのです。
0177デフォルトの名無しさん
2010/09/27(月) 17:32:55こことか
http://hibari.2ch.net/test/read.cgi/php/1284805237/
0178デフォルトの名無しさん
2010/09/27(月) 17:35:420179デフォルトの名無しさん
2010/09/27(月) 17:48:080180デフォルトの名無しさん
2010/09/27(月) 18:09:49ADO.NETの質問・雑談スレ2
http://hibari.2ch.net/test/read.cgi/db/1234077152/
0181デフォルトの名無しさん
2010/09/27(月) 18:10:230182デフォルトの名無しさん
2010/09/27(月) 18:12:240183デフォルトの名無しさん
2010/09/27(月) 20:49:29struct Big {
long a, b, c, d, e, f, g, h, i, j;
}
struct A {
struct Big big;
}
struct B {
struct A a;
}
struct C {
struct B b;
}
stcut C c;
こういうのがあるとき、
c.b.a.big.aと値を参照するとき、
何度も何度もコピーされているのでしょうか。
こういうとき、省略される、安心しろ、
という記述もマイクロソフトの文書であったような気がしますが、
なにかあやふやです。ご存知の方はいませんか?
0184デフォルトの名無しさん
2010/09/27(月) 20:51:05XNAとかで問題になりそうよね
省略されてると思いたいな
0185デフォルトの名無しさん
2010/09/27(月) 21:10:07delegateの命名規則に関するHPなり書籍なりありませんか?
ネットで検索したのですが、色々な意見があり、いまいちこれが答えというものにたどり着けませんでした。
また、実装方法に関して質問させてください。
ttp://www.atmarkit.co.jp/fdotnet/csharp20/csharp20_05/csharp20_05_04.htmlのページで勉強させてもらっているのですが、
このページでは従来interfaceもしくはAbstractクラスで行っている事をdelegateに置き換えることを進めています。
C#では、delegateを使う方がメジャーなのでしょうか?
よろしくお願いいたします。
0186デフォルトの名無しさん
2010/09/27(月) 21:24:28・・クラス、構造体、およびインターフェイスの名前
http://msdn.microsoft.com/ja-jp/library/ms229040%28v=VS.100%29.aspx
けど最近のデリゲートこれに従ってないよね
Predicate<T>とか
結構いいかげんっぽいね
@ITでは「両者はうまく適材適所で使い分けていくとよいだろう。」と書いてあるし
別に置き換えを薦めているようには見えない
0187デフォルトの名無しさん
2010/09/27(月) 21:25:25フィールドならコピーされない。プロパティならコピーされる。
>>185
Microsoftのガイドラインは
MSDNの「クラス、構造体、およびインターフェイスの名前」
ま、「クラスライブラリ開発のデザインガイドライン」
つまり他のアセンブリから見える範囲のみの規定だから
そうでないなら好き勝手にしろ、と言うのがMicrosoftのスタンスだな
私はそれをそのままprivateなもんにも適用してるけど
> C#では、delegateを使う方がメジャーなのでしょうか?
引数と返値で完結するようなもんならdelegateでもいいんじゃない?程度
0188デフォルトの名無しさん
2010/09/27(月) 21:28:13どうもありがとう!
> フィールドならコピーされない。プロパティならコピーされる。
これはJIT関係とみていいんでしょうか。
昔見たはずのマイクロソフト文章を探してるんですが、
.NET関係にも、msdn関係にも、どうも見当たりません。
どこかでそういうのを見たハズなんですが…。
0189185
2010/09/27(月) 21:53:47参考にさせていただきます。
0190デフォルトの名無しさん
2010/09/28(火) 01:03:28プロパティなら、そもそもその構文、コンパイル通らない。
0191デフォルトの名無しさん
2010/09/28(火) 18:22:26デシリアライズするとき、コンストラクタが呼ばれずフリーズしてしまう
ことがあります。調べると、staticフィールドがあるときに発生するようです。
これは、よく知られたことなのでしょうか?正直理由がわからないので、
どういう理屈か説明いただけないでしょうか?
0192デフォルトの名無しさん
2010/09/28(火) 18:31:170193デフォルトの名無しさん
2010/09/28(火) 20:36:39ToString()メソッドを消したら動いたり、継承クラスだったら動いたり
と完全にわけがわかりません…。
ジェネリック型なのがまずいのでしょうか。
0194デフォルトの名無しさん
2010/09/28(火) 20:54:430195デフォルトの名無しさん
2010/09/28(火) 23:09:08NUnitを使ってテストをしているのですが、テストコードからinternal修飾子にアクセスできないため、とりあえず、internalでよいものもpublicにしてテストをしています
これを、解決する上手い方法はあるのでしょうか?
よろしくお願いいたします。
0196デフォルトの名無しさん
2010/09/28(火) 23:13:020197デフォルトの名無しさん
2010/09/28(火) 23:15:080198デフォルトの名無しさん
2010/09/29(水) 00:06:59ありがとうございます。
Javaのときみたいに、reflection調べようかと思っていました。
助かりました。
0199デフォルトの名無しさん
2010/09/29(水) 12:22:53実装ミス
0200デフォルトの名無しさん
2010/09/29(水) 15:50:410201デフォルトの名無しさん
2010/09/29(水) 22:25:200202デフォルトの名無しさん
2010/09/30(木) 09:17:260203デフォルトの名無しさん
2010/09/30(木) 12:23:020204デフォルトの名無しさん
2010/10/01(金) 00:11:31Size型を返すSizeプロパティとか
かといってwindow.WindowSizeみたいに自明な接頭語付けるのは避けたい
みんなどうしてるの
0205デフォルトの名無しさん
2010/10/01(金) 00:15:30かぶっても問題ないでしょ
0206デフォルトの名無しさん
2010/10/01(金) 00:16:59Image.Sizeとかそんなんばっかりじゃん
0207デフォルトの名無しさん
2010/10/01(金) 00:31:161行目(クラス名=プロパティ名)
class Size{
public object Size { get; set; } // これは無理
}
2行目(プロパティ名=型名)
class TekitounaClass{
public Size Size { get; set; } // これはOK
}
0208デフォルトの名無しさん
2010/10/01(金) 00:44:18>プロパティには、その型と同じ名前を付けるようにしてください。
0209デフォルトの名無しさん
2010/10/01(金) 01:08:55コピペ君って馬鹿だな。
>>204
確かに他の人が言うようにプロパティが型名と同じ名前でも何も問題はないけど、
特に自分のプロパティ経由して取得した値のメンバを読んでる場合とか、
型の静的メソッドに見えたりして一瞬思考を取られる感じがあるのも確か。
なので個人的には、やっぱりインターフェイスだけでなくクラスも構造体もEnumも
型名は全部プリフィクス付けるのがやっぱり良いような気がする。
まあこんなことしてる人は殆んど見たことないけど。
0210デフォルトの名無しさん
2010/10/01(金) 01:29:47>あるのも確か。
お前だけ。少なくとも VS 上だと型は色分けされるから。
0211デフォルトの名無しさん
2010/10/01(金) 02:12:15の人が例のあの人だと最近気づいた
0212デフォルトの名無しさん
2010/10/01(金) 02:21:20例の人って?
0213デフォルトの名無しさん
2010/10/01(金) 03:03:300214デフォルトの名無しさん
2010/10/01(金) 07:24:05気になるだろ
0215デフォルトの名無しさん
2010/10/01(金) 09:35:350216デフォルトの名無しさん
2010/10/01(金) 15:51:27フォームのタイトルバーやフォームの枠を含めた左上と、フォームのクライアント座標の左上
との差分を取得したいです。
LocationとDesktopLocationを取得すればよいと思ったのですが、同じ値になっています。
MDIの子フォームなのですが、どのように取得したらよいでしょうか。
0217デフォルトの名無しさん
2010/10/01(金) 16:04:26MDI子の左上座標は自分のLocationをMDI親のPointToScreenで変換
MDI子のクライアント座標は0,0を自分のPointToScreenで変換
0218216
2010/10/01(金) 16:36:19おおー
ありがとうございました!!!
0219デフォルトの名無しさん
2010/10/01(金) 19:13:11>>211が被害妄想狂なんでしょw
なんかいつも見えない敵(だってそんなものは本当は実在しないから)と戦ってる奴なんて2chにはありふれてる。
0220デフォルトの名無しさん
2010/10/01(金) 19:52:110221デフォルトの名無しさん
2010/10/01(金) 19:55:57クラスと同じ名前のプロパティーにべつにデメリットはないだろ。
0222デフォルトの名無しさん
2010/10/01(金) 20:36:14知らんけど
0223デフォルトの名無しさん
2010/10/01(金) 20:42:29普通にしゃべれるんだ。
0224デフォルトの名無しさん
2010/10/01(金) 20:48:450225デフォルトの名無しさん
2010/10/01(金) 21:34:26リスト1で選択した項目をリスト2に移したいんですけど
複数選択時のリストの項目の削除の仕方がわかりませんでした
具体的にどんなコードを書いたらいいでしょうか?
0226デフォルトの名無しさん
2010/10/01(金) 21:45:03{
listBox.Items.RemoveAt(listBox.SelectedIndices[i]);
}
ってのはどう?
動作確認してないけど
0227デフォルトの名無しさん
2010/10/01(金) 21:49:000228デフォルトの名無しさん
2010/10/01(金) 21:51:010229デフォルトの名無しさん
2010/10/01(金) 22:46:06ありがとうございます
動作確認してませんけどw
学校いったら試してみます
0230204
2010/10/01(金) 23:46:48同じ名前ってなんかなーと思ったけどそれが普通なら受け入れるか
0231デフォルトの名無しさん
2010/10/02(土) 02:44:300232デフォルトの名無しさん
2010/10/02(土) 02:53:02Paintイベントで自分で書け
寝る
0233デフォルトの名無しさん
2010/10/02(土) 10:29:11VC#2008EEで、pictureBoxのsizemodeについて質問です。
状況説明をします。
SizeMode = Zoomに設定しています。
pictureBoxのペイントメソッドでpictureBoxの縦横をClientRectangleの値に書き換えます。
その後DrawImageしているのですが、Zoomの説明のとおりの動作をしません。
つまり、縦横比は保持したまま最大のサイズに補正してくれません。
以下その部分のコードです。何か足りていない等ありましたらご指摘をお願いいたします。
private void pictureBox1_Paint(object sender, PaintEventArgs e){
if (_img != null){
pictureBox1.Width = ClientRectangle.Width;
pictureBox1.Height = ClientRectangle.Height;
e.Graphics.DrawImage(_img, 0, 0, pictureBox1.Width, pictureBox1.Height);
}
}
以上、宜しくお願いいたします。
0234デフォルトの名無しさん
2010/10/02(土) 10:32:55SizeModeはImageプロパティを使った場合にしか関係ない
DrawImage使いたいんだったら自分で適切なサイズを計算して描画する
もしくはBitmapに描画してからImageプロパティに設定
0235デフォルトの名無しさん
2010/10/02(土) 10:41:39そういう事だったのですね。
DrawImage使わずにpictureBox1.Image = _img;
と再度することで解決しました。
DrawImage使いたいんだったら、という下りで気付かされました。
以下のようになりました。
private void pictureBox1_Paint(object sender, PaintEventArgs e){
if (_img != null){
pictureBox1.Width = ClientRectangle.Width;
pictureBox1.Height = ClientRectangle.Height;
pictureBox1.Image = _img; //変更箇所↓
//e.Graphics.DrawImage(_img, 0, 0, w, h); //変更箇所↑
}
}
大変助かりました。ありがとうございました!!
0236デフォルトの名無しさん
2010/10/02(土) 19:14:25次回も期待してくれ
0237デフォルトの名無しさん
2010/10/02(土) 19:25:270238デフォルトの名無しさん
2010/10/03(日) 11:53:330239デフォルトの名無しさん
2010/10/04(月) 02:34:120240デフォルトの名無しさん
2010/10/04(月) 03:50:10誰も突っ込んでないが、どう見ても3行ともPaintイベントでやる処理じゃないし
0241デフォルトの名無しさん
2010/10/04(月) 08:53:300242デフォルトの名無しさん
2010/10/04(月) 23:27:17class Class1
{
public string Value
{
set;
get;
}
}
class Form1 : Form
{
Class1 c = new Class1();
public Form1()
{
InitializeComponent();
textBox1.DataBindings.Add("text", c ,"Value");
}
}
このようなソースを書いているのですが、いくらValueを変更してもtextBox1に反映されません。
どの部分がおかしいでしょうか?
0243デフォルトの名無しさん
2010/10/04(月) 23:31:19Valueのsetで現在の値と違う値が設定されようとしていたらイベントを発生させる
自動プロパティは使えない
0244デフォルトの名無しさん
2010/10/04(月) 23:31:590245デフォルトの名無しさん
2010/10/04(月) 23:50:35ttp://msdn.microsoft.com/ja-jp/library/system.componentmodel.inotifypropertychanged(VS.80).aspx
上記のページを参考にしつつ、下記のように変更することで解決しました
private string _val;
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string info)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
public string Value
{
set
{
if (value != _val)
{
_val = value;
NotifyPropertyChanged("Value");
}
}
get
{
return _val;
}
}
本当にありがとうございました
0246デフォルトの名無しさん
2010/10/05(火) 17:26:16関数自体見えるからだめ?
public class Test
{
private class KeyClass { }
private static Type _Key = typeof(KeyClass);
public class ClassA
{
private object obj = null;
public bool Set(Type Key, object new_obj)
{
if (Key != _Key)
return false;
obj = new_obj;
return true;
}
}
public class ClassB
{
private object obj = null;
public ClassB(object obj)
{
this.obj = obj;
}
public bool CopyTo(ClassA A)
{
return A.Set(_Key, obj);
}
}
}
0247デフォルトの名無しさん
2010/10/05(火) 17:58:280248デフォルトの名無しさん
2010/10/05(火) 19:35:15void Hoge();
}
class Foo {
private string bar;
private class Hoge : IHoge {
public Foo foo;
void Hoge() { retirm foo.bar; }
}
public IHoge CreateHoge() { return new Hoge { foo = this }; }
}
教科書的にはこうやるのが正解
0249デフォルトの名無しさん
2010/10/05(火) 22:27:31ファイナライザの呼び出しを有効にしたいです。
普通にファイナライザを定義しておいてコンストラクタでGC.SuppressFinalize(this)
必要に応じてReRegisterForFinalizeというのは思いついたのですが、もっと良い方法があれば教えてください。
0250デフォルトの名無しさん
2010/10/06(水) 01:10:28ファイナライザを呼ばれちゃいけない期間は参照を保持しておけばいいだろ。
0251デフォルトの名無しさん
2010/10/06(水) 06:32:30なんかめちゃくちゃだなw
0252デフォルトの名無しさん
2010/10/06(水) 06:35:07どの教科書だよ。
0253デフォルトの名無しさん
2010/10/06(水) 11:32:200254249
2010/10/06(水) 11:35:44わかりにくくてすみません。GCは妨げたくありません。
今作ってるクラスでは、GCされた際にファイナライザを実行する必要がない状態と
実行してほしい状態があります。ほとんどの場合は常に前者なので、
ファイナライザが常に呼び出される状態にあることによる
パフォーマンスの低下を避けたいというのが目的です。
後で思いついたのですが、ファイナライザを実装するためのクラスを別に作って
ファイナライザが必要な時はそのインスタンスと相互参照させておけば綺麗に作れそうです。
0255デフォルトの名無しさん
2010/10/06(水) 11:42:48WindowsサービスアプリでTCPソケット受信を行いたい
のですが何故か受信が出来ないためAcceptTcpClient()
で応答が返ってきません。同じコードをFormアプリ
でやると受信は出来ます。サービスアプリの場合は下記コード
では無理ですか?
OnStart()
{
Thread serviceMainThread = new Thread(func1);
serviceMainThread.Start();
}
func1
{
Listener = new TcpListener(IPAddress.Any, 1111);
Listener.Start();
TcpClient Client = Listener.AcceptTcpClient();
〜受信時処理〜
}
0256デフォルトの名無しさん
2010/10/06(水) 12:09:430257255
2010/10/06(水) 12:46:150258デフォルトの名無しさん
2010/10/06(水) 12:59:11スレッド保持してないから
serviceMainThread.Start();
のあとすぐに終わるだけ
0259デフォルトの名無しさん
2010/10/06(水) 13:20:33答えられないんだからROMっとけやクズ
0260255
2010/10/06(水) 13:55:41回答ありがとうございます。
すみません書き込んだコードがミスでした。
確かに書き込んだコードだとスレッド保持してないですね。
先程解決しましてポート解放がちゃんと出来ていなかった
のが原因です。
Form起動アプリだとファイアウォールのブロック解除の
画面が出てそちらで解除していたため受信出来ていただけでした。
失礼致しました。
0261デフォルトの名無しさん
2010/10/06(水) 14:52:04/〃 | __
/\ _ | __
__ , -――-、 /\ノ
ヽ/\l::::::::::::::::::::\ /: : /
,..-―-、/) |: : :|::::::::::::::::::::::/: : /
/⌒Y (_ノ /) |: : :|:::::::::::::::::::::|: : : /
 ̄l ̄l、 ) /`〉 ヽ:: :|::::::::::::::::::::l: : :/
l: : :`ー--‐'‐'´: :/ \|∧ハ/l/: ::〈
\: : : : : : : : : :く |: : : : : : : : : : `ー-┐ ,.、
l: : : : : : : : : :`ー―┐ ,、 |: : : : : : : : : : : : : : |二lニノ
ヽ.: : : : : : : : : : : : : :|ニノ |: : : : : : : : : : : : : : |
ヽ: : : : : : : : : : : : :| ヽ: : : : : : : : : : : /
\: : : : : : : : :/ \ : : : : : : /
 ̄ ̄ ̄ ̄ ノ|  ̄ ̄ ̄ ノ)
ノしノ し'( ノ)__ノ (ノ(
'――――-'′ '-――一-'′
0262デフォルトの名無しさん
2010/10/06(水) 16:40:46現状は暫定として、IOExceptionをキャッチして一秒スリープさせてからファイル名を変更しています
何か良い方法は無いでしょうか?
0263デフォルトの名無しさん
2010/10/06(水) 16:43:460264デフォルトの名無しさん
2010/10/06(水) 19:39:23GUIスレッドでそれやったら確実にフリーズするが
0265デフォルトの名無しさん
2010/10/06(水) 23:16:44それで動きました!
ありがとうございました!
0266262
2010/10/07(木) 14:29:20確実にエラーを出さない上に時間がかからない方法があれば良かったのですが・・・
0267デフォルトの名無しさん
2010/10/07(木) 15:38:28この方法が普通だろ
0268デフォルトの名無しさん
2010/10/07(木) 16:44:590269デフォルトの名無しさん
2010/10/07(木) 17:12:33EXCEL使えばいい
0270デフォルトの名無しさん
2010/10/07(木) 17:13:41エラーを報告するとか、永久に待ち続けるとか好きなように
0271デフォルトの名無しさん
2010/10/07(木) 17:58:390272262
2010/10/07(木) 19:51:24相談に乗ってくれてありがとうございました
0273デフォルトの名無しさん
2010/10/07(木) 20:44:17そもそも本当に一秒待つ意味があるのかどうか考えた方がよくないか?
俺は全く無意味にしか思えないけど....
0274デフォルトの名無しさん
2010/10/07(木) 20:47:330275デフォルトの名無しさん
2010/10/07(木) 21:00:080276デフォルトの名無しさん
2010/10/07(木) 23:46:150277デフォルトの名無しさん
2010/10/08(金) 01:47:480278デフォルトの名無しさん
2010/10/08(金) 03:11:00ファイルをプログラムが開いてプログラムが編集してプログラムが閉じるんだったら1秒待つ意味はあるんじゃないか
0279デフォルトの名無しさん
2010/10/08(金) 03:20:44普通はやんないけど
0281デフォルトの名無しさん
2010/10/09(土) 21:38:200282デフォルトの名無しさん
2010/10/09(土) 21:42:410283デフォルトの名無しさん
2010/10/09(土) 22:12:050284デフォルトの名無しさん
2010/10/09(土) 22:21:21Form以外で使いたいっていってんだろ
面倒だからもういいわ
Panelにでも貼って使え
0285デフォルトの名無しさん
2010/10/09(土) 23:43:220286デフォルトの名無しさん
2010/10/09(土) 23:50:120287デフォルトの名無しさん
2010/10/09(土) 23:54:380288デフォルトの名無しさん
2010/10/10(日) 00:03:35スレが活発で見辛くなるスレの場合、似たようなスレで分散化するという役割はあった
遅い進行の場合、意味が無いよな
0289デフォルトの名無しさん
2010/10/11(月) 03:38:050290デフォルトの名無しさん
2010/10/11(月) 09:12:590291デフォルトの名無しさん
2010/10/11(月) 12:22:16次立てるの?それともこっちに誘導する?
0292デフォルトの名無しさん
2010/10/11(月) 12:24:220293デフォルトの名無しさん
2010/10/11(月) 13:00:030294デフォルトの名無しさん
2010/10/11(月) 13:11:540295デフォルトの名無しさん
2010/10/11(月) 13:12:290296デフォルトの名無しさん
2010/10/11(月) 13:14:520297デフォルトの名無しさん
2010/10/11(月) 22:24:260298デフォルトの名無しさん
2010/10/12(火) 00:56:17ご解答は 神隠し 以外でお願い致します。
いつも通り、ファイルをダブルクリックし、C#の画面を出して、
デザインとプログラムを表示させようとすると
(指定したファイルは?)移動または削除された可能性があります。
と出てしまい、一切の編集・閲覧をすることが出来なくなってしまいました。
もちろん、移動も削除もまったくしていません。
ファイル自体はきちんと存在しています。
なのに、編集しようと.csをダブルクリックすると上記のメッセージが出てきます。
稚拙な文章で、わかりづらいかもしれませんが、
知恵をお貸し下さい。
非常に困っています。
0299デフォルトの名無しさん
2010/10/12(火) 01:18:270300デフォルトの名無しさん
2010/10/12(火) 01:19:480301デフォルトの名無しさん
2010/10/12(火) 01:26:51だから、下らない言い訳書いてる暇があったら、自分の書いた文章を最低10回は
読み返してちったあ推敲しろって本当。
拡張子が".cs"はC#のソースファイルだけど、それは理解してるの?
問題は拡張子が".cs"のファイルをダブルクリックしてもファイルの中身がVSのエディタに
表示されないってこと?
でも、C#のソースファイルを開いただけなら「移動または削除された可能性があります。」
なんてメッセージが表示されるはずがないと思うけど....
0302デフォルトの名無しさん
2010/10/12(火) 01:32:39C#つーかVisualStudioスレ向けでは
0303デフォルトの名無しさん
2010/10/12(火) 01:33:170304デフォルトの名無しさん
2010/10/12(火) 01:45:54絶対後者の方がいいという好例。
>>298
天狗の仕業じゃー
0305デフォルトの名無しさん
2010/10/13(水) 22:53:50Rubyなんかとは真逆を突っ走っててすばらしい
0306デフォルトの名無しさん
2010/10/14(木) 20:53:07これ一回のためにIEqualityComparerをわざわざ作るの
少し面倒なんだけど
何かいい手はないのかな・・・?
Func<T> predicate みたいなので条件をラムダ式でかけたら
すごくスマートなんだけど・・・
0307デフォルトの名無しさん
2010/10/14(木) 20:58:110308デフォルトの名無しさん
2010/10/14(木) 21:17:04List<T>を入れています。
Tは自作クラスです。
List<T>が変更された場合
datagridviewをその変更を反映したいです。
そういうメソッド等ありますでしょうか?
datasourceにセットしなおす以外でありますか?
0309デフォルトの名無しさん
2010/10/14(木) 21:23:28そう言う汎用クラスを一つ作っておけばいい
コンストラクタの引数にFunc<T, T, bool>渡すようにして
>>308
DataGridView.Refreshでも呼ぶか、
BindingSourceを間に噛ませてResetItem/ResetBindingsする
List<T>の要素の追加削除じゃなくてTのメンバの変更なら
TにINotifyPropertyChangedを実装させてプロパティのsetでPropertyChanged発生させてもいい
0310デフォルトの名無しさん
2010/10/14(木) 21:26:09Equalsだけならラムダ式を引数にとるようになってただろうな
0311デフォルトの名無しさん
2010/10/14(木) 21:38:21使えねえ奴
0312デフォルトの名無しさん
2010/10/14(木) 21:38:570313デフォルトの名無しさん
2010/10/14(木) 21:44:540314デフォルトの名無しさん
2010/10/14(木) 22:13:11BindingListでどうやんだよw
0315デフォルトの名無しさん
2010/10/14(木) 22:18:180316デフォルトの名無しさん
2010/10/14(木) 22:26:580317デフォルトの名無しさん
2010/10/14(木) 22:34:140318314
2010/10/14(木) 22:39:47ソースとしてとしてList<T>を使ってるのに
さらにBindingListに入れなおすのか?
DataSourceセットし直しがやだっつってんのに
それ以上重いことさせんの?w
BindingSourceならそのまま入れれるけどさ。
まあDataSourceセットし直しがやだっつてるんだから
ResetBindingsも全更新だから
質問主の要件は満たしてないかもな
0319デフォルトの名無しさん
2010/10/14(木) 23:55:540320デフォルトの名無しさん
2010/10/15(金) 08:18:070321デフォルトの名無しさん
2010/10/15(金) 09:08:311人議論して間違った事言って識者に突っ込んで貰うのを待つパターンwwwww
0322デフォルトの名無しさん
2010/10/15(金) 22:15:12自分の質問に対して数時間レスがないと催促するが、
自分からのレスは永久放置でもかまわないってかよ。
0323デフォルトの名無しさん
2010/10/16(土) 00:32:09やりたいことは、
スレッド毎にページをダウンロードして
ページの中にある複数の要素を取得し、リストに追加します。
最終的にすべてのページをダウンロード完了したら
リストをソートします。
リストの条件としては
・ジェネリック
・スレッドセーフ
・ソート
です。
該当するリストクラスはないでしょうか?
環境は3.5です。
0324デフォルトの名無しさん
2010/10/16(土) 00:38:380325デフォルトの名無しさん
2010/10/16(土) 00:39:450326デフォルトの名無しさん
2010/10/16(土) 00:40:330327デフォルトの名無しさん
2010/10/16(土) 00:42:16SynchronizedCollectionだったか
0328デフォルトの名無しさん
2010/10/16(土) 00:45:082008だと.NET4は無理ですよね・・・?
ちなみに4でのそのクラスはなんという名前なのでしょうか?
0329デフォルトの名無しさん
2010/10/16(土) 01:16:31バレバレだよな。
こんな基本も理解せずにマルチスレッド使うなんてキチガイに刃物そのもの
0330デフォルトの名無しさん
2010/10/16(土) 01:21:44いまだに VS 2008 とか使うから・・・
http://msdn.microsoft.com/ja-jp/library/dd287108.aspx
0331デフォルトの名無しさん
2010/10/16(土) 01:50:22PCが5年前のものなので仕方なしです。
BlockingCollection<T>なんての追加されたんですね
4なのが残念です。
>>329
323のどこら辺からどうして基本がわかってないと思われましたか?
もしただの煽りでないのなら教えて頂けるとうれしいです。
0332デフォルトの名無しさん
2010/10/16(土) 02:01:10329は、かまってちゃんだから、throw new Exception()で、おね。
0333デフォルトの名無しさん
2010/10/16(土) 02:10:490334デフォルトの名無しさん
2010/10/16(土) 02:12:370335デフォルトの名無しさん
2010/10/16(土) 08:39:43through new Exception()がいいんじゃねw
0336デフォルトの名無しさん
2010/10/16(土) 11:21:58PCが5年前でも2010入れればいいじゃない。
それは言い訳にならない。
0337デフォルトの名無しさん
2010/10/16(土) 11:30:070338デフォルトの名無しさん
2010/10/16(土) 11:55:143.5でも自分でどうとでも組めるだろ
0339デフォルトの名無しさん
2010/10/16(土) 14:08:45また来るんじゃない?
AddしたらSizeが2以上増える事があるんですけどって
0340デフォルトの名無しさん
2010/10/16(土) 14:10:41いくらコレクションがスレッドセーフでも絶対に他のところでトラブルを出すだろうな
0341デフォルトの名無しさん
2010/10/16(土) 14:38:370342デフォルトの名無しさん
2010/10/16(土) 14:48:56だったらスレッドごとにリスト持たせて、後でマージした方が安全楽チン
0343デフォルトの名無しさん
2010/10/16(土) 14:52:37そもそも、その処理ならスレッドセーフなリストは必要ない。
各スレッドが個別にリストを持てば済む話じゃないか。
どうせソートするんだから、そのとき一つのリストにまとめればいい。
0344デフォルトの名無しさん
2010/10/16(土) 14:53:440345デフォルトの名無しさん
2010/10/16(土) 15:06:46System.Collections.Generic.SynchronizedCollection
があるぞ。ソートできないけどね。
0346デフォルトの名無しさん
2010/10/16(土) 15:13:190347デフォルトの名無しさん
2010/10/16(土) 15:28:48できれば.NET Framework 2.0で動くやつがいいです。
要件は優先度が高い順に、
・キューが空の場合、キューにエントリが追加されるまで待機し、キューの先頭を返す。
・キューが許容値オーバーの時にキューに空きができるまで待機するメソッドがある。
・スレッドセーフ
・Genrerics対応
です。
0348デフォルトの名無しさん
2010/10/16(土) 15:29:340349デフォルトの名無しさん
2010/10/16(土) 15:34:210350デフォルトの名無しさん
2010/10/16(土) 15:35:27「キューが空の場合、キューにエントリが追加されるまで待機し、キューの先頭を返す」をスリープ
しないでスレッドセーフに実装するのが自作だと大変そうなのです(あくまでもキューにエントリを
足したスレッドが、待機中のスレッドをひとつだけ、「必要に応じて」起こす実装がいいです)。
実装例があったらそれでもかまわないのですが・・
0351デフォルトの名無しさん
2010/10/16(土) 15:36:210352デフォルトの名無しさん
2010/10/16(土) 15:47:40コンストラクタの引数にConcurrentQueue<T>を渡せばブロッキングしてくれるっぽい
0353デフォルトの名無しさん
2010/10/16(土) 15:52:19なるほど。。.NET 4の新規クラスってことは、2.0では作るしかないって事ですね。。
ありがとうございます。
0354デフォルトの名無しさん
2010/10/16(土) 15:53:03クラスライブラリはMITライセンスだったはず
0355デフォルトの名無しさん
2010/10/16(土) 16:14:48ありがとうございます。ただデッドロックが起きる可能性がないことを
ソースレビュワーにたいして明らかな形で立証するのはちょっと難し
いと思っています。次のようなものを考えたのですが、問題があります。
行数が足りないのでとりあえず要素を取り出す側
public class BlockingQueue<T> {
private readonly List<T> list;
private readonly object LockObj = new object();
private int capacity = 0;
public BlockingQueue(int sz) {capacity = sz; this.list = new List<T>(sz);}
public T take(TimeSpan timelimit) {
bool queueWasFullFlag = false;
try {
Monitor.Enter(this.LockObj);
Monitor.Wait(this.LockObj, timelimit);
int sz = this.Length;
if ( sz == 0 ) {return null;
}else if ( sz == this.capacity ) {
queueWasFullFlag = true;
}
return this.list.remove(0);
}finally {
Monitor.Exit(this.LockObj);
if ( queueWasFullFlag ) Monitor.Pulse(this.LockObj);
}
}
0356デフォルトの名無しさん
2010/10/16(土) 16:21:36LockObjをモニタで待機・・・と考えました。
しかしtake側と追記(put)側で処理を待機する時に同じモニタを参照すると、
「キューがいっぱいだったから、put側スレッドを起こすためにLockObjに
Pulseを送ろう」とした場合に、運が悪いとtake側がおきてしまう恐れがあ
ります。(putが並行して走っているかもしれないし、takeが並行して走って
いる可能性もある。両方並行もありうる)
Monitor.Enterに渡すロックオブジェクトはput側、take側それぞれ別の
オブジェクトにしないといけないと思うのですが、そうなると二つ以上の
のダミーオブジェクトを二つ以上のスレッドが同時にロックするケースが
避けられず、いかなるタイミングでもデッドロックしないように実装し、
しかもそれを立証する(タイミングが絡むため試験での立証だけでは
不十分)のは、大変だとおもうんだけどなぁ。
0357デフォルトの名無しさん
2010/10/16(土) 16:27:07>・キューが空の場合、キューにエントリが追加されるまで待機し、キューの先頭を返す。
待機させのにどうやって先頭を返すのかと小一時間矛盾を弄りたい
マジレスすると Producer Consumer でググってコピペ
そいで >>356 については Guarded Suspensionパターンで条件判定
Javaでもやる定石パターン
0358デフォルトの名無しさん
2010/10/16(土) 16:33:01ソースだいぶ間違ってるみたいだけど要するに
【take側】
・LockObjを排他した状態で要素が空だったら待機。
・空でなければ先頭を返す。
・要素FULLであればput側をひとつだけ起こす。待機している
スレッドがない場合は何も起きないがそれでよい。
・でもtake側が起きる可能性はputが寝たままになるからゼロでないと困る
【put側】
・LockObjを排他し、要素FULLなら待機
・要素FULLでなければ末尾にエントリを追加して終了
・ロック獲得時点で要素数ゼロだった場合、take実行中の
スレッドがいればそれをひとつだけ起こしたいが、うっかり
takeを実行中の別スレッドが起きるのはやはりNG
0359デフォルトの名無しさん
2010/10/16(土) 16:40:16takeとputは当然、別のスレッドによって実行されています。
・上記とは別に設定ファイルなどで上限を仕切られた多数のスレッド(ワーカースレッド)
があらかじめ起動しており、キューのtake()メソッドを実行する形で待機している
・画面イベントやソケットのacceptを行うメインスレッドが、処理要求発生時にキューに
要求情報をput
→put完了時に待機中だったワーカースレッドがひとつだけ起き上がり、処理を実行。
処理完了後再びキュー#take()メソッドを実行して処理待ちに入る。
・ただし要素をputする側のスレッドは、2本以上存在するケースもありうる。
0360デフォルトの名無しさん
2010/10/16(土) 16:45:21取得用/追加用のイベントをそれぞれ用意して、
取得用イベント
・追加時にSet
・取得時にWaitOne、要素がまだ残っているならまたSet
追加用イベント
・取得時にSet
・追加時にWaitOne、まだ空きがあるならまたSet
0361デフォルトの名無しさん
2010/10/16(土) 16:47:55うおー!!これだ!!ありがとうございます!!!
0362デフォルトの名無しさん
2010/10/16(土) 16:52:13基本実装
public class ProducerConsumerQueue<T> {
private readonly LinkedList<T> list;
private readonly int capacity;
private readonly object lockObj = new object();
public ProducerConsumerQueue(int size) {
list = new LinkedList<T>();
this.capacity = size;
}
public T Take() {
lock (lockObj) {
while (list.Count == 0) { // ガード条件
Monitor.Wait(lockObj); // 空の間は待機
}
var top = list.First.Value;
list.RemoveFirst();
Monitor.PulseAll(lockObj); // とりあえず全WaitThreadに通知
return top;
}
}
0363デフォルトの名無しさん
2010/10/16(土) 16:52:57lock (lockObj) {
while (list.Count == capacity) { // ガード条件
Monitor.Wait(lockObj); // Fullの間は待機
}
list.AddLast(item); // ケツに追加
Monitor.PulseAll(lockObj);
}
}
}
>>360
そいえばC#にはそんな便利なのがあったorz
0364デフォルトの名無しさん
2010/10/16(土) 16:57:17ありがとうございます!
なるほど。。
whileで条件判定をまわしてとりあえず全部起こせば実現できますね。
これ以上難しいのは怖くてできないので、これ使ってみます。
0365デフォルトの名無しさん
2010/10/16(土) 16:58:44ProducerConsumerQueue<int> target = new ProducerConsumerQueue<int>(3);
Thread putthrad = new Thread((_arg) => {
for (int i = 0; i < 30 ;i++) {
Console.WriteLine("{0}: Putting {0} at {1}", i, DateTime.Now );
target.Put(i);
Console.WriteLine("{0}:Put {0} at {1}", i, DateTime.Now);
}
});
Thread takethread = new Thread((_arg) => {
for (int i = 0; i < 30; i++) {
Console.WriteLine("{0}: Take at {1}", i, DateTime.Now);
var ret = target.Take();
Console.WriteLine("{0}: Taken {1} at {2}", i, ret, DateTime.Now);
}
});
putthrad.Start();
takethread.Start();
putthrad.Join();
takethread.Join();
}
0366デフォルトの名無しさん
2010/10/16(土) 16:58:56自分で書ける気がしない
0367デフォルトの名無しさん
2010/10/16(土) 17:00:180368デフォルトの名無しさん
2010/10/16(土) 18:50:48と思って調べたらPulseAllってWaitスレッドを待機状態から実行状態にするんじゃなくて、
実行可能状態にするだけで、その中の1つlock(){}の中で実行状態になるのね。
書いといてなんだけど勉強になったわ
0369デフォルトの名無しさん
2010/10/18(月) 00:17:06XPまではGetWindowDCを使ってタイトルバーに独自にタブを描画して実現できているんですが、
Vista以降、エアロのガラス効果が有効な場合はタイトルバーへの描画が発生しなくなってしまいます。
エアロが有効なままタイトルバーに独自の描画をするにはどうすればいいでしょうか。
0370デフォルトの名無しさん
2010/10/18(月) 12:57:530371デフォルトの名無しさん
2010/10/18(月) 20:32:021〜nの列挙をもとに
Func<int, string>を非同期で実行し
最終的にstring[n]を得たい。
また、Func<int, string>は最大m個まで同時に実行したい。
以上よろしくお願い致します。
0372デフォルトの名無しさん
2010/10/18(月) 21:20:42LINQ の最初の方で AsParallel() 付けるだけ。
0373デフォルトの名無しさん
2010/10/18(月) 21:37:41それをRxでやりたいんじゃね?
0374デフォルトの名無しさん
2010/10/18(月) 21:43:37イベントやスレッドなどの非同期的なものを整理して同期的に扱う仕組み。
非同期処理自体を行うわけじゃない。LINQでデータベース作りたいと言ってるようなもん。
0375デフォルトの名無しさん
2010/10/18(月) 22:07:38ideoneが死んでるのでgyazoで失礼。
// PLINQ
http://gyazo.com/124702869481e12fc1b89fae18e59af6.png
// Rx
http://gyazo.com/9a889396aeb80a7e645d96442a70bfbb.png
並列処理はPLINQの仕事だと思います。
0376デフォルトの名無しさん
2010/10/18(月) 22:16:15すごくMSらしくないネーミングだなw
0377デフォルトの名無しさん
2010/10/18(月) 22:43:41レスありがとうございます。
ここの方たちは仕事とかでプログラミングされてる方が多いので
やっぱり適材適所が結論になってしまうのでしょうか・・
今回の質問は友達に出された問題で
特にベストなコーディングを目指しているわけでは
ありませんでした。
Rxでやるべきことかどうかはあまり関係ないのです。
言葉足らずですいません。
答えはあるとのことでだったので
http://gyazo.com/9a889396aeb80a7e645d96442a70bfbb.png
をヒントにもう少し考えてみたいと思います。
0378デフォルトの名無しさん
2010/10/18(月) 22:50:37どう見ても>>371は典型的なPLINQの例題。
0379デフォルトの名無しさん
2010/10/18(月) 23:28:35勘違いとかではなく先ほども書いたように
別にベストプラクティスを求めているわけじゃないです。
少し違いますが、分かりやすく言えばクイズ(遊び)です。
仕事じゃないです。
0380デフォルトの名無しさん
2010/10/18(月) 23:31:450381デフォルトの名無しさん
2010/10/18(月) 23:34:420382デフォルトの名無しさん
2010/10/18(月) 23:37:240383デフォルトの名無しさん
2010/10/18(月) 23:48:030384デフォルトの名無しさん
2010/10/19(火) 00:10:120385デフォルトの名無しさん
2010/10/19(火) 00:29:32それ、用途で考えたらまるでかぶってないんだけど。
むしろ、
TPL 出て、過去のスレッドプールライブラリ邪魔よねとか
Rx 出て、過去の event の -= はないよなーとか
そういう突っ込みすべきだと思う。
0386デフォルトの名無しさん
2010/10/19(火) 07:42:34string s;
s = "ab";
Console.WriteLine("{0,2}", s);
Console.WriteLine("{0,4}", s);
s = "あ";
Console.WriteLine("{0,2}", s);
Console.WriteLine("{0,4}", s);
>ab
> ab
> あ
> あ
となってしまいます。原因は予測できるのですが、これじゃ書式制御の意味がありません。
こういう物と割り切るべきでしょうか?それとも何か回避策があるのでしょうか?
0387デフォルトの名無しさん
2010/10/19(火) 07:59:57何にこまってるの?
あなたの期待する動作がわからない
0388デフォルトの名無しさん
2010/10/19(火) 08:10:53過去にもここかふらっとで同じような質問みたなあ・・・
winformとコンソールって若干差異がなかったっけ・・・?
0389デフォルトの名無しさん
2010/10/19(火) 08:24:070390デフォルトの名無しさん
2010/10/19(火) 10:01:26>ab
>--ab
>-あ
>---あ
で、何が問題?
0391デフォルトの名無しさん
2010/10/19(火) 11:15:350392デフォルトの名無しさん
2010/10/19(火) 11:33:01ぼくの想像する、期待した結果↓
>ab
>--ab
>あ
>--あ
0393デフォルトの名無しさん
2010/10/19(火) 11:42:33> ab
> あ
> あ
俺の環境だと問題なく出力されたぞ
(vista vs2010 .net3.5 consoleアプリとwinformの出力ウィンドウ内ともに)
0394デフォルトの名無しさん
2010/10/19(火) 11:44:38前にこの手の話出た記憶が
0395デフォルトの名無しさん
2010/10/19(火) 12:23:13了解しました。
0396デフォルトの名無しさん
2010/10/19(火) 12:35:210397デフォルトの名無しさん
2010/10/19(火) 12:39:08質問するのはいいけど使ってるIDEのバージョンやOSのバージョンも書かないと・・・
0398デフォルトの名無しさん
2010/10/19(火) 12:51:430399デフォルトの名無しさん
2010/10/19(火) 13:20:350400デフォルトの名無しさん
2010/10/19(火) 14:19:46説明もなしに君が取り組んでいる「問題」など分からんよ
提示された範囲ではフレームワークに「問題」は無いから、そちらの意味は除外
0401デフォルトの名無しさん
2010/10/19(火) 18:13:17出力する場合は実際に計測するしかないよね?
ttp://ideone.com/qidQL
0402デフォルトの名無しさん
2010/10/19(火) 19:53:12コンソールってことは開始座標指定できないんだろ?
AAエディタにそういった機能あるから不可能ってことは多分無いが
0403デフォルトの名無しさん
2010/10/19(火) 19:59:08要はパディングでしょ。
最近はそんな処理ほとんどないけどPフォントが生まれる前の時代には当たり前だった処理
0404デフォルトの名無しさん
2010/10/19(火) 20:16:350405デフォルトの名無しさん
2010/10/19(火) 21:31:110406デフォルトの名無しさん
2010/10/19(火) 22:00:570407デフォルトの名無しさん
2010/10/19(火) 22:47:48厳密にやるならUnicodeで規定されている文字幅を考慮しないと駄目
SJISに変換できないかもしれないし、ambiguousなやつとかもあるし
0408デフォルトの名無しさん
2010/10/19(火) 23:49:10出回ってるフォントの現状追認だし日中韓で違いあるとambiguous扱いで逃げるし、
厳密とか言われると非常に違和感が。
0409デフォルトの名無しさん
2010/10/19(火) 23:57:000410デフォルトの名無しさん
2010/10/20(水) 00:21:350411デフォルトの名無しさん
2010/10/20(水) 00:33:040412デフォルトの名無しさん
2010/10/20(水) 02:43:01そういうのやるときはいちばん外側にもう一階層lock使って、
Waitするスレッドを一つにしてやるとパフォーマンスが向上したりするぜ。
まあ競合が少なければ逆に悪くなったりもするが。
0413デフォルトの名無しさん
2010/10/20(水) 09:08:32どういうことだってばよ?
コードでおk
0414デフォルトの名無しさん
2010/10/20(水) 11:16:040415デフォルトの名無しさん
2010/10/20(水) 12:48:40そら緑文字が踊ってた時代は決め打ちでいいかも知らんが
今時フォントも選べないようなコンソールが存在しているのか?
>>413
412じゃないがシングルトンのダブルロッキングみたいなやり方じゃね?
0416デフォルトの名無しさん
2010/10/20(水) 14:03:40ここのソースを基に、キーボードイベントから
public enum WheelDirection
{
UP = 120,
DOWN = -120,
}
public void Wheel(WheelDirection direction)
{
INPUT[] input = new INPUT[1];
input[0].mi.dwFlags = MOUSEEVENTF_WHEEL;
input[0].mi.mouseData = (int)direction;
SendInput(1, input, Marshal.SizeOf(input[0]));
}
こんな感じでホイール制御しようとしているのですが、サッパリ反応してくれません。
カーソル移動やクリックは問題なく動くので、パラメーターが間違っている気がしますが、どうにも行き詰ってしまいました。
どのようにすればよいのでしょうか。どうかご教授お願いします。
0417デフォルトの名無しさん
2010/10/20(水) 16:07:08MSDNは MOUSEEVENTF_WHEEL 0x0800 と書いてあるが
リンク先のページには
const int MOUSEEVENTF_WHEEL = 0x0080 ;
と書いてあるようだが大丈夫か。
0418デフォルトの名無しさん
2010/10/20(水) 16:49:28#define MOUSEEVENTF_XDOWN 0x0080 /* x button down */
・
#define MOUSEEVENTF_WHEEL 0x0800 /* wheel button rolled */
だな
0419デフォルトの名無しさん
2010/10/20(水) 20:21:46ログイン後のみ開くことが出来るページ (ログイン後ページ) の取得をしようと思っています。
現在は、WebClient の UploadValues メソッドにて
ログインページにユーザー名とパスワードをアップロード後
DownloadString メソッドでログイン後ページの HTML を取得しています。
IE ですとログインページを開かなくても
クッキーに残っているのか直接ログイン後ページを開いても
ログインせずに開くことができます。
IE と同様に直接ログイン後のページを DownloadString メソッドで
取得する方法はありませんでしょうか?
何故上記のようにしたいかというと
WebClient の UploadValues メソッドが完了するのに
数秒かかってしまっているからです。
IE からログインするとすぐにログインが完了するのですが
プログラムから実行すると何故か時間がかかってしまうのです。
これが改善できるのであればそもそも
上記のようなことはしなくても構わないと思っています。
説明が長くなってすいません。
0420デフォルトの名無しさん
2010/10/20(水) 20:31:470421デフォルトの名無しさん
2010/10/20(水) 20:52:49クッキー付きの DownloadString メソッドのようなものがあるのでしょうか?
それともクッキーを自前でファイル読み込みして
何かの引数で渡してやるとかあるのでしょうか?
0422デフォルトの名無しさん
2010/10/20(水) 21:15:31WebClientとかにクッキー関連のプロパティなかったっけ?
0423デフォルトの名無しさん
2010/10/20(水) 22:09:11ttp://msdn.microsoft.com/ja-jp/magazine/cc817398.aspx#id0190136
条件変数で待機するスレッドを一つにすることで、
ここに書かれてる2ステップダンスを回避できる。
0424デフォルトの名無しさん
2010/10/20(水) 22:13:28まあともかく、PulseAllで多くのスレッドを起こすのは非効率ってことだ。
0425デフォルトの名無しさん
2010/10/20(水) 22:27:22無事動きました。
ありがとうございます。
0426デフォルトの名無しさん
2010/10/20(水) 22:43:48http://neue.cc/2009/12/17_230.html
0427デフォルトの名無しさん
2010/10/20(水) 22:44:00System.Net.HttpWebRequest使えばcookie制御できるよ
0428デフォルトの名無しさん
2010/10/20(水) 22:46:10起動してようとしても「不明なエラーです」とだけ出ます。
これは何故でしょう・・・・?
このネトゲはアンチマクロのための何だかよく知らないプログラムが作動してるらしいですが、そのせい?
0429デフォルトの名無しさん
2010/10/20(水) 22:58:20開発ツールなんて一般的に見たらものすごく異常な動作をするものなんだから
ネトゲの対策に誤検出されるようなことが起こってもおかしくないがそれはVC#側の問題ではない。
少なくともスレ違いであることは間違いない。
0430デフォルトの名無しさん
2010/10/20(水) 23:14:31取得しようとするとそこで時間がかかってしまうため
既にあるクッキーを利用したいと思っています。
クッキーを読む方法はないでしょうか・・・
0431デフォルトの名無しさん
2010/10/20(水) 23:34:420432デフォルトの名無しさん
2010/10/20(水) 23:53:20みたいのがあったような別の話だったような。
別にこんなのあったけど、これも関係なかったらごめん。
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/673defaultproxy/defaultproxy.html
0433デフォルトの名無しさん
2010/10/21(木) 00:03:480434デフォルトの名無しさん
2010/10/21(木) 00:09:53それだとVISTA以降のOSからは取得できなかった気がする
0435デフォルトの名無しさん
2010/10/21(木) 00:16:11読めるんじゃないかな。
で、>>426 をちょっといじってコンストラクターで渡すとかすれば。
0436デフォルトの名無しさん
2010/10/21(木) 00:29:02これ覚えておいたほうがよさそうだな
>既にあるクッキー
ってのはIEのクッキーのことでいいの?
0437デフォルトの名無しさん
2010/10/21(木) 09:35:50そういうことなら納得
.net なら >>360 の言ったようにAutoResetEvent使う方がそこらの効率はよさげ
0438デフォルトの名無しさん
2010/10/21(木) 12:30:22で持ってくるにはどうすればよいでしょうか
0439デフォルトの名無しさん
2010/10/21(木) 15:00:22ドロップ先のディレクトリにpicturebox.Imageを書き出すだけじゃない?
0440デフォルトの名無しさん
2010/10/21(木) 15:03:570441デフォルトの名無しさん
2010/10/21(木) 15:25:45http://code.msdn.microsoft.com/WindowsAPICodePack
Windows API Code Packのサンプルに
WPFのウィンドウとエクスプローラの間でドラッグドロップするコードがあるから
それを応用すればいいと思う。
0442デフォルトの名無しさん
2010/10/21(木) 15:29:140443デフォルトの名無しさん
2010/10/21(木) 16:19:32Task使ってみたんですがDisposeがあって困り中。
別スレット走らせて後は知らないってやりたかったら、
今まで通りThreadやQueueUserWorkItemを使いなさいってことですか?
0444デフォルトの名無しさん
2010/10/21(木) 18:43:090445438
2010/10/21(木) 19:25:43いろいろやってpictureboxからは厳しいというのが分かりました。
0446デフォルトの名無しさん
2010/10/21(木) 20:08:43IDisposableイコール必ずDisposeを呼ばなければならない、ってわけでもないですよ、今や。
例えばReactive ExtensionsではDisposeは
イベントのデタッチや非同期のキャンセルに使われていて、呼ぶか呼ばないかは完全に任意。
0447デフォルトの名無しさん
2010/10/21(木) 20:14:39イベントは登録解除しないとメモリリークする場合がある
0448デフォルトの名無しさん
2010/10/21(木) 20:20:53ここではTaskの話だろ。
TaskはDispose必須だろ。
他の話しても何の意味もない。
0449デフォルトの名無しさん
2010/10/21(木) 20:22:530450デフォルトの名無しさん
2010/10/21(木) 23:24:360451デフォルトの名無しさん
2010/10/21(木) 23:44:17PictureBoxでもできるんじゃない?
試してないけど、
ドラッグ開始時など適当なタイミングで画像を一時ファイルに保存
ドラッグのデータをSetDataで一時ファイルのパスに変更
0452デフォルトの名無しさん
2010/10/22(金) 00:23:340453デフォルトの名無しさん
2010/10/22(金) 00:25:430454デフォルトの名無しさん
2010/10/22(金) 00:32:43そんな基本的なところで環境に依存したら何のための仮想実行環境かわからん。
ただしポインタやIntPtrのサイズは環境依存。
0455デフォルトの名無しさん
2010/10/22(金) 00:37:39へー。違うと思った。
でも、intが2バイトの環境ってあったよなー
0456デフォルトの名無しさん
2010/10/22(金) 00:41:19C#では言語仕様でint = System.Int32と決められているので
intが32ビットではない実装はC#とは呼べない。
0457デフォルトの名無しさん
2010/10/22(金) 00:44:51詳しいね。サンクス
0458デフォルトの名無しさん
2010/10/22(金) 00:48:22それはC言語のことじゃないかい
0459デフォルトの名無しさん
2010/10/22(金) 00:51:17現在はintも32ビットが主流
0460デフォルトの名無しさん
2010/10/22(金) 01:12:04Java も C# も int のサイズ固定。
0461デフォルトの名無しさん
2010/10/22(金) 04:34:240462デフォルトの名無しさん
2010/10/22(金) 04:37:42Cが出来た当時はまさかここまでプロセッサが成長して
そこまで現役で使われるなんて思ってもいないだろうからな・・・
0463デフォルトの名無しさん
2010/10/22(金) 08:28:23char は1バイトと決まってるだろ
1バイトが何ビットなのかは別として
0464デフォルトの名無しさん
2010/10/22(金) 12:31:22この言語で書かれたコードは処理系が変わると動きませんと言ってるのに等しいからな
0465デフォルトの名無しさん
2010/10/22(金) 13:00:26(ω・ )ゝ < あんだって?
. ノ/ / \_____
ノ ̄ゝ
0466デフォルトの名無しさん
2010/10/22(金) 16:50:100467デフォルトの名無しさん
2010/10/22(金) 17:33:470468デフォルトの名無しさん
2010/10/22(金) 18:24:310469デフォルトの名無しさん
2010/10/22(金) 22:17:560470デフォルトの名無しさん
2010/10/22(金) 22:27:000471デフォルトの名無しさん
2010/10/23(土) 01:20:560472デフォルトの名無しさん
2010/10/23(土) 01:29:280473デフォルトの名無しさん
2010/10/23(土) 01:35:560474デフォルトの名無しさん
2010/10/23(土) 07:04:03http://ja.wikipedia.org/wiki/PDP-7
0475デフォルトの名無しさん
2010/10/23(土) 08:27:460476デフォルトの名無しさん
2010/10/23(土) 11:28:17このAPI使ってオートログインの機能を実装してみようかと
自分のソースいじってみたんだがうまくいかない
別のサイトでテスト的にやってみたらそっちはうまくいった
何が違うんだろうとずっと悩んでたんだが
もしかするとSSLだとうまくいかないんですかね?
クッキー自体はちゃんとうまくとれてるんだけど。。
なかなか原因が思い当たらなくて。。
0477デフォルトの名無しさん
2010/10/23(土) 13:21:11http://dobon.net/vb/dotnet/programing/playmidifile.html
こちらのページを元に音楽を再生できる部分まではかいたのですが、一定時間後に音楽を再生しようと
http://msdn.microsoft.com/ja-jp/library/system.timers.timer.interval(VS.80).aspx
こちらのページを参考にintervalを組んでみました。
intervalで呼び出す関数に音楽を再生するコードを入れると音楽が再生されません。
なにか原因がわかりますでしょうか?
0478デフォルトの名無しさん
2010/10/23(土) 13:24:18まずは再現するコードを出しなさい
0479デフォルトの名無しさん
2010/10/23(土) 13:24:240480デフォルトの名無しさん
2010/10/23(土) 13:25:47せめてこれは入れとけよ
コードを↓のサイトに貼って見せて
ダメな場合はいいけど・・・
■備考
コードの量が多い場合は下記サイトを使うなどしたほうがいいかも
http://ideone.com/
コードを貼り付けてRun codeのチェックをはずしてsubmitボタンを押すと
コードを鯖側にアップして専用のアドレスが発行されます。
直接貼る場合は下記サイトなどを利用してhtmlエンコードした方が
インデントも残って見やすいです
http://kawama.jp/php/encode_html.php
0481デフォルトの名無しさん
2010/10/23(土) 13:29:090482デフォルトの名無しさん
2010/10/23(土) 13:56:29http://ideone.com/6OVYk
これが動きません。
期待している動作は3秒後に音楽が再生されるようにしたいです。
また、今実験していると
http://ideone.com/oFHqz
このコードでは再生されることがわかりました。
0483デフォルトの名無しさん
2010/10/23(土) 14:34:010484デフォルトの名無しさん
2010/10/23(土) 14:46:05すみません
MCIエラーとはどのように確認できるのでしょうか?
調べてみたのですが知識が足らず、わかりませんでした。
0485477
2010/10/23(土) 17:09:53インターバルの関数に入る前にopenをしておかないと再生されないようです。
ですがopenしたエイリアスで再生することはできず、
インターバルで呼び出された関数で再度openしてplayしなければ再生できません。
また、インターバルで再生を開始したエイリアスをストップすることはできません。
なにかわかりますでyそうか
0486デフォルトの名無しさん
2010/10/23(土) 17:16:41System.Timers.Timerのコールバックは別のスレッドで行われるから。
でもだからってWinFormsのタイマは使うなよ。精度が悪くてタイマにならん。
0487477
2010/10/23(土) 17:17:57先ほどから継続して調べていると、Timerは別スレッドで呼び出されるということなので、
インターバルで再生したオーディオがストップできないのではないかと思いました。
どうスレッドで動作するタイマはありませんでしょうか?
フォームにボタンを二つつけて、再生/停止はできることは確認しております。
0488デフォルトの名無しさん
2010/10/23(土) 17:36:390489デフォルトの名無しさん
2010/10/23(土) 18:47:14どう使い分ければよいのでしょうか。
1.System.Windows.Threading.DispatcherTimer →UIスレッドで実行されるタイマー。WPFで使用可
2.System.Windows.Forms.Timer →UIスレッドで実行されるタイマー。WinFormsで使用
3.System.Timers.Timer →スレッドプールで実行されるタイマー
4.System.Threading.Timer →スレッドプールで実行されるタイマー。3との違いがよくわからない
0490デフォルトの名無しさん
2010/10/23(土) 18:51:433は4を使いやすくしたもの
IntervalとかEnableとか用意したりイベント公開したり
ComponentだったりSynchronizingObjectプロパティ持たせたり
0491デフォルトの名無しさん
2010/10/23(土) 18:51:51専用のワーカースレッドを作成し使用する。
System.Threading.Timer
標準のスレッドプールを使用する。
0492デフォルトの名無しさん
2010/10/23(土) 19:31:53System.Timers.Timerは内部でSystem.Threading.Timer使ってるよ
ドキュメントではイベントはスレッドプール上で発生するぐらいしか書いてないけど
0493477
2010/10/24(日) 14:03:40すみません。タイミングが悪く書き込んだようですね。
ありがとうございます。
>>488
プラグインを作っているのですが、
フォームコントロールはプラグインの設定画面を出さないと出てこないため、
Invokeを使ってもフォームが表示されていないためクリックできないようです。
一定時間後にmciSendStringを実行させたいのですが、なにかいい方法はないでしょうか
0494デフォルトの名無しさん
2010/10/24(日) 14:49:05http://ideone.com/OOaQY
このclass1を目的のスレッド上でnewしてやればいい。
0495477
2010/10/24(日) 20:17:36ありがとうございます!!
いただいたコードで問題なく動くことが確認できました。
それを加工するといろいろなことができそうです。
本当にありがとうございました!!
0496デフォルトの名無しさん
2010/10/26(火) 22:24:28できれば3.5と3.5SP1の判定もしたいです。
0497デフォルトの名無しさん
2010/10/26(火) 22:27:13レジストリを見て、SPが当たってるかは判断できるけどね。
0498デフォルトの名無しさん
2010/10/26(火) 22:29:130499デフォルトの名無しさん
2010/10/26(火) 22:49:02ウインドウサイズをプロパティウィンドウから特定のサイズに指定しただけのアプリなんだけど、
環境によっては実行したらウインドウサイズが指定のサイズと若干異なるのは何が原因なんでしょうか?
ウインドウサイズだけでなく、配置したコントロールのサイズ・位置もプロパティウインドウで指定した
絶対サイズではなく、スクリーンの解像度に応じて(?)、伸縮がかかっている感じなんですが、
絶対座標での強制指定を有効/無効にするようなプロパティがあるのでしょうか?
.net framework 3.5を使っています。
0500デフォルトの名無しさん
2010/10/26(火) 23:38:10デザイナではFormの外形のサイズを指定していることになっているけど、
デザイナが自動生成する実際のコードではClientSizeに値が代入される。(確認してね)
これは、タイトルバーの高さとかウィンドウの枠の太さが環境によって違うため、
仮にどの環境でも同じSizeが適用される仕様だと、デザインによっては環境次第で
クライアント領域からはみ出してしまうコントロールが出てくる可能性があるためだろうと思う。
だったら、デザイン時の最初からClientSizeを指定するようにすりゃいいと思うんだが、
まあこのあたりがMS様の味って奴なんだろう
0501デフォルトの名無しさん
2010/10/26(火) 23:45:09this.AutoScaleDimensions=new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode=System.Windows.Forms.AutoScaleMode.Font;
このへん調べて。
初心者ならデザイナが作ったcsのInitializeComponent()見るのまじおすすめ。
0502デフォルトの名無しさん
2010/10/26(火) 23:50:19AutoScaleModeもなんで最初からDPIになってないのかよく分からんよなあ。
0503デフォルトの名無しさん
2010/10/27(水) 18:25:25VB6みたいに固定ダイアログ風にしたいのですか?
せっかく.NETを使うんだったら、Dockプロパティ駆使してウインドウサイズに応じて
画面内の部品サイズが適切に変わるようにするのがオススメですよ。
画面を作る工数が若干増えるのと慣れが必要ですが、ちょっとの工数増で見栄えや
使い勝手は段違いによくなります。
0504デフォルトの名無しさん
2010/10/27(水) 20:16:18固定ダイアログくらいVS2010でも出てくる
0505デフォルトの名無しさん
2010/10/27(水) 22:04:26どうもありがとうございます。調べてみます。
>>503-504
私が想定していたのは、あるサイズの画像があって、そのサイズに
合わせて色々コントロールを配置していたので,自分の開発環境では
ぴったりだったのですが、異なる環境では画像だけ元サイズで、
他のコントロールのサイズと位置が変わって配置が崩れてしまいました。
コード内(Form_Loadなど)でサイズと位置を指定すれば、どの環境でも
絶対座標で統一されるようですね。
0506デフォルトの名無しさん
2010/10/28(木) 00:31:400507506
2010/10/28(木) 00:35:51GetHashCodeの実装に使うだけなので、強度などは気にしません。
そこそこばらけて計算負荷がそれほど高くなければ十分です。
0508デフォルトの名無しさん
2010/10/28(木) 01:02:000509デフォルトの名無しさん
2010/10/28(木) 01:21:370510デフォルトの名無しさん
2010/10/28(木) 01:43:41配列の型は何?
0511デフォルトの名無しさん
2010/10/28(木) 01:45:24for (int i = 0; i < array.Length; ++i)
0512デフォルトの名無しさん
2010/10/28(木) 01:47:46この程度でいいんじゃない?
uint h = 0;
for (int i = 0; i < array.Length; ++i)
h ^= (uint)(array[i] << (i & 0x1f));
0514デフォルトの名無しさん
2010/10/29(金) 17:02:03技術を学べばいいでしょうか。
0515デフォルトの名無しさん
2010/10/29(金) 17:11:290516デフォルトの名無しさん
2010/10/29(金) 17:13:20中身を解析して画像のアドレスを抽出、それをさらにダウンロードとかすれば
いいんじゃね?
まあその他細かい漏れはおいおい組み込むとして
0517デフォルトの名無しさん
2010/10/29(金) 19:09:40intに入る値は全て有効にしたいので-1とか無効値は設定できません
objectに入れると型を気にする必要が出てくるので出来れば
使いたくないのですが・・。
0518デフォルトの名無しさん
2010/10/29(金) 19:33:370519デフォルトの名無しさん
2010/10/29(金) 20:50:44ありがとう!
0520デフォルトの名無しさん
2010/10/29(金) 21:33:220521デフォルトの名無しさん
2010/10/29(金) 21:37:010522デフォルトの名無しさん
2010/10/29(金) 22:31:14解決したみたいだけど、こんなでもいいんじゃね?
public class IntCounter
{
public int value = 0;
public void inclement() {return this.value; }
}
クラスなのでNULLにできるし。
>>521
俺もほしいけど適法なのがいいなぁ。
はなし変わるけど個人でVisual Studioを買う場合(MSDN付きでバージョン管理ツール不要)
だと最低いくらくらいで買えますか?
自分で調べた限り最安値は15万前後。5万までならがんばるが15万は無理。。。。
0523デフォルトの名無しさん
2010/10/29(金) 22:46:48?が自信無さげでカワイイw
0524デフォルトの名無しさん
2010/10/30(土) 00:15:145万じゃアップグレード版も買えねーよ
MSDNエッセンシャルで我慢するか、開発者ライセンスで社用のを個人使用するしかないんじゃない?
0525デフォルトの名無しさん
2010/10/30(土) 00:36:260526デフォルトの名無しさん
2010/10/30(土) 04:49:480527デフォルトの名無しさん
2010/10/30(土) 04:52:52いや多分記憶違いかな…。
0528デフォルトの名無しさん
2010/10/30(土) 05:04:36割といい加減
店頭で買う場合くらいじゃないの?
某店が倒産する前は個人でだけど法人窓口利用してたが
DSP版買うにしても余計なデバイス無しで買えたしなあ・・・
まあそういうことだ
0529デフォルトの名無しさん
2010/10/30(土) 06:28:57ポチっていいのか?
ホントにやるぞ?
0530デフォルトの名無しさん
2010/10/30(土) 06:39:37無理じゃねえかorz
アカデミックパック商品は、
ご注文時に対象ユーザーであることを示す教育機関情報が必要です。
つきましてはご注文時に、学校名・教育機関名、種別(教職員/機関職員/学生)、
学部・学科、学年、学生証番号・教職員IDのご入力をお願いしておりますので
ご協力頂けます様、よろしくお願い申し上げます。
0531デフォルトの名無しさん
2010/10/30(土) 08:36:180532デフォルトの名無しさん
2010/10/30(土) 10:30:24MSDN付きがいい、っていう理由がよくわからんし。
0533デフォルトの名無しさん
2010/10/30(土) 10:37:40それだとドリームスパークもいけるな
0534デフォルトの名無しさん
2010/10/30(土) 18:17:52違法ダウンロードと一緒だろうが
0535デフォルトの名無しさん
2010/10/30(土) 18:31:520536デフォルトの名無しさん
2010/10/30(土) 18:39:38( ´Д` ) < 通報しますた!!
/, / \_______
(ぃ9 |
/ /、
/ ∧_二つ
/ /
/ \ ((( ))) / ̄ ̄ ̄ ̄ ̄ ̄ ̄
/ /~\ \ ( ´Д`) < しますた!!!
/ / > ) (ぃ9 ) \_______
/ ノ / / / ∧つ
/ / . / ./ / \ (゚д゚) シマスタ!!
/ ./ ( ヽ、 / /⌒> ) ゚( )−
( _) \__つ (_) \_つ / > (・∀・)シマスタ!! .マスタ!! .スタ!!
0537デフォルトの名無しさん
2010/10/30(土) 19:05:250538デフォルトの名無しさん
2010/10/30(土) 21:05:29に見えた
0539デフォルトの名無しさん
2010/10/30(土) 22:47:180540デフォルトの名無しさん
2010/10/30(土) 22:49:37見当たらない。ヘルプ読んだらPro版じゃないと出来ないみたいだショボーン
0541デフォルトの名無しさん
2010/10/30(土) 23:10:190542デフォルトの名無しさん
2010/10/31(日) 01:10:50さすがっす
ぱねーっす
0543デフォルトの名無しさん
2010/10/31(日) 02:25:300544デフォルトの名無しさん
2010/10/31(日) 03:41:430545デフォルトの名無しさん
2010/10/31(日) 14:20:04MSBuildってやつはどうなん?
0546デフォルトの名無しさん
2010/10/31(日) 14:24:19全然違う
0547デフォルトの名無しさん
2010/10/31(日) 18:43:080548デフォルトの名無しさん
2010/10/31(日) 20:16:22べつにEEでもサービス作れるよ
ってだけの話かと
0550デフォルトの名無しさん
2010/11/01(月) 00:01:22スレッド実行中でもオブジェクトが破棄されるのね。ウンコ仕様。
0551デフォルトの名無しさん
2010/11/01(月) 00:08:210552デフォルトの名無しさん
2010/11/01(月) 08:15:38ってするとメソッド実行中にウンコのファイナライザが呼ばれる。
0553デフォルトの名無しさん
2010/11/01(月) 08:21:190554デフォルトの名無しさん
2010/11/01(月) 08:21:23何か根本的に理解足りてなくね?
0555デフォルトの名無しさん
2010/11/01(月) 08:24:10アホすw
0556デフォルトの名無しさん
2010/11/01(月) 09:35:400557デフォルトの名無しさん
2010/11/01(月) 09:51:360558デフォルトの名無しさん
2010/11/01(月) 11:23:160559デフォルトの名無しさん
2010/11/01(月) 11:52:02・スタック
・静的フィールド
・明示的にルートとして作られたハンドル
くらいだっけ
0560デフォルトの名無しさん
2010/11/01(月) 12:27:330561デフォルトの名無しさん
2010/11/01(月) 15:52:550562デフォルトの名無しさん
2010/11/01(月) 15:56:340563デフォルトの名無しさん
2010/11/01(月) 16:04:220564デフォルトの名無しさん
2010/11/01(月) 19:50:040565デフォルトの名無しさん
2010/11/01(月) 23:42:39ThreadはThreadStartデリゲートを保持している。
したがってウンコは破棄されない。
んじゃなかったんだっけ?
0566デフォルトの名無しさん
2010/11/01(月) 23:49:000567デフォルトの名無しさん
2010/11/01(月) 23:57:550568デフォルトの名無しさん
2010/11/01(月) 23:58:25/ \_
{  ̄ \
_人 ,-、 ,-、 ヽ
/ }、
. イ/ 、、、 ・ ・ 、、、 ヽ
/┘-く r‐- 、 __,. -、 _)ム、
( , r) ヽ  ̄ ノ, -=ァ、Y 呼んだ?
ー'-ー′ ` ー---― ' //7 lノ
{ i 弍、 ____ //7 ニl´
ヾヘヾ二フ ̄´ Y// ニ/
`ーニシ { { /
`='
0569デフォルトの名無しさん
2010/11/02(火) 00:02:160570デフォルトの名無しさん
2010/11/02(火) 00:50:230571デフォルトの名無しさん
2010/11/02(火) 01:43:280572デフォルトの名無しさん
2010/11/02(火) 08:37:190573デフォルトの名無しさん
2010/11/02(火) 09:01:540574デフォルトの名無しさん
2010/11/02(火) 09:02:350575デフォルトの名無しさん
2010/11/02(火) 13:53:45そういうことは出来ますか?
enumのタブが消されて見にくくなります・・・。
0576デフォルトの名無しさん
2010/11/02(火) 14:10:280577デフォルトの名無しさん
2010/11/02(火) 14:52:010578デフォルトの名無しさん
2010/11/02(火) 15:14:14スペース押すのダルいし、そのためのキーだよ
0579デフォルトの名無しさん
2010/11/02(火) 16:12:35間違い見つけやすくなると思うんだけど・・。
とりあえず無いならあきらめます。
0580デフォルトの名無しさん
2010/11/02(火) 16:14:50?
0581デフォルトの名無しさん
2010/11/02(火) 16:59:28A = 0x00,
B = 0x01,
C = 0x02,
}
みたいなやつだろ
0582デフォルトの名無しさん
2010/11/02(火) 18:38:33試してないけどProductivity Power Toolsでそろえるのはできるんでない?
http://blogs.msdn.com/b/jasonz/archive/2010/06/07/announcing-vs2010-productivity-power-tools-and-modeling-feature-packs.aspx
0583デフォルトの名無しさん
2010/11/03(水) 01:07:34FlowLayoutPanelでやってみたらフォーカスが当たらない。
そりゃそうだが、フォーカスを受け付けるにはどうすれば??
そもそもFocus()とSelect()の違いって何?
0584デフォルトの名無しさん
2010/11/03(水) 01:24:27内部的には両方ともコンテナのActiveControlにセットしてるだけだったはず。詳細は知らん。
0585デフォルトの名無しさん
2010/11/03(水) 01:39:00「true の場合、コントロールはフォーカスを受け取ることができます。 」
って書いてあるから混乱してたんだよね。
0586デフォルトの名無しさん
2010/11/03(水) 18:47:48C#のListってランダムアクセスできるんですか?
ListにはメソッドにBinarySearchが用意されているけど
そもそもランダムアクセスできないのであればあまりパフォーマンスが
出ないように思うのですが。
0587デフォルトの名無しさん
2010/11/03(水) 18:49:21インデックス指定すればアクセス可能だよ
ただ配列のように速度はでないだろうけど
0588デフォルトの名無しさん
2010/11/03(水) 18:51:41BinarySearchもその内部の配列に対して直接行われるので速い。
0589デフォルトの名無しさん
2010/11/03(水) 18:53:29非ジェネリック版は ArrayList だけど対応するジェネリック版が List<T> なのもあれだけど。
0590デフォルトの名無しさん
2010/11/03(水) 18:56:350591デフォルトの名無しさん
2010/11/03(水) 19:00:47わざわざArrayListという名前にする必要がないんだわ
JavaのListインターフェイスはランダムアクセスに向いてない一般のリストに対応してるが
そのせいで無駄に複雑になりすぎてる感じ
0592デフォルトの名無しさん
2010/11/03(水) 19:04:020593デフォルトの名無しさん
2010/11/03(水) 19:05:090594デフォルトの名無しさん
2010/11/03(水) 19:07:41この設計を超えるライブラリ集を未だ見た事がないのだが?
良い設計の物を教えてくれ
大抵の言語は使えるからすぐに評価出来ると思う
0595デフォルトの名無しさん
2010/11/03(水) 19:09:22JavaのListはいろいろ詰め込みすぎて実装依存が激しい
ランダムアクセスメソッドがあるくせに「実装次第では非効率だから使わないでね」とか書いてある
0596デフォルトの名無しさん
2010/11/03(水) 19:10:37そうよ。
>>591
いや、ArrayList って名前の方がいまいちなのは同意で、
非ジェネリック版のコレクションに Obsolete 付けたいなぁという意味で。
>>593
他の言語と比べりゃかなり熟慮されてる。
とはいえ、1.0 の頃「失敗だった」って思ってるものも結構あって、
後からの追加分で方針変わってるものも。
0597586
2010/11/03(水) 19:47:50>>588
ということは検索は速いけど挿入は遅いということですね。
挿入も検索も速度を気にするのならSoretedDictionaryという認識で正しいでしょうか?
SortedListの位置づけがいまいちよく分からないけどこちらはKey, Value形式の
Listということなんでしょうか。
0598デフォルトの名無しさん
2010/11/03(水) 19:53:09List/LinkedListがリスト。
0599デフォルトの名無しさん
2010/11/03(水) 19:54:03HashSetだったかでもいいか。
0600デフォルトの名無しさん
2010/11/03(水) 20:10:27Dictionaryがハッシュテーブル
SortedDictionaryが赤黒木
SortedListが普通の配列をソート済みにしておいて二分探索
とかだったような(確認はしてない)。
0601デフォルトの名無しさん
2010/11/03(水) 20:45:56> ということは検索は速いけど挿入は遅いということですね。
データ数が少ないと挿入とかもリンクリストのほうが遅いとかってこともあるな。
0602586
2010/11/03(水) 20:47:33には赤黒木ですよね。
SortedDictionaryであるKeyの値にヒットするものがないときに
もっとも近いKeyに結びついたValueが欲しい場合はどうしたら
よいのでしょうか。
List.BinarySearchではヒットするものがない場合は手前の
インデックスの2の補数が返ってくるので上記が可能なのですが
SortedDictionaryでList.BinarySearchと同じようなことはできる
のでしょうか。
内部に木を持っていればできるはずなのに、パブリックメソッドを見る
限り内部の木を意識したメソッドがないように見えるのですが。
0603デフォルトの名無しさん
2010/11/03(水) 20:58:02Dictionaryとの違いは、foreachで列挙したときにソートされてるかどうかだけ
0605デフォルトの名無しさん
2010/11/03(水) 21:54:38おかげで赤黒木を自力で実装してしまったよ
0606デフォルトの名無しさん
2010/11/03(水) 22:08:49俺がやったらきっと内部状態の整合性をぶち壊す。
0607デフォルトの名無しさん
2010/11/03(水) 22:42:29ポインタが使えるみたいだけど、C++で書けばいいだけの話じゃん
0608デフォルトの名無しさん
2010/11/03(水) 22:45:29C# も、制限付き(unsafe 内でのみ)ポインター使えるようにしてある。
まあ、実際、使うことほぼないけども。
結構ごちゃごちゃしてるけど、あれでも他と比べりゃだいぶマシ。
0609デフォルトの名無しさん
2010/11/03(水) 22:45:420610デフォルトの名無しさん
2010/11/03(水) 22:46:02ポインタというかunsafeは別にあまり売りではないと思う……
0611607
2010/11/03(水) 22:53:43メモリ関係の処理を自動でやってくれるC++じゃん って思ってしまった
0612デフォルトの名無しさん
2010/11/03(水) 22:54:380613デフォルトの名無しさん
2010/11/03(水) 22:54:41たかが関数いくつか呼ぶためだけにC++使うなんてアホらしい
0614デフォルトの名無しさん
2010/11/03(水) 23:12:14でもジャグ配列はポインタのポインタじゃないんで凄く遅い
0615デフォルトの名無しさん
2010/11/03(水) 23:19:092.0のイテレーターとか、3.0の各機能、4.0のdynamic、(今後出て来る)5.0のasync、
C++とか話にならないレベル。
0616デフォルトの名無しさん
2010/11/04(木) 00:50:04そりゃ後発だからってだけだけど。
0617デフォルトの名無しさん
2010/11/04(木) 01:08:23C# も当然、どんどん後悔しょっていっちゃってるけども、
それでもカオス化のスピードは他の言語よりも緩やかだと思う。
(そもそも進化をあきらめた言語を除いて。
有益な追加と負の遺産の S/N 比の高さは随一。)
0618デフォルトの名無しさん
2010/11/04(木) 01:47:20元々がJavaのシェアを乗っ取る目的で開発された言語だからな
しかしWIndowsメインってのが痛いな
MonoはMS公式じゃないし遅い
0619デフォルトの名無しさん
2010/11/04(木) 01:49:37WIndowsなんてしょうもないミスタイプするような人が何言ってもねぇ?
0620デフォルトの名無しさん
2010/11/04(木) 01:54:330621デフォルトの名無しさん
2010/11/04(木) 02:00:51Windows
どうだ!今度はちゃんとタイプしたぞ
0622デフォルトの名無しさん
2010/11/04(木) 02:05:42正直言語とかどうでもいいんだよ
やりたいことがやれれば、作りたいものが作れれば、しかも楽に、ね
0623デフォルトの名無しさん
2010/11/04(木) 02:09:14WiNdoWs
0624デフォルトの名無しさん
2010/11/04(木) 02:20:540625デフォルトの名無しさん
2010/11/04(木) 06:42:50新たな中立団体作って分離させなきゃ
0626デフォルトの名無しさん
2010/11/04(木) 06:50:200627デフォルトの名無しさん
2010/11/04(木) 08:59:25世の中には放送大学っていう便利な大学があってな、
入学料22,000を収めるだけで学生になれるんだぜ。
0628デフォルトの名無しさん
2010/11/04(木) 09:09:400629デフォルトの名無しさん
2010/11/04(木) 09:30:55違うって。
「開発者から Java への機能追加の要望が山ほど届いてて、
MS 的にもまずデリゲート追加したいけど、
SUN が断固として拒否してきたから自社で作り直した言語」
が C#。
>>625
委員会方式でやってる C++ のカオス&足の遅さときたら酷いぞ、今。
強い組織によるリーダーシップは必要なんだよ。
0630デフォルトの名無しさん
2010/11/04(木) 09:56:13よそのほうがよっぽど宗教じみてて、どうしようもないと思うが。
0631デフォルトの名無しさん
2010/11/04(木) 11:53:480632デフォルトの名無しさん
2010/11/04(木) 12:25:08匿名接続のみのローカルDBのみは無償とかセコイことしーな。
0633デフォルトの名無しさん
2010/11/04(木) 13:42:080634デフォルトの名無しさん
2010/11/04(木) 14:15:180635デフォルトの名無しさん
2010/11/04(木) 18:19:01場所で変更可能にしたいのですが簡単な方法はありますか?
クラスフィールドで二つのインスタンスのどっちが変えても
同じ値になるようにしたいです。
0636デフォルトの名無しさん
2010/11/04(木) 18:46:330637デフォルトの名無しさん
2010/11/04(木) 18:51:130638デフォルトの名無しさん
2010/11/04(木) 18:55:550639デフォルトの名無しさん
2010/11/04(木) 19:07:51クラスにしてstaticメンバ変数にする
0640デフォルトの名無しさん
2010/11/04(木) 19:41:00StrongBox<T>でも使えば
0641デフォルトの名無しさん
2010/11/04(木) 20:01:26TextFieldTypeを使用してCSVを読み込んだのですが、、少ないデータ数だとうまくいくのですが、
100項目600,000行のデータを取得するとどうしてもEndOfDataのところでバッファオーバーになってしまいます。
これはもうこのクラスを使えないのでしょうか?それともなにか解決策があるのでしょうか?
よろしくおねがいいたいします><
0642デフォルトの名無しさん
2010/11/04(木) 20:42:570643デフォルトの名無しさん
2010/11/04(木) 20:52:25http://hibari.2ch.net/test/read.cgi/tech/1286890729/586
の人かな?
スレ落ちてないよ〜
0644デフォルトの名無しさん
2010/11/04(木) 20:55:48>100項目600,000行のデータ
これのファイル上のサイズは?
0645デフォルトの名無しさん
2010/11/04(木) 22:37:54特に問題なし
0646デフォルトの名無しさん
2010/11/04(木) 23:10:56ウィンドウのの×ボタン押したときでも
Windowsごと終了されちゃったときでも
必ず終了処理するにはどこのイベントハンドラに
処理を書くのがよいのでしょうか。
0647デフォルトの名無しさん
2010/11/04(木) 23:12:470648デフォルトの名無しさん
2010/11/04(木) 23:23:070649646
2010/11/04(木) 23:25:24FormClosingで処理することにします。
0650デフォルトの名無しさん
2010/11/05(金) 06:23:43配列をforeachで列挙している時なんかはわかるんだけど、整数型に値を代入するようなときでも必要なの?
0651デフォルトの名無しさん
2010/11/05(金) 07:54:450652641
2010/11/05(金) 09:16:14今確認したら「ふらっとC#〜」落ちてないですね;w;
100列X600,000行の桁の数字のカンマ区切りのCSVです。
サイズは280MBです。
デバックでは
TextFieldParser parser = new TextFieldParser(FilePath,
System.Text.Encoding.GetEncoding("Unicode"));
後に
parser.TextFieldType = FieldType.Delimited;//区切り指定
parser.SetDelimiters(Delim(refDelim));//区切り文字指定
*Delim()は区切り文字を指定するメソッドです。
その後にwhile (!parser.EndOfData)のEndOfDataでInvalidOperationException例外が起きました・・・
ちなみにwhileの前にusing (StreamWriter w = new StreamWriter(presFolder + Path.GetFileName(FilePath)))
を指定しているのですがこれも少しは関係しているのだろうか・・・orz
0653641
2010/11/05(金) 09:33:350654641
2010/11/05(金) 09:37:44もし>>645さん見られていたらコードのサンプル載せて頂けませんでしょうか?
よろしくお願いします。
private void button1_Click(object sender, EventArgs e)
{
TextFieldParser parser = new TextFieldParser("C:\\test.csv",
System.Text.Encoding.GetEncoding("Unicode"));
parser.SetDelimiters(",");
parser.TextFieldType = FieldType.Delimited;
using (parser)
{
while (!parser.EndOfData)
{
}
}
}
0655デフォルトの名無しさん
2010/11/05(金) 09:38:11読み込みは行単位?
ここなんかが参考になるかな?
http://www.atmarkit.co.jp/fdotnet/dotnettips/487csvparser/csvparser.html
0656デフォルトの名無しさん
2010/11/05(金) 09:42:21読み込みは行単位です。一度に読み込むとメモリ食うので。
一応、そちらのページを参考に作ったのですがうまく行きませんでした・・・
少ないデータならうまく行けたのですが大きいデータはEndOfDataでやはり例外を
投げてきますorz
0657デフォルトの名無しさん
2010/11/05(金) 09:43:58どのくらいの行数ならいけるとか限界は調べてみた?
0658デフォルトの名無しさん
2010/11/05(金) 09:48:57現在は50x10,000まで完了しております。
0659デフォルトの名無しさん
2010/11/05(金) 09:50:51じゃあ行はそのままで1行あたりのデータ量は増やしてみた?
0660デフォルトの名無しさん
2010/11/05(金) 09:53:110661デフォルトの名無しさん
2010/11/05(金) 09:54:01>100項目600,000行のデータ
これから絞込みしてるのか
でも>>645の報告もあるしなあ・・・
0662デフォルトの名無しさん
2010/11/05(金) 10:14:12整数の代入も、コンパイル結果は数命令に分割されるからね。
読み書き両方やるならロック必須。
0663641
2010/11/05(金) 10:18:59なんというかお恥ずかしながら、EncodingがUnicodeではなくShift-JISでしたorz
半角カナを含むデータを考慮していたのでUnicodeにしていたのですが(序盤のテストデータは半角カナ含)
その100X600,000のデータのみShift-JISとなっておりましたorz
ソフト側で読み込みの際の文字コードを指定する項目をつけることでその問題を回避しようとおもいます。()
スレの皆様ご迷惑おかけしましたm(_ _)m
0664デフォルトの名無しさん
2010/11/05(金) 10:25:42ちゃんと規定に入ってないのはアスキーコードくらいじゃないの?
Shift-JISはアスキーコード互換で一応半角カナ対応してたと思ったんだけど
0665デフォルトの名無しさん
2010/11/05(金) 10:28:17なのでUnicodeを使用したのですが。とりあえず、Shift-JISとUnicodeのどちらか
ユーザーに選べるようにしようかと・・・orz
0666デフォルトの名無しさん
2010/11/05(金) 19:32:29やはりロックは必要なんですね。
ありがとうございました。
0667デフォルトの名無しさん
2010/11/05(金) 22:48:41のようなVB形式の宣言は許されるのですか?
0668デフォルトの名無しさん
2010/11/05(金) 22:49:060669デフォルトの名無しさん
2010/11/05(金) 23:01:420670デフォルトの名無しさん
2010/11/05(金) 23:02:140671デフォルトの名無しさん
2010/11/06(土) 00:00:29ですよね。
VBプログラマ移行のためにMSが糖衣構文を用意しているのか
と思っていました
どうもVB形式の宣言は、見にくくて馴染めないので、良かったです
0672デフォルトの名無しさん
2010/11/06(土) 00:44:23新しい変数が欲しいとき、変数の目的が先にあってその後で型を考えるのが自然だと思う
var x as string のように書ければ、型推論でas stringを省略するかどうかの判断もしやすいはず。
型を先に書くとついついvar一色か全くvar使わないか極端になってしまいがちな気がする。
0673デフォルトの名無しさん
2010/11/06(土) 00:44:59要らないよ。
ってか使い方によるともいえるけど必須ではないぜ。
0674デフォルトの名無しさん
2010/11/06(土) 00:49:35T Method<T>() みたいなジェネリックメソッドの戻り値にも優しく、
実は最近の言語だと型の方が後ろが主流だったり。
まあ、C/C++ からの移行っていう命題があった以上どうしようもないんだけど。
0675デフォルトの名無しさん
2010/11/06(土) 00:53:01スクリプト言語に見えないように、っていうのは設計方針としてあったらしいね
0676デフォルトの名無しさん
2010/11/06(土) 01:08:10遅延バインディングして利用すると、何か問題がありますでしょうか。
異なるFramework間の呼び出しで、問題が発生しないか確信が持てる情報がほしいです。
(当然、利用者は両方のFrameworkが動作する状態になっている事が前提でOKです)
現在、VS C# 2010 Expressで開発してます。
他人の作ったDLLを遅延バインディングして利用するプログラムを作っているのですが、
Reflectionの記述のために、ラッパークラスを書いてます。
メソッドやプロパティの読み書きごとにラッパーの記述が必要になってしまい、超めんどくさい状態です。(量が多い・・・)
で。調べてたら、C#4.0のdynamicが使いたくてうずうずしてるところです(笑)
ただ、DLLが2.0なので、現在はEXEのターゲットフレームワークを2.0にして開発してます。
DLLを4.0でビルドしなおして配布できればいいのですが、それはムリな状況です。
どこか、そのあたりの事を書かれたサイトなどがありましたら、教えていただけるとありがたいです。
よろしくお願いします。
0677デフォルトの名無しさん
2010/11/06(土) 01:19:41全く問題なく動作する保証はないから必ずテストしろ
という感じだったと思う
0678デフォルトの名無しさん
2010/11/06(土) 01:20:14http://msdn.microsoft.com/ja-jp/library/ee461502.aspx
ここら辺見てみたら
0679デフォルトの名無しさん
2010/11/06(土) 01:23:55>>678
おぉ、ありがとうございます。
ちょっと読んできます。
0680デフォルトの名無しさん
2010/11/06(土) 01:29:20そこはあんまり関係ないでしょ
0681デフォルトの名無しさん
2010/11/06(土) 01:34:06うん、関係なかったです(笑)
書かれてる内容は、ビルドしなおしたときの話ですねぇ。しょぼーん。
0682デフォルトの名無しさん
2010/11/06(土) 01:41:13http://download.microsoft.com/download/5/5/b/55b34c74-2b8f-423c-94ad-4e22c0ae60f0/netFramework_migration_1.1_to_3.5.pdf
ちょっと読んでみる。
「.NET Framework 1.1/2.0/3.0/3.5 の混在で注意すべきこと」のところが該当しそう。(まだよんでない)
0683デフォルトの名無しさん
2010/11/06(土) 01:43:040684デフォルトの名無しさん
2010/11/06(土) 01:47:57■.NET Framework のバージョンが異なるアセンブリ間の呼び出し
.NET Framework 2.0 で作成されたEXE より呼び出された.NET Framework
1.x で作成されたアセンブリは、アプリケーション構成ファイル(アプリ
ケーション名.exe.config)で指定しなかった場合、CLR2.0 上で動作します。
アプリケーション構成ファイルはアプリケーションで1 つしか持てない
ことと、CLR は1 つのプロセスに1 つしかロードできないため、最初に起
動するプロセスがロードするCLR のバージョンを決定します。
----
つまり質問の例だと、2.0で動いてたDLLは4.0のEXEから呼び出すと、4.0上で動くということか。
これは想像してなかったなぁ。
0685デフォルトの名無しさん
2010/11/06(土) 01:51:22あった。このあたりっぽい。
http://msdn.microsoft.com/ja-jp/library/s80xxs7s(v=VS.80).aspx
0686デフォルトの名無しさん
2010/11/06(土) 02:05:07http://msdn.microsoft.com/ja-jp/library/8477k21c.aspx
0687デフォルトの名無しさん
2010/11/06(土) 02:09:16やっと、4.0系の話が出てるところを見つけた。
http://msdn.microsoft.com/ja-jp/library/ee518876.aspx
0688デフォルトの名無しさん
2010/11/06(土) 02:11:330689デフォルトの名無しさん
2010/11/06(土) 02:25:04すんまそん(;w;
探しても探しても、探し方が悪かったようで、ぜんぜん見つからなかったのに、
PDFで「サイドバイサイド実行」の言葉を知ってから、わんさか出てくる有様で・・・。
結論としては、>>687のアドレスが正解です。
.NET Framework のバージョンによって、このあたり大きく挙動が異なるようです。
まあ、互換としては大丈夫そう、ってことがわかりました。 でも、>>677さんの言うとおり、テストは必要ですね。
あと、先に書いた
「2.0で動いてたDLLは4.0のEXEから呼び出すと、4.0上で動く」
は、古い情報を元に憶測した内容で、間違っていました。
実際には、
「2.0で動いてたDLLは4.0のEXEから呼び出すと、Framework2.0で動こうとするがFramework2.0がない場合は動作するFrameworkを探す。
また、明示的にアプリケーション構成ファイルを使って、動作するFrameworkを指定することもできる。」
でした。
まあ、なんていうか、この対応表みると、世界中のクライアントは「4.0いれとけ」ってことですかね(笑)
とりあえず、自己解決しましたので、お付き合いありがとうございました。
0690デフォルトの名無しさん
2010/11/06(土) 02:54:39であってるよ。
そうしないとStringのような基本的なオブジェクトのバージョン違いが混在してしまう。
0691デフォルトの名無しさん
2010/11/06(土) 07:53:37おいおい解釈が間違いまくってるぞ。
0692デフォルトの名無しさん
2010/11/06(土) 08:47:33intABCとかstrMOJIとか書く人はどうなるの?w
0693デフォルトの名無しさん
2010/11/06(土) 09:31:03今更ハンガリアンは考えなくていいだろ。
型を前に書くのはCと文法をあわせたためで、新しい言語では後ろに書くものが多い。
Goとかそうだよね。
var aaa int;
func xxx(ar [] float) {
といった表記になる。
0694デフォルトの名無しさん
2010/11/06(土) 09:37:492.0で動いてたEXEはFramework2.0で動こうとするが、4.0しかインストールされていない場合は動作しない。
明示的にアプリケーション構成ファイルを使うことで、4.0で動作させることができる。
4.0のEXEから2.0のDLLを使う場合は何もしなくても4.0の上で動く。
0695デフォルトの名無しさん
2010/11/06(土) 09:44:58.NETアプリケーションそのものには関係ない。サイドバイサイドもこの場合関係ない。
最も注意が必要なのはC++/CLIで書かれたDLL。CLRのバージョンが変わるとどうやっても絶対に動かない。
0696デフォルトの名無しさん
2010/11/06(土) 13:07:53今、見直した。
「マネージ COM コンポーネントの開発者」のところの表だったか(汗
夜中に眠たい目をこすりながら見るもんじゃないね;
そうか、DLLといっても、そこを分けて考えないとダメなのね。
0697デフォルトの名無しさん
2010/11/06(土) 14:41:12@ITで.NET4.0新機能として複数CLRのロードとあったんですよ。
1プロセス内にCLR2と4をロードするらしいんですが、
具体的にどんな効果がありますか?
互換性問題の多くはクラスライブラリの変更だと思うので…
0698デフォルトの名無しさん
2010/11/06(土) 14:51:34そのプラグインが内部でCLRを読み込んで使ってたとして
CLR2を使ってるプラグインとCLR4を使ってるプラグインを同時に読み込んでも問題がないということ。
.NETアプリケーションを作る上では全く関係ありません。
0699デフォルトの名無しさん
2010/11/06(土) 15:23:410700デフォルトの名無しさん
2010/11/06(土) 15:28:46これに.NET製のCOMを使用できるようになった。
0701デフォルトの名無しさん
2010/11/06(土) 15:43:30ttp://blogs.msdn.com/b/junfeng/archive/2005/11/18/494572.aspx
これは解決されたってこと?
それともCLR1.1を読み込んだあとにCLR2を読み込んだ場合は解決されていないのか
0702デフォルトの名無しさん
2010/11/06(土) 16:06:340703701
2010/11/06(土) 16:11:09ttp://msdn.microsoft.com/ja-jp/magazine/ee819091.aspx
>1 プロセスに複数のランタイムを混在できるようになったことで、
>コンピューター上の任意のアプリケーションにより、インプロセスで
>実行されるものも含め、マネージ シェル拡張の作成を基本的に
>サポートできるようになりました。
>ただし、.NET Framework 4 よりも古いバージョンを使用して作成された
>シェル拡張は現在でもサポートされません。それらの古いバージョンの
>ランタイムが他のバージョンと併せてプロセス内に読み込まれることはなく、
>多くの場合エラーを誘因するためです。
0704デフォルトの名無しさん
2010/11/06(土) 16:53:56それ以外はOKなの?
0705デフォルトの名無しさん
2010/11/06(土) 16:59:22何にせよ非マネージドから呼ばれる時の問題
0706デフォルトの名無しさん
2010/11/06(土) 17:09:540707デフォルトの名無しさん
2010/11/06(土) 17:44:330708デフォルトの名無しさん
2010/11/06(土) 18:49:39気にするな、君のプログラムだってすぐ落ちるだろ。
0709デフォルトの名無しさん
2010/11/06(土) 19:26:010710デフォルトの名無しさん
2010/11/06(土) 20:16:45俺のとこも一時期不安定だったけど最近は何故か安定してる。
0711デフォルトの名無しさん
2010/11/06(土) 20:27:47なので左手は手動セーブを覚えてるw
0712デフォルトの名無しさん
2010/11/06(土) 21:35:530713デフォルトの名無しさん
2010/11/06(土) 21:57:12>>712はあの伝説の「真ん中の足セーブ」の使い手なのか・・・
0714デフォルトの名無しさん
2010/11/06(土) 22:12:330715デフォルトの名無しさん
2010/11/06(土) 22:34:38まあ2008でも落ちたりするけどな。
0716デフォルトの名無しさん
2010/11/06(土) 22:51:220717デフォルトの名無しさん
2010/11/06(土) 22:52:05卑猥すぎるw
0718デフォルトの名無しさん
2010/11/06(土) 22:53:000719デフォルトの名無しさん
2010/11/06(土) 22:56:590720デフォルトの名無しさん
2010/11/07(日) 04:57:56ひどい質問ばかりだ
0721デフォルトの名無しさん
2010/11/07(日) 05:32:33これなんて質問ですらない
完全に私物化、公開メール
0722デフォルトの名無しさん
2010/11/07(日) 12:46:17本当にありがとうございました
0723デフォルトの名無しさん
2010/11/08(月) 03:14:51煽りとかじゃなくて、.NETあまり使ってないからよくわからないんだ
PowerShellも.NET使ってたよね
916 名前:デフォルトの名無しさん[sage] 投稿日:2010/11/06(土) 13:49:09
MSが.NETから徐々に撤退し始めたからどうなることやら
0724デフォルトの名無しさん
2010/11/08(月) 03:47:02誰ともわからない俺が嘘だ、と言ったら信じるのかい?
誰ともわからない奴が撤退し始めた、と言ったら信じるのかい?
0725デフォルトの名無しさん
2010/11/08(月) 03:47:38今.NET以外何も無いだろ
0726デフォルトの名無しさん
2010/11/08(月) 05:36:23という話を「MSがSilverlight撤退」と書いた売名記事が元になって
完全な誤報を鵜呑みにして、都合のいいように飛躍させたら.NET撤退になったのだろうか?
0727デフォルトの名無しさん
2010/11/08(月) 06:11:200728デフォルトの名無しさん
2010/11/08(月) 06:58:27安心して開発して欲しいってメッセージを良くもまぁMSがSLから撤退と取れたもんだわな
そしてお次は売名記事に踊らされたアンチの馬鹿がMSが.NETから撤退と煽り始めたわけか
0729デフォルトの名無しさん
2010/11/08(月) 07:10:56このスレか
0730デフォルトの名無しさん
2010/11/08(月) 08:11:36VSで使ってるのは知ってるけど、いまどきのOfficeは.netなのかな
0731デフォルトの名無しさん
2010/11/08(月) 08:30:49パンピー向けが置き換わるのは3年後じゃね
0732デフォルトの名無しさん
2010/11/08(月) 08:38:37MSじゃないけど
0733デフォルトの名無しさん
2010/11/08(月) 08:46:260734デフォルトの名無しさん
2010/11/08(月) 09:40:170735デフォルトの名無しさん
2010/11/08(月) 09:57:15基幹部分をネイティブで作って、プラグインや機能拡張部分に.NETを使っている。
0736デフォルトの名無しさん
2010/11/08(月) 10:22:190737デフォルトの名無しさん
2010/11/08(月) 11:15:220738デフォルトの名無しさん
2010/11/08(月) 11:20:48いつもループしてるけど、GCを廃止するとか型システムや
基本ライブラリをぜんぜん別物に作り変えないと無理。
0739デフォルトの名無しさん
2010/11/08(月) 12:05:24アホかと思う
0740デフォルトの名無しさん
2010/11/08(月) 12:23:06mkbundle --static hello.exe -o hello
すっごく、大きいです。さらにパフォもよくない。
0741デフォルトの名無しさん
2010/11/08(月) 12:31:08コーディングでも変数名に意味不明な略語使っちゃうのかね。
0742デフォルトの名無しさん
2010/11/08(月) 12:34:380743デフォルトの名無しさん
2010/11/08(月) 12:41:33そこそこ人気のある言語で誰でも考えることなのに未だにそういうのが出てこないってことは
結局メリットも需要も無いんだよね
0744デフォルトの名無しさん
2010/11/08(月) 13:04:35難しくないというというソースをくれ。
難しくないならC#より先にjavaのネイティブ版がでてきそうなものだけど。
0745デフォルトの名無しさん
2010/11/08(月) 13:56:06でもC#を実装したところで.NETアプリが動くわけじゃないからあんまり意味がなくて、
CLIを実装する方がずっとメリットがある。
Javaのネイティブコンパイラなら現にいくつかあるよ。
0746デフォルトの名無しさん
2010/11/08(月) 14:08:04うん、お前には難しいね。
多分俺にも。
0747デフォルトの名無しさん
2010/11/08(月) 14:27:39gcjかな?具体的に上げてよ。
そのレベルならmonoが既に実現済みだが、実用じゃないだろう。
あとBCLやGCや型システムも含めて言語仕様だと思うが、
それ無視して普通の言語といってるなら見当違い。
0748デフォルトの名無しさん
2010/11/08(月) 14:36:390749デフォルトの名無しさん
2010/11/08(月) 14:57:16言語としての上っ面が書いてあるだけだ
そりゃ言語仕様書実装したところで全く実用にはならんけど、それは最初からそう言ってる
0750デフォルトの名無しさん
2010/11/08(月) 16:19:55そんなの誰も欲しがらないけどさ
0751デフォルトの名無しさん
2010/11/08(月) 16:24:43はい論破
0752デフォルトの名無しさん
2010/11/08(月) 16:28:03の意味は.NET上のC#がそのままネイティブコンパイルできて、
さらに.NETのインストールも不要でスピードも軽量さもC並ということだろ。
0753デフォルトの名無しさん
2010/11/08(月) 16:30:04妄想が激しいね
0754デフォルトの名無しさん
2010/11/08(月) 16:30:32あぁ、一言抜けてたわ。
作れるレベルに達している人が誰も欲しいと思っていない。
欲しいなら作れば?お前にはできないだろうけどwww
0755デフォルトの名無しさん
2010/11/08(月) 16:34:420756デフォルトの名無しさん
2010/11/08(月) 16:37:49あぁ、一言抜けてたわ。
これは後付けではない。
0757デフォルトの名無しさん
2010/11/08(月) 16:37:510758デフォルトの名無しさん
2010/11/08(月) 16:38:59論破厨は話を混乱させるだけ道化だと思うから相手にしないほうがいいよ。
0759デフォルトの名無しさん
2010/11/08(月) 16:40:070760デフォルトの名無しさん
2010/11/08(月) 16:42:57これは笑った
まずお前の実力を示すことかけよ
0761デフォルトの名無しさん
2010/11/08(月) 16:43:35これは笑った
まずお前の実力を示すことかけよ
0762デフォルトの名無しさん
2010/11/08(月) 16:44:50最初から真面目に話すような内容なんてなかっただろ。
馬鹿なアンチを煽って遊んでればいい。
0763デフォルトの名無しさん
2010/11/08(月) 16:46:30同一人物か、これは笑った。
http://hibari.2ch.net/test/read.cgi/tech/1286890729/940-941
0764デフォルトの名無しさん
2010/11/08(月) 16:48:15これは笑った
まずお前の実力を示すことかけよ
0765デフォルトの名無しさん
2010/11/08(月) 16:48:57はずれ
これは笑った
0766デフォルトの名無しさん
2010/11/08(月) 16:49:400767デフォルトの名無しさん
2010/11/08(月) 16:50:430768デフォルトの名無しさん
2010/11/08(月) 16:56:30アンチはいつも自分に都合が悪くなると必死に話を逸らそうとするw
0769デフォルトの名無しさん
2010/11/08(月) 16:58:13ところで何の話だっけ
0770デフォルトの名無しさん
2010/11/08(月) 17:04:290771デフォルトの名無しさん
2010/11/08(月) 17:09:500772デフォルトの名無しさん
2010/11/08(月) 18:53:08・C/C++のように高速なネイティブコードを出力する
・C/C++とのバイナリ互換
・ガベージコレクション
・デリゲート
・テンプレート
これらの機能を備えるさいきょう言語といえば?
そう!それがぼくらのD言語!
C#おせー、M$糞だー、とかいっちゃうスーパーハカーのみなさんは
今すぐD言語へレッツゴー!
0773デフォルトの名無しさん
2010/11/08(月) 19:00:430774デフォルトの名無しさん
2010/11/08(月) 19:01:360775デフォルトの名無しさん
2010/11/08(月) 19:14:44D言語は無限ベータ版を何とかしろw
0776デフォルトの名無しさん
2010/11/08(月) 19:15:03C++/CLIを忘れてる
0777デフォルトの名無しさん
2010/11/08(月) 22:32:06C++/CLIはネイティブもガベージコレクションも両方出来るけど、同時にはできないだろ。
ガベージコレクションを求めてref classで書くとネイティブの速度が手に入らない。
0778デフォルトの名無しさん
2010/11/08(月) 22:36:04それはハッカーだろ
スーパーハカー様をナメるなよ
0779デフォルトの名無しさん
2010/11/08(月) 22:44:27Dはそのへん勘違いしてるよ
0780デフォルトの名無しさん
2010/11/09(火) 00:44:180781デフォルトの名無しさん
2010/11/09(火) 00:49:010782デフォルトの名無しさん
2010/11/09(火) 00:51:120783デフォルトの名無しさん
2010/11/09(火) 01:02:02B - B
C - C/C++
D - D
E - Eiffel
F - Fortran
G - Groovy
H - Haskell
I - Intercal
J - Java
K - K
L - Lisp
M - ML
N - NESL
O - Objective-C
P - Perl
Q - Q
R - Ruby
S - Smalltalk
T - Tcl
U - Unicon
V - VHDL
W - Water
X - XPL
Y - Yorick
Z - Z
0784デフォルトの名無しさん
2010/11/09(火) 01:48:10H - HQ9+
0785デフォルトの名無しさん
2010/11/09(火) 02:08:16JavaVMやCLRがインタプリタだと思ってるのか?
0786デフォルトの名無しさん
2010/11/09(火) 02:35:34なんでインタプリタがでてくるんだ?
0787デフォルトの名無しさん
2010/11/09(火) 02:41:08GC使うならネイティブで書いても大して変わらん。
VMが遅いというのはインタプリタ時代にできたイメージ。
0788デフォルトの名無しさん
2010/11/09(火) 02:59:42>>776 おいおいC++/CLIもわすれるなよ
>>777 C++/CLIもGCつかうならCLRじゃん
こういう文脈だからそういうのは>>772にいうべき
そして>>772を書いたのは俺
0789デフォルトの名無しさん
2010/11/09(火) 03:02:12C互換の書き方をしてもILをはくよ。
GCは使わないけど、ネイティブとも言えない。
0790デフォルトの名無しさん
2010/11/09(火) 03:13:22自分の中の何かが崩れ去った。
0791デフォルトの名無しさん
2010/11/09(火) 03:13:500792デフォルトの名無しさん
2010/11/09(火) 07:31:00JIT完了した後はCと殆ど変わらないほど速いのは承知。
0793デフォルトの名無しさん
2010/11/09(火) 08:28:31関連アセンブリをNGenしとけばmscorjit.dll自体の読み込みをスキップする。
コールドスタートアップは.NET 3.5 SP1および.NET 4で随分改善した。
そもそもVista以降ではSuperFetchがあるため問題にならない。
後は時間の問題。
0794デフォルトの名無しさん
2010/11/09(火) 13:29:05起動がだいぶ速くなったよね
0795デフォルトの名無しさん
2010/11/09(火) 13:59:570796デフォルトの名無しさん
2010/11/09(火) 14:03:370797デフォルトの名無しさん
2010/11/09(火) 14:07:01使う側としては当然だろ?
0798デフォルトの名無しさん
2010/11/09(火) 14:23:59傲慢になるな
0799デフォルトの名無しさん
2010/11/09(火) 14:33:35それともVB6よりも遅い?
0800デフォルトの名無しさん
2010/11/09(火) 15:26:06最近のは内部的にJITみたいなことやってるし。
0801デフォルトの名無しさん
2010/11/09(火) 16:10:02Perlはバイトコードコンパイラ+VMなので、ただのインタプリタよりは速いが
動的型でJITまではやらないので、C#やJavaよりは遅い
しかし、もともとI/O律速な処理や、
Cで実装されているランタイムにほぼ丸投げできるような処理の場合は
言語の処理性能の遅さは問題にならない
そういう場合にはむしろC++やC#で適当に書いたコードより速いこともある
書くのが楽だし起動時間もC#やJavaより速いので、使いどころを弁えていれば便利
もちろん数値計算だとか、ピクセル単位でのグラフィックスの操作とか、
バイト単位でのバイト列の処理、みたいなものをPerlで手書きしたら
普通に遅い
この手の言語では(Cで書かれた)ランタイムと、その言語で記述されたコードの
性能差が大きいので、自前で何かやればやるほど遅くなる
最後に、VB6とPerlでは使いどころが違いすぎるので
その比較はあまり意味が無いな
0802デフォルトの名無しさん
2010/11/09(火) 17:27:07へ〜しらなんだ
勉強になった
VB6とPerlじゃなく
せめてASPとPerlあたりで聞くべきだったかな?
0803デフォルトの名無しさん
2010/11/09(火) 18:57:32CGIとしてPerlを使う場合の話です。
PerlのCGIは基本的にとても遅い。
理由はHTTPリクエストを受信する(=端末がWebページを要求する)度に巨大なインタープリタが起動するから。
プログラムを起動する処理は本質的に遅いので、CGIという実行形態自体が非常に遅い。
ただしApache+mod_perlのような環境ではPerlのインタープリタはメモリ上でApache本体とドッキングしている
のでそれなりに速いはず。
ASPやJ2EEはインタープリタをあらかじめ起動しておき、さらにWeb画面を生成するモジュール
もメインメモリ上に事前に展開する方式でHTTPリクエストを受信したタイミングで何かのプログラムやファイルが
読み込まれることは全くない。さらにJITの効果によって繰り返し実行されるコードがメモリ上で機械語化されて
いくので連続稼動時間が長くなればなるほど処理効率が改善する。
CGIがバッチファイルみたいな逐次起動型なのに対して、ASP・J2EEは常駐プロセスなので、頻繁に読み込む
設定ファイルやDB接続は、事前にOPEN(または大域変数にプリロード)しておくことができる。
例えば設定ファイルで挙動をカスタマイズできるCGIを組む場合、設定ファイルの読み込みはリクエストが来る
たびに原則として毎回実行する必要があるが、ASPやJ2EEではWebサーバー起動時に一度だけ設定ファイル
を読み込み、その内容を解析した結果をグローバルな変数に入れてやればよいので処理効率も非常によい。
ただし常駐プロセスはいらなくなったファイルやメモリや別のマシンへの接続やらを開放し忘れていると悲惨な
ことになるので、そこだけは要注意。
0804デフォルトの名無しさん
2010/11/09(火) 19:58:45引数があるのにGetとメソッドの名前をつけるのは反則ですか?
0805デフォルトの名無しさん
2010/11/09(火) 20:13:110806デフォルトの名無しさん
2010/11/09(火) 20:26:330807デフォルトの名無しさん
2010/11/09(火) 20:34:18メソッド名が「Of」で終わるとか引数が添え字の役割を果たす場合はおかしくないんじゃね?
GetHostByName(String name)とか。
0809デフォルトの名無しさん
2010/11/09(火) 20:38:42調子に乗るもんじゃないな。全くw
0810デフォルトの名無しさん
2010/11/09(火) 20:51:03そして、使い分け方も教えてください
0811デフォルトの名無しさん
2010/11/09(火) 21:03:05~ClassName() { }のようなメソッドをC#では正式にはデストラクタと呼びます。
しかし、最近ではデストラクタではなくファイナライザと呼ばれることが多いようです。
理由としては、・Javaではそう呼ばれているから ・C++でいうデストラクタとは意味が違うから
・C++/CLIではそれぞれ別のものとして存在するから などが考えられます。
0812デフォルトの名無しさん
2010/11/09(火) 21:05:420813デフォルトの名無しさん
2010/11/09(火) 21:10:58別に馬鹿にしてるわけじゃなくて、一般に使わないほうが良い。
どうしても必要な場合はあるけど、それが必要になるころには
ファイナライザがどういうものかくらいは十分理解できてると思う。
0814810
2010/11/09(火) 21:16:15やっぱり、C++のデストラクタとは違うのね
>>813
/* 設定を保持するクラス */
static class Setting {
static Setting(){ /* 設定ファイルを読み込む */ }
static ~Setting(){ /* 設定ファイルを書き込む */ }
}
こんな事をやりたいんです
デストラクタでいろいろできるな〜って思ったからです
0815デフォルトの名無しさん
2010/11/09(火) 21:18:010816デフォルトの名無しさん
2010/11/09(火) 21:18:30そういうのにはDisposeとusingを使う
0817デフォルトの名無しさん
2010/11/09(火) 21:19:28その実装はちょと危険だな
0818デフォルトの名無しさん
2010/11/09(火) 21:23:39Settingクラスのファイナライザが動くより早く、
設定ファイルを読み書きするためのStreamクラスが
既にGCされてしまっている可能性があるため。
0819810
2010/11/09(火) 21:25:35やっぱり、デストラクタ/ファイナライザはリソースを解放すためのものであって
楽するものじゃないよね
>>816
static classにusingなんて使えるのですか?
それに、disposeをすると何がおいしいんですか
>>817
それ俺も考えていた
0820デフォルトの名無しさん
2010/11/09(火) 21:31:080821デフォルトの名無しさん
2010/11/09(火) 21:32:15staticデストラクタなんてないよ。
0822デフォルトの名無しさん
2010/11/09(火) 21:35:22C++でもありえない発想だと思うが
0824デフォルトの名無しさん
2010/11/09(火) 21:44:510825デフォルトの名無しさん
2010/11/09(火) 23:42:28間違ってもGCにさせるものではない
0826デフォルトの名無しさん
2010/11/10(水) 00:43:48そんなに起動遅いのが嫌ならメモリ32G積んで365日起動しっぱなしにしとけよウンカスが
0827デフォルトの名無しさん
2010/11/10(水) 00:58:00みたいなこと書いてたけどそんなに違うの?
0828デフォルトの名無しさん
2010/11/10(水) 01:05:190829デフォルトの名無しさん
2010/11/10(水) 01:22:18でも終わったOSにしがみ付いてウダウダ言ってる奴らはマジ馬鹿
お前らの存在がソフトウェアの売価を上げ質を落としている事に気づけ
0830デフォルトの名無しさん
2010/11/10(水) 03:53:09ないよ。
0831デフォルトの名無しさん
2010/11/10(水) 04:18:04あるよ
http://msdn.microsoft.com/ja-jp/library/system.object.finalize.aspx
> 2 つのオブジェクトのファイナライザーが特定の順序で実行されることは保証されません。
> これは、1 つのオブジェクトがもう 1 つのオブジェクトを参照している場合にも同様です。
> つまり、オブジェクト A がオブジェクト B を参照しており、どちらのオブジェクトにも
> ファイナライザーがある場合、オブジェクト A のファイナライザーが開始した時点で
> オブジェクト B が既に終了していることがあります。
0832デフォルトの名無しさん
2010/11/10(水) 08:11:01問題になるのはstaticでないSettingクラスが既にStreamを開いていた時にSettingごと
参照を失った時だけ。今回はあり得ない。
ちなみにSettingデストラクタの中で新たにStreamを開くと、既に参照がないから、
ファイル読み書き中にStreamのメモリがGCされる、、のかな?
0833832
2010/11/10(水) 08:15:260834デフォルトの名無しさん
2010/11/10(水) 08:21:29それはファイナライザが実行される可能性があるという話。
ファイナライザがないマネージオブジェクトならいじっても問題ない。
なぜならファイナライザ完了までメンバはGCされないことは保証されているから。
まあ今回はFileStreamだろうからダメなんだけどね。
0835831
2010/11/10(水) 08:59:35俺間違ったこと書いてないよね?なんか自信なくなってきた
余談だがFormとかのDisposeがBoolの引数受け取るのは
呼び出しがデストラクタからかどうかを判断するためで
その場合はほかのオブジェクトにアクセスしないようになっていたような
0836デフォルトの名無しさん
2010/11/10(水) 09:01:290837デフォルトの名無しさん
2010/11/10(水) 11:54:50http://ideone.com/blEyy
0838デフォルトの名無しさん
2010/11/10(水) 12:58:250839デフォルトの名無しさん
2010/11/10(水) 13:00:270840デフォルトの名無しさん
2010/11/10(水) 13:53:32ファイナライザを直接使うとマーシャリング周りが面倒だ
0841デフォルトの名無しさん
2010/11/10(水) 16:37:16>>834が言ってる通り、ファイナライザが呼び出された時点で既に自身が参照してるオブジェクトが
GCに回収されていることはありえない。
ファイナライザが呼び出されている可能性があるというだけ。ファイナライザを持たないオブジェクトならアクセスしても実際には問題はない。
0842841
2010/11/10(水) 16:42:15アクセス先のクラスがファイナライザを持っていないとしても、
そのオブジェクトがファイナライザを持った別のオブジェクトを利用している可能性がある。
だから、参照先のクラスの実装についての知識が無い限り、一般には
ファイナライザ内で他のマネージオブジェクトにアクセスしてはいけない。
0843デフォルトの名無しさん
2010/11/10(水) 18:10:30はメンバー変数に保持しない。(Listの要素やDictionalyの中もダメ)
2.上記を満たせないクラスはIDisposableを実装し、Dispose()メソッド内で重要な
リソースを開放する。またDispose()は絶対に例外をスローしないように実装する。
(エラー画面を出すことより問題となるリソースの開放を優先。どうしてもthrow
したければ、その前にすべてのDisposableな変数をDispose()した後にthrowする)
3.Finalize()はDisposeし忘れの検知〜必要ならDispose()+Debug.WriteLine()程度
しかやらない。
【具体例】
class MyClass : IDisposable {
private Stream anyStream1 = ・・・・;
private Stream anyStream2 = ・・・・;
private bool disposed = false;
public void Dispose() {
IDisposable[] ary = { this.anyStream1, this.anyStream2 };
foreach ( IDisposable target in ary ) {
if ( ary[i] != null ) try { ary[i].Dispose(); } catch ( Exception ex ) { ・・・・ }
this.disposed = true;
}
protected override void Finalize() {
// Debug.Assert(this.disposed); // <- 厳しい人向け
if ( ! this.disposed ) {
this.Dispose();
Debug.WriteLine("MyClassのインスタンスがタイミングでDisposeされていません。");
}
}
}
0844デフォルトの名無しさん
2010/11/10(水) 18:29:450845デフォルトの名無しさん
2010/11/10(水) 18:39:16すまん間違ってる。
foreachなのにary[i]じゃコンパイルできないな。
ary[i]はtargetの間違いです。閉じ中括弧も足りないが意味わかるでしょ。
0846デフォルトの名無しさん
2010/11/10(水) 19:42:20デストラクタとして定義する必要があります
0848デフォルトの名無しさん
2010/11/10(水) 20:17:520849853
2010/11/10(水) 20:42:28もうこねーよヽ(`Д´)ノウワァァァン
0850デフォルトの名無しさん
2010/11/10(水) 21:47:530851デフォルトの名無しさん
2010/11/11(木) 15:53:31これで日付の形式が間違っていますエラーが出るんだけど何故?
0852デフォルトの名無しさん
2010/11/11(木) 16:42:070853853
2010/11/11(木) 16:48:400854851
2010/11/11(木) 17:42:36実は変換元文字列の方、日付と時間の間にスペースが複数挟まってて
DateTimeStyles.AllowInnerWhiteを付けたらおkになった
ついでと言ってはなんだけど別の質問
Regexで\bがちゃんと機能してない(スペースそのものを置けばマッチするが\bだとマッチしない)んだけど俺んとこだけ?
0855デフォルトの名無しさん
2010/11/11(木) 18:09:1112345
1234_
123_5
123__
こんなテキストデータ"data.txt"があったとする。
(_は空白)
string[] line = System.IO.File.ReadAllLines("date.txt",);
こんなかんじで読み込むと
line[0]:12345
line[1]:1234_
line[2]:123\t5
line[3]:123\t
という結果になります。
4文字目に空白はいると、それ以前の空白を含めたtab扱いになるんです。
文字コードはunicode、shift_jisにて確認。
これは回避しようが無いのかしら?
0856デフォルトの名無しさん
2010/11/11(木) 18:12:15\bってどうやって書いてる?
0857デフォルトの名無しさん
2010/11/11(木) 18:15:35仕様です
んなわけあるかああああ
もっぺん隅から隅まで見直してみ
0858デフォルトの名無しさん
2010/11/11(木) 18:20:55それ普通にテキストファイルの方でタブ使ってるだけだろw
0859デフォルトの名無しさん
2010/11/11(木) 18:25:50クライアントの設定を変えないように実装したいのですが将来のバージョンアップでレジストリ等の
設定が増減することが予想される場合に、例えば一度にVer1→4のようにするのか、それとも
そのソフトのVerを調べてVer2→3→4のように適用していくのか・・・
一度にVer1→4のほうがよさげですが・・・
変な質問でごめんなさいorz
みなさんのバージョン管理の方法が気になりまして・・・
0860デフォルトの名無しさん
2010/11/11(木) 18:28:100861859
2010/11/11(木) 18:30:54あっ、具体的に将来のバージョンアップにどのように対処しているか、
または現行のソフトのバージョンアップはどのように行っているのか
教えていただければ><
0862デフォルトの名無しさん
2010/11/11(木) 18:41:07スペースで代用可能だと思ってるのなら\bの意味を間違えてる
たとえば入力が"i like banana"でパターンを"i\blike"にしてもマッチしない
"\bi\b"にすると最初のi一文字だけがマッチする
0863デフォルトの名無しさん
2010/11/11(木) 18:41:490864855
2010/11/11(木) 18:43:12わかったああああああああああああ!
エディタが、保存するときに勝手にtab変換してた。死にたい。
>>857,858
ありがとう;;
0865デフォルトの名無しさん
2010/11/11(木) 18:50:27一番初めにリリースしたやつはバージョン3
次にリリースするやつはバージョン3.1
その次は3.14
さらに次は3.141
これ結構有名だから覚えとくといいよ
>>864
恐ろしい罠だな、原因分かってよかったな
0866デフォルトの名無しさん
2010/11/11(木) 18:57:010867デフォルトの名無しさん
2010/11/11(木) 19:12:290868デフォルトの名無しさん
2010/11/11(木) 19:20:50自分の場合設定はXMLシリアライザーで保存してるから
以前がどのバージョンだったかはあまり問題にならない
詳しくは此処を見てくり
http://msdn.microsoft.com/ja-jp/library/ms229752(VS.80).aspx
0870デフォルトの名無しさん
2010/11/11(木) 19:47:11>>862のやつはあたまにiついてるぞ
0871723
2010/11/11(木) 20:11:25マイクロソフトが戦略変更。HTML5が唯一のクロスプラットフォーム、SilverlightはWindows Phone 7のプラットフォームに − Publickey
http://www.publickey1.jp/blog/10/html5silverlightwindows_phone_7.html
Microsoft: Our strategy with Silverlight has shifted | ZDNet
http://www.zdnet.com/blog/microsoft/microsoft-our-strategy-with-silverlight-has-shifted/7834
Silverlightは死ぬ? MS幹部の発言を受けて悲観論が噴出 - スラッシュドット・ジャパン
http://slashdot.jp/article.pl?sid=10/11/05/0514206
ええ!?これが元ネタだったの?
Silverlightが撤退扱いもひどいし、そこから.net撤退って風説の流布もいいところ・・・
JavaFX撤退と言われても全然驚かないけど、Javaはまだ死なないだろう
これで.net撤退などと、そんなこといったら・・・
0872デフォルトの名無しさん
2010/11/11(木) 20:14:390873デフォルトの名無しさん
2010/11/11(木) 20:15:360874デフォルトの名無しさん
2010/11/11(木) 20:16:07> CGIとしてPerlを使う場合の話です。
いつの時代の話だよ
0875デフォルトの名無しさん
2010/11/11(木) 20:41:26ここにスペース入ってるのか カキカキ
入ってねーじゃねーか! カキカキ
やっぱり入ってるじゃねーか! カキカキ
エディタで改行したときインデントされてた罠 (´・ω・`)
0876デフォルトの名無しさん
2010/11/11(木) 21:32:47http://www.atmarkit.co.jp/fdotnet/chushin/introwpf_06/introwpf_06_03.html
これのList7で
((DelegateCommand)OkCommand).RaiseCanExecuteChanged();
これがある意味がわからないんですが、どうしてですか?
これがなくてもコマンドが実行されます
0877デフォルトの名無しさん
2010/11/11(木) 21:33:17「ありがとうございます」だろ!!
0878デフォルトの名無しさん
2010/11/11(木) 22:12:40お前にはがっかりだ…
0880デフォルトの名無しさん
2010/11/11(木) 22:39:000881デフォルトの名無しさん
2010/11/11(木) 23:04:43空白文字ならこうじゃね?
"^i\slike\sbanana$"
\bは単語境界
http://msdn.microsoft.com/ja-jp/library/h5181w5w.aspx#WordBoundary
0882デフォルトの名無しさん
2010/11/11(木) 23:34:490883デフォルトの名無しさん
2010/11/12(金) 00:17:17と打ち出しつつ、IE9にはHTML5の独自仕様盛りだくさんです!ブラウザはIE使ってね(ハート
とかだったら面白いのに
0884876
2010/11/12(金) 00:18:570885デフォルトの名無しさん
2010/11/12(金) 00:26:52意味がわからないのは、お前が馬鹿だから
0886デフォルトの名無しさん
2010/11/12(金) 00:31:340887876
2010/11/12(金) 00:39:090888876
2010/11/12(金) 00:49:12>コマンドを実行するかどうかに影響するような変更があった場合に発生します
MSDNにはこれしか説明がないです
変更ってなんですか?
ファイルを読み込むコマンドを作り
CanExecuteでファイルがあるかないかだけチェックしていれば
ファイルを削除した場合
event EventHandler CanExecuteChanged
が無くても普通にボタンが半透明になってクリックできないようになってるし
ファイルがある場合はちゃんと読み込める
0889851
2010/11/12(金) 14:35:54むむむ
[境界]は[空白]によって生じるんでないの?
\bの意味を取り違えてたことは理解したけど、今度は\bの使い道がわからなくなった
0890デフォルトの名無しさん
2010/11/12(金) 15:41:550891851
2010/11/12(金) 18:51:05でも"\bi\b"は良くて"^i\b"はダメなのよな?
厳密には"\bi\b\s"でないといかんと
しかし\b使わないパターンだと"^i\s"でおkと
・・・やっぱり使い道なくね?
0892デフォルトの名無しさん
2010/11/12(金) 19:12:18>\b アンカーは、部分式を単語の先頭または末尾ではなく単語全体に一致させる目的で頻繁に使用されます。
0893855
2010/11/12(金) 19:24:54ありがとうございます
0894デフォルトの名無しさん
2010/11/12(金) 20:45:58勘違いしてるような気がするのは俺だけか。
i like banana
だったら \bi\b も ^i\bも同じく先頭のiだけ
\bi\b\s は "i "やん。 厳密にはとか意味が分からん。
0895デフォルトの名無しさん
2010/11/12(金) 22:36:26逆に¥bを使わずに、単語のみをマッチさせるパターンって難しいような
0896デフォルトの名無しさん
2010/11/12(金) 22:41:470897デフォルトの名無しさん
2010/11/12(金) 22:44:400898デフォルトの名無しさん
2010/11/12(金) 23:00:480899デフォルトの名無しさん
2010/11/12(金) 23:37:29Q1. static void Swap<T>(ref T a, ref T b) { T tmp = a; a = b; b = a; } って標準クラスライブラリに無いの?
Q2. 多次元配列(Jag配列でなくてint [ , ]とかの方)の最後の次元を1次元配列として扱う方法
0900デフォルトの名無しさん
2010/11/12(金) 23:42:15Q1は俺の知る限りではない
Q2はArray.Copyとかしてやればいいんじゃね?
0901デフォルトの名無しさん
2010/11/13(土) 00:32:11ありがとうございます。
Q1.は、やっぱり必要なクラスで毎回手書きがデフォですか
Q2.は、やっぱりコピーするしか手がありませんかね〜…
コピー無しで済ませたければJag配列使え、ということなんでしょうかね、、、
0902デフォルトの名無しさん
2010/11/13(土) 00:42:54質問させて下さい。
二次元配列があり、そのうちの1次元だけを戻すような関数を作ろうとしています。
int[ , ] hoge = new int[ , ]{ { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
int answer[];
answer = hoge[0]; //←これでhogeの0行目だけ代入できるかと思ったら、エラー出てます
ぐぐっても適切な解説が見つかりません。教えていただけないでしょうか?
0903デフォルトの名無しさん
2010/11/13(土) 00:45:570904デフォルトの名無しさん
2010/11/13(土) 00:51:26ありがとうございました
0905デフォルトの名無しさん
2010/11/13(土) 00:51:33int[][] hoge = {
new int[] {1, 2, 3},
new int[] {4, 5, 6},
new int[] {7, 8, 9}
};
int answer = hoge[0];
// answerには{1, 2, 3}が入る。
0906デフォルトの名無しさん
2010/11/13(土) 00:57:15int[] answer = hoge[0];
0907デフォルトの名無しさん
2010/11/13(土) 00:58:25わざわざスワップなんて作る必要なくね?
毎回T tmp = a; a = b; b = a; を手書きするのがでふぉだと思う。
まあデリゲートで渡す必要があるなら仕方ないけどさ
0908デフォルトの名無しさん
2010/11/13(土) 01:24:26いやいや、2次元配列とジゃグ配列を混同しちゃいかんぞ
int[ , ] hoge = new int[ , ]{ { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
は文法的にも正しい記述
ただhoge[0];って書き方ができないだけ
0909デフォルトの名無しさん
2010/11/13(土) 02:08:50拡張メソッドじゃダメなの?
0910デフォルトの名無しさん
2010/11/13(土) 02:15:40C#はC++と違って型ごとに特殊化したswapを作るメリットがないから。
0911デフォルトの名無しさん
2010/11/13(土) 02:47:55{
0912デフォルトの名無しさん
2010/11/13(土) 02:50:36こんな感じの拡張メソッド作ればわざわざSwapするコード書かなくてもx.Swap(y);みたいに書けて楽じゃん
それはメリットなのでは?
0913デフォルトの名無しさん
2010/11/13(土) 02:59:57refがないのでswapされないと思うよ。
そして拡張メソッドでrefは使えない。
0914デフォルトの名無しさん
2010/11/13(土) 03:03:43なにこれこわい
なんかヘルスバーグとかいう外人が
自分の書いたクラスが第三者によって危険なコードに変えられる危険性が
いつまでもあり続けるのは我慢できないという内容の意味のことをまくし立ててた記憶があるが、
staticスコープ限定という言語仕様なのは現場のささやかな抵抗なのかね
0915デフォルトの名無しさん
2010/11/13(土) 03:06:490916デフォルトの名無しさん
2010/11/13(土) 03:11:06staticしか不可能だろうが…
0917デフォルトの名無しさん
2010/11/13(土) 04:15:430918デフォルトの名無しさん
2010/11/13(土) 04:28:430919デフォルトの名無しさん
2010/11/13(土) 04:39:34まあほかのクラスに非常に強く依存するメソッドならそっちの近くに書くために使うってのならあるのか。
あとインターフェースにメソッドを仕込む場合とか
python大好きな自分はこんなメソッドを定義してる。
public static string format(this string s, params object[] args){
return string.Format(s, args);
}
もちろんプライベートでしか使わないけど
0920デフォルトの名無しさん
2010/11/13(土) 06:06:11空白は1文字。
\bはアトミックゼロ幅アサーション。先頭や末尾と同じく存在だけ。
境界は _ 以外の記号でも生じるよ。
>単語文字は英数字とアンダースコアで構成され、単語以外の文字は、
>英数字でもアンダースコアでもない任意の文字で構成されます
0921デフォルトの名無しさん
2010/11/13(土) 09:54:00>不可能
ぬんで?C#はJITだから例えビルドが済んだ別モジュールに属するクラスであっても
メンバの情報を全部保持しているから
(現にリフレクションを使えばprivateメンバも含めて全部列挙できる)
処理系がその気になれば、拡張メソッド的に当該クラスの本来の
privateなインスタンスメソッドと同格のアクセス権を付与できそうな希ガス、
0922デフォルトの名無しさん
2010/11/13(土) 10:08:52そんな、できてもやっちゃダメなこと言われても。
後付けする部分が既存コード破壊できちゃまずい。
0923デフォルトの名無しさん
2010/11/13(土) 10:18:050924デフォルトの名無しさん
2010/11/13(土) 10:20:57いや、今の C# の拡張メソッドの仕様ならね。
今の拡張メソッドみたいな書き方で private 変数にアクセス出来たらやばいでしょ。
0925デフォルトの名無しさん
2010/11/13(土) 16:29:59確かにLGCやリフレクションを使えばできるよ。
0926デフォルトの名無しさん
2010/11/13(土) 20:12:370927デフォルトの名無しさん
2010/11/13(土) 20:16:010928デフォルトの名無しさん
2010/11/13(土) 20:17:28なつかしいなw
0929デフォルトの名無しさん
2010/11/13(土) 20:40:03それで言うとC/C++/Java/HSP/VB/VBA/Perl /Rubyは「いい言語」です。
サンデープログラマが「それなりに」増えてる。これら以外は総じてダメなんです。
0930デフォルトの名無しさん
2010/11/13(土) 21:34:300931デフォルトの名無しさん
2010/11/13(土) 21:42:170932デフォルトの名無しさん
2010/11/13(土) 22:06:18そういう意味で不可能って言ってない。
ってかそんなの言い出したらなんでもありだろが。
0933デフォルトの名無しさん
2010/11/13(土) 22:20:03921は、アホだから気にするな
0934デフォルトの名無しさん
2010/11/13(土) 22:23:260935デフォルトの名無しさん
2010/11/13(土) 22:44:580936デフォルトの名無しさん
2010/11/13(土) 22:49:540937デフォルトの名無しさん
2010/11/13(土) 23:05:230938デフォルトの名無しさん
2010/11/13(土) 23:18:520939デフォルトの名無しさん
2010/11/13(土) 23:20:460940デフォルトの名無しさん
2010/11/13(土) 23:46:010941デフォルトの名無しさん
2010/11/13(土) 23:52:18俺にとっては初期化処理だが、君にとっては終了処理だ
0942デフォルトの名無しさん
2010/11/14(日) 02:24:020943デフォルトの名無しさん
2010/11/14(日) 02:32:130944デフォルトの名無しさん
2010/11/14(日) 02:39:04思い立って、ランタイムとか気にしないでどの環境でも動くように
VC++で作ろうと思ったけど、久しぶりにMFCのソースをみたら
GUIを作るのがめんどくさすぎて30分で断念。
しょうがないので.net2.0で作りはじめた。
0945デフォルトの名無しさん
2010/11/14(日) 02:50:570946デフォルトの名無しさん
2010/11/14(日) 02:54:28WMIみたいなWindowsネイティブなサービスと連動する場合でもAPIなしで
かなりの処理が書ける。.NET以前のVBと違って複数バージョンをインストール
してもランタイムの構成ファイルが競合してぶっ壊れるとか、ランタイムのサー
ビスパックを適用したらとたんにアプリが動かなくなったりみたいな現象もない。
まあ便利だよな。
0947デフォルトの名無しさん
2010/11/14(日) 03:39:570948デフォルトの名無しさん
2010/11/14(日) 03:42:06と当然のような質問されてたけど
今は今時.NETインストールしてないなんてって感じだし
あの頃あんなに嫌がってたじゃないか
今でも、.NET性は品質が悪いとか言う奴もたまにいる
0949デフォルトの名無しさん
2010/11/14(日) 03:58:14エア(それにランタイムも)をインストールするのは絶対に嫌だったな。
良さそうなフリーウエアを見つけても「動作にはVBランタイムが必要」と書かれ
ていたら、「うわっ、これ入れると調子が悪くなるやつだ!あぶねー」とか言って
インストールしなかった。
0950デフォルトの名無しさん
2010/11/14(日) 04:03:580951デフォルトの名無しさん
2010/11/14(日) 06:27:220952デフォルトの名無しさん
2010/11/14(日) 06:59:31今でもVB6の新規開発なんてあるのかね。
0953デフォルトの名無しさん
2010/11/14(日) 07:51:46ListViewでVitrtualMode=true、かつViewをSmallIcon、またはLargeIconにした場合、Shiftキーを押下しながらアイテムを選択すると、選択されるアイテムが異常な状態になります。
Ctrlキーを押下しながら、またはドラッグによる広範囲選択は問題ないのですが…
調べてみたら、
http://social.msdn.microsoft.com/Forums/ja-JP/vsgeneralja/thread/484c578a-df46-4624-a4e7-99ceaa0588ef
のページに同じ問題についての投稿があるのですが、この原因がXP自体に問題があるとの発言がありますが、どなたかこの発言の根拠となる資料をご存じの方はいらっしゃらないでしょうか?
0954953
2010/11/14(日) 07:52:260955デフォルトの名無しさん
2010/11/14(日) 09:35:020956デフォルトの名無しさん
2010/11/14(日) 10:27:52うちはVB6で止まってるやつがいるからVB6現役だよ。
.NETでてから何年たったと思ってるんだ・・・少しは新しいこと勉強しろと。
.NETでも納品でVS2010買うのに開発はVS2005だ・・・LINQつかいてぇ。
てかC#で開発してぇ・・・VB.NETはいやだ。
0957デフォルトの名無しさん
2010/11/14(日) 10:36:470958デフォルトの名無しさん
2010/11/14(日) 12:27:49入ってないって
0959デフォルトの名無しさん
2010/11/14(日) 12:37:310960デフォルトの名無しさん
2010/11/14(日) 12:53:140961:949
2010/11/14(日) 12:54:54その後J2EEが出てきて、うちのSE軍団は「J2EEの事を新しい業務系言
語なんだからVBよりもっと簡単に違いない」と勝手に決めつけ、VBしか
書けないペーだった俺はその後さんざんな目に遭ったんだ。
まああのままVBしか書けないヤツだったら今頃ドロップアウトしていたか
もしれないし、今では俺の周りで進行するプロジェクトで分からないことが
あると、誰もが俺に質問するようになったけどね。
0962デフォルトの名無しさん
2010/11/14(日) 13:02:24情報の分散?
0963デフォルトの名無しさん
2010/11/14(日) 13:03:410964:949
2010/11/14(日) 13:07:56VBしか書けないヤツの中には、「バリアント型」の意味すら分かっておらず、
他人の猿まねで人が書いたことのあるコードと似たコードを書けるだけの
連中が大勢いるんだ。そいつらはプログラミング言語の知識が非常に乏し
いのに、それでもプログラムを書いてメシを食っている。
そんな連中にC#やオブジェクト指向は難しすぎるんだろ?
早い話がC#を使える平均的なPGと、昔も今もVBしか書けないPGでは、
基本的な素養というか、技術スキルに大きな隔たりがあるんだ。
ある意味VBしか書けない阿呆の面倒をまじめに見ようとするMicrosoftは
偉いと思うね。
0965デフォルトの名無しさん
2010/11/14(日) 13:23:58それ以外のランタイムはアプリとともに配布が必要
http://msdn.microsoft.com/ja-jp/vbasic/cc707268.aspx
0966デフォルトの名無しさん
2010/11/14(日) 13:25:120967デフォルトの名無しさん
2010/11/14(日) 13:44:240968デフォルトの名無しさん
2010/11/14(日) 13:47:220969デフォルトの名無しさん
2010/11/14(日) 13:49:20>>968
なんか釣りじゃなくて真面目に言ってるっぽいな君はw
0970デフォルトの名無しさん
2010/11/14(日) 13:58:05すごく便利。
最近はC#でも取り入れたらしいけど、10年くらい遅れているんじゃないのかね。
0971デフォルトの名無しさん
2010/11/14(日) 13:59:200972デフォルトの名無しさん
2010/11/14(日) 13:59:260973デフォルトの名無しさん
2010/11/14(日) 14:01:020974デフォルトの名無しさん
2010/11/14(日) 14:08:520975:949
2010/11/14(日) 14:10:31うちの会社ではVBしかできないのは恥ずべきこと
っていうか、それじゃ食えないんだが。
0976デフォルトの名無しさん
2010/11/14(日) 14:11:02動的言語がいいとされるのはメタプログラミングの能力。
それを支えてるのは動的コード生成であって、動的型じゃない。
型が緩いのはむしろマイナス。
あと、クラス間の依存性切るのに非継承型の型システム(インターフェイスに頼らない)が有効なのも確かだけど、
それ実現するにも動的な型である必要ない。
C++ の template なんかがそうだけど、ダックタイピングでも静的な型チェックちゃんと入れれる。
0977デフォルトの名無しさん
2010/11/14(日) 14:21:49メタプログラミングrubyとかリファクタリングrubyエディションを読んだら
動的型がマンセーされてる。
マイナスって言うか、プラスって考えてる人のほうが多いんじゃないだろうか。
0978デフォルトの名無しさん
2010/11/14(日) 14:22:52それはたぶん君がVB書いたことないだけ。
どっちも一長一短あるでしょ。
C#の方が一方的に読みやすいってことはない。
0979デフォルトの名無しさん
2010/11/14(日) 14:24:52こういう人格攻撃に終始してる人は、本題の動的型の件に関しては
「その通りでございます、反論の余地はございません」って認めてるわけだよね。
よしよし。
0980デフォルトの名無しさん
2010/11/14(日) 14:25:490981:949
2010/11/14(日) 14:33:12バグを出し切ろうとするとかえって面倒なんだよな。
まあ、正常系が動けば多少のバグが許されるようなプログラム
を、飯を食えるレベルのスキルがないプログラマでも書けるよう
にするには、Variantも良い選択肢かもね。
おれはプログラムでメシを食っている関係で動的型は嫌いだけど。
0982デフォルトの名無しさん
2010/11/14(日) 14:34:28C#のみにしてVB6脳のやつら捨てて欲しかったわ。
0983デフォルトの名無しさん
2010/11/14(日) 14:34:33人格攻撃ってか。
一応つっこんどくけど、旧VBで実行時バインドする場合、普通はVariantじゃなくて
Object型を使うんだよ。
もちろんVariantでも同じことは出来たはずだと思ったけど。
0984デフォルトの名無しさん
2010/11/14(日) 14:48:31ダメな子を甘やかしてるだけだからなあ
RubyやPythonとは性質が違うと思う
0985デフォルトの名無しさん
2010/11/14(日) 15:03:100987デフォルトの名無しさん
2010/11/14(日) 15:09:54C#とJavaとRubyとPerlぐらいしかできないぜ?
0988デフォルトの名無しさん
2010/11/14(日) 15:11:07でもVB6ってシングルスレッドのWindowsアプリしかかけないじゃん。
デュアルコアマシンで作っても重い処理を実行している間は
画面が固まって応答なし。
あとVBはいい加減機能が古いんだよな。
・APIかActiveXを使わない限り、TCP/IP通信ができない。
・マルチスレッド非対応
・WebアプリもコンソールアプリもWindowsサービスも作れない
(C#は全部できるぞ)
・ウインドウをリサイズしてもウインドウ内のコンポーネントの
配置とサイズが変化しない
(.NETコンポーネントのDockプロパティがない)
・64bitコードを吐くコンパイラがないので、64bitのDLLに依存
したプログラムは書けない。たとえば64bit版OracleClient
と連携不可。64bit版IEやOfficeともたぶん連携できない。
いい加減こんな時代遅れの言語は廃止しないといけないんだよ。
0989デフォルトの名無しさん
2010/11/14(日) 15:16:45.NETになってからは言い訳できなくなったけどね
0990デフォルトの名無しさん
2010/11/14(日) 15:25:4310年前のものと比べても仕方がないが、
TCP/IP通信やDockは言語の機能ではない。(VBのIDE用にDock類似の機能を実装できる)
WebアプリでVBでプログラミングはかつては普通。
MSもサポートを続けているのはランタイムだけで言語自体はサポートしてない。
0991デフォルトの名無しさん
2010/11/14(日) 15:47:53世の中には知らないほうが幸せなこともある。
0992デフォルトの名無しさん
2010/11/14(日) 15:53:540993デフォルトの名無しさん
2010/11/14(日) 15:54:58継承とか仮想関数テーブルによる動的実行は確かに弊害多くて、
動的型をマンセーしたい気持ちはわかるけど、デメリットがでかすぎる。
C# の dynamic に、C++ 0x(に入り損ねた)Concept みたいなダックタイピング向けの型チェックの仕組みが入ったら最強なんだけどもなぁ。
0994デフォルトの名無しさん
2010/11/14(日) 17:27:26別途データベースのインストールが必要なので、いつもアクセス型のDB
やXMLを使っています。
解凍しただけで実行できるようにしているのですが、皆さんはどのよう
な形のデータベースを使っていますか。
0995デフォルトの名無しさん
2010/11/14(日) 17:34:05楽したい時は SQL Server Compact(SQLite 同様、in-process DB)使って、インストーラーに同梱。
あとは普通に SQL Server。容量制限厳しいけど無料版(Express)もあるし。
0996デフォルトの名無しさん
2010/11/14(日) 17:43:21SQLiteは解答しただけで実行できる、まさに目的のものだと思うんですが。
MySQLとかと勘違いしてない?
0997デフォルトの名無しさん
2010/11/14(日) 18:29:02DBファイルのコピーのことを「インストール」と言ってるなら、
プログラムでファイルの存在チェックをして無ければCREATE文を発行するようにすればいい。
0998デフォルトの名無しさん
2010/11/14(日) 18:29:140999デフォルトの名無しさん
2010/11/14(日) 19:35:23プロジェクトのプロパティからアセンブリ情報を開くと、ファイルバージョンに1.0.0.0と規定で
入力されていて、自動インクリメントに出来ません。
setup.exeを使って更新インストールをさせたときにファイルバージョンが同じだと上書き
去らないようなので、バージョンの設定をAssemblyinfo.csから削除して、アセンブリバージ
ョンを自動インクリメントするように指定しています。
とりあえずこの設定で問題は無いようなのですが、ファイルバージョンを明示しない事に
よるデメリットがなにかあるでしょうか?
ファイルバージョンがわざわざ自動インクリメントされないようになっていることには何か
理由があるのではないかと思うのですが、何も思い当たりません。
1000デフォルトの名無しさん
2010/11/14(日) 19:37:0010011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。