[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 12/07 23:51 / Filesize : 174 KB / Number-of Response : 788
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C#, C♯, C#相談室 Part45



1 名前:デフォルトの名無しさん [2008/01/21(月) 19:35:37 ]
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。
c++厨の嵐はスルー汁。

前スレ
C#, C♯, C#相談室 Part44
pc11.2ch.net/test/read.cgi/tech/1194956418/

その他テンプレ>>2-5くらい

697 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 23:26:25 ]
ふらっとでレスが付かなかったので、教えてください。
SQLServerからsmallint型のレコードを取得してC#でint型の変数に入れたいのですが
キャストで失敗します。smallint型はshortと同じじゃないのでしょうか?

698 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 23:32:14 ]
>>697
失敗って?

699 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 23:33:41 ]
実際shortなんだったら一旦shortにキャストしてからintにキャスト

700 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 23:42:39 ]
会社にしか環境が無いので、エラーの詳細記録してなかったのですが、
型変換できませんでした。的なエラーでした。
もちろん(short)してから(int)でいけますが、アップキャストでなぜ失敗するのか・・・が知りたいと思いました


701 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 23:46:30 ]
正確な方は SqlInt16、
short へのキャスト演算子の定義はあるけど、int へのキャストは定義されてない

とかではなかろうか。

702 名前:697 mailto:sage [2008/03/18(火) 00:02:58 ]
>>701
MSDN参照してもよく分からないのですが、おそらくそのように思えますので、
そういうものだと、納得しておきますf^^

703 名前:デフォルトの名無しさん [2008/03/18(火) 00:03:27 ]
PrintDocumentクラスのPrintメソッドで
印刷処理を作っています。

しかし、印刷を実行するとVB6やDelphiで作成した
印刷処理よりも異常に遅いのが気になりました。
描画を一切行わず、白紙を1ページ印刷した場合
VB6では一瞬で印刷を開始しますが、C#では5秒以上待たされます。

100ページ以上の印刷を行いたいので、この速度では
ちょっと使い物にならないので困っております。
速度改善の情報ありましたら教えていただけませんでしょうか。。

704 名前:デフォルトの名無しさん [2008/03/18(火) 00:19:22 ]
www.rossgals.com/fuckfacials/barbie2-489/3.mpg

705 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 00:21:39 ]
突然怪しいURLを貼るなwww



706 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 00:23:13 ]
なんじゃこりゃww量すごすぎww

707 名前:デフォルトの名無しさん mailto:sage [2008/03/18(火) 00:38:25 ]
>>703
軽く調べたけど、解決策は見つからなかった。そもそも再現性が(ry
とりあえずプロファイルして何が遅いか見極めてくれ。

708 名前:703 mailto:sage [2008/03/18(火) 00:46:13 ]
>>707
ありがとうございます。

プロファイルのやり方がわからないのですが
調べてやってみようと思います。

今、調べられる範囲でわかったことは
プリンタの解像度を下げることである程度
体感速度が速くなる、逆に解像度を上げるとさらに遅くなることです。

709 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 00:10:00 ]
ちょっとすみません。mlang.idl を midl しようとしたんですが、途中で

midl\oleaut32.dll : error MIDL2020 : error generating type library : SaveAllChanges Failed : .\mlang.tlb (0x80070005)

と出て終了します。原因わかるかたいらっしゃいますか?

710 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 00:19:45 ]
しまった UAC だー! 自己解決すみませぬ。

711 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 01:17:43 ]
すみません。続けてもうひとつ。マーシャリングの質問なのですが、

void DetectInputCodepage(
    uint dwFlag,
    uint dwPrefWinCodePage,
    ref sbyte pSrcStr, // ここと
    ref int pcSrcSize,
    ref tagDetectEncodingInfo lpEncoding, // ここに
    ref int pnScores
);

どうやって short[] と tagDetectEncodingInfo[] を突っ込んだらいいのか、だれか教えてください。

712 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 01:47:07 ]
>>711
dobon.net/vb/dotnet/string/detectcode.html

713 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 01:50:00 ]
>>712
それそのままコピペしてるんだけどね、

ref sbyts[0]

ここで引っかかる。

714 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 01:55:05 ]
ん? 通った。なぜだ。

715 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 09:14:07 ]
配列そのまま仮引数に定義するのお勧め



716 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 19:08:03 ]
ListやStackの中身をusingでdisposeさせるにはどうすればいいの?

717 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 19:14:20 ]
継承してIDisposeableを実装すればいいんじゃねえの

718 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 19:14:45 ]
ListとIDisposableを継承して、Disposeで要素を全部Disposeするクラスを作る。

719 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 20:23:08 ]
using使いたいだけならIEnumerable<T> (where T : IDisposable) をラップするクラスを作って
using (DisposableCollection<Bitmap> a = new DisposableCollection<Bitmap>(list))とか

720 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 20:53:15 ]
static void Using<T>(T collection, Action<T> action) where T : IEnumerable {
 try { action(collection); }
 finally {
  foreach (var item in collection) {
   IDisposable disposable = item as IDisposable;
   if (disposable != null) { disposable.Dispose(); } } } }
usingの代わりにこんなの使えばいいんじゃね

721 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 21:01:24 ]
どうもやってみます。

722 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 21:03:46 ]
.net 3.5(たぶん下位でも発生?)

コンソールアプリで sysem.drawing.bitmap をストリームにシリアライズするときに
GDI+の一般エラー(General error?)が発生する

同様の現象にブチあたった経験者はおらぬか?

723 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 21:20:30 ]
Bitmapはネイティブなオブジェクトがあるからシリアライズ不可能じゃないかな

724 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 21:31:09 ]
いや,これまでは出来たんだ
きっとこれからも出来ると信じたい

そしてなんとなく原因発見

BinaryFormatter bf = new BinaryFormatter();
FileStream fs = new FileStream(@"C:\WINDOWS\迴育栖繧ォ繝繝.bmp", FileMode.Open);
MemoryStream ms1 = new MemoryStream(), ms2 = new MemoryStream();
Image img = Image.FromStream(fs);
bf.Serialize(ms1, img); // 成功(例外なし)
fs.Close();
bf.Serialize(ms2, img); // 失敗(ExternalError: GDI+ で汎用エラーが発生しました。)

どうもImageの元のリソースが,シリアライズするときに利用できなくなっていると失敗するみたい?
なんか非常にモヤっとするなぁ

引き続き情報求む


725 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 21:53:52 ]
よくみる where T ってのはLINQってやつかい?



726 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 21:55:52 ]
ただのジェネリック引数の制約だよ。

727 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 22:10:38 ]
where T つかうと他クラスの継承できなくなる?方法ない?

728 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 22:13:52 ]
なにゆってんの?

729 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 22:14:30 ]
よく意味が分からんけど
where T はTに対して特定の型に依存した操作を可能にするために使うんだよ

730 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 22:20:58 ]
where Tを使ったクラスを継承したいなら
その制約を継承先のクラスにも付ける

class Base<T> where T : string{}

class Derived<T> : Base<T> where T : string{}

731 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 22:42:02 ]
まったくどうでもいいがstringで制約したらもはやジェネリックの意味なくね?

732 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 22:45:08 ]
>>724
Bitmapはそのままだとアンマネージドリソースを含むのでシリアライズできない
だがStreamから作ったBitmapならそれを使ってシリアライズすることで目的を達成できる
しかしそのStreamが閉じてればもうシリアライズできない

733 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 23:27:28 ]
>>724
var stream = new FileStream("foo.jpg", FileMode.Open);
var image = Image.FromStream(stream);
image.Save("bar1.png");
stream.Close();
image.Save("bar2.png"); // die

734 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 23:55:28 ]
>>732
すごく,わかりました.

>>733
試したためした,そしてその通り

ひとまずbyte[]にシリアル化したものを記憶しておくことにした

735 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 18:09:24 ]
クラスのメンバ関数のようなスコープがはっきりしないものをusingで解放するにはどうすればいいの?



736 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 19:21:54 ]
メンバ関数じゃなくてインスタンス変数だと仮定して
自分のクラスにIDisposableを実装する
usingはそのクラスを外から使う人が使うもの

737 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 22:29:23 ]
DictionaryBaseのGeneric版って何?


738 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 22:42:14 ]
例外は受け取ったらいけないの?

739 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 23:05:44 ]
処理できる例外は捕まえて処理する
そうでなければスルー

740 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 23:11:34 ]
受け取ってメッセージボックス出して終わるくらいなら
標準の例外ダイアログがましだけどねw

741 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 23:25:01 ]
製品にするならそうもいってられないけどな

742 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 12:08:44 ]
>>737
無い
KeyedDictionary<TKey, TValue>が使えそうなら使う
使えないなら自分で作る

743 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 12:11:35 ]
KeyedCollection<TKey, TItem>の間違い

744 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 19:25:07 ]
ListViewの詳細表示で、棒グラフを表示したくて
直接セルに描画していたんですけど、汎用性を持たせたくて
Panelに描画してそのPanelを表示したいと思ったんですが
ListViewにPanelを挿入する方法が分かりません

SubItems.Addで追加できるのは文字列だけですし
どのようにすればPanelなどのコントロールをListViewに
挿入することができるでしょうか?

745 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 19:33:28 ]
どのようにしてもできまへん。

っていうか、Panelに描画する(そしてそれをListViewに突っ込む)のが
汎用的って発想がよくわからない。

汎用的にしたいのならListViewの項目を描画する機能をクラス化するか、
またはListView自体を継承して拡張するとか、そっちの方向じゃないの?



746 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 19:37:34 ]
CodeProjectにそういうのある。
一からListView作ってた。

747 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 19:44:33 ]
C#のListViewの使えなさはガチ

Swingにも劣るヘボさだからなぁ
項目ごとの文字色を変える程度のことさえ面倒
いったいどういう用途を想定してこんなクソ仕様にしたのか

748 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 20:15:08 ]
コモンコントロールそのものだもの

749 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 20:35:18 ]
WPFのListViewは何でもありのアホみたいに柔軟なコントロールになってるよ

750 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 20:58:42 ]
>>745
やっぱり駄目ですか
でもよく見かけるプログレスバーが表示されたListViewは
どうやって実装してるんでしょう
何か出来る方法がありそうな気もしますが

>>746
一から作るのはちょっと厳しいですね・・・

751 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 21:41:09 ]
>>742
ありがとう。
自作するよ。

752 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 00:26:31 ]
>>747
>項目ごとの文字色を変える程度のことさえ面倒

簡単だと思うけど…
どうやってやってるの?


753 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 06:57:31 ]
>>750
ListViewだとしたらOwnerDrawなんじゃない。

超汎用的なリストコントロール作った。
めんどくさかった(´・ω・`)

でもこれで10万行ぐらいあっても、どんな描画だとしても表示できるようになったお。

754 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 07:23:43 ]
俺も752と同意見だったけど、MFC知らないからMFCだともっと楽なのかなあと思って何も言わなかった
ListViewItem.UseItemStyleForSubItems
ListViewItem.ForeColor
ListViewItem.SubItems[index].ForeColor

UseItemStyleForSubItems
をtrueにすると、
全てのSubItems.ForeColorを設定する必要があったような気がするから
それが面倒といえば面倒だったけど。

755 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 07:59:46 ]
C#でSafariみたいにきれいに文字を表示するのってどうしたらいいんだしょ。
アンチエイリアスかければきれいになるとですか?



756 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 08:10:04 ]
言語とは無関係だと思うけど
WPF使えば良いよ

757 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 08:13:08 ]
Formでお願いします。


758 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 08:22:42 ]
>>752
でもListViewって特定環境で色が消えたりする類のバグが満載だから
そのままでは使い物にならないと思った記憶がある。

759 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 14:35:43 ]
そもそもWPFだろうがFormだろうがクラス名だけ置換して同じコード書けば
内部で使うAPIだけひっそり入れ替わるのがクラスライブラリ設計として当然じゃないのか?
何回も作っては捨て繰り返して作った奴は馬鹿なのか?

760 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 14:48:59 ]
>>755
フォントをClearTypeが効くものに変えるとか
実際より大きく描画して縮小するとか

761 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 18:58:44 ]
>>759
日本語書けよ

762 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 19:04:10 ]
すごーく正論では

763 名前:デフォルトの名無しさん [2008/03/27(木) 19:06:23 ]
再利用可能なコードなんか幻想だろw

764 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 19:50:12 ]
インターフェースがクソだったら書き直すしかないだろ

765 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 19:52:31 ]
VB SQL
ODBC Direct
OLE DB
DAO
RDO
ADO
ADO+
WindowsDNA
MSDE
ADO.NET 1.0
ADO.NET 1.1
ADO.NET 2.0
LINQ




766 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 21:16:28 ]
>>750
リストビューの子としてプログレスバー作るとか。

767 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 23:54:29 ]
英語だと C sharp って読むの?

768 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 00:32:18 ]
yes

769 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 14:20:32 ]
>>761
てきざいてきしょ

770 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 00:20:51 ]
VS9.0インスコした人に確認してもらいたい
↓のファイルのコメントが前衛的なことになってるんだけど、どうなってる?

C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\
ProjectTemplatesCache\CSharp\Reporting\1041\ReportApplication.zip\Form1.Designer.cs

因みに、手元の環境のエディションはPro.

771 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 00:29:51 ]
見たけど特に何も思わなかったが

772 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 01:13:30 ]
特にどうということもないな

773 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 01:14:35 ]
そんなばすはないだろう。

774 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 20:28:55 ]
ローカルのハードディスクにあるファイルをUSBメモリにコピーしておのおののファイルについてGetLastWriteTimeを見ると2秒ほどずれてるんですが、なぜなんでしょう?
エクスプローラでファイルのプロパティで更新日時を見てもやはり2秒ほどずれています。おそらく同じ値を見ていると思います。
ローカルからローカルにコピーした場合は発生しません。

775 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 20:30:58 ]
NTFSとFATとかじゃね



776 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 20:33:34 ]
USBメモリで使ってるFATって更新時間の最小単位が2秒なんだったっけ?

777 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 20:37:21 ]
そう。2秒。

778 名前:774 mailto:sage [2008/03/31(月) 20:47:38 ]
ローカルはNTFS、USBはFAT32ですが、上に上がってるのでビンゴくさそうすかね・・・

779 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 11:29:09 ]
自分で OnPaint メソッドをオーバーライドしたコントロールを作ってるのですが、質問です。
OnPaint メソッドの中で線の太さを指定して引いているのですが、AutoScaleMode でサイズが変わった場合
線の太さはどういう風に決めたら良いと思いますか?
今は決め打ちで 2 にしていますが、線の太さも自動でスケーリングしたいのので
自動スケーリングの倍率を取得する AutoScaleSize みたいなプロパティってないですかね。


780 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 11:42:13 ]
>>779
自己レス。解決しました。
AutoScaleMode プロパティが変更されると、ScaleControl メソッドが呼ばれる。
ScaleControl メソッドをオーバーライドすると factor が来るので、これが倍率。

781 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 20:10:38 ]
共有メモリの話題になりますが、
MapViewOfFileで得たIntPtrをStreamにアダプトする方法はありませんか?
byte*にキャストしてよいみたいですが、そこからが分かりません。

782 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 20:22:47 ]
UnmanagedMemoryStream

783 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 21:09:24 ]
>>782
これは、これ以外にないといえるようなStreamですね。
明日さっそく試したいと思います。ありがとうございました。

784 名前:デフォルトの名無しさん [2008/04/04(金) 10:08:31 ]
質問です。

各テーブルごとにテーブルクラスを作成し、

データの受け渡し受け取りには、テーブルクラス.レコードを定義して使用しています。


各テーブルクラスの違いは、

レコードクラスの違いくらいなので、
(実際には、レコードクラスの違いにより処理内部にも違いは出ているのですが、
ロジックは同じということです。)

同じ処理を書いて、あまりステップ数を膨らませるのは嫌なのですが、

何かよい方法はないでしょうか?

785 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 10:25:03 ]
データセットデザイナを使う



786 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 22:10:30 ]
>>770
自分の所も正常に見えます

787 名前:デフォルトの名無しさん mailto:sage [2008/04/04(金) 23:30:46 ]
>>784
日本語でおk






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<174KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef