1 名前:デフォルトの名無しさん [2008/04/22(火) 00:31:59 ] (#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。 c++厨の嵐はスルー汁。 前スレ C#, C♯, C#相談室 Part45 pc11.2ch.net/test/read.cgi/tech/1200911737/ その他テンプレ>>2-5 くらい
756 名前:750 mailto:sage [2008/06/06(金) 00:07:58 ] >>751 確かに、FileDialog使うときは RestoreDirectory = true にしないとまずいな てか、既定値がfalseとかありえん
757 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:48:22 ] >>755 世の中そうもいかんこともあるのよ。 リモーティングとか。
758 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 01:29:58 ] >>752 まさにこういう使い方をするために、宣言時に識別子を省略出来たらいいのに。
759 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 04:03:17 ] >>754 それは知恵が足りないだけ。 できるよ。
760 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 07:08:25 ] マルチプルアイコンを含むIconインスタンスから、各アイコンを取得したいのですが、 どうすればよいのでしょうか。
761 名前:760 mailto:sage [2008/06/06(金) 07:46:58 ] 自己解決しました。 Icon.Save()でバイナリデータを得て、それを分割した上でIconコンストラクタに与えればいいですね。 もっとスマートな方法がありそうな気もしますが、とりあえずそれでいきます。
762 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 09:30:47 ] コンストラクタでSize指定だけはできる
763 名前:747 mailto:sage [2008/06/06(金) 12:09:04 ] >>753 >>イベントハンドラはEventHandler<TEventArgs>使え どうもです。 こういうのがあるんですね。 ただこれだとEventArgsカスタムクラスをどこかで定義しなければならないです。 EventArgsカスタムクラスに依存するのがなんだかシャクなんで。 たとえば talkerインターフェイスを用意するとして interface ITalkter{ public delegate void printf(string fmt,prams object[] args); } こういうことができたら、 ITalkerを継承したクラスを作ってしまえばそれでOKなんですけど ITalkerインターフェイスに依存するのは納得できるんで。 ただ、interfaceでは型宣言出来ないらしく。。。 なんで出来ないんだろう。。。。 ちなみにtalkerは大量に居ます。 listenerは1個だけっていう想定。 何かいい方法はありませんか。
764 名前:747 mailto:sage [2008/06/06(金) 12:19:13 ] もしくは public event void delegate(object sender,params object[] arg) printf; のような感じで 名無しの型を宣言すると同時に変数定義みたいなことができたらそれだけでいいですね。 こういうことって可能なんでしょうか?
765 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 12:25:10 ] interface ITalkter{ string PrintString{ get; } } こうとか interface ITalkter{ void Print(Action<string> print); } こうとか interface ITalker{ void Print(IListener listener); } こうとかじゃだめなの?
766 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 12:46:17 ] DebugListener/TraceListenerで十分だと思うけど。
767 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 13:27:34 ] >>763 talkerの役割がよくわからないな。 実際に表示する部分なのか、それともメッセージを発行する元なのか? それからdelegateをeventと1対1で作らなければいけないとか思ってないか?
768 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 14:49:41 ] >>761 P/InvokeでExtractIconExとか。
769 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 17:41:02 ] EventHandler<TEventArgs>を使いたくないのだったら、普通にAction<T>でも使うってのは? オブジェクトAの中に public event Action<string, object> printf; を実装する。 これならカスタムクラス使わんで済むでしょ。
770 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 23:54:33 ] >>747 >>764 デリゲートを使うにはデリゲート型が事前に作成されている必要がある また、匿名メソッドやラムダ式を使った場合でも、型が自動的に作成されることはない なので、君がやりたいと考えていること(デリゲートを使用して云々)は恐らく不可能 まあ、本来の目的からすると、出力タイミングをGUI側で制御するなら>>765 オブジェクト側で制御するなら interface ITalker { void SetPrintCallback(Action<string> print); } もしくは interface ITalker { void SetListener(IListener listener); } >>769 void (object sender, T e) where T : EventArgs に合致しないデリゲートをイベントにするのはやめれ # MSのガイドラインなんて知らん、というなら止めはしないが さらに言うと、 ・デリゲート型の名前のサフィックスは EventHandler ・第2パラメータの型(上記 T)の名前のサフィックスは EventArgs ・2つのパラメータ名は上記の通り(sender, e)
771 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 00:33:51 ] 正直msのガイドラインなんか知ったこっちゃ無い
772 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 00:55:01 ] なら使うな
773 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 06:58:46 ] ここはCompact Frameworkの質問はおk?
774 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 07:01:03 ] だから使わないんだって
775 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 07:01:24 ] C#にからめればOK
776 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 07:03:46 ] Compact FrameworkでWindows Mobile用2chブラウザを作ってるんだが、 スレ一覧にListViewを使ってるんだ。 ListViewItemCollectionにAddRangeが無くてforeachでスレデータ回してアイテム作ってAddさせてるんだが どうにも低速なんだ。 AddRangeの代わりになるものは回してAdd以外ないだろうか。
777 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 07:19:17 ] BeginUpdateやってる?
778 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 07:20:04 ] >>777 やってる。
779 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 07:53:10 ] ListViewへの追加はPCでもかなり遅いからなあ 1000件くらいになりそうなときはVirtualModeにしてるけど、Compactじゃ使えないのか
780 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 07:55:15 ] >>779 2chの板のスレ一覧データだし、700項目くらいPCでやった場合ドパァッって表示されるんだがなあ。 VirtualはCFからは使えないな。
781 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 08:36:09 ] 自分で擬似的なものを描画するのが一番速いのかな
782 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 08:56:03 ] MSのガイドライン無視したクラスライブラリって見てて恥ずかしい
783 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 09:15:58 ] Formの上でGridクラス作ったが、20万件でも一瞬で追加・表示されるようになった(´・ω・`)
784 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 09:17:25 ] ListViewってMSの中の底辺プログラマが作ったんだろうか
785 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 11:12:31 ] 作ったのがだいぶ昔のことで、 ここまで大量のデータが取り扱われるとは考えられなかったからだと思う。
786 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 11:29:20 ] 描いた円を上キーでジャンプさせるにはどうすればいい?
787 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 11:41:02 ] 意味が分かりませんがKeyDownイベントでそういう処理書けばいいんじゃないでしょうか
788 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 11:54:23 ] いや、そのKeyDownの中身が分からなくって
789 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 11:56:34 ] KeyDownイベントの中身で円を描く場所を変えて描画処理に投げる
790 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 11:56:35 ] 円をどうやって描いてるかジャンプってどういう意味なのか分からなくって
791 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 11:58:45 ] プログラミングが下手な人って質問も下手だよね
792 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 12:00:20 ] ダブルバッファにしろよ 画面ちらつくぞ
793 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 12:20:11 ] 上向きの初速を与えて、一定の下向きの加速度を受けながら運動するようにしたい。 例えば、20進んで一瞬停止して、15進んで一瞬停止して、の繰り返しでいいのか
794 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 12:26:27 ] v = v0 + gt と言う式を当てはめれば良いだけじゃん
795 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 12:32:28 ] ↑アホ
796 名前:デフォルトの名無しさん [2008/06/07(土) 12:37:46 ] tをどうすれば?
797 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 12:40:12 ] タイマーでも使ってろ
798 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 12:48:39 ] 変数tを入れれば位置まで出せる公式があったろ リアルにやるならtをタイマーを使って現実時間とぴったり合わせりゃいい
799 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 14:58:07 ] 加速度を9.8/sずつ減らせばいいんでね?
800 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 15:15:33 ] p0 : 初期位置 v0 : 初期速度 g : 重力加速度(約-9.8) p(t) : 初期時刻からの経過時間tの時の位置 p(t) = p0 + v0*t + 0.5*g*t*t
801 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 15:23:50 ] つかいつの間に重力加速度の話になったんだ
802 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 15:44:46 ] >>800 それをwhileに入れれば出来そうだけど、ジャンプ中も左右移動したい
803 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 15:46:52 ] なんかこのスレ方向性分かんなくなってきたなw
804 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 15:55:23 ] ジャンプ中左右移動したいなら new Timer( () => { 位置更新 描画 }); void KeyDown(...) { switch(key) case ←: 左にちょっとずらす ... } こんな感じで出来るのかな 普通は while(true) { 入力ゲット 位置更新 描画 時間が来るのを待つ } こんな感じなのかな よく知らん
805 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 16:46:12 ] >>802 物理的に表現したいならこんな感じです a:加速度 v:速度 p:位置 dt:微小時間 とすると、こういう微分方程式が成り立ちます v(t)/dt = a p(t)/dt = v(t) dtはゲームなら1フレームの時間(約16.7ms)と考えるのが普通です この式を例えば前進差分(ぐぐってね)で微分項を近似するとこうなります ( v(t+dt) - v(t) ) / dt = a ( p(t+dt) - p(t) ) / dt = v(t) t+dt時間における速度と位置を知りたいので式を変形します v(t+dt) = dt * a + v(t) p(t+dt) = dt * v(t) + p(t) この式をゲームのプログラムなんかではこう表現します void Update( float dt ) { velocity += dt * acceleration; position += dt * velocity; } で、左右移動したいとき、というのは速度に値が加えられている状態なんで、 velocityに対して基本速度を加えておけばOKです
806 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 16:51:23 ] って書き終わって凄く後悔した スレ違いにもほどが
807 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 19:23:48 ] >805はY方向だけなので、Xは別にしないとだめだぞ。 横への移動を表す加速がY方向へは関係しないとき、XとYは独立して扱えるからよい子のみんなは気をつけよう。
808 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 19:40:07 ] 気をつけるまでも無く自明だと思うのですが!
809 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 21:07:23 ] 型を書いてないからアレだけど ベクトル型を使うのが普通なんで
810 名前:デフォルトの名無しさん [2008/06/08(日) 10:51:16 ] 過疎
811 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 11:54:09 ] IDEの使い方に関するおすすめの書籍は?
812 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 17:17:44 ] ListViewで特定のカラムだけ非表示にすることは出来ますか? リストには追加するのに非表示にするという、一見無意味な操作なのですがそうしたいのです。
813 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 18:36:00 ] >>812 ListViewのColumnHeaderで特定のカラムだけWidth=0にすることが出来ませんか? リストには追加するのに非表示にするという、一見無意味な操作なのですがそうしたければそうすることもできるでしょう。
814 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 19:05:09 ] >>813 非表示にしたいカラムだけ幅調整不可って出来ますか? Widthを0にしただけでは幅調整されて見えてしまうので・・・。
815 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 20:00:43 ] ListViewItemから派生させたクラスで持つようにして そのオブジェクトをListViewに追加すれば?
816 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 20:12:26 ] つかTagで十分だろ
817 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 21:27:03 ] >>815 なるほど。ありがとうございます。 >>816 Tagは使ったこと無いので調べてきます。 ListViewの方ではなくListViewItemの方ですよね?
818 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 22:33:03 ] ColumnResizingとかそんな感じのイベントあるから、 そこで非表示にしたいカラムが幅調整されそうになったら制限すればいい。
819 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 22:34:14 ] >>818 なるほどありがとうございます。 Tagを使ったものがまさに用途にあった使い方でした。
820 名前:デフォルトの名無しさん [2008/06/09(月) 10:09:01 ] pc11.2ch.net/test/read.cgi/tech/1212972014/
821 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 12:07:21 ] メソッド呼び出し中にキー入力を受け取るにはどうすればいいですか?
822 名前:デフォルトの名無しさん [2008/06/09(月) 12:16:03 ] >>821 メソッド呼び出しを別スレッドにして、メインスレッドでキー入力を 待てばいいんじゃない? 全然はずしてたらご免。
823 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 12:17:01 ] モードレスダイヤログ? 全然外してるかも。
824 名前:あにす ◆sGTL1yK0.6 mailto:sage [2008/06/09(月) 18:46:26 ] DoEvents()? 外してるかな…。
825 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 05:54:09 ] >>702 for (int i=0; i<1000; i++) Hoge((a) => a + 1); のようなコードは次にように最適化されるようだ。 HogeDelegate f = null; for (int i=0; i<1000; i++) { if (f == null) { f = (a) => a + 1; } Hoge(f); }
826 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 06:30:01 ] >>825 ということは>>702 はデマってことか
827 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 07:01:43 ] デマというかもうちょい境界線が上なんだろうな。
828 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 11:32:48 ] 質問 以下のようにListのSyncRootで排他処理を行っている最中に Listの実体を入れ替えた場合、 この排他でLock開放待ちをしていたほかのスレッドはどうなるのでしょうか? lock (((ICollection)(mylist).SyncRoot)[ if(xxx){ mylist = new List(); } }
829 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 12:23:17 ] とりあえずそんなキモいことするな mylistの置き換えより先に別スレッドがmylist.SyncRoot取得してたら古い方でロック待ちするし 置き換え後にSyncRoot取得したら新しい方でロック待ちする 古い方でロック待ちに入ったらロック取得したスレッドのlockステートメント終了でロックに入る 新しい方ならロックされてないから待たないでそのままロック取得するだろう
830 名前:828 mailto:sage [2008/06/10(火) 12:45:29 ] やっぱり駄目ですよね。 コレでは排他処理の意味をなさない。 わかりました!!有難う御座います。
831 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 21:33:47 ] ListViewのTagで思い出したが、なんでシリアル化してもTagは保持されないのですか?
832 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 21:51:45 ] 何が入ってるか分からないから 保持しても意味がないものが入ってるかもしれないから
833 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 22:53:07 ] あまり納得できんが、そういうことなんだと納得しておきます。
834 名前:デフォルトの名無しさん [2008/06/10(火) 23:06:12 ] ADO.NET 2.0で、System.Data.SqlClientを使って、バッチ処理ってどうやんのが普通なの? なんかSqlCommandSetってのが昔はあったらしいけど、今は隠されてしまったみたいだし、 ていうか、 var cmd = new System.Data.SqlClient.SqlCommand(); cmd.CommandText = "begin transaction;" + "insert into t values(1,2,3);" + "insert into t values(2,3,4);" + .... "commit transaction;"; みたいにカンマで区切っただけのSQL文でも一応できたみたいなんだけど、 C#/ADO.NET2.0/SQL Serverでほかの人はどういう風にバッチ処理してるのか知りたいです。
835 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 23:19:11 ] ストアドプロシージャです。
836 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 23:21:23 ] リンクの冒険
837 名前:デフォルトの名無しさん [2008/06/10(火) 23:30:44 ] >>835 お返事ありがとうございます。 ところで、クライアント側でユーザーが複数項目を選んで、 編集して、それで更新みたいな処理の流れだと、可変引数が 使えないストアドでは対応しきれないのでわないでしょうか?
838 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 23:40:52 ] >>836 えーと……ゼルダの伝説? それはともかく、C#のバージョンが分からんが3.0ならLINQがおすすめ GUIでD&Dするだけでエンティティクラスが作れて、デフォルトでトランザクション処理 LINQ to SQLがSQL Server限定なのがあれだけど
839 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 14:58:07 ] >>837 「バッチ処理のパラメータを格納しておくテーブル」を作るという手もある。 そのテーブルにINSERTしてからバッチ用のストアドプロシージャを起動して、 ストアドの中でテーブルを読み込んで、それを元に処理を行う。 結果のサマリーも格納するようにすれば、バッチ処理の履歴も兼ねることができる。
840 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 20:40:20 ] C#中でエクセルのファイルを開こうとすると、下記のエラーが発生します。 ちなみに.NET Framework 2.0を使っています。 System.Runtime.InteropServices.COMExeption(0x80040154):CLSID{00024500-0000-0000-C000-000000000046}を含むコンポーネントのCOMクラスファクトリを取得中に、次のエラーが発生しました。:80040154 3台あるPC(XP)で1台で起こりますがその原因が分かっておりません。 作成したプロジェクトのbin\release以下には3個のCOMと関係がありそうなDLLがあります。 ・Interop.Excel.dll ・Interop.Microsoft.Office.Core.dll ・Interop.VBIDE.dll これら3個を C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe を使って登録しても結果は同じです。 どういった原因が考えられるでしょうか?
841 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 21:21:57 ] そこにはExcelがインストールされていないなんてオチじゃないよな。 「00024500-0000-0000-C000-000000000046 80040154」でググって 最初に出てきたところに書いてあった事例がまさにそうだっただけだけど。 forums.msdn.microsoft.com/en-us/netfxbcl/thread/5a338c18-b2e5-44b5-b15a-530d99a34656/
842 名前:840 mailto:sage [2008/06/11(水) 21:26:24 ] 確認させていただきたいのですが、 Excelがインストールされていない環境では、COMを通じたエクセルファイルの操作というのはやはり出来ないものでしょうか? というのは、 動作確認をした3台のうち 1台にだけExcelをインストールしていたつもりだったのですが、実際には2台にインストールされており、 上記の System.Runtime.InteropServices.COMExeption(0x80040154):CLSID{00024500-0000-0000-C000-000000000046}を含むコンポーネントのCOMクラスファクトリを取得中に、次のエラーが発生しました。:80040154 このエラーはエクセルがインストールされていないパソコンでだけ起こっていました。 レジストリのCLSIDに無理やりエクセルを登録たところエラーが変わって System.IO.FileNotFoundException: CLSID {00024500-0000-0000-C000-000000000046} を含むコンポーネントの COM クラス ファクトリを取得中に、次のエラーが発生しました: 80070002。 場所 NFSAutoGui.Tettou.product(String path) こういうことになってしまいました。 FileNotFoundExceptionってようするにExcel.exeが見つかりませんよ、ということかと思いますが。 ということで Excel.exeがインストールされていない状態では、COMを通じたエクセルファイルの操作というのはやはり出来ないものでしょうか?
843 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 21:31:00 ] >>842 そりゃ、できんわな。それができたら、みんなExcel買ってくれなくなってMSが困っちゃう。
844 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 21:36:37 ] >>841 >>843 どうも。。。 インストールしてないつもりのPCで動いたと思ってたんで動くかと思っていました。 アホ過ぎ。 ところで Excelのバージョン10が開発マシンに入っております。 COMの参照設定で、Microsoft Excel 10.0 Object Library のバージョン1.4を設定しているのですが、 これで配布した場合って、Excelのバージョン10.0が入っていないと動かないんですかね? Excel 2007しか入っていないようなPCでは動かないんですか?
845 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 21:43:55 ] >>842 だって、そのExcelファイルの操作って、 Excelが持っている機能を呼び出しているだけだ。 普段目にするUIはExcelの1つの顔にすぎない。
846 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 21:59:28 ] >>844 YES
847 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 22:01:05 ] 解放忘れとかやりまくってそうだな
848 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 22:10:55 ] こんなこと言ってる奴がまともに作れてるわけないだろ でバージョン依存したくないならせめてVB.NETにしとけ
849 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 22:15:41 ] WSHのVBSとか呼び出すのが楽だよ
850 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 22:19:02 ] >>845 そういうことですね。 >>846 了解しました。 >>847 一応タスクマネージャのプロセスタブにEXCELは居ないので大丈夫かと... ところで、 開発マシンにEXCEL10しか入っていませんが、 その他のバージョンのEXCELも扱いたい場合に必要になってくるのが PIAとかいうものなのでしょうか?
851 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 22:40:52 ] YES
852 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 22:42:04 ] あんたは質問を有料にしたいわ
853 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 23:58:05 ] DateTime型のToString()の書式設定はどんな環境の場合に変わるんでしょうか? たとえば("d")ならカルチャによって変わりますが、 カスタム書式の("yyyy/MM/dd")も環境によって変わるようです。 どんな環境で変わるんでしょうか??
854 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 00:37:13 ] >>853 質問の意味がよくわからないけど「カルチャが異なる環境で変わる」ということが聞きたいのかな。 CurrentThreadのCurrentCultureとかCurrentUICultureとかを色々変えながら動かしてみると わかりやすいかもしれない。 わかりにくいかもしれない。
855 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 00:37:53 ] カルチャによって変わるよ。 "/" はカルチャ依存の日付区切り文字だし、 この世には和暦とかヒジュラ暦とかあるだろ。
856 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 00:47:15 ] >>854-855 ありがとうございます。 "/"はカルチャ依存なのですね。 カスタム書式なら"/"も表示してくれると思っていたのですが、それすらも期待してはいけないのですね。 自分の環境では再現できない&相手の環境がよくわからないので質問しました。 では"yyyyMMdd"ならどの環境でも期待通り"20080612"になることを前提にしていいのでしょうか?