[表示 : 全て 最新50 1-99 101- 2chのread.cgiへ]
Update time : 03/08 23:54 / Filesize : 48 KB / Number-of Response : 175
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

ふらっとC♯, C#(初心者用) Part14



1 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 20:39:06 ]
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

2 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 20:44:00 ]
ごめんなさい
このスレは放置して下さい

3 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 22:16:01 ]
次スレとして使えばいいんでないの

4 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 22:24:45 ]
>>3
じゃぁ責任もってテンプレ貼らせてもらうよ

5 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 22:26:04 ]
Visual C# Express Edition (無料)ダウンロード
www.microsoft.com/japan/msdn/vstudio/express/vcsharp/

.NET Framework SDK (2.0)
msdn2.microsoft.com/ja-jp/library/ms310244.aspx

MSDN Visual C# Express Edition フォーラム
forums.microsoft.com/msdn-ja/ShowForum.aspx?ForumID=187&SiteID=7
Visual Studio ユーザーグループ
vsug.jp/

@IT Insider.NET
www.atmarkit.co.jp/fdotnet/index.html
Insider.NET 会議室 ディレクトリ
www.atmarkit.co.jp/fdotnet/index/bbs/index.html

宇宙仮面の C# プログラミング / C# Programming
ukamen.hp.infoseek.co.jp/
WisdomSoft C#入門
wisdom.sakura.ne.jp/programming/cs/index.html
WisdomSoft Microsoft .NET入門
black.sakura.ne.jp/~third/system/msnet/msnet.html
どっとねっとふぁん
dotnetfan.org/
緑のバイク 初めてのC# 〜 覚え書き 〜
homepage3.nifty.com/midori_no_bike/CS/
どぼん!の .NET Tips
dobon.net/vb/dotnet/
.NET のつぼ
park16.wakwak.com/~mimi/dotnet/top.html

6 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 22:27:11 ]
Borland C#Builder2006
www.borland.com/jp/products/csharpbuilder/index.html

Turbo C#
www.turboexplorer.com/csharp

.NET Framework 1.1 製品ドキュメント
www.microsoft.com/japan/msdn/library/ja/netstart/html/sdkstart.asp

---

MSDNライブラリ 2006年6月版
www.microsoft.com/downloads/details.aspx?FamilyID=373930cb-a3d7-4ea5-b421-dd6818dc7c41&DisplayLang=ja

MSDNをローカルで見れる。

7 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 22:27:50 ]
11 名前:デフォルトの名無しさん[sage] 投稿日:2007/01/18(木) 19:19:37
質問するときに
〜したいのですが、上手くいきません。
〜したときにエラーが出ます。

という書き方はイクナイ。
何も書いてないのと同じ☆

〜したいのですが、〜で〜が失敗します。
〜したときに〜エラーが出ます。

隠さずくわしくかきましょう

8 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 01:48:33 ]
System.Net.WebClient を非同期で動かすと、
コールバックは呼び出し元のスレッドで発生するわけなんですが、
これってどうやって実現してるんでしょうか?

相手が、Windows.Forms.Control 限定なら、
(Delegate.Target as Control).Invoke
でいけると思いますが、Forms.Control 以外でも
呼び出し元のスレッドでイベントを発生させる方法が
あれば教えてください。

9 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 07:41:46 ]
> コールバックは呼び出し元のスレッドで発生する
まじで?

10 名前:7 mailto:sage [2007/03/01(木) 08:34:17 ]
>>9
コールバックされたメソッド内で、Control.InvokeRequired=false なので
呼び出し元のスレッドで動いてると思います。



11 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 17:47:03 ]
>>10
msdn2.microsoft.com/ja-jp/library/hkasytyf(VS.80).aspx

このあたりに書いてあるはず

12 名前:8 mailto:sage [2007/03/03(土) 01:26:09 ]
>>11
ありがとうございました

13 名前:デフォルトの名無しさん [2007/03/03(土) 20:46:15 ]
キャプチャーボードからデータを取り込み,Bitmapクラスを用いてBMPデータとしたいのですが,
キャプチャボード上メモリのデータををメインメモリにコピーする方法でつまづいています.

具体的にはカレントフレームのバッファ アドレスを返す関数
byte *fdmpciGetBuffer(void)
があり(これはキャプチャーボードの仕様),
ここからMarshal.Copyを用いてコピーしようとしています・・・が,以下のようなエラーが発生します.

-------エラー
エラー 1 'System.Runtime.InteropServices.Marshal.Copy(int[], int, System.IntPtr, int)' に最も適しているオーバーロード メソッドには無効な引数がいくつか含まれています。 C:\files\vcs\LaserPointer\LaserPointer\Form1.cs 200 13 LaserPointer

エラー 2 引数 '1': 'byte*' から 'int[]' に変換できません。 C:\files\vcs\LaserPointer\LaserPointer\Form1.cs 200 26 LaserPointer
-------

-------ソース
unsafe private void CaptureBMP(){
int BMP_WIDTH=640;
int BMP_HEIGHT=480;

Bitmap bmp = new Bitmap(BMP_WIDTH, BMP_HEIGHT, PixelFormat.Format8bppIndexed);
BitmapData bmp_data = bmp.LockBits(new Rectangle(0, 0, BMP_WIDTH - 1, BMP_HEIGHT - 1), ImageLockMode.ReadWrite, PixelFormat.Format8bppIndexed);

Marshal.Copy(fdmpciGetBuffer(), 0, bmp_data.Scan0, BMP_WIDTH * BMP_HEIGHT);

bmp.UnlockBits(bmp_data);
pictureBox1.Image = bmp;
}
-------

C++でいうMemCpyみたいな奴があれば解決するのか?とも思うのですが,
やり方が分かりません.
どなたかご教授下さい.

14 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 20:58:44 ]
unmanagedからmanagedにコピーするならMarshal.Copy(IntPtr source, Byte[] destination, Int32 startIndex, Int32 length)だ

15 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 21:17:26 ]
>>13
Bitmapデータは行末に詰め物があるからStrideから計算して一行ごとにコピーしないとダメだよ

16 名前:デフォルトの名無しさん [2007/03/03(土) 21:39:27 ]
こんばんわ、お世話になります。

socketが相手から切断された場合に検地したいのですが、ReadLineの
返値から判断する事は出来るのでしょうか?。



17 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 21:39:59 ]
できません。

18 名前:デフォルトの名無しさん [2007/03/03(土) 21:49:24 ]
>>17
やはり・・色々と試しているのですがエラーもでませんよね
みなさん、どうやって検出されているのですか?

19 名前:デフォルトの名無しさん mailto:sage [2007/03/03(土) 21:52:54 ]
Connected

20 名前:デフォルトの名無しさん [2007/03/03(土) 22:03:57 ]
クライアント側で切断してもループしたままでした

TcpClient tcp = server.AcceptTcpClient();
while (tcp.Connected)
{
}



21 名前:13 [2007/03/04(日) 00:33:55 ]
>>15
一度バッファにコピーしてから〜という感じでしょうか?

>>13
Marshal.Copy(fdmpciGetBuffer(), bmp_data.Scan0, 0,BMP_WIDTH * BMP_HEIGHT);
としても
-----
エラー 2 引数 '1': 'byte*' から 'int[]' に変換できません。
エラー 3 引数 '2': 'System.IntPtr' から 'int' に変換できません。
エラー 4 引数 '3': 'int' から 'System.IntPtr' に変換できません。
-----
といった感じです.IntPtrってのがそもそも理解できてないので,手のつけようが・・・.
ttp://msdn2.microsoft.com/ja-jp/library/system.intptr(VS.80).aspx
を読んでも,「何のために」「いつ」使うべきものなのかが分かりません.

22 名前:13 mailto:sage [2007/03/04(日) 00:35:20 ]
-----
Public Declare Sub RtlMemtoArrMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, ByVal Source As Any, ByVal Length As Long)
-----
Private Sub Timer1_Timer()
Dim num As Integer
Dim i As Long, j As Long
Dim ptr As Long
Dim oldBMP1 As Long, DIBS1 As Long
Dim oldBMP2 As Long, DIBS2 As Long

Dim imgbuff As Long
Dim color As Long

num = fdmpciGetFrameNum
Call fdmpciSingleCapture
window_clear

DIBS1 = CreateDIBSection(window1.hDC, bmpinfo, 0, hMem1, 0, 0)
oldBMP1 = SelectObject(window1.hDC, DIBS1)
DIBS2 = CreateDIBSection(window2.hDC, bmpinfo, 0, hMem2, 0, 0)
oldBMP2 = SelectObject(window2.hDC, DIBS2)

23 名前:13 mailto:sage [2007/03/04(日) 00:36:50 ]
imgbuff = fdmpciGetBuffer

Call RtlMemtoArrMemory(buff(0), imgbuff, bmpinfo.bmiHeader.biSizeImage * 2)
ptr = 0
For j = (bmpinfo.bmiHeader.biHeight - 1) To 0 Step -1
For i = 0 To (bmpinfo.bmiHeader.biWidth - 1)
Call RtlMoveMemory(buffTemp1(j * bmpinfo.bmiHeader.biWidth + i), _
buff(ptr + 1), _
1)
Call RtlMoveMemory(buffTemp2(j * bmpinfo.bmiHeader.biWidth + i), _
buff(ptr + 0), _
1)
ptr = ptr + 2
Next i
Next j

'バイト配列を操作したものを再びDIBSectionに送る
Call RtlArrtoMemMemory(hMem1, buffTemp1(0), bmpinfo.bmiHeader.biSizeImage)
Call RtlArrtoMemMemory(hMem2, buffTemp2(0), bmpinfo.bmiHeader.biSizeImage)

window1.Refresh
window2.Refresh

'DIBSection削除
Call SelectObject(window1.hDC, oldBMP1)
Call DeleteObject(DIBS1)
Call SelectObject(window2.hDC, oldBMP2)
Call DeleteObject(DIBS2)
End Sub
-------ここまで

24 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 00:38:17 ]
かなり長くておじゃまかと思いましたが,製品にくっついてたVB6のサンプルソースを転載いたします.
2ch同時に入力可能なキャプチャーボードなので,各所でそのようなサンプルとなっているようです.
(タイマーイベントは33msに一回,つまり30FPSになっている)

これをC#で実装しなおすのが一応の目標なのですが・・・

25 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 01:10:55 ]
読まずにレスするけど、
byte *fdmpciGetBuffer(void)
の戻り値はbyte配列の先頭アドレスなんだろうから
インポートするときにシグネチャを

[DllImport( hoge.dll )]
IntPtr fdmpciGetBuffer();

ってすりゃいいんでないの?

26 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 01:31:52 ]
>>25
要領得ない質問者にまともなレスを返すあんたは偉いな。

27 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 13:28:11 ]
フォームのAllowDropプロパティをtrueにしてもイベントが来ない・・・。
かれこれ半日くらい迷っています・・・。
私にはもうお手上げです・・・(´;ω;`)ブワ

28 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 13:46:32 ]
>>27
その質問では答えるほうもお手上げだw

29 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 13:52:13 ]
前スレ埋まってないから
質問はこちらで。

ふらっとC♯, C#(初心者用) Part13
pc11.2ch.net/test/read.cgi/tech/1170761729/

30 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 13:54:27 ]
>>27
Part13のほうでエスパー回答しといたから。



31 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 14:00:25 ]
>>21
IntPtr アドレス
Int 整数

32 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 15:37:59 ]
>>30
ありがとうございます。
あちらのほうに返事をしておきました。

33 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 18:19:32 ]
BitBltについて教えてください
pictureBox1に画像を読み込みForm1にコピーして表示するプログラムです
以下1部省略したその部分です

class USER32 {}
class GDI32
{
public const int SRCCOPY = 0xcc0020;
[DllImport("gdi32.dll")]
public static extern bool BitBlt(IntPtr hdcDst, int xDst, int yDst, int width, int height, IntPtr hdcSrc, int xSrc, int ySrc, int rasterOp);
}

protected override void OnPaint(PaintEventArgs e)
{
pictureBox1.Image = Image.FromFile("C:/test.jpg");
Graphics grfx = e.Graphics;
Graphics g = Graphics.FromImage(pictureBox1.Image);
IntPtr dstHDC = grfx.GetHdc();
IntPtr srcHDC = g.GetHdc();

GDI32.BitBlt(dstHDC, 0, 0, 320, 240,srcHDC, 0, 0,GDI32.SRCCOPY);
grfx.ReleaseHdc(dstHDC);
g.ReleaseHdc(srcHDC);
pictureBox1.Visible = false;
}

BitBltがうまくいかず黒地だけのコピーになってしまいます
ためしにForm1からForm1へのBitBltやるとちゃんと機能していました
pictureBox1のアクセスが出来ていないようです(線などは描けます)
何か足りないのでしょうか?


34 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 18:34:32 ]
pictureBox1 じゃなくて pictureBox1.Image だろ
SelectObject で srcHDC にコピー元のビットマップを選択してやらにゃならん
……つか PictureBox 使う意味あるのか?

35 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 18:48:53 ]
>>34
アホなんだから黙ってた方がいいと思うよお前さん。
トンチンカンなこと言っちゃってw

純粋にプログラム的に言えば>>33はどこもおかしくないと思うよ。
いや、BitBltの返り値がboolなのはちょっと違うと思うけど。。

36 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 18:51:48 ]
回答する前に試しもしない奴に言われたくはないが……。

37 名前:33 mailto:sage [2007/03/04(日) 19:02:51 ]
質問用にちょっとソース変えてあります
実際はOnPaintから呼んだ先で作業しているのですが

SelectObjectを具体的にどこにどんな風に入れるといいんでしょうか

boolなのはサンプルプログラムの引用なんですが 問題でしょうか?


38 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 19:06:25 ]
boolで全く問題ないよ

39 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 19:17:43 ]
おいおいw
Console.WriteLine(sizeof(bool));

Win32のBOOLはlongのエイリアスだから、対応するマネージ型はInt32かUint32
だと思いますよw

40 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 19:19:38 ]
void で全く問題ないよ



41 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 19:27:00 ]
DllImport の場合マーシャラは既定では bool を Win32 の BOOL に変換する。
だから何も問題ない。

42 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 19:29:43 ]
今度は引数と返り値の区別がつきませんか。
困った君ですねまったくw

43 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 19:43:01 ]
春だよなあ

44 名前:33 mailto:sage [2007/03/04(日) 19:43:49 ]
pictureBox1.ImageをBitmapにしてSelectObjectするといいんでしょうか


45 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 19:49:13 ]
SelectObject 関数は調べれば分かる
画像を選択するには HBITMAP を渡す必要があるわけだが、これは Image クラスの GetHbitmap メソッドで取得できる
使用後は SelectObject で元々選択されていたのを選択しなおして、取得した HBITMAP の方は DeleteObject

46 名前:33 mailto:sage [2007/03/04(日) 20:38:40 ]
C#では
SelectObjectは現在のコンテキスト内には存在しません
エラーが出てしまいます
いつでもいいのでどなたか
pictureBox1.ImageからForm1へのBitBltでのコピー成功例を示してもらえると嬉しいのですが


47 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 21:41:00 ]
>>39
それを言うならMarshal.SizeOfの値をみなくちゃいけないんじゃないの?

msdn2.microsoft.com/ja-jp/library/t2t3725f(VS.80).aspx
には規定で4バイトにマーシャリングしてくれるみたいだけど
>>42は何をいってるの?
後学のために教えてちょ。

48 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 22:11:40 ]
>>46
BitBltなんて多用してるけど、今までなにも問題出てないけどなあ。
主に裏画面(Bitmap)と実画面の間の相互の転送だけど。

SelectObjectの話はヨタだから真に受けちゃダメよw

49 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 23:41:13 ]
是非とも該当部分のコードを晒してくれ

50 名前:33 mailto:sage [2007/03/05(月) 00:32:21 ]
実行時にフォーム白地に赤で×が描かれエラーが出るようになってしまった
コンパイラが壊れてしまったのか
それともこれは何か特有の現象?




51 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 00:51:14 ]
描画メモリに不正アクセスしたっぽい挙動だなぁ

52 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 01:12:22 ]
e.Graphics を Dispose したとかそんなんじゃね?
ま、原因は幾らでも

53 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 01:19:22 ]
いやいや、>>50みたいな現象はフォームとかPictureBoxとかに描画するときに
描画メソッドで例外が発生するとそうなる。

例えばデバッグなしでこんなコード実行すると再現できるよ。
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Point[] pts = { new Point(0, 0) };
e.Graphics.DrawLines(Pens.Black, pts);
}


54 名前:33 mailto:sage [2007/03/05(月) 02:28:20 ]
GDIはデリケートですね エラーは戻せたけど
なにかプロパティをいじらないといけないのかな


55 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 03:11:40 ]
そもそもどうしてBitBltでなければならないのかを説明しておくれ。

56 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 03:15:54 ]
e.Graphics.DrawImage() とか、this.BackgroundImage とかではだめなの?

57 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 08:12:12 ]
いや、33じゃなくてもBitBlt使いたい場面は少なくないはず。
だって該当する機能がGDI+にはないからね。
そういう問いかけはナンセンスだよ。

今日仕事終わったら33の言ってる問題が再現するか試してみようかな。

58 名前:33 mailto:sage [2007/03/05(月) 10:16:01 ]
BitBltしか知らなかったもんで

これですか
e.Graphics.DrawImage()

これはコピー元の座標指定ができないんですかね?


59 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 12:20:10 ]
できる。
Graphics.DrawImage()はやたらとオーバーロードが多いので、MSDNライブラリでよく確認して、適切なものを選んで。

なお、俺はOnPaint()で(というか、.NETコントロール全体を通して)BitBltを使うこと自体が間違ってると思うよ。

60 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 12:36:00 ]
>BitBltを使うこと自体が間違ってる
だからそんなことないって。
例えば描画サーフィスから画像をBitmapに転送することは
GDI+では実現できないんだから。



61 名前:13 mailto:sage [2007/03/05(月) 12:45:02 ]
>>14 >>15 >>25 >>26
DLLの設定を
-----
[DllImport("fdmpci.dll")]
extern static IntPtr fdmpciGetBuffer();
-----
とし,
Marshal.Copy(fdmpciGetBuffer(), bufArray, 0, BMP_WIDTH * BMP_HEIGHT * 3 * 2);
といった感じで一度bufArray(マネージド)にコピー,
bufArrayは2ch分混在してるので,これを1ch分だけ取り出しbmpArrayとした後,
Marshal.Copy(bmpArray, 0, bmp_data.Scan0, BMP_WIDTH * BMP_HEIGHT * 3);
とすることで解決いたしました.(*3はRGB分)

エスパーの皆さん,ありがとうございました.

62 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 17:11:45 ]
>>61
fdmpciGetBuffer()でとったバッファはこっちで解放しなくていい仕様なの?


63 名前:33 mailto:sage [2007/03/05(月) 20:45:10 ]
BitBltを使わないほうが良いというのは.NETの中に全て収めた方が良いということでしょうか
BitBltでは意味不明のところで例の赤×エラーが多発してお手上げ状態になります
e.Graphics.DrawImageとBitmapを使ってやってみました(速さはどうなのか分かりませんが)
ウインドウが隠れても絵が消えないこと
表画面から裏画面への逆コピーが出来ること
裏画面の座標指定が出来ること
表示画面のセーブが出来ること
これらの条件を満たせるようにしました どうでしょうか?


64 名前:33 mailto:sage [2007/03/05(月) 20:46:14 ]
int d1,x1,y1;
Bitmap _bmp = new Bitmap(300, 300); //表面
Bitmap _bmp2 = new Bitmap(@"C:/test.jpg"); //裏面
Rectangle srcRect = new Rectangle(0, 0, 300, 300);
GraphicsUnit units = GraphicsUnit.Pixel;
protected override void OnPaint(PaintEventArgs e)
{
if (d1 == 0) init();
x1 = 0;
y1 = 0;
srcRect.X = 0;
srcRect.Y = 0;
srcRect.Width = 300;
srcRect.Height = 300;
//常に表面を表示
e.Graphics.DrawImage(_bmp, x1, y1, srcRect, units);
}
private void init()
{
//ここは最初に1度だけやることを書く
//試しに裏の横50から100切り取って表へコピー
Graphics g = Graphics.FromImage(_bmp);
x1 = 0; //表X座標
y1 = 0; //表Y座標
srcRect.X = 50; //裏X座標
srcRect.Y = 0; //裏Y座標
srcRect.Width = 100; //転送X幅
srcRect.Height = 300; //転送Y幅
g.DrawImage(_bmp2, 0, 0, srcRect, units);
g.Dispose();
d1 = 1;
}

65 名前:33 mailto:sage [2007/03/05(月) 20:50:01 ]
インデント失敗^^

66 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 21:01:06 ]
どうでしょうか、って言われても
知らんがな、としか答えようがないのでは。。。

67 名前:33 mailto:sage [2007/03/05(月) 21:14:28 ]
一応画像のやり方のコツはつかみました
教えてくれた方々 どうもありがとう。

68 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 21:48:03 ]
どうでしょう、っていうか、とりあえずbase.OnPaint()を呼んでないのはよくない。

69 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 21:51:03 ]
>>64 のコードって、コンストラクタで

Init();
BackgoundImage = _bmp;

とやれば、OnPaint()を使う必要ないんじゃね。

70 名前:33 mailto:sage [2007/03/05(月) 22:06:23 ]
そうですか
もっと調べてみます




71 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 12:45:55 ]
http プロトコルで配布されているzipファイルの
日付だけを取得することはできますか?

今は、手動でダウンロードしているんですが、
更新されていたら自動でダウンロードする機能を
つけたいもので。


72 名前:13 mailto:sage [2007/03/06(火) 14:36:19 ]
>>62
サンプルソース&仕様書を読む限りでは
fdmpciSingleCapture()
でキャプチャー後,
fdmpciGetBuffer()
で得られたアドレスからデータを読み出すだけでokなようです.
(キャプチャーボードへの接続開始,終了時はそれぞれInit,Exitという処理がありますが)

73 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 14:56:58 ]
WebClient.DownloadFileAsync 内で WebException が発生しているようなのですが、

try{
 WebClient.DownloadFileAsync(...);
}catch(WebException){
 ....
}

と書いても catch できません。DownloadFileAsync 内で発生した例外を catch する
にはどう書いたらよいのでしょうか?

74 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 20:24:34 ]
>>71
HTTP の仕様、If-Modified-Since を調べなさい

75 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 21:10:54 ]
つうか HEAD でいいじゃん

76 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 22:46:59 ]
返してくれるかどうかは相手の鯖次第だけどな

77 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 22:57:39 ]
>>73
確認してないが、DownloadFileCompleted のイベント引数に入ってないか?

78 名前:73 mailto:sage [2007/03/06(火) 23:13:32 ]
>>77
ばっちりでした。
ありがとうございました。

79 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 23:20:37 ]
さっき C# 触ったばかりですが質問ください

int i = 1;
string s = (string) i ;

と、これでは整数型を文字列型にキャストできないようなのですが、
どうすればできるでしょうか

80 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 23:23:02 ]
string s = i.ToString();



81 名前:デフォルトの名無しさん mailto:sage [2007/03/06(火) 23:55:19 ]
>>80 ありがとうございます できました!

ところで、いま VC# 2005 無償版を触っていますが、
プロシージャ(?)を作った際に、 { } は自動で補完してくれないのものなのでしょうかどうでしょうか

82 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 00:04:58 ]
そんなん補完されても全く嬉しくないな

83 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 00:05:00 ]
してくれないものです

84 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 00:32:10 ]
プロシージャて呼ぶのは何やってる人だろう・・・

85 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 00:42:26 ]
>>84
元コボラーもしくはDB/SQLべったりな人とかはそういう呼び方しそう。

86 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 00:51:25 ]
VBじゃないの?

87 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 00:53:56 ]
VBだったらEnd SubなりEnd Functionが補完されるのに、ってことか。

88 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 00:55:18 ]
>>86
ん? VBでプロシージャなんて呼称でてきたっけ?

89 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 01:04:16 ]
パルカルあたりが起源の言葉だと思うけど、Cの文化でもプロシージャっていうでしょ。
WndProcのProcじゃん。

90 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 01:10:28 ]
>>89
パスカルは知らんけど、Cの用語/文化ではプロシージャってのは聞かんぞ。
そりゃWndProcみたいな一部の関数名としては聞くけど。



91 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 01:15:44 ]
>>89
あぁパスカルか。思い出した。d

92 名前:デフォルトの名無しさん [2007/03/07(水) 01:30:13 ]
CellValidatingについて教えてください
DataGridViewにて同一行に移動した場合はCellValidatingイベントを
発生させたくないのですが、まったくわかりません。

バカな質問かもしてませんが どなたかおねがいします

93 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 01:40:37 ]
RowValidating でいいんじゃね?

94 名前:デフォルトの名無しさん [2007/03/07(水) 01:53:21 ]
うわ〜〜
RowValidatingてのがあるんだ
本当にありがとうございます

もっと勉強します

95 名前:デフォルトの名無しさん [2007/03/07(水) 07:44:17 ]
XMLDataSourceを使ってGridViewにバインドしたいと考えており
以下の単純なXMLファイルを作成したところ問題なくGridViewにバインドされます。
<ファイル管理>
<ファイル ID="A" ファイル名="AAAファイル" />
<ファイル ID="B" ファイル名="BBBファイル" />
<ファイル ID="C" ファイル名="CCCファイル" />
</ファイル管理>
このXMLファイルには他の定義も必要になるため、もう1階層要素を追加しました。
<どっとねっと>
<ファイル管理>
<ファイル ID="A" ファイル名="AAAファイル" />
<ファイル ID="B" ファイル名="BBBファイル" />
<ファイル ID="C" ファイル名="CCCファイル" />
</ファイル管理>
<別の階層>
<システム ID="AAA" />
<システム ID="BBB" />
<システム ID="CCC" />
</別の階層>
今回必要なのはファイル管理以下の一覧なのでXPath式を
/どっとねっと/ファイル管理
としたところ画面には何も表示されなくなりました。
どのようにしてファイル管理以下の一覧を取得するのでしょうか?
プログラムでDataGridにバインドする前にXMLデータの加工をしてしまえば
できると思うのですが、デザイナ画面で実装イメージが確認したいので
そのようにしたくはありません。


96 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 07:56:59 ]
pc11.2ch.net/test/read.cgi/tech/1173061176/22

97 名前:デフォルトの名無しさん [2007/03/07(水) 13:04:54 ]
コンパイルした後の、最適化されたソースを見ることはできますか?
どこかのページで見たような気がするのですが。。

98 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 13:10:48 ]
コンパイルとはCILへのコンパイルのことかJITコンパイルなのか。
前者ならildasmか.NET Reflector、後者ならそのへんのデバッガで

99 名前:デフォルトの名無しさん [2007/03/07(水) 15:02:59 ]
VS2005にてビルドを行った時に、中間言語みたいなものを見ることができなかったかなぁと。
よく、解説サイトなんかで、volatileを使った時の結果を見てみましょう
みたいな感じで、volatileをつけたときとつけない時の比較を行ったりしている時に
表示しているコードみたいな。。
VS2005、アセンブリにする直前のソースを表示させる事なんかができないのかなぁと。
無ければ.net reflectorを使ってみます。
ありがとうございます。

100 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 15:09:03 ]
ILならildasmで見れるだろ



101 名前:デフォルトの名無しさん mailto:sage [2007/03/07(水) 15:32:11 ]
おぅ。なるほど〜
.net reflectorに目がいってますた
ありがとうございます。

102 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 23:53:55 ]
DropDownStyle=DropDownList な ComboBox を作りました。

このコンボボックスの状態を ApplicationSetting 保存しようと、
(ApplicationSettings).(PropertyBinding)にTextを設定しましたが、
無視されました。

DropDownList でどの項目が選択状態にあるか保存するには
(ApplicationSettings).(PropertyBinding)になにを指定すれば
よいのでしょうか?

103 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 00:39:28 ]
>>29
読んでね。

104 名前:デフォルトの名無しさん [2007/03/09(金) 18:44:43 ]
前スレ埋まったのでage

105 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 19:40:36 ]
↓同意。


1000 名前:デフォルトの名無しさん[sage] 投稿日:2007/03/09(金) 18:44:10
マ板でやれ


106 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 19:59:20 ]
お客さんはこちらへ…

コーディングトラブルの約70%はif文などでの{}省略
pc11.2ch.net/test/read.cgi/tech/1173416521/

107 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 20:03:26 ]
  __________   __   ______   _____     ___ ___    ___
 /              /  /  /   |        /   /__  __/ [][] _| |_| |__ _| |_
/_______   /__/  /_  | ____/      / /     |    _  | |_  レ'~ ̄|
          / / /__   _/ / /____      |  |___      ̄|  | / / /   /| |
         / /     /   |   /   __  /      \__|     |  |  ̄ /_  /  | |_
/ \    / /      /    |  /   |  /  /                 |_|     |__|   \/
.\  \/ /     / / /|_| / /|  | /  /
  \   /      \// /   / / \ V /            We are The Real Programmers
    \  \        / /   / /  /   \               pc11.2ch.net/prog/
     \/        /_/   /_/ ∠_/\_\


108 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 23:22:24 ]
マ板でやれというのももっともなので最後にしますが
>>前スレ997
おまえさん独善的杉。妄想力が豊かなのは結構だが、脳内ソースで人を非難するのはやめてね。

109 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 00:00:33 ]
まだ春休みなのか・・・

110 名前:デフォルトの名無しさん [2007/03/10(土) 16:42:48 ]
C#で書かれたPNGもしくはJPEGのプログレッシブ表示に対応したコントロールありませんか?
あったら教えてください。

プログレッシブ表示のアルゴリズムを知りたいのですが。



111 名前:デフォルトの名無しさん [2007/03/10(土) 16:48:11 ]
それならC#である必要ないだろ

112 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 17:31:28 ]
>>111
初心者なんで他の言語よめないんです。

113 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 17:36:34 ]
Javaで書かれたのならあるだろ
ほとんどC#と変わらない

114 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 18:28:28 ]
マ板とかム板とか!
どっちも同じプ板じゃないか!!

115 名前:デフォルトの名無しさん [2007/03/10(土) 18:49:32 ]
>>113
見つけられません

116 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 09:49:00 ]
プロジェクトを新規作成するときに、「ソリューションのディレクトリを作成」にチェックを入れなかった場合、
あとから、「ソリューションのディレクトリを作成」にチェックを入れたのと同じ状態(フォルダ構成とか、
exeファイルの出力先とか)にするにはどうしたらよいでしょうか?

117 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 11:12:26 ]
ディレクトリとソリューションファイルなどを再配置し、プロジェクト出力先を変更するだけじゃないのかな?

118 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 13:48:58 ]
Hoge.slnファイルを削除してそのプロジェクトのフォルダを任意の位置に移動して
ほかのソリューションにHoge.csprojを追加するだけ

119 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 15:05:29 ]
 Bitmap bmp = (Bitmap)Clipboard.GateDataObject().GetData(typeof(System.Drawing.Bitmap));
 dataGridView[col, row].Value = bmp;
↑こんな感じで、クリップボードから読み込んで、DataGridView 経由で
データベースに画像を登録しました。

 CellToolTipTextNeeded を使って画像のバイト数と画像のサイズ(横ドットx縦ドット)を表示したいんですが、
画像のバイト数とサイズはどうやって取得すればいいんでしょうか?

120 名前:デフォルトの名無しさん [2007/03/11(日) 15:15:45 ]
>>119
1) bmp.Width * bmp.Height * Image.GetPixelFormatSize(bmp.PixelFormat) / 8 (ビットマップ部分の情報量)
  ファイルに保存した場合の大きさが欲しければストリームにSaveして長さを見る。
2) Bitmap.Size or (Bitmap.Width, Bitmap.Height)



121 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 15:17:29 ]
何かデータベースと関係があるのか?
Bitmap 型なら Width/Height と PixelFormat/GetPixelFormatSize 使えばいいだろ。

122 名前:119 mailto:sage [2007/03/11(日) 15:44:16 ]
>>119 で書いた方法でデータベースに保存したのですが、
Bitmap bmp = dataGridView[col, row].Value as Bitmap;
としても、bmp が null になってしまいました。
そこで、Bitmap を取り出す方法はあきらめて、サイズの取得
方法を質問したわけですが、結局 Bitmap を取り出さなければ
いけないようです。

private void t_FILEDataGridView_CellToolTipTextNeeded(object sender, DataGridViewCellToolTipTextNeededEventArgs e)
{
 if (e.ColumnIndex < 0 || e.RowIndex < 0) { return; }
  DataGridViewImageCell cell = t_FILEDataGridView[e.ColumnIndex, e.RowIndex] as DataGridViewImageCell;
  if (cell != null)
  {
    Bitmap bmp = t_FILEDataGridView[e.ColumnIndex, e.RowIndex].Value as Bitmap;
    if (bmp != null)
    「






123 名前:119 mailto:sage [2007/03/11(日) 15:46:35 ]
すいません、編集中に誤って書き込んでしまいました。
コードは上記の通りなんですが、
bmp が null になってしまうんですが、なんで null に
なってしまうのでしょうか?

124 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 16:06:53 ]
データベースには Bitmap 型なんて存在しないから。
直接画像ファイルのバイトイメージが入ってるんじゃなかったっけ。

125 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 16:39:54 ]
MySQLだとblob型ってバイナリ格納用があるが
PHPでそこに入れる場合、mysql_real_escape_string()を
通さないといけないらしい
俺じゃ答えらんないから
そういうこともあるってことで参考までに

126 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 17:41:38 ]
PHPのPDOでない関数は直接文字列としてクエリを送るからescapeする必要がある。BLOBでもTEXTでも。
しかしこの場合は自動でデータバインディングされるような。

127 名前:119 mailto:sage [2007/03/11(日) 18:22:20 ]
データベースの環境書いてなかったですね。
SQL Server 2005 Express Edition で、Bitmap を保存している
フィールドは varbinary(MAX) です。

dataGridView[col, row].Value = bmp;

で保存して、grid 上は表示されているのに、

bmp = dataGridView[col, row].Value as Bitmap;

が null になってしまうのがなぜなんだろう〜って感じです。

128 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 18:32:03 ]
DataGridViewImageCell が頑張ってるからに決まってる

129 名前:119 mailto:sage [2007/03/11(日) 18:45:04 ]
自己解決したのでご報告を。

byte[] bytes = dataGridView[col, row].Value as byte[];
とした後、 bytes から MemoryStream をつくって、
Bitmap.FromStream() としたら、読めました。

レスをくれた皆様、ありがとうございました。

130 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 20:42:45 ]
>>119
”データベースに画像を保存”でググると簡単にその答えに辿り着くね



131 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 20:44:43 ]
質問いいですか?
Doucuworksみたいな文書をMDIウインドウ内に表示って出来るんですかね?
2005EE Win2000です

132 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 20:45:15 ]
>>131
Docuworksでした

133 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 21:45:38 ]
OLEサーバとして公開されてればもしかしたら可能。
まあ、(おまえには)無理

134 名前:102 mailto:sage [2007/03/11(日) 22:58:11 ]
どなたか、私にも愛の手を差し伸べてはいただけないでしょうか・・・orz

135 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 23:23:04 ]
じゃあ愛の鞭な。
普通に@itのTIPSとかにあるとおりやるだけじゃん。
っていうか、Textってなんだよw
本屋に平積みされてる超初心者向けの入門書から勉強した方がいいと思うよ。

136 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 23:27:40 ]
>>134
ComboBoxのSelectedIndexを格納する不可視のTextBoxなりなんなりを用意して
そっちでPropertyBindしたら?

まあ自前でxmlファイルに保存した方が簡単だと思うが

137 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 02:10:42 ]
>>136
TextBox使うって、どっちみちコード書くならそのまま
SelectedIndexの読込/保存を書くほうがいいんじゃねーの?


138 名前:137 mailto:sage [2007/03/12(月) 02:17:28 ]
すまん。
>>137 に言ってないで >>102 に言えよ俺。

ココ見てみ
www.atmarkit.co.jp/fdotnet/dotnettips/558appsettings/appsettings.html

139 名前:デフォルトの名無しさん [2007/03/12(月) 12:12:42 ]
現在.NET C#で開発しています。
cs側でSQL文を発行して取得したデータをaspx側で使用したいのですが、連携の仕方がわかりません。
具体的には、
----------------------------------------------------------------
*コンボボックス1,2,3使用
(1)SQL文実行(cs側)
(2)SQL文で取得したデータをjavascript(aspx側)で使用するために値引渡し
(3)コンボボックスにバインド(コンボボックス1のみ)
(4)コンボボックス1で選択した値により、コンボボックス2の内容をjavascriptで動的に変更
----------------------------------------------------------------
といったことがやりたいのです。
ちなみにコンボボックスの内容を変更する際にpostbackしたくないので、fristload時にコンボボックス1,2,3に表示する予定のデータを一度に全て取得したいと考えています。

コンボボックスの内容を動的に変更するにはデータが入った変数が必要だと考えているのですが、javascriptで宣言した変数にどうやってcs側からデータを格納すればいいのか、といったことがわかりません。

初歩的な質問で申し訳ないのですが、
ご助言お願いします。

140 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 12:18:49 ]
配列を返す、読み取り専用のプロパティを定義したとします。
読み取り専用にしても、配列の各要素は自由に書き換えできてしまいますよね。

この場合、配列の各要素の書き換えを禁じる方法はあるのでしょうか?



141 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 12:22:53 ]
コード書いて試せば一番早いことはわかってるんですが質問させてください。すいません。
継承についてですが
1、継承は基本クラスのメンバのコードを、内部的に派生クラスへコピぺする機能である。
2、自動で基本クラスのインスタンスが作られ、それを利用できる機能である。
(new一回につき基本と派生で一個ずつ、インスタンスが二つできる)
のどちらなんでしょうか?

また、
1、の場合
・privateメンバは継承されない
・protectedメンバは継承され、privateのように振舞う。

2、の場合
・privateはprivate。アクセスできるわけないじゃないか。
・protectedメンバは派生クラスからはアクセスしていいぜ。

ってことであってるんでしょうか?



142 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 12:29:49 ]
>>141
1か2かで言ったら1。new一回につきインスタンスがいくつもできたんじゃたまらん。
で、privateは基本クラスのみから、protectedは基本クラスと派生クラスの両方からアクセスできる。

143 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 12:31:02 ]
>>140
ないんじゃね?
そのプロパティで配列のコピーを返すようにすれば
書き換えはできるがもとには反映しなくなるけど



144 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 12:33:25 ]
>>140
配列帰す限りはムリだと思う。
getインデクサでも定義して要素だけ返せば?

145 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 12:33:57 ]
>>140
それか、そのプロパティを読み取り専用のインデクサにしてみることを検討

146 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 12:35:51 ]
>>140
クローンを渡せばいいじゃん。

147 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 12:44:31 ]
>>140
いっそプログラムやめちまえばいいんじゃね?

148 名前:デフォルトの名無しさん [2007/03/12(月) 13:08:15 ]
2.0ならクライアントポストバックを使う。

149 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 13:15:41 ]
>>142
すばやい返答ありがとうございます。
privateメンバは引き継がれて存在するのに派生クラスでは使えない。
基本クラスでprotectedだったメンバは、なぜか基本クラスから派生クラスのメンバへアクセスできる。
ってことですね


150 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 13:33:55 ]
うんにゃ、基底クラスから派生クラスのメンバにはアクセスできない。
なぜなら、基底クラスは派生クラスのことを何も知らないから。派生クラスは自分の基底クラスをはっきり知ってるけどね。



151 名前:デフォルトの名無しさん [2007/03/12(月) 13:46:31 ]
描画がちらつくので、既定のダブルバッファというのを試してみたんです。

SetStyle(ControlStyles.DoubleBuffer, true);
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true);

このコードを追加するか、またはDoubuleBufferedプロパティをtrueにするとあったので、
両方試したのですが、ArgumentException(使用されたパラメータが有効ではありません)
という例外エラーが出て、実行できません。

プログラム中で、Graphics g=this.CreateGraphics();というふうにしてるのがまずいのでしょうか

152 名前:デフォルトの名無しさん [2007/03/12(月) 13:52:40 ]
>>140
IList<T>を返すようにしてReadonlyなリストを返せばいい

153 名前:151 mailto:sage [2007/03/12(月) 14:51:33 ]
原因は、ペイントハンドラで描画後にg.Dispose()を呼んでいたことでした

154 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 17:59:22 ]
>>150
そういわれれば当たり前ですね、だめだ頭回ってないなー自分
ありがとうございましたー

155 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 18:57:13 ]
>>140
てっとり早くIEnumerable<T>型として返すのもあり

156 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 21:47:53 ]
>>139
逆じゃないの?
aspxでSQL引っ張るんじゃないの?

157 名前:デフォルトの名無しさん [2007/03/12(月) 23:42:06 ]
いろんな数値型に対応したいとおもい、引数および戻り値をオブジェクト型にした計算関数を作成するとした場合

(引数a,bおよび戻り値の3つのデータ型は同じデータ型であるという前提です。)
object Calc(object a, object b)
{
if(a is byte) return (byte)a + (byte)b;
if(a is int) return (int)a + (int)b;
if(a is long) return (long)a + (long)b;
(以下数値型のデータ型分続く)
・・・
・・・
}

といった感じで今は数値型(+や−の演算子が使える型)の全データ型分を書いています。
このように全データ型分書かなくても同様のことが行えるいい方法があればご教授願えませんか?

158 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 23:46:10 ]
基本的には無理
それよりobject型はまずいだろ
型ごとに個別に処理書いてるんならなんでオーバーロードしない

159 名前:デフォルトの名無しさん [2007/03/12(月) 23:48:01 ]
>>157
汚い技を使わない限り無理。
素直にオーバーロードしとけ

160 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 23:48:37 ]
演算子が入ってくるとどうしようもない
あと、面倒なのは分かるが引数の型ごとにオーバーロードにした方が良いな
それから、byte 同士の加算の結果がどうなるか把握してる?



161 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 23:55:04 ]
メソッドに属性付けといてVisualStudioのマクロ機能を使って自動生成するとか

162 名前:157 [2007/03/13(火) 00:04:46 ]
了解です。
演算子が入ると無理なんですね。
皆さんレスありがとうございました。

この関数を呼び出す前のaとbに渡されるものがすでにDLL化された関数が出力するデータでそれがobject型となっているからです。
オーバーロードというのも考えたのですが、そうなると呼び出し側で型判定し、データ型分の関数を用意することになってしまうので
簡潔に書きたかったからこのようにしました。

>>160
byte同士の加算結果はオーバーフロー発生の場合は255を返す処理にしています。
(そのほかの型でもオーバーフローが発生したらMaxValueを返すようにしています。)

163 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 00:11:22 ]
>>162
try { return (byte)a + (byte)b; }
catch (OverflowException ex) { return byte.MaxValue; }
みたいなコードだったりしないよな?
いや、分かってるなら良いんだけど。

ちなみに、上記の演算は決して例外が発生しない。

164 名前:157 [2007/03/13(火) 00:23:33 ]
はい、例外が発生しませんので、
return ((byte)a + (byte)b > byte.MaxValue ? byte.MaxValue : (byte)a + (byte)b);
と書いています。

165 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 00:42:15 ]
コンパイラオプションで例外出せたような

166 名前:デフォルトの名無しさん [2007/03/13(火) 00:47:46 ]
ユーザに対して数値しか入力をさせたくない場合に
例えばユーザが下記ユーザID入力項目にアルファベットの
Aを入力した場合に、KeyCodeが1から9の範囲に無いので
入力を破棄するにはどうすれば良いでしょうか?

ユーザID □□□□□


※入力値チェックをするのではなくそもそも最初から数字以外を入力不可に
したいです。

ご存知の方がいらしましたら教えて下さい。

167 名前:デフォルトの名無しさん [2007/03/13(火) 00:54:12 ]
textBox.KeyPress += delegate(object sender, KeyPressEventArgs e)
{
 if ((e.KeyChar < '1' || e.KeyChar > '9') && e.KeyChar != (char)Keys.Back)
  e.Handled = true;
}

168 名前:166 [2007/03/13(火) 01:13:49 ]
>>167さん
ありがとうございます!!

169 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 01:38:01 ]
コピペされるとマズい気が。

170 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 09:46:34 ]
textbox numeric でググるくらいのことはしろよ。



171 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 10:44:47 ]
>>166
GetWindowLong/SetWindowLongとES_NUMBERで実現できます。
ちなみにXPで実行するとバルーンチップも出てきます。

>>88 亀ですが
VBではSubやFunctionやPropertyの正式な呼び名はプロシージャです。これは
Quick BASICの頃からそうです。
ただほとんどの人はサブルーチンとか関数とか呼んでる気がします。


172 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 11:14:30 ]
MaskedTextBox使わんの?
2002/2003?

173 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 12:02:43 ]
ワイルドカードを含んだパス(たとえば"C:\hoge\*.txt"とか)に該当するファイルを列挙する方法はあるんでしょうか。

174 名前:デフォルトの名無しさん [2007/03/13(火) 12:19:49 ]
System.IO.Directory.GetFiles






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

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

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