C#, C♯, C#相談室 Part43
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/09/27(木) 07:17:16前スレ
C#, C♯, C#相談室 Part42
http://pc11.2ch.net/test/read.cgi/tech/1188099745/
0002デフォルトの名無しさん
2007/09/27(木) 07:18:34http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/
ふらっとC♯, C#(初心者用) Part17
http://pc11.2ch.net/test/read.cgi/tech/1182948981/
MSDNライブラリ
http://msdn.microsoft.com/library/ja/
MSDN2
http://msdn2.microsoft.com/ja-jp/library/default.aspx
pinvoke.net: the interop wiki!
http://pinvoke.net/
0003デフォルトの名無しさん
2007/09/27(木) 07:19:16http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/
.NET Framework SDK (2.0)
http://msdn2.microsoft.com/ja-jp/library/ms310244.aspx
MSDN Visual C# Express Edition フォーラム
http://forums.microsoft.com/msdn-ja/ShowForum.aspx?ForumID=187&SiteID=7
Visual Studio ユーザーグループ
http://vsug.jp/
@IT Insider.NET
http://www.atmarkit.co.jp/fdotnet/index.html
Insider.NET 会議室 ディレクトリ
http://www.atmarkit.co.jp/fdotnet/index/bbs/index.html
宇宙仮面の C# プログラミング / C# Programming
http://ukamen.hp.infoseek.co.jp/
WisdomSoft C#入門
http://wisdom.sakura.ne.jp/programming/cs/index.html
WisdomSoft Microsoft .NET入門
http://black.sakura.ne.jp/~third/system/msnet/msnet.html
どっとねっとふぁん
http://dotnetfan.org/
緑のバイク 初めてのC# 〜 覚え書き 〜
http://homepage3.nifty.com/midori_no_bike/CS/
どぼん!の .NET Tips
http://dobon.net/vb/dotnet/
0004デフォルトの名無しさん
2007/09/27(木) 07:20:00http://www.borland.com/jp/products/csharpbuilder/index.html
Turbo C#
http://www.turboexplorer.com/csharp
.NET Framework 1.1 製品ドキュメント
http://www.microsoft.com/japan/msdn/library/ja/netstart/html/sdkstart.asp
MSDN ライブラリ 2006 年 12 月版
http://www.microsoft.com/downloads/details.aspx?FamilyID=94596af5-cc58-45af-a14b-df627a31e783&DisplayLang=ja
0005デフォルトの名無しさん
2007/09/27(木) 09:40:47(会長のメッセージ)
 ̄ ̄ ̄\| ̄ ̄ ̄
http://www.freewebs.com/premiumtv/?BEAT/?rTV=rimo.tv/en/ch/3802
0006デフォルトの名無しさん
2007/09/27(木) 12:02:17>エラー CS0246: 型または名前空間名 'DllImport' が見つかりませんでした。
>using ディレクティブまたはアセンブリ参照が不足しています。
というエラーがでてしまい。コンパイルできません。何か特別な設定が必要なんで
しょうか?。他の部分は新規プロジェクトで、Windowsアプリケーションで作成した
素のままの状態です
何かアドバイスがあれば、よろしくお願いします。
-----以下コード-----
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace hoge
{
static class Program
{
[DllImport("user32.dll")]
public static extern int MessageBeep(uint uType);
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
MessageBeep(0);
}
}
}
0007デフォルトの名無しさん
2007/09/27(木) 12:10:58using System.Runtime.InteropServices;
0008デフォルトの名無しさん
2007/09/27(木) 12:11:06DllImportの上で右クリック→競合の解決
ちなみにMessageBeep使わないでもSystem.Media.SystemSounds使える
0009デフォルトの名無しさん
2007/09/27(木) 12:24:49おぉ、こんなのあるんだしらなかった。すごいよ(´д`)ママン…。
これ登録されてるライブラリから名前解決して推論して持ってきてるって感じなのかね?
自分のライブラリでも可?
0010デフォルトの名無しさん
2007/09/27(木) 12:36:01おつ
0011デフォルトの名無しさん
2007/09/27(木) 16:09:360012デフォルトの名無しさん
2007/09/27(木) 18:20:420013デフォルトの名無しさん
2007/09/27(木) 22:31:00北○まで読んだ。
0014デフォルトの名無しさん
2007/09/30(日) 00:52:22Win32 APIを使いたいならMFC使えば?
C#みたいなけったいな宣言なしに呼べるよ
0015デフォルトの名無しさん
2007/09/30(日) 02:44:18なんでMFCなんていうクs
0016デフォルトの名無しさん
2007/09/30(日) 02:48:560017デフォルトの名無しさん
2007/09/30(日) 11:53:220018デフォルトの名無しさん
2007/09/30(日) 19:47:26ComboBox.selectedValueの値に応じて、処理を実行したいんですが、
このComboBoxがあるフォームを閉じたときにも(xをクリック)selectedIndexChangedが起きて、
そのときにselectedValueがnullになっていてこまってるのですが、どう対処すべきでしょう?
(フォームがdisposeされるから?)
0019デフォルトの名無しさん
2007/09/30(日) 20:03:21SelectedIndexじゃダメなのかな?
自分はこっち使ってます。
0020デフォルトの名無しさん
2007/09/30(日) 20:12:52閉じられるときはselectedIndexの値が-1になってるのでこちらもダメみたいです。
ちなみにComboBoxの内容はデータバインドでデータベースの内容をそのまま表示してるけど
ひょっとしてこれは関係ある・・・?
0021デフォルトの名無しさん
2007/09/30(日) 20:14:050022デフォルトの名無しさん
2007/09/30(日) 20:16:55ないです。閉じたときにselectedIndexChangedが発生してしまうことで困ってます。
何で発生するかも分からないです。で、そのときにvalueがnullになってるのでヌルリが出てしまいます。
0023デフォルトの名無しさん
2007/09/30(日) 20:19:42valueがnullかindexが-1なら何もしなけりゃいいんじゃね
0024デフォルトの名無しさん
2007/09/30(日) 20:23:08まあ、そりゃそうなんですが・・・
基本C#使いではないので、こういう場合のC#での定石みたいのがあったりするのかな、と。
そもそもselectedIndexChangedが発生したのにindexが-1であるのがそもそもおかしいようなきもするし、
ifでチェックするのはダサイというか正しくないような・・・
0025デフォルトの名無しさん
2007/09/30(日) 20:24:50他の人が書いたコードを引き継いでるの?
0026デフォルトの名無しさん
2007/09/30(日) 20:35:34俺も変だと思います。
自分で書いたコードです。勉強がてら昨日から始めました。
フォームのdisposeが呼ばれた後でselectedndexChangedが呼ばれているみたいなので、
俺の勝手な想像では、disposeされたことで、データバインドしているComboBoxの中身が削除されて、
それをトリガーにselectedIndexChangedが発生しているのではと思ってるのですが、
まあどっちにしろどうしたらいいのかわからない・・・
0027デフォルトの名無しさん
2007/09/30(日) 20:38:51データバインドしない、ただのコンボボックスで試してみたら
フォームを閉じたときに、selectedIndexChangedは呼ばれないことは確認しました。
ということはやはりデータバインドがダメということっぽい?
やはり自分でフォームロード時にComboBoxの中身を設定すべきということなんですかね。
0028デフォルトの名無しさん
2007/10/01(月) 04:41:36nullになることがあるのは仕様なのでチェックしなさい。全然ダサくない
なんで仕様かって話なら何も選択されてない状態があるから。そもそも
インスタンス作った直後とか何も入ってないのに選択しようがないだろ
0029デフォルトの名無しさん
2007/10/02(火) 02:25:51Genericも超おせー
.NETってどんな局面で使えるのかさっぱりわからんぞ
0030デフォルトの名無しさん
2007/10/02(火) 02:42:460031デフォルトの名無しさん
2007/10/02(火) 04:28:000032デフォルトの名無しさん
2007/10/02(火) 09:48:180033デフォルトの名無しさん
2007/10/02(火) 10:28:01それ以外なら十分満足できる速さだろ。
じゃなきゃ作り込みのロジックが悪いとしか・・・
0034デフォルトの名無しさん
2007/10/02(火) 11:05:440035デフォルトの名無しさん
2007/10/02(火) 11:13:560036デフォルトの名無しさん
2007/10/02(火) 12:49:59ジェネリック超おせーの詳細を超詳しく
0037デフォルトの名無しさん
2007/10/02(火) 15:13:32使ってみたら全く変わらなくてがっかりで「超おせー」っていうのはありそうだが
0038デフォルトの名無しさん
2007/10/02(火) 15:20:180039デフォルトの名無しさん
2007/10/02(火) 15:42:100040デフォルトの名無しさん
2007/10/02(火) 15:47:14気にすることねえべ
0041デフォルトの名無しさん
2007/10/02(火) 15:49:26List<T>に変えたら暴速になるべ
0042デフォルトの名無しさん
2007/10/02(火) 15:51:090043デフォルトの名無しさん
2007/10/02(火) 15:56:560044デフォルトの名無しさん
2007/10/02(火) 15:59:290045デフォルトの名無しさん
2007/10/02(火) 16:04:36内部の実装は全然違うけどいちおう辻褄合わせしてあるだけなんじゃないの?
0046デフォルトの名無しさん
2007/10/02(火) 16:07:48足し算もメソッド呼び出しで行うらしい
次のランタイムはそこをもうちょっとまともにして五倍ぐらい早くするって
0047デフォルトの名無しさん
2007/10/02(火) 16:45:350048デフォルトの名無しさん
2007/10/02(火) 22:19:25そうだとしたら当たり前。
0049デフォルトの名無しさん
2007/10/02(火) 22:36:00IEquatable<T>.Equals(T o)を実装してないという話じゃないかい。
比較もするならIComparable<T>.CompareTo(T o)も必要。
これがないと、比較や同値の検査のとき、
いったんBoxingされてしまうからジェネリックのメリットがなくなる。
Int32などのプリミティブの値型ははじめから実装済み。
0050デフォルトの名無しさん
2007/10/02(火) 22:52:57ばかか?おめー
0051デフォルトの名無しさん
2007/10/02(火) 22:55:06もしかしてJavaの人ですか?
0052デフォルトの名無しさん
2007/10/02(火) 23:26:24C#はそんなことしなくてもそのままの型でスマートに使えるんだよ
0053デフォルトの名無しさん
2007/10/03(水) 00:13:54っていうか言いたいことがいまいちよくわからない。
どこにプリミティブで特化するって書いてる?
0054デフォルトの名無しさん
2007/10/03(水) 00:40:360055デフォルトの名無しさん
2007/10/03(水) 04:05:250056デフォルトの名無しさん
2007/10/03(水) 15:49:15DbClass--
|
|--- Mdb
| |------Mdbにアクセスするクラス
|
|--- Sql
| |------Sql Serverにアクセスするクラス
|
|----設定に応じてMdbとSqlを呼び分けるクラス
これで特に問題がないのだが、デザイナで作ったデータセットのTableAdapterがうまく切り替えができん。
何かいい方法ないかな。
データセットのxsdファイルを二つにして、毎回切り替えるような感じにすればいいのかな
0057デフォルトの名無しさん
2007/10/03(水) 15:49:450058デフォルトの名無しさん
2007/10/03(水) 22:18:18なんで二つも似たようなキーワードを用意する必要があったの?
0059デフォルトの名無しさん
2007/10/03(水) 22:26:23constは定数。
readonly読み取り専用フィールド。
0060デフォルトの名無しさん
2007/10/03(水) 22:28:17という点が大きな違いだろうね。
0061デフォルトの名無しさん
2007/10/03(水) 22:28:45では、どちらかのキーワードが欠けていたばあい、こんな困ったことがある、
という事例おしえて
0062デフォルトの名無しさん
2007/10/03(水) 22:30:440064デフォルトの名無しさん
2007/10/03(水) 22:38:01readonlyだとリフレクションで弄れる余地が残っているくらいかなぁ。
あんま難しく考えない方がいいかも。
絶対不変の定数であることをコード書く人が明確にするため、
程度の認識でいいんじゃない?
0065デフォルトの名無しさん
2007/10/03(水) 22:50:07const int MyIntValue = 1;
foo(MyIntValue);
と書くと、生成されるMSILにはfoo(1);と定数が埋め込まれる
#define MyIntValue 1
みたいな感じ。
MyIntValueの定義場所とfooを呼び出している場所が
別のアセンブリでも、やっぱりコンパイル時に定数が展開される。
問題はMyIntValueを別の値に修正したとき。
MyIntValueがどのアセンブリに定義されていようと
利用場所ではコンパイル時に定数が埋め込まれるから、
結果的にMyIntValueを使ってるプログラムは全部コンパイルし直しになる。
つまりそういうところにconstを使うべきじゃない。
readonlyの場合は、実行時に変数から読み出されるので
利用側の再コンパイルは必要ない。
0066デフォルトの名無しさん
2007/10/03(水) 23:01:300067デフォルトの名無しさん
2007/10/03(水) 23:40:45定数式とそうでないものは静的言語使うんならきちんと区別しる。Typeだけの話やないぞ
>>66 もいってるけどまあ実際主にswitchやAttributeとかぐらいやけどな
0068デフォルトの名無しさん
2007/10/03(水) 23:58:37バージョン管理絡みとかで
0069デフォルトの名無しさん
2007/10/04(木) 00:11:58>>66とかのはいきなりコンパイルできない時点で直すことになるので、まあ実害まではいかない。
0070デフォルトの名無しさん
2007/10/04(木) 00:21:480071デフォルトの名無しさん
2007/10/04(木) 07:06:32GraphicsクラスのDrawImageを使っていますが、このメソッドが300msも掛かってしまいます
なにかいい方法ありませんか?
0072デフォルトの名無しさん
2007/10/04(木) 09:16:320073デフォルトの名無しさん
2007/10/04(木) 09:18:46DrawImageは描画元が大きければそれだけでコストが鰻上りだからな。
あとはGDIのBitBltとかWPFに移行するとか。
0074デフォルトの名無しさん
2007/10/04(木) 11:34:000075デフォルトの名無しさん
2007/10/04(木) 11:37:30>>64,65 の話はreadonlyでなければ困る話で >>66,67 はconstでなければ困る話。
「どちらかなければ」困るでreadonlyだけでいいに対する反論という流れ
だからずれてる。
0076デフォルトの名無しさん
2007/10/04(木) 14:59:261000個や2000個の定数を複数個宣言する場合、そのまま
変数のbyte差分×インスタンスの数だけメモリが浮くんじゃない?
static readonlyとかあるけど。
そんな事いったらstaticクラスもabstractでsealedができないと言う制限をコンパイラからはずせば不要だし。
0077デフォルトの名無しさん
2007/10/04(木) 15:01:500078デフォルトの名無しさん
2007/10/04(木) 15:13:030079デフォルトの名無しさん
2007/10/04(木) 17:26:54一々ソリューション閉じてエクスプローラでフォルダごとコピペしてリネームって
結構面倒なんですよね
0080デフォルトの名無しさん
2007/10/04(木) 18:56:55「.NET アプリ 遅」を検索すると 837,000 件
「MFC アプリ 遅」を検索すると 23,800 件
この差はなんですか?
0081デフォルトの名無しさん
2007/10/04(木) 19:10:070082デフォルトの名無しさん
2007/10/04(木) 22:55:23c# アプリ 遅 に一致する日本語のページ 約 43,100 件
c++ アプリ 遅 に一致する日本語のページ 約 93,800 件
0083デフォルトの名無しさん
2007/10/04(木) 22:57:170084デフォルトの名無しさん
2007/10/04(木) 23:03:320085デフォルトの名無しさん
2007/10/04(木) 23:05:11今日のgoogleはスプートニク?
0086デフォルトの名無しさん
2007/10/05(金) 01:47:38Haskellに一番 ... アプリ 遅 に一致する日本語のページ 約 1,110 件
awk アプリ 遅 に一致する日本語のページ 約 13,100 件
Haskell アプリ 遅 に一致する日本語のページ 約 20,800 件
Scheme アプリ 遅 に一致する日本語のページ 約 22,400 件
Lisp アプリ 遅 に一致する日本語のページ 約 31,900 件
Python アプリ 遅 に一致する日本語のページ 約 50,400 件
C言語 アプリ 遅 に一致する日本語のページ 約 53,500 件
VB アプリ 遅 に一致する日本語のページ 約 78,700 件
Ruby アプリ 遅 に一致する日本語のページ 約 118,000 件
Perl アプリ 遅 に一致する日本語のページ 約 133,000 件
Java アプリ 遅 に一致する日本語のページ 約 238,000 件
F# アプリ 遅 に一致する日本語のページ 約 363,000 件
0087デフォルトの名無しさん
2007/10/05(金) 02:15:51合計が合わないから重複してるね。
0088デフォルトの名無しさん
2007/10/05(金) 02:21:07そうするとJavaがトップか。
0089デフォルトの名無しさん
2007/10/05(金) 11:56:58利潤追求の激しい企業が本来ならば仲間にしなければならない開発者までも食い物に
していることも分からず、M$マンセーしている奴は頭を齧られ過ぎて考えることも出来ない
くらいに脳みそがなくなっているんだろ。可哀想だよ。
0090デフォルトの名無しさん
2007/10/05(金) 12:17:44C#で開発してんのかなぁ。
0091デフォルトの名無しさん
2007/10/05(金) 12:20:16まで読んだ
0092デフォルトの名無しさん
2007/10/05(金) 14:07:55.NETで作成されたソフトなんて1%もないだろ?
0093デフォルトの名無しさん
2007/10/05(金) 14:28:190094デフォルトの名無しさん
2007/10/05(金) 14:35:311%とか適当なこというなよ
そもそも、.netのソフトが多いか少ないかを質問
してるのではないだろ
0095デフォルトの名無しさん
2007/10/05(金) 14:40:100096デフォルトの名無しさん
2007/10/05(金) 15:17:24今はそれがC#EEに移ってきてるんじゃね?
windowsに限定するなら、javaよりも.netの方が何かと便利だし。
0097デフォルトの名無しさん
2007/10/05(金) 17:45:28大量に「プロパティのgetterが呼ばれてません」て警告がでるんですが
setterだけのプロパティを作るのって抵抗ありません?
0098デフォルトの名無しさん
2007/10/05(金) 17:48:11それだけだろ…。
0099デフォルトの名無しさん
2007/10/05(金) 17:54:57中途半端な英語を使うよりプログラムの可読性とかは向上するけど
どんな問題が考えられるのかな
0100デフォルトの名無しさん
2007/10/05(金) 17:55:270101デフォルトの名無しさん
2007/10/05(金) 17:57:12誤字が多い
打つのがめんどくさい
0102デフォルトの名無しさん
2007/10/05(金) 18:32:45あと、enum とかに使うなら、型名の後 . 打った時点で intellisense 出るし。
やっぱ、一番うっとおしい問題は誤変換とか、IME 的な問題かと。
まあ、ローマ字を書かなくて済むようになったと思えば、いい時代よ。
0103あ
2007/10/05(金) 18:47:42現在C#を使って開発しているのですが
最近極端にデバッグのステップ実行速度が遅くなってしまいました。
検索したのですが見つからなかったので質問しました。
0104デフォルトの名無しさん
2007/10/05(金) 19:30:440105デフォルトの名無しさん
2007/10/05(金) 20:07:340106デフォルトの名無しさん
2007/10/05(金) 20:16:460107デフォルトの名無しさん
2007/10/05(金) 20:25:56ローカル変数のコメントとかどうでもいいコメントを省略できるから
コーディング量は減らせると思うんだけど
やっぱり書き手が美しく感じるかとかの問題だけなのかな
0108デフォルトの名無しさん
2007/10/05(金) 20:38:54接頭辞に悩みそうだし
0109デフォルトの名無しさん
2007/10/05(金) 20:51:220110デフォルトの名無しさん
2007/10/06(土) 22:48:500111デフォルトの名無しさん
2007/10/06(土) 22:54:530112デフォルトの名無しさん
2007/10/07(日) 00:16:010113デフォルトの名無しさん
2007/10/07(日) 00:38:440114デフォルトの名無しさん
2007/10/07(日) 00:44:410115デフォルトの名無しさん
2007/10/07(日) 12:53:58.NETが発表されてから約8年が過ぎましたが、.NETでアプリが店頭に並んでいるを見たときがありません。
ネイティブと比較すると速度面であまりにも不利ですし、ソースコードが簡単に覗ける
これでは商用ソフトとしては無理がありますよね
うちの部署も未だにVC6++SP2/MFCですし・・・
0116デフォルトの名無しさん
2007/10/07(日) 12:56:31てか
>.NETでアプリが店頭に並んでいる
なんだそりゃw
0117デフォルトの名無しさん
2007/10/07(日) 13:09:19あまりにも不利ですし
無理があります。
次の質問どうぞ
0118デフォルトの名無しさん
2007/10/07(日) 13:33:18カスは来るな、とまでは言わないが、カスならカスでオブザーバーに徹すればいいのに。
0119デフォルトの名無しさん
2007/10/07(日) 13:34:52邪魔
0120デフォルトの名無しさん
2007/10/07(日) 13:45:020121デフォルトの名無しさん
2007/10/07(日) 14:26:09てか店頭に並ぶアプリって大抵の物はフリーソフトで十分な糞ばっかり。
0122デフォルトの名無しさん
2007/10/07(日) 14:30:04よお、カス
0123デフォルトの名無しさん
2007/10/07(日) 15:28:10MFCと大して変わらん気がするが・・・
0124デフォルトの名無しさん
2007/10/07(日) 15:30:230125デフォルトの名無しさん
2007/10/07(日) 15:32:36コレクションの中身をポインタ経由で誰かが参照してる時に
コレクションを壊す、といった類の危険な操作に対してC++はひどく脆弱だが、
.NETではそんなことは(基本的には)ないし
MFCと.NETでは、ライブラリのデキもカバーする範囲も段違いだ
0126デフォルトの名無しさん
2007/10/07(日) 15:33:520127デフォルトの名無しさん
2007/10/07(日) 15:38:52.NETの最大の弱点
遅い
これに尽きる
0128デフォルトの名無しさん
2007/10/07(日) 15:39:280129デフォルトの名無しさん
2007/10/07(日) 15:41:460130デフォルトの名無しさん
2007/10/07(日) 15:42:37上を見ろ
0131デフォルトの名無しさん
2007/10/07(日) 15:43:32速さなんていくら犠牲になってもかまわない
0132デフォルトの名無しさん
2007/10/07(日) 15:44:410133デフォルトの名無しさん
2007/10/07(日) 15:46:26言語が早いとか遅いとか言ってるやつは正しいアルゴリズムが書けないだけ
0134デフォルトの名無しさん
2007/10/07(日) 15:50:45言語のベンチマークの類を見たことが無い人かな?
FORTRANでやるような数値計算の類をスクリプトでやってみるといいよ
0135デフォルトの名無しさん
2007/10/07(日) 15:55:580136デフォルトの名無しさん
2007/10/07(日) 15:57:35アプリケーションを使う側からしたら
プログラミングのしやすさなんてどうでもいいのでは?
速いアプリケーションより遅いアプリケーションを選択するユーザなんているのかな?
0137デフォルトの名無しさん
2007/10/07(日) 15:57:58まず人と会話出来るようになろうぜ・・・
0138デフォルトの名無しさん
2007/10/07(日) 16:02:06処理時間がかかるような処理はCで書いてそれを呼び出せばいい
それ以外のところは美しい言語と美しいライブラリでプログラミングしやすくするのがいいわけ
生産性の高い言語を使えばバグが少なくて値段も安いソフトが作れるわけだ
それはユーザーに大いにメリットのある話だ
0139デフォルトの名無しさん
2007/10/07(日) 16:06:47想像力はないのかね
0140デフォルトの名無しさん
2007/10/07(日) 16:09:410141デフォルトの名無しさん
2007/10/07(日) 16:11:20だったらなぜ、.NETで書かれたアプリは極少数なんでしょうか?
そのうち、LightWave、Maya等も.NETで書かれるんでしょうかね?w
0142デフォルトの名無しさん
2007/10/07(日) 16:17:14ホイホイスレが必要かもね。
「ドトネトアプリはなぜ普及しないのか?」って
OOPスレみたいにさw
0143デフォルトの名無しさん
2007/10/07(日) 16:20:030144デフォルトの名無しさん
2007/10/07(日) 16:22:25注意しましょうhw
0145デフォルトの名無しさん
2007/10/07(日) 16:24:590146デフォルトの名無しさん
2007/10/07(日) 16:25:40これは.NETに限らず。
0147デフォルトの名無しさん
2007/10/07(日) 16:27:440148デフォルトの名無しさん
2007/10/07(日) 16:29:33ファイルの中身が同一かどうかを調べたいです。
実装要件としては、
・合致しているかどうかわかればいい
・間違ってるとわかったらすぐ比較をやめたい
なんですが、
1.比較するためにファイルの中身をバイト型配列に読み込もうとしてますが
これをせずに、ファイルの中身を比較できる関数ありますか?
2.バイト型配列に読み込んで比較するとしたら、
0のインデックスからお互い比較していって、
間違えて抜けるというループという方法と
どこかの比較関数使った方法は
どちらがパフォーマンスが優れていますか?
私は前者のfor文で回して間違ったら抜ける方が全部見ずに
早いのかなと思っておりますが。。。
教えてくださいわかる人!
0149148
2007/10/07(日) 16:31:09こっちの方がパフォーマンスいいと思っています。
0150デフォルトの名無しさん
2007/10/07(日) 16:34:24> 1.比較するためにファイルの中身をバイト型配列に読み込もうとしてますが
> これをせずに、ファイルの中身を比較できる関数ありますか?
ない
あとC#的に関数じゃなくてクラスとメソッド
> 1.が出来るならバイト型配列に読み込まなくてもいいから
> こっちの方がパフォーマンスいいと思っています。
その関数とやらでも結局内部でファイルの中身をバイト配列に読み込むと思うよ
> 2.バイト型配列に読み込んで比較するとしたら、
> 0のインデックスからお互い比較していって、
> 間違えて抜けるというループという方法と
> どこかの比較関数使った方法は
> どちらがパフォーマンスが優れていますか?
どこかって何だ?
あと同じファイルを何回も比較するならチェックサムを使うとか、
中身よりまずファイルサイズで比較するとか
0151148
2007/10/07(日) 16:43:37やっぱりそうでしたか。何か特殊なアルゴリズムでもあると思ってました。
> どこかって何だ?
確かに。すんません。何だ?
> 中身よりまずファイルサイズで比較するとか
ごもっとも!
ありがとうございますエライ人!
0152デフォルトの名無しさん
2007/10/07(日) 16:49:27せめて4バイトずつとか比較したいところだが
0153デフォルトの名無しさん
2007/10/07(日) 16:57:541文字ずつ読んで比較してもさほど時間は変わらないと思うけどな。
一度にバイト配列に読み込んでメモリに入りきらないほどのサイズだったらどうするのよ。
0154148
2007/10/07(日) 17:04:42どうしよう・・・
ってことでFileStream.ReadByte()を使って1バイトずつ
比較して合致しなかったらreturn falseっていう方法が
妥当だと考えましたがいかがでしょうか。
0155デフォルトの名無しさん
2007/10/07(日) 17:11:06BinaryReader(new BufferedStream(new FileStream(file, ...)))
0156148
2007/10/07(日) 17:11:59一バイトずつReadByte()で比較する方法を
Stopwatchクラスで計ったら1msしか違いは出ませんでした。
テストしたファイルは9118バイトで(小さいかも)378msです。
というとことは、これでReadByte()でOKかも
0157デフォルトの名無しさん
2007/10/07(日) 17:16:48>>154
別に一度に配列に全部よまなくても、「適当なサイズ」の配列に読めばいいでしょ。
どのぐらいの大きさが「適当なサイズ」かは判断が難しいところだろうけど。
実際に確認したわけじゃないけど、普通に考えればストリームがいくらバッファリング
されているからといって、配列と同じ効率でアクセスできるとは考えにくいから、
配列に一度読み出すことには意味があると思う。
それに、これも実際に確認したわけじゃないけど、
そんなことより>>152の言ってる事の方が恐らく重要。
0158デフォルトの名無しさん
2007/10/07(日) 17:19:110159デフォルトの名無しさん
2007/10/07(日) 17:30:48FileStream自体がバッファを持ってるからBufferedStreamはいらないか。
標準で8K、サイズはコンストラクタでも指定できるそうだ。
BinaryReaderは一応使っといて。
0160デフォルトの名無しさん
2007/10/07(日) 17:31:19比較にかかる時間なんて誤差の範囲
終了
0161デフォルトの名無しさん
2007/10/07(日) 18:46:17小さいの(数KB)ならいいかもしれんが。
0162デフォルトの名無しさん
2007/10/07(日) 18:48:04MD5じゃコリジョンが発生しうる
0163デフォルトの名無しさん
2007/10/07(日) 18:55:29特に問題ないからそれでいいと思うよ
0164デフォルトの名無しさん
2007/10/07(日) 19:16:260165デフォルトの名無しさん
2007/10/07(日) 19:18:520166148
2007/10/07(日) 19:22:381.5MBのテキストファイルを1バイトずつ計算したら63000msかかり
けっこう使い物にならないかも・・・
とにかく早い比較方法はないでしょうか。
MD5?調べてみます。
0167デフォルトの名無しさん
2007/10/07(日) 19:24:360168デフォルトの名無しさん
2007/10/07(日) 19:26:191対多数を比較するならMD5がいいね
0169デフォルトの名無しさん
2007/10/07(日) 19:33:25多対多ではすごく有用
0170デフォルトの名無しさん
2007/10/07(日) 19:36:03約1/2^128 あるでしょ
0171デフォルトの名無しさん
2007/10/07(日) 19:36:190172デフォルトの名無しさん
2007/10/07(日) 19:38:091対多でも有用ですよ
0173デフォルトの名無しさん
2007/10/07(日) 19:41:01>1.5MBのテキストファイルを1バイトずつ計算したら63000ms
あり得んよ。一体どんなコード書いたの?
0174デフォルトの名無しさん
2007/10/07(日) 19:47:30n回ハッシュ計算するのとn回バイト列の比較するのとどっちが効率いいと思う?
0175デフォルトの名無しさん
2007/10/07(日) 19:49:580176デフォルトの名無しさん
2007/10/07(日) 19:53:29ってか1対多って、ひとつのファイルを、複数のファイルそれぞれと比べてって話でいいんだよな?
しかしこういう時すぐにハッシュを出してくるやるはどういう発想なんだ?
多対多とかの話は別だが、単に2つのファイルの比較でもすぐに言い出すやつが出る。
0177デフォルトの名無しさん
2007/10/07(日) 19:54:540178デフォルトの名無しさん
2007/10/07(日) 19:55:53一つのファイルから1回読み込むのとn回読み込むのとどっちが効率いいと思う?
0179デフォルトの名無しさん
2007/10/07(日) 19:56:28何にもかわらんと思うが
それより、ReadByte()でバイト読みするんなら、せめてBufferedStream()
使うべきじゃね
0180デフォルトの名無しさん
2007/10/07(日) 19:58:070181デフォルトの名無しさん
2007/10/07(日) 20:01:12あふぉか?
0182デフォルトの名無しさん
2007/10/07(日) 20:02:09いらんて話がとうに出とろうがw
0183148
2007/10/07(日) 20:29:00こんなコードです。
FileStream fs1 = new FileStream(path1, FileMode.Open, FileAccess.Read);
FileStream fs2 = new FileStream(path2, FileMode.Open, FileAccess.Read);
if(fs1.Length != fs2.Length){
return false;
}
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
//How to 1
byte[] bt1 = new byte[fs1.Length];
byte[] bt2 = new byte[fs2.Length];
fs1.Read(bt1, 0, (int)fs1.Length);
fs2.Read(bt2, 0, (int)fs2.Length);
Console.WriteLine("読み出し完了" + stopWatch.ElapsedMilliseconds.ToString());
for(int i = 0; i< fs1.Length; i++){
if(bt1[i] != bt2[i]){
Console.WriteLine("見っけ"+stopWatch.ElapsedMilliseconds.ToString());
//return false;
}
}
stopWatch.Stop();
Console.WriteLine("How To 1 全部で" + stopWatch.ElapsedMilliseconds.ToString());
stopWatch.Reset();
fs1.Seek(0, SeekOrigin.Begin);
fs2.Seek(0, SeekOrigin.Begin);
0184148
2007/10/07(日) 20:29:44stopWatch.Start();
//How to 2
for (int i = 0; i < fs1.Length; i++) {
if (fs1.ReadByte() != fs2.ReadByte()) {
Console.WriteLine("見っけ" + stopWatch.ElapsedMilliseconds.ToString());
//return false;
}
}
stopWatch.Stop();
Console.WriteLine("How To 2 全部で" + stopWatch.ElapsedMilliseconds.ToString());
fs1.Close();
fs2.Close();
0185148
2007/10/07(日) 20:30:16だしたログが
>読み出し完了7ms
で7msだったのが意味わからんかったです。つまり実際byte配列には
ポインタのようなものだけ与えてるってことでしょうか。
その後は
>見っけ57491
>How To 1 全部57493
>見っけ65137
>How To 2 全部65138
って感じですけど、この全部ってのは1が早くなったり2が早くなったり
ほぼ同じくらいになったりします。
0186デフォルトの名無しさん
2007/10/07(日) 20:33:27> だしたログが
> >読み出し完了7ms
> で7msだったのが意味わからんかったです。つまり実際byte配列には
たぶんキャッシュされてるのを持ってきてる
0187デフォルトの名無しさん
2007/10/07(日) 20:35:100188デフォルトの名無しさん
2007/10/07(日) 20:37:250189デフォルトの名無しさん
2007/10/07(日) 20:39:27遅いのは毎回ストリームからLengthプロパティを取得してるからだよ。
0190デフォルトの名無しさん
2007/10/07(日) 20:44:33おいおい……
0191148
2007/10/07(日) 20:46:10確かに!!
今Lengthプロパティを変数にいれてfor文回してくるんで
ちょっと待っててください!!
0192デフォルトの名無しさん
2007/10/07(日) 20:46:140193デフォルトの名無しさん
2007/10/07(日) 20:49:530194デフォルトの名無しさん
2007/10/07(日) 20:51:330195デフォルトの名無しさん
2007/10/07(日) 20:57:07CPUがデータバスの本数を増やしてきた歴史を何だと思ってるんだよ
0196デフォルトの名無しさん
2007/10/07(日) 20:58:47なんかなかったっけ
0197148
2007/10/07(日) 21:00:35読み出し完了8
見っけ19
How To 1 全部で19
見っけ103
How To 2 全部で103
超早かったです・・・。1.5Mbの5万行のコード比較でした。
ちなみに間違った行は49999行くらいにいれてます。
この速さなら全然要望通りです。
しかもこれだと結局バイト配列に入れた方が結局早いってこと?
バイト配列ってどのくらい読み込むことできるんでしょうか。
> How To 1って
そこは触れないでください。
> 時間かかるような処理をプロパティにしないでもらいたいものだ
この50近いスレ汚しをどう償えばいいでしょうか。
0198デフォルトの名無しさん
2007/10/07(日) 21:04:22いくらバッファリングされてるといっても配列の効率に敵うはずがないって。
だからそんなことより>>152の指摘の方がずっとw
0199148
2007/10/07(日) 21:08:31>CPUがデータバスの本数を増やしてきた歴史を何だと思ってるんだよ
それはRead()メソッドのときに4バイトずつ読み込んで
byte配列[4]をuintにシフトして代入して比較するということで
合っていますか?
0200デフォルトの名無しさん
2007/10/07(日) 21:09:380201148
2007/10/07(日) 21:13:40>いくらバッファリングされてるといっても配列の効率に敵うはずがないって。
を踏まえると、配列に全部読み込んで
そこから4バイトずつでuintに代入して4バイトごと比較する!
もしくはUINT64!?
0202デフォルトの名無しさん
2007/10/07(日) 21:15:200203148
2007/10/07(日) 21:20:31コードを最適化するチェックボックスを外してたんですが
ここは関係ないですか?
0204デフォルトの名無しさん
2007/10/07(日) 23:48:07bool Hikaku(string file1, string file2)
{
using (FileStream fs1=new FileStream(file1, FileMode.Open))
using (BinaryReader br1=new BinaryReader(fs1))
using (FileStream fs2 = new FileStream(file2, FileMode.Open))
using (BinaryReader br2=new BinaryReader(fs2))
{
if (fs1.Length != fs2.Length) return false;
long num = fs1.Length / 4;
for (long i = 0; i < num; i++)
if (br1.ReadUInt32() != br2.ReadUInt32())
return false;
num = fs1.Length % 4;
for (long i = 0; i < num; i++)
if (br1.ReadByte() != br2.ReadByte())
return false;
return true;
}
}
60MBのファイルで2秒ぐらいかかった。
1バイトずつ比較しても速度が同じだったんで最適化される模様。
0205デフォルトの名無しさん
2007/10/07(日) 23:51:500206デフォルトの名無しさん
2007/10/07(日) 23:53:10バスがどうこうとかいう問題じゃないけどな。
単純に無駄な処理が多すぎるから。
Readで適当なサイズのバッファに読み込んで、
forで同じように比較してもぜんぜん変わるだろう。
ただし4バイトとかだと多分まだ無駄が多いと思う。
どのくらいがいいかはなんともいえんけど、
適当なサイズで試して、大きく改善される範囲で適当にきめたらいいだろう。
数十から数百バイト以上まとめたらもうそんなに変わらんのじゃないかな、わからんけど。
0207デフォルトの名無しさん
2007/10/07(日) 23:54:050208204
2007/10/07(日) 23:56:13ただ、メモリ食いすぎるが。
ちなみにStirlingっていうバイナリエディタのバイナリ比較を試したら3秒かかった。
0209デフォルトの名無しさん
2007/10/07(日) 23:56:280210デフォルトの名無しさん
2007/10/07(日) 23:56:570211デフォルトの名無しさん
2007/10/07(日) 23:57:11明らかにキャッシュされてるっての。
0212デフォルトの名無しさん
2007/10/07(日) 23:57:500213デフォルトの名無しさん
2007/10/07(日) 23:58:54バイナリエディタでファイルの末尾だけ弄ってるんだけどそれでもだめ?
0214デフォルトの名無しさん
2007/10/08(月) 00:00:12ってか一瞬てどれくらい?
0215デフォルトの名無しさん
2007/10/08(月) 00:04:54同じぐらいサイズの別のファイルで試してみた900�_秒ぐらい。
0216148
2007/10/08(月) 00:19:30もう一度Read()でバイト配列の比較と一バイトずつのReadByte()比較を
テストしてみたらReadByte()の方が早いという結果が出ました。
50MBのバイナリファイルで
前者が3190ms
後者が2743ms
そして204の言うとおりメモリ食いすぎなので、どっちもこれだけ早いなら
超巨大なファイルが来たときのことを考えて、
ReadByte()で1バイトずつ比較した方がいいのかも。
てかWinMergeですら同じ条件で3秒くらいかかるからもういいかなぁ
0217204
2007/10/08(月) 00:22:15これで60MBのファイルが600ミリ秒になったよ。
64KBずつ配列に読んで比較。
using (FileStream fs1=new FileStream(file1, FileMode.Open))
using (FileStream fs2 = new FileStream(file2, FileMode.Open))
{
if (fs1.Length != fs2.Length) return false;
int num = (int)fs1.Length;
byte[] data1 = new byte[num];
byte[] data2 = new byte[num];
int read;
while (true)
{
if (fs1.Position == fs1.Length) return true;
read = fs1.Read(data1, 0, 1024 * 64);
fs2.Read(data2, 0, 1024 * 64);
for (int i = 0; i < read; i++)
if (data1[i] != data2[i])
return false;
}
}
0218204
2007/10/08(月) 00:26:560219148
2007/10/08(月) 00:36:37ありがとうございますっ!
それなら最速で4GBファイルとか来ても大丈夫ですね。
それでいきたい思います。
皆様本当にありがとうございました。
0220デフォルトの名無しさん
2007/10/08(月) 00:49:460221デフォルトの名無しさん
2007/10/08(月) 00:53:35がんばってね^^
0222148
2007/10/08(月) 01:02:44すいません。20秒かかるのですが、どこか間違ってますか?
int last = (int)fs1.Length;
byte[] data1 = new byte[1024 * 64];
byte[] data2 = new byte[1024 * 64];
int read;
int sumRead = 0;
while (true) {
if (sumRead == last) {
break;
}
read = fs1.Read(data1, 0, 1024 * 64);
sumRead += read;
fs2.Read(data2, 0, 1024 * 64);
for (int i = 0; i < read; i++) {
if (data1[i] != data2[i]) {
fs1.Close();
fs2.Close();
return false;
}
}
}
0223148
2007/10/08(月) 01:05:38のコードで
if (fs1.Position == fs1.Length) return true;
は64KBごとに2つプロパティを参照するから20秒かかるかなぁ
と思ってsumReadとlastに変えてみたのですが、
変わりませんでした。
???
0224デフォルトの名無しさん
2007/10/08(月) 01:15:350225デフォルトの名無しさん
2007/10/08(月) 01:20:45なんでいきなりそんなに変わったんだ?
あ、サイズ大きくしたら逆転したってことか?
0226デフォルトの名無しさん
2007/10/08(月) 01:25:08そのコード、break後が不明なんで
勝手にreturn trueを補ったけど早かったよ。
何度やっても遅いのならキャッシュじゃない気がする。
0227148
2007/10/08(月) 01:47:27>そのコード、break後が不明なんで
>勝手にreturn trueを補ったけど早かったよ。
break後ファイルCloseしてreturn trueだけなので
変わらないと思います。
何度やっても遅かったからよくわからないです。
すいません、今日はもう限界なので明日またがんばります。
>>225
何ででしょう。結局ReadByte()ってそんなに遅くないって
ことなんでしょうか。
0228デフォルトの名無しさん
2007/10/08(月) 01:56:08それは無駄な処理が多いからであって、
バッファされないとかそういう極端な差は無い。
結局IOが重過ぎてその程度の無駄な処理は
ほとんど影響ないってことかもね。
0229デフォルトの名無しさん
2007/10/08(月) 02:02:47ReadByte()も内部ではバッファに一度4KB読み込んでその配列から1バイトずつ返している
だけみたいだから、大して遅くはならないんじゃないか。
むしろRead()の方は結構面倒くさい処理を内部でやっているっぽい。幾つかの例外処理とか
配列のコピー処理とか。
0230デフォルトの名無しさん
2007/10/08(月) 03:32:35パフォーマンス計測してて、
キャッシュをクリアしたいと思ったとき、
OS再起動してるんだ。もしくは、
メモリ量と同じサイズのファイルを読み込む
ことでもクリアと同等の意味を持つと思ってる。
もっとお手軽な方法ないのかな?
0231デフォルトの名無しさん
2007/10/08(月) 03:36:570232デフォルトの名無しさん
2007/10/08(月) 03:50:000233230
2007/10/08(月) 03:52:002回目以降のファイル読み込みが早くなるやつだ。
もっと正確にいうなら、
自作アプリのパフォーマンス計測する際に
何度か計測するが、キャッシュが効いてると
1回目と2回目以降の計測はあきらかに条件がこと
なってしまう。できるかぎり同じ条件で
計測したいってことなんだが。
良い方法ないだろうか?
0234デフォルトの名無しさん
2007/10/08(月) 04:37:460235デフォルトの名無しさん
2007/10/08(月) 10:05:341バイト比較でも配列にバッファリングしてもたいした差はでないね〜
こういう配列の比較は
for (int i = 0; i<rsize1; i++) if (buf1[i] != buf2[i]) return false;
アンセーフ使うと早くはなるのは確認
unsafe {
fixed (byte * fp1 = &buf1[0])
fixed (byte * fp2 = &buf2[0]) {
byte * p1 = fp1; byte * p2 = fp2;
for (int i = 0; i<rsize1; i++) if (*p1++ != *p2++) return false;
}}
非同期IOも使ってみたが効果なしだった
0236デフォルトの名無しさん
2007/10/08(月) 10:09:57これと同じ事かな
リンク先では解決してないっぽいね
0237デフォルトの名無しさん
2007/10/08(月) 10:26:380238デフォルトの名無しさん
2007/10/08(月) 10:27:500239デフォルトの名無しさん
2007/10/08(月) 10:42:10早くなる。
ただし末尾が余る(ことがある)ので気をつける必要がある。
0240230
2007/10/08(月) 11:39:34いや。すでにあるファイルのリード系という前提で話してるから
それは使えない。
>>236
リンク先の質問と趣旨は違ってるけど、やりたいことは同じなので
ビンゴですね。でもM$の中の人が、
>システム ファイル キャッシュだけを解放するような手段は聞いたことがありません
って書いてるので、正攻法としてはできないっぽいですね(泣
>>238
メモリクリーナー系
いまいち何やってるかわからないので敬遠してたんだ。
いろいろさんきゅー
0241デフォルトの名無しさん
2007/10/08(月) 11:47:35ほかのメモリを強制的にスワップアウトさせてる。
たぶんシステムキャッシュもクリアされるだろうけどどうかな?
0242204
2007/10/08(月) 15:04:09大体一秒で10MB処理できる感じ。
なので>>217はキャッシュが効いているみたいだね。
実際に、4GB読み込んだ後に行ったら6秒かかった。
>>222との差は環境の差なのかもしれない。
うちの環境はSATAIIのHDDに2GBのメモリです。
maxBufSize以下のファイルサイズなら一括読込。それ以上なら分割読込するようにしてみた。
仮に100MBにしてあげると60MBのファイルは2.5秒で終りました。
using (FileStream fs1 = new FileStream(file1, FileMode.Open))
using (FileStream fs2 = new FileStream(file2, FileMode.Open))
{
if (fs1.Length != fs2.Length) return false;
long last = fs1.Length;
int maxBufSize = 好きな数字を入れるだけ;
int bufsize = fs1.Length > maxBufSize ? maxBufSize : (int)fs1.Length;
byte[] data1 = new byte[bufsize];
byte[] data2 = new byte[bufsize];
int read;
long sumRead = 0;
while (true)
{
if (sumRead == last) return true;
read = fs1.Read(data1, 0, bufsize);
sumRead += read;
fs2.Read(data2, 0, bufsize);
for (int i = 0; i < read; i++)
if (data1[i] != data2[i])
return false;
}
}
0243148
2007/10/08(月) 17:06:52ありがとうございました。色々試して
自分も50MBのファイルが2.3秒くらいでできました。
これでOKです!
本当に親身になって頂きありがとうございました。
0244デフォルトの名無しさん
2007/10/08(月) 17:10:110245デフォルトの名無しさん
2007/10/08(月) 17:17:28まぁ毛の先ほども皮欄だろうが。
0246デフォルトの名無しさん
2007/10/08(月) 17:25:100247デフォルトの名無しさん
2007/10/08(月) 17:29:410248デフォルトの名無しさん
2007/10/08(月) 17:30:55比較にかかる時間なんてわずかだから
非同期にしたところでたいした違いはないと思うけどな
0249デフォルトの名無しさん
2007/10/08(月) 17:38:09って気がするよな。
そもそも単純なスループットは非同期の方が悪いんじゃなかったかな?
0250デフォルトの名無しさん
2007/10/08(月) 17:40:10どれだけシークを少なくするかにかかってるんじゃね?
0251デフォルトの名無しさん
2007/10/08(月) 17:41:130252デフォルトの名無しさん
2007/10/08(月) 18:13:16イコールの時には効率上がりそうだけど、問題はその効率を最大化するnが
環境によって大きく異なることが予想される上に計算可能性が低い(ない?)ことか?
0253デフォルトの名無しさん
2007/10/08(月) 18:14:280254デフォルトの名無しさん
2007/10/08(月) 18:23:37これなら大丈夫だってことで
質問者がOKっていってんだからもういいだろ
パフォーマンスは脳内妄想してるだけじゃ
あがらないんだから、気になるんだったら
自分でコード書け
0255デフォルトの名無しさん
2007/10/08(月) 18:27:48ttp://arxiv.org/ftp/cs/papers/0502/0502012.pdf
0256デフォルトの名無しさん
2007/10/08(月) 18:35:38これは参考になるレポだわ
0257148
2007/10/08(月) 18:38:38この比較自体Workerスレッドみたいな感じで呼んでて
その中でさらにI/Oのために別スレッド立てて比較するのって
効率の良い処理になりますか?
意図を汲み取ってなかったらすみません。
あとパフォーマンス的には>>242のコードで満足してますが、
>byte[]をint*にキャストする話はどうなったんだ
がとても気になってます。でもこれはさらに上のレスで
>早くなる。
>ただし末尾が余る(ことがある)ので気をつける必要がある。
が引っかかってとりあえず保留にしてました。
0258デフォルトの名無しさん
2007/10/08(月) 18:40:12気をつければいいだけの話じゃん
0259デフォルトの名無しさん
2007/10/08(月) 18:41:12> >ただし末尾が余る(ことがある)ので気をつける必要がある。
> が引っかかってとりあえず保留にしてました。
これが分からないなら手を出すべきじゃないね。文字通りunsafeな世界のわけだし。
0260デフォルトの名無しさん
2007/10/08(月) 18:42:05もうそこだけネイティブCで書けよ
0261148
2007/10/08(月) 18:43:19というか>>235で全てを物語ったレスが
IO非同期は効果なしって書いてある。
そして気をつけてbyte[]をint*キャストで
比較していけば最速ってことか
0262デフォルトの名無しさん
2007/10/08(月) 18:50:14分かってないなら無理して背伸びしない方がいいよ。
だからCPUを遊ばせないためにIOを非同期にするんでしょ。
「次」を読んでる間に「前」に読んだバイト列のコンペアを行うんだよ。
0263デフォルトの名無しさん
2007/10/08(月) 18:51:35なしてそんな分かりきったことをわざわざ言われにゃならんのだ
0264デフォルトの名無しさん
2007/10/08(月) 19:00:56nバイトのコンペアが終了する間に次のバイト列のリードが終わってなかったら?
あるいは逆の場合は?
0265デフォルトの名無しさん
2007/10/08(月) 19:02:48違うね
読み込みに100秒、比較に1秒かかるとする
順番にやったら101秒かかるが
非同期にやれば100秒ですむ
どっちか早い方の時間になる
0266デフォルトの名無しさん
2007/10/08(月) 19:08:28ファイル読み込みだけを考えると、
非同期I/Oつかおうがつかうまいが、
かかる時間は変わらない
非同期I/Oにして自由になった時間を何に使うかが問題
メモリコンペア程度のつまらん処理なら
ファイル読み込み>>>>>>>>>>>>>>>>メモリコンペア
だろうから、非同期I/Oにしたところで効果は薄い
ようは、自由になった時間遊ばせないだけの仕事があるのかということ
仕事が無いのに自由になっても結局遊ぶだけだ
0267デフォルトの名無しさん
2007/10/08(月) 19:08:37おいおいマジかよw
0268デフォルトの名無しさん
2007/10/08(月) 19:09:070270デフォルトの名無しさん
2007/10/08(月) 19:15:040271デフォルトの名無しさん
2007/10/08(月) 19:18:150272デフォルトの名無しさん
2007/10/08(月) 19:18:16にわかには信じられないね。
具体的にどういう理由でそうなるのか説明できる?
0273デフォルトの名無しさん
2007/10/08(月) 19:21:120274デフォルトの名無しさん
2007/10/08(月) 19:47:27ネタか釣りか何か知らんが、さっきから意味不明なレスが多すぎないか
0275デフォルトの名無しさん
2007/10/08(月) 19:48:52非同期: IO + スレッド同期
0276デフォルトの名無しさん
2007/10/08(月) 19:51:50IO中の余ってるCPUパワーでやればいいんじゃねえの
0277デフォルトの名無しさん
2007/10/08(月) 19:57:47おーい、これ見ろおまいら。
これが政府が答えられずに手も足もでなくなった最優秀質問だぜぃ!!!
長妻議員を総理大臣にしようぜい!!!
開会日 : 平成19年10月3日 (水) 長妻昭(民主党・無所属クラブ) 14時 56分 1時間 23分
http://www.shugiintv.go.jp/jp/wmpdyna.asx?deli_id=36730&media_type=wb&lang=j&spkid=578&time=02:04:16.0
0278デフォルトの名無しさん
2007/10/08(月) 19:58:130279デフォルトの名無しさん
2007/10/08(月) 20:01:51非同期IO機能は一般的に同期IOよりスループットは落ちる。
よってCPU処理がある程度負荷が高い場合で無いとむしろ効率は悪化する。
それから、単なるシーケンシャルの読み込みだとOS側のバッファなんかで実質
バックグラウンドで読んでるのと同じになって、さらに非同期の効果は無くなる。
0280デフォルトの名無しさん
2007/10/08(月) 20:04:13一概には言えないって言ってるでしょ。
0281デフォルトの名無しさん
2007/10/08(月) 20:04:15OSって偉いなあ
0282デフォルトの名無しさん
2007/10/08(月) 20:14:17このコピペって、あちこちで見るけど、貼ってるやつは常駐してるのか?
0283デフォルトの名無しさん
2007/10/08(月) 20:44:150284デフォルトの名無しさん
2007/10/08(月) 21:03:00byte / int 幅の問題は単純にそれだけで比較したほうがいいと思う。
あとファイルI/Oだけに着目すると下記のバッファサイズでも多少変わる。
32k−64kバイトあたりがパフォーマンスがいい感じで1Mとると逆に遅くなった。
new FileStream(file1, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, buffer_size)
0285デフォルトの名無しさん
2007/10/08(月) 21:51:220286デフォルトの名無しさん
2007/10/08(月) 22:01:110287デフォルトの名無しさん
2007/10/08(月) 22:13:09実測せず、煽り気味に想像でレスをする事です
0288デフォルトの名無しさん
2007/10/08(月) 22:51:51連中ばっかだな・・・
0289デフォルトの名無しさん
2007/10/08(月) 22:54:25まぁ、困ったもんだよな
0290デフォルトの名無しさん
2007/10/08(月) 23:23:51Makefileも書けない奴とか
まぁ、困ったもんだよな
0291デフォルトの名無しさん
2007/10/08(月) 23:47:40はっきりいうが
そ ん な も ん は 過 去 の 遺 物 だ
0292デフォルトの名無しさん
2007/10/08(月) 23:50:07DrawSubItemでサブアイテムに自前の処理を入れると
ForeColorで指定した文字色が無効になってしまうようなのですが
行全体の文字色を変えるにはどうしたら良いですか?
最後にe.DrawDefault = true;でデフォルトの処理に放り投げても駄目だした。
0293デフォルトの名無しさん
2007/10/09(火) 02:14:23>>289
まず「オブジェクト指向」理解しようぜ
0294デフォルトの名無しさん
2007/10/09(火) 02:17:41だよな。
Makefileとか言うくせにcsproj書けないやつが多くて困る。
0295デフォルトの名無しさん
2007/10/09(火) 03:22:580296デフォルトの名無しさん
2007/10/09(火) 03:25:110297デフォルトの名無しさん
2007/10/09(火) 03:53:26VSの不具合でcsprojの手修正が必要な事もある。
普通に使ってりゃ気にする必要ないんだけどね。
0298デフォルトの名無しさん
2007/10/09(火) 04:28:10<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="Compile">
<Csc Sources="test1.cs" TargetType="Exe" Optimize="true" />
</Target>
</Project>
0299デフォルトの名無しさん
2007/10/09(火) 06:56:26Console.WriteLine(" ,;f ヽ ");
Console.WriteLine(" i: i ");
Console.WriteLine(" | | ");
Console.WriteLine(" | | ///;ト, ");
Console.WriteLine(" | ^ ^ ) ////゙l゙l;");
Console.WriteLine(" (. >ノ(、_, )ヽ、} l .i .! | ");
Console.WriteLine(" ,,∧ヽ !-=ニ=- | │ | .| ");
Console.WriteLine("/\..\\`ニニ´ !, { .ノ.ノ ");
Console.WriteLine("/ \ \ ̄ ̄ ̄../ / .| ");
0300デフォルトの名無しさん
2007/10/09(火) 09:58:53antのが分かりやすかった気がする。
0301デフォルトの名無しさん
2007/10/09(火) 10:48:28csc -O test1.csと言うだけのために冗長だよなあ
まあXMLだから、スキーマ知ってりゃ適当に自動生成すりゃいいだけなんだが
0302デフォルトの名無しさん
2007/10/09(火) 13:08:39リクエスト毎に平均してディスク半回転分の時間が無駄になる危険が増すので
なるべく多重で発行しておくべきですよ。
特に物理的にも連続して配置されているデータのシーケンシャルな読み出しの場合。
書き込みはどうでもいいけど。
リクエスト1個で前のが終わってから次のリクエストを発行、なんていうのんびりした
発行の仕方だと>>266みたいに面倒なだけで意味ないってことにもなりかねない。
0303デフォルトの名無しさん
2007/10/09(火) 13:11:070304デフォルトの名無しさん
2007/10/09(火) 13:25:53DVD一枚分とかのISOイメージみたいなもののハッシュを計算するプログラムでは
常にリクエストが空にならないようにしとくのとそうでのないのでは倍くらい速度が変った。
コードが複雑になるのを避けつつ効率化するだけなら、
一度のリクエストで読む量を100Mとかに増やしてもいいわけだけど、
キャンセルボタン押したときの反応に時間かかることがあって却下された・・・
0305デフォルトの名無しさん
2007/10/09(火) 13:35:240306デフォルトの名無しさん
2007/10/09(火) 13:38:19いいんじゃない?どうやろうが差がないよ、とか妙な主張したいならさ。
0307デフォルトの名無しさん
2007/10/09(火) 13:42:170308デフォルトの名無しさん
2007/10/09(火) 13:42:280309デフォルトの名無しさん
2007/10/09(火) 15:54:52役に立ちそう
0310デフォルトの名無しさん
2007/10/09(火) 16:07:220311デフォルトの名無しさん
2007/10/09(火) 16:27:480312デフォルトの名無しさん
2007/10/09(火) 16:28:40結局誰一人手を動かさないのであった
0313デフォルトの名無しさん
2007/10/09(火) 16:38:240314デフォルトの名無しさん
2007/10/09(火) 17:18:51LINQ の標準クエリって大半がラムダ式を引数に取るのに、
SequenceEqual とかの比較系だけは、
比較デリゲートじゃなくて IEqualityComparer を取るよね?
デリゲートが匿名で作れるのに対して、
IEqualityComparer は匿名で作れないから使いづらいんだけど。
0315デフォルトの名無しさん
2007/10/09(火) 18:02:110316デフォルトの名無しさん
2007/10/09(火) 18:11:06確かに意味わからんなあ
0317デフォルトの名無しさん
2007/10/10(水) 08:58:34>>308 の件だがディスクIOなしの16Mのバイト配列で比較したらforを使ったのと変わらなかった。
SequenceEqualは特別なことはやってないもよう。
for (int i=0; i<size; i++) if (b1[i] != b2[i]) return false; return true;
と
return b1.SequenceEqual(b2);
で比較。
0318デフォルトの名無しさん
2007/10/10(水) 18:38:18選択方法を、CTRL+クリック から 普通にクリックして選択・非選択を切り替えれるように
出来ますかね?
CellClickイベントで頑張ろうと思ったのですが、うまくいかなくてorz
0319デフォルトの名無しさん
2007/10/10(水) 21:29:40とこからサンプルを見てこのように書いたのですが
描画されないのは何が問題ですか?
public Form1() {
InitializeComponent();
Graphics g = this.CreateGraphics();
Pen p = new Pen(Color.Black, 1);
g.DrawRectangle(p, 10, 20, 100, 80);
p.Dispose();
g.Dispose();
}
http://dobon.net/vb/dotnet/graphics/drawrectangle.html
ここにはこれだけ書けばよさそうな感じですが・・・。
0320デフォルトの名無しさん
2007/10/10(水) 21:39:36せっかくdobon氏が丁寧に書いてくれてるんだからちゃんと読めよw
CreateGraphicsメソッド使え、なんて書いてあるか?
書いてねえよw
しかもコンストラクタで実行ってアホかw
まだ存在してもいないキャンバスに絵が描けるわけがないだろ
0321デフォルトの名無しさん
2007/10/10(水) 21:40:14protected override void OnPaint(PaintEventArgs e){
Graphics g = e.Graphics;
//ここで描画
//g.Dispose()は不要
base.OnPaint(e);
}
0322デフォルトの名無しさん
2007/10/10(水) 22:07:340323デフォルトの名無しさん
2007/10/10(水) 22:14:36書いてから自分でも思った
0324デフォルトの名無しさん
2007/10/10(水) 22:29:370325デフォルトの名無しさん
2007/10/10(水) 22:34:130326デフォルトの名無しさん
2007/10/10(水) 22:36:35C#で書かれたアプリケーションをお金を払ってまでも使いたい人がいると思いますか?
0327デフォルトの名無しさん
2007/10/10(水) 22:39:020328デフォルトの名無しさん
2007/10/10(水) 22:45:148000本ぐらい売れた。
0329デフォルトの名無しさん
2007/10/10(水) 22:46:270330デフォルトの名無しさん
2007/10/10(水) 22:50:27ソフト名晒せばもっと売れんじゃん
0331デフォルトの名無しさん
2007/10/10(水) 23:36:31これはC#だそうな。
2万本売れたと聞いた。
0332デフォルトの名無しさん
2007/10/10(水) 23:56:570333デフォルトの名無しさん
2007/10/11(木) 00:00:41サーバー側はJavaでstrutsあたりだったと思う。
それ用にわざわざLinuxのサーバーを1台動かしてるよ。
クライアント側は一部のツールにC#が使えるようになってるだけで
さすがにドングルとかで認証してるんだし全部C#とは思えない…
ドングルが必要なので自分は使ってないので実際のアプリがどうなってるかはよくわからんが。
0334デフォルトの名無しさん
2007/10/11(木) 00:12:570335デフォルトの名無しさん
2007/10/11(木) 00:15:190336デフォルトの名無しさん
2007/10/11(木) 00:16:32商用って何か分かってる?
VBAで書かれたソフトだらけですが何か?
0337デフォルトの名無しさん
2007/10/11(木) 00:17:57それがクセだらけ。
ctr-cとか使えない。
0338デフォルトの名無しさん
2007/10/11(木) 00:26:190339デフォルトの名無しさん
2007/10/11(木) 00:29:39業務用:デスマーチの産物
0340デフォルトの名無しさん
2007/10/11(木) 01:04:27どんな用途で選ぶかってことだけなんだから
0341デフォルトの名無しさん
2007/10/11(木) 10:52:350342デフォルトの名無しさん
2007/10/11(木) 11:33:330343デフォルトの名無しさん
2007/10/11(木) 11:52:04マ板だけにしてくれ
0344デフォルトの名無しさん
2007/10/11(木) 13:52:480345デフォルトの名無しさん
2007/10/11(木) 14:03:280346デフォルトの名無しさん
2007/10/11(木) 19:33:270347デフォルトの名無しさん
2007/10/11(木) 20:31:140348デフォルトの名無しさん
2007/10/11(木) 20:33:190349デフォルトの名無しさん
2007/10/11(木) 21:27:02OracleもSQLServerも使ったことあるけど、DBの規模が小さいせいか糞ともなんとも思わなかったんですが・・
0350デフォルトの名無しさん
2007/10/12(金) 07:51:180351デフォルトの名無しさん
2007/10/12(金) 09:02:270352デフォルトの名無しさん
2007/10/13(土) 13:57:50文字列の先頭にタブ文字があってもこれは
認識されない仕様ですか?
0353デフォルトの名無しさん
2007/10/13(土) 14:00:280354デフォルトの名無しさん
2007/10/13(土) 14:02:16表示する方法はないですか?
0355デフォルトの名無しさん
2007/10/13(土) 14:05:410356デフォルトの名無しさん
2007/10/13(土) 14:31:350357デフォルトの名無しさん
2007/10/13(土) 15:01:300358デフォルトの名無しさん
2007/10/13(土) 15:31:38文字列の中に出た場合の計算がめんどいけど。
0359デフォルトの名無しさん
2007/10/13(土) 17:12:43http://youtv.atspace.com/?X3/?YTV=%E5%90%8C%E6%99%82%E3%81%AB%E9%9B%BB%E8%A9%B1
0360デフォルトの名無しさん
2007/10/13(土) 22:54:31二つとも仕込みをいれてるから片方動いたら片方も動いてそれにつられて
またもとの方にイベントがやってきて連鎖になって困ってます。
何かロックをかけるいい方法はないですかね。
0361デフォルトの名無しさん
2007/10/13(土) 22:57:280362デフォルトの名無しさん
2007/10/13(土) 23:09:570363デフォルトの名無しさん
2007/10/13(土) 23:36:302個のTextBoxの動作を調停する'Mediator'を作る方が考え方としてはシンプルだよ。
コードの量は増えるけど。
0364デフォルトの名無しさん
2007/10/13(土) 23:39:580365デフォルトの名無しさん
2007/10/13(土) 23:41:44書き直しは手痛いっす。
フラグを100msくらいにタイマーで落とせばいいかな。
0366デフォルトの名無しさん
2007/10/13(土) 23:47:53>>363でも結局実装はフラグでやるんだろ
0367デフォルトの名無しさん
2007/10/14(日) 02:01:261.TextBox1スクロール
2.TextBox2がスクロールされる
3.それにつられてTextBox1がスクロールされる ← アクティブならスクロールしない
2の時点でTextBox2がアクティブになったら使えないけどね。
0368デフォルトの名無しさん
2007/10/14(日) 02:04:54思うんだがそれではいかんのか
0369デフォルトの名無しさん
2007/10/14(日) 08:11:40Focusedプロパティではないですよね?
>>368
すみません、それ教えてください。
もしくはそのようなサイトがあれば・・・。
0370デフォルトの名無しさん
2007/10/14(日) 08:19:45街中を歩きながら、「ラヂヲ・・ラヂヲ・・」とつぶやくこと。
誰に話しかけるでもなく、そんなに大きくない声で発声する。
ラヂヲ教を認知させるための手段の一つ。
0371デフォルトの名無しさん
2007/10/14(日) 10:49:440372デフォルトの名無しさん
2007/10/14(日) 10:58:130373デフォルトの名無しさん
2007/10/14(日) 11:44:00タイマ使うんだったら、前の両方の値を覚えといて変化した方に合わせれば簡単なんじゃね
美しくないけど
0374デフォルトの名無しさん
2007/10/14(日) 17:09:161.TextBox1スクロール
2.TextBox2がスクロールされる
3.それにつられてTextBox1がスクロールされそうだけどスクロール位置が同じだからスクロールしない。
0375デフォルトの名無しさん
2007/10/14(日) 17:31:28すみません、その方法は3の時に既にTextBox1がスクロールされてたら
ってことにはならないでしょうか。ならなければいいんですが。
大変申し訳ないですが、今しがたフラグ方式でできたのでこれで
いこうと思います。タイマもつかわずに出来る方法ができました。
今のスクロールポジションをSendMessageする人をMediator?じゃないです
けど、調停する人がいて(というよりもTextBox二つを持つ上のレイヤーの
クラス)
スクロールされたらこの人にコールバックしてもう片方にSendMessage
します。そしてその時に1回だけフラグを立てておいて、送られた方から
コールバックがきてもフラグが立ってるのでこっちはSendMessageせずに
フラグを落とすだけにします。
そもそも1回のSendMessageにつき1回のスクロールイベントが飛ぶのだから
フラグを落とすタイミングはここにすればよかったんですね。
>>361が言ってたのはこういうことだったのかとわかりました。
本当にありがとうございました。
0376デフォルトの名無しさん
2007/10/15(月) 13:18:56白くなるようにしたいのですが、どういう処理をすればよいでしょうか? 生のビットマップのデータを操作する以外
の方法でお願いします。
0377デフォルトの名無しさん
2007/10/15(月) 13:22:350378デフォルトの名無しさん
2007/10/15(月) 13:26:55ちなみに描くのは矩形だけではなくて線とかも描きます。
画像のチャンネルいじればいいのかなとか思いますが画像処理の知識がゼロなんで
0379デフォルトの名無しさん
2007/10/15(月) 13:29:420380376
2007/10/15(月) 13:36:08描くのが矩形だけじゃないので他に方法ないっすか?
0381デフォルトの名無しさん
2007/10/15(月) 13:37:27しらん
0383デフォルトの名無しさん
2007/10/15(月) 13:43:29>Graphicsで描画していて、背景が白の中に二つの色付きの矩形があって、その二つの矩形が重なった部分だけ
>白くなるようにしたいのですが、どういう処理をすればよいでしょうか?
やりたいこと自体この質問とは全然違うっぽいので、もういちどちゃんと
何がしたいのかを書かないと誰もまともには答えられないぞ。
抽象化できないなら、具体的に何をしようとしてるのか書く。
エスパーすると「C# の Graphics で xor 描画みたいなことはできますか?」
という質問の類のような気がするが・・・・
0384376
2007/10/15(月) 13:46:00相互に重なった部分だけ白抜きされるようにしたいのです。
0385デフォルトの名無しさん
2007/10/15(月) 13:50:240386デフォルトの名無しさん
2007/10/15(月) 17:20:170387デフォルトの名無しさん
2007/10/15(月) 18:45:59Region使えばできるよ。
dobon.netに解説があるから読め。
っていうか、なんで質問する前にこういうwebページで調べたりググったりしないの?
正直理解不能な神経だわ
0388デフォルトの名無しさん
2007/10/16(火) 02:19:29ナイスガイだけど、最後の2行に引っかかった。
そもそもRegionとかPathとかを知らないようなので、
ググってもなかなか正解にはたどり着けない気がする。
あと、DobonだとRegionの説明は「領域を塗りつぶす」ってタイトルだから
そこに正解があるとは気付きにくい(領域を塗りつぶすってのと重なりの処理が繋がらない)。
>>376はちゃんと検索してWebページも調べた上でここに来たのかもしれない。
それを確認せずそこまで強く言うことは無いと思うんだ。
まあ、ふらっと行けって言われたらそれまでだけど。
0389デフォルトの名無しさん
2007/10/16(火) 08:43:46「ググれ」で済むなら、このスレいらん。おまいが出て行け!
おまえ何様のつもりだ?このスレの主にでもなったつもりか?
キモヲタはさっさと市ねよ。
0390デフォルトの名無しさん
2007/10/16(火) 08:50:50君は余計
>>388氏を見習いなさい
0391デフォルトの名無しさん
2007/10/16(火) 08:54:150392デフォルトの名無しさん
2007/10/16(火) 08:57:59じゃー俺も>>388を見習いますよ
0393デフォルトの名無しさん
2007/10/16(火) 10:28:200394デフォルトの名無しさん
2007/10/16(火) 10:48:420395デフォルトの名無しさん
2007/10/16(火) 10:49:430396デフォルトの名無しさん
2007/10/16(火) 10:57:490397デフォルトの名無しさん
2007/10/16(火) 11:09:39このスレにもおわす電子妖精。
信仰ポイント集めれば誰かが萌えキャラ化して下々の者にもお姿を
拝見出来るようになる。
0398デフォルトの名無しさん
2007/10/16(火) 23:00:080399デフォルトの名無しさん
2007/10/17(水) 00:38:290400デフォルトの名無しさん
2007/10/17(水) 00:51:230401デフォルトの名無しさん
2007/10/17(水) 00:55:480402デフォルトの名無しさん
2007/10/17(水) 01:06:060403デフォルトの名無しさん
2007/10/17(水) 01:19:400404デフォルトの名無しさん
2007/10/17(水) 01:49:33DBサーバが速いせいか快調だよ
C/S業務アプリだけど
0405デフォルトの名無しさん
2007/10/17(水) 08:54:06(2) (1)のインターフェイスを実装したプラグイン1.dll
(3)メインプログラム
という構成で
(3)から動的に
(2)を参照の追加?をして
(2)の実装クラスを(1)のインターフェイスに生成する
方法は用意されているのでしょうか?
0406デフォルトの名無しさん
2007/10/17(水) 09:16:09インターフェイスは初めから作っておいて、メインとプラグインの両方から参照じゃいかんの?
0407デフォルトの名無しさん
2007/10/17(水) 09:32:55仮にできたとして、そのインスタンスは誰が操作できるのか
0408デフォルトの名無しさん
2007/10/17(水) 09:35:06動的にインタフェースを追加して、どうやってそのインターフェースを扱うつもりだ?
ユーザー操作によってReflectionを使ってそのインターフェースを実装したクラスをコントロールするというならいくらでも出来るだろ。
つうかそんなのやろうとしてるぐらいだったらチャラッとサンプルプログラム作ってみなよ。
0409デフォルトの名無しさん
2007/10/17(水) 10:06:29Type class = asm.GetType("Foo");
IFoo foo = (IFoo) Activator.CreateInstance(class);
--
csc /t:library /r:IFoo.dll Foo.cs
csc /r:IFoo.dll Hoge.cs
0410デフォルトの名無しさん
2007/10/17(水) 10:12:03exeの方がライブラリで、dllの方をexeにせえよ
0411デフォルトの名無しさん
2007/10/17(水) 10:42:54http://msdn2.microsoft.com/en-us/library/bb332048(VS.90).aspx
自動生成の機能とかはないとは思うけど、
標準ライブラリにこういうものあるなら
その作法に従っとくのがいい気がする。
まあ、まだ人柱情報もあんまりなくて、良し悪し分かんないけど。
0412405
2007/10/17(水) 11:08:21抽象クラスならば、
IsSubclassOfで派生クラスを検出可能でした。
インターフェイスの場合は・・・ちょっと分からなかった。
参考URL:
ttp://d.hatena.ne.jp/isa1122/20070828/1188318861
0413デフォルトの名無しさん
2007/10/17(水) 16:07:10Uri uri = new Uri(i.ToString() + ".jpg", UriKind.RelativeOrAbsolute);
i++
これにThread.Sleep(1000)を使ってもうまく機能しません
1秒止まった後、一番最後の画像のみ表示されます
どうやればうまくいくのでしょうか?
0414デフォルトの名無しさん
2007/10/17(水) 16:08:03そりゃスレッドを止めたらだめだろ。
ターマー使え。
0415デフォルトの名無しさん
2007/10/17(水) 16:09:59IsAssignableFromのことを言ってるのか?
0416デフォルトの名無しさん
2007/10/17(水) 16:47:13タイマーを使ってもうまく動かないのです
どのように書けばよいのでしょうか?
0417デフォルトの名無しさん
2007/10/17(水) 17:23:55void タイマー_ティック( ... )
{
if( カウンタ < max ){
画像表示( カウンタ++ );
}
else{
タイマー.Enabled = false;
}
}
0418デフォルトの名無しさん
2007/10/17(水) 21:00:32制御構造がおかしいだけだろ。
ソースさらせ。
0419デフォルトの名無しさん
2007/10/17(水) 21:36:56入れ方がTextプロパティに+=で代入してくのはまずいですか?
元テキストが全て改行付きでstring[]配列に入っているんですが
AppendText()だと改行が2個ついちゃうのでRichTextBox.Text += str[i]
みたいな感じでいれてるんですけど、900行くらいで5秒くらい
かかってます。こんなもんですか?それとも他に方法ありますか?
0420デフォルトの名無しさん
2007/10/17(水) 21:47:010421デフォルトの名無しさん
2007/10/17(水) 21:48:59stringはimmutableなので+=の度に毎回インスタンスが作られます
0422デフォルトの名無しさん
2007/10/17(水) 21:49:42StringBuilderを使って一括で代入すれ。
Textプロパティの変更はかなり重い操作。
0423デフォルトの名無しさん
2007/10/17(水) 22:11:11さすがですね!即答だ。。。
StringBuilderで調べたら
dobonさんのとこにもありましたね
http://dobon.net/vb/dotnet/string/stringbuilder.html
即レスには驚きでした。ありがとうございました!
0424デフォルトの名無しさん
2007/10/17(水) 22:11:48話はもっとややこしいw
0425デフォルトの名無しさん
2007/10/17(水) 22:19:59さっそくStringBuilderでやってみました。
めちゃくちゃ早いですね・・・・
勉強になりました。
0426デフォルトの名無しさん
2007/10/17(水) 22:24:49stringのローカル変数に+=してけば体感できるぐらいの差は出なかったと思うよ
StringBuilderの方が圧倒的に早いけど、
stringの+=を体感できるほど遅くするには結構足し合わせないといけない
0427425
2007/10/17(水) 22:36:19変数に入れたりした方がいいのですか?
プロパティにアクセスするとそんなに遅くなるのですか?
0428デフォルトの名無しさん
2007/10/17(水) 22:38:110429デフォルトの名無しさん
2007/10/17(水) 22:38:54なんか余計な処理をいろいろやるんだろうね
わからんけど
普通は別にプロパティそのまま使えばいい
0430425
2007/10/17(水) 23:00:48何かプロパティにアクセスするのが悪みたいに思ってました
では普通に使っていいけど、ループとかには使うなってことで
いいですか?
0431デフォルトの名無しさん
2007/10/17(水) 23:04:59その都度メモリを確保して処理するStringよりパフォーマンスは上。
0432デフォルトの名無しさん
2007/10/17(水) 23:10:32ただ、特にコントロールのプロパティは余計な処理が多いことが多い。
0433デフォルトの名無しさん
2007/10/17(水) 23:12:44string a = "1" + "2" + …"100"
をStringBuilderにしたら圧倒的に遅くなりました!
0434デフォルトの名無しさん
2007/10/17(水) 23:16:48それを何回もやれば別だが
0435デフォルトの名無しさん
2007/10/17(水) 23:17:590436デフォルトの名無しさん
2007/10/17(水) 23:18:24こう見えてCの時代からやってます
0437デフォルトの名無しさん
2007/10/17(水) 23:23:16それ右辺がコンパイル時に定数式として結合されるからノーコスト。
0438デフォルトの名無しさん
2007/10/17(水) 23:28:080439デフォルトの名無しさん
2007/10/17(水) 23:28:54int値なんだから40億ぐらいの値しか取れないし
0440デフォルトの名無しさん
2007/10/17(水) 23:29:470441デフォルトの名無しさん
2007/10/17(水) 23:30:400442デフォルトの名無しさん
2007/10/17(水) 23:32:33やっぱ42億じゃん
0443デフォルトの名無しさん
2007/10/17(水) 23:33:21やはり重複してしまうのですね
ありがとうございます
0444デフォルトの名無しさん
2007/10/17(水) 23:34:400445デフォルトの名無しさん
2007/10/17(水) 23:41:06だから冗談w
0446デフォルトの名無しさん
2007/10/17(水) 23:41:230447デフォルトの名無しさん
2007/10/17(水) 23:42:050448デフォルトの名無しさん
2007/10/17(水) 23:43:230449デフォルトの名無しさん
2007/10/18(木) 00:15:070450デフォルトの名無しさん
2007/10/18(木) 11:26:060451デフォルトの名無しさん
2007/10/18(木) 13:16:42{
fixed (char* str = ((char*) this))
{
char* chPtr = str;
int num = 0x15051505;
int num2 = num;
int* numPtr = (int*) chPtr;
for (int i = this.Length; i > 0; i -= 4)
{
num = (((num << 5) + num) + (num >> 0x1b)) ^ numPtr[0];
if (i <= 2)
{
break;
}
num2 = (((num2 << 5) + num2) + (num2 >> 0x1b)) ^ numPtr[1];
numPtr += 2;
}
return (num + (num2 * 0x5d588b65));
}
}
0452デフォルトの名無しさん
2007/10/18(木) 15:50:29private void ChangeYourNameEvent(string s) {
this.Text = s;
}
オートメーションのイベントに、登録し
AppOjt.OnChange += this.ChangeYourNameEvent;
イベントが発生すると、上の関数が呼ばれるのですが
this.Text = s で例外が発生します
(MessageBox.show(s) ならOK)
どうも、呼び出された時には this が失われている様子なのですが
フォーム等のパーツへ反映させる方法って、あります???
0453デフォルトの名無しさん
2007/10/18(木) 15:54:210454デフォルトの名無しさん
2007/10/18(木) 16:12:10--------
有効ではないスレッド間の操作:
コントロールが作成されたスレッド以外のスレッドからコントロール 'Form1' がアクセスされました。
--------
でした
関数の定義に問題があるのでしょうか???
Synchronize 辺りを調べ中です
0455デフォルトの名無しさん
2007/10/18(木) 16:18:18form.Invokeを使ってformのスレッドに動かしてもらう必要がある
っていう話だと思うけどよく知らん
0456デフォルトの名無しさん
2007/10/18(木) 16:21:570457デフォルトの名無しさん
2007/10/18(木) 16:30:15なるほど this.InvokeRequired をチェックして、Invoke を使えということらしい
試してみます
0458デフォルトの名無しさん
2007/10/18(木) 22:47:02ローカルにあるswfが埋め込まれたhtmlを読み込ませ、表示させたいのです。
当然、
http://www.macromedia.com/support/documentation/jp/flashplayer/help/settings_manager04.html
の設定で、ソフトもswfファイルも登録しているのですが
画面が真っ白のまま、何も表示されません。
ちなみに、IEで直接開くと、問題なく読めます。
ちなみに、サーバーにアップロードした場合、正常に読めましたが
今度は、Flash上のコントロールが、操作できません。
IEだと、操作は出来ます。
なので、セキュリティー設定か、何かの問題だと思ってるのですが・・・
このようなセキュリティー設定のプロパティーがWeb Browserクラスのメンバに見当たらないのですが、どうすれば良いのでしょうか?
よろしくお願いします。
0459458
2007/10/18(木) 22:51:36後半の
>今度は、Flash上のコントロールが、操作できません。
ですが、キーボードのtabを押すと移動が出来て、エンターキーでボタンを押す事が出来ます。
何となくマウスイベントが伝わってないような雰囲気なのです。
0460デフォルトの名無しさん
2007/10/18(木) 22:59:500461デフォルトの名無しさん
2007/10/18(木) 23:11:47AxWebBrowser使わざるを得ない場合が多い
0462デフォルトの名無しさん
2007/10/18(木) 23:45:15実装が中途半端な感じになっている。まぁバグみたいなもの
0463デフォルトの名無しさん
2007/10/18(木) 23:50:460464デフォルトの名無しさん
2007/10/19(金) 00:12:510465デフォルトの名無しさん
2007/10/19(金) 00:24:59特定の人格傾向の持ち主(まあ要するにヲタなんだと思うけど)しか使わない
言葉をよく平気で使えるよね。
0466デフォルトの名無しさん
2007/10/19(金) 00:27:35ってオタ用語だったの?
0467デフォルトの名無しさん
2007/10/19(金) 00:29:170468デフォルトの名無しさん
2007/10/19(金) 00:33:370469デフォルトの名無しさん
2007/10/19(金) 00:51:42困ったことが起きたので相談に乗ってもらえないでしょうか.
サーバ側:TcpListnerで待ちうけ
クライアント側:TcpClientでサーバへ接続
どちらも:TcpClientからNetworkStream取得してBinaryFormatterかまして通信
なぜかクライアント側だけCPU負荷が50%まであがるんです.
CPUはCore2Duoで,タスクマネージャで見ると両方とも50%あたりをうろうろしてるという・・・
サーバ側,クライアント側,ともに受信の無限ループのスレッドで組んでるんですが,
デシリアライズのときにStreamから情報がくるまではループはとまってます.
原因として考えられることがあったら教えていただけるとありがたいです.
0470デフォルトの名無しさん
2007/10/19(金) 01:40:340471デフォルトの名無しさん
2007/10/19(金) 01:52:49ビジーループになってるから適当にThread.Sleep入れとけ。
0472458
2007/10/19(金) 01:54:47AxWebBrowserを使う事で、どういうわけかわかりませんがボタンのクリック含めて解決しました。
どうもありがとうございました。
ただ、ローカルに保存されている場合、やはり表示がされません。真っ白の画面です。
セキュリティー設定が原因だと思い
とりあえず、IInternetSecurityManagerを実装し、ProcessUrlAction()が呼び出された時
全てにreturn COM.URLPOLICY_ALLOW;を返してみましたが、やはりダメでした。
一体何が原因なのでしょうか・・・。
引き続きよろしくお願いします。
0473デフォルトの名無しさん
2007/10/19(金) 02:44:19ttp://www.macromedia.com/support/documentation/jp/flashplayer/help/settings_manager04.html
この設定は、あくまでIEの為の設定。
で、設定ファイルは
C:\Documents and Settings\ユーザ名\Application Data\Macromedia\Flash Player\macromedia.com\support\flashplayer\sys
のsettings.solに保存されるわけだが
残念な事に、IEコンポネを使った場合、この設定を使ってくれない。
理由はわからないけどね。
0474デフォルトの名無しさん
2007/10/19(金) 05:05:03プロジェクト名:kadai01
フォーム名:FrmCount
処理の内容: 結果
1.実行直後 初期画面が表示される
2.(性別入力)ボタンクリック (性別が選択されません)と表示される
3.性別(男性)を選択する
4.(性別入力)ボタンを2回クリック 1回目のクリックで(集計結果表示)ボタンが有効になる
5.性別(女性)を選択する
6.(性別入力)ボタンを3回クリック
7.(集計結果表示)ボタンクリック 男性2人 女性3人 と表示される
(性別入力)ボタンと(集計結果表示)ボタンが無効になる
8.3〜7の処理を実行 7の結果が表示される
9.(終了確認)のメッセージで フォームを閉じる
(はい)ボタンクリック
使用するコントロール、クラス、構文
1.RadioButtonコントロール
2.private 変数
テスト
0475デフォルトの名無しさん
2007/10/19(金) 05:10:550476474
2007/10/19(金) 05:14:44FrmCount_Load (集計結果表示)ボタンを使用不可になる
性別入力ボタン_Click 性別選択用ラジオボタン(男、女)が未選択の場合は、エラーメッセージを表示する
性別選択用ラジオボタンが未選択でない場合は、(集計結果表示)ボタンを使用可にする
性別を判断して、人数をカウントする(mintMan,mintWoman)
集計結果表示ボタン_Click 男性、女性の人数を表示する
(性別入力)、(集計結果表示)ボタンを使用不可にする
集計結果リセットボタン_Click フォームの格コントロールを初期状態にする
人数をカウントする変数を0クリアする
終了ボタン_Click フォームを閉じる
0477デフォルトの名無しさん
2007/10/19(金) 07:52:11ヒント:「まだ」WinFormsソースは公開されていない>お察しください
単純に説明長くなる
0478デフォルトの名無しさん
2007/10/19(金) 07:54:50WinFormもWPFも
0479デフォルトの名無しさん
2007/10/19(金) 09:58:510480デフォルトの名無しさん
2007/10/19(金) 09:59:19プロシージャってVBではないのですか?
ふらっとで質問した人?
0481デフォルトの名無しさん
2007/10/19(金) 10:23:370482デフォルトの名無しさん
2007/10/19(金) 11:48:03デバッガが中に入れるようにするってのがポイント
0483デフォルトの名無しさん
2007/10/19(金) 11:55:510484デフォルトの名無しさん
2007/10/19(金) 14:06:04バイナリフォーマッタのデシリアライズでスレッドは止まっています.
だからループにSleepしても解決しませんでした.
ソースコードはこんな感じ
NetworkStream ns = tcpClient.Getstream();
threadClient = new Thread(delegate(){
while(true){
BinaryFormatter bf = new BinaryFormatter();
object obj = bf.Deserialize(ns); ←ループはここで止まってます.
}
});
threadClient.Start();
なんでここで止まってるのにCPU負荷が上がるのか不思議です.
0485484
2007/10/19(金) 14:10:37受信スレッドじゃない別のスレッドで無限ループが発生してた・・・('A`)
どうもすみません.お騒がせしました.
0486デフォルトの名無しさん
2007/10/19(金) 14:22:51移動するようなのを作りたい。
どう変形するかは事前に予測できませんので、
画像ファイルを何枚も用意してアニメみたいに・・・
ってやり方は不可です。
どうやるといいですかね?
普通にDrawLineとかで描画を繰り返すと若干チラチラしますね。
なにかスムーズに表現する方法知りませんか?
0487486
2007/10/19(金) 14:24:57とりあえず輪郭線くらいで十分です。
0488デフォルトの名無しさん
2007/10/19(金) 14:28:270489デフォルトの名無しさん
2007/10/19(金) 14:35:07http://msdn2.microsoft.com/ja-jp/library/db8dsek8(VS.80).aspx
0490デフォルトの名無しさん
2007/10/19(金) 19:02:310491デフォルトの名無しさん
2007/10/19(金) 19:27:22そういう質問はどういう回答を期待して言ってるの?
何か一発呼び出せば済む便利なメソッドが用意されてるはず、とでも思って
聞いてるわけ?
俺様が欲しいと思った処理なんだからライブラリの作者がきっと用意してくれてるに違いない、
っていう発想はセカイ系の発想そのものだな。
0492デフォルトの名無しさん
2007/10/19(金) 19:47:44やっぱ、FPGAで画像圧縮プログラムをハードでやると面白いよ
0493デフォルトの名無しさん
2007/10/19(金) 20:58:51VisualStudio のスレで聞いてみたら?
0494デフォルトの名無しさん
2007/10/19(金) 21:02:37*.Designer.csを書き換えたらいいんじゃね
0495デフォルトの名無しさん
2007/10/19(金) 22:25:44sed使えってことだね
0496デフォルトの名無しさん
2007/10/20(土) 00:03:160x0007, 0x0007, 0x0006, 0x0007, 0x0056, 0x0009
中身は日時情報みたいなのですが、どのようにしたら読み込めるのですか?
0497デフォルトの名無しさん
2007/10/20(土) 00:07:402バイトづつBinaryReaderとかで読んでいけばいいんじゃね
0498デフォルトの名無しさん
2007/10/20(土) 00:15:110499デフォルトの名無しさん
2007/10/20(土) 00:22:20byte[] read = br.ReadBytes(2);
として、その後が分かりません。
Encoding.GetEncoding(932).GetString(read)やってもダメですよね。検討違い?
0500デフォルトの名無しさん
2007/10/20(土) 00:28:52雲をつかむような話だね
0501デフォルトの名無しさん
2007/10/20(土) 00:41:370502デフォルトの名無しさん
2007/10/20(土) 00:51:52だよなあ……
0503デフォルトの名無しさん
2007/10/20(土) 01:04:070504496
2007/10/20(土) 01:24:58会社でチラッと仕様書見ただけなので、またよく調べてみます。
テキストエディタ開くとSJISと出てたので信じてました。
すいません一旦中止して調べてから出直してきます。
0505デフォルトの名無しさん
2007/10/20(土) 01:48:06その時点でアプリケーションが異常終了したら内容が消えちゃいますよね?
このサイズ0の期間をなくす方法ってありますか?
例えば別ファイルに書き出してそれを対象ファイルへとリネームするとか……
0506デフォルトの名無しさん
2007/10/20(土) 02:15:411.異常終了したら0バイトのファイルを削除したい
2.異常終了した場合でもその途中までを出力したい
0507デフォルトの名無しさん
2007/10/20(土) 02:57:36このような通信(TcpClientからストリームを取得+送受信が別のスレッド)の例で
受信と送信が同時に起きた場合どうなりますか?
0508デフォルトの名無しさん
2007/10/20(土) 03:04:090509デフォルトの名無しさん
2007/10/20(土) 03:10:180510507
2007/10/20(土) 03:18:480511デフォルトの名無しさん
2007/10/20(土) 03:21:250512デフォルトの名無しさん
2007/10/20(土) 03:22:450513507
2007/10/20(土) 03:28:56受信データと送信データが同じストリーム使うのにlockとかいらないのかなと
>>512
受信は指定したポートから入ってくるんですが送信は勝手なポートから出てってます
0514デフォルトの名無しさん
2007/10/20(土) 03:30:420515507
2007/10/20(土) 03:42:55// クライアントがサーバとのデータのやりとりに使うストリームを取得
NetworkStream ns = client.GetStream();
clientReader = new StreamReader(ns, Encoding.UTF8);
clientWriter = new StreamWriter(ns, Encoding.UTF8);
となっててリードもライトも同じストリーム使ってる感じなのですが・・・
>>514
おやすみなさい
0517デフォルトの名無しさん
2007/10/20(土) 11:06:10元ファイルリネーム
新ファイルリネーム
元ファイル削除
0518デフォルトの名無しさん
2007/10/20(土) 11:47:170519505
2007/10/20(土) 12:58:20お騒がせしてすみません。
0520デフォルトの名無しさん
2007/10/20(土) 13:04:350521デフォルトの名無しさん
2007/10/20(土) 13:40:33再起動時にどのファイルが残ってるか確認してリカバリすればいいだけ
0522デフォルトの名無しさん
2007/10/20(土) 13:47:16最新OSのみ対応ってことにしてP/InvokeでTransactional NTFS使う。
0523デフォルトの名無しさん
2007/10/20(土) 15:41:24もしくはFlushメソッドで途中まで書き出すとか
0524デフォルトの名無しさん
2007/10/20(土) 18:23:130525デフォルトの名無しさん
2007/10/20(土) 19:46:460526デフォルトの名無しさん
2007/10/20(土) 21:43:580527デフォルトの名無しさん
2007/10/20(土) 22:44:56ちらつきを抑えたくて。
0528デフォルトの名無しさん
2007/10/20(土) 22:53:59この辺調べてみて
SuspendLayout
DoubleBuffered
0529527
2007/10/20(土) 22:56:15RichTextBox内の数行を選択して、文字の背景色を変えて
元のSelectionStartに戻ってくる
というものです。
ダブルバッファで回避とはまた違うと思うのですが。
0530デフォルトの名無しさん
2007/10/20(土) 22:59:540531527
2007/10/20(土) 23:00:25ありがとうございます。行き違いで書き込んでました。
SuspendLayoutとResumeLayoutはやってみたのですが、うまく
いかなかったです。
529で書いた処理で、行が多ければ多いほど一度選択による
反転がちらついてしまうように思います。
0532デフォルトの名無しさん
2007/10/20(土) 23:01:010533527
2007/10/20(土) 23:11:27VisibleでOffして処理してOn
しています。選択文字一瞬反転のちらつきよりはましです。
0534デフォルトの名無しさん
2007/10/20(土) 23:11:540535デフォルトの名無しさん
2007/10/20(土) 23:19:43ソースをアップしろ。そのほうが早いぞ。
0536527
2007/10/20(土) 23:23:04WM_SETREDRAW を調べ中でした!
ソースは長いっす・・・。短縮できたらUPします。
0537デフォルトの名無しさん
2007/10/20(土) 23:26:060538527
2007/10/20(土) 23:28:59はい。では、WM_SETREDRAWでやってみます。
ありがとうございました。
0539デフォルトの名無しさん
2007/10/21(日) 08:51:58System.IO.StreamWriterのWriteメソッドでファイルに書き込んでいますが
Discに確実に書き込まれたことを確認するにはどんな方法がありますか?
0540デフォルトの名無しさん
2007/10/21(日) 09:04:430541デフォルトの名無しさん
2007/10/21(日) 10:30:38Flush
0542デフォルトの名無しさん
2007/10/21(日) 10:32:36最初にFileOption.WriteThroughを指定して開き、適宜Flush()を呼べばいいと思う
「確認」にはならんが
>>540
他のプロセスに上書きされたり消されているかもしれんな
0543デフォルトの名無しさん
2007/10/21(日) 10:36:24「確認」にはならんが
0544デフォルトの名無しさん
2007/10/21(日) 10:57:29物理的にアクセス不能(ネットワークケーブルが切断されたとか、USBケーブルが抜かれたとかいう場合ね)
になった後で実行しても何の例外も投げない気がしたけど、これってどの階層の仕様と考えるべき?
StreamWriter自身?
.NET Framework?
Windows ?
0545デフォルトの名無しさん
2007/10/21(日) 11:52:28.NetFrameworkかな
0546デフォルトの名無しさん
2007/10/21(日) 11:52:40何で次のコードでひっかからないんでしょうか。
if (e.Modifiers == Keys.Control && e.KeyCode == Keys.Z) {
Console.WriteLine("Ctrl+Z");
}
この方法でCtrlがAlt、ZがDownとかだとうまくいくんですが・・・。
0547デフォルトの名無しさん
2007/10/21(日) 11:59:490548デフォルトの名無しさん
2007/10/21(日) 11:59:59ってことは先にどこかに拾われてるってことか?
0549デフォルトの名無しさん
2007/10/21(日) 12:04:44Windowsじゃね?
0550デフォルトの名無しさん
2007/10/21(日) 12:07:01MDIのShortCutKeyのプロパティで封じていたようです。
こんなことに・・・2時間も・・・
0551デフォルトの名無しさん
2007/10/21(日) 14:20:11NET Frameworkじゃね?
0552デフォルトの名無しさん
2007/10/21(日) 14:27:17これが悪名高い(?)遅延書き込みの効果なのかなとも思ったんだが、
またそれとは違うのかな。
0553デフォルトの名無しさん
2007/10/21(日) 14:54:28Delphiでは例外発生した記憶があるような気もしない訳でもない予感
0554デフォルトの名無しさん
2007/10/22(月) 12:42:230555デフォルトの名無しさん
2007/10/22(月) 16:38:51アプリの設定情報を保存するのに、MDIなのですが、Formを閉じるイベントで
保存する仕込みをいれてて、子Formを作成しないときは保存できるのですが
子Formを作成すると、保存ができません。
INIファイルで保存していて、WritePrivateProfileStringを使っています。
このような経験された方いらっしゃいますでしょうか。
わかってもらうための詳細もどこを手がかりがなさすぎて
何を書いたらいいかわかりません。すみません。
「あれはちゃんと処理してる?」みたいに聞かれれば
それに対して答えます。
C#の神様助けて!
0556デフォルトの名無しさん
2007/10/22(月) 16:40:560557デフォルトの名無しさん
2007/10/22(月) 16:41:19よく覚えてないけど
0558デフォルトの名無しさん
2007/10/22(月) 16:41:350559デフォルトの名無しさん
2007/10/22(月) 16:47:54はい。そもそもexeファイルと同じディレクトリに設定情報を
保存するのってXMLファイルでシリアライズするのが推奨ですか?
そんな記事をネットで見て、XMLで保存しようと思って、
dobonさんのXMLで保存をしようとしてました。
ところが、ここでFormを閉じるイベントでXML保存の仕込みを入れてた
けど、保存できてないことがわかりました。
6時間くらい格闘の末、INIファイルで断念しようとしたら
INIファイルでも保存できなくて、ここに来たという経緯です。
>>557
ちなみに閉じるイベントでなくて、子Form開いた後に保存自体が
だめだったようです。
まったくわからんです。
0560デフォルトの名無しさん
2007/10/22(月) 16:48:39いずれにしてもOSはやってる。
アプリから見ると、OSが管理してるキャッシュにアクセス
して終わりってことね。
アプリ
↓↑
↓↑アプリはこのレベルで成功失敗程度しかわからん。
↓↑
キャッシュ(OS管理)
↓↑
↓↑いつ読んだり書いたりするかはOS次第
↓↑
物理ディスク
ちなみに、同期/非同期書きこみとか言ってるは
アプリがキャッシュへの書きこみを待つか?待たないか?
の話です。物理ディスクとデータレベルで同期している
という意味ではない。
0561559
2007/10/22(月) 16:48:450562デフォルトの名無しさん
2007/10/22(月) 16:51:170563559
2007/10/22(月) 17:15:56子Formの中でShowDialogを呼び出した後です。
何で???
0564559
2007/10/22(月) 17:34:06openFileDialog.ShowDialog()
の後には全く保存できなくなります。
0565デフォルトの名無しさん
2007/10/22(月) 17:40:140566デフォルトの名無しさん
2007/10/22(月) 17:41:200567デフォルトの名無しさん
2007/10/22(月) 17:43:42保存ルーチンが呼ばれてるのか、
呼ばれてるのに書き込みに失敗してるのか。
>>566の言うようなことかも知れんし
ブレークポイントでもメッセージボックスでも仕込んで
書き込みパスを表示してみそ
0568559
2007/10/22(月) 17:45:42openFileDialog.ShowDialog()のDialogResultがOKだと保存できなくて
キャンセルだと保存できます。
こんな感じ
openFileDialog.ShowDialog(this)
config.SaveConfig(); //自分で作った保存関数
>>566
exeファイルのディレクトリに保存しちゃだめなんですか!?
0569デフォルトの名無しさん
2007/10/22(月) 17:47:270570559
2007/10/22(月) 17:48:46えーーーーーーー!!!???
ちょっと待っててください!確認してきます!
0571559
2007/10/22(月) 17:50:55569すげー!
そのカレントに保存してたファイルがありました!
これは参りました・・・
0572デフォルトの名無しさん
2007/10/22(月) 17:51:32あれは何とかならンのかね・・・
0573デフォルトの名無しさん
2007/10/22(月) 17:51:560574559
2007/10/22(月) 17:53:17今までさんざんそのopenFileDialog開いているのに
そこに保存してたファイルがこっちみて笑ってるのに
何故きづかんのだ・・・
今自分で情けなさなさすぎて、笑ってます。。。
0575559
2007/10/22(月) 17:55:15知ってたら教えてもらいたいです。
そんなことは自分で調べろですけど。
いや、ほんと今日はこれでまいったんで・・・
0576デフォルトの名無しさん
2007/10/22(月) 18:01:060577デフォルトの名無しさん
2007/10/22(月) 18:03:36DLLとしてEXEから読み込まれることになりますが、このDLLを内包した1つのバイナリのEXE
としてビルドすることは不可能なのでしょうか?
例えば、MSのEnterprise Libraryの以下のアセンブリですが、ソースコードも全て公開されています。
Microsoft.Practices.EnterpriseLibrary.Logging.dll
ソースコードレベルで取り込めば、1つの大きなEXEに出来ますが、
アセンブリレベルで取り込んで、1つのEXEにすることは可能でしょうか?
0578559
2007/10/22(月) 18:05:46誰もが通る道であって欲しいです。
あともう1点いいですか?
先に述べました、保存ファイルなんですが、
.NetだったらINIファイルよりXMLファイルで設定情報を
保存した方がよいですか?
「でもそんなの関係ない」ですか?
0579デフォルトの名無しさん
2007/10/22(月) 18:06:43俺ならObjectそのまま保存
用途によってはXML
0580デフォルトの名無しさん
2007/10/22(月) 18:09:48システムの復元で戻されたり
0581デフォルトの名無しさん
2007/10/22(月) 18:10:08.net で exe と同じ場所にファイルを作成するなんていう(行儀の悪い)仕様なんだから、
いまさらそんな細かいとこなんかどうでもいいと思う。
0582559
2007/10/22(月) 18:14:21ありがとございました!
0583デフォルトの名無しさん
2007/10/22(月) 18:15:490584デフォルトの名無しさん
2007/10/22(月) 18:25:03かといってMS様が推奨するように(あたかもユーザーから隠蔽するような)
暗号みたいなわけのわからん名前の、かつアプリ自体をアンインストールしても消えないような
ディレクトリに設定ファイル作るのが本当に「行儀が良い」ことなんかねえ。。
なんか素直に同意できかねるものがあるけど
0585デフォルトの名無しさん
2007/10/22(月) 18:26:130586デフォルトの名無しさん
2007/10/22(月) 18:40:290587デフォルトの名無しさん
2007/10/22(月) 18:43:510588デフォルトの名無しさん
2007/10/22(月) 18:57:06オナニーアプリなんて誰も使わない
0589デフォルトの名無しさん
2007/10/22(月) 19:00:260590デフォルトの名無しさん
2007/10/22(月) 19:14:080591デフォルトの名無しさん
2007/10/22(月) 19:17:120592デフォルトの名無しさん
2007/10/22(月) 19:17:250593デフォルトの名無しさん
2007/10/22(月) 19:29:060594デフォルトの名無しさん
2007/10/22(月) 21:08:51ふらっとから北んだけど
オナニーアプリってWPFで作ったアプリのこと?
WPFのWEB側っていい感じに見えるけど…
0595デフォルトの名無しさん
2007/10/22(月) 21:28:540596デフォルトの名無しさん
2007/10/23(火) 00:12:31VC#2005ではできないのですか?
0597デフォルトの名無しさん
2007/10/23(火) 03:44:08FileDialog.RestoreDirectoryプロパティをtrueにするのでは解決できない?
0598デフォルトの名無しさん
2007/10/23(火) 05:06:02気が付かなかった�d
でもInitialDirectory指定してたら駄目そう・・・
0599デフォルトの名無しさん
2007/10/23(火) 08:24:20ファイルダイアログを書けばいいじゃん。
それ以前にDOSアプリじゃあるまいしカレントディレクトリなんて概念そのものを
使うのはどうなの
0600デフォルトの名無しさん
2007/10/23(火) 09:45:09折れ線を描画する場合
1 折れ線ツールを選択
2 マウスで左クリックした場所を配列に取り込み、ピクチャーボックスに点を描く
3 次にマウスで左クリックした場所を配列に取り込み、ピクチャーボックスに点を描く
4 (以下同様に点を描画)
5 マウス右クリックで折れ線ツールから抜け出る
この折れ線を移動する場合
1 移動ツールを選択
2 マウスで左クリックした場所に折れ線が描かれているかどうかを、マウスの位置と、配列(上記2〜4の配列)に書かれた位置で判断
3 マウスをドラッグした先に折れ線を移動し、元の位置の折れ線を削除
3A マウスで左クリックした場所に折れ線の先端があれば、マウスでドラッグした先に先端を移動して、折れ線を描き直す
こんなフローでよろしいんでしょうか?
もっとスマートなやり方があればご教示くださいm(__)m
0601デフォルトの名無しさん
2007/10/23(火) 10:11:11なぜか、頭の中で理解できない。
えぇっと、MFCの頃はScribeというまんまドローツールのMSのサンプルコードがあったんだけれど、
C#版は無いのだろうか?
CodeProjectというサイトへ行ってドローツールで検索すれば、外人の作った素晴らしいソースが
見つかるのでは無いでしょうか?
0602デフォルトの名無しさん
2007/10/23(火) 10:16:05IEコンポーネントで取得したページをパースしたいのですが、
最近の複雑な入れ子のWebサイトのHTMLでは、1つのURLから取得したHTMLで、
DownloadCompleteやDocumentCompletedイベントが複数発生してしまいます。
ということで、DocumentCompletedが最後のものであるか調べる方法はあるでしょうか?
DownloadCompleteはダウンロードが完了した時点、DocumentCompletedはパースの準備が
完了した時点で起こるようです。
人間が見る分には、ページの読込が終わったか判断なんて必要ないと思うのですが・・・。
0603デフォルトの名無しさん
2007/10/23(火) 10:21:11ありがとうございます! 早速探してきます
0604602
2007/10/23(火) 10:25:42ググったら、色々出てきました。
URLが取得できているかでチェックするか、
フレームの数を自分で数えてチェックするか等のようです。
フレームの数 = DocumentCompletedの数かどうかは不明だと思うのですが・・・。
調べてみます。
0605602
2007/10/23(火) 11:29:24最後のDocumentCompletedのみでした。
ということで、ReadyStateで判断すればOK。
0606デフォルトの名無しさん
2007/10/23(火) 15:14:25Silverlight1.1alphaSDKのサンプルにC#版Scribblerがある
0607デフォルトの名無しさん
2007/10/23(火) 16:22:53ここに
DO: Use ToUpperInvariant rather than ToLowerInvariant when normalizing strings for comparison.
っていう記述があるんですがこれはなぜですか?
理由はここには書いてないようなんですが。
0608デフォルトの名無しさん
2007/10/23(火) 16:35:350609デフォルトの名無しさん
2007/10/23(火) 18:59:41激烈にもっさりだね・・・。
8行×2列程度のものを数個貼り付けただけで、なんか20年前の
SX-Windowsかと思うようなパラパラマンガみたいな描画をしやがる。
実行時にはサイズ固定でかまわないから何か描画を早くするテクニックはないかなあ。
0610デフォルトの名無しさん
2007/10/23(火) 21:02:53俺も昔同じようなこと書いたら、コントロールの数だけウィンドウがあるのと同じだから遅くて当たり前と回答があった。
結局ボタン以外自前で描画した。
無駄なことにリソースを割いていたと実感できました。
0611デフォルトの名無しさん
2007/10/23(火) 21:47:02同じ数のコントロールをベタにフォームに置いてもあんなに遅くならないから。
明らかにTableLayoutPanelそのものに問題がありそう
0612デフォルトの名無しさん
2007/10/23(火) 21:51:28普通に数の問題だと思うけどな。
WM_PAINTの優先順位は低いので同時に大量のメッセージが送られてきたら
延々と描画が後回しにされるし。
とりあえず描画が遅いのか再描画が遅延してるのかどっちかぐらいは確かめてみたら?
Spy++なりなんなり適当に使えば分かるかと。
0613デフォルトの名無しさん
2007/10/23(火) 21:55:19株価ボード?
0614デフォルトの名無しさん
2007/10/23(火) 22:19:260615デフォルトの名無しさん
2007/10/23(火) 22:20:290616デフォルトの名無しさん
2007/10/23(火) 22:33:150617デフォルトの名無しさん
2007/10/23(火) 22:35:330618デフォルトの名無しさん
2007/10/23(火) 22:36:030619デフォルトの名無しさん
2007/10/23(火) 22:36:05Microsoft さえ見放した禁断のライブラリ・MFC。
かつて人類はMFCの登場で、クソ汚い Windows API から開放されると信じた。
信じて戦った。
戦って負けた。
MFCに人生をかけて、敗北⇒廃人同様になった者は、
南京大虐殺30万人を裕に超えるものと推定される。
「DLL HELL」なる言葉を知っているだろうか?
直訳すれば「DLL地獄」。DLLとHELLの語感が似通っている事から生まれたのだが
この「DLL」とはMFCを指す。そう、DLL HELLとはMFCの事を指すのだ。
バグだらけ⇒バグ回避のコードでプログラミング⇒バグの直った別バージョンのMFC配布⇒既存ソフトが動かない
これを延々に繰り返す。
子々孫々、末代までも、輪廻転生しても、たとえ犬畜生に生まれ変わっても
DLL地獄=MFC地獄の呪縛からは逃れなれない。
人間やめますか?それともMFC辞めますか?
0620デフォルトの名無しさん
2007/10/23(火) 22:39:140621デフォルトの名無しさん
2007/10/23(火) 22:39:50逆に.NETで書かれているのものでお金を取れるものは極少数
この結果はどう見る?
0622デフォルトの名無しさん
2007/10/23(火) 22:40:340623デフォルトの名無しさん
2007/10/23(火) 22:41:53というか、何度も同じ話題をループして楽しいの?
そういうお馬鹿さんはOOPスレに行くといいと思うよ
0624デフォルトの名無しさん
2007/10/23(火) 22:47:59そんなの簡単に論破できる。
CString クラスみたいな、”ウインドウ・フレームワーク”以外の基本的なのしか使っていない。
あとは「::」で始まるAPIしか使っとらん。
0625デフォルトの名無しさん
2007/10/23(火) 22:52:560626デフォルトの名無しさん
2007/10/23(火) 22:57:270627デフォルトの名無しさん
2007/10/23(火) 22:58:060628デフォルトの名無しさん
2007/10/23(火) 23:07:280629デフォルトの名無しさん
2007/10/24(水) 00:01:580630デフォルトの名無しさん
2007/10/24(水) 00:04:210631デフォルトの名無しさん
2007/10/24(水) 00:08:45あれで、ネイティブ吐けるならWinのビジネスアプリではC++の出る幕はなくなったんだけどな
0632デフォルトの名無しさん
2007/10/24(水) 00:12:370633デフォルトの名無しさん
2007/10/24(水) 00:12:40ほとんど変わらないと思うけどね。
0634デフォルトの名無しさん
2007/10/24(水) 00:14:30Microsoft Officeの何十倍か早かろう
0635バイナリ野郎
2007/10/24(水) 02:52:57Console.WriteLine(Convert.ToInt16(br.ReadByte()))
;
0636デフォルトの名無しさん
2007/10/24(水) 02:54:440637バイナリ野郎
2007/10/24(水) 03:03:24・・・。突っ込まれると分かりません。
2バイトの場合はInt16ですよね、1バイトの場合は??ご教示ください!!!!!!!!
0638デフォルトの名無しさん
2007/10/24(水) 03:04:48だから何もせずそのままやりゃいいんじゃねえの
違ったっけ
0639バイナリ野郎
2007/10/24(水) 03:30:071バイトだと255まで表現できると思いますが、byteから何に変換すべきでしょうか?
ASCII文字列の場合・・・Encoding.ASCII.GetString(br.ReadByte(2));
2バイト数値の場合・・・BitConverter.ToInt16(br.ReadByte(2),0);
で変換してもますが問題ないでしょうか?
0640デフォルトの名無しさん
2007/10/24(水) 03:41:342バイト取りたいならbr.ReadInt16じゃないの?
0641バイナリ野郎
2007/10/24(水) 03:54:52すいませんBinaryReader.ReadBytes(2)です。
>2バイト取りたいならbr.ReadInt16じゃないの?
2バイトの場合はこれでOKです。
問題は1バイトの場合=BinaryReader.ReadByte()の場合です。
1バイトの情報を取得するにはどのようにすればよいのでしょうか?
Booleanではなく値を取得したいのですが
0642デフォルトの名無しさん
2007/10/24(水) 04:00:17これが一バイトの取得じゃないとしたらなんなのか知りたい
あるいはReadSByte()
0643デフォルトの名無しさん
2007/10/24(水) 08:51:330644デフォルトの名無しさん
2007/10/24(水) 10:31:050645デフォルトの名無しさん
2007/10/24(水) 11:56:230646デフォルトの名無しさん
2007/10/24(水) 14:41:18Console.WriteLine(br.ReadByte());
0647デフォルトの名無しさん
2007/10/24(水) 14:43:280648デフォルトの名無しさん
2007/10/24(水) 16:12:490649デフォルトの名無しさん
2007/10/24(水) 16:23:130650デフォルトの名無しさん
2007/10/24(水) 16:26:440651デフォルトの名無しさん
2007/10/24(水) 17:17:21WPFに移行するとか。
0652デフォルトの名無しさん
2007/10/24(水) 17:21:51ちょっと使いたいかも・・
0653デフォルトの名無しさん
2007/10/24(水) 21:41:540654デフォルトの名無しさん
2007/10/25(木) 01:32:58できないようですが、何か方法ありますか?
0655デフォルトの名無しさん
2007/10/25(木) 02:22:24お舞らも適当に(,,゚Д゚) ガンガレ!
0656デフォルトの名無しさん
2007/10/25(木) 09:18:25適当に自前で再帰すれ
0657デフォルトの名無しさん
2007/10/25(木) 21:01:150658デフォルトの名無しさん
2007/10/25(木) 21:04:060659デフォルトの名無しさん
2007/10/25(木) 21:06:170660デフォルトの名無しさん
2007/10/25(木) 21:09:500661デフォルトの名無しさん
2007/10/25(木) 21:22:16foreach(byte[] b in bb)
if (b != null)
return false;
return true;
}
こうじゃね?
0662デフォルトの名無しさん
2007/10/25(木) 21:26:00なるほどよくわかった
0663デフォルトの名無しさん
2007/10/25(木) 21:32:55byte?[]の全要素がnullの事かと思ったわ
0664デフォルトの名無しさん
2007/10/26(金) 00:55:550665デフォルトの名無しさん
2007/10/26(金) 01:35:18null と 0 の違いはわかってるのかな?
bool IsEmpty(byte[] bb) {
foreach (b in bb)
if (b != 0) return false;
return true;
}
0666デフォルトの名無しさん
2007/10/26(金) 01:59:45null って英語だと 0 って意味あるから。
0667デフォルトの名無しさん
2007/10/26(金) 02:00:570668デフォルトの名無しさん
2007/10/26(金) 03:53:23narcistって言うんだけどね
0669デフォルトの名無しさん
2007/10/26(金) 04:24:040670デフォルトの名無しさん
2007/10/26(金) 08:06:230671デフォルトの名無しさん
2007/10/26(金) 11:51:380672デフォルトの名無しさん
2007/10/26(金) 12:11:540673デフォルトの名無しさん
2007/10/26(金) 12:30:29null 文字は 0 だけど、null ポインタが 0 な保証ってなかったと思う。
CPU によっては、「無効なポインタを表すアドレス」が 0 じゃないらしい。
まあ、ただ、(int*)0 とか書くと「無効なポインタを表すアドレス」に変換される仕様だけど。
>>672
フランス語由来の単語はフランス語チックに読む場合が多いけど、
ドイツ語由来の単語は、言語的に近いせいか、英語発音するよ。
0674デフォルトの名無しさん
2007/10/26(金) 12:30:350675デフォルトの名無しさん
2007/10/26(金) 12:34:440676デフォルトの名無しさん
2007/10/26(金) 13:07:090677デフォルトの名無しさん
2007/10/26(金) 14:06:13スプリッタの片方だけを横スクロール、縦は追従するようなのを探しているのですが発見できません。
0678デフォルトの名無しさん
2007/10/26(金) 14:11:120679デフォルトの名無しさん
2007/10/26(金) 14:46:53DataGridView使ってみましたが、それらしき機能がみあたりません・・・
0680デフォルトの名無しさん
2007/10/26(金) 15:32:22おもいっきりあるだろ。固定したい列のFrozenプロパティをtrueにしたら固定列になる。
0681デフォルトの名無しさん
2007/10/27(土) 02:36:27変わらないのでしょうか。また変える方法はありますでしょうか。
RichTextBox.SelectedText = "hogehoge"; //変わる
RichTextBox.SelectedText = ""; //変わらない
0682デフォルトの名無しさん
2007/10/27(土) 03:01:29ちゃんと置換できるよ。
ブレークポイントで止めてSelectedText見てみたら
0683681
2007/10/27(土) 09:26:47"hogehoge"も""も代入した直後は、空の""になっており、
実際表示するとhogehogeは置換されてますが、""を代入した場合は
もとのテキストにもどっています。文字の背景色を変えている部分
なのですが、これが関係したりしますか?SelectedTextも変えなきゃだめ
とか。
因みに
RichTextBox.SelectedText = " "; //半角スペース
RichTextBox.Trim();
ってやると表示される文字は" "の半角スペースとなります。
困りました〜
0684681
2007/10/27(土) 09:36:22SelectedRtfの誤りでした。すみません。
0685681
2007/10/27(土) 09:49:28FormにRichTextBoxとButtonを配置して
private void button1_Click(object sender, EventArgs e) {
this.richTextBox1.SelectedText = "";
}
private void button2_Click(object sender, EventArgs e) {
this.richTextBox1.SelectionBackColor = Color.RoyalBlue;
}
ってやると""の空文字にできるし、選択されたところを色ぬっても
""に出来ました。
あー原因がわからないですー
0686681
2007/10/27(土) 10:14:57ReadOnlyプロパティにすると""が代入できないようです。
仕様?
0687681
2007/10/27(土) 10:54:51ってありますか?
もうこの方法でいこうと思います。
0688デフォルトの名無しさん
2007/10/27(土) 11:56:200690デフォルトの名無しさん
2007/10/27(土) 13:29:580691デフォルトの名無しさん
2007/10/27(土) 13:34:350692681
2007/10/27(土) 13:59:590693デフォルトの名無しさん
2007/10/27(土) 16:51:51(List<String>)objectListだとエラーが出るんですけど。
0694デフォルトの名無しさん
2007/10/27(土) 16:55:120695デフォルトの名無しさん
2007/10/27(土) 16:56:39一個ずつ取り出してキャストすれ
0696デフォルトの名無しさん
2007/10/27(土) 17:33:55やっぱひとつづつやるしかないのか…
0697デフォルトの名無しさん
2007/10/27(土) 18:07:04List<string> stringList = new List<string>(new ArrayList(objectList).ToArray(typeof(string)) as string[]);
なんか無駄なことやってる気が…
最初からList<string>にしとけよ。
0698デフォルトの名無しさん
2007/10/27(土) 18:18:01List<object> l = new List<object>() { "a", "b", "c", "d" };
List<string> sl = l.ConvertAll(o => (string)o);
というのがあるんだけど。
まあ、結局やってることは
List<string> sl = new List<string>();
foreach(object o in l) sl.Add((string)o));
と同じだけど。
0699デフォルトの名無しさん
2007/10/27(土) 18:19:333.0 なら素直に OfType があるだろ
0700デフォルトの名無しさん
2007/10/27(土) 18:19:41list.ConvertAll<string>(delegate(object o){ return (string)o; });
0701デフォルトの名無しさん
2007/10/27(土) 18:21:020702デフォルトの名無しさん
2007/10/27(土) 18:26:393.0なら
var l2 = l.ConvertAll(o => (string)o);
こうだからな
0703デフォルトの名無しさん
2007/10/27(土) 18:51:50最初から必要な型にしとけばいいのに。
0704デフォルトの名無しさん
2007/10/27(土) 19:34:040705デフォルトの名無しさん
2007/10/27(土) 19:51:27全然別の意味ってわけでもないけどね。
まあ、データベース言語との統合ってのは必要な機能だと思うし、
C# の変態的な機能強化は、どれも結構 LINQ を実現するために必要なのよね。
0706デフォルトの名無しさん
2007/10/27(土) 19:53:530707デフォルトの名無しさん
2007/10/27(土) 19:55:47Javaも関数型とクロージャを入れようとしてる
C#はだいぶ先に行ってるけどな
0708デフォルトの名無しさん
2007/10/27(土) 20:12:20C++ 0x の方は最近ようやく概要に目を通した程度だけど、型推論とかクロージャにはびっくりした。
0709デフォルトの名無しさん
2007/10/27(土) 20:30:490710デフォルトの名無しさん
2007/10/27(土) 21:47:53はじめはイベントを正当化するためだけの存在だったのに
0711デフォルトの名無しさん
2007/10/27(土) 21:52:000712デフォルトの名無しさん
2007/10/27(土) 21:54:47Objective-Cは別方向かな
0713デフォルトの名無しさん
2007/10/27(土) 22:00:46hoge = delegate() {
//...
}
と
hoge = delegate()
{
//...
}
ってどっちがオヌヌメ?
0714デフォルトの名無しさん
2007/10/27(土) 22:06:02//...
}
こうかな
0715デフォルトの名無しさん
2007/10/27(土) 22:06:22おいらは開始ブラケットでは改行しない派
0716デフォルトの名無しさん
2007/10/27(土) 22:10:31C#だと、
hoge = delegate()
{
//...
}
の方が多いみたい。
hoge = delegate() {
//...
}
は、C++の人っぽいような希ガス。
0717デフォルトの名無しさん
2007/10/27(土) 22:11:35hoge = delegate { ... }
hoge = ()=>{ ... };
hoge = { ... }; //これはダメ?
0718デフォルトの名無しさん
2007/10/27(土) 22:19:13俺は{の後ろで改行した方が見やすいと思うな。
0719デフォルトの名無しさん
2007/10/27(土) 22:30:50後で改行すると{}内も引数みたいに見える
0720デフォルトの名無しさん
2007/10/27(土) 22:35:220721デフォルトの名無しさん
2007/10/27(土) 23:02:17つ java屋
0722デフォルトの名無しさん
2007/10/28(日) 00:36:34取得する方法はありますか?
ダイアログに置いたボタンの文字列をを環境に応じて適切に
変えるため取得したいです。
0723デフォルトの名無しさん
2007/10/28(日) 00:37:180724デフォルトの名無しさん
2007/10/28(日) 00:41:380725デフォルトの名無しさん
2007/10/28(日) 00:42:210726デフォルトの名無しさん
2007/10/28(日) 00:50:41自作のFormで「はい」「いいえ」などのボタンを配置したいから
その文字列をシステムから取得したいって言ってるんでしょ。たぶん。
俺はやり方は知らんが。
0727デフォルトの名無しさん
2007/10/28(日) 00:59:05環境に応じて適切に変えたい、って事?
0728デフォルトの名無しさん
2007/10/28(日) 01:45:290729デフォルトの名無しさん
2007/10/28(日) 02:11:10結構面倒なんですけど・・・
0730デフォルトの名無しさん
2007/10/28(日) 02:38:42どっちかと言うと、それ当たり前のような気がするが・・・
0731デフォルトの名無しさん
2007/10/28(日) 05:30:25このaa思いだした
┝┥┌──────────────────┴┐
│┝┥┌──────────────────┴┐
││┝┥┌──────────────────┴┐
│││┝┥┌──────────────────┴┐
││││┝┥┌──────────────────┴┐
│││││┝┥Zainichisoft [×]|
┤│││││┝━━━━━━━━━━━━━━━━━━| \カチ
└┤│││││┌───―┐ ´||`| カチ
└┤│││││ Λ_Λ | ニダーに住み着かれました。 .│ カチ
└┤││││<=( ´∀`) | 謝罪と賠償するまで .│ カチ
└┤│││( ) │ 終了はできません。 | カチ
└┤│└────┘ . . | カチ
└┤ .[謝罪する] [賠償する]. .| カチ
└───────────────────┘
0732デフォルトの名無しさん
2007/10/28(日) 14:12:33思った通りの変換が行われません。
なぜでしょうか・・・。
<ソース>
Encoding fromCode = Encoding.GetEncoding("shift_jis");
Encoding toCode = Encoding.GetEncoding("gb2312");
byte[] jpBytes = fromCode.GetBytes(textJp.Text);
byte[] gbBytes = Encoding.Convert(fromCode, toCode, jpBytes);
char[] gbChars = new char[toCode.GetCharCount(gbBytes, 0, gbBytes.Length)];
toCode.GetChars(gbBytes, 0, gbBytes.Length, gbChars, 0);
textGb.Text = new string(gbChars);
</ソース>
思った通り、というのは
ttp://www.excite.co.jp/world/chinese/
で"故郷"と入力すると、"郷"は簡体字に変換されますよね。
そうなるように、つまり日本語の漢字が、
簡体字の該当文字にマッピングされるように変換したいんです。
もちろん、表示するときはSimSunフォントです。フロントエンドは日本語版ですが。
0733デフォルトの名無しさん
2007/10/28(日) 15:00:37とされてないからじゃないでしょうか。
0734デフォルトの名無しさん
2007/10/28(日) 15:02:19って出た例外が発生したときは原因をどのように追っていけばよいですか?
配列のインデックスが足りないとかの例外だったらわかりますが、
あまり例外処理を解析したことなくて、どこから手をつければよいか
わからないです。
まず何を調べればよいか教えて欲しいです。他に必要な情報があれば
提示します。
0735デフォルトの名無しさん
2007/10/28(日) 15:04:58全部教えてくれるだろ
0736デフォルトの名無しさん
2007/10/28(日) 15:15:17おれは、イベントハンドラにロジックベタ書き。
ロジックっていうほど、複雑な処理は書かないんで、いまいち別にしても良くなる気がしないっていうか。
こういうふうに書くってお手本も見たことないし。
0737デフォルトの名無しさん
2007/10/28(日) 15:17:13.NET Frameworkのメソッドが投げた例外ならだいたいMSDNのそのメソッドのページを見れば
投げる可能性のある例外とその原因が書いてあるだろ
0738デフォルトの名無しさん
2007/10/28(日) 16:58:39取得する方法はありますか?
0739デフォルトの名無しさん
2007/10/28(日) 17:00:35MicrosoftのHPにVBだけどサポートされてませんって書いてある・・・。
じゃだめか。。。?
0740732
2007/10/28(日) 17:53:42そうなんですかねぇ・・・。
てことは自分でマッピングテーブルを作らないとどうしようもないと言うことか。
簡体字に存在しないはずの日本漢字や仮名がSimSunで表示できるのが不思議でしょうがない。
0741デフォルトの名無しさん
2007/10/28(日) 17:56:48FontLinkじゃね?
0742デフォルトの名無しさん
2007/10/28(日) 18:41:17解決方法を教えてください。
0743デフォルトの名無しさん
2007/10/28(日) 19:24:55VB厨発見
0744デフォルトの名無しさん
2007/10/28(日) 21:33:49正攻法かどうか知らないけど、とりあえずVBランタイムのStrConvを使えば出来るんじゃない?
0745デフォルトの名無しさん
2007/10/28(日) 22:05:200746デフォルトの名無しさん
2007/10/28(日) 22:13:11アプリを作って渡そうとしてるんですけど、できるだけ不要ファイルは
消したいのですが、Releaseフォルダにあるexeファイル以外のものは
必要なものなかよくわかりません。
.Netがインストールされてればexeファイルだけでもいいんですか?
0747デフォルトの名無しさん
2007/10/28(日) 22:38:21一応論理的には写像関係が定義できる文字の変換だから、そうでもないでしょ。
だから現にVBライタイムの機能として存在してるじゃん。
0748デフォルトの名無しさん
2007/10/28(日) 23:16:41ワープロソフトかと思った。
テキストエディタとしては使い物になりませんね
0749デフォルトの名無しさん
2007/10/28(日) 23:45:570750デフォルトの名無しさん
2007/10/28(日) 23:49:10.NETおせー言いたいだけの
0751デフォルトの名無しさん
2007/10/29(月) 17:00:58リフレクションを使ってすべてのメンバ名とその値を取得してコードを生成したんだけど
これってライセンス違反になる?
0752デフォルトの名無しさん
2007/10/29(月) 17:02:090753751
2007/10/29(月) 17:08:51逆コンパイルでやるのは完全に違反なんだろうけどできたものは同じだから気になる
0754デフォルトの名無しさん
2007/10/29(月) 17:12:090755デフォルトの名無しさん
2007/10/29(月) 17:12:120756デフォルトの名無しさん
2007/10/29(月) 17:12:40アセンブリのメンバーの列挙なら逆アセンブルにはならないだろ。
MSのリフレクションのサンプルにもそれやってるのがあったぞ。
0757デフォルトの名無しさん
2007/10/29(月) 17:17:53プログラミング作法的にかなり微妙じゃない?
enum 使ってる意味が薄くなるし。
dll 参照しなくするのにそんな大したメリット感じないし。
0758デフォルトの名無しさん
2007/10/29(月) 18:02:00enumはコンパイル時に値が埋め込まれてるんだよ。
constの定数と同じ扱いだね。
だからdllを参照してても実際にはenumの値だけじゃdllは呼び出されなかったりするかも。
でもenumだけ参照しないようにしても関連するメソッド呼び出し時とかに
元のenumを使うから無駄にキャストしないといけなくなるしかなり無駄かと思うけど。
0759740
2007/10/29(月) 23:40:38なるほど、FontLinkという機能は知りませんでした。
調べてみて初めて知りました。不勉強でした。
>>744-747
ありがとうございます。
StrConv、試してみましたが残念ながら同じ結果になりました。
(久々にVBを触りましたが、6.0からずいぶん変わった物です・・・)
PinConv+というフリーウェアを発見し、DLしてみたのですが、
やはりマッピングテーブルを持っているようです。
テーブルなしでは無理なのかもしれませんね。
0760デフォルトの名無しさん
2007/10/29(月) 23:58:07ちなみに該当のDLL参照すりゃC#でもStrConv使えるぞ。
0761デフォルトの名無しさん
2007/10/31(水) 06:18:43ここに書いてあったとおりに Cmdll.c と CM.cs 作ってコマンドラインからコンパイルしたのですが
不正な処理で落ちてしまいます。
出力はこんな感じです。
>CM
ハンドルされていない例外: System.BadImageFormatException: 間違ったフォーマット
のプログラムを読み込もうとしました。 (HRESULT からの例外: 0x8007000B)
場所 MainClass.SampleMethod(Int32 x)
場所 MainClass.Main()
>ls
CM.cs CM.exe Cmdll.c Cmdll.dll Cmdll.exp Cmdll.lib Cmdll.obj
>cl
Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42 for 80x86
>csc
Microsoft(R) Visual C# 2005 Compiler version 8.00.50727.42
for Microsoft(R) Windows(R) 2005 Framework version 2.0.50727
64bitだからまずいのでしょうか?
0762761
2007/10/31(水) 06:23:29windows xp x64 professional service pack 1 version 2003
となってます
0763デフォルトの名無しさん
2007/10/31(水) 07:09:40clの方は64bitコンパイラを使ってコンパイルしない限りx86のバイナリしか吐かない。
ttp://msdn2.microsoft.com/ja-jp/library/x4d2c09s(VS.80).aspx
64のプロセスでは32bitDLLは読めない。
cscの方で/platform:x86にすればWOW64上で動くから32bitDLLを読める。
0764デフォルトの名無しさん
2007/10/31(水) 07:25:31教えていただいたとおりうまくいきました。
IDEの方でanycpu以外の選択肢を選べずあきらめていたのですが
もう一頑張りしてみます。
ありがとうございました。
0765デフォルトの名無しさん
2007/10/31(水) 21:08:05などを利用して、複雑なリスト構造の定義をApp.configに書き込みたいのですが、
参考になるようなリンク等無いでしょうか?
読み込んでいるサンプルは幾つか見つかったのですが、書き込んでいるものが見つからないのです。
定義に可変長リストが含まれているために、コレクションを使用したいのです。
0766765
2007/10/31(水) 21:16:35http://www.uyouyo.com/tawagoto/nikki/mt/archives/2006/08/08/022205.html
0767デフォルトの名無しさん
2007/11/01(木) 01:25:080768デフォルトの名無しさん
2007/11/01(木) 01:58:410769デフォルトの名無しさん
2007/11/01(木) 02:16:060770デフォルトの名無しさん
2007/11/01(木) 02:34:28WinApi のほうを失念してました。ありがとうございます。
それをキーワードに探したら Environment.ExpandEnvironmentVariables なんてのを見つけたのでそっちつかいます。
0771デフォルトの名無しさん
2007/11/01(木) 23:37:17http://www.microsoft.com/japan/msdn/net/general/win32map.aspx
0772デフォルトの名無しさん
2007/11/03(土) 04:01:24こちらのTcpClientは相手が切断するまで絶対に切断しないという処理をしたいのですが
0773デフォルトの名無しさん
2007/11/03(土) 09:31:21って設計に問題がある
0774デフォルトの名無しさん
2007/11/03(土) 11:16:010775デフォルトの名無しさん
2007/11/03(土) 13:48:020776デフォルトの名無しさん
2007/11/03(土) 15:29:430777デフォルトの名無しさん
2007/11/03(土) 16:13:130778デフォルトの名無しさん
2007/11/03(土) 16:40:300779デフォルトの名無しさん
2007/11/03(土) 19:05:35すまんちょっとワロタ。
0780デフォルトの名無しさん
2007/11/03(土) 22:58:47「おい起きてるか?」「・・・ん、あ、寝てないよ、起きてるよっ」
0781デフォルトの名無しさん
2007/11/03(土) 23:37:150782デフォルトの名無しさん
2007/11/04(日) 00:18:00なんか理由あるんだよね?
0783デフォルトの名無しさん
2007/11/04(日) 01:43:39というコードを書いてたのですが(以下)
OleDA = new OleDbDataAdapter("SELECT * FROM test", OleConn);
OleDA.Fill(Ds, "test");
if (Ds.Tables["test"].Rows.Count == 0)
{
this.lblエラー.Text = "該当IDは登録されていません。";
return;
}
DataRow inTable = Ds.Tables["test"].Rows[0];
if (inTable["PASS"].ToString() != ls_パスワード)
{
this.lblエラー.Text = "パスワードが違います。";
return;
}
DataRow inTable = Ds.Tables["test"].Rows[0];
の部分はtest.mdbのtestの1行目だけを取ってくるって事でしょうか?
上記の場合はテーブルの1行目の人だけログインが可能で
Rowsを[1]にすると、テーブルの2行目の人だけがログイン可能という状態になります
テーブルのPASSの列を全部取ってくるような書き方はあるのでしょうか?
ちなみにaccessのtestテーブルの構造は
ID NAME PASS
1 A 11
2 B 22
3 C 33
0784デフォルトの名無しさん
2007/11/04(日) 02:25:210785デフォルトの名無しさん
2007/11/04(日) 03:55:36ダミーの通信は必要だよ。
これを、TCPで生存確認する。といってるなら
間違ってはいないとおもうがな。
>>772
相手からの切断であろうと、物理的な
断線であろうとTCPがやってくれる。
従って、自分から切断しなければいいだけ。
0786デフォルトの名無しさん
2007/11/04(日) 04:05:43やっぱBean?
0787デフォルトの名無しさん
2007/11/04(日) 09:44:12しいて言えばComponentといえなくも無い程度だと思う。
0788デフォルトの名無しさん
2007/11/05(月) 00:05:410789デフォルトの名無しさん
2007/11/05(月) 20:00:30MouseDownだと、(e.Button == MouseButtons.Left)とかって判定できるんですけど・・・。
Clickイベントでボタンの判定の方法があったら教えてください。
0790デフォルトの名無しさん
2007/11/05(月) 20:04:310791デフォルトの名無しさん
2007/11/05(月) 20:06:48右やセンターのクリックも拾っちゃうんです。
0792791
2007/11/05(月) 20:10:27MouseClickイベント使ったら(e.Button == MouseButtons.Left)で判定できました。
こっち使います。お騒がせしました。。
0793デフォルトの名無しさん
2007/11/05(月) 21:06:01ツリーを何箇所かクリックしていると、見た目が3Dでななくなってしまいます。
再現するには、
.Net 2.0で、VS2005で、フォームを作成し、TreeViewを貼り付け、
BorderStyleをFixed3Dにするのみです。
treeView1の初期化を以下のように単純化しても発生します。
TreeNode node = new TreeNode("親ツリー");
node.Nodes.Add( new TreeNode("子ツリー"));
treeView1.Nodes.Add(node);
これって、もしかして有名な現象なのでしょうか?
0794デフォルトの名無しさん
2007/11/05(月) 22:01:38というかBorderStyleってデフォルトがFixed3Dじゃね?
0795デフォルトの名無しさん
2007/11/05(月) 22:03:19ウィンドウズのリソース足りてる?
再起動しても再現する?
他のパソコンでも再現する?
0796793
2007/11/05(月) 22:18:07すみません、今、自宅に帰ってきてしまいました。
リソースは足りているはずです。OSはXPです。
すみません、他のPCで明日確かめて見ます。
0797793
2007/11/05(月) 23:07:19むむむ、同時に動いていた何かのアプリによるリソースリークの疑いがありますね
0798デフォルトの名無しさん
2007/11/06(火) 01:21:53オープンソースなアプリとかってありますか?
0799デフォルトの名無しさん
2007/11/06(火) 01:22:21IronPython
0800デフォルトの名無しさん
2007/11/06(火) 01:33:450801デフォルトの名無しさん
2007/11/06(火) 01:36:36初心者のうちは、どうかく?orgとかでいいんじゃない?
ttp://ja.doukaku.org/lang/csharp/
0802デフォルトの名無しさん
2007/11/06(火) 10:25:03ログオンを検知したいんですが、対応出来る
イベントハンドラー無いですか?
Windowsサービスで待ち状態中にログオンを
検知してユーザー情報などを取得したいんですが…。
EventLog、スタートアップフォルダ等を使わずに、
Windowsサービスで検知しろという仕様なのです…。
昨日調べたら、ログオフ時、シャットダウン時、
ユーザー変更時というのはあったのですが、
ログオン時というのは見つけられなかったので。
誰かご存知無いです?
0803デフォルトの名無しさん
2007/11/06(火) 11:11:53死ね役立たず。
人の足引っ張って楽しいかゴミクズ。
今すぐ死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。v死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
0804デフォルトの名無しさん
2007/11/06(火) 12:06:29CodePlexやCodeProjectにいくらでもある
ほとんどがC#のプロジェクトでVB.NETは少ないけどなんでなんだろ
0805デフォルトの名無しさん
2007/11/06(火) 12:07:07私怨晴らしはネットでなんかやるなよ。。
0806デフォルトの名無しさん
2007/11/06(火) 12:16:52最近似たような荒しをよく見る気がする。
802 はたまたま通り魔的に犠牲になっただけかも。
0807802
2007/11/06(火) 12:21:40日中は別の仕事してるので803と同僚ってわけじゃない
ですよ。
もう少し調べて見ようかな。
本業じゃないのが辛いなぁ…。
0808デフォルトの名無しさん
2007/11/06(火) 12:52:14それはそうと、WindowsサービスはNETで作れたっけか?
Win32スレで聞いた方がよくないか。
0809デフォルトの名無しさん
2007/11/06(火) 12:54:40環境変数のUSERNAME取得とかじゃ駄目なん?
0810802
2007/11/06(火) 13:04:40サービスで動かすとUSERNAMEの中がSYSTEMになるので、
その方法が使えません。
イベント発生時(ログオン時)に検知して処理を行わないと
ダメっぽいですね。
0811デフォルトの名無しさん
2007/11/06(火) 13:05:35プロジェクトのテンプレートの一覧に普通にあるぞ
目大丈夫か?w
0812デフォルトの名無しさん
2007/11/06(火) 13:10:35Professional以上じゃなかったでしたっけ?
0813デフォルトの名無しさん
2007/11/06(火) 13:14:41System.ServiceProcess.dll参照して0から自分で書けばできるはず
0814デフォルトの名無しさん
2007/11/06(火) 13:38:20EventLogアクセス禁止じゃないの?
レジストリでStartupにサービス通知セットするとか
0815デフォルトの名無しさん
2007/11/06(火) 14:40:34とか言えば満足なのか?
0816デフォルトの名無しさん
2007/11/06(火) 16:13:02ありがとうございました。色々とあるものですね。
MOONGIFT: » C#:オープンソース紹介ブログ(毎日更新)
http://www.moongift.jp/category/programming-language/c-sharp/
こんなサイトもありました。
0817デフォルトの名無しさん
2007/11/06(火) 18:58:010818793
2007/11/06(火) 19:19:19どうやら、リッチテキストボックス以外が全て立体に見えません。
他のマシンで試しても同様です。
もしかして、これはXPのテーマが絡んでいるのでしょうか?
自宅のPCと見た目が違うのですが、もう諦めました。
気づかなかったことにします。
0819デフォルトの名無しさん
2007/11/06(火) 22:13:57Ctrl+A拾って、Text全部選択するだけじゃないか。
ってそのままの回答でよいのか?
0820デフォルトの名無しさん
2007/11/06(火) 22:54:020821デフォルトの名無しさん
2007/11/06(火) 23:37:34選択状態になると思うんですけど…
質問の意図が違うんかな。
0822デフォルトの名無しさん
2007/11/07(水) 00:19:56それとも、ひょっとして自分でShortcutsEnabled をfalseにしてたりしてねw
0823817
2007/11/07(水) 01:24:59Multiline:true
ShortcutsEnabled:true
の状態で複数行のTextが表示されててTextBoxにフォーカスがある状態でCrtl+Aで全て選択状態にしたいのですが
0824デフォルトの名無しさん
2007/11/07(水) 01:37:350825デフォルトの名無しさん
2007/11/07(水) 01:46:43private void textBox1_KeyDown(object sender, KeyEventArgs e) {
if (e.KeyData == (Keys.A | Keys.Control)) { (sender as TextBox).SelectAll(); }
}
を>>819は言っている。つかフラット池
0826デフォルトの名無しさん
2007/11/07(水) 02:45:58名著に限らず、オススメの本があれば、
何冊か紹介していただけると嬉しいです。
0827デフォルトの名無しさん
2007/11/07(水) 02:50:320828デフォルトの名無しさん
2007/11/07(水) 09:02:18逆引き大全は持っておいて損はないかと。
0829デフォルトの名無しさん
2007/11/07(水) 09:03:080830デフォルトの名無しさん
2007/11/07(水) 11:59:210831デフォルトの名無しさん
2007/11/07(水) 12:26:31つまりどういうスキルをもった誰にとってよい本かって問題だよね。
アマゾンとかで得意げに書評書いてる連中はその辺わかってない馬鹿が多すぎるよね
0832デフォルトの名無しさん
2007/11/07(水) 13:03:28そういうあなたが一番馬鹿っぽい。
0833デフォルトの名無しさん
2007/11/07(水) 19:49:200834デフォルトの名無しさん
2007/11/07(水) 19:49:390835デフォルトの名無しさん
2007/11/07(水) 19:51:390836デフォルトの名無しさん
2007/11/07(水) 20:21:000837デフォルトの名無しさん
2007/11/07(水) 21:02:20どこかにC#にて作られたサンプルコードの場所を知っている方が
いたら教えてください。
0838デフォルトの名無しさん
2007/11/07(水) 21:09:27http://gugurekasu.com/
0839デフォルトの名無しさん
2007/11/07(水) 22:43:15それ良かったけど内容が古くなったなあ。
初心者には川俣氏の本も良いけど古い。
0840デフォルトの名無しさん
2007/11/08(木) 00:07:090841デフォルトの名無しさん
2007/11/08(木) 00:10:40オブジェクトのLINQなんかないと不便すぎる
今までが不便すぎた
0842デフォルトの名無しさん
2007/11/08(木) 00:15:580843デフォルトの名無しさん
2007/11/08(木) 01:51:06ループを実装するのはすごくきれいに書けるじゃない。
でも2つ以上のコレクションを比較したりしながら操作する場合、
IEnumeratorを作って書かなくちゃいけなくなって、とたんに
汚いコードになったりしない?
次の要素があるかないかをMoveNext()で判定するわけだけど、
イテレータが進んでしまうから1度ずつしか使えないし、
かといってCurrentの値で末尾かどうかを判断できるわけでもない。
どうしても余計な変数を定義する必要に迫られ、煩雑になってしまう…。
0844デフォルトの名無しさん
2007/11/08(木) 01:53:340845デフォルトの名無しさん
2007/11/08(木) 02:03:05IEnumerable<Pair<T, U>> ToPair<T, U>(IEnumerable<T> t, IEnumerable<U> u)
みたいなメソッドをイテレータ機能使って作っとくとか?
0846デフォルトの名無しさん
2007/11/08(木) 02:09:020847デフォルトの名無しさん
2007/11/08(木) 02:13:30やっぱあんまり実用的な感じはしないけどね。
0848デフォルトの名無しさん
2007/11/08(木) 02:15:41colA.ForEach(colB, (a,b) =>{ ... });
こんな感じのものを作ればいいんだろう
0849デフォルトの名無しさん
2007/11/08(木) 02:18:34なんとなく、C# っぽく、内部イテレーション版と外部イテレーション版を両方用意したいなぁと。
あと、LINQ でもなんとかうまく書けないかなぁ。
0850843
2007/11/08(木) 02:50:23詳しく知ってる人でもややこしいんだね。そう分かっただけでよしとしよう。
0851デフォルトの名無しさん
2007/11/08(木) 02:52:30別に作ればいいだろう
ラムダ式は無敵の言語構造だぜ
0852デフォルトの名無しさん
2007/11/08(木) 03:37:46Zip関数でぐぐれ。C#での実装も多数。
0853デフォルトの名無しさん
2007/11/08(木) 11:25:210854デフォルトの名無しさん
2007/11/08(木) 11:52:49ラムダ式とか変態式にしか見えないんですけど
0855デフォルトの名無しさん
2007/11/08(木) 12:20:32数値型であることと演算子の問題をごっちゃにしちゃいけない。
0856デフォルトの名無しさん
2007/11/08(木) 13:20:580857デフォルトの名無しさん
2007/11/08(木) 13:21:510858デフォルトの名無しさん
2007/11/08(木) 14:50:31外部イテレーション版ってのが、>>845 みたいなの。
MoveNext() / Value を使うタイプの反復。
LINQ で使おうと思うと、ForEach() メソッドでなくて、
IEnumerable になってないとダメだし。
>>852
それそれ。そういうの。
それを、2.0 のイテレータ構文で書こうとしたのが >>845。
しかし、Zip っていうネーミングセンスはひどいな、python。
0859デフォルトの名無しさん
2007/11/08(木) 14:51:31いや、正式版が出るの今月末だし。
まだ業務ではちょっと。
ラムダ式、別に、匿名デリゲートの簡素化構文だと思えばそんな変態的でもないかと。
というか、ラムダ式が変態なんじゃなくて、
関数型言語マニアの人らがラムダ式を無理やり変態的に使おうとしてるだけ。
0860デフォルトの名無しさん
2007/11/08(木) 14:52:25普通に Sort() メソッド呼ぶだけじゃん。
10万行くらいならまだ別に特殊なこと必要ないでしょ。
0861デフォルトの名無しさん
2007/11/08(木) 14:53:16>>855 じゃなくて >>854
0862デフォルトの名無しさん
2007/11/08(木) 15:07:13みたいにきちんと書くこともできるんだろ
最初からこれがあれば匿名メソッドは不要だったとMSも認めてるし
0863デフォルトの名無しさん
2007/11/08(木) 16:05:16って書くくらいではまだ全然変態じゃないだろ。
変態的になってくるのは、再帰とかカリー化とかやりだしてから。
↓みたいな。
Func<Func<int, int, int>, int, Func<int, int>> bindFirst =
(f, n) => x => f(n, x);
Func<int, int, int> add = (x, y) => x + y;
var increament = bindFirst(add, 1);
正直、これはあんまりやりすぎるのはよくないと思う。
せめて、この例での bindFirst みたいなのはラムダ式じゃなくて
普通のメソッドにすべきだと思うし。
0864デフォルトの名無しさん
2007/11/08(木) 19:33:120865デフォルトの名無しさん
2007/11/09(金) 00:08:580866デフォルトの名無しさん
2007/11/09(金) 00:20:160867デフォルトの名無しさん
2007/11/09(金) 00:20:400868デフォルトの名無しさん
2007/11/09(金) 00:28:53まぁ取り残されないように頑張る。
0869デフォルトの名無しさん
2007/11/09(金) 00:42:28別に読みにくくなることはないだろうし
0870デフォルトの名無しさん
2007/11/09(金) 00:47:11Railsのコードとか誰もメンテできんのじゃなかろうか。
0871デフォルトの名無しさん
2007/11/09(金) 00:53:39まあやりすぎれば分かりにくくなるが、
適度に使えば実に見やすく分かりやすいコードになる。
List<string> strList = intList.ConvertAll(i => i.ToString());
これは、2.0までの
List<string> strList = intList.ConvertAll<int,string>(delegate(int i){ return i.ToString(); });
これより見やすく分かりやすいし、
List<string> strList = new List<string>();
foreach(int i in intList)
strList.Add(i.ToString());
これよりも見やすく分かりやすいと思うが。
0872デフォルトの名無しさん
2007/11/09(金) 01:12:280873デフォルトの名無しさん
2007/11/09(金) 01:43:27少なくとも慌てて言語マニュアル開く機会は減るかと。
0874デフォルトの名無しさん
2007/11/09(金) 08:23:11とかActiveXサーバーアプリケーションという類のものなんだと思いますが、
それらを事前に判断する方法というのはあるでしょうか、ありましたらどのように
するものか知りたく。
よろしくお願いします!
0875874
2007/11/09(金) 08:25:26アプリケーションであるかどうかは、どのようにして知ることができるでしょうか。
0876デフォルトの名無しさん
2007/11/09(金) 13:20:26みたいなの、匿名メソッドみたいにやっぱり内部で
コンパイラがクラス作ったりするの?
あれがあるから匿名うんちゃらって
例えば一回しか使わないようなとき躊躇する
>>874
まず人に分かるように整理したら?
場面が抽象的すぎてワカメだよ。
>それらがActiveXサーバーアプリケーションであるかどうかは
それらって何だよ
抽象的に答えるとすればレジストリをそれらのCLSIDで検索する
0877デフォルトの名無しさん
2007/11/09(金) 13:31:12さらにフィールドも触らないならインスタンスをstaticにして共有してくれたりする
0878デフォルトの名無しさん
2007/11/09(金) 14:02:50名前空間は汚染されんし、それで増える(可能性のある)フットプリントなんて
微々たるもんだろ
C#とか使っといて、んなこと一々気にする時点で何か間違ってるぞ
0879デフォルトの名無しさん
2007/11/09(金) 15:05:460880デフォルトの名無しさん
2007/11/09(金) 16:13:48でも、そのライブラリのドキュメントには、Tick内で処理に時間がかかると、次のTickが呼び出されちゃうかも。
同期処理はそっちでやってね、的なことが書いてあります。
希望としては、Tickが呼び出された時に前回のTickが処理中だったら、前の処理完了を待たずにスキップして
欲しいのです。となると、処理中かどうかを示すboolのflgと、同期用のsyncオブジェクトを用意して、以下の感じで
良いのでしょうか?すみませんが、これ以外の常識的な定石がありましたら、教えていただけないでしょうか?
private void Tick() {
if(flg) return;
lock(sync) {
try {
flg = true;
長い処理
} finally {
flg=false;
}
}
}
0881デフォルトの名無しさん
2007/11/09(金) 18:25:29lock(sync) if(flg) return; else flg = true;
try {
// 長い処理
} finally {
lock(sync) flg=false;
}
}
0882デフォルトの名無しさん
2007/11/09(金) 19:28:28いや意味なくはないが望む動作じゃないだろうし
もちろん望ましい動作でもない。
0883デフォルトの名無しさん
2007/11/09(金) 19:30:020884デフォルトの名無しさん
2007/11/09(金) 23:29:35flgをvolatileで宣言する。
0885デフォルトの名無しさん
2007/11/09(金) 23:32:43{
try
{
// 長い処理
}
finally
{
flag = 0;
}
}
0886デフォルトの名無しさん
2007/11/09(金) 23:34:46それでどれだけ実害があるかって言えばまあそんな問題になることは少ないが。
しかし頻繁に同時起動されると問題になる可能性はある。
0887デフォルトの名無しさん
2007/11/09(金) 23:35:070888デフォルトの名無しさん
2007/11/09(金) 23:35:40前回起動時と同じハードウェア構成なのに・・・
1回コンパイルしたら、メモっとけよ
0889デフォルトの名無しさん
2007/11/09(金) 23:36:06byte flag;
…
if (Interlocked.CompareExchange(ref flag, 1, 0) == 0)
{
try
{
// 長い処理
}
finally
{
flag = 0;
}
}
手書きだからまだ間違ってそうだがw
0890デフォルトの名無しさん
2007/11/09(金) 23:37:140891デフォルトの名無しさん
2007/11/10(土) 00:21:48手動でngenがある。
.NET FrameworkのBCLはインストール時にngenをかけているとか。
0892874
2007/11/10(土) 00:49:51ご指導ありがとうございます、>>874-875の件ですが、これは具体的には、
Registry の HKEY_CLASSES_ROOT\CLSID を探し、
InprocServer
LocalServer
InprocServer32
などのキーが存在すればActiveXサーバーとして知ることができる
という感じで考えればよいでしょうか、
条件としてもし InprocServer、InprocServer32 がなかったら、インプロセスでは
使えない、ということで振り分ければよいのでしょうか?
よろしくお願いします。
0893880
2007/11/10(土) 07:24:36教えていただいたキーワードでググってみたら、いろいろ有益な情報を得ることが出来ました。
単なるlockステートメントよりも、Interlockの方が速度が出るようですね。
Monitor.TryLockでは見つからなかったのですが、TryEnterが見つかりました。
if (Monitor.TryEnter(this, 1)) {
などという書き方でもよいのかもしれません。
Tickのインターバルは数分〜数十分、長い処理は数十秒だと思われますので・・・
いろいろ実験してみます。どうも有り難うございました。
0894デフォルトの名無しさん
2007/11/10(土) 07:54:56もちろんいろんな条件によるので一概にどうとは言えないのだが、
そんな極端にInterlockedの方が速いわけじゃないよ。
0895880
2007/11/10(土) 09:17:06それから、Monitor中のfinallyが必ずしも実行されないという記述の方が気になりました。
StackOverflowが発生した場合にはfinally句が呼ばれないこともあると・・・。
0896デフォルトの名無しさん
2007/11/10(土) 09:56:50鵜呑みにはするな。
ちなみに2.0以降ではlockはかなり安全だが
スタックオーバーフローはもはやキャッチできない。
つまりあの記事の内容だとわざわざ悪化させてる事になる。
0897デフォルトの名無しさん
2007/11/10(土) 10:07:52保険的に単純なlockか、最初のようなコードで十分だと思うよ。
volatileは実は無くていいと思うけどつけたきゃつけとけw
つけた方が安全方向だしな。
0898デフォルトの名無しさん
2007/11/10(土) 10:13:58ジェネリックなデリゲートに汎用的にバインドさせることは出来ないだろうか…
LCG使わんと無理かな〜
0899デフォルトの名無しさん
2007/11/10(土) 10:41:18コンパイラとおしてないがこんな感じか。
delegate T D<T, U>(U u);
static D<T, U> F<T, U>() {
ConstructorInfo ci = typeof(T).GetConstructor(new Type[] { typeof(U) });
if (ci != null)
return delegate(U u) { return (T)ci.Invoke(new object[] { u }); };
return null;
}
0900デフォルトの名無しさん
2007/11/10(土) 12:00:23遅延バインドならもう何でもありなんだが、
遅延バインドしないでやる方法があるかなってのが主旨だったんだ。
0901デフォルトの名無しさん
2007/11/10(土) 12:09:02static D<R, U> F<R, T, U>() where T : R {
ConstructorInfo ci = typeof(T).GetConstructor(new Type[] { typeof(U) });
f (ci != null) return delegate(U u) { return (R)ci.Invoke(new object[] { u }); };
return null;
}
こうしないと対象の型ごとにデリゲートの型が変わるよ
0902デフォルトの名無しさん
2007/11/10(土) 12:23:23ないね。IL書くしかない。
0904デフォルトの名無しさん
2007/11/10(土) 12:29:080905デフォルトの名無しさん
2007/11/10(土) 12:56:360906デフォルトの名無しさん
2007/11/10(土) 12:57:39何か手はある?
0907デフォルトの名無しさん
2007/11/10(土) 12:59:050908デフォルトの名無しさん
2007/11/10(土) 13:11:44T F<T, U>(U u) { return new T(u); } // (これはC#じゃコンパイル通らない)
に相当するコードを予めCILで書いておけばいいと思う。
そうすれば、
D<T, U> d = F<T, U>;
T t = d(u);
って具合に呼び出せるはず。
0909デフォルトの名無しさん
2007/11/10(土) 13:17:490910デフォルトの名無しさん
2007/11/10(土) 13:21:02それだと実体化する側で、Tにが.ctor(U)を持ってるかどうか判断できないね。
0911デフォルトの名無しさん
2007/11/10(土) 13:28:22ランタイムリフレクションは充実してるけど、
コンパイルタイムリフレクションの機能がnew()制約ぐらいしかない。
0912デフォルトの名無しさん
2007/11/10(土) 13:32:380913デフォルトの名無しさん
2007/11/10(土) 13:57:44俺が知らない間に最近じゃ俺以外みんなエスパーになっちゃったのかなw
0914デフォルトの名無しさん
2007/11/10(土) 14:14:470915デフォルトの名無しさん
2007/11/10(土) 15:25:25だろ
0916デフォルトの名無しさん
2007/11/11(日) 00:48:48これでWIN32をシームレスにコールでき、ネイティブが吐けるなら
Win32対象のソフトウェアは間違いなくVC++の牙城を崩せたものを・・・
0917デフォルトの名無しさん
2007/11/11(日) 00:49:490918デフォルトの名無しさん
2007/11/11(日) 01:00:09現在のプロセスで実行中の、マネージスレッド(System.Threading.Thread)を
列挙することってできますか?
0919デフォルトの名無しさん
2007/11/11(日) 02:01:12需要は確実にあるんだからね。
0920デフォルトの名無しさん
2007/11/11(日) 02:04:240921デフォルトの名無しさん
2007/11/11(日) 12:00:392ちゃんであげ足とっていたら、キリがない。
0922デフォルトの名無しさん
2007/11/11(日) 12:17:13むしろ916,917,919みたいなこと言わないと思うんだよね。
だってWin32 APIをインポートするときのシグネチャって同じAPI関数をコールする場合でも
用途によって変わっちゃう場合があるからなあ。
0923デフォルトの名無しさん
2007/11/11(日) 12:24:190924デフォルトの名無しさん
2007/11/11(日) 13:27:47最初からネイティブ吐けるようにしといて、.NET2.0以降ではサポート外にすればよかったと思う
0925デフォルトの名無しさん
2007/11/11(日) 16:54:230926デフォルトの名無しさん
2007/11/11(日) 17:31:39ほかに使い道がなさそうなActivator.CreateInstance<T>()が追加されてることと、
プライマリ制約レベルでILが共有されることを考えると、おそらくそうだろうと思える。
0927デフォルトの名無しさん
2007/11/11(日) 17:46:00static T Create<T>() where T : new() { return new T(); }
↓
static T Create<T>() where T : new(){
if (default(T) != null) { return default(T); }
return Activator.CreateInstance<T>(); }
0928デフォルトの名無しさん
2007/11/11(日) 18:46:33まあC#の範疇では一緒だけど…
0929デフォルトの名無しさん
2007/11/11(日) 18:48:420930デフォルトの名無しさん
2007/11/11(日) 18:55:380931デフォルトの名無しさん
2007/11/11(日) 18:57:020932デフォルトの名無しさん
2007/11/11(日) 19:43:11ILGeneratorで構造体に無理やり既定のコンストラクタを定義して試してみたら呼ばれなかった
そんなことよりも、既定のコンストラクタを定義した構造体をC#から使えることに驚いた
0933デフォルトの名無しさん
2007/11/11(日) 23:04:27うまく出力できません。
private void frm分析_Load(object sender, EventArgs e)
{
OleDbConnection OleConn = new OleDbConnection();
OleDbDataAdapter OleDA;
DataTable Ds = new DataTable();
OleConn.ConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=C:\\etc\\開発\\test.mdb;";
string expenditure = "select sum(table1) from test";
OleDA = new OleDbDataAdapter(expenditure, OleConn);
OleDA.Fill(Ds);
DataRow dr = Ds.Rows[0];
this.lblテスト.Text = dr["table1"];
}
最後の"this.lblテスト.Text = dr["table1"];"の部分でエラーが出ます。
エラーを見ると、Select sum…の部分があやしいです、ただlblテストにtable1の
合計を出力したいだけなのですが、どなたか上のコードを修正していただけないでしょうか。。
ちなみにAccessのtestテーブルは、table1という名の列に一桁の数字が6つあるだけです
0934デフォルトの名無しさん
2007/11/11(日) 23:11:260935デフォルトの名無しさん
2007/11/11(日) 23:12:080936デフォルトの名無しさん
2007/11/11(日) 23:13:240937デフォルトの名無しさん
2007/11/11(日) 23:32:13>>934と>>936を入れたら、上記のエラーが発生しました。。
0938デフォルトの名無しさん
2007/11/11(日) 23:34:15そこまで書いてあったら、少しぐらい頭使ったらどうだ?
0939デフォルトの名無しさん
2007/11/11(日) 23:41:08つまり、同じフィールド名を作ろうとしてるからエラーが出ると思って
string expenditure = "select sum(table1) as table2 from test";
OleDA = new OleDbDataAdapter(expenditure, OleConn);
OleDA.Fill(Ds);
DataRow dr = Ds.Rows[0];
this.label1.Text = dr["table2"].ToString();
こういう感じに書き換えたんだが、OleDA.Fill(Ds);のところでエラーが発生する。。
色々考えてやってはいる
0940デフォルトの名無しさん
2007/11/11(日) 23:42:04話はそれからだ。
0941デフォルトの名無しさん
2007/11/11(日) 23:43:31成功しました!!
本当にありがとう!!
0943デフォルトの名無しさん
2007/11/11(日) 23:45:500944デフォルトの名無しさん
2007/11/11(日) 23:48:490945デフォルトの名無しさん
2007/11/11(日) 23:56:540946デフォルトの名無しさん
2007/11/12(月) 00:00:530947デフォルトの名無しさん
2007/11/12(月) 00:06:170949デフォルトの名無しさん
2007/11/12(月) 01:49:26ArrayListに順番にaddで追加したいのですが、
addすると1つ目の値が設定された後、2つ目の値を設定するときに
1つのところにに上書きされて、2つ目の値が1つ目に設定されてしまいます
最後には10個目の値が1〜9それぞれに同じ値になってしまいます
この場合、どうすればいいのでしょうか?
0950デフォルトの名無しさん
2007/11/12(月) 02:00:38意味がわかるように説明するといいです
0951デフォルトの名無しさん
2007/11/12(月) 02:01:17こういうこと・・・な訳ない・・・か
IList<int> list = new List<int>();
for (int i = 0; i < 10; i++){list.Add(i);}
foreach (int item in list) { Console.WriteLine(item); }
0952デフォルトの名無しさん
2007/11/12(月) 02:07:53ArrayList list = new ArrayList
のあと
list.add("1")
list.add("2")
〜
list.add("10")
これを繰り返す。
しかし最終的にlistの中身を見るとすべて"10"になっている
参照渡しというものらしいのですが
回避する方法がよくわかりませんので教えてください
0953デフォルトの名無しさん
2007/11/12(月) 02:35:07その例でそういう現象はおきない。
「listの中身を見る」方法がおかしいのと違う?
再現性のあるコードをアップよろ。
0954デフォルトの名無しさん
2007/11/12(月) 03:30:58{
int a;
}
A a = new A();
:
list.Add(a);
a.a = 2;
list.Add(a);
:
こんなことしてたりしてw
0955デフォルトの名無しさん
2007/11/12(月) 04:34:59↑
怪しい
0956デフォルトの名無しさん
2007/11/12(月) 10:30:40{
MethodA()
{
}
0957デフォルトの名無しさん
2007/11/12(月) 10:31:48{
a = i;
list.Add(a);
}
こんなことしてるんだろうな
0958デフォルトの名無しさん
2007/11/12(月) 12:01:54for (int i = 0 ; i < 10 ; i++)
{
str = list[i];
}
for (int i = 0 ; i < 10 ; i++)
{
Console.WriteLine(str);
}
0959デフォルトの名無しさん
2007/11/12(月) 14:30:340961デフォルトの名無しさん
2007/11/12(月) 22:02:240962デフォルトの名無しさん
2007/11/12(月) 22:02:39株の自動売買を作ろうとしてしているんだけど、
ログインはできたんだが、違うページに飛んだら
サービスが利用できない怒られるんだ(´・ω・`)
クッキーもちゃんと保存してるんだけどなぁ
誰かわかる人教えてください。
0963デフォルトの名無しさん
2007/11/12(月) 22:10:08↑こういうのでやろうとしてるの?
よくワカランけど。
0964デフォルトの名無しさん
2007/11/12(月) 22:18:18Eトレードでのホームページにデータを
POSTして発注とかを考えてるんだけど
SSLとかのせいかうまくいかない(´・ω・`)
0965デフォルトの名無しさん
2007/11/12(月) 22:42:180966デフォルトの名無しさん
2007/11/12(月) 23:09:50そのページはjavaスクリプトで移動先のページのアドレス書き換えたりしてない?
おとなしくwebbrowserでやったら?
スピードなんて対して変わらない。
0967デフォルトの名無しさん
2007/11/12(月) 23:33:13formのPOSTもできそうだしおとなしく
webbrowserにしときます。
ありがとうございました。
0968デフォルトの名無しさん
2007/11/12(月) 23:46:31勧めといてなんだけど。。。
それが結構面倒でむずいんだよね。
俺は出来るけど。
無駄レス -完-
0969デフォルトの名無しさん
2007/11/13(火) 00:27:38unsafeでかまいませんので
0970デフォルトの名無しさん
2007/11/13(火) 00:51:430971デフォルトの名無しさん
2007/11/13(火) 00:54:53unsafe struxt Foo{
public fixed byte hoge[100];
}
0972デフォルトの名無しさん
2007/11/13(火) 00:56:150973デフォルトの名無しさん
2007/11/13(火) 01:02:050974デフォルトの名無しさん
2007/11/13(火) 01:04:16仕様上は弱いメモリモデルってことになってるし弱いメモリモデルだとvolatileが必要になるけど、
普段使ってるMSILが強いメモリモデルを採用してるので無くても動く。
0975デフォルトの名無しさん
2007/11/13(火) 09:22:23てかMSILというよりCLRのメモリモデルだな。
しかし書き込みが常にvolatileってのは
パフォーマンスにはそんなには影響しないんだろうか?
まあ86や64ならいいんだろうけど。
0976デフォルトの名無しさん
2007/11/13(火) 09:31:39C++だと public void piyo(bool f=false) のように関数引数の初期値を設定できますが
C#でもできますか?
0977デフォルトの名無しさん
2007/11/13(火) 09:42:470979デフォルトの名無しさん
2007/11/13(火) 11:19:290980デフォルトの名無しさん
2007/11/13(火) 11:24:44ログは記録
ログファイル→実行記録
エラーログ→エラー記録
だからログインは記録に残すという意味から来たのだろう
0981デフォルトの名無しさん
2007/11/13(火) 11:26:370982デフォルトの名無しさん
2007/11/13(火) 11:37:24どーも
0983デフォルトの名無しさん
2007/11/13(火) 11:42:45「用語 XX」ってググれば、ほとんどのコンピュータ用語は正確に把握できるから。
ここで聞けば経験則に基づく情報は得られるだろうけど、
間違ってる可能性も否定できないし。
0984デフォルトの名無しさん
2007/11/13(火) 12:37:100985デフォルトの名無しさん
2007/11/13(火) 16:46:480986デフォルトの名無しさん
2007/11/13(火) 17:33:550987デフォルトの名無しさん
2007/11/13(火) 17:53:35早く立てろよ。
0988デフォルトの名無しさん
2007/11/13(火) 18:43:490989デフォルトの名無しさん
2007/11/13(火) 18:44:540990デフォルトの名無しさん
2007/11/13(火) 19:15:360991デフォルトの名無しさん
2007/11/13(火) 20:06:12早くたてやがれ、クソ野郎。
0992デフォルトの名無しさん
2007/11/13(火) 20:35:25http://pc11.2ch.net/test/read.cgi/tech/1191036844/
0993デフォルトの名無しさん
2007/11/13(火) 20:49:42でなく糞
0994デフォルトの名無しさん
2007/11/13(火) 21:21:13テンプレお願いし、増す。
C#, C♯, C#相談室 Part44
http://pc11.2ch.net/test/read.cgi/tech/1194956418/
0995デフォルトの名無しさん
2007/11/13(火) 23:15:32乙
0996デフォルトの名無しさん
2007/11/13(火) 23:20:120997デフォルトの名無しさん
2007/11/13(火) 23:38:38おせーよボケ、テンプレも張れ
0998デフォルトの名無しさん
2007/11/14(水) 00:16:43乙
0999デフォルトの名無しさん
2007/11/14(水) 00:46:101000デフォルトの名無しさん
2007/11/14(水) 00:46:4410011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。