>>927 俺の親はVBといえばVentureBusinessだとか言ってた
>>951 再現せんね。Vista/.NET 2.0SP1
Value未設定の場合に起動時にMaxValueに設定されるだけだ。
あ、MaxValueじゃなくて今の日付の直近値か。
955 :
951 :2008/04/27(日) 21:33:02
>>953 ありがとうございます。
再度検証してみましたところ、下記の条件で再現しています。
条件:MinDate〜MaxDateの範囲に、今の日付が含まれないこと。
上記の範囲が今日の日付より昔の場合はMaxDateに
未来の場合はMinDateに、カレンダーを▼で表示する度に
強制的に設定されてしまいます。
957 :
951 :2008/04/28(月) 06:14:40
>>956 新規アプリで、DateTimePickerを配置(&MaxDate、MinDate設定)
しただけでも同じ現象が起こりました。
SPは
Microsoft Visual Studio 2005 Standard Edition 日本語 Service Pack 1 (KB926602)
Windows2000で開発・ビルドしています。
ちなみに、テスト環境のVistaにはVisualStdioはインストールしていません。
.NetFrameworkのバージョンは3.0でも3.5でも同じ現象が出ます。
リンク先はdelphiですが、同様の現象みたいですね…
デバッグだと20kのexeが発行すると全部で500kになっちゃうんだけど 20kのexeだけを配布しても問題ないよね?
デバッグ版配布すんなw
960 :
デフォルトの名無しさん :2008/04/29(火) 22:23:59
DbConnection conn = new OleDbConnection(string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=・・・"); DbCommand command = conn.CreateCommand(); command.CommandText = query; DbDataReader reader = command.ExecuteReader(); while (reader.Read()) { int n = reader[0]; // ココ } ↑みたいな感じで、AccessのmdbファイルにOleDbで接続して、読み込んでいるのだけど、 「ココ」のところの「reader[0]」が、全部文字列を返します。 odbc経由で、下のようなSQLを流して、数値型で作った項目もです。 CREATE TABLE hoge ( N INTEGER ) oracle + VB.NET2003で、同じような感じで読みこんだときには、とうぜん数値の項目は数値で、文字列は文字列で 帰ってきました。 mdb(Jet)だと、これで正しい動作なんでしょうか? それとも自分がどこか間違ってますか?
それはどっちかっつとDB板とかで聞いた方がいんじゃね DB関係のトラブルて大抵環境だし
>>960 普通は全部文字列=StringじゃなくObject型だっと思うが?
全てInt32型なら
int n = reader.GetInt32(0);
でおkと思うよ
もしくは
int n = (int)reader[0];
とか
スマソ。
>>960 のコードじゃ問題はなかった。(説明用に書いたコードで実際にバグの出てるコードとは違う)
reader[0] まではしっかりDBの型が保存されてて、(int)reader[0]とかやっても、問題ありませんでした。
readerの内容をDataTableに移し変えて、ロジック部分ではそれを利用してたのだけど、移し変える方法が
まずくて、全部文字列に変化してました。
実際はこういう感じのコードでした。
DataTable table = ExecReader("SELECT ・・・"); // SQLを投げると、結果をDataTableに入れて返す関数
DataRow row = table.Rows[0];
(int)row["hoge"]; // ここでキャスト失敗の例外発生
> readerの内容をDataTableに移し変えて、 なぜ素直にFillしないんだろう
rowに入れるんなら.ToString()付けるかConvart.ToIntじゃないか
誰か、より良い方法があったら教えてください。 // 何箇所も変更場所があるのは好ましくない class MyComponent1 { string myProperty = "初期文字列"; [DefaultValue("初期文字列")] public string MyProperty { get { return myProperty; } set { myProperty = value; } } public MyComponent1() { } } // リファクタリングで MyProperty を書き換えると GetProperty("MyProperty") に変更が入らない // 結局複数個所を書き換える方が見通しがいい class MyComponent2 { string myProperty; [DefaultValue("初期文字列")] // ここを書き換えたら myProperty の初期値にも反映したい public string MyProperty { get { return myProperty; } set { myProperty = value; } } public MyComponent2() { var defaultValue = typeof(MyComponent2).GetProperty("MyProperty").GetCustomAttributes(typeof(DefaultValueAttribute), false)[0]; myProperty = defaultValue.ToString(); } }
ん、ここは偽スレ?
スレを変えるなら両方で一言断っとけ
970 :
デフォルトの名無しさん :2008/05/03(土) 13:18:17
Part46の偽スレで書いてしまったので、こちらで再投稿させてください iTextSharp使ってテンプレート読込んだけれど、その後の文字描画がテンプレートの下に隠れてしまうが、 レイヤの順序を操作する方法とかあるのでしょうか? テンプレート読込み後に文字描画しても、その逆でも同じように隠れますが。
こっちは廃棄スレ
972 :
デフォルトの名無しさん :2008/05/05(月) 06:22:48
もりあがってまいりました!
次スレというか本スレ
2つ上のレスすら読めないってどんだけ〜
俺に、C#習得者向けのC++の constについて教えてくれ。 C++のconstとかconstとかconstがよくわからない。 前はDelphiやってたからか余計に混乱する。 Effective C++とかModern C++ Designeとか読んでもモヤモヤする。 同じ職場の別プロジェクトのプログラマーはクラス全部(という表現がよいのかわからんが?) constにしようと時間の無駄に気づかずやっきになっている。 C#風に言えばどうなんだ?
引数にconstついているのに、プロパティに書き込みができたり、フィールドをいじることができたりすることが、 おかしい感覚らしい。
C#でconstってほとんど出番無いよね
>>976 const 使ってる既存のライブラリを利用する際に
問題が発生することがあるんだよ。
const 使わないやつは死刑だ。
>>976 全部ってのはメンバ関数全部のことか、メンバ変数のことかどっちだ?
C++ではconstには3種類あって、 ・変数自身へのconst: 変数を変化しない/させない。定数。 ・(ポインタの)ポイント先へのconst: そのポインタからは読み込みしかしない。 ・メンバ関数に付く:そのメンバ関数からは(thisに対して)読み込みしかしない。 で 、ここでmutableの登場。実装上は書くんだけど、意味的には読み込みだけ、みたいな (典型的にはキャッシュみたいな)メンバ変数に付けるとconstメンバ関数からも書ける。
不変な値ってのには2つの意味があって、 1. 直定数(literal: 1 とか 0.5 みたいな数値)に名前が付いてるだけ。 コンパイル結果がまさに定数。 2. コンパイラが不変な値と認識してるだけのもの。 コンパイル結果は通常の変数と変わらないんだけど、 プログラマが値を変更できないもの。 の2つある。 C# の const は 1 の意味でしか使えない。 readonly が 2 の意味に近いけど、readonly はプロパティとかを書きかえれちゃうんで不完全。 C++ の const は 2 の意味でも使える。 というか、大昔には 2 の意味でしか使えなかった(1 はマクロを使って定義)。
>>982 素朴な疑問。
君のいう1と2の区別っていうのは
(a) Cではなくアセンブラレベルの話をしている場合
(b) ROMを持った環境の話をしている場合
でしか意味がない区別のように感じるけどどうなの。
>>983 1 は配列の静的なサイズ指定に使えるが
2 は使えない。
>>985 あと、まあ、Cみたいにパフォーマンスを気にする言語では、
コンパイル結果が定数になってるかどうかは結構重要。
load 命令が1個増えるだけで実行だいぶ遅くなるから。
OOP が絡むとさらに複雑で、 - メモリが不変 - (メソッド呼び出しの結果が変わらないという意味で) 外部から見て不変に見える という区別も。 後者は、例えば最初に1回だけ計算して、その値をキャッシュしとくような場合、 外から見た値としては毎度同じ値しか返さない(=不変)なんだけど、 最初のキャッシュ計算のときにメモリ操作は発生しちゃう。 C++ の mutable キーワードはそういうときのためにある。
で,複雑面倒な割に利点が少ないから捨てられた
>>988 というか、学者肌の人間が導入したけど
実務上ほとんど使わないから一般プログラマーが見向きもしなかった
って感じじゃない?
言語マニアと一般人の温度差ってのはよくある話。
メンバ関数のconstはメンバ関数のvolatileよりはだいぶ使われてる
>>989 正確には
>>982 の1の意味以外の const に意味がないことが判明したんだよ、メタメタしたプログラムを書きまくるなら、すぐに気づける
一切言語のキャスト等を一切使わず、言語の制約にも抵触せずに const 変数を書き換える大技がある、少し頭をひねってみると面白いよ。
constの意味は、自分でコードするときに、仕損じがないようにするためのお呪い以上の意味は無かったんだよ。
新しい言語では削除してしまうのが吉、ややこしくなるだけだから。
リテラル以外の意味のconstが最低限必要な箇所というのは 文字列に関する部分で、char配列やstd:stringがそう。 多くの言語では文字列は特別な型として扱うことが多い。 C#やJavaは不変クラスで対応している。 それで必要がなくなった。 不変クラス文字列は文字を編集する操作には向かないが、 広く参照を分散させることやマルチスレッドに非常になじむという特徴を持っている。
正直言って、C++勉強すれば良かった。 C#が出来たときに最先端と思って選んだけど ネイティブコードを吐くC++の方が実用性がある
仕損じがないようにするって、すげー重要なことだと思うんだがな・・・。
だからって複雑にしすぎたら仕損じの余地が増える
このくらいで複雑とか言ってたら D 2.0 は扱えないぜ・・・
あの本末転倒言語ですね
あの D 2.0 の const まわりの仕様は流石になんとかして欲しい。
::::::::::::::::::::::::::::::::::;.' . ^堰@| + ';::::::::::::::::::::::: ::::::::::::::::::::::::::::: ;.' .| | ';::::::::::::::::::::: :::::::::::::::::::::::::::;.' | | ';::::::::::::::::::: :::::::::::::::::::::: ;.' ┼ i 亅_|, -、 ';::::::::::::::::: ::::::::::::::::::::;.' 厂/ ィ ⌒ヽ. ';::::::::::::::: ::::::::::::::: ;.′ // .|rqミLノ_l | 〉 ';::::::::::::: :::::::::::::;.' ー匕 人公┘ ヒ}リ./ 厂}';:::::::::::: :::::::: ;.′ └冖ー> 、 n 火// .'::::::::::: 輝かしい1000! ::::::;.' ゜' /.に二二二 イ> ';:::::::: : ;.′ , ‐― 、:::{ ';:::::: :' 。 / .:!.:.i:|::ト、 \.ヘ. ';:::: ./ .:トLハ忙7| :l. Yヘ ';:: {j.:l:忙! くノ .:.| ∧ ⊥ '; f^Y 礼_ ゥ イ .:.:.| ::∧ | 二.二.rへ. 二.|厂〕 .:.|ーイ + o . . └ヘ \/ /卜トゝ | . . : : \_/ | .| : | :
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。