1 名前:デフォルトの名無しさん [2006/10/07(土) 17:28:33 ] このスレッドは どんなに「くだ」らない.NETプログラミングに関する質問でも 誰かが優しくレスをしてくれる「すれ」っどです。 質問者自身何がなんだか分からない質問でも勇気をもって書き込んで ください。お礼は.NETアプリケーションの普及と初心者の救済を お願いします。
659 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 20:53:21 ] それは657にエスパーであれっていってるのと同義だと思うけど
660 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 20:57:54 ] C#が1.1なのか他のバージョンなのか。 リフェレクションはAssembly.LoadFromを使っているのかそれとも別の方法か? リフェレクションで読み込んで呼び出している部分のソースをさらす。 VBで同じ手法のリフレクションを使って実現できているのか。 「Base.dllが見つかりません。」じゃなくてスタックトレースを出せ。 E伊東さんとお知り合いか? とりあえず、このくらいは書いとけよ。
661 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 22:44:55 ] リフェレクションえろいな
662 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 22:47:14 ] >>656 無理。 依存してるライブラリが更新されたらコンパイルしなおす必要がある。 さもなくば、動的にクラスを構成しないといかん。
663 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 23:16:46 ] 厳密名を使ってるなら話は別だがPublicKeyToken=nullのときはVersionのチェックはない。
664 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 20:55:34 ] LoadFromが原因だろう。 厳密名とかの話じゃない。 LoadFromで読んだ場合、自動的に同じフォルダのBase.dllを 読んだりはしてくれない。 AssemblyResolveなどで自分でハンドリングして読み込むか、 事前にBase.dllもLoadFromで読んでおくことはできる。 でも、アプリのフォルダを自由に指定とかなってくると、 たぶんどっかでトラぶってにっちもさっちも行かなくなると思うぞ…
665 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 19:50:24 ] フォーム1で使っている変数(数字の1〜100)を フォーム2にとばして使いたいのですが、どうすればいいのかわかりません。 自分で調べた所、プロパティを設定すればいいとのことでした。 ttp://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard47.htm ここを参考にして色々とやってみたのですが、 どうもうまく実際に使っているXの値を別のフォームに送れません。 どうか、ヒントをください。
666 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 20:13:58 ] [ヒント] プログラミングに王道なし。 いやまじめな話、そのレベルから掲示板で解説しろってそりゃ無理あるぞ。
667 名前:656 mailto:質問 [2008/08/11(月) 22:59:52 ] >>660 C#は1.1です。 try { Assembly a; a = Assembly.LoadFile("C:\App\ModA.dll"); foreach(Type type in a.GetTypes()) { if(type == typeof(インターフェース)) { return true; } } } catch(Exception e) { MessageBox.Show("エラー発生"); } ソースはこんな感じです。スタックトレースってのはよく分かりません。 ごめんなさい。 >>664 Base.dllを先に読み込めばいいんですね。 明日試してみます。
668 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 23:05:34 ] ってしかもLoadFileじゃねーかよ
669 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 23:28:49 ] >a = Assembly.LoadFile("C:\App\ModA.dll"); もしかして〜 a = Assembly.LoadFile(@"C:\App\ModA.dll"); とか a = Assembly.LoadFile("C:\\App\\ModA.dll"); で直ったりして
670 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 23:44:47 ] まさかね まあBase〜っていってるから違うと思うけど。 しかしなー、LoadFromやLoadFile系はトラブるんだよなー できればフォルダを自由に指定ってのはやめた方が無難だけどなー
671 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 23:50:07 ] LoadFileはいろいろ制限が多いし、 LoadFromは署名がないと相対パスしかダメなんだっけ。 やっぱ構成ファイルを書きまくるとか。
672 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 00:25:37 ] MSDNから >LoadFile は、LoadFrom メソッドとは異なり、ファイルを LoadFrom コンテキスト内には読み込みません。 >また、読み込みパスを使用して依存関係を解決することもできません。 ModA.dllのあるディレクトリから依存のあるBase.dllを探してくれない
673 名前:656 mailto:質問 [2008/08/12(火) 00:41:21 ] >>669 書き込みミスです。@付きになってます。すみません。 LoadFromにすれば直るのでしょうか? >>664 の先に読み込むというのが気になるので、 それをまず試してみようと思います。 どちらにしても今すぐ確認はできませんので、 確認し次第再度書き込みます。 いろいろ助言をありがとうございます。
674 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 00:45:38 ] >>664 はLoadFileの制限ぽい感じだな
675 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 00:53:41 ] C#でアプリ作ってるのですが、.NET Framework入ってない環境で起動した場合、 強制終了になる前に任意のメッセージ出して終了するにはどうすればよいでしょうか?
676 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 08:07:28 ] 環境を調べるネイティブアプリ作って、入って無ければエラー出して終了、 入っていればC#アプリを起動するとか。
677 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 13:27:53 ] >>676 そのつもりでDOSスタブみたいな形で埋め込めればいいなぁと あれこれ模索してたりしてたんですが、やっぱ分けるしかないでしょうか。
678 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 14:33:44 ] >>677 先頭のほうにmscoree.dll::_CorExeMainを呼ぶjmp命令があるから、 その飛び先を変えてやればいいと思う。 ちなみに、XP以降のWindowsローダーはマネージドアセンブリを読み込んだ場合、 このネイティブなスタブコードを実行せずに、_CorExeMainから直接実行し始める。
679 名前:678 mailto:sage [2008/08/12(火) 15:15:17 ] 何が言いたいのかよく分からない文章になってたけど、 要するにXP,Vistaあたりでは必要なバージョンのランタイムがないときに、 実行前に任意のメッセージを出すことはできない言うことです。 スタブコードを書き換えるのはやったことがないけど、そこに感染するウイルスがいくつかあるんで、 もしかしたらアンチウィルスソフトウェアに文句言われる可能性はあるかもしれないですね。
680 名前:656 mailto:sage [2008/08/13(水) 00:01:05 ] LoadFromを使用して、先にBase.dllを読み込んでおけば 無事動くようになりました。 新たな問題はいくつか出てくるようになりましたが、 今のところ少しずつ解決していけてるので大丈夫だと思います。 丁寧な回答ありがとうございました。
681 名前:DD mailto:sage [2008/08/20(水) 13:29:19 ] ASP.NET2.0のGridViewで質問があります。使用言語はC#です。 1つの画面に以下のコントロールがあります。 ・TextBox (TextBox1) ・Button (Button1) ・GridView (GridView1) ・SqlDataSource (SqlDataSource1) TextBox1に検索する主キーの値を入れ、Button1をクリックすると、 その主キーの行の背景色を変更する、といったことをやりたいと思っています。 GridView1のSelectedRowStyleのBackColorに適当な色を指定して DataBoundイベントでGridView1.DataKeys[i].Valueをループで検索。 見つかったらGridView1.SelectedIndex = iとすることで ほぼやりたいことは実現できています。 この状態でGridView1のAllowPagingをTrueに設定し、 Button1クリック時に、検索してヒットした行のあるページに 自動的に切り替えるにはどのようにすればよいのでしょうか? 現状のコードでは、現在のGridView1のページしか検索出来ないためうまく出来ません。 どなたかご教授願えないでしょうか?
682 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 14:15:56 ] >>681 PageIndexで表示したいページを設定できる
683 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 09:19:12 ] VC# 2005とWindows Forms(.Net Framework 2.0)でOfficeライクにお絵かきできるコントロールを探しています。 実はVisioのDrawing Control(ActiveXベース)がやりたいことを網羅しているのですが、 アプリケーションを動作させる全ての端末にVisioを入れなければいけないので 泣く泣くあきらめました。 www.c-sharpcorner.com/UploadFile/mgold/VisioInDotNet12032006222024PM/VisioInDotNet.aspx 実行環境が無料で何か良いコントロールをご存知の方は お教え頂けますでしょうか。よろしくお願いします。
684 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 22:54:37 ] VC++2005EEとForm(.NET2.0)で作ったアプリを配布したいのですが どのような配布形式が一般的でしょうか? VS.net2003bootstrapper plug-inのようなものがあれば使いたいです。
685 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 02:37:40 ] .NET2.0はかなり普及してるし、そのままでも良いとは思う。 必要ならこの辺を参考に ttp://dobon.net/vb/dotnet/deployment/dotnetbootstrap.html
686 名前:DD mailto:sage [2008/08/25(月) 18:12:57 ] >>682 PageIndexで表示したいページを設定できることは分かっております。 問題なのは、DataBoundイベントでGridView1.DataKeys[i].Valueをループで検索した場合、 現在のPageIndex内のデータしか検索できないのです。 やりたいのは、全てのページを検索し、ヒットしたらそのページを表示することです。 DataBoundイベントではなく、何か別のイベントで検索する必要が あるのではないかと思うのですが、 そのイベントが何なのかが分かりません。 どのようにしたら良いのでしょうか?
687 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 22:01:53 ] GridViewではなく、DataSource自体をぐるぐる回って調べていくとか。 泥臭いかw
688 名前:DD mailto:sage [2008/08/27(水) 13:39:15 ] >>687 例えばDataSource自体をぐるぐる回って調べるとしたら、 どのイベントを捕まえればよいんでしょう? 実はそれをやろうとしてみたんですが、どのイベントで処理すればよいのか 分からなくて・・・。
689 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 23:57:48 ] 一端DataViewに取って、後はそれ使えば? 常識的に考えて並びは一緒だから、現在のページ×1ページあたりの行数+indexで行けるハズ
690 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 10:34:42 ] >>687 泥臭いも何もそれが正しいやり方だと思うんだが。 >>688 イベントって、Button1のクリック以外に何があるん? GridViewのDataSourceにセットしたものがDataTableオブジェクトだった場合、 Protected Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound If e.Row.RowIndex = -1 Then Return If e.Row.Cells(1).Text.Contains(Me.TextBox1.Text) Then ' 検索ワードが入っている行の背景を緑に e.Row.BackColor = Drawing.Color.LightGreen End If End Sub Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click Dim rIndex As Integer Dim tbl As DataTable = CType(Me.GridView1.DataSource, DataTable) For rIndex = 0 To tbl.Rows.Count - 1 If tbl.Rows(rIndex)(1).ToString().Contains(Me.TextBox1.Text) Then ' 検索ワードが見つかったらループから抜ける Exit For End If Next ' ページインデックスを算出 Dim pIndex As Integer = rIndex \ Me.GridView1.PageSize ' GridViewに算出したページインデックスをセット Me.GridView1.PageIndex = pIndex ' 適応実行 Me.DataBind() End Sub
691 名前:DD mailto:sage [2008/08/28(木) 18:27:18 ] >>689 一端DataViewに取る、その方法が分からないんです(T_T) そこのところ、ご教授願えないでしょうか。 >>690 Dim tbl As DataTable = CType(Me.GridView1.DataSource, DataTable) とありますが、当方C#なもので、よく意味が分かりません(^^ゞ C#で書くと DataTable tbl = (DataTable)GridView1.DataSource; なのかな、と思って試してみましたが、GridView1.DataSourceがNULLでうまくいきませんでした。
692 名前:DD mailto:sage [2008/08/28(木) 18:42:28 ] >>689 >>690 おかげさまで解決いたしました! 以下のコードでDataTableに取り出すことが出来ました。 DataView dv = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty); DataTable table = dv.Table; 丁寧な解説、どうもありがとうございました。
693 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 20:47:23 ] C#で作ったプログラムからExcelを操作するプログラムを作りたいのですが、 Excelを操作する方法についてインターネットで調べてみると どうやらExcelのバージョンによって参照設定するCOMってやつのバージョンが違うみたいです。 今作ってるプログラムをそのまま実家にメールで送って使ってもらう予定なのですが、 COMのバージョンが違うと正しく動かない可能性もあるのでしょうか? 使う予定の機能はExcelを読み込んで決まった位置に値を書き込むぐらいなんですが、 不具合を起こしにくいコツなどがあれば教えてください。
694 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 21:33:36 ] > 不具合を起こしにくいコツ .NETでOfficeのCOMを利用しないというのが一番の対策じゃないかw xlsファイルなどを直接操作できるライブラリを使うのがお勧め
695 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 21:40:40 ] >>694 すみません、できれば.NETを使用することを前提にお願いします。 COMって、自分で作ったdllみたいにReflectionで動的に探してきたりはできないんでしょうか?
696 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 22:17:30 ] それはできる。 でもメンバアクセスまで全部リフレクションでやる羽目になる。 悪いことは言わないからせめてVB.NETにしとけ。
697 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 22:59:19 ] >>696 ありがとうございます。 とりあえずGoogleってた結果、 Type.GetTypeFromProgID()というのを見つけたので実装はできそうです。 VBを1から勉強するかは後で考えるとして、 COMを動的参照するときって、普通はどういうクラスのどういうメソッドで参照先dllを探すのですか? 今までは自分で作ったdllを動的参照することしかしたことがなかった上、 インターフェースは静的に参照してそれを実装したクラスをReflectionで見に行く ってことしかしたことがないので、COMの一般的な探し方を教えてくれませんか? 名前はともかくとして、COMのdllがある場所ってどうやって調べるんですか?
698 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 23:11:05 ] >>697 レジストリ(HKCR)を探せば見つかるが、プログラミング目的では普通やらない。 みんなProgIDとかClsIDとかで識別するから。 それに、DLLなら直接読み込んでオブジェクトを作ることも可能だが、 EXEに実装されているとどの道COMのAPIを介さないといけない。
699 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 00:19:01 ] >Type.GetTypeFromProgID() を使うんだからおかしなことを考える必要はない。 問題は、インターフェイスを参照できないから、 メソッド呼び出しとかまですべてリフレクションでやらなきゃならないこと。
700 名前:DD mailto:sage [2008/09/02(火) 11:03:35 ] >>697 とりあえず、VC#2005なら、ソリューションエクスプローラーの参照設定右クリックから 参照の追加。 COMタブを選択して、Microsoft Excel XX.X Object Library を選択して OKボタンクリック。 これで一応使える。 COMオブジェクトは最後に必ず開放。こんな感じでどうでしょう。 /// <summary> /// COM オブジェクトの参照カウントを解放する /// </summary> /// <param name="comobj">COMオブジェクト</param> private void ReleaseComObject(Object comobj) { // COMオブジェクトだったら if (comobj != null && System.Runtime.InteropServices.Marshal.IsComObject(comobj)) { try { System.Runtime.InteropServices.Marshal.ReleaseComObject(comobj); } catch { } finally { comobj = null; } } }
701 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 12:14:10 ] >>700 それだと複数バージョンのExcelに対応できないだろ>>693 読め。
702 名前:DD mailto:sage [2008/09/02(火) 13:11:52 ] >>701 あ、その通りですね(^^ゞ 以前Excelを扱った時はSpreadsheetGearを使ったので COMを使った操作は良く分からないです。。。 サードパーティのライブラリを使用したくないとのことですので これは使えませんね。 お役に立てずm(__)m
703 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 15:25:27 ] > comobj = null 意味ないじゃんw
704 名前:DD mailto:sage [2008/09/02(火) 15:26:49 ] >>703 ですね(^^ゞ はった後私もそう思いました。
705 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 19:07:53 ] >>701 バイナリになってしまえば問題ないんだよ。 「複数バージョンのExcelに対応できない」のはあくまで開発環境のみ。 一部バージョンが違うと例外が発生するメソッドがあったりするけど、 そこだけ個別に対応すれば問題ない。
706 名前:697 mailto:sage [2008/09/02(火) 21:11:51 ] いろいろなご解答ありがとうございます。 今回は複雑なエクセル操作をするわけではないので、 すべてリフレクションでやるクラスを作って、それを使いまわそうと思います。 ありがとうございました。
707 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 21:33:39 ] VBでクラスライブラリ作った方が簡単だと思うけどな。
708 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 23:26:51 ] >>705 え?まじで? うっそーん?
709 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 20:20:35 ] VBAではセルの文字列の色をCellsのCharactersで調べられるのですが .NETではどうればいいのでしょうか? msdnにはRangeにCharactersがあるのですが 書いてみると定義がありませんと エラーがでます。 using Excel = Microsoft.Office.Interop.Excel; var xls = new Excel.Application(); var book = xls.Workbooks.Open(略 var rng = (Excel.Range)book.sheet.Cells[1, 1]; こんな感じでRangeクラスを取得してます。 ちなみにVS2008SP1を使っています。
710 名前:DD mailto:sage [2008/09/08(月) 10:36:38 ] >>709 rng.Font.Color で取得できるのでは?
711 名前:709 mailto:sage [2008/09/08(月) 19:52:53 ] >>710 すいません、質問の内容を微妙に間違えてました。 取得したいのは文字列のn番目の文字の色なんです。 Characters(4, 1).Font.ColorIndex と書くとVBAでは4文字目の色の取得や設定が 出来るんです。 それだと多分セルに設定された文字列の色になるんですかね?
712 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 21:09:12 ] net導入するときはVB6を残したままでもいいですか?
713 名前:DD mailto:sage [2008/09/09(火) 11:55:55 ] 現在Visual Studio 2005 C#で以下のようなことを実現したいと考えております。 DropDownList(値にはIDが入っている)で選択した項目に一致するレコードをGridViewに表示する。 DropDownListにはALLという項目があり、これを選択すると すべてのレコードを表示する。 このようなことをやりたいのですが、どうやったらいいのか分かりません。 現状ではALLを静的に追加しており、その値は0となっています。 また、GridViewのデータソースにSqlDataSourceを割り当て、 SqlDataSourceのSelectParameter(ID)にDropDownListの SelectedValueを設定し、ALL以外の項目を選択した場合は 正常に動作しています。 どなたかご教授ください。
714 名前:DD mailto:sage [2008/09/09(火) 12:06:29 ] 自己解決しました。 bunise.seesaa.net/article/91995844.html このページを参考にしてやってみてはいたのですが、なかなかうまくいかず 質問させていただきました。 結局は、SqlDatasourceのCanselSelectOnNullParameterをFalseにするのを 忘れていただけでした(^^ゞ お騒がせいたしました。
715 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 23:36:55 ] .NET2005環境を利用しています。 Private Sub ShowMsgBox(ByVal PromptText As String, Optional ByVal Type As Integer = 0, _ Optional ByVal Title As String = "") に対して、配列CmdArgsの1番目(0番目ではない)〜3番目の要素を 引数として渡したいのですが、2番目・3番目の要素は省略される可能性があります。 呼び出しについて例としてPerlで書くと、「$ShowMsgBox(CmdArgs[1..$#CmdArgs]);」のように 不定要素数の配列をインデックス1から最後まで指定して投げることが出来ますが、 VBではどのような形で呼び出せばいいでしょうか。 要素数を判別して、条件毎に呼びだし方を変更するしかないでしょうか。
716 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 23:58:56 ] >>715 ShowMsgBox(ParamArray args as Object())でも多重定義しとくとか。 まあどのみちその中で要素数を調べてToStringして別のシグネチャのShowMsgBoxを 呼び出すコードを書くわけで、同じといえば同じかもしれないけど。 っていうか趣味の問題かもしれんがOptionalは使わない方がいいんじゃないか?
717 名前:715 mailto:sage [2008/09/10(水) 00:20:30 ] >>716 なるほど、即レスありがとうございます。 要素数判定で呼び出し方を返る、という形で書いてみましたが かなり冗長な呼び出し方になってしまい、本末転倒な感じがしてきました。 If CmdArgs.Length > 3 Then ShowMsgBox(CmdArgs(1), CmdArgs(2), CmdArgs(3)) ElseIf CmdArgs.Length > 2 Then ShowMsgBox(CmdArgs(1), CmdArgs(2)) Else '←必ず0、1番目の要素は定義されている ShowMsgBox(CmdArgs(1)) End If ShowMsgBox側で配列としてまとめて受け取ってから、 処理した方が良さそうですね・・・。 >Optionalは使わない方がいいんじゃないか? C感覚で勉強中だったので、多重定義が可能なことを忘れていました。 もう少し勉強してみます(`・ω・´)
718 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 01:26:13 ] ドレミファソラシドの周波数を算出するため、十二平均率 ja.wikipedia.org/wiki/%E5%B9%B3%E5%9D%87%E5%BE%8B#.E5.8D.81.E4.BA.8C.E5.B9.B3.E5.9D.87.E5.BE.8B の周波数比を計算させたいのですが、ExcelのPOWER関数のような累乗根計算の方法はありませんか?
719 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 01:36:09 ] Math.Pow
720 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 02:17:05 ] >>719 は累乗と累乗根の違いすら分かってないから参考にしないように。
721 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 03:17:17 ] ニヤニヤ
722 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 08:55:11 ] Math.Pow( >>720 , 1.0/12.0);
723 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 11:37:07 ] >>720 やる夫
724 名前:718 mailto:sage [2008/09/10(水) 12:12:07 ] >>719 ,722 ありがとうございます! 以下のようにしたら十二平均律の周波数を算出できました。 Dim i As Integer, fr(12) As Double For i = 0 To 12 fr(i) = Math.Pow(Math.Pow(2, i), 1.0 / 12.0) Next
725 名前:722 mailto:sage [2008/09/10(水) 12:35:12 ] >>724 素直に Math.Pow( 2.0 , i / 12.0) と書くべし
726 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 12:49:08 ] ワロタ
727 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 12:53:46 ] 素直なのは>>724 なんじゃない? 整理したら>>725 だけどさ x _ √a = a^(1/x) であるから、 x __ √a^b = (a^b)^(1/x) となり、十二平均律では、x = 12, a = 2, b = (1から12)となるので、 12 __ √2^b = (2^b)^(1/12) bをiとして、 2^i = Math.Pow(2,i) これにより、 Math.Pow(Math.Pow(2, i), 1.0 / 12.0)
728 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 13:02:47 ] 意味が分からずに言われたとおりに簡略化して書いてる奴って職場だとホント困るんだよな・・・。
729 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 13:04:56 ] 中学数学でしょ
730 名前:722 mailto:sage [2008/09/10(水) 13:09:00 ] 主観入ってたわ。 頭の中で x __ √a^b = a^(b/x) になってた。 というわけで、>>725 を訂正して、 Math.Pow()を2回呼ぶより、整理して1回にしたほうが良いと思う。 分かりにくかったら無視してくれ。
731 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 13:15:30 ] Math.Powは見るからに処理長そうだしねえ 慣れるまでは理解するまでベタ書きが無難だが 慣れたら呼び出す回数を減らすことを勧めたい
732 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 13:44:50 ] 問題にはならないだろうけど、一応精度の問題もある
733 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 17:19:53 ] ここぞとばかりにOOoのMath使ってみたんだけど ほんとハナクソだな・・・('A`)モウツカワネ www1.axfc.net/uploader/Img/l/2296233703/Img_20227.gif
734 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 17:30:52 ] 404 Not Found
735 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 17:32:29 ] すまん、リファラ読んでるっぽいな。 www1.axfc.net/uploader/Img/so/20227
736 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 20:34:53 ] >>727 発想が逆立ちしてるよw 数学できない子にありがちだけど、問題を自分でわざわざ複雑にしてるよ。 12音階というのは2(1オクターブ)を対数軸上で12等分したもの、 というのが全ての出発点で12乗根√2っていうのはそこから導出した値に過ぎないんだよ。 対数軸(y = log(x))上の等差数列はxの世界では等比数列になる、って考えてもいいけど 普通は直感的に基準となる音からn番目の音の周波数は2の(n/12)乗倍だってわかるだろ。
737 名前:デフォルトの名無しさん mailto:age [2008/09/11(木) 16:35:43 ] すみませんが、質問です。 Googleなどの検索エンジンで .NET の情報を効率よく集めるには、どのような 検索語にすればよいでしょうか? ただ入力すると、.netというドメイン名にばかりヒットしてしまいます。
738 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 16:40:29 ] >>736 >数学できない子にありがちだけど、問題を自分でわざわざ複雑にしてるよ。 >数学できない子にありがちだけど、問題を自分でわざわざ複雑にしてるよ。 >数学できない子にありがちだけど、問題を自分でわざわざ複雑にしてるよ。
739 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 16:43:02 ] 検索エンジンの使い方までサポートする幅広いスレだな せめてVBで検索しろ
740 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 16:53:14 ] >>739 ありがとうございます。C#で検索することにしました。 .NETは別にC#だけではないのですが、関係ないページばかり見つかるよりマシです。
741 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 16:55:30 ] いやVisualStudioだろ
742 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 17:14:38 ] VisualStudio は .NET だけじゃないんじゃ?
743 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 17:23:41 ] だから.NETと組み合わせるんじゃ? でもVisualStudioじゃ取りこぼし多そうだがなあ
744 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 17:40:51 ] うん、組み合わせのつもりで言ったぞ VisualStudio .NET 2005 +言語名なら確実だろう
745 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 17:45:11 ] マイクロソフトは一般名詞を商標にして いつの間にか自社製品を示す言葉にするのが得意だからな。
746 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 17:54:08 ] そうだね。あれは本当に迷惑。 昔の話だけど .doc という拡張子は元々テキストファイルのものだったのに、 勝手に MS Word のものにされた。 Word という名前といい、いまだに腹が立つ。
747 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 17:56:00 ] それはそれとして、ノイズが混じらなくて、取りこぼしをなるべく少なくする には、どんな検索語がいいかな。 VisualStudioは、ちょと取りこぼし多そう。
748 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 18:14:16 ] そろそろスレチじゃね .NET資料の探し方とは言え、googleの検索仕様に左右される話題だし
749 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 18:31:12 ] 正規表現を使うって発想がないWindowsの天下で わざわざ正規表現を実装する検索サイトはないよな あったら凄まじく便利なんだが
750 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 18:34:42 ] 有るわけがない。 文化の問題ではない。
751 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 18:59:48 ] ここで正規表現が使える奴が居るかも怪しい
752 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 19:45:57 ] .NETにも正規表現クラスあるけどちょっと使い方がまどろっこしい
753 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 23:27:37 ] 正規表現は一種のツールだからな。 プログラミングサイドで実装されてても、 OS側が環境として提供してくれないと・・・
754 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 23:44:32 ] >>746 外国だとテキストファイルに.docはマイナーだったって聞いている。 わざわざかぶること前提で.docに決めたわけなかろう。
755 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 00:04:36 ] 少なくとも.NETはトップレベルドメイン.netとかぶること前提だけどな
756 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 09:57:40 ] しかし readme.doc は国内外を問わず添付されてた気が
757 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 10:03:53 ] 拡張子の制約で使い勝手を縛るのはWindowsとhttpのMIMEtypeだけだよ。
758 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 10:26:40 ] 知ったようなことを言う
759 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 11:59:51 ] 反論すら成立してない