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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
2デフォルトの名無しさん:2007/02/28(水) 20:44:00
ごめんなさい
このスレは放置して下さい
3デフォルトの名無しさん:2007/02/28(水) 22:16:01
次スレとして使えばいいんでないの
4デフォルトの名無しさん:2007/02/28(水) 22:24:45
>>3
じゃぁ責任もってテンプレ貼らせてもらうよ
5デフォルトの名無しさん:2007/02/28(水) 22:26:04
Visual C# Express Edition (無料)ダウンロード
http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/

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

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

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

宇宙仮面の C# プログラミング / C# Programming
http://ukamen.hp.infoseek.co.jp/
WisdomSoft C#入門
http://wisdom.sakura.ne.jp/programming/cs/index.html
WisdomSoft Microsoft .NET入門
http://black.sakura.ne.jp/~third/system/msnet/msnet.html
どっとねっとふぁん
http://dotnetfan.org/
緑のバイク 初めてのC# 〜 覚え書き 〜
http://homepage3.nifty.com/midori_no_bike/CS/
どぼん!の .NET Tips
http://dobon.net/vb/dotnet/
.NET のつぼ
http://park16.wakwak.com/~mimi/dotnet/top.html
6デフォルトの名無しさん:2007/02/28(水) 22:27:11
7デフォルトの名無しさん:2007/02/28(水) 22:27:50
11 名前:デフォルトの名無しさん[sage] 投稿日:2007/01/18(木) 19:19:37
質問するときに
〜したいのですが、上手くいきません。
〜したときにエラーが出ます。

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

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

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

相手が、Windows.Forms.Control 限定なら、
(Delegate.Target as Control).Invoke
でいけると思いますが、Forms.Control 以外でも
呼び出し元のスレッドでイベントを発生させる方法が
あれば教えてください。
9デフォルトの名無しさん:2007/03/01(木) 07:41:46
> コールバックは呼び出し元のスレッドで発生する
まじで?
107:2007/03/01(木) 08:34:17
>>9
コールバックされたメソッド内で、Control.InvokeRequired=false なので
呼び出し元のスレッドで動いてると思います。
11デフォルトの名無しさん:2007/03/01(木) 17:47:03
>>10
http://msdn2.microsoft.com/ja-jp/library/hkasytyf(VS.80).aspx

このあたりに書いてあるはず
128: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デフォルトの名無しさん:2007/03/03(土) 20:58:44
unmanagedからmanagedにコピーするならMarshal.Copy(IntPtr source, Byte[] destination, Int32 startIndex, Int32 length)だ
15デフォルトの名無しさん:2007/03/03(土) 21:17:26
>>13
Bitmapデータは行末に詰め物があるからStrideから計算して一行ごとにコピーしないとダメだよ
16デフォルトの名無しさん:2007/03/03(土) 21:39:27
こんばんわ、お世話になります。

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

17デフォルトの名無しさん:2007/03/03(土) 21:39:59
できません。
18デフォルトの名無しさん:2007/03/03(土) 21:49:24
>>17
やはり・・色々と試しているのですがエラーもでませんよね
みなさん、どうやって検出されているのですか?
19デフォルトの名無しさん:2007/03/03(土) 21:52:54
Connected
20デフォルトの名無しさん:2007/03/03(土) 22:03:57
クライアント側で切断してもループしたままでした

TcpClient tcp = server.AcceptTcpClient();
while (tcp.Connected)
{
}
2113: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
を読んでも,「何のために」「いつ」使うべきものなのかが分かりません.
2213: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)
2313: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デフォルトの名無しさん:2007/03/04(日) 00:38:17
かなり長くておじゃまかと思いましたが,製品にくっついてたVB6のサンプルソースを転載いたします.
2ch同時に入力可能なキャプチャーボードなので,各所でそのようなサンプルとなっているようです.
(タイマーイベントは33msに一回,つまり30FPSになっている)

これをC#で実装しなおすのが一応の目標なのですが・・・
25デフォルトの名無しさん:2007/03/04(日) 01:10:55
読まずにレスするけど、
byte *fdmpciGetBuffer(void)
の戻り値はbyte配列の先頭アドレスなんだろうから
インポートするときにシグネチャを

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

ってすりゃいいんでないの?
26デフォルトの名無しさん:2007/03/04(日) 01:31:52
>>25
要領得ない質問者にまともなレスを返すあんたは偉いな。
27デフォルトの名無しさん:2007/03/04(日) 13:28:11
フォームのAllowDropプロパティをtrueにしてもイベントが来ない・・・。
かれこれ半日くらい迷っています・・・。
私にはもうお手上げです・・・(´;ω;`)ブワ
28デフォルトの名無しさん:2007/03/04(日) 13:46:32
>>27
その質問では答えるほうもお手上げだw
29デフォルトの名無しさん:2007/03/04(日) 13:52:13
前スレ埋まってないから
質問はこちらで。

ふらっとC♯, C#(初心者用) Part13
http://pc11.2ch.net/test/read.cgi/tech/1170761729/
30デフォルトの名無しさん:2007/03/04(日) 13:54:27
>>27
Part13のほうでエスパー回答しといたから。
31デフォルトの名無しさん:2007/03/04(日) 14:00:25
>>21
IntPtr アドレス
Int 整数
32デフォルトの名無しさん:2007/03/04(日) 15:37:59
>>30
ありがとうございます。
あちらのほうに返事をしておきました。
33デフォルトの名無しさん: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デフォルトの名無しさん:2007/03/04(日) 18:34:32
pictureBox1 じゃなくて pictureBox1.Image だろ
SelectObject で srcHDC にコピー元のビットマップを選択してやらにゃならん
……つか PictureBox 使う意味あるのか?
35デフォルトの名無しさん:2007/03/04(日) 18:48:53
>>34
アホなんだから黙ってた方がいいと思うよお前さん。
トンチンカンなこと言っちゃってw

純粋にプログラム的に言えば>>33はどこもおかしくないと思うよ。
いや、BitBltの返り値がboolなのはちょっと違うと思うけど。。
36デフォルトの名無しさん:2007/03/04(日) 18:51:48
回答する前に試しもしない奴に言われたくはないが……。
3733:2007/03/04(日) 19:02:51
質問用にちょっとソース変えてあります
実際はOnPaintから呼んだ先で作業しているのですが

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

boolなのはサンプルプログラムの引用なんですが 問題でしょうか?
38デフォルトの名無しさん:2007/03/04(日) 19:06:25
boolで全く問題ないよ
39デフォルトの名無しさん:2007/03/04(日) 19:17:43
おいおいw
Console.WriteLine(sizeof(bool));

Win32のBOOLはlongのエイリアスだから、対応するマネージ型はInt32かUint32
だと思いますよw
40デフォルトの名無しさん:2007/03/04(日) 19:19:38
void で全く問題ないよ
41デフォルトの名無しさん:2007/03/04(日) 19:27:00
DllImport の場合マーシャラは既定では bool を Win32 の BOOL に変換する。
だから何も問題ない。
42デフォルトの名無しさん:2007/03/04(日) 19:29:43
今度は引数と返り値の区別がつきませんか。
困った君ですねまったくw
43デフォルトの名無しさん:2007/03/04(日) 19:43:01
春だよなあ
4433:2007/03/04(日) 19:43:49
pictureBox1.ImageをBitmapにしてSelectObjectするといいんでしょうか
45デフォルトの名無しさん:2007/03/04(日) 19:49:13
SelectObject 関数は調べれば分かる
画像を選択するには HBITMAP を渡す必要があるわけだが、これは Image クラスの GetHbitmap メソッドで取得できる
使用後は SelectObject で元々選択されていたのを選択しなおして、取得した HBITMAP の方は DeleteObject
4633:2007/03/04(日) 20:38:40
C#では
SelectObjectは現在のコンテキスト内には存在しません
エラーが出てしまいます
いつでもいいのでどなたか
pictureBox1.ImageからForm1へのBitBltでのコピー成功例を示してもらえると嬉しいのですが
47デフォルトの名無しさん:2007/03/04(日) 21:41:00
>>39
それを言うならMarshal.SizeOfの値をみなくちゃいけないんじゃないの?

http://msdn2.microsoft.com/ja-jp/library/t2t3725f(VS.80).aspx
には規定で4バイトにマーシャリングしてくれるみたいだけど
>>42は何をいってるの?
後学のために教えてちょ。
48デフォルトの名無しさん:2007/03/04(日) 22:11:40
>>46
BitBltなんて多用してるけど、今までなにも問題出てないけどなあ。
主に裏画面(Bitmap)と実画面の間の相互の転送だけど。

SelectObjectの話はヨタだから真に受けちゃダメよw
49デフォルトの名無しさん:2007/03/04(日) 23:41:13
是非とも該当部分のコードを晒してくれ
5033:2007/03/05(月) 00:32:21
実行時にフォーム白地に赤で×が描かれエラーが出るようになってしまった
コンパイラが壊れてしまったのか
それともこれは何か特有の現象?
51デフォルトの名無しさん:2007/03/05(月) 00:51:14
描画メモリに不正アクセスしたっぽい挙動だなぁ
52デフォルトの名無しさん:2007/03/05(月) 01:12:22
e.Graphics を Dispose したとかそんなんじゃね?
ま、原因は幾らでも
53デフォルトの名無しさん: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);
}
5433:2007/03/05(月) 02:28:20
GDIはデリケートですね エラーは戻せたけど
なにかプロパティをいじらないといけないのかな
55デフォルトの名無しさん:2007/03/05(月) 03:11:40
そもそもどうしてBitBltでなければならないのかを説明しておくれ。
56デフォルトの名無しさん:2007/03/05(月) 03:15:54
e.Graphics.DrawImage() とか、this.BackgroundImage とかではだめなの?
57デフォルトの名無しさん:2007/03/05(月) 08:12:12
いや、33じゃなくてもBitBlt使いたい場面は少なくないはず。
だって該当する機能がGDI+にはないからね。
そういう問いかけはナンセンスだよ。

今日仕事終わったら33の言ってる問題が再現するか試してみようかな。
5833:2007/03/05(月) 10:16:01
BitBltしか知らなかったもんで

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

これはコピー元の座標指定ができないんですかね?
59デフォルトの名無しさん:2007/03/05(月) 12:20:10
できる。
Graphics.DrawImage()はやたらとオーバーロードが多いので、MSDNライブラリでよく確認して、適切なものを選んで。

なお、俺はOnPaint()で(というか、.NETコントロール全体を通して)BitBltを使うこと自体が間違ってると思うよ。
60デフォルトの名無しさん:2007/03/05(月) 12:36:00
>BitBltを使うこと自体が間違ってる
だからそんなことないって。
例えば描画サーフィスから画像をBitmapに転送することは
GDI+では実現できないんだから。
6113: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デフォルトの名無しさん:2007/03/05(月) 17:11:45
>>61
fdmpciGetBuffer()でとったバッファはこっちで解放しなくていい仕様なの?
6333:2007/03/05(月) 20:45:10
BitBltを使わないほうが良いというのは.NETの中に全て収めた方が良いということでしょうか
BitBltでは意味不明のところで例の赤×エラーが多発してお手上げ状態になります
e.Graphics.DrawImageとBitmapを使ってやってみました(速さはどうなのか分かりませんが)
ウインドウが隠れても絵が消えないこと
表画面から裏画面への逆コピーが出来ること
裏画面の座標指定が出来ること
表示画面のセーブが出来ること
これらの条件を満たせるようにしました どうでしょうか?
6433: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;
}
6533:2007/03/05(月) 20:50:01
インデント失敗^^
66デフォルトの名無しさん:2007/03/05(月) 21:01:06
どうでしょうか、って言われても
知らんがな、としか答えようがないのでは。。。
6733:2007/03/05(月) 21:14:28
一応画像のやり方のコツはつかみました
教えてくれた方々 どうもありがとう。
68デフォルトの名無しさん:2007/03/05(月) 21:48:03
どうでしょう、っていうか、とりあえずbase.OnPaint()を呼んでないのはよくない。
69デフォルトの名無しさん:2007/03/05(月) 21:51:03
>>64 のコードって、コンストラクタで

Init();
BackgoundImage = _bmp;

とやれば、OnPaint()を使う必要ないんじゃね。
7033:2007/03/05(月) 22:06:23
そうですか
もっと調べてみます
71デフォルトの名無しさん:2007/03/06(火) 12:45:55
http プロトコルで配布されているzipファイルの
日付だけを取得することはできますか?

今は、手動でダウンロードしているんですが、
更新されていたら自動でダウンロードする機能を
つけたいもので。
7213:2007/03/06(火) 14:36:19
>>62
サンプルソース&仕様書を読む限りでは
fdmpciSingleCapture()
でキャプチャー後,
fdmpciGetBuffer()
で得られたアドレスからデータを読み出すだけでokなようです.
(キャプチャーボードへの接続開始,終了時はそれぞれInit,Exitという処理がありますが)
73デフォルトの名無しさん:2007/03/06(火) 14:56:58
WebClient.DownloadFileAsync 内で WebException が発生しているようなのですが、

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

と書いても catch できません。DownloadFileAsync 内で発生した例外を catch する
にはどう書いたらよいのでしょうか?
74デフォルトの名無しさん:2007/03/06(火) 20:24:34
>>71
HTTP の仕様、If-Modified-Since を調べなさい
75デフォルトの名無しさん:2007/03/06(火) 21:10:54
つうか HEAD でいいじゃん
76デフォルトの名無しさん:2007/03/06(火) 22:46:59
返してくれるかどうかは相手の鯖次第だけどな
77デフォルトの名無しさん:2007/03/06(火) 22:57:39
>>73
確認してないが、DownloadFileCompleted のイベント引数に入ってないか?
7873:2007/03/06(火) 23:13:32
>>77
ばっちりでした。
ありがとうございました。
79デフォルトの名無しさん:2007/03/06(火) 23:20:37
さっき C# 触ったばかりですが質問ください

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

と、これでは整数型を文字列型にキャストできないようなのですが、
どうすればできるでしょうか
80デフォルトの名無しさん:2007/03/06(火) 23:23:02
string s = i.ToString();
81デフォルトの名無しさん:2007/03/06(火) 23:55:19
>>80 ありがとうございます できました!

ところで、いま VC# 2005 無償版を触っていますが、
プロシージャ(?)を作った際に、 { } は自動で補完してくれないのものなのでしょうかどうでしょうか
82デフォルトの名無しさん:2007/03/07(水) 00:04:58
そんなん補完されても全く嬉しくないな
83デフォルトの名無しさん:2007/03/07(水) 00:05:00
してくれないものです
84デフォルトの名無しさん:2007/03/07(水) 00:32:10
プロシージャて呼ぶのは何やってる人だろう・・・
85デフォルトの名無しさん:2007/03/07(水) 00:42:26
>>84
元コボラーもしくはDB/SQLべったりな人とかはそういう呼び方しそう。
86デフォルトの名無しさん:2007/03/07(水) 00:51:25
VBじゃないの?
87デフォルトの名無しさん:2007/03/07(水) 00:53:56
VBだったらEnd SubなりEnd Functionが補完されるのに、ってことか。
88デフォルトの名無しさん:2007/03/07(水) 00:55:18
>>86
ん? VBでプロシージャなんて呼称でてきたっけ?
89デフォルトの名無しさん:2007/03/07(水) 01:04:16
パルカルあたりが起源の言葉だと思うけど、Cの文化でもプロシージャっていうでしょ。
WndProcのProcじゃん。
90デフォルトの名無しさん:2007/03/07(水) 01:10:28
>>89
パスカルは知らんけど、Cの用語/文化ではプロシージャってのは聞かんぞ。
そりゃWndProcみたいな一部の関数名としては聞くけど。
91デフォルトの名無しさん:2007/03/07(水) 01:15:44
>>89
あぁパスカルか。思い出した。d
92デフォルトの名無しさん:2007/03/07(水) 01:30:13
CellValidatingについて教えてください
DataGridViewにて同一行に移動した場合はCellValidatingイベントを
発生させたくないのですが、まったくわかりません。

バカな質問かもしてませんが どなたかおねがいします
93デフォルトの名無しさん: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デフォルトの名無しさん:2007/03/07(水) 07:56:59
97デフォルトの名無しさん:2007/03/07(水) 13:04:54
コンパイルした後の、最適化されたソースを見ることはできますか?
どこかのページで見たような気がするのですが。。
98デフォルトの名無しさん: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デフォルトの名無しさん:2007/03/07(水) 15:09:03
ILならildasmで見れるだろ
101デフォルトの名無しさん:2007/03/07(水) 15:32:11
おぅ。なるほど〜
.net reflectorに目がいってますた
ありがとうございます。
102デフォルトの名無しさん:2007/03/08(木) 23:53:55
DropDownStyle=DropDownList な ComboBox を作りました。

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

DropDownList でどの項目が選択状態にあるか保存するには
(ApplicationSettings).(PropertyBinding)になにを指定すれば
よいのでしょうか?
103デフォルトの名無しさん:2007/03/09(金) 00:39:28
>>29
読んでね。
104デフォルトの名無しさん:2007/03/09(金) 18:44:43
前スレ埋まったのでage
105デフォルトの名無しさん:2007/03/09(金) 19:40:36
↓同意。


1000 名前:デフォルトの名無しさん[sage] 投稿日:2007/03/09(金) 18:44:10
マ板でやれ
106デフォルトの名無しさん:2007/03/09(金) 19:59:20
お客さんはこちらへ…

コーディングトラブルの約70%はif文などでの{}省略
http://pc11.2ch.net/test/read.cgi/tech/1173416521/
107デフォルトの名無しさん:2007/03/09(金) 20:03:26
  __________   __   ______   _____     ___ ___    ___
 /              /  /  /   |        /   /__  __/ [][] _| |_| |__ _| |_
/_______   /__/  /_  | ____/      / /     |    _  | |_  レ'~ ̄|
          / / /__   _/ / /____      |  |___      ̄|  | / / /   /| |
         / /     /   |   /   __  /      \__|     |  |  ̄ /_  /  | |_
/ \    / /      /    |  /   |  /  /                 |_|     |__|   \/
.\  \/ /     / / /|_| / /|  | /  /
  \   /      \// /   / / \ V /            We are The Real Programmers
    \  \        / /   / /  /   \               http://pc11.2ch.net/prog/
     \/        /_/   /_/ ∠_/\_\
108デフォルトの名無しさん:2007/03/09(金) 23:22:24
マ板でやれというのももっともなので最後にしますが
>>前スレ997
おまえさん独善的杉。妄想力が豊かなのは結構だが、脳内ソースで人を非難するのはやめてね。
109デフォルトの名無しさん: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デフォルトの名無しさん:2007/03/10(土) 17:31:28
>>111
初心者なんで他の言語よめないんです。
113デフォルトの名無しさん:2007/03/10(土) 17:36:34
Javaで書かれたのならあるだろ
ほとんどC#と変わらない
114デフォルトの名無しさん:2007/03/10(土) 18:28:28
マ板とかム板とか!
どっちも同じプ板じゃないか!!
115デフォルトの名無しさん:2007/03/10(土) 18:49:32
>>113
見つけられません
116デフォルトの名無しさん:2007/03/11(日) 09:49:00
プロジェクトを新規作成するときに、「ソリューションのディレクトリを作成」にチェックを入れなかった場合、
あとから、「ソリューションのディレクトリを作成」にチェックを入れたのと同じ状態(フォルダ構成とか、
exeファイルの出力先とか)にするにはどうしたらよいでしょうか?
117デフォルトの名無しさん:2007/03/11(日) 11:12:26
ディレクトリとソリューションファイルなどを再配置し、プロジェクト出力先を変更するだけじゃないのかな?
118デフォルトの名無しさん:2007/03/11(日) 13:48:58
Hoge.slnファイルを削除してそのプロジェクトのフォルダを任意の位置に移動して
ほかのソリューションにHoge.csprojを追加するだけ
119デフォルトの名無しさん: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デフォルトの名無しさん:2007/03/11(日) 15:17:29
何かデータベースと関係があるのか?
Bitmap 型なら Width/Height と PixelFormat/GetPixelFormatSize 使えばいいだろ。
122119: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)
    「




123119:2007/03/11(日) 15:46:35
すいません、編集中に誤って書き込んでしまいました。
コードは上記の通りなんですが、
bmp が null になってしまうんですが、なんで null に
なってしまうのでしょうか?
124デフォルトの名無しさん:2007/03/11(日) 16:06:53
データベースには Bitmap 型なんて存在しないから。
直接画像ファイルのバイトイメージが入ってるんじゃなかったっけ。
125デフォルトの名無しさん:2007/03/11(日) 16:39:54
MySQLだとblob型ってバイナリ格納用があるが
PHPでそこに入れる場合、mysql_real_escape_string()を
通さないといけないらしい
俺じゃ答えらんないから
そういうこともあるってことで参考までに
126デフォルトの名無しさん:2007/03/11(日) 17:41:38
PHPのPDOでない関数は直接文字列としてクエリを送るからescapeする必要がある。BLOBでもTEXTでも。
しかしこの場合は自動でデータバインディングされるような。
127119: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デフォルトの名無しさん:2007/03/11(日) 18:32:03
DataGridViewImageCell が頑張ってるからに決まってる
129119:2007/03/11(日) 18:45:04
自己解決したのでご報告を。

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

レスをくれた皆様、ありがとうございました。
130デフォルトの名無しさん:2007/03/11(日) 20:42:45
>>119
”データベースに画像を保存”でググると簡単にその答えに辿り着くね
131デフォルトの名無しさん:2007/03/11(日) 20:44:43
質問いいですか?
Doucuworksみたいな文書をMDIウインドウ内に表示って出来るんですかね?
2005EE Win2000です
132デフォルトの名無しさん:2007/03/11(日) 20:45:15
>>131
Docuworksでした
133デフォルトの名無しさん:2007/03/11(日) 21:45:38
OLEサーバとして公開されてればもしかしたら可能。
まあ、(おまえには)無理
134102:2007/03/11(日) 22:58:11
どなたか、私にも愛の手を差し伸べてはいただけないでしょうか・・・orz
135デフォルトの名無しさん:2007/03/11(日) 23:23:04
じゃあ愛の鞭な。
普通に@itのTIPSとかにあるとおりやるだけじゃん。
っていうか、Textってなんだよw
本屋に平積みされてる超初心者向けの入門書から勉強した方がいいと思うよ。
136デフォルトの名無しさん:2007/03/11(日) 23:27:40
>>134
ComboBoxのSelectedIndexを格納する不可視のTextBoxなりなんなりを用意して
そっちでPropertyBindしたら?

まあ自前でxmlファイルに保存した方が簡単だと思うが
137デフォルトの名無しさん:2007/03/12(月) 02:10:42
>>136
TextBox使うって、どっちみちコード書くならそのまま
SelectedIndexの読込/保存を書くほうがいいんじゃねーの?
138137:2007/03/12(月) 02:17:28
すまん。
>>137 に言ってないで >>102 に言えよ俺。

ココ見てみ
http://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デフォルトの名無しさん:2007/03/12(月) 12:18:49
配列を返す、読み取り専用のプロパティを定義したとします。
読み取り専用にしても、配列の各要素は自由に書き換えできてしまいますよね。

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

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

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

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

142デフォルトの名無しさん:2007/03/12(月) 12:29:49
>>141
1か2かで言ったら1。new一回につきインスタンスがいくつもできたんじゃたまらん。
で、privateは基本クラスのみから、protectedは基本クラスと派生クラスの両方からアクセスできる。
143デフォルトの名無しさん:2007/03/12(月) 12:31:02
>>140
ないんじゃね?
そのプロパティで配列のコピーを返すようにすれば
書き換えはできるがもとには反映しなくなるけど

144デフォルトの名無しさん:2007/03/12(月) 12:33:25
>>140
配列帰す限りはムリだと思う。
getインデクサでも定義して要素だけ返せば?
145デフォルトの名無しさん:2007/03/12(月) 12:33:57
>>140
それか、そのプロパティを読み取り専用のインデクサにしてみることを検討
146デフォルトの名無しさん:2007/03/12(月) 12:35:51
>>140
クローンを渡せばいいじゃん。
147デフォルトの名無しさん:2007/03/12(月) 12:44:31
>>140
いっそプログラムやめちまえばいいんじゃね?
148デフォルトの名無しさん:2007/03/12(月) 13:08:15
2.0ならクライアントポストバックを使う。
149デフォルトの名無しさん:2007/03/12(月) 13:15:41
>>142
すばやい返答ありがとうございます。
privateメンバは引き継がれて存在するのに派生クラスでは使えない。
基本クラスでprotectedだったメンバは、なぜか基本クラスから派生クラスのメンバへアクセスできる。
ってことですね
150デフォルトの名無しさん: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なリストを返せばいい
153151:2007/03/12(月) 14:51:33
原因は、ペイントハンドラで描画後にg.Dispose()を呼んでいたことでした
154デフォルトの名無しさん:2007/03/12(月) 17:59:22
>>150
そういわれれば当たり前ですね、だめだ頭回ってないなー自分
ありがとうございましたー
155デフォルトの名無しさん:2007/03/12(月) 18:57:13
>>140
てっとり早くIEnumerable<T>型として返すのもあり
156デフォルトの名無しさん: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デフォルトの名無しさん:2007/03/12(月) 23:46:10
基本的には無理
それよりobject型はまずいだろ
型ごとに個別に処理書いてるんならなんでオーバーロードしない
159デフォルトの名無しさん:2007/03/12(月) 23:48:01
>>157
汚い技を使わない限り無理。
素直にオーバーロードしとけ
160デフォルトの名無しさん:2007/03/12(月) 23:48:37
演算子が入ってくるとどうしようもない
あと、面倒なのは分かるが引数の型ごとにオーバーロードにした方が良いな
それから、byte 同士の加算の結果がどうなるか把握してる?
161デフォルトの名無しさん:2007/03/12(月) 23:55:04
メソッドに属性付けといてVisualStudioのマクロ機能を使って自動生成するとか
162157:2007/03/13(火) 00:04:46
了解です。
演算子が入ると無理なんですね。
皆さんレスありがとうございました。

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

>>160
byte同士の加算結果はオーバーフロー発生の場合は255を返す処理にしています。
(そのほかの型でもオーバーフローが発生したらMaxValueを返すようにしています。)
163デフォルトの名無しさん:2007/03/13(火) 00:11:22
>>162
try { return (byte)a + (byte)b; }
catch (OverflowException ex) { return byte.MaxValue; }
みたいなコードだったりしないよな?
いや、分かってるなら良いんだけど。

ちなみに、上記の演算は決して例外が発生しない。
164157:2007/03/13(火) 00:23:33
はい、例外が発生しませんので、
return ((byte)a + (byte)b > byte.MaxValue ? byte.MaxValue : (byte)a + (byte)b);
と書いています。
165デフォルトの名無しさん: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;
}
168166:2007/03/13(火) 01:13:49
>>167さん
ありがとうございます!!
169デフォルトの名無しさん:2007/03/13(火) 01:38:01
コピペされるとマズい気が。
170デフォルトの名無しさん:2007/03/13(火) 09:46:34
textbox numeric でググるくらいのことはしろよ。
171デフォルトの名無しさん:2007/03/13(火) 10:44:47
>>166
GetWindowLong/SetWindowLongとES_NUMBERで実現できます。
ちなみにXPで実行するとバルーンチップも出てきます。

>>88 亀ですが
VBではSubやFunctionやPropertyの正式な呼び名はプロシージャです。これは
Quick BASICの頃からそうです。
ただほとんどの人はサブルーチンとか関数とか呼んでる気がします。
172デフォルトの名無しさん:2007/03/13(火) 11:14:30
MaskedTextBox使わんの?
2002/2003?
173デフォルトの名無しさん:2007/03/13(火) 12:02:43
ワイルドカードを含んだパス(たとえば"C:\hoge\*.txt"とか)に該当するファイルを列挙する方法はあるんでしょうか。
174デフォルトの名無しさん:2007/03/13(火) 12:19:49
System.IO.Directory.GetFiles
175デフォルトの名無しさん:2007/03/13(火) 16:27:53
グラフィックの塗りつぶしをしたいのですがVC++のように
FloodFillを使う方法はないでしょうか
176デフォルトの名無しさん:2007/03/13(火) 16:37:51
177デフォルトの名無しさん:2007/03/13(火) 16:39:12
上下に分割した SplitContainer で、
Panel1 を Hide() し、
Panel2 を ( Panel1 + Panel2 ) の大きさに最大化したいのですが、
どのようにするとよいでしょうか?
178デフォルトの名無しさん:2007/03/13(火) 16:42:58
Panel1Collapsed = truel
179177:2007/03/13(火) 16:45:10
>>178
まさにこれです!!
どうもありがとうございました。
180デフォルトの名無しさん:2007/03/13(火) 16:57:53
>>176
どうもです 直接はできないんですね
やってみます
181デフォルトの名無しさん:2007/03/13(火) 17:36:39
私は現在「プログラムを作ろう!パソコン教科書 Microsoft Visual C# 2005 Express Edition 入門」を使って勉強しています。
そこに載っているコードをゲームとして遊べる段階まで打ち込み、実行してみたのですが、

private void DrawImageOnBackGround(Image drawimage, int x, int y)
{
Bitmap canvasbitmap = new Bitmap(this.backgroundPicture.Image);
Graphics.FromImage(canvasbitmap).DrawImage(drawimage, x - this.backgroundPicture.Left, y - this.backgroundPicture.Top);
this.backgroundPicture.Image = canvasbitmap;
}

private void DrawImageOnBackGround(PictureBox drawpicture)
{
DrawImageOnBackGround(drawpicture.Image, drawpicture.Left, drawpicture.Top);
}

以上のコードの2つ目のメソッドの中身の部分で「NullReferenceExceptionはハンドルされませんでした。」「オブジェクト参照がオブジェクト インスタンスに設定されていません。」というエラーが出ます。

どのようにすれば解決できるのでしょうか。
182デフォルトの名無しさん:2007/03/13(火) 18:03:03
Graphicsを解放してないDQNコードだな
this.backgroundPicture.Imageの古い方も宙ぶらりんだし

とりあえずパラメータのnullチェック
PictureBox.Imageがnullなんじゃねーの?
183デフォルトの名無しさん:2007/03/13(火) 19:55:53
まあusing使っちゃうと,ちょっと込み入った
言語仕様の解説が必要になるから仕方ないのかな
それとも著者がDQNなのか
184デフォルトの名無しさん:2007/03/13(火) 20:33:32
181が「著者」のコードかどうか分からないでしょw
さすがにそこまで無知な人が本を書くとは思えないけど
185デフォルトの名無しさん:2007/03/13(火) 20:34:05
質問です。
WebBrowser上でマウスの戻る・進むボタンを押した時のイベントを受け取るにはどうするとよいですか?
186デフォルトの名無しさん:2007/03/13(火) 20:40:22
>>181
>NullReferenceExceptionはハンドルされませんでした
エラー見た限りでは、
DrawImageOnBackGround(PictureBox drawpicture) メソッド呼び出しの時にdrawpictureの参照先がないってことじゃないかな?
187デフォルトの名無しさん:2007/03/13(火) 21:50:50
>>185
俺も知らないけどググルと出てくるんじゃないの?

c# マウス 5ボタン
188デフォルトの名無しさん:2007/03/13(火) 21:52:03
質問です
メソッドAは派生クラスでオーバーライドされています。
その派生クラスのインスタンスに対して,
派生クラスではなく基底クラスで定義されたAを呼び出すにはどうしたらいいですか?
189デフォルトの名無しさん:2007/03/13(火) 21:55:37
無理
190187:2007/03/13(火) 22:01:57
>>185
VBの見つけた。
イベント形式じゃないし、内容もあってるか不明。

ttp://homepage1.nifty.com/yasunari/VB/VB2005/WebBrowserWM_APPCOMMAND.htm
191デフォルトの名無しさん:2007/03/13(火) 22:09:13
>>182,>>186
ありがとうございます。
DrawImageOnBackGroundの呼び出し元で使っている配列の要素を指定するのにconstで宣言した定数を使っていたのですが、直接数字で指定してみるとうまくいきました。
ただ、日経のサイトにあったサンプルのコードでは定数を使っています。
いったい何が原因だったのでしょうか。
192デフォルトの名無しさん:2007/03/13(火) 22:09:40
>>188
リフレクション
193デフォルトの名無しさん:2007/03/13(火) 23:03:33
>>191
さらしてない部分のコードのことを言われてもコメントしようがないな。
194デフォルトの名無しさん:2007/03/13(火) 23:04:49
>>192
リフレクションでできたっけ?無理じゃない?
195デフォルトの名無しさん:2007/03/13(火) 23:51:27
日経はやってんのか?
196デフォルトの名無しさん:2007/03/14(水) 10:17:26
>>194
なんで?
197185:2007/03/14(水) 10:44:11
調べてみたのですが

ttp://homepage1.nifty.com/yasunari/VB/VB2005/WebBrowserMouseClickEvent.htm

これで何とか対応できそうです。
>>187さん、お手数かけました。
198デフォルトの名無しさん:2007/03/14(水) 10:58:21
c#のgdi+でのビットマップ画像って要するに、
元のビットマップ画像がどんな形式であろうとも、(256色とかでも)
c#のコード側からは、全部等しく、ツルーカラーになるんですよね?
199デフォルトの名無しさん:2007/03/14(水) 12:28:31
いいえ。
200デフォルトの名無しさん:2007/03/14(水) 12:46:51
>>198
もしかしてお前が聞きたいのは、
「Bitmap.FromFile() は常に32bppのビットマップを返すのか」
じゃないのか?
201デフォルトの名無しさん:2007/03/14(水) 13:34:24
>>198
もしかしてお前が聞きたいのは、
「そのビットマップに対する描画の結果は32bppのビットマップと同じなのか」
じゃないのか?
202デフォルトの名無しさん:2007/03/14(水) 14:17:31
Windows.Form上で使うControlクラスを継承して新しいコントロールを作成し、
そのBaseクラスのプロパティすべてを、一回の属性設定だけでプロパティウインドウに
表示されなくすることは可能でしょうか。

目的はアプリケーションに関係のない項目はプロパティウインドウに表示させず、
関係のあるごく少わずかの項目だけを表示させたいからですが、このためには
一つ一つのプロパティを継承作成して全部そこにAttribuetes設定しないといけないでしょうか?
できれば、既存の項目は全部まとめて表示させないようにしてから、自分で追加した
プロパティだけを表示させるようにしたいのですが、こうしたことは可能でしょうか?
203デフォルトの名無しさん:2007/03/14(水) 16:40:15
マルチ(・A・)イクナイ
204デフォルトの名無しさん:2007/03/14(水) 16:42:22
マルチ指摘厨ウザス
205デフォルトの名無しさん:2007/03/14(水) 16:44:09
>>204は掃除のオバサンとかゴミ拾いしてる人にもウザいとかいうタイプだな。
206デフォルトの名無しさん:2007/03/14(水) 16:48:03
>>205
いいえ。言いませんよ?
207デフォルトの名無しさん:2007/03/14(水) 17:56:37
えーと、やれやれって感じですが、以下の2点について
ご回答願います。

Windows.Form上で使うControlクラスを継承して新しいコントロールを作成し、
そのBaseクラスのプロパティすべてを、一回の属性設定だけでプロパティウインドウに
表示されなくすることは可能でしょうか。

目的はアプリケーションに関係のない項目はプロパティウインドウに表示させず、
関係のあるごく少わずかの項目だけを表示させたいからですが、このためには
一つ一つのプロパティを継承作成して全部そこにAttribuetes設定しないといけないでしょうか?
できれば、既存の項目は全部まとめて表示させないようにしてから、自分で追加した
プロパティだけを表示させるようにしたいのですが、こうしたことは可能でしょうか?
208デフォルトの名無しさん:2007/03/14(水) 17:58:16
>>203,205
逆ギレして暴れるな
209デフォルトの名無しさん:2007/03/14(水) 18:13:17
マルチ(・A・)イクナイ
210202:2007/03/14(水) 18:16:57
>>207
私は>>202で質問した者ですが、VB.NETのほうでも聞かせていただきました、
結果としてマルチになってすみませんでした、できれば少しでも早くわかればと
思い質問してしていました。これができれば便利と思いました。

すみませんがよろしくお願い致します。
211デフォルトの名無しさん:2007/03/14(水) 18:37:42
>>210
そんなアホな機能があるとは思えないけどね俺には。。
少なくとも俺が.NETや各言語のコンパイラの作者ならそういう機能を実装しようとは
まず思わないな。
212デフォルトの名無しさん:2007/03/14(水) 19:04:51
>>210
ICustomTypeDescriptor を実装するというのが一般的なようです。
(.Net 2.0 以降ではTypeDescriptionProviderAttributeでも可)
213デフォルトの名無しさん:2007/03/14(水) 20:07:39
>>212
おお、そういうものがあったのですか、ありがとうございました!
すぐに教えてくださったその機能について調べてみます。
どうもありがとうございました!!
214デフォルトの名無しさん:2007/03/14(水) 22:57:42
モーダルダイアログにおいて、生成元フォームのフィールド値を参照したいのですが
215デフォルトの名無しさん:2007/03/14(水) 23:20:48
VBだとよくそういう質問があるんだが、とうとうC#でも現れ始めたか。
216デフォルトの名無しさん:2007/03/14(水) 23:22:40
ダイアログのコンストラクタに引数として渡す。
217デフォルトの名無しさん:2007/03/14(水) 23:27:57
>結果としてマルチ
どんなんだよw
218デフォルトの名無しさん:2007/03/14(水) 23:31:16
C++だと親Windowのポインタを取得して参照したけど。
そんな、面倒なことすることないからShowDialog()の前にメンバ変数に設定するのが一番
219デフォルトの名無しさん:2007/03/14(水) 23:33:15
あーなんてバカなことで悩んでたんだ
確かにコンストラクタで渡せばいいだけじゃないか
ShowDialogメソッドのせいでコンストラクタのこと忘れてたわ
220デフォルトの名無しさん:2007/03/14(水) 23:40:43
ほんとは
生成元―プロパティ→ダイアログ
生成元←イベント―ダイアログ
に限定するべきなんだろうけどな
221デフォルトの名無しさん:2007/03/15(木) 01:07:38
ボタンおして処理まわってる間に、
他のボタンをおしたりするにはどうすればいいですか?
222デフォルトの名無しさん:2007/03/15(木) 01:11:50
スレッドつかっとけ。
223デフォルトの名無しさん:2007/03/15(木) 01:42:05
初心者スレなのでもう少し丁寧に行こうぜ。GUI 周りはスレッド面倒だし。

>>221
2005 使ってるなら、その回す処理を BackgroundWorker にやらせればいい。
224デフォルトの名無しさん:2007/03/15(木) 07:39:40
すいません。
自分198ですが、下らん事を質問してたみたいですね。
忘れてください。
225デフォルトの名無しさん:2007/03/15(木) 10:16:28
System.Net.WebRequestを使って、非同期通信を行ってるんですが
ちょっと巨大なデータをPOSTしてるんで、途中経過をプログレスバーに出したいのです。
そこで現在転送してるデータのサイズを取得したいんですが、そういうプロパティはありませんか?
MSDN見た限り見つからなかったんですが・・・
226デフォルトの名無しさん:2007/03/15(木) 10:20:16
>>225
System.Net.WebClient じゃダメなの?
こいつなら、POSTの進捗をイベントで通知してくれるけど。
227デフォルトの名無しさん:2007/03/15(木) 11:12:17
>>226
なるほど、WebClientですか
ただ、今回は.NET 1.1で動かす事を想定しているので、WebRequestを使わざるを得ないのです。
228188:2007/03/15(木) 13:47:38
リフレクションを使ってやってみました。
MethodInfo method = typeof(BaseClass).GetMethod("A", new Type[0]);
のように基底クラスのAのMethodInfoを取得して,
method.Invoke(obj, null);//objは派生クラスのオブジェクト
このように呼び出しても派生クラスのAが呼び出されてしまいました。
そこで,DynamicMethodを作成してILGeneratorを使って
il.Emit(OpCodes.Call, method);
でなんとか基底クラスのAを呼び出すことができました。
変なことはやめろということですね。
229デフォルトの名無しさん:2007/03/15(木) 14:36:23
>>228
そんなことしなくても、
((BaseClass)instance).Method()
でいけない?
230デフォルトの名無しさん:2007/03/15(木) 14:46:57
>>229
仮想関数がオーバーライドされてんだよ
231デフォルトの名無しさん:2007/03/15(木) 15:37:59
Callvirtで呼び出されるから無理だわな
232デフォルトの名無しさん:2007/03/15(木) 17:42:55
済みません
BitmapにFromStreamで読み込むときに画像のdpiを
保持しながら読み込めないでしょうか?(全部96dpiになります)
何とか後からはSetResolutionで設定するのを見つけたのですが..
元の値がわからないと再設定のしようがなく
宜しくお願いいたします


233デフォルトの名無しさん:2007/03/15(木) 18:26:26
保持されてるような気がするが・・・

jpegを読んでDrawImageUnscaledで描くようなアプリで、
ピクセル数は一緒なのに描画される絵の大きさが違ってたことがあったから。
常にかどうかはわからないけど。
234デフォルトの名無しさん:2007/03/15(木) 18:41:21
何でだろ..........
Photoshopで300dpiにして保存したやつを読み込んで
VerticalResolutionで調べると96dpiに...orz
SetResolution(300.0f,300.0f)をしてやるとちゃんと300に戻るのですが
(そのファイルをPhotoshopで再度開くと
ちゃんと300で保存されています
また読み込んだBitmapを保存してPhotoshopで開くと96dpiに....)

Bitmapで先にdpiの属性を設定する所があるのかな....
Image.Flagsって言うのが有るみたいなのですが、
取得のみのようですし

235デフォルトの名無しさん:2007/03/15(木) 20:33:11
>>225

//POST送信するデータの長さを指定
req.ContentLength = postDataBytes.Length;

//データをPOST送信するためのStreamを取得
System.IO.Stream reqStream = req.GetRequestStream();
//送信するデータを書き込む
for(int i=0;i<req.ContentLength;i++){
reqStream.Write(postDataBytes[i], 0, 1);
}
reqStream.Close();

これじゃだめ?w
236質問です。:2007/03/15(木) 21:06:24
textBox.KeyPress += delegate(object sender, KeyPressEventArgs e)
{
 if ((e.KeyChar < '0' || e.KeyChar > '9') && e.KeyChar != (char)Keys.Back)
  e.Handled = true;
}

・・・・>@

上記コードにてWindowsForm上での入力制限を掛ける事は分かったのですが
例えばそれをDataGridViewにて行うにはどうすればよいでしょうか?

現在、DataGridViewにて***_EndEditイベントにて入力値のチェックを
掛けているのですがそもそも、数値カラム(社員番号)には数値しか
入力をさせたくありません。どうすれば良いでしょうか?

※***Enter・***BeginEdit等色々なイベントにて試して
みたのですがDataGridViewにはKey入力イベントが存在しないの
で困っています。
237デフォルトの名無しさん:2007/03/16(金) 04:10:59
class Aとclass Bがあって
AにBのメソッドをdelegateで登録
Aはスレッド起動して、登録されたメソッドを実行

この場合、実行されたメソッドはどちらのスレッドで動くのでしょうか?
238デフォルトの名無しさん:2007/03/16(金) 04:30:38
Aが起動したスレッド
239デフォルトの名無しさん:2007/03/16(金) 09:35:59
質問です。
よく
Class test = new Class();
で、クラスの作成に何らかの理由で失敗した時に、戻り値がnullになってるのを利用して
if(!test)
//エラー処理
ってやってますけど、こういう処理をするクラスを作りたいのですが
コンストラクタ内で、ある条件で生成するクラスをnullにしたい場合、どうすればいいのでしょうか?
this=null;
ってやると、コンパイラすら通りませんし
240デフォルトの名無しさん:2007/03/16(金) 09:44:59
そんなことするな
ていうかできないんじゃない?

初期化に成功したかどうかを何らかのプロパティで知ることができればそれでいいんじゃね?
場合によってはClassを派生させたNullClassを作っておいて、そもそもifを不要にするとか
241デフォルトの名無しさん:2007/03/16(金) 09:45:16
>>239
C#以外の言語についての質問は、それぞれのスレでおながいします。
242デフォルトの名無しさん:2007/03/16(金) 09:46:53
>>239
「条件によって生成に失敗する」ようなクラスを作りたいなら、
コンストラクタ内で例外を throw するようにし、try で処理する。
243デフォルトの名無しさん:2007/03/16(金) 09:55:41
オブジェクトをXmlファイルにシリアライズすることが可能で、そのときにパブリックフィールド
の名前を別名で保存することが可能なようでした。
http://dobon.net/vb/dotnet/file/xmlserializer.html

これと似た感じで、属性の設定によってプロパティグリッドにプロパティの別名で表示する
ことは可能でしょうか、目的はやはり変数名ではなく意味のすぐわかる表示にするためでした。
Description欄で説明表示することももちろんできますが、そのものですぐわかるものにしたい
場合の方法となります。よろしくお願いします。

244デフォルトの名無しさん:2007/03/16(金) 10:11:04
>>243
DisplayNameAttribute
245デフォルトの名無しさん:2007/03/16(金) 10:19:40
>>239
>で、クラスの作成に何らかの理由で失敗した時に、戻り値がnullになってるのを利用して 
そうなってたのはVC++6までだったと思うぞ。いまのVC++2005ではstd::bad_alloc exceptionがかえる。
いわんやC#をや。
246デフォルトの名無しさん:2007/03/16(金) 10:29:25
>>244
この属性もあったのですね、ありがとうございました。
助かりました。
247デフォルトの名無しさん:2007/03/16(金) 13:48:46
>>236
だれだこんな変態コード教えたのは。



ああ>>167か。
248デフォルトの名無しさん:2007/03/16(金) 17:32:36
>>247
http://msdn2.microsoft.com/ja-jp/library/ms229644(VS.80).aspx
マイクロソフト様のサンプルもそんなに変わらん
249デフォルトの名無しさん:2007/03/16(金) 19:27:48
>>247
プロダクト系コントロールも似たようなコードだろう。
250デフォルトの名無しさん:2007/03/16(金) 19:59:09
Visual C# Express Editionのことについて質問です。
http://www.uploda.org/uporg733880.jpg
↑の様にフォントが酷いのですが、何か解決策はありますでしょうか?
フォントの設定をいじっても上手く行きませんでした。
251デフォルトの名無しさん:2007/03/16(金) 20:00:42
Vista か……
252デフォルトの名無しさん:2007/03/16(金) 20:07:14
>>250
デバッグ中に稀になることがあるな・・・
VisualStudio開きなおしても直らない?
253デフォルトの名無しさん:2007/03/16(金) 20:09:00
>>252
はい。
と言うかインストール直後からこの状態です。
あとスキンでVista風にしているのであって
OSはWinXPです。
254デフォルトの名無しさん:2007/03/16(金) 20:13:09
>>248
無名デリゲートを直結してることを言ってるのジャマイカ
255デフォルトの名無しさん:2007/03/16(金) 20:16:50
>>254
それは普通にやることだと思うけど
256デフォルトの名無しさん:2007/03/16(金) 20:23:34
普通にはやらんだろ
それに初心者スレだし
257デフォルトの名無しさん:2007/03/16(金) 20:34:00
コードから作ったオブジェクトに対してはよく使うけどな
デザイナで張り付けたオブジェクトには普通使わないだろうな
258デフォルトの名無しさん:2007/03/16(金) 20:43:15
lispとかJavaScript使いはガンガンやるでしょ。
259デフォルトの名無しさん:2007/03/16(金) 22:29:48
質問です。
あるプログラムの多重起動を禁止していて、多重起動したときには
すでに起動している方にコマンドライン引数を渡そうとしています。
そのときにProcess.GetProcessesByNameでプロセスを取得し、該当する
プロセスのMainWindowTitleプロパティやMainWindowHandleプロパティから
ウインドウのタイトルやハンドルを取得しようとしたのですが、タイトルが
空になっていたり、ハンドルがメインウインドウの物と違っていたりして正確に
送ることができません。
この場合、どのようにしたら正確な値が取得できるのでしょうか?
260デフォルトの名無しさん:2007/03/16(金) 22:46:37
> ハンドルがメインウインドウの物と違っていたり
ってのが良く分からんが。
ちゃんとやろうとするなら
・新規プロセスが PostMessage で自分のハンドルをブロードキャスト
・既存プロセスが受け取ってそのハンドルに自分のハンドルを SendMessage
・新規プロセスは受け取ったハンドルに対して WM_COPYDATA
とか。
リモーティングでやるとか TCP で任意のポート使って通信するとか名前つきパイプ使うとか
共有メモリに書き込んで名前付きイベントで通知とか今更 DDE に手を出してみるとか
261デフォルトの名無しさん:2007/03/16(金) 22:57:08
>>260
ハンドルがメインウインドウと違うというのは、Process.GetProcessesByNameで
取得したプロセスのMainWindowHandleの値と、すでに起動している側の
ハンドルの値が…
ここまで書いてて気づいたのですが、どうやらProcess.GetProcessesByName
で取得した配列にはすでに起動しているものと、自分自身が含まれているみたいで、
自分自身にSendMessageしていたみたいです。
そりゃ届くわけねーよ orz


ちょっと小一時間吊ってきます
262デフォルトの名無しさん:2007/03/16(金) 23:25:26
thisの指すオブジェクトを変更するような方法はないのでしょうか?
263デフォルトの名無しさん:2007/03/16(金) 23:26:11
教えてください!
現在.NET C#で開発しています。
cs側からRegisterStartupScriptを使って
aspx側にjavascriptを埋め込んでいるのですが、
onload時に処理を走らせようとしても、通ってくれません。
onloadが実行される前にcs側のjavascriptがaspxに埋め込まれる方法はありませんか?

[.aspx]

<body onload="initList()">

</body>
</html>


<.cs>
RegisterStartupScriptを使って以下をaspx側に埋め込む
function initList()
{
  〜
}

よろしくお願いします!
264デフォルトの名無しさん:2007/03/16(金) 23:29:13
>>262
意味が分からない
265デフォルトの名無しさん:2007/03/17(土) 00:50:25
class ClassA
{
public ClassA(){
ClassB b= new ClassB();
this = b;
}
};
class ClassB
{
};

みたいな事をしたいんです。
266デフォルトの名無しさん:2007/03/17(土) 00:53:26
実行時にオブジェクトの型を変えたいのか?
267デフォルトの名無しさん:2007/03/17(土) 00:56:09
条件によって、クラスの型を変更したいんです。
268デフォルトの名無しさん:2007/03/17(土) 01:03:58
利点は?
269デフォルトの名無しさん:2007/03/17(土) 01:06:34
無理。おそらく設計間違ってるだろ。
270デフォルトの名無しさん:2007/03/17(土) 01:10:59
意味わからないし。
釣りとしか思えないんだけど、なんか本気っぽいところが怖いw
271デフォルトの名無しさん:2007/03/17(土) 01:12:25
て言うかさー、そのコードが書けるとして、利用者が
ClassA = new ClassA();
ってした瞬間に下手したら InvalidCastException が投げられるじゃん
272デフォルトの名無しさん:2007/03/17(土) 01:12:48
ただの莫迦かC++厨だろ
273265:2007/03/17(土) 01:15:57
なんだ
C♯って何にも出来ないんだな。

本当に初心者向けの自称安全なコードだなwww
274デフォルトの名無しさん:2007/03/17(土) 01:18:35
そうだね
275デフォルトの名無しさん:2007/03/17(土) 01:21:59
AとBに適当なインターフェース実装すりゃいいんじゃね
276デフォルトの名無しさん:2007/03/17(土) 01:23:14
そだねー
277デフォルトの名無しさん:2007/03/17(土) 01:27:26
処理別に代理実行ならdelegate使えよ
もしくはクラス内に2つのインターフェースを作っとけよ
クラスそのものを切り替える理由がわからん。

C++厨の言う事だ『そんなメモリの無駄遣いは出来ない。』とかだろうかw
278デフォルトの名無しさん:2007/03/17(土) 01:28:52
そういうときのために継承とインターフェースがあるとしか言えない
っていうかただの釣りか
279デフォルトの名無しさん:2007/03/17(土) 01:40:50
C++とか、そんなレベルの話しじゃねーぞ
280デフォルトの名無しさん:2007/03/17(土) 01:53:11
いいからもう相手にするな
281デフォルトの名無しさん:2007/03/17(土) 05:00:45
C++がなんでもプログラマに実装を許すからスパゲッティコードができた歴史を反省して
C#でプログラマが実装できるコードを限定的にしたことが理解できてないC++厨

それだけのことだ相手にするな
282デフォルトの名無しさん:2007/03/17(土) 05:06:58
それぞれ違う方を向いてて上も下もないと思うがね。
283デフォルトの名無しさん:2007/03/17(土) 05:22:50
C♯なんてVBやPerlやPHPと同じ女子供の使う言語だろ。
一丁前にプログラマ名乗るなやw
284デフォルトの名無しさん:2007/03/17(土) 05:33:00
>>283
違うよ。全然違うよ。
285デフォルトの名無しさん:2007/03/17(土) 05:51:13
C♯(笑)
286デフォルトの名無しさん:2007/03/17(土) 07:10:14
プログラム言語が道具だと理解できてないバカが湧いてますね。
アプリを使う人が使い易ければC++・C#・VB・Javaなんてユーザには関係ないのに。
287デフォルトの名無しさん:2007/03/17(土) 08:31:57
またJava厨か
288285:2007/03/17(土) 08:35:56
普通にプログラム言語は複数習得するのあたりまえじゃないか?
C++・C#・Java習得してるけどC#は使いやすさでは一番かな。
delegate使えばThreadPoolと関数ポインタ使わないで便利だから。
289デフォルトの名無しさん:2007/03/17(土) 08:41:05
>>286
出来上がったものは、.NETフレームワーク入れなきゃいけないし
メモリガバっと馬鹿みたいに確保されるし、起動するまで遅いし
どこが使う人にメリットあんの?

とか言うと、『他の言語で酷い組み方をするくらいならC♯に任せた方がマシ』とか言うんだろうけど
そんな酷いコードかけませんよ(笑
290デフォルトの名無しさん:2007/03/17(土) 08:45:55
そうだね
291デフォルトの名無しさん:2007/03/17(土) 08:54:53
>>289
.NETフレームワークのメモリ確保についてはGCを使う上では仕方がないと思う。
起動が遅いのは機械語に変換するまで時間がかかるからだけど、
一度起動すればページアウトしない限り早くなる。

どうしても機械語に変換されたネイティブプログラムを作成したいならC++が
現在では一番なのは事実だが、将来C#がネイティブ対応したら複雑怪奇な
言語仕様のC++がすたれると思う。
292デフォルトの名無しさん:2007/03/17(土) 09:18:56
>>286
CやC++でも結局標準でないDLLがなかったり、
VB製ソフト一個でも使うなら結局入れる羽目になるんだから
最近はRuntime如き大して差がねーよと思ってきた。

Vistaじゃ.Net3.0のRuntime標準搭載だしな。
そもそもメモリガバっと確保されて困った!みたいなことを経験したことがないんだよね。
Firefoxに比べれば他ソフトのメモリ確保なんてちょろいちょろい(ぇ
293デフォルトの名無しさん:2007/03/17(土) 09:24:09
C#を理解してない人が叩いてるからしょうがないな。
スパゲッティになるから推奨してないけどポインタ使えるし、アンマネージコードのコール・SVCも可能。
きちんと勉強してから湧いてね坊やたち。
294292:2007/03/17(土) 09:32:07
スマン、アンカ間違えた
>>286じゃなくて>>289
295デフォルトの名無しさん:2007/03/17(土) 10:01:19
おまいら釣られすぎ
そんなに腹減ってたのか
296デフォルトの名無しさん:2007/03/17(土) 10:03:47
>>293
それ、使えた所で、メモリ確保やランタイム必須や起動の遅さはかわらんだろ。
使うだけ無駄
297デフォルトの名無しさん:2007/03/17(土) 10:04:46
>>292
.NET 1.1なら良いんだけどな。
VS2005で開発してると、.NET2になってて、リリースすると案外ランタイムはいって無い人が多い。
298デフォルトの名無しさん:2007/03/17(土) 10:17:50
最近はポインタ乱用型の難読ソースもスパゲッティって言うのか。
299デフォルトの名無しさん:2007/03/17(土) 10:21:58
継承関係が錯綜した難読ソースもスパゲッティって言うらしいぞ。ベーマガは遠くなりにけり、だな。
300デフォルトの名無しさん:2007/03/17(土) 10:27:34
まあ読みづらいソースは滅べってのは(ほぼ)全てのプログラマの共通意識だろ
301デフォルトの名無しさん:2007/03/17(土) 12:57:57
ちょっと気になったんだけど,C#でクラスのオブジェクトのprivateメンバの値を
外部から直接変更することって可能なの?
もちろんそんなことやるつもりはないけど,構造体ならポインタをキャストすれば
可能みたいだから,クラスではどうなのかなと思った。
302デフォルトの名無しさん:2007/03/17(土) 13:07:25
>>301


 れ
    く
         しょ     ん
303デフォルトの名無しさん:2007/03/17(土) 13:23:11
>>291
将来C#がネイティブ対応する可能性てある?
304デフォルトの名無しさん:2007/03/17(土) 13:32:34
>>303
以前中の人がネイティブコード吐けるようになるかもって言ってた気がする
305デフォルトの名無しさん:2007/03/17(土) 13:43:12
今更それは無いだろうな
外の人が勝手に作るかもしれないが
306デフォルトの名無しさん:2007/03/17(土) 14:00:32
そもそも.Net Framework はなんでNativeで構成しなかったんだ。x64睨んでたから?
307デフォルトの名無しさん:2007/03/17(土) 14:07:03
>>305
そうかな?それ言ってたのまだ一年前のことだよ
>>306
それもあるけど
・実行環境に特化した最適化ができてパフォーマンスが上がる
・実行時にコードの安全性を検証できる
・リフレクション
などなど
308デフォルトの名無しさん:2007/03/17(土) 15:17:00
using System.Windows.Forms;
using System.Drawing;

class @繧√>繧?
{
static void Main()
{
Application.Run(new 縺オ縺峨?シ繧());
}
}

class @縺オ縺峨?シ繧 : Form
{
public override System.Drawing.Image BackgroundImage
{
get
{
base.BackgroundImage = new Bitmap(1, 1);
return base.BackgroundImage;
}
}
}

↑を実行するとFormのBackgroundImageではなく縺オ縺峨?シ繧のBackgroundImageを何度もとりに行くのはどうしてですか?
309デフォルトの名無しさん:2007/03/17(土) 15:30:55
たぶん,ControlクラスのBackgroundImageのセッター内で
this.BackgroundImageのゲッターにアクセスしてるから
310デフォルトの名無しさん:2007/03/17(土) 16:28:35
>>308が文字化けてるのは俺だけ?
311デフォルトの名無しさん:2007/03/17(土) 16:40:47
おまいだけ
312デフォルトの名無しさん:2007/03/17(土) 16:47:56
俺も化けて見える
313デフォルトの名無しさん:2007/03/17(土) 16:53:02
縺オ縺峨・繧だけUnicodeでフォームだな。
314デフォルトの名無しさん:2007/03/17(土) 18:40:07
private int _hoge = 0;
public int Hoge
{
  get { return _hoge; }
  set
  {

  }
}
315314:2007/03/17(土) 18:44:02
すみません。途中で書き込んでしまいました。

>>314のようなプロパティで、set アクセサの内部で値のチェックなどをやっているとします。
そのチェックの条件が複雑なので、定義しているクラスの内部からも、_hoge に直接アクセスできない
ようにしたいのですが、そのような方法があるのでしょうか。
316デフォルトの名無しさん:2007/03/17(土) 18:47:45
流石に無理だ。
せいぜい使いにくい名前でも付けとけ。\uXXXX を駆使するとかして。
317デフォルトの名無しさん:2007/03/17(土) 18:54:21
_hoge を int 丸出しじゃなくて別のクラスのオブジェクトにすればいんじゃね?
318デフォルトの名無しさん:2007/03/17(土) 18:56:54
まあ直接触ってはいけないフィルドにうっかり触ってしまう危険性を感じるとしたら、
それはそのクラスが見通しが悪いからなわけで、
修正されるべきはその点って気もするけどね
319デフォルトの名無しさん:2007/03/17(土) 19:18:16
>>314
_hoge のXMLコメントに、触るなって書いておけ。
320デフォルトの名無しさん:2007/03/17(土) 19:27:08
VBならフィールドを関数の中に隠蔽することもできるけどね。
まあ普通の感覚の人には受け入れられない技だろうな。

Private Function ConcreteHoge(Optional ByVal setVal As Integer = Integer.MaxValue) As Integer
  Static hoge As Integer    
  If setVal = Integer.MaxValue Then
    Return hoge
  Else
    hoge = setVal
    Return 0
 End If
End Function
321デフォルトの名無しさん:2007/03/17(土) 20:02:45
こんばんは
ttp://up.viploader.net/src/viploader9803.zip

スレ違いかもしれないんですけど
.NET2.0用のドッキングウィンドウコンポーネント
(VSのIDEみたいなものです)をC#で作成しました。
もし宜しければ試しに遊んでいただけると幸いです。

サンプルアプリケーションとして、おまけのウェブブラウザ付けてます。
ただ、ウェブブラウザ部分に色々付けたしてしまってサンプルとしての適切な
ソースかは不明です。
322デフォルトの名無しさん:2007/03/17(土) 20:24:18
感動した
323デフォルトの名無しさん:2007/03/17(土) 20:33:12
>>322
ありがとうございます。
私に向けた発言でなかったら本当に勘違い野郎ですみません。

コンポーネント作るの初めてだったもので
とりあえず自身で色々試験してますけどバグは少ないと思います。
(ブラウザとしてのバグはあります・・)

VSのIDEと比べた特徴なんですが
長所
・ドッキングレイアウト操作時に、いちいちウィンドウを分離させないので
 キャンセルとか容易です。
短所
・ドッキングからの分離で、のこされたペイン(タブコントロールの一枚)
 をリサイズするときに、人間的なリサイズ方法ではないかも
 しれない。

というところが特徴です。
324デフォルトの名無しさん:2007/03/17(土) 21:29:29
面白いな
でもreadme.txtを読む限りでは,今のライセンスだとyukilib.dllを
作者以外の人が自分のアプリに組み込んで配布することはできないんじゃないの?
325デフォルトの名無しさん:2007/03/17(土) 21:48:40
>>324
感想有難う御座います。
あ。
すみません。ライセンスの制度について勉強不足だったので
readmeの書き方が拙かったようです。申し訳ないです。

yukilib.dllに関しては、現在デコンパイル以外は全てOKです。
使用いただけるのであれば
どんなアプリに組み込んで再配布していただいても構いません。
事前にお知らせいただければ嬉しいですが。
326デフォルトの名無しさん:2007/03/17(土) 23:02:09
>>325
うわー!これいいですね!
起動時に設定ファイルを反映させたいんですけどどうするんですか?
327デフォルトの名無しさん:2007/03/17(土) 23:10:27
>>325
ライセンス変えてほげにでもだせば?
見てないけど
328デフォルトの名無しさん:2007/03/17(土) 23:43:22
>>326
有難う御座います!

起動時に設定ファイル反映させるには、
「AutoDeserialize」ボタンをチェックしたままアプリ終了させてください。
そのボタンがチェックされている限り、起動時には状態が復元されます。
ただしWebPageに関してはロードしません。Webを開いたまま終了したら、
専用のボタンとメニューが起動時に出現します。

もともとライブラリのサンプルアプリのつもりで作り始めたので
アプリ本体のソースとかツールボタン構成とかはあまりエンドユーザ向けでない部分が
多々ありますが、貧弱ながらヘルプ「簡易Tips」に色々書いてあるので
そちらも参考いただければ幸いです。

>>327
アドバイス有難う御座います。
ちなみに「ほげ」とは何でしょうか。
一応今のところ、もう少しブラウザの安定化とソースの再構成を行ったら
Vectorとかには出してみようと思っていたのです。
もし他にいい場所があればそちらも見てみたいです。
329デフォルトの名無しさん:2007/03/17(土) 23:47:54
クラムボンは死んだよ
330デフォルトの名無しさん:2007/03/18(日) 00:15:54
>>321
よくできてるね。
しかしバイナリしか提供されないライブラリはいろんな意味で使いづらいな。

#CPLとかきれいなライセンスをつけてcodeplexあたりに公開したら流行りそう
331デフォルトの名無しさん:2007/03/18(日) 00:21:27
sourceforge.jp
のことじゃないかな。>ほげっ!
332デフォルトの名無しさん:2007/03/18(日) 00:33:31
クラムボンは殺されたよ
333デフォルトの名無しさん:2007/03/18(日) 00:40:09
>>330
ちょっと関係ないかもしれないのですが、ついでに少し教えてください。

このCPLでググルと
http://kazuho.exblog.jp/1624574
のようなことがありました。これって危険なのでしょうか?

またうっかりライセンスに関して知らずに無料だからと公開されている
ライブラリを使って後で損害賠償請求されるといったことはあるでしょうか、
よろしければ教えてください。別スレのご紹介もありましたらよろしく
334デフォルトの名無しさん:2007/03/18(日) 00:45:22
>>330,331
アドバイス等有難う御座います!
しかしcodeplexにしろ、sourceforgeにしろ、
Vectorのライブラリ系のところに登録するより良さそうですね。
ちょっと仕組みを勉強した上で(ライセンスに関してもちょっと調べてみます。)
ライブラリのソースごと投稿してみます。

ただ、問題が。

ソース内のsummaryなど、全て日本語なんですけど。
これらを英訳する必要ありますかね?
フィールド名とかメソッド名とかはまぁ、辞書調べながら意味が不明でない物を
選べますけれど。注釈に関しては英文に直せる自信がないですw
まぁ、一寸づつ変えていけばいいですかね。
335デフォルトの名無しさん:2007/03/18(日) 00:47:32
クラムボンは死んでしまったよ・・・
336デフォルトの名無しさん:2007/03/18(日) 02:45:31
CPLについて勉強してみました。
間違っている可能性がありますが、おさらいのため、スレ汚しですけれど
ここに自分の解釈を書いてみます。

・CPLライセンスの適用されるオープンソースプロジェクトに
 静的、動的にリンクするソフトはオープン、クローズドどちらでも良く、
 また、商用であってもそうでなくても構わない。
 
 つまり、333さんの危惧されているケースは通常起こらない(のかな?)
 ただし、
 「CPLで定義されたオープンソースプロジェクトに変更を加えた上で
 自社・自身の製品の一部に取り込んでリリースする場合には
 、変更箇所のソースを公開・明示しなければならない。」
 というような制約があるみたいですね。
 ゆえに、333さんが使用しているCPLライブラリを333が変更して
 ソースを非公開のまま再配布していたら、
 まずいことになるかもということですね。

間違っていたらすみません。

とりあえず、GPLとCPLでは、企業にとってはCPLで定義されているライブラリの
方が有り難いみたいなので、CPLもしくはそれに似たライセンスに変更します。

次はライセンスのミックスについて引き続きもうちょい調べようと思います。

続く
337デフォルトの名無しさん:2007/03/18(日) 02:57:00
殺されたよ
338321です:2007/03/18(日) 02:59:15
続き

ところでSourceForegeとCodePlexについて少々調べてみました。
SourceForgeは日本語版もあるくらいですから、流石にとっつき易いです。
で、ここからは高望みになってしまいますけれど
CodePlexは言語の壁さえなければ、環境としては最高に良さそうです。
何よりVSから直で、プロジェクトにアクセスできるようになるみたいですから。

そこで皆さんに質問させていただきます。

@はじめのうちはSourceForgeで、後にCodePlexにお引越し
なんていう都合のいいことは可能でしょうか。可能だとして許されることでしょうか。
(理由) このような経験は初めてなので、まずは理解しやすいsorceForgeで
 コミュニティの基盤を学びたい。ということです。

多分無理な気がするんですけれど。
というか阿呆な質問になっている気がします。

これらのようなコミュニティを活用したことのある方のご意見を伺いたいです。

意味不明な長文すみません。
よろしくお願いします。
339321です:2007/03/18(日) 03:01:14
すいません。
先ほどから気にはなっていたのですが、
クラムボンとは何でしょう。
私のレスの後に3度目となると少々気になりまして。
340デフォルトの名無しさん:2007/03/18(日) 03:08:18
それならなぜ殺された


わからない
341デフォルトの名無しさん:2007/03/18(日) 03:09:01
クラムボンはクラムボンだよ。怪しくないよ。
342デフォルトの名無しさん:2007/03/18(日) 03:10:21
キチガイでしょほっとけって。
しかし、キチガイってのはなんで春先になると活動が活発になるんだろうねw
343321です:2007/03/18(日) 03:11:08
すみません。深読みしてしまいました。
宮沢賢治の童話ですね。
自身の記憶にはありませんでしたが、言葉の響きが強烈だったので
気になってしまったのです。
344デフォルトの名無しさん:2007/03/18(日) 03:15:31
さすがにスレ違いだろってものすごく遠まわしに言ってるんだよ
345デフォルトの名無しさん:2007/03/18(日) 03:44:11
>>342
ガッコ休みだからだろ

>>344
あれじゃ判らんってw
まぁスレ違いは確かだが。
346デフォルトの名無しさん:2007/03/18(日) 07:18:35
public class ClassA{
public delegate void funcA();
public test(funcA func ){
func();
}
}

public class ClassB{
public void funcB(){
//処理
}
public int main(){
ClassA ca = new ClassA();
ClassA.funcA func = new ClassA.funcA(funcB);
ca.test(func);
}
}
これをClassBのmainの場所から実行すると、コンパイルは通っても実行時に不正な処理を行いましたって出てきます。
どこがまずいのでしょうか?
347デフォルトの名無しさん:2007/03/18(日) 08:19:38
俺コンパイルとおらねえんだが・・・
348デフォルトの名無しさん:2007/03/18(日) 09:01:37
>>346
ん?
どこがおかしいのかわからん。
別の場所でエラー起きてるってオチじゃないの?
349デフォルトの名無しさん:2007/03/18(日) 09:29:24
public test(funcA func)メソッドに戻り値が定義されてないよ?
350デフォルトの名無しさん:2007/03/18(日) 11:41:01
>>328
ありがとうございます!
頑張ってください。応援してます!!

すれ違いとか言われてますがココが「初心者」スレだからでは?
気にしなくていいと思いますよ
351デフォルトの名無しさん:2007/03/18(日) 13:38:48
ライセンスやコミュニティの話は完全にスレ違いだろうが
352デフォルトの名無しさん:2007/03/18(日) 13:44:02
別にこのスレを覗くような人間にとって有益な話なら問題ないじゃん。
そもそもこういったスレや板が存在することの意義や目的は何だと思ってるんだ。

物事を自分の頭で一から考えられない351のような奴が安易に「ルール」に縋るんだよな。
「ルール」が存在することのそもそもの意義を忘れて。
353デフォルトの名無しさん:2007/03/18(日) 14:02:37
>>352
そういう議論こそスレ違いだ。
こっちでやってくれ
http://pc11.2ch.net/test/read.cgi/tech/1051039126/
354デフォルトの名無しさん:2007/03/18(日) 14:40:27
>>346

コンパイルは通ってるんだったら,参照してるDLLが見つからないとか,
アンマネージドな世界でのエラーとか
355321:2007/03/18(日) 16:24:34
>>350
お心遣い、有難う御座います。

色々スレ違い投稿してすみませんでした。

最後にもう一つだけスレ違いさせて頂きますがご容赦下さい。

皆様のアドバイスの下、CodePlexにてプロジェクトページを作成しました。
まだ不備が多々ありますが、今後のそのフォーラム内にて活動していきます。

以降、もしご興味頂いた方はフォーラムにご参加頂けると幸いです。
ttp://www.codeplex.com/sdock

これにてこのスレ内での発言は控えます。
失礼致しました。
356デフォルトの名無しさん:2007/03/18(日) 17:31:39
webBrowserクラスのDocumentTextプロパティの内容(htmlの中身)を
StreamWriterクラスを使ってファイルに書き出すと、日本語が文字化けするんですが、、、、

Encodingを設定しても文字化けしてます
new StreamWriter(fs, Encoding.GetEncoding("shift-JIS"))
このインスタンスを使って、webBrowser1.DocumentTextを直接書き込んだだけでは
文字化けします
357デフォルトの名無しさん:2007/03/18(日) 17:45:41
DocumentStream の方を使えば良いんじゃね
これなら Encoding が介在する必要なく byte のやり取りで済むし
358デフォルトの名無しさん:2007/03/18(日) 18:34:35
文字化けっていうけど…
それぞれどんな文字コードか調べた?

元のデータ
読み込んだデータ
書き込んだデータ
359デフォルトの名無しさん:2007/03/18(日) 21:09:48
>>357
DocumentStreamからbyte[]経由で書き込んだら、日本語もちゃんと書き込めました

>>358
そこら辺全然分かってないです
これから文字コードやエンコーディングの勉強をしないと・・・
C#ではUTF-8が標準だというのは聞いてます

DocumentTextはStringだからUTF-8に変換してるのかな?わからん
360デフォルトの名無しさん:2007/03/18(日) 21:22:37
.NET文字列の内部表現はUTF-16
361デフォルトの名無しさん:2007/03/18(日) 21:32:55
内部表現は Unicode な。
それを外に見せるのに UTF-16 を使う。
ああややこしい。
362デフォルトの名無しさん:2007/03/18(日) 21:37:05
UnicodeとUTF-16をどういう意味で使い分けてる?
363デフォルトの名無しさん:2007/03/18(日) 21:38:20
ファイルに保存するときにはUTF−8
364デフォルトの名無しさん:2007/03/18(日) 21:59:40
>>361
内部表現もUTF-16だって。
もちろん文字集合はUnicodeだけど、符号化方式のUnicodeじゃない
365デフォルトの名無しさん:2007/03/18(日) 22:27:44
俺内部で全部UTF-8に変換して処理してるんだが、最初からUTF-16ならこんな無駄な事しない方がいいのかな・・・
366デフォルトの名無しさん:2007/03/18(日) 23:18:03
なんでそんな意味不明なことするんだよ。莫迦か?
367デフォルトの名無しさん:2007/03/19(月) 01:18:09
莫迦 が未だに読めない俺が居る('A`)
368デフォルトの名無しさん:2007/03/19(月) 01:20:54
>>367
バカだ。
369デフォルトの名無しさん:2007/03/19(月) 01:21:45
なるほど
THX
370デフォルトの名無しさん:2007/03/19(月) 04:25:51
>>362
BMP面だけを使う限りは同じと考えといていいんじゃないのかな。
俺の場合、BMP面以外の文字を扱う機会はおそらく一生ないだろう。
371デフォルトの名無しさん:2007/03/19(月) 04:33:20
OSとブラウザくらいだろ。
そんな世界的なソフトを開発する機会は無いなぁ
372デフォルトの名無しさん:2007/03/19(月) 08:39:25
>>370
同じと考えていいものを、分けて扱っている>>361
どういう意味でそれらを使い分けてるのかを知りたかった。
内部ではサロゲートペア使わないとかか?
373デフォルトの名無しさん:2007/03/19(月) 09:09:41
Vistaでハマリングw
374デフォルトの名無しさん:2007/03/19(月) 11:14:36
質問です

Form1からForm2を呼び出した場合
Form2でForm1のデータ(変数の値やラジオボタンのチェック等)を
参照するにはどうすればいいですか?
375デフォルトの名無しさん:2007/03/19(月) 11:33:28
これは買っとけっていうお勧めの本ってありますか?
レベルとしては初心者に毛の生えた程度です
376デフォルトの名無しさん:2007/03/19(月) 13:54:02
質問です
ピクチャーボックスに描画されているオブジェクトを印刷したいのですが.
ただ印刷することはともかくとして,
色情報を指定色だけ反転させたり
A4サイズにぴったりあう用にサイズ指定をしたりするにはどうしたら用のでしょうか?
377デフォルトの名無しさん:2007/03/19(月) 14:13:08
378デフォルトの名無しさん:2007/03/19(月) 14:49:13
>>374
Form2のコンストラクタでForm1の参照を渡す
379デフォルトの名無しさん:2007/03/19(月) 15:38:19
>>374
Form2をForm1の内部クラスにする
380デフォルトの名無しさん:2007/03/19(月) 16:07:33
DateTime dt = new DateTime(2007,02,02, 12,0,0,0);

クイックウォッチで見たら{2/2/2007}になってた。
{2007/02/02 12:00:00}にしたいのに
YYYY/MM/dd hh:mm:ss型にならん。
どうにかしてくれ。
381デフォルトの名無しさん:2007/03/19(月) 16:44:06
>>377
どうもありがとうございます!!
早速購入しねーよ
382デフォルトの名無しさん:2007/03/19(月) 16:48:46
>>377は(日本人の感覚としては)初心者には難しすぎる
383デフォルトの名無しさん:2007/03/19(月) 17:22:46
>>380
クイックウオッチでの見えかたなんぞ問題じゃないだろ。
DateTimeの実体は単なる64ビットの数値。内部にフォーマット情報など持っていない。
384デフォルトの名無しさん:2007/03/19(月) 17:53:03
>378-379
ありがとうございます

今キーワードでググりながら悪戦苦闘してます
385デフォルトの名無しさん:2007/03/19(月) 17:56:14
>383
レスサンクス!
じゃあどうすればいいんだ?
かれこれ時間変換に引っかかって1週間になる。
頼む教えてくれ。
386デフォルトの名無しさん:2007/03/19(月) 18:01:23
頼む教えてくれマン参上!
387デフォルトの名無しさん:2007/03/19(月) 18:06:38
388374:2007/03/19(月) 19:05:30
色々いじってたらなんとか出来ました

>378-379
繰り返しありがとうございました
389デフォルトの名無しさん:2007/03/19(月) 20:33:18
次から >>376 をテンプレに入れよーよ
390デフォルトの名無しさん:2007/03/19(月) 20:39:24
それよりも>>374
391デフォルトの名無しさん:2007/03/19(月) 20:43:15
>>374
参照したいならメソッドにrefつけてアクセサメソッドで呼び出せばいいだろう。
392デフォルトの名無しさん:2007/03/19(月) 20:46:36
この香ばしさは釣りなのかマジなのかw
393391:2007/03/19(月) 20:49:22
refではなくてoutだったぜw
394デフォルトの名無しさん:2007/03/19(月) 20:50:44
>>374
「C# get set プロパティ」で調べて!
395374:2007/03/19(月) 20:55:13
(#^ω^) ビキビキ
もう出来たって言っとろーが
396390:2007/03/19(月) 20:56:41
いや,>>374の質問はしょっちゅう目にするっていう意味で言ったんだが…
397デフォルトの名無しさん:2007/03/19(月) 21:00:14
>>374
釣りだと思ってたから、もう少し遊びたかったな
398デフォルトの名無しさん:2007/03/19(月) 21:01:44
>>374
っていうか、これは真面目な話だけどFormから別のFormの何かを取得したい、
なんて動機を持つことがそもそもおかしいんだよ。

Formなんて別の「何か」の情報を表示するためのハリボテ(表示器)に過ぎないんだから。
ハリボテからハリボテに配線が行ってるなんておかしいだろ。

確かに同一の「何か」の情報を表示している二つのFormを同期させたい、
という場合はないこともないけど、そういう場合はFormAからFormBに直接配線をするんじゃなくて
FormAで「何か」の情報を変更すると「何か」はイベントを生成するようにして、
FormBはそのイベントを受信して表示を更新するようにするんだよ。
399デフォルトの名無しさん:2007/03/19(月) 21:07:53
VB.NETスレでは嫌われるタイプのレスだな
400デフォルトの名無しさん:2007/03/19(月) 21:29:14
>>372
MSDNのSystem.Charの項を見ると、次のように書いてある。

> ほとんどの Unicode 文字は、単一の Char オブジェクトで表現できますが、基本文字、
> サロゲート ペア、組み合わせ文字シーケンスとしてエンコードされる文字については、
> 複数の Char オブジェクトを使って表現されます。
> そのため、String オブジェクト内の 1 つの Char 構造体が、必ずしも単一の Unicode 文字に
> 対応するとは限りません。
401デフォルトの名無しさん:2007/03/19(月) 21:36:32
日本語扱ってる範囲で組合せ文字ってあるの?
また、その文章と>>362との関連性もよくわからない
402デフォルトの名無しさん:2007/03/19(月) 21:38:26
>>390
ごめん。普通にレス番間違えた。>>374 でおk
403デフォルトの名無しさん:2007/03/19(月) 21:48:17
UnicodeのBMP面以外がどんどん使われるようになったら、
32bit長のwcharとwstringを追加して固定長で処理したほうが楽な気もする。
当分そうはならんとは思うけど。
404デフォルトの名無しさん:2007/03/19(月) 21:53:05
英語圏だとそもそも 7-bit かそこらで十分だからな。
UCS4 とか普及するとは思えないなあ。
405デフォルトの名無しさん:2007/03/19(月) 22:00:25
>>401
そこは実に微妙な問題で、「日本語で扱う文字」の範囲をどう考えるかによる。
例えば、鼻濁音を表す「か゜」「き゜」やアイヌ語の「セ゜」「ト゜」のような文字は文字シーケンスを
使わないと表現できないが、これを日本語で扱う文字に含めるかどうかはケースバイケースだろう。
また、CJK統合漢字拡張Bにも、吉野家の「吉」が U+20BB7 に入っていたりするので、これを扱いたければ
サロゲートペアを考慮しなければならない。

俺の考えとしては、日本語だけを考えても、文字シーケンスやBMP面以外の文字を扱う機会は十分ありえるから、
UnicodeとUTF-16を同じに考えてはいけない、と思う。
406デフォルトの名無しさん:2007/03/19(月) 22:04:22
そもそもUnicodeは文字集合、UTF-16は文字の符号化方式。全然違う。
407デフォルトの名無しさん:2007/03/19(月) 22:07:21
>>403
Unicodeスカラ値が固定長でもgrapheme単位で処理するためには、
更に高度な(複雑な)切り分けが必要になってくるから
UTF-16でもUTF-32でもそのあたりの面倒くささって変わらない気がするんだなあ。
408デフォルトの名無しさん:2007/03/19(月) 22:13:24
unicodeは文字コードとその仕様で、utfとかはunicodeの仕様の一部で
コードの数字の表現方法だよね????
409デフォルトの名無しさん:2007/03/19(月) 22:17:56
>>407
そのためにStringInfoなんてものがある。
410デフォルトの名無しさん:2007/03/19(月) 22:21:15
>>408
Unicodeは文字集合。スカラ値とその意味を定義してる。

UTFは符号化形式(CEF)と符号化方式(CES)をあわせたもので、
前者はスカラ値を符号単位列に変換する方法を、
後者はスカラ値を符号単位列を経てバイト列に変換する方法を定義している。
(要するにCESはCEFにエンディアンを加えたもの)
411デフォルトの名無しさん:2007/03/19(月) 22:27:52
ソフトウェア開発者試験でユニコードは2バイトだって出るよ。
412デフォルトの名無しさん:2007/03/19(月) 22:32:47
>>406
それがそうでもないんだなあ。悩ましいことに。

UCS-2をUnicodeって呼ぶことがあって、
こいつも文字集合なんだけどUnicodeの符号化方式に転用されることがしばしばある。

誤用なんだけど、ユニコード周りの用語が混乱しすぎてよくわからんことになってる。
413デフォルトの名無しさん:2007/03/19(月) 22:36:52
教えてください、配列を使うか、List(Of Type)を使うかの切り分けというか、
明瞭な目的別の区分ってあるでしょうか?
414デフォルトの名無しさん:2007/03/19(月) 22:38:22
要素数固定なら配列でいいんじゃね。好きにすればいいよ。
415デフォルトの名無しさん:2007/03/19(月) 22:38:42
>>412
UCS-2もエンコーディングなんじゃないのか?
Unicodeとは別の文字集合?
416デフォルトの名無しさん:2007/03/19(月) 22:40:36
ユニコードはこんな感じかな?
ttp://homepage1.nifty.com/nomenclator/unicode/ucs_utf.htm
2バイトって限定するのは怪しいってことだな。
4バイトもあるんだな。
オクテット使ってないのも怪しいってことかなw

417デフォルトの名無しさん:2007/03/19(月) 22:45:52
>>414
そういうことだったんですね。どうもでした。
418デフォルトの名無しさん:2007/03/19(月) 22:48:53
>>416
6バイトもあるよ。
419デフォルトの名無しさん:2007/03/19(月) 22:50:28
>>415
UCS-2そのものはISO/IECが規格化した16bitの文字集合だよ。
BMP面では互換性があるから、21bitのUnicodeスカラ値を縮めるのによく使われてて、
UTF-16互換エンコーディング同然の扱いをされてるけど。
420デフォルトの名無しさん:2007/03/19(月) 23:07:39
さらに転じてリトルエンディアンのUTF-16を"Unicode"と呼んじゃってるのがMicrosoft
UCSをUnicodeと呼ぶよりかはなんぼかマシだけれども

そういうわけで、「"Unicode"は符号化方式である」というのもあながち間違いではない。
421デフォルトの名無しさん:2007/03/19(月) 23:11:08
UTF-16 は1文字が2、または4バイト(サロゲートペア)で、
UCS2 はサロゲートペアなしの1文字2バイト固定じゃなかったっけか。
422デフォルトの名無しさん:2007/03/19(月) 23:24:32
>>421
あってるよ。文字よりはコードポイントといったほうが正確だろうけど。
UCS-2に含まれる文字に限れば、UCS-2もUTF-16も2オクテットで互換性がある。
423デフォルトの名無しさん:2007/03/19(月) 23:26:26
ん?
エンディアン無視ですか?
424422:2007/03/19(月) 23:28:03
UTF-16符号化形式の意味で言った。
425デフォルトの名無しさん:2007/03/20(火) 00:36:09
んー文字コードまわりは複雑でわっかんねーよー

なんか詳しそうな人がたくさんいるんでついでに聞いてみていいですか?

基本から分からないんですが
wcharって2byteでいいの?

例えばPInvokeでバッファ確保するとき
260文字だったら520バイト?
426デフォルトの名無しさん:2007/03/20(火) 00:54:18
Win32APIのWCHARなら2バイトだな。
終端のヌルとか気をつけないといかんが、
大抵の場合はStringBuilderで確保すればなんとかなるだろ。
427デフォルトの名無しさん:2007/03/20(火) 01:50:26
これもWni32APIですが、Explorerで編集メニューに 「元に戻す」というのがありました、
これは、戻す前にやった操作をどんどん戻せる機能だと思いますが、これを
.NETのアプリケーションなどでも使うことはできるでしょうか?やはりWin32APIを
用いるのでしょうか?
428デフォルトの名無しさん:2007/03/20(火) 01:52:38
操作を覚えておいてその逆操作をやるってだけだ
API とかの問題じゃない
429デフォルトの名無しさん:2007/03/20(火) 02:02:15
>>428
そうだったんですか、ということはExplorer内のプログラムで操作しているということ
だったのですか。

たとえばゴミ箱に移動の場合は、その逆はやはり同じWin32API関数の
ファイル操作関数をつかって戻せるということでしょうか。その辺がよくわかりません。
430デフォルトの名無しさん:2007/03/20(火) 02:05:43
そのあたりはShell APIで全部できる
431デフォルトの名無しさん:2007/03/20(火) 02:20:47
>>430
Shell API ですか、わかりました調べてみます。
ありがとうございました。
432デフォルトの名無しさん:2007/03/20(火) 12:04:59
SaveFileDialogで既定のファイル名を指定するにはどうすれば良いんでしょうか?
あらかじめこちらでファイル名を指定しておいて、それで良ければそのままOKボタン
押して貰って終わりにしたいのです。
433デフォルトの名無しさん:2007/03/20(火) 12:06:54
透明な部分があるコントロールを作りたいのですが、
子コントロールがある領域は親コントロールが描画してくれません。
子コントロールの領域も描画するように設定する方法はありませんか?
434デフォルトの名無しさん:2007/03/20(火) 12:28:46
WPF
435デフォルトの名無しさん:2007/03/20(火) 13:10:15
>>432
FileNameプロパティにファイル名だけ設定すればあらかじめ出てきます。
ディレクトリも指定したければフルパスで。
436デフォルトの名無しさん:2007/03/20(火) 13:53:22
>>435
ありがとうございました!!
437デフォルトの名無しさん:2007/03/20(火) 15:46:49
>>434
とn
438デフォルトの名無しさん:2007/03/20(火) 15:48:35
>>437
えー
いいのかそれで
439デフォルトの名無しさん:2007/03/20(火) 15:51:39
WebBrowserに特定のサイトを表示したときに、やたらとエラーメッセージが
出てきました。問題のサイトのURLは例えば
 http://www.windowsmedia.com/radiotuner/MyRadio.asp
ですが次のエラーから復帰しません。

 「ランタイムエラーが発生しました。
  デバッグしますか?

  行:3
  エラー: オブジェクトがありません」

5回ぐらい「いいえ」を押すとあらかた表示は整うのですが、エラーメッセージは
出続けて消えません。これは同サイトをIEで表示すると出てきません。

「はい」を選んでスクリプトエディタでみましたら、→のところでエラーしていました。

function getAppLightColorCorrected(i)
{
→ var sOrgColor=window.external.appColorLight;
if(g_fIsPolaris)
{
sOrgColor=window.external.appColorDark;
}
var sNewColor;
var bOrgColor=true;
         ・・・・・
これはWebBrowserの設定に問題があるのか、それとも何かの色関係のドライバーが
インストールされていないためといった関係でしょうか?
440デフォルトの名無しさん:2007/03/20(火) 16:59:18
WMPのバージョンは?
441デフォルトの名無しさん:2007/03/20(火) 17:32:01
>>440
WMP は WindowsMediaPlayer のことですよね。
調べましたら 9 のようです。
「アプリケーションの追加と削除」 に同じ 9 でいくつかありました。
442デフォルトの名無しさん:2007/03/20(火) 17:35:07
それと環境は Windows2000 でした。
もしかすると、
 Windows Media Player (全バージョン) for Windows 2000、Windows XP、および Windows Server 2003 (KB828026)
というところから最新版を入れた方がいいでしょうか?
443デフォルトの名無しさん:2007/03/20(火) 19:37:48
質問です

Encoding enc = Encoding.GetEncoding("Shift_JIS");
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(szUrl);
req.Credentials = new NetworkCredential(szID, szPass);
req.Method = "POST";
req.ContentLength = szData.Length;
req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 2.0.40607)";
req.ContentType = "application/x-www-form-urlencoded";

Stream reqStream = req.GetRequestStream();
reqStream.Write(Encoding.ASCII.GetBytes(szData), 0, szData.Length);
reqStream.Close();

WebResponse res = req.GetResponse();

と言ったコードを書いているのですが、req.GetResponse()がWebExceptionをスローします。
WebException.StatusはConnectionClosedで、現象が発生する環境と発生しない環境があるので困っています。
発生しない環境では、この後GetResponseStream()してしまえばきちんと読めるのですが・・・
よろしくお願いします。
444デフォルトの名無しさん:2007/03/20(火) 20:18:32
とりあえず szXXX は置いとくが、

>reqStream.Write(Encoding.ASCII.GetBytes(szData), 0, szData.Length);

これには疑問。
445デフォルトの名無しさん:2007/03/20(火) 20:25:06
>>439
ObjectForScriptingにオブジェクト突っ込んどいたら?
446デフォルトの名無しさん:2007/03/20(火) 21:32:36
FormにtextBox1を貼り付け、AllowDragをtrueにして、
ドラッグされたファイル名を取得し、textBox1へ表示しようとしているのですが、どこが悪いのでしょう?

private void Form1_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.All;
}

private void Form1_DragDrop(object sender, DragEventArgs e)
{
string[] filename = (string[])e.Data.GetData(DataFormats.FileDrop, false);
textBox1.Text = filename[0];
}
447デフォルトの名無しさん:2007/03/20(火) 21:34:15
>>446
なにが悪いのでしょう?
448デフォルトの名無しさん:2007/03/20(火) 21:43:10
イベントをデザイナでform1のインスタンスに設定してない
449デフォルトの名無しさん:2007/03/20(火) 21:52:01
>>446

448氏の意見のとおりになっていないことを願うが、
他の可能性としては

・Form1のクライアント領域が違う別のコントロールで埋まっているため
 DragEnter,DragDropイベントが通達されない。

もう一つ。
というか、どんな不具合がおきているのか446さんの文章だけでは
確定できないな。
textBox1に文章が表示されないのか、それとも例外落ちするのか

あと、e.Effect = DragDropEffects.All;
この書き方よくないよ。
他のOLEドラッグアンドドロップを使うソフトに迷惑かけることになる。
450デフォルトの名無しさん:2007/03/20(火) 21:54:59
enum型変数をクラス内ではなく関数内で宣言したいのですが
エラーを出さずに↑を実現する方法はありますか?
451デフォルトの名無しさん:2007/03/20(火) 21:55:54
>>448
おそらく、Form1_DragEnter, Form1_DragDropを手動でわざわざ書かないだろうから
Form1.Designer.csには、this.DragEnter += ・・・, this.DragDrop += ・・・があるんじゃないかな?
452デフォルトの名無しさん:2007/03/20(火) 21:57:05
>>450
普通にできるだろ。

void foo() {
EnumType bar;
}
453デフォルトの名無しさん:2007/03/20(火) 21:58:16
enum型にこだわる必要性が無いなら
例えばswicthの分岐値として使いたいなら
const int 宣言しておけば?

昨今のインテリセンスのお陰で、それだけで十分でしょう。
後はお好みでsummaryタグ付けとくとか。
454466:2007/03/20(火) 22:02:50
>>448
>>449
どうもありがとうございます。
環境も忘れていました。VisualC#2005 EEです。
現象としては、a.txtをFormにドロップしても無反応です。
Form1はソリューション作成時にできたもので、textBoxを貼り付けた以外にいじっていません。

>あと、e.Effect = DragDropEffects.All;
>この書き方よくないよ。
>他のOLEドラッグアンドドロップを使うソフトに迷惑かけることになる。
ご指摘ありがとうございます。
MSDN読み返してきます。
455デフォルトの名無しさん:2007/03/20(火) 22:14:53
>>454
その条件を元に自分の環境でほぼ同じものを作ってみたら
動きました。
なんで駄目なんだろう?


なんでだめかっていうと、
ドラッグ開始側はGiveFeedbackイベントとQueryContinueDragイベントでしか
ドラッグアンドドロップの状況を確認できない。
そしてwndprocに頼らない場合、相手先のウィンドウハンドルは判んないんだよね。

446氏の何がまずい事に繋がり得るかっていうのは
・データ形式を確認していないこと。
・Effectと動作の意図がマッチしていないこと(この場合はLinkとすべき)

ドラッグイベントで何も確認せずにダイアログ開くようなアプリにめぐり合った時
かなり腹立たしいことがおきる。
456デフォルトの名無しさん:2007/03/20(火) 22:51:01
AllowDrop はTrueになってるよな?
457446:2007/03/20(火) 22:58:34
>>455
あれ?動きましたか・・・
ひょっとして、Vistaが悪いのかな・・・
Formにマウスオーバーしてもカーソルが、○に/が入ったカーソルになるので、
DragEnterが起動する以前の問題のようです。

>>456
はい、trueに設定しています。

458デフォルトの名無しさん:2007/03/20(火) 22:59:42
このあたりだろ?

>DataFormats クラス
>このフィールドは、.NET Framework インフラストラクチャをサポートします。
>独自に作成したコードから直接使用するためのものではありません。
459デフォルトの名無しさん:2007/03/20(火) 23:01:35
イベントハンドラの仮引数に名前空間付いてないのが気になる……
イベントの追加は雷アイコンからやったんだよね?
460デフォルトの名無しさん:2007/03/20(火) 23:04:20
少なくとも2005のデザイナではusingあれば名前空間つかないはずだが。
461デフォルトの名無しさん:2007/03/20(火) 23:12:41
俺もdragのコード貼ったけど、上手くいったよ?
linkにしたんだが。
ああ、あとXPだけどな。
textbox上でカーソルはどんなマークになる?
462デフォルトの名無しさん:2007/03/20(火) 23:19:52
ieやゴミ箱はドラッグしても反応しないな。
463デフォルトの名無しさん:2007/03/20(火) 23:24:40
>>459
はい、イベントは雷マークから追加しました。
>>451さんの言うとおり、Form1.Designer.csにnewされています。
Linkでも変わらないです

>>461
textBox1上でも○に/が入ったカーソルになります。(TДT)
464デフォルトの名無しさん:2007/03/20(火) 23:36:57
もう一度同じ手順でやり直すんだな。

あれ?bitmapドロップしてもdata形式にbitmapが含まれないな…
465446:2007/03/21(水) 01:46:59
できました。
VSのビルドから起動させるのではなく、直接exeを叩いたら正常に起動しました。
みなさん、どうもありがとうございました。
466デフォルトの名無しさん:2007/03/21(水) 10:14:28
Microsoft Visual C# .NET Standard Version 2003 アカデミックパック
ってどこも在庫切れでなんですが、私今回出品しようと思ってるんです。
幾らくらいなら買いますか?
467デフォルトの名無しさん:2007/03/21(水) 10:18:55
氏ね
468デフォルトの名無しさん:2007/03/21(水) 10:21:50
今更2003いらね
469デフォルトの名無しさん:2007/03/21(水) 10:22:49
そう言わずに教えてください
困ってるんです
3000円くらいでもいいんで買いたい人いませんか?
470デフォルトの名無しさん:2007/03/21(水) 10:22:56
>>466
そんなもの買うなら、今はVC♯ .NET2005のエクスプレス版をダウンロードするだろ。
無料だし。
ぶっちゃけ、無価値だと思っておいたほうがいい。
471デフォルトの名無しさん:2007/03/21(水) 10:24:08
>>470
な、なるほど・・・それだと価値ないですね
情報ありがとうございました
472デフォルトの名無しさん:2007/03/21(水) 10:24:26
有料の古いIDEは大抵無価値だ
無料の新しいIDEの方が便利なことがある
473デフォルトの名無しさん:2007/03/21(水) 11:40:44
m9(^Д^)プギャー >>466
474デフォルトの名無しさん:2007/03/21(水) 11:54:37
必要があるとしたら、古いプロジェクトの中身を見たり更新する必要がある場合だな
細いながらも一応需要はあるんじゃね?
475デフォルトの名無しさん:2007/03/21(水) 11:55:07
>>466の商売センスに脱帽
476デフォルトの名無しさん:2007/03/21(水) 12:19:59
>>474
新しい環境で開けば、勝手に新しい環境向けにコンバートしてくれる
477デフォルトの名無しさん:2007/03/21(水) 12:40:12
>476
それはわかってるよ
あくまで.NET 1.1のままで閲覧したり更新したい場合に必要だって言ってるんだよ
勝手にコンバートされると嫌な場合もあるだろう?
478デフォルトの名無しさん:2007/03/21(水) 13:05:03
それにしてもアカデミックはいらね
479デフォルトの名無しさん:2007/03/21(水) 13:08:47
VS2003pro相当のアカデミック版が新品でも5000円ぐらいだったろ?
実売は3500円程度
480デフォルトの名無しさん:2007/03/21(水) 13:26:53
theSpokeはVS2003Pro(パッケージ)+VS2005Pro(ダウンロード)で5000円だった
481デフォルトの名無しさん:2007/03/21(水) 13:40:46
スクリーンキャプチャでマウスカーソルも表示するのって
どうすればいいの?
482デフォルトの名無しさん:2007/03/21(水) 13:50:00
カーソル取得して自分で描けば
483デフォルトの名無しさん:2007/03/21(水) 13:58:38
某マウスもキャプチャーされることがウリのフリーソフトはそういう仕様だよね。
だからキャプチャ結果のマウスカーソルの位置がずれてるし2kやXPでもカーソルに影がない
484デフォルトの名無しさん:2007/03/21(水) 14:13:20
大抵の遠隔操作アプリケーションがやってるようにビデオドライバにフックかければいい。
Vistaでは難しいけど。
485デフォルトの名無しさん:2007/03/21(水) 15:04:15
引数つきコンストラクタのインターフェースを持たせたり、
ジェネリックでコンストラクタの制約を持たせることはできませんか。

具体的には、class A<T>{ void B(){T t = new T(a,b);} }
こういうのをつくりたいです。
486デフォルトの名無しさん:2007/03/21(水) 15:09:28
>>485
無理。

interface IHogeFactory<T> { T Create(a, b); }
class A<T>{ A(IHogeFactory<T> factory); void B(){T t = factory.Create(a,b);} }
みたいなキモイことするしかない。
487デフォルトの名無しさん:2007/03/21(水) 15:20:20
>>486
ありがとうございます。
class A<T>{ void B(){T t = new T(); t.a = a; t.b = b;} }
ならいけますかね。ジェネリックでインスタンス作成っつーのは
推奨されてなかったりするのでしょうか。
488デフォルトの名無しさん:2007/03/21(水) 15:24:29
>>487
それならいけるな。

別に推奨されてないわけじゃないが、インターフェイスで静的メンバを定義できないし、
型パラメータの静的メンバに関する制約がコンストラクタ制約しかないから、使い物にならん。
489デフォルトの名無しさん:2007/03/21(水) 15:25:44
class A<T> where T : new(A, B){
 void B(A a, B b){
  T t = new T(a, b);
 }
}
490デフォルトの名無しさん:2007/03/21(水) 15:32:51
え、それができたら最高なんですけど、できるんでしょうか。
もしや3.0の新機能とか。
491デフォルトの名無しさん:2007/03/21(水) 15:38:46
無理だろ。.NET Fx 3.5でもCLRのバージョンアップはないし。
492デフォルトの名無しさん:2007/03/21(水) 15:38:56
2.0から言語仕様の変更は全くない
493デフォルトの名無しさん:2007/03/21(水) 15:40:24
C#の言語仕様は変更しまくりだろうが
494デフォルトの名無しさん:2007/03/21(水) 15:42:54
.NET Framework 2.0→.NET Framework 3.0 C#自体は変わらない
C# 2.0→C# 3.0 いろいろ追加の予定

バージョンがずれるとややこしいね
495デフォルトの名無しさん:2007/03/21(水) 15:43:05
無念orz ありがとうございます。
Fxではなく言語仕様のC#3.0っつーのはまだなんでしょうか。
LINQとかラムダ式とかかっちょいいのがあると見たんですが。
496デフォルトの名無しさん:2007/03/21(水) 15:44:57
C#3.0はOrcas待ちやね
497デフォルトの名無しさん:2007/03/21(水) 15:50:37
いまさらですが、レスして頂いた皆様ありがとうございました。
とくに>>486様にはお世話になりました。
3.0などという曖昧な記述をして申し訳ございません。
498デフォルトの名無しさん:2007/03/21(水) 16:18:03
Orcas出たらすぐにOrcas Expressも出る?
499デフォルトの名無しさん:2007/03/21(水) 16:26:43
マイクロソフトの資料に"Orcas" Express Editionの文言はあるが、
無料かどうかはわからんし、そもそも公開するとは明言されてない。
500デフォルトの名無しさん:2007/03/21(水) 16:28:00
>>499
ぎりぎりまで公開しないよ
VS2005の売上に影響するから
501デフォルトの名無しさん:2007/03/21(水) 16:30:35
>>445
ObjectForScriptingっていうものがあったんですね!!わかりました、すぐ調べてみます。
502デフォルトの名無しさん:2007/03/21(水) 16:46:53
MinimumとMaximumは消せるようですがFormの×ボタンを表示させない
オプションってありましたっけ?
503デフォルトの名無しさん:2007/03/21(水) 17:31:18
つ ControlBox
504デフォルトの名無しさん:2007/03/21(水) 17:39:31
>>503
それだと、最大化も最小化も消えてしまうため、それらは残しておいて消すことだけできないように
したいのでしたが、そういうことは無理ですかね?
505デフォルトの名無しさん:2007/03/21(水) 17:44:16
×アイコンを非表示にするのは記憶にないが、グレイアウトで良いなら @IT の Tips に記事があった
506デフォルトの名無しさん:2007/03/21(水) 17:54:46
Win32APIを弄れば可能
507デフォルトの名無しさん:2007/03/21(水) 17:54:50
システムメニューからSC_CLOSE外せば消える
508デフォルトの名無しさん:2007/03/21(水) 17:55:12
DataGridView の ToolTip をオーナードローにすることはできますか?
具体的には、DataGridViewImageCell のツールチップを表示するときだけ、
DataGridViewImageCell の画像を拡大したものを ToolTip として表示したいんです。
509デフォルトの名無しさん:2007/03/21(水) 18:09:41
510デフォルトの名無しさん:2007/03/21(水) 19:05:13
>>508
ToolTipを別に用意したほうが簡単じゃね?
511デフォルトの名無しさん:2007/03/21(水) 19:08:39
>>509
おお、こういう方法があったのですか!助かりました、ありがとうございました!

>>505-507
そういうのもあったんですね、どうもでした!
512デフォルトの名無しさん:2007/03/21(水) 19:22:49
前から思ってるんだが「どぼん!の .NET Tips」をテンプレのトップに持っていくべきじゃないか?
初心者の質問ならそこ見れば8割がた解決すると思うんだけど。
513デフォルトの名無しさん:2007/03/21(水) 20:30:24
そもそもテンプレなんて無意味だって。
あれは書いてる奴の自己満足以外のなんでもない、悪いけどw

このこういうプログラミング言語のスレに限っては、
予めテンプレのリンク先に目を通すような殊勝な(っていうか、本当はこれむしろ当たり前のことなんだけど)
心がけを持った人間ならテンプレなんてなくても最初から自分で調べる努力してるから。
514デフォルトの名無しさん:2007/03/21(水) 21:49:12
>>512
あそこは正直どうなのってソース多いからなあ
515デフォルトの名無しさん:2007/03/21(水) 21:51:08
まあ大概の質問は
C# <キーワード>
でぐぐれば答えが出てくる
516デフォルトの名無しさん:2007/03/21(水) 21:59:46
出てきたら、ここに書き込んでやれ。
517デフォルトの名無しさん:2007/03/21(水) 23:21:57
たしかに度本のソースは良くないよな。
情報はいいけどな。
518デフォルトの名無しさん:2007/03/21(水) 23:23:31
俺もコピペプログラマには向かないと思うね。
内容を理解して使う分にはいいサイトだと思うんだけど。
519デフォルトの名無しさん:2007/03/21(水) 23:30:46
Tips紹介してるコードに向かって「どうなの」も糞もないと思うけど
俺的には>>514みたいな「背伸びクン」こそどうなのだよw

朝日新聞を否定すれば賢くなったと思う馬鹿と共通するメンタリティだよ
520デフォルトの名無しさん:2007/03/21(水) 23:32:34
田舎なので読売と地方紙しかないよ。
521デフォルトの名無しさん:2007/03/21(水) 23:32:47
どぼんはともかく、朝日新聞をありがたく受け入れるのはアホだけだろw
522デフォルトの名無しさん:2007/03/21(水) 23:32:55
そうだな。
「賢い人は朝日新聞を否定する」
が正解だから。
523デフォルトの名無しさん:2007/03/21(水) 23:42:54
asahiパソコンってまだあるのか?
と思ったらやっぱ休刊。
524デフォルトの名無しさん:2007/03/21(水) 23:57:06
>>515
こんな感じ?

c#  年金 の検索結果のうち 日本語のページ 約 114,000 件中 1 - 10 件目 (0.15 秒)

c#  イケメン の検索結果のうち 日本語のページ 約 31,000 件中 1 - 10 件目 (0.24 秒)

c#  東国原知事 の検索結果のうち 日本語のページ 約 266 件中 1 - 10 件目 (0.22 秒)
525デフォルトの名無しさん:2007/03/22(木) 00:02:08
C# 完全数はいくつあるのですか?
526デフォルトの名無しさん:2007/03/22(木) 08:32:40
そんなことより、.NET のつぼは閉鎖?
527デフォルトの名無しさん:2007/03/22(木) 10:36:40
マウスドラッグでリサイズできるTextBoxをつくるには、どうしたらいいのでしょうか?
528デフォルトの名無しさん:2007/03/22(木) 11:01:43
>>527
マウスイベントで座標見ればいいんじゃないの?
529デフォルトの名無しさん:2007/03/22(木) 12:52:04
>>527
splitter
530デフォルトの名無しさん:2007/03/22(木) 15:57:26
c#を思いっきり勉強してるのですが、ソフトウェア業界ではc#はどうなんでしょう
c#を利用したシステム開発というのはどのぐらい行われているのですか
職業プログラマでC#使って開発してる人いたら教えてください
531デフォルトの名無しさん:2007/03/22(木) 17:39:39
職業プログラマって、基本的に何でもやらされるから
特定の言語だけを習得すればいいってわけじゃなくて、その都度どんな言語にも対応出来ないといけない。

まぁ、基本的に、C/C++/C♯/Java、Web開発系なら、JavaScript/PHPが出来れば殆ど困らんが…

ちなみに、ここ一年で俺は13件の案件を請けたがC♯を使ったのはそのうちの7件だな

532デフォルトの名無しさん:2007/03/22(木) 19:22:55
C#使えたらVB.NETとJavaはすぐ使えるだろ
533デフォルトの名無しさん:2007/03/22(木) 19:32:43
C#使えたらVB.NETは使う必要ないだろ・・・
534デフォルトの名無しさん:2007/03/22(木) 20:03:34
仕事で指定されたら使わんと仕方ないやん?
535デフォルトの名無しさん:2007/03/22(木) 20:50:17
CとC#がわかれば他はだいたいわかるよな
536デフォルトの名無しさん:2007/03/22(木) 22:09:55
そこでVB6やらRubyやらの以来が
537デフォルトの名無しさん:2007/03/22(木) 22:10:10
VBAも結構使われているよ…
538デフォルトの名無しさん:2007/03/22(木) 23:06:11
>>530
世界的に見ると結構C#広まってるんだけど、
日本は i mode のせいでまだちょっと Java 優勢。
まあ、みんな言ってる通り、どっちか片方できたらもう片方もできるけど。
539デフォルトの名無しさん:2007/03/22(木) 23:50:06
>533
Excelとか操作するときにVB.NETが便利だよ。
540デフォルトの名無しさん:2007/03/22(木) 23:54:46
レイトバインディングなら JScript.NET 使うね
541デフォルトの名無しさん:2007/03/23(金) 00:03:14
>>536
Rubyはまだなくね?
事実ならうらやましい限りだ
542デフォルトの名無しさん:2007/03/23(金) 03:02:15
>>538
i-modeのJavaとC♯は、業種的にかなりセグメント離れてね?w
C♯って携帯電話で使えたっけ?

って思ったらWindows携帯なるものがあったな・・・w
543デフォルトの名無しさん:2007/03/23(金) 03:11:08
>>539
おれもそこだけVB.NET使うw
544デフォルトの名無しさん:2007/03/23(金) 17:27:21
一般の携帯にCLRが載る日は来るのかな
545デフォルトの名無しさん:2007/03/23(金) 17:35:24
xbox360とかzuneの展開次第じゃね?
546デフォルトの名無しさん:2007/03/23(金) 17:58:48
Xbox360にはもう載ってるな
547C ◆Cd0K8qiH8I :2007/03/23(金) 18:03:56
質問があります。
TimeSpanで取り出した日付が999日を超えたんですよ。

答えを、仮に1234日だとします。
この期間1234日を、Y年M月D日分と言う風に変換したいのですが、
良い方法はありませんでしょうか?
548デフォルトの名無しさん:2007/03/23(金) 18:12:48
年の定義は?
うるう年は考慮する?
549547:2007/03/23(金) 18:18:35
>>548
レスありがとうございます。
できれば、閏年も考慮したい所ですが、
初心者なので簡単な方法で結構です。

追伸:999日でなくても、365日超えたら年月日表示なんだよね。(自分つっこみ)
550デフォルトの名無しさん:2007/03/23(金) 18:32:42
Calenderを使えば?
551デフォルトの名無しさん:2007/03/23(金) 18:34:48
>>550
どういう風に?
552デフォルトの名無しさん:2007/03/23(金) 18:48:30
うるう年とか気にするならTimeSpanといえども基点の年月日は必要だからな
1年を365日固定にするなら、そのまま日数を365で割ればいいのでは
553547:2007/03/23(金) 19:36:54
>>552

そうですか、年月日での期間の表示は、簡単に出来るものじゃぁないんですねぇ。
なんか、MSならC#なら初心者向けに、ありそうだったんですけどねぇ。

地道に、がんばってPGで組んでみます。
ありがとうございました。
554別件:2007/03/23(金) 19:38:53
DateTimeについて質問です。
StringにするとYYYY/MM/DDになるのですが、
これを、和暦(平成)年号で表示するにはどうしたら宜しいでしょうか?
555デフォルトの名無しさん:2007/03/23(金) 19:39:47
>>547
良い方法とか悪い方法とかじゃなくて、仕様に沿った変換をしないと「バグ」ってことになるよ。

たとえば期間で「1年間」とかいうのは「次の年の同じ日(の前日)」までを指すことが多いし、
「1ヶ月間」とは「次の月の同じ日(の前日)」を指すことが多い。
こういう仕様の場合には、開始日が分からない限り日数と1ヶ月間などを変換することはできない。
556デフォルトの名無しさん:2007/03/23(金) 19:44:21
>>554
DateTime.ToLongDateString
557デフォルトの名無しさん:2007/03/23(金) 19:46:38
TimeSpanはTickをもってるんだから、
DateTimeへの変換できるやん
年月日への変換は簡単に出来るだろ
(基準は考える必要があるだろうけど)
558554:2007/03/23(金) 19:46:52
すまん和暦っていうのを見落としてた
http://www.atmarkit.co.jp/fdotnet/dotnettips/034wareki/wareki.html
559558:2007/03/23(金) 19:47:25
554→556
560デフォルトの名無しさん:2007/03/23(金) 21:11:58
>>553
それは言語やクラスライブラリの問題ではなく、暦法そのものの問題だよ。
だから、「初心者向けの簡単な解決」なんてものは、このスレの範疇を超えてるよw

とりあえずグレゴリオ暦を前提にしていえば、月の長さは毎月違うし、年の長さも違う場合があるんだから、
単純に「○○日は○○年○○ヶ月○○日」なんて変換できないのはわかるよね。
あなたの考えている年月日の定義がわからないことには、解など提案のしようがないわけ。
561デフォルトの名無しさん:2007/03/23(金) 21:16:14
>>550
俺も前よく間違っていたんだけど、"calendar"ね。
562デフォルトの名無しさん:2007/03/23(金) 21:45:01
>>547
int O = 元の日数;
int Y = (int)O/365.25636;
int M = (int)(O-Y*365.25636)/(365.25636/12);
int D = O-Y*365.25636-M*(365.25636/12);
563デフォルトの名無しさん:2007/03/23(金) 22:42:34
>>562
さあ、数ある年の定義の中から恒星年を選んだ理由を聞かせてもらおうか。
564デフォルトの名無しさん:2007/03/23(金) 23:54:58
>>563
他の定義を選んでもいいよ。
565デフォルトの名無しさん:2007/03/23(金) 23:57:19
で、理由は計算しやすいから。
566デフォルトの名無しさん:2007/03/24(土) 00:59:34
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Creat("http://www.yahoo.co.jp") ;
HttpWebResponse myRes = (HttpWebResponse)myReq.GetResponse() ;

myWebBrowser.DocumentStream = myReq.GetResponseStream() ;

このようにhttpリクエストで得たリソースをそのままwebに表示しても何も表示されないのですが、
これはエンコーディングしてないから表示できないということですか
567デフォルトの名無しさん:2007/03/24(土) 01:05:15
DynamicMethodとDelegateって何が違うんですか?
DynamicMethodだと、Delegateをやたらめったらややこしくしたようにしか
見えないんですが…
568デフォルトの名無しさん:2007/03/24(土) 01:10:00
>>567
や、根本的に別物だが。
デリゲートは動的に呼び出すメソッドを差し替えるためのもの。
DynamicMethod は動的にメソッドを作り出すためのもの。
569デフォルトの名無しさん:2007/03/24(土) 02:38:28
navigateメソッド使わん理由は何
570デフォルトの名無しさん:2007/03/24(土) 10:20:09
あ〜
<br>とか日本語を含んだHTMLからXmlDocumentを作りたくて、
IHTMLDocument2のドキュメントのノードを一つづつ読んで、
XmlNode作ってたんですが、IHTMLDocument2側のノードのスキャンがめちゃくちゃおそい。

なんか、いい手はないですか?
571デフォルトの名無しさん:2007/03/24(土) 10:24:45
ぜんぶまとめて読め
572デフォルトの名無しさん:2007/03/24(土) 10:26:21
自分でXMLを解析するアルゴリズムを作成してプログラムでスキャンする
573デフォルトの名無しさん:2007/03/24(土) 16:02:21
>>567
DynamicMethodに限らずSystem.Reflection.Emit系は,
分らなければ分らないままでも全くおk
Delegateを理解して使いこなすのは必須
574デフォルトの名無しさん:2007/03/24(土) 16:30:21
delegate使ってマルチスレッドやってるんですけど、
debugビルドで別スレッドから別スレッドのコントロールを操作すると、try〜catchにひっかかってしまいますけど
あれは、問題ない(そのスレッド以外そのコントロールを操作し得ない)と分かってる場合、無視しても良いんですよね?
何か強制的にcatchされないようにするための方法はありませんか?

同期処理を取る方法がありますけど、コードが複雑になるので手抜きをしたいのです。
575デフォルトの名無しさん:2007/03/24(土) 16:32:25
CheckForIllegalCrossThreadCalls = false;

ただし、VS2005以降な
2003とかだと無いので、どうすれば良いかは知りません。
576デフォルトの名無しさん:2007/03/24(土) 16:38:27
それ以前によく574の日本語が理解できるな。
感心しちゃうよ。もちろん嫌味だけど。
577デフォルトの名無しさん:2007/03/24(土) 16:49:33
日本語でおkな文章でも、要点さえおさえれば言いたい事は把握出来る。

・マルチスレッド
・別スレッドのコントロールを操作
・自己責任でスレッドセーフ(のつもり)
・debugビルド
・手抜きしたい

ここまで来れば経験のあるPGなら何がしたいかわかる。
PGやってると、周りは日本語がまともに出来ないやつが8割なんで慣れるだろ。
インド人なんてもっとわかんねぇよ・・・orz
578デフォルトの名無しさん:2007/03/24(土) 16:57:42
じゃああれだ、「問題があることがはっきりしている」から例外が発生してるのに
「問題ないと分かってる」とはどういう意味か俺に解説してみてw
579デフォルトの名無しさん:2007/03/24(土) 16:59:02
インド人を右に!!
580デフォルトの名無しさん:2007/03/24(土) 16:59:26
そんなの俺らの責任の範囲外だろ
本人がそうだと言ってるんだから、そうなんだ。
俺は本人の意図に沿った返答はした。後は知らん。
581デフォルトの名無しさん:2007/03/24(土) 16:59:41
>>578
それ本気で言ってんの?
582デフォルトの名無しさん:2007/03/24(土) 17:02:44
.NETの例外処理ってそんなに賢くないよ。
自前でmutexやセマフォやってても、固定で例外出す。
あれ単純に局所的にコード見てるだけで、全体の処理なんて確認してるわけが無い。
例外発生も、あれはワザと発生させてるものだし
583デフォルトの名無しさん:2007/03/24(土) 17:09:28
>>581
逆の言い方をすれば、コントロール操作してるメソッドの呼び出しが
デリゲート経由だろうがなんだろうが「問題」がなければ例外なんて起こらないでしょ。
こんなの当たり前じゃん。
584デフォルトの名無しさん:2007/03/24(土) 17:10:36
>>583
コントロールを別のスレッドから触ったら問題がなくても例外が出る。
585デフォルトの名無しさん:2007/03/24(土) 17:12:33
>>584
馬鹿でしょ君。
そんなの当たり前ジャンw
だからここでいう「問題」とは、「コントロールを別のスレッドから触ること」
586デフォルトの名無しさん:2007/03/24(土) 17:12:48
何この初心者率の高さ
学生暇なんか?
587デフォルトの名無しさん:2007/03/24(土) 17:14:09
>>585
それなら俺とお前で「問題」の認識の仕方が異なっていただけで、どちらも間違ってはいなかったということだ。
588デフォルトの名無しさん:2007/03/24(土) 17:15:36
よくわからん自己正当化だなそれ。。
589デフォルトの名無しさん:2007/03/24(土) 17:17:39
素直にInvokeすりゃいんじゃね?
590デフォルトの名無しさん:2007/03/24(土) 17:28:24
最初から『問題』の定義なんてわかってたろうに
馬鹿がごまかしてるだけのようにしか見えん。
591デフォルトの名無しさん:2007/03/24(土) 17:29:36
>>578からは、どう見てもそういう風には取れません。
どう見てもごまかしです。本当にありがとうございました。
592デフォルトの名無しさん:2007/03/24(土) 17:40:47
Microsoft Visual C# .NET Standard Version 2003 アカデミックパック
ってどこも在庫切れでなんですが、私今回出品しようと思ってるんです。
幾らくらいなら買いますか?

の質問をした者です。
覚えてますでしょうか?あれから価格を\1000にして出品しましたところ
買っていただく事に成功しました。
世の中わからないもんですね。
593デフォルトの名無しさん:2007/03/24(土) 17:42:55
594デフォルトの名無しさん:2007/03/24(土) 17:50:13
2003のコンパイルバージョンが必要になったから買ったんじゃないか?
2005だとランタイム2.0用が出力されるから
595デフォルトの名無しさん:2007/03/24(土) 17:50:52
>>593
思慮の浅い方ですね
使いたい人がいるから購入されたんです
使い道はどんなものかわからないですが需要があったんです
私が押し売りしたわけでもないのに短期間のなかで売れたという事の何処に問題があるでしょうか?
596デフォルトの名無しさん:2007/03/24(土) 17:52:45
>>594
2005でも.NET1.xでのコンパイル出来るぞ。
597デフォルトの名無しさん:2007/03/24(土) 17:53:29
>>595
何いちいちマジレスしてるんだ。
そもそもスレ違いだし、だんだん釣りに見えてくるぞ
598デフォルトの名無しさん:2007/03/24(土) 17:56:11
コンパイルバージョンじゃないならアカデミックライセンスで2005へのバージョンアップを買うためか?
599デフォルトの名無しさん:2007/03/24(土) 18:00:12
>>597
うるせーハゲ
600デフォルトの名無しさん:2007/03/24(土) 18:03:51
>598
eVCとか2005Expressあたりからのバージョンアップお勧め。
通常版を売る気がないとしか思えない。
601デフォルトの名無しさん:2007/03/24(土) 18:04:22
所詮IDE
エディタに毛の生えたもんだろ。コンパイラとは別なんだから単なる編集ツールなわけだ
となると出力されるバイナリとかの問題ではない。

そう、エディタの使い勝手の問題だ
きっと2005のエディタ部分が嫌いで2003を欲しがってたんだろう
602デフォルトの名無しさん:2007/03/24(土) 19:19:33
VisualStudio2005を使ってるのですが
エディタに行数を表示したいんです。
設定教えて頂けませんでしょうか。
603デフォルトの名無しさん:2007/03/24(土) 19:25:11
そういうのはオプションにあるだろ
ツール - オプション - テキストエディタ の C/C++ の全般に、行番号という項目あるべ
604デフォルトの名無しさん:2007/03/24(土) 19:39:49
今まで、不要な参照名前空間を外す作業を普通に行ってましたが、
コーディング上、キレイではないという点以外で、
不要な参照名前空間があることで どのようなデメリットが生じるのでしょうか?

参照している名前空間はガベージコレクションの対象にならない。
という勝手な推測をしてますが、実際どうなんでしょうか。
よろしくお願い致します。
605デフォルトの名無しさん:2007/03/24(土) 19:52:22
>>604
/reference から使ってないのを外すってことか?
それともusing .. で使ってないのを削除するってこと?
606デフォルトの名無しさん:2007/03/24(土) 19:55:50
>>605
詳細を書いてなくて申し訳ありません。

/reference から削除する場合と、
using文を削除する場合、
両方ともデメリット等を教えて頂けたらありがたいです。
よろしくお願い致します。
607デフォルトの名無しさん:2007/03/24(土) 20:08:58
usingディレクティブは名前解決に利用されるだけで内部的な処理には影響しないよ。
/referenceに関しても同じ。というかどうやら試した限りでは使われない参照はコンパイル時に自動的に削除されるっぽい。
608デフォルトの名無しさん:2007/03/24(土) 20:30:07
かなり初心者な質問ですが、
値型、参照型、オブジェクト、とメソッドの引数の関係がイマイチわかりません

猫でもわかるC#という本では、オブジェクトそのものを直接渡すと自動でrefの引数になる、見たいな事が書いてあり、
例文では配列を使って説明していました。
ここで言うオブジェクトが参照型の変数全般を指しているのかな?とおもったら、
string型は値型のように処理されるそうです。

・・・つまり、new演算子を使用するデータ型の変数はrefってこと?
609デフォルトの名無しさん:2007/03/24(土) 20:35:02
値型もnewできる
610デフォルトの名無しさん:2007/03/24(土) 20:42:30
>>607
以前(当時はVS2003使ってたかも)は、コンパイル後にアセンブリの中を見ると
使ってない参照名前空間の情報が入ってたような気がしたのですが、
いま VS2005 でコンパイルしたところ、自動的に削除されてました。

レスありがとうございました。
611デフォルトの名無しさん:2007/03/24(土) 21:01:13
>>608
値型=スタックに確保されるため高速。引数ではrefを指定しない限りコピーが発生する。
参照型(オブジェクト)=ヒープに確保される。引数ではコピーは発生しない。

>string型は値型のように処理される
どういう点で?stringはオブジェクトそのものだけど。

というかrefという単語を誤用してるようだが
refは「引数として渡した変数をメソッドから変更できるようにするキーワード」であって
参照型だとかそういうのとは無関係。
612デフォルトの名無しさん:2007/03/24(土) 21:35:17

メソッドで引数を渡すと、refをつけない限り、コピーが渡される。

メソッド内で変数を変更しても呼び出し元の変数の値が変わらないのは、
このため。オブジェクトも同じ。

でもオブジェクトを渡すと変更が反映されているのでは?と思うかもしれない。
普段使っているオブジェクトは実際はオブジェクトの位置を記したもので、
引数として渡されるのはオブジェクトの位置をコピーしたもの。

うーん何を書いているのかわからなくなったなw
613デフォルトの名無しさん:2007/03/24(土) 21:40:32
>>612
じゃあ、refでオブジェクトを渡すと、オブジェクトの位置自体を変えられるの?
614デフォルトの名無しさん:2007/03/24(土) 21:43:19


  い い え
615デフォルトの名無しさん:2007/03/24(土) 21:44:50
オブジェクトは 値渡しでも参照渡しでも同じじゃね?
616デフォルトの名無しさん:2007/03/24(土) 21:44:58
ってことは、>>612の理論は間違い?
617608:2007/03/24(土) 21:51:03
  public void SampleMethod( int[] x )
  {
    int n = x.length・・・配列の個数をカウントする命令
    for ( int i ; i <= n ; i++ )
    {
      x[ i ] *= 2;
    }
  }

このメソッドを使うと、配列の要素がそれぞれ2倍になるらしいんです。
でも
  public void SwapMethod( string x, string y )
  {
    string z;
    z = x;
    x = y;
    y = z;
  }
とか書いても文字列は入れ替わらないらしいんです。ずっと何渡してもC#では
元の値(実引数)が変わらないと思ってたので
前者の要素が何で変わるのかわからなくて。
618デフォルトの名無しさん:2007/03/24(土) 21:56:59
>>612で合ってる
refで参照型の変数を渡すと,
「この変数に他のオブジェクトへの参照(位置)を代入してね」
っていう意味になる

>>617
public void SwapMethod(ref string x, ref string y )
これも上の話と同じ
619デフォルトの名無しさん:2007/03/24(土) 22:00:22
「他のオブジェクト」って何?何で他なの?
620デフォルトの名無しさん:2007/03/24(土) 22:09:09
>>617
stringは特別。仲間外れ。immutable。
つまりインスタンスは一度作られると変化しない。

配列はオブジェクト。参照型。


>>619

void Hoge( ref object obj )
{
 obj = new Hage();
}
ってのもできるってことかな? あんまりやらないけど
621デフォルトの名無しさん:2007/03/24(土) 22:10:58
>>620
stringがimmutableなのはここでは関係ないと思うぞ
622デフォルトの名無しさん:2007/03/24(土) 22:27:46
Stringは普通の参照型。特別でも何でもない。
オブジェクトの実体の中身を変更する方法がクラス側で用意されてないだけ。
623デフォルトの名無しさん:2007/03/24(土) 22:34:58
String str1 = "abc";// アドレス 0000
str1 = "def";// アドレス 0001
str1の参照先が0000から0001へ変更されただけ。
参照されない0000はGCで回収される。
StringBuilderは参照先を変更しないで文字列を扱うクラス
参照先のメモリ割り当てが気になるならこっちを使う
624デフォルトの名無しさん:2007/03/24(土) 23:05:40
まとめとしては、引数にクラスや配列を指定した場合、
1、アドレスの位置がコピーされる
2、メンバや要素を変更しようとするとアドレスをたどって実際に参照先のメモリの値を書き換える
3、結果的に、ちゃんと値が変更される
なので
>>608のSampleMethodは配列の要素を書き換えられるってことですかね?

つまりrefしないと参照先(c++のptr)を示した値は変えられないけど、
refなしで、実際の参照先の値は変えられるってことか
625デフォルトの名無しさん:2007/03/24(土) 23:05:57
ちょっとおたずねしますが
SystemInformation.CaptionHeight
これ自体プロパティなんだが、これを
public int PropTitleBarHeight
{
get
{
return SystemInformation.CaptionHeight;
}
set
{
titleBarHeight = value;
}
}
みたいに取得するのって変?
626デフォルトの名無しさん:2007/03/24(土) 23:12:47
別にプロパティでラップすること自体は全然構わないと思うが、
セッターとゲッターの先が違うのはすごい混乱を生むと思う。
627デフォルトの名無しさん:2007/03/24(土) 23:15:56
さんくす
628デフォルトの名無しさん:2007/03/24(土) 23:18:33
え、プロパティって戻り値に指定できるの!?
関数メンバを戻り値に指定できるの初めて知った・・・
629デフォルトの名無しさん:2007/03/24(土) 23:36:20
日本語でおk
630デフォルトの名無しさん:2007/03/24(土) 23:54:08
public static readonly int NOVALUE = -1;

int num = NOVALUE;

Console.WriteLine("num = {0}",num);

こんなコードなのですが、
num = 0
と出力されます。
何がおかしいのかさっぱりなので、教えてください。
631デフォルトの名無しさん:2007/03/24(土) 23:57:26
それだけじゃさっぱりだな
632デフォルトの名無しさん:2007/03/25(日) 00:00:20
readonlyで宣言した変数を、他の変数に代入すると
代入された値が0になるなんてことありますか?
633デフォルトの名無しさん:2007/03/25(日) 00:02:48
あんたの言ってる問題が発生し、かつコンパイルできる最小のコードを書いてくれ。
それだけじゃ、変数の名前が被ってることくらいしか思いつかん
634デフォルトの名無しさん:2007/03/25(日) 00:14:54
using System;
using System.Collections.Generic;
using System.Text;

namespace Sample
{

class Program
{
private static Program main = new Program();

public static readonly int NOVALUE = -1;

private Program()
{
int num = NOVALUE;
Console.WriteLine("num = {0}", num);
}

static void Main(String[] args)
{
main = new Program();
}
}
}
こんな感じです。
635デフォルトの名無しさん:2007/03/25(日) 00:18:55
こ、これわ・・・
636デフォルトの名無しさん:2007/03/25(日) 00:20:31
文字列処理で自作メソッドを作りたいのですが、そのような場合、
Stringクラスを継承したクラスを作ってその中にまとめておく、
という継承の使い方は間違ってますか?
637デフォルトの名無しさん:2007/03/25(日) 00:21:09
>>634
>public static readonly int NOVALUE = -1;

これが実行されるのは、

>int num = NOVALUE;
>Console.WriteLine("num = {0}", num);

これが実行された後。
638デフォルトの名無しさん:2007/03/25(日) 00:21:40
>>634
private static Program main ;// = new Program();
                  ^ 意味的にこっから後ろ余分だろ

NOVALUEフィールドにはinitonly属性がついてるが、
初期化される前に参照してしまってるので、-1に初期化することが出来なくなっている。
639デフォルトの名無しさん:2007/03/25(日) 00:23:04
staticコンストラクタがキーですよん
640デフォルトの名無しさん:2007/03/25(日) 00:24:35
>>634
NOVALUEが初期化される前に呼ばれてる。zero fillは
その前にされるので0になる
というかそのコード、2行出力するよね?0と-1で。
641634:2007/03/25(日) 00:25:02
なるほど、直してみます。ありがとうございます!
642デフォルトの名無しさん:2007/03/25(日) 00:28:08
ほほーこんなはまり方することもあるんだ。
勉強になるな。
643デフォルトの名無しさん:2007/03/25(日) 00:32:01
>>640
Main呼び出し
 .cctor呼び出し
  mainフィールド初期化
   .ctor()呼び出し
    NOVALUEフィールド初期化(最初の参照=default(int))
    NOVALUEの値を表示(=0)
  NOVALUEフィールド初期化(initonly属性がついているので無視される)
 .ctor呼び出し
  NOVALUEの値を表示(=0)

というわけで、0が二行表示されるはず
644デフォルトの名無しさん:2007/03/25(日) 00:44:16
>>636
そもそも String は sealed なので間違い以前だな
その文字列処理とやらが特定のクラスに結びついた処理ならそのクラスに実装すべき
そうでないならまあ適当に文字列処理クラスでも作れ
645デフォルトの名無しさん:2007/03/25(日) 07:15:35
質問です。

Vistaでは、プログレスバーとディレクトリ位置とが一体化したようなコントロールが多く見られますが
あのコントロールは.NETフレームワークに含まれているのでしょうか?
探したところ見つからないんですが…
また、ターゲットはWinXPも含めてるのですが、それらで実現出来ない場合サードパーティーでコントロールは用意されていますか?

646デフォルトの名無しさん:2007/03/25(日) 16:42:17
>>645
無い
自分でコントロール作れ
漏れなく俺が使ってやるぞ
647デフォルトの名無しさん:2007/03/25(日) 17:29:30
>>522
朝日はなんで不買運動されないんだろね。
648デフォルトの名無しさん:2007/03/25(日) 17:31:06
VistaのMS作成になるソフトは全部 .NET アプリなのでしょうか?
649デフォルトの名無しさん:2007/03/25(日) 17:36:37
いいえ
650554:2007/03/25(日) 17:57:43
>>558

 ありがとうございました。
解読するのに時間が掛かりましたが、
教えて頂いたサイトを参考にして、
やっと和暦に変換する事が出来ました。

本当に感謝いたします♪
651デフォルトの名無しさん:2007/03/25(日) 17:59:24
質問です

C#で外部dllを使って通信する場合にC#側で参照設定やライブラリのインポートが必要でしょうか?
C#2005EEでlocalhostに建てたサーバーからdll経由でデータを取得するアプリを作っていますが、
dllのソースで確認したところホストの指定にlocalhostを指定するとwinsock2のgethostbynameメソッドで想定してない値が返り。
また、127.0.0.1を指定するとソケットの作成に失敗します。
dll自体は信頼性があり、このdllを使う他人のプログラムでは正常に動作しています
652デフォルトの名無しさん:2007/03/25(日) 18:17:27
>>646
あらら…
てっきり、あれは標準化されたコンポーネントだと思ってました。

と言う事で作ってみます。
どうもありがとうございました。
653デフォルトの名無しさん:2007/03/25(日) 18:21:42
あのパス表示コントロールは慣れると便利だね
ファイルパスに限らずツリー構造をたどるときにいろいろ使えそう
654デフォルトの名無しさん:2007/03/25(日) 18:22:50
vista持ってない俺にkwsk
655デフォルトの名無しさん:2007/03/25(日) 18:34:52
>>651
外部dllというのをちゃんと説明しろよ。
COMなのかOSやC++のDLLなのか、.NETのアセンブリなのか。
656デフォルトの名無しさん:2007/03/25(日) 18:35:59
Windows Vistaのユーザー・インターフェイス − @IT
http://www.atmarkit.co.jp/fwin2k/vista_feature/02overview/02overview_03.html
657デフォルトの名無しさん:2007/03/25(日) 18:37:42
Vistaは嫌いだが、あれはVistaでほめれる数少ない良い部分だ。
プログレスバー+アドレスバー+エクスプローラーバーの融合みたいな
凄く省スペースで、なおかつ理にかなったシステムだな。
658デフォルトの名無しさん:2007/03/25(日) 19:59:15
>>655
説明が足らずすいません。
外部dllはC++で記述されていますが、COMや、.NETアセンブリではありません。
659デフォルトの名無しさん:2007/03/25(日) 20:00:33
>>658
それじゃ、単にP/Invokeの書き方が悪いのかと
660547:2007/03/26(月) 01:24:39
>>552,>>555,>>557,>>560様各位の神々へ

お返事おそくなりました。
やっぱり、ちゃんとしないとダメですね。
反省しております。
でも、やはりチャンと計算で出したいと思います。

仕様が決まりましたので報告します。
基準は、誕生日になりました。
それで、「生後Y年M月D日」を求めたいだけです。
私では短くて簡単なPGが、思いつきません。

よろしくお願いもうしあげます。

>>562様のPGは、自分のPGと比べて見て
短くて簡単なのに驚きました。
私、IF文の羅列でした。お恥ずかしい・・・。
IF(365でわって余ったら)・・・IF(30日であまったら)・・・って感じで
色んな意味でダメPGです。
661デフォルトの名無しさん:2007/03/26(月) 01:42:40
if少なくて短ければ常に良いコードかというと、そうでもないよ
評価の基準も色々あるし
662デフォルトの名無しさん:2007/03/26(月) 02:23:11
>>660
誕生日とある日付でしょ?なんでTimeSpanが出てくるのか判らん。
DateTimeでいいんじゃないの?
663デフォルトの名無しさん:2007/03/26(月) 02:25:59
時間差ってシリアルで計算するほうが早かったんじゃなかったっけ?
664デフォルトの名無しさん:2007/03/26(月) 02:33:23
すまん書いてみたらTimeSpan使うわw
韓も考えず書いたけどコレじゃ駄目なの?

DateTime birth = DateTime.Parse(birthDay);
DateTime target = DateTime.Parse(targetDay);
TimeSpan ts = target - birth;
Console.WriteLine(new DateTime(ts.Ticks).ToString("生後y年M月d日"));
665547:2007/03/26(月) 11:36:53
>>664
   ありがとうございます。
   自分のPGより段違いに短くてスマートなPGで、感動しております。
   しかも、
   >韓も考えず書いたけど
   ↑手早くさらっと書けるところが素敵でした。
   さっそく、自分のPGに変換してみました。下記がそうです。

// 生後を求めるプログラム 
// 生後 = 今月のカレンダーでクリックした日付”書類上の日で本日とは限らない為” − dateTimePickerで入力した誕生日
TimeSpan dateTimeSpan = monthCalendar_Today.SelectionStart - dtpBirthday.Value;
// ラベルに表示する。
label_TimeSpan.Text = new DateTime(dateTimeSpan.Ticks).ToString("生後y年M月d日です。");

   しかし、これだと同日にすると「生後1年1月1日です。」となってしまいます。
   このすごい誤差を直すにはどうしたら良いのでしょうか?
666660:2007/03/26(月) 11:51:53
>>661さん
  励ましのお言葉ありがとうございます。
  お蔭様で、もう少し頑張れそうです。

>>663
  助言ありがとうございます。
  素人には、ミリ秒単位のスピードより
  分りやすくて簡潔なPGが嬉しいです。
667デフォルトの名無しさん:2007/03/26(月) 11:55:59
PGPG言ってるのがすごい気になる
こういうときはコードと呼ぶのが普通
668デフォルトの名無しさん:2007/03/26(月) 11:56:51
ピックガード
669660:2007/03/26(月) 12:05:10
>>667
 コード・・・そうなんですか・・・(^^;
いつも、プログラミング(PG)って言ってました。

どうも、コードと言うと機械の電気のコード線を
イメージしてしまいます。(笑)

>>668
???
670デフォルトの名無しさん:2007/03/26(月) 12:06:16
ぬるぽ
671デフォルトの名無しさん:2007/03/26(月) 12:41:05
ぬるりが好きです。でもCOMExceptionはもっと好きです。
672デフォルトの名無しさん:2007/03/26(月) 13:44:06
if文の書き方で…

旧:
if (hoge() == true)
{
hogehoge処理
}

新:
if (hoge())
{
hogehoge処理
}

今まで「旧」のように記述していたのですが
有識者に「新」のように記述汁と言われますた。
どっちも同じ結果になるのですが…
アセンブラに展開したときに無駄が出るのでしょうか?
ご教授願います。
673デフォルトの名無しさん:2007/03/26(月) 13:53:16
全く同じ意味だから違いは消えてなくなる
674デフォルトの名無しさん:2007/03/26(月) 13:54:48
>>672
別にどっちでもいいと思うけど。
メソッド名がisHogeHogeみたいに述語を表すなら==trueを書くのに違和感あるけど、そうでないなら敢えて書いたほうが可読性があがるケースもあるし。
アセンブラレベルではどうせどちらの場合でも0と比較してJZとかそんな感じだと思うから、特に違いは出ないかと。
675デフォルトの名無しさん:2007/03/26(月) 13:56:02
>>672
C#ではそうじゃないけど、
他の言語だとfalse(に相当するもの)以外のすべての値が真に解釈されることが多い。
なのでtrueと比較するのはバグの元になりやすくてあまり良い習慣ではない。

あと、((n == 100) == true) とか書かないしね・・・。
676デフォルトの名無しさん:2007/03/26(月) 14:18:38
if 文の()の中はtrueかそうでないかを調べてるのに
それをまたわざわざ trueと比較するのは馬鹿げてる
677デフォルトの名無しさん:2007/03/26(月) 15:06:44
hoge() == true
hoge() != true
hoge() == false
hoge() != false
678デフォルトの名無しさん:2007/03/26(月) 17:53:28
static bool IsTrue(bool hoge){return hoge;}
679デフォルトの名無しさん:2007/03/26(月) 17:55:08
if(IsTrue(hoge()) == true) { }
680デフォルトの名無しさん:2007/03/26(月) 18:00:19
hoge()
!hoge()
//hage
681デフォルトの名無しさん:2007/03/26(月) 18:04:36
意味がわかりやすいほうの書き方をすればいいだけのことよ
682デフォルトの名無しさん:2007/03/26(月) 18:30:20
でもIsTrue()じゃないけど、boolを返す関数はそれを現す名前だとif文が美しくなるな
683デフォルトの名無しさん:2007/03/26(月) 18:40:54
でもメンバだとthis.とかClassName.とかつけたくなるから
醜くなって困る
684デフォルトの名無しさん:2007/03/26(月) 18:46:35
this.IsSelected とか見やすいでしょ。
オブジェクトの役割とメソッド/プロパティの名付けがマッチしてればクラス名修飾しても大丈夫。
必ずしも上手くいくけーすばかりじゃありませんけどね。
685デフォルトの名無しさん:2007/03/26(月) 18:47:50
俺の英語力でつけたメソッド名ほど怪しいものはない
686デフォルトの名無しさん:2007/03/26(月) 18:53:42
You.WaShock
687デフォルトの名無しさん:2007/03/26(月) 19:01:05
MSのルールでは,値がboolのプロパティやメソッドの名前を
Is○○○,Can○○○,Has○○○にするのは
取得専用の場合だけみたいだな
688デフォルトの名無しさん:2007/03/26(月) 19:21:34
>>665
if (monthCalendar_Today.SelectionStart.Date == dtpBirthday.Value.Date) {
Console.WriteLine("生後0年0月0日だバカ野郎");
return;
}
689デフォルトの名無しさん:2007/03/26(月) 20:15:19
流石にきたないな
690デフォルトの名無しさん:2007/03/26(月) 20:27:29
上級者っていうか、あるていど以上のレベルの人は、
if (・・・==true) みたいな比較はしないな。

やってると激しく下手に見える。
691デフォルトの名無しさん:2007/03/26(月) 20:31:10
bool なんだから直接 if に放り込めばいいのにね。
692デフォルトの名無しさん:2007/03/26(月) 20:32:58
trueかどうかを判定するのに == true なんてしてたら、
if (...)
if (... == true)
if ((... == true) == true)
てな感じで切りがないからね。
693デフォルトの名無しさん:2007/03/26(月) 23:47:13
まぁCからの慣れでキモいというのはある。
けど、式の中の型を意識していないコードにも見えるから
その点でも嫌い。
694デフォルトの名無しさん:2007/03/26(月) 23:51:36
ifを封印してswitchを使えば一番明示的かも
695デフォルトの名無しさん:2007/03/27(火) 00:00:58
そこで三項演算子 A?B:C
696デフォルトの名無しさん:2007/03/27(火) 00:03:41
switchもコンパイルすればifと同じ処理を繰り返すけど。
プログラムコードの可読性を考えると必然とどの判定式を
用いるべきかは回答はでる。
ifは式の結果のbool型を判定する句であることはプログラマなら必然と理解している。
if(式 == true)は冗長なコードであることは言うまでもない。
697デフォルトの名無しさん:2007/03/27(火) 00:10:07
> switchもコンパイルすればifと同じ処理を繰り返すけど。
IL レベルでもマシン語レベルでも、if の繰り返しよりちょっとだけ効率的にやってくれる。
698デフォルトの名無しさん:2007/03/27(火) 00:14:55
void Hage(bool a)
Hage(hoge() == true);
if(hoge() == true)もこれと同じようなもんだろ
699デフォルトの名無しさん:2007/03/27(火) 00:33:43
ごめん、おれVB厨なんで必要ないと分かっていてもつい==trueってやりたい衝動に駆られる場合があるw
なんかその方が明示的に感じられる場合があるんだよね
700デフォルトの名無しさん:2007/03/27(火) 01:23:10
明示ってのはあいまい性があったり
微妙なルールを意識しないといけないときや
省略形で分かりにくいとき
それを「明示」すると言うのだよ。
== true
は単に無駄に冗長に記述を増やしてるだけで、なにも明示していない。
701デフォルトの名無しさん:2007/03/27(火) 01:26:37
まあべつに論理的な冗長性が増してるだけであってそれ以外のデメリットは特にないから
書きたいように書けばいいと思うが。
702デフォルトの名無しさん:2007/03/27(火) 01:50:15
慣れてくるとめんどくさくなって=trueを書かなくなるから。
703デフォルトの名無しさん:2007/03/27(火) 02:23:12
たとえば、apacheとかMySQLあたりの、世間で評価されてるソフトとか、
↓こういうので紹介される定番の良書に掲載されてるコードとか、

プログラミングの良書100冊!
http://itpro.nikkeibp.co.jp/article/COLUMN/20060127/228096/

ほぼ例外なく、if (・・・==true)みたいな書き方はしてないと思われ。

上級者までいかなくて、ちょっとしたレベルの人からみても、
if (・・・==true)みたいな書き方は、初心者感が漂うコードになっている。
704デフォルトの名無しさん:2007/03/27(火) 08:25:38
それは単にbool型が存在しないから、という理由だけのような気もしますが。。
cだと定義されているのはfalseだけだし。
705デフォルトの名無しさん:2007/03/27(火) 10:43:51
C#のifの()内はboolしか入らないからboolであることは明らか
なおさら必要なし
706デフォルトの名無しさん:2007/03/27(火) 10:47:52
true演算子を使えばbool型以外のも入る
707デフォルトの名無しさん:2007/03/27(火) 11:26:21
C#.Netで親フォームから子フォームを表示し、親フォームを消して子フォームだけを残したいんですけど、
どうやったらできますか?
現在親フォームを消すと子フォームも消えます。
708デフォルトの名無しさん:2007/03/27(火) 11:33:42
>>707
visible=falseして残しておく。
709デフォルトの名無しさん:2007/03/27(火) 11:48:47
VC#EEが重い、SharpDevelopも重い、VC#2003が一番軽い、でもVC#EEを使う
710デフォルトの名無しさん:2007/03/27(火) 11:59:31
>>708
レスどうもありがとうございます。
「親フォームをアンロードし子フォームを表示する」という課題なのです。
本来これはVB.NETの課題だったのですが、C#でVB.NETの課題をやってくれと
指示があったのでやっています。

なんとなくMainをいじったらできそうな気がしてきましたが、なんかトリッキー
な感じが(@@;

static void Main()
{
  while(true)
  {
    Application.Run(new frmMain());
    if(blnCloseFlag)
      break;

    Application.Run(new frmChild());
  }
}
ちなみに下が今つまづいているいている内容です
「親フォーム「XXXボタン」が押されたら、子を初期状態で表示、親フォームをアンロードする。」
「子フォームが閉じられたとき、親フォーム開き、子フォームでの入力を親フォームに反映させて子フォームをアンロードする」

グローバル変数を使うしかないんですかね…。
711デフォルトの名無しさん:2007/03/27(火) 12:03:49
アンロードってどうしろっていう事だろう
712デフォルトの名無しさん:2007/03/27(火) 12:32:34
透明なFormに子Formを2つぶら下げてそれを切り替えるとか?
713デフォルトの名無しさん:2007/03/27(火) 12:40:36
親/子って言ってるし、動き的には>>708が一番それっぽい気がする。
714デフォルトの名無しさん:2007/03/27(火) 12:51:48
課題なんだからその通りにしないとまずいんじゃね?
715デフォルトの名無しさん:2007/03/27(火) 12:55:27
VB6のフォームがそういう作りで、不可視のウインドウが背後にある。
そのせいでタスクマネージャから最大化や最小化すると得体の知れないことになった。
716デフォルトの名無しさん:2007/03/27(火) 12:56:25
ほんなら「アンロード」せんと
717デフォルトの名無しさん:2007/03/27(火) 12:57:30
「アンロード」が完全に閉じて破棄することを意味するならこんな感じか?
Form parent = new Form();
parent.FormClosed += delegate{
 Form child = new Form();
 child.FormClosed += delegate{
  parent = new Form();
  parent.Text = child.Text;//更新反映
  parent.Show();
  };
 child.Show();
 };
parent.Show();
Application.Run();
718デフォルトの名無しさん:2007/03/27(火) 15:21:18
どうせ課題出したほうもよくわかってないという落ちと見たw

ココで言われているように親子がどうのとかアンロードの意味とか関係なくて
ただフォームが切り替わればいいんじゃないか?ww



719デフォルトの名無しさん:2007/03/27(火) 16:24:02
VB6で「フォームをアンロードする」って言ったら,
.NETのDisoseやCloseに相当するの?
720デフォルトの名無しさん:2007/03/27(火) 16:40:20
C♯には、deleteに相当するのが存在しないのが気持ち悪い。
malloc()〜free()
new〜delete
は必ずペアで書くように自分を教育してきたからなぁ…。

ガベコレはいつ開放するか分からんのがちょっとな・・・。

721665:2007/03/27(火) 16:51:43
>>ALL
 なんとか、自分の力で出来ました!!
 しかし、皆さんのご助力が無ければ、出来なかったです。
 改めて御礼申し上げます♪

 結果的に、長いコードになったので、生誕を求める事だけを
関数にして出させる事になりました。
なんとか、1日の誤差も無く動いているようです。
はじめてのC#で、ただ生後を求めるだけというのに
こんなにも苦労しましたが、
皆様のお陰で無事に出来て楽しかったです。

蛇足ですが、>>665のやり方だと生後1日後でも誤作動になるので
参考になりませんでした。

if文は、素人の私も=trueは使わないですね。
フォームって親消しちゃったら、個人的に不安でたまりません。
722デフォルトの名無しさん:2007/03/27(火) 16:54:57
蛇足をつけるなw
723デフォルトの名無しさん:2007/03/27(火) 16:55:44
>>720
perlもrubyもlispもあれもこれもみんなGCあるよ・・・
724デフォルトの名無しさん:2007/03/27(火) 16:58:09
>>720
shared_ptrとかのスマートポインタ使いまくってた俺はその辺は全然どうでもいいが
const引数/constメソッドが無い・switchフォールスルー怒られる・プリプロセッサが何か全然違う
あたりはかなり戸惑った。と言うか戸惑ってる。
725デフォルトの名無しさん:2007/03/27(火) 17:36:04
正直プリプロセッサのファイルと行番号は欲しがった。
726デフォルトの名無しさん:2007/03/27(火) 18:06:26
プロパティ名を展開してくれるマクロもあるといいな
INotifyPropertyChanged で文字列でプロパティ名を指定するのめんどい
727デフォルトの名無しさん:2007/03/27(火) 18:06:38
constまわりはなんとかしてほしいな
コンパイル時の命令でしかないんだっけ?
728デフォルトの名無しさん:2007/03/27(火) 18:10:43
C++やってろよ
729デフォルトの名無しさん:2007/03/27(火) 18:57:03
子フォームのインスタンス保持してるのが親フォームだと消えるのは当たり前だ。
730デフォルトの名無しさん:2007/03/27(火) 20:23:37
組み込みC野郎です。
今回どっとネットC#でRS232CからPCに入力したデータを、自作クラスでデコード
して、必要な情報を画面に出力するようなツールをつくっています。
ウインドウズのイベントが理解できません。
コード上では、イベントのリッスンは、デリゲート経由で行うことはわかるのですが、
イベントの発生後、(イベントキューにたまるとして、)
誰が、いつ、実際にデリゲート(関数ポインタ)経由で呼び出し先関数にジャンプするのですか?

731デフォルトの名無しさん:2007/03/27(火) 20:26:00
茶色い小人さんが、気が向いたときに、気が向いたところへ
732730:2007/03/27(火) 20:32:21
たとえば、次のようなことをやってみてください。
メインフォームにボタンを2つつくり、
ひとつのボタンイベント関数内に、無限ループを組みます。
もうひとつのボタンイベントは何でもいいです。
そうすると、無限ループを組んだほ宇野ボタンをクリックすると、
アプリからの応答がなくなるのです。まったく信じられません。
マウスが動くところを見ると、割り込みイベントは発生している
用ですが、もうひとつのボタンのイベントをりっすんしていないのです。
application.doeventを無限ループ中に入れると、たまにもうひとつのボタンが反応します。
733デフォルトの名無しさん:2007/03/27(火) 20:33:40
>>704
いや、そういう理由じゃない。
ブール値のある言語でも、ブール値の定数と比較なんてことはしない。
Cでも、わざざXX_TRUE、XX_FALSEとか定義してあっても、定数との比較はしてない。
734730:2007/03/27(火) 20:37:20
処理と、表示の処理スレッドを別々に作れというのはわかりますが、
動作がどうなっているのかわからないのでいらいらします。
あれかな、ひとつのスレッド内は、あるイベント関数から抜けると、イベント待ちうけに
はいるのかな?マルチタスクOSでいうpendに。
735デフォルトの名無しさん:2007/03/27(火) 20:41:36
>動作がどうなっているのかわからないのでいらいらします。
じゃあ勉強すりゃいいじゃん。
掲示板でゼロから聞くおつもりか?
736730:2007/03/27(火) 20:42:09
マルチタスクOSじゃなくてリアルタイムOSだった^^;
737デフォルトの名無しさん:2007/03/27(火) 20:43:33
>>730
スレ違いじゃボケ。本でも買ってこいや
738デフォルトの名無しさん:2007/03/27(火) 20:45:00
>>730
ググればいくらでも出てくるから、読んでくるといいよ
莫迦に一から説明するのはちょっと骨が折れる
739デフォルトの名無しさん:2007/03/27(火) 20:45:04
しょうがないから、処理を分割して、タイマーイベントでちょっとずつ実行しろ。
740730:2007/03/27(火) 20:45:21
>ひとつのスレッド内は、あるイベント関数から抜けると、イベント待ちうけに
はいるのかな?
この推測が正しいかどうかしりたいのです。もしくは書籍を紹介してください。
マルチスレッドの例として、動作が滞る例はたくさん出てきますが、
動作の概念がつかめません。
741デフォルトの名無しさん:2007/03/27(火) 20:50:35
>>740
アプリケーションは基本的にシングルスレッドだ。
そいつがメッセージループを回してて
回収したメッセージに応じたウィンドウプロシージャに飛んでいく。

それを妨害して戻れなくすればメッセージが受け取れなくなるのは当然だろうが。
742デフォルトの名無しさん:2007/03/27(火) 20:52:24
生成されたスレッドは、実行が終わったら消滅。
743デフォルトの名無しさん:2007/03/27(火) 21:05:39
イベントドリブンを理解しろ。
744730:2007/03/27(火) 21:06:17
>>741
なんとなくわかりました。
アプリケーション内に小人がいて、スレッドを時分割でメッセージが
たまっていないか回る。
シングルスレッドの場合、確認したメッセージに応じて関数ポインタで
イベント関数に飛んでいき、処理を開始する。おわるまでずっと。
マルチスレッドの場合、時間がきたら処理をいったんやめて、次のスレッドに
飛ぶから、UIの動作とかは動ける。
ってかんじですか。
745デフォルトの名無しさん:2007/03/27(火) 21:12:31
>マルチスレッドの場合、時間がきたら処理をいったんやめて、次のスレッドに飛ぶから、

CPUの動き的にはそうだけど、イベントドリブンのシングルスレッドとの比較なら、マルチスレッドは単純に
同時に動いてるって考えていいよ。
746730:2007/03/27(火) 21:17:57
>>742
普通は必要な期間はループさせるのではないのですか?
たとえば、ループ内でイベントが起きたらパケットを受ける関数など呼ぶとか。
アプリを閉じるとか、ネットワーク切るときとかにスレッドを終わらせるのでは?
イベントドリブンだと、その必要はないのかー。スレッド内で生成したインスタンスも消滅するよねえ。クラスの中に
747デフォルトの名無しさん:2007/03/27(火) 21:20:12
Program.csとかみりゃなんとなくイメージわかんか?
748デフォルトの名無しさん:2007/03/27(火) 21:20:46
>>746
メインスレッドでメッセージループを回してて、こいつは基本的にアプリケーションが終了するまで止まらない。
時間のかかる処理をするために新しいスレッドを立ち上げるわけだが、
こいつは用済みになったら廃棄する場合もあるし止めておくだけの場合もある。
749730:2007/03/27(火) 21:20:57
スレチガイになってきましたので終わります。
ありがとうございました。
750デフォルトの名無しさん:2007/03/27(火) 21:23:21
>CPUの動き的にはそうだけど、イベントドリブンのシングルスレッドとの比較なら、マルチスレッドは単純に
同時に動いてるって考えていいよ。
こういう説明みると、ならシングルスレッドでいいジャンって思うよね。
何のためにマルチスレッドにするかまったく説明がつかない。
751デフォルトの名無しさん:2007/03/27(火) 21:25:06
いや、説明がつかないのはむしろ750の発想だと思うけど。。
752デフォルトの名無しさん:2007/03/27(火) 21:25:11
>>746
ワーカースレッドは、自分の用がすんだら終了するよ。
753730:2007/03/27(火) 21:35:52
むー。じゃあ、最優先でパケット受信しながら
なんかメインで別のこともやってるばあいは、
毎回パケット処理用のスレッド立ち上げるの?
オブジェクト指向なんてうそっぱちだー
754デフォルトの名無しさん:2007/03/27(火) 21:37:48
何を言ってんだ。用が済んだら、と言っているではないか
755デフォルトの名無しさん:2007/03/27(火) 21:44:18
>>753
オブジェクト指向とスレッドは関係ないだろ。
756デフォルトの名無しさん:2007/03/27(火) 21:47:36
>>753
そのほうがイベントと相性がよくて便利なんだよ
757デフォルトの名無しさん:2007/03/27(火) 21:48:35
>>753
昔のapacheなんか、接続があるたびにスレッドどころかプロセスを立ち上げてたぞ。

ってのはおいといて、スレッドの生成と消滅がボトルネックになるような処理の場合は、
消さないで使いまわしたりするな。
758730:2007/03/27(火) 21:50:37
>>何を言ってんだ。用が済んだら、と言っているではないか
了解。
>>オブジェクト指向とスレッドは関係ないだろ。
ちょっといってみただけ。たしかに。でも、時間的なものが絡んでくると、
シングルスレッドじゃ下手なクラス作っちゃうとメソッドの呼ばれる順番
とか変数の状態とかかなり気にしないとだめになるよね。
759デフォルトの名無しさん:2007/03/27(火) 21:52:07
そりゃ下手なクラス作りゃそうなるだろうが、普通はそうはせん
760デフォルトの名無しさん:2007/03/27(火) 21:52:18
Visual C# 2005 Express Edition  で作ったアプリの Setup.msi とかって、どやってつくるの?
761デフォルトの名無しさん:2007/03/27(火) 22:02:56
>>760
プロジェクトのプロパティ→「発行」ページ→「発行ウィザード」ボタン
762760:2007/03/27(火) 22:14:26
>>761
蟻がd
763デフォルトの名無しさん:2007/03/28(水) 10:53:31
VBのEventステートメントに該当するものはC#にはないですか?
764デフォルトの名無しさん:2007/03/28(水) 11:24:49
どなたかご教授ください。
PostgreSQLと連携したアプリを組みたいと考えています。
ODBCとサーバーエクスプローラーではうまくいったのですが、OLE DBとサーバーエクスプローラーでは
「複数ステップの OLE DB の操作でエラーが発生しました。各 OLE DB の状態の値を確認してください。作業は終了しませんでした。」
とエラーが出てしまいます。
行った手順としては
・サーバーエクスプローラーのデータ接続部分を右クリック→接続の追加
・データソース「.NET Framework OLE DB 用データ プロバイダ」
・OLE DBプロバイダ「PostgreSQL OLE DB Provider」
・サーバー名「localhost」
・場所「test1」(test1というDBは作成済み)
・ユーザー名「postgres」パスワード「**************」
上記のように設定したらエラーが出ます。

そもそもODBCで作成すべきなのでしょうか?
環境はWindowsXP SP2+Visual Studio 2005+PostgreSQL 8.1.8です。
765デフォルトの名無しさん:2007/03/28(水) 11:25:27
>>763
http://msdn2.microsoft.com/ja-jp/library/awbftdfh(VS.80).aspx

このあたり読んどけ
766デフォルトの名無しさん:2007/03/28(水) 14:47:18
visualC#2005EEは最初、1ファイル1クラスの時ファイル名とクラス名が一緒に変えられるじゃないですか
気がついたらファイル名変えてもクラス名が変わらなくなってたんですけど、
どうすればまた一緒に変えられるようになりますかね
767デフォルトの名無しさん:2007/03/28(水) 20:40:54
クラス名を変更してファイル名と同じにしてみて
768デフォルトの名無しさん:2007/03/28(水) 23:02:53
TreeView使っていて
TreeNodeのFullPathプロパティからフルパス(string)をゲット
今度は逆にそのパスからノードにアクセスしたいんですが
それってTreeViewに同名ノードを複数登録できるところからして
自分で再帰でもしないと無理ですかね?
769デフォルトの名無しさん:2007/03/28(水) 23:07:12
そう
セパレータに使う文字が TreeNode.Text に含まれていた場合どうする?
という問題もある
770768:2007/03/28(水) 23:12:27
なるほど
参考になります
771デフォルトの名無しさん:2007/03/28(水) 23:56:02
http://www.avexnet.or.jp/eurobeat/discography/
ここのCDの検索システムを作りたいです。
SUPER EURO BEATというアルバムでVol.1〜170くらい出ています。
1枚30曲〜100曲くらい入っているでしょうか。
曲名からその曲が収録されているアルバムを探したり、
歌手からその歌手の曲全部表示したり、重複している曲を探したり・・
という機能が欲しいです。
これを実現するにはどのような技術が適していますか?
772デフォルトの名無しさん:2007/03/28(水) 23:57:09
iTunesとか
773デフォルトの名無しさん:2007/03/29(木) 00:04:11
databaseとか
774デフォルトの名無しさん:2007/03/29(木) 00:07:06
NomaNomaとか
775771:2007/03/29(木) 00:26:12
>>772->>774
ありがとう。

iTunesStoreで検索しましたがSuperEuroBeatは見つかりませんでした。
iTunesを使ってなにか作ると言うことでしょうか?

データベースは、何の種類(?)ですか?
NomaNomaは、分かりません。

aspxは、関係ないでしょうか?
ぐぐるので何かいいヒントとかサンプルがあったら教えて下さい><


http://avexnet.jp/item/sebea/disc/product/AVCD-10○○○.html
↑の○○○のところに、001〜174などの数字を入れると、そのCDの内容が見れるようです。
776デフォルトの名無しさん:2007/03/29(木) 00:39:34
どのような技術もなにも、
URLを生成してGetして文字列検索するだけ。
オーナーがサイトの構成変えたりしたら終了。

777771:2007/03/29(木) 00:44:28
>>776
そっか・・ありがとう。
難しく考えていたみたいです。
778デフォルトの名無しさん:2007/03/29(木) 08:54:02
Namazuとかw
779デフォルトの名無しさん:2007/04/01(日) 01:34:16
常駐プログラムを作ろうと思っております。
そこで、起動時にメインウィンドウを非表示にしたいのですが、
メインウィンドウのコンストラクタとかに Visible = false をしても
メインウィンドウが表示されてしまうのです。
どのタイミングで Visible = false をすればよいのでしょうか?
780デフォルトの名無しさん:2007/04/01(日) 01:48:41
>>779
Application.Run() を引数無しで実行
781デフォルトの名無しさん:2007/04/01(日) 01:49:14
たしか、どぼんにそんなことが書いてあった希ガス
782デフォルトの名無しさん:2007/04/01(日) 08:39:51
.NET Remotingで
Windowsの.NET Frameworkでクライアント
Mac OS Xのmonoでサーバ
を動かすとして、正常に通信できる?
(TcpChannel,Binary)
783デフォルトの名無しさん:2007/04/01(日) 19:04:37
以下のように読み込み完了まで待ちたいのですが、
読み込みを完了する前にwhileを抜けてしまうのですが・・・

webBrowser.Navigate(url) ;
while(webBrowser.IsBusy){}
784デフォルトの名無しさん:2007/04/01(日) 19:16:33
素直に DocumentCompleted で待ち構えてな。
785779:2007/04/01(日) 22:41:12
レスありがとうございます。
Application.Run() を引数無しで実行する線から探ってみたいとおもいます。
786デフォルトの名無しさん:2007/04/02(月) 00:15:38
かなりFAQな質問かもしれないけど、よろしくです。
VisualStudio2005(VS80sp1)で、Buttonを継承したカスタムコントロールを作ってるのですが、
機能や振る舞いをいろいろ限定、隠蔽したいです。で2点質問

1つめ
 まずは属性Browsableでプロパティを隠してるのだけど、いちいちoverrideせずにまとめて隠せないかな・・・

2つめ
 ビルドエラーになるように、プロパティやメソッドをprivateやprotectedに変えたいけど、
スーパークラスのアクセス修飾子を変えんなゴルァとおこられちゃいます。
 修飾子じゃなくて属性でなんとかならんかなと思ったのだけどObsoleteとかが効くのは
クラスだけみたい。メソッドやプロパティだと警告にはならないし・・・

なんかいい方法ないかな?
787デフォルトの名無しさん:2007/04/02(月) 00:23:22
>>786
IDEはあくまでIDEであり、エスパー機能は実装されていない
788デフォルトの名無しさん:2007/04/02(月) 00:36:44
>>787
至言だね。
いや、当たり前のことなんだがw

>>786
二つ目はシャドウしたらダメなの?
「ビルドエラーになるように、」という言葉の意味がいまいちよくわからないけど。
789デフォルトの名無しさん:2007/04/02(月) 00:39:27
一個目は >>212 がヒントになるかも知れない
790デフォルトの名無しさん:2007/04/02(月) 00:46:19
なるわけないじゃんw

特定のインターフェイスをインプリメントしたら
クラスが「俺様」の意図をテレパシーで感じてプロパティーウィンドウに
表示したくないプロパティーは隠蔽してくれるようになるの?

んなアホなw
791デフォルトの名無しさん:2007/04/02(月) 00:54:07
>>786
Button を継承するのをあきらめる
792デフォルトの名無しさん:2007/04/02(月) 00:58:09
>>790
テレパシーでは感じてくれないだろうが
プロパティグリッドが実装してるかどうか聞いてくる可能性はあるかもな

実装したこと無いから知らんけど
793デフォルトの名無しさん:2007/04/02(月) 03:06:44
そこまでカスタマイズしたいなら
完全自作Buttonクラスくらい簡単にできるよ。
そっちの方が楽ちんじゃないかな
794デフォルトの名無しさん:2007/04/02(月) 08:23:24
Controlクラスから自作すべき
795デフォルトの名無しさん:2007/04/02(月) 08:56:55
隠したいプロパティが何なのかわかんないけど、どっから継承しても同じ壁にぶち当たるのではないかと。
796デフォルトの名無しさん:2007/04/02(月) 09:02:02
そもそもプロパティを隠したいって欲望はおかしい
797デフォルトの名無しさん:2007/04/02(月) 19:02:45
同一のデータソースを参照する2つのコンボボックスの、
片方の値を変更するともう片方も同じように変更されてしまいます。
これを、独立した動作にすることはできないのでしょうか?
798デフォルトの名無しさん:2007/04/02(月) 19:08:41
日本語でおk

例えば「片方の値」の値ってなんのことだよ。
人間相手にわからせる文章書けない奴が融通利かないPCを操れるかよ。
799797:2007/04/02(月) 19:23:21
>>798
失礼しました。
2つのコンボボックスは、同じBindingSourceを参照しておりまして、
同じ内容のDataMemberを持っています。
この状態で、コンボボックス1のプルダウンよりValeuを変更しますと、
コンボボックス2のValueもコンボボックス1と同じValueに変更されてしまいます。
これを独立した動作にすることはできますでしょうか?
800デフォルトの名無しさん:2007/04/02(月) 19:27:34
データバインドの意味を理解してないだけだな。
801797:2007/04/02(月) 19:43:34
>>800
>>データバインドの意味を理解してないだけだな
どうやらデータバインドを勘違いしていたようです。
このアドバイスで何とか判りかけてきました。あとは自力で何とかします。

ありがとうございました。
802デフォルトの名無しさん:2007/04/03(火) 01:16:30
>>796
たとえば、スキルも国籍もばらばらの多国籍軍PG達に作らせたときに、
できるだけ、イベントやプロパティの扱いかたをそろえたいときとか・・・

俺様コントロールとかもろもろで、俺様フレームワークもどきをお膳立てしといて
んで、俺様仕様で作ってくれとかそんなとこ
たとえば、Clickイベントじゃなくて、MouseClickイベントでするように強制するとか
803デフォルトの名無しさん:2007/04/03(火) 01:39:50
ドキュメントって何の為にあるんだろう・・・
804デフォルトの名無しさん:2007/04/03(火) 03:45:30
DQNMent
805デフォルトの名無しさん:2007/04/03(火) 12:09:48
System.Threading.Thread.CurrentThread.Abort();
806デフォルトの名無しさん:2007/04/03(火) 13:57:38
ドキュメントを完全に読み込んでないのに、DocumentCompleteイベントハンドラが呼ばれることがあるのだが。
プログラムを開始してから一番最初のNavigateの時。
こんなことがあっては困るんだが、こんなものなの?
807デフォルトの名無しさん:2007/04/03(火) 14:15:00
漏れはなったことない。
808デフォルトの名無しさん:2007/04/03(火) 14:31:55
CとC+とC#の違いはなんですか?
809デフォルトの名無しさん:2007/04/03(火) 14:37:51
性別が異なります
810デフォルトの名無しさん:2007/04/03(火) 14:50:16
年齢が異なります
811867:2007/04/03(火) 18:39:49
Cの
fscanf(fr,"%c,%c",c,d);
のようなことを
C#でしたいのですがどうすれば良いのでしょうか?
fr.ReadLine("%c,%c",c,d);
ってだめですね。
812デフォルトの名無しさん:2007/04/03(火) 18:41:12
正規表現だな。
813デフォルトの名無しさん:2007/04/03(火) 20:44:43
xhtmlをXmlDocumentに読み込ませようとしてるんですが、
XmlDocumentTypeを作ろうとして、
CreateDocumentType("html", "-//W3C//DTD XHTML 1.1//EN", "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd")
とかやると、ネット上のDTDを毎回読みに行ってるようで、
べらぼうな時間待たされるんですが、解決策をどなたか知りませんか?

814デフォルトの名無しさん:2007/04/03(火) 21:59:19
treeViewでクリックするとノードを展開、折りたたみをしたいと思い、
以下のプログラムを作りました。
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (treeView1.SelectedNode != null)
{
if (e.Node.IsExpanded)
{
e.Node.Collapse();
}
else
{
e.Node.Expand();
}
}
}

一見うまくいったのですが、+,-のところをクリックすると、
例えば、展開したいときには
一度展開された後、折りたたまれてしまいます。
その理由はなんとなくわかるのですが、回避方法がわかりません。
回避するにはどう記述すればいいのでしょうか?
815デフォルトの名無しさん:2007/04/03(火) 22:06:28
Hittest
816デフォルトの名無しさん:2007/04/03(火) 22:33:01
>>815
ありがとうございます。
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (treeView1.SelectedNode != null)
{
TreeViewHitTestInfo info = treeView1.HitTest(e.X, e.Y);
if (info.Location.ToString() == "Image" || info.Location.ToString() == "Label")
{
if (e.Node.IsExpanded)
{
e.Node.Collapse();
}
else
{
e.Node.Expand();
}
}
}
}
としたら、上手くいきました。
817デフォルトの名無しさん:2007/04/03(火) 22:34:01
超初心者です。すいませんが、コマンドライン引数について。
プログラムを起動するたびに、コマンドライン引数として任意の桁の整数をいくつか入力し、
それを使ってちょこちょこと計算をしたいのです。
argv[0]はプログラム名で、argv[1] argv[2]…argv[i]に整数が入ります。
その整数は文字列なので、計算するためには数値に変換しなければいけません。
で、配列を使って1をかけて10をかけて100をかけて…合計は、という感じで変換すればいいと思うのですが
文字列として何が来るかわからないものを配列に格納するにはどう書けばいいのでしょう?

for(i=1;i<argc;i++){
char string[]=argv[i]

だとエラーになるようです。
818デフォルトの名無しさん:2007/04/03(火) 22:36:36
なんかC#じゃなくて、Cくさくね?
819デフォルトの名無しさん:2007/04/03(火) 22:39:47
>char string
2つとも予約語だよ
string temp[]
820デフォルトの名無しさん:2007/04/03(火) 22:42:13
char[] chars = argv[i].ToCharArray ();

なだ。

C#のコマンドラインってargcとかargv[]で見れたっけ?
821デフォルトの名無しさん:2007/04/03(火) 22:43:50
C# Express editionで作ったWindowアプリケーションを
.NET1.1で動くようにしたいのですが、
ビルドできるようにすることは可能でしょうか?
とりあえずSharpDevelopでプロジェクトを読み込んで
Target Frameworkを1.1に変更
partialで別れてるクラスを合体させてビルドしてみましたが、
Propertiesフォルダ下の
Resources.resxやSettings.settingsあたりで
エラーが沢山でまくりです
822デフォルトの名無しさん:2007/04/03(火) 22:45:20
>char[] chars = argv[i].ToCharArray ();
が書けてなんで
>C#のコマンドラインってargcとかargv[]で見れたっけ?
こんなこと知らないんだよw
823デフォルトの名無しさん:2007/04/03(火) 22:48:52
>>822
C#のコマンドラインのコードなんて、何年も前に@ITあたりで見ただけだよ。
824デフォルトの名無しさん:2007/04/03(火) 22:49:23
>>820
void Main() {
string[] argv = System.Environment.GetCommandLineArgs();
int argc = argv.Length;
}
825デフォルトの名無しさん:2007/04/03(火) 22:50:11
>>821
諦めれ
826デフォルトの名無しさん:2007/04/03(火) 22:50:57
817です。すいませんスレ間違えたっぽいです。Cですね。
827デフォルトの名無しさん:2007/04/03(火) 23:35:28
>>824
static void Main(string[] args)
使えよ
828デフォルトの名無しさん:2007/04/03(火) 23:57:40
>>813
事前に XmlResolver プロパティに XmlUrlResolver の独自派生クラスを設定。
そのクラスで
a) ResolveUri のオーバーライドで file:/// スキームに書き換える
b) GetEntity のオーバーライドで独自の Stream を返す
どっちかをする。
どんなファイルが要求されているかは、一度 DTD 読み込ませて GetEntity の absoluteUri を表示させれば分かる。
あとはそれらをローカルにファイルとしておいておく(a)なりリソースに突っ込んでいく(b で便利)なり。
829813:2007/04/04(水) 07:14:04
>>828
ありがとうございます。
やってみます。
830デフォルトの名無しさん:2007/04/04(水) 12:15:02
>>821
削除してみれば?
こいつらって自動生成されるもんだよね?
削除後、再度コンパイルすればまた自動生成される。
831デフォルトの名無しさん:2007/04/04(水) 17:07:18
初歩的な質問ですがhtmlやxml形式のテキストファイルからタグだけ除去するのは
以下のソースにどう追記すれば良いのでしょうか?

private void button1_Click(object sender, EventArgs e)
{
openFileDialog1.Filter = "テキスト(*.txt,*.dat,*.html,*.inf)|*.txt;*.dat;*.html;*.inf|" + "All files(*.*)|*.*";
if (openFileDialog1.ShowDialog() != DialogResult.OK)
{
return;
}
textBox1.Text = openFileDialog1.FileName;
string line, str = "";
StreamReader sr = new StreamReader(textBox1.Text, Encoding.Default);
if (File.Exists(textBox1.Text))
{
while ((line = sr.ReadLine()) != null) //テキストファイルを一行づつ読み込む
{
str = str + line + "\r\n";
}
textBox5.Text = str;
}
sr.Close();
以上どうs
832デフォルトの名無しさん:2007/04/04(水) 17:10:24
突っ込みどころが多すぎて
833デフォルトの名無しさん:2007/04/04(水) 17:13:45
まぁとりあえず必ず1行で完結してしまうような形式のテキストではないのでそのやり方は
お勧めできない

って所からはじめようか
834デフォルトの名無しさん:2007/04/04(水) 17:24:06
>>831
System.Text.RegularExpressions.Regex.Replace(source, "<(.|\r|\n)*?>", string.Empty);
835デフォルトの名無しさん:2007/04/04(水) 18:31:09
出来ませんでしたがレスありがとうございました。
836デフォルトの名無しさん:2007/04/04(水) 20:45:18
自分がどの書き込みした奴で何をどう試してどう出来なかったか書けば教えようもあるのに……
837デフォルトの名無しさん:2007/04/04(水) 21:58:43
あのー、WindowsFormですが、Formのタイトルバーの部分をOwnerDrawすることって
できましたっけ・・・。できれば色変えたり、幅変えたりしたいのですが方法が知りたいのです。
838デフォルトの名無しさん:2007/04/04(水) 22:14:29
標準じゃできない
WM_NCPAINT拾って自前で描くか
FormBorderStyleをNoneにして枠から全部自前で描くか
839デフォルトの名無しさん:2007/04/04(水) 22:14:50
タイトルバー使わずに描画。
840デフォルトの名無しさん:2007/04/04(水) 22:30:51
>>838-839
>標準じゃできない
そうだったんですか、うーん残念。

>WM_NCPAINT拾って自前で描くか
>FormBorderStyleをNoneにして枠から全部自前で描くか
>タイトルバー使わずに描画
これらを勉強してみます。どうもでした。
841デフォルトの名無しさん:2007/04/04(水) 23:23:39
ダイアログベースのプログラムを作っています。

親フォームの中でSDIのアプリケーションが表示されるようにしようとしています。
(Accessで作るような感じ)
アプリケーションの流れとしては、最初に親フォームからメニューボタンを並べた子フォームを
開き、そのボタンをクリックして別のフォームで入力etc.という感じです。

最初の子フォームを開くことはできるんですが、その子フォームからMDIウインドウの中に
別の子フォーム(兄弟みたいな感じ?)を開くことができません。

で、やり方が悪いのかなと思って、今度はフォームをコントロールとして親ウィンドウにAddして
表示はできたんですが、今度は親ウィンドウのタイトルバーはアクティブ状態なんですが、
子ウィンドウ(擬似?)は非アクティブのままになってしまいます。

ググるにしても、キーワードが指定しにくくて思ったようにヒットしません。
どうすれば意図した表示にできるでしょうか。
842デフォルトの名無しさん:2007/04/05(木) 00:08:02
>>841
イマイチよくわからんのだけど、全ての子フォームのインスタンスは親フォームが管理してね。
だから子フォームから別の子フォームを作る場合、親フォームに対してもう一個、子フォーム
作ってくれを呼び出すようにするのが筋じゃね?

子:「ママ、僕も弟がほしいよー」
父:「よーし、パパ(ry)」
843841:2007/04/05(木) 00:50:21
>>842
説明しづらいんですが、普通のSDIのアプリが
MDI親フォームの中で動くようにしたいってことです。

子フォームからいくつもたどれるようにしたいんだけど
難しそうですな。

844デフォルトの名無しさん:2007/04/05(木) 10:38:00
>>843
こういうことなのか?

親ウィンドウ
|
|______MDI子_____MDI子その1()
|        |___________MDI子その2
| 
|
|______MDI子_____MDI子その1()
|        |___________MDI子その2
以下...続く
845841:2007/04/05(木) 11:08:39
>>844
そうです、そんな感じ。
親フォームの配列か何かで管理すればいいのかな?
846デフォルトの名無しさん:2007/04/05(木) 11:14:30
自分でFormを拡張して作ったほうが良いと思う。
847デフォルトの名無しさん:2007/04/05(木) 19:28:48
むしろ、そんなちょっと想像しただけで糞とわかるUIを(
848デフォルトの名無しさん:2007/04/05(木) 20:09:21
>>843
まだわからん。
普通のMDIとなにがちがうの?
849デフォルトの名無しさん:2007/04/05(木) 21:18:43
MDI の中で 『SDI のアプリケーションを動かしたい』 んだと想像
850デフォルトの名無しさん:2007/04/05(木) 21:25:56
qemuみたいな感じか。
851841:2007/04/06(金) 00:03:16
遅くなりましたが>>849さんのご想像通りです。

>>846
作り方が・・・

>>847
確かにあまり意味はないので糞だと思います、僕も。

>>848
>>849さんの

>>850
使ったことないですが、VMwareみたいなの?

UIって正解がわかりづらい(無い?)から難しいです。
852デフォルトの名無しさん:2007/04/06(金) 02:25:38
>>844
俺にはその図だと竿竹に鯉のぼりが付いててそれに再帰的に
真鯉、緋鯉がつらなるようなイメージしか浮ばなかったんだが…

親-(子|子) split で上下左右に分割 (よく見かける例)

親-(子-(孫|孫)))-(子-(孫|孫))) >>844の図

あ、そうか…一旦、左右に割って、それを上下に割って4面にして
その割った下の部分をさらに左右に割って*2 で全部で6面構成。
多機能な動画編集ソフトみたいなイメージか…
853デフォルトの名無しさん:2007/04/06(金) 02:35:00
>>851
とかいって、よく見たら書いてあるし orz
854デフォルトの名無しさん:2007/04/06(金) 03:51:50
>>851
MDI の中に表示したいアプリケーションが .NET 製かどうかでだいぶやり方が変わってくると思う。
上手くいけば、ちょいと外部から弄ってやるだけでやりたいことできるかと。
855848:2007/04/06(金) 11:33:24
>>849
>>851
MDIアプリの中で別のアプリを動かしたいってこと?
例えばEXCELやWORDを自作MDIアプリの中で…かな?

子フォームじゃないじゃん・・・
856841:2007/04/06(金) 21:37:04
すいません、わけのわからない質問して。

業務用アプリケーションなんかで、画面遷移しながら入力するSDIアプリ
ありますよね。(これをSDIっていうのかな?)
で、そいつをMDIの親の中で動かしたいわけです。

ttp://www-2ch.net:8080/up/download/1175862763649937.YMkeQF?dl

とりあえず作ってみたんで、上げてみました。(中身は適当です)
857デフォルトの名無しさん:2007/04/06(金) 21:39:40
SDIの意味わかってないな
858デフォルトの名無しさん:2007/04/06(金) 21:56:25
レーガン政権時代に米国がソ連をつぶすために提唱した
嘘八百の防衛計画のことですね。
859デフォルトの名無しさん:2007/04/06(金) 22:01:35
>>856
ただのMDIじゃん。
言葉にこだわりすぎ。なに言ってるか訳わからん。
860デフォルトの名無しさん:2007/04/06(金) 22:23:58
標準で作れるアプリを覚えきってから新しいことをやりなさい。
861841:2007/04/06(金) 22:25:03
うーん、すいません。

MDIって親の中で同時にいくつか開けるんですよね?
僕が作ろうとしてたのは、表示は1ウィンドウのみにしたかったから、
そんな言い回しをしてました。
862デフォルトの名無しさん:2007/04/06(金) 22:31:45
俺様用語使うときは独り言だけにしてくれ
863デフォルトの名無しさん:2007/04/06(金) 23:29:10
子をつねに最大化しとけばいいんじゃね
864848:2007/04/06(金) 23:35:56
勇気出して >>856 を実行してみたら …別アプリ起動じゃないじゃん。

>>861
MDI子ウィンドウの表示を1ウィンドウ限定にするのはプログラマであってユーザーじゃない。
>>859 も言うように専門用語なんて使わなくていいからそのまま伝えてくれ。

で、コレもう解決なの?
865デフォルトの名無しさん:2007/04/06(金) 23:38:53
そもそも何を悩んでいるのか未だにわからない
866841:2007/04/07(土) 00:18:47
すんません、勘違いやら何やらでおかしなことばかり
言ってました。
結局は>>842さんの通りでした。

いろいろと失礼しました。
867デフォルトの名無しさん:2007/04/07(土) 05:46:18
MDI子ウィンドウで孫を開いて孫の親を消そうとしていたのか…
やっとわかったw
868デフォルトの名無しさん:2007/04/07(土) 09:37:30
ExcelのWEEKNUM(指定した日付がその年の第何週かを返す)と同じ関数はありますか?
http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/today.htm#weeknum
869デフォルトの名無しさん:2007/04/07(土) 09:59:02
>>868
Calendar.GetWeekOfYear をうまく使えば同じになりそうな気がしないでもない
870デフォルトの名無しさん:2007/04/07(土) 10:40:00
>>869
いけましたthx!
871デフォルトの名無しさん:2007/04/07(土) 12:24:23
あるHTMLのAタグだけを抜き出してテキストファイルにリンク先のurlを保存しようとしています。
その前に、とりあえず、Aタグの最初の行を表示する以下のプログラムを組みました
private void Form1_Load(object sender, EventArgs e) {
System.Windows.Forms.WebBrowser webBrowser = new System.Windows.Forms.WebBrowser();
System.Windows.Forms.HtmlDocument document;

string url = "hoge";
webBrowser.Navigate(url);
document = webBrowser.Document;
textBox1.Text = document.GetElementsByTagName("A")[0].OuterHtml;
webBrowser.Dispose();
}
Form1にはtextBox1のみが貼り付けられており、webBrowserは貼り付けていません。
実行してみると、テキストボックスには何も表示されませんでした。
どういった原因が考えられるのでしょうか?
1)webBrowserコンポーネントをForm1に貼り付けてないとだめ。
2)Navigateがされていない。
3)そんなこと以前の問題。
等々の原因を考えました。

1)なら別の方法を考えて見ます。
(webBrowserを使ったのは、GetElementsByTagName("A")
を使用したかっただけです。)
2)なら完全に読み込まれるにはどうしたら良いのかヒントをご教示ください。
3)ならどういうプログラムを組めばよいのかヒントをご教示ください。

よろしくお願いします。
872デフォルトの名無しさん:2007/04/07(土) 12:33:38
DocumentCompleted が発生するまでは Document は null または不完全。
873デフォルトの名無しさん:2007/04/07(土) 19:53:14
>>872
遅くなりましたがレス有難うございました。
いまから調べてやってみます。
874デフォルトの名無しさん:2007/04/07(土) 21:33:08
HashtableとかDataRowとか、そんなので、格納されてる値をstringへ
取り出すことよくあると思うjんだけど、
そんときはキャストつかう?それともToString()つかう?

性能考えるとキャストで、異常処理でInvalidCastExceptionをcatchかなとか思うけど
これだと、DBNullとかが、InvalidCastExceptionだよね

そうすると、やっぱり、ToString()で文字列にしたほうが汎用的だけど、nullを扱いたいってときに
NullReferenceExceptionになっちゃうよね。

一応使い分けるようにしてるつもりだけど、明確な基準はもってないんだよね〜
まぁ好みの問題だと思うんだけど・・・おまんらはどっち?
875デフォルトの名無しさん:2007/04/07(土) 21:35:02
String.Concat(Object)
876デフォルトの名無しさん:2007/04/07(土) 21:37:45
String であることが明らかならキャスト
DBNull になりうるなら事前にチェックする
877デフォルトの名無しさん:2007/04/07(土) 21:37:58
StringとかBoolとかエイリアスもってるのって、どっちつかってる?

String? string? 律儀にSystem.String?
878デフォルトの名無しさん:2007/04/07(土) 21:44:50
>>877
Bool, bool とかって System.Boolのエイリアスだったんだ。
知らなかった…
879デフォルトの名無しさん:2007/04/07(土) 21:45:59
むしろSystem.Boolがboolへのエイリアス
880デフォルトの名無しさん:2007/04/07(土) 21:46:29
>>879
それは違う
881デフォルトの名無しさん:2007/04/07(土) 21:47:26
>>878
BoolはSystem.Boolのエイリアスではなくそのものだろ
882デフォルトの名無しさん:2007/04/07(土) 22:01:59
なんとなく
型名のときはstring
静的メソッド/プロパティをとるときString

ってしちゃう。意味ないけど
883デフォルトの名無しさん:2007/04/07(土) 22:20:33
たしかboolやBoolはどっちもCILのプリミティブ型として扱われるんだったか
884デフォルトの名無しさん:2007/04/07(土) 22:32:24
.NETではプリミティブ型は値型に含まれる。
System.Boolは値型でboolはそのエイリアス。
885デフォルトの名無しさん:2007/04/07(土) 22:42:50
IL レベルでのプリミティブ型は i4/i8/r4/r8 の 4 種類
Bool は i4 だな
886デフォルトの名無しさん:2007/04/07(土) 22:45:08
>>884みたいに考えていいことになってる,ってことでしょ
実際プリミティブ型(System.Bool等も含む)は特別扱いされる
887デフォルトの名無しさん:2007/04/08(日) 01:45:32
staticなイベントを発生させるとき、object senderには何を設定すればいいのでしょう。
nullでいいんですかね。
888デフォルトの名無しさん:2007/04/08(日) 01:53:56
そう言うのに悩んだらまず MSDN のガイドラインを見てみるんだ
つ イベントのデザイン
889デフォルトの名無しさん:2007/04/08(日) 02:12:26
>>887
ありがとうございます。
「イベントの処理と発生」あたりをいくら見てもstaticイベントに関する記述が見つからなくて困っていました。
ガイドラインですね。覚えておきます。
890デフォルトの名無しさん:2007/04/08(日) 03:00:45
スタティックならEventArg(の派生)だけでいいだろ
891デフォルトの名無しさん:2007/04/08(日) 06:13:33
基本構文を学んだ程度の初心者です。
一応、C言語でのwin32apiを使ったプログラミングの経験
は少なからず有るのですが、例えば
2chブラウザのTwintailソースを見て勉強しようと思っても
初心者には複雑すぎて、部分的にしかわかりませんでした。
Formのソースを見てもすべて、自作でコントロールの配置や
イベント管理(フォームをダブルクリックして出すメソッドを使わない)
を自前で処理してるので、とても初心者の自分には
ソースの解読が難解です。
で、すみませんが、参考になるサイトは有りませんでしょうか。
どうもメソッド(object sender, eventargc e)
だけで処理していくのは適切ではないような気もするので
すみませんが、参考になるサイトをご存じなら教えてください。
お願いします。
892デフォルトの名無しさん:2007/04/08(日) 06:39:07
とりあえずあれだ。初心者言うな、テンプレ嫁。
893改行が多すぎて分割投稿します1:2007/04/08(日) 10:17:43
以下のプログラムがうまく動きません。
あるフォルダーの中の複数のファイルを読み込みいくつかの処理・検索等を
実行するプログラムを作ろうと思っています。
まず読込みの部分の試作品なのですが・・
よろしくお願いいたしますm(__)m
エラーメッセージ

'System.IO.StreamReader.StreamReader(System.IO.Stream)'
に最も適しているオーバーロードメソッドには無効な引数がいくつか含まれています。
引数'1':'System.IO.FileInfo'から'System.IO.Stream'に変換できません。


894改行が多すぎて分割投稿します2:2007/04/08(日) 10:18:18
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)

{
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(@"C:\text");

foreach(System.IO.FileInfo f in dir.GetFiles())
{
System.IO.StreamReader file =
new System.IO.StreamReader(f);
string line= file.ReadLine();

System.Console.WriteLine(line);
file.Close();
}
// Suspend the screen.
System.Console.ReadLine();
}
}
}
895デフォルトの名無しさん:2007/04/08(日) 11:08:40
エラーメッセージの通りとしか言いようがないが……。
取りあえずヘルプで StreamReader のコンストラクタを調べろ。
そこに渡すことができる引数の型が書いてある。
それから FileInfo のメンバ一覧も。
896デフォルトの名無しさん:2007/04/08(日) 11:30:37
プログラムが動かない、と、コンパイルエラー、を区別しよう、な。
897デフォルトの名無しさん:2007/04/08(日) 12:12:13
>>891
twintai見てみたが普通にイベントハンドラを使ってるし特に変わったところはないと思う

ただし,メニューのイベントハンドラはpartialクラスを使ってファイルを別にしてあるみたい
partialクラスは一つのクラスを複数のファイルに分けて書けるC#の機能
自分でイベントハンドラ用のメソッドを別ファイルに書いたあと,
デザイナからそのメソッドをイベントハンドラとしてコントロールに関連付けてるのかな
898デフォルトの名無しさん:2007/04/08(日) 12:16:22
>以下のプログラムがうまく動きません。
動く以前の問題だろうがっ
899デフォルトの名無しさん:2007/04/08(日) 14:06:45
じゃあ、何の問題なんだよ。具体的に述べれや
900デフォルトの名無しさん:2007/04/08(日) 14:36:25
初心者なら初心者でいいしここはそういう場なんだが、
コンパイル通すぐらいまでは自力でやってくれ。掲示板での
フォローは難しい(orドキュメント嫁で終わる)んだそのレベル
だと。
901デフォルトの名無しさん:2007/04/08(日) 15:23:43
だから何の問題なのかと聞いている。問題を具体的に述べろ。
902デフォルトの名無しさん:2007/04/08(日) 15:26:48
まだガッコ始まらないの?
903デフォルトの名無しさん:2007/04/08(日) 15:28:44
>>902
何のガッコ?
904デフォルトの名無しさん:2007/04/08(日) 15:38:07
無効な引数がいくつか含まれているんだよ!!
905デフォルトの名無しさん:2007/04/08(日) 15:49:54
な、なーんだ。
906デフォルトの名無しさん:2007/04/08(日) 20:29:53
HtmlDocument型で文字の置換ができないようなのですが、
できるならHtmlDocumentで置換したいのです。
何か方法がないでしょうか?
一度stringにして置換した後、
HtmlDocumentにしようとしたのですが、
型変換できなくて困っています。
907デフォルトの名無しさん:2007/04/08(日) 20:39:28
よくわからんけどHtmlDocument.AllでHtmlElementを回して
HtmlElement.InnerTextを置換すれば委員ジャマイカ
908デフォルトの名無しさん:2007/04/08(日) 20:45:38
二次元配列型もIListを実装してるみたいだから
IListにキャストして一次元のインデックスでアクセスしてみたら例外出た
何のためにIListを実装してるのかと
909デフォルトの名無しさん:2007/04/08(日) 20:46:11
いっそ Body の InnerHtml とっかえちまえば良いんじゃね


つかもうちょっと分かりやすい日本語を頼む
910デフォルトの名無しさん:2007/04/08(日) 20:48:51
だってArrayが実装してんだからしゃーないじゃん
911デフォルトの名無しさん:2007/04/08(日) 21:05:44
>>906
stringを元の位置に戻すだけですよ?
912906:2007/04/08(日) 21:07:46
補足します。
今ツリービューの使い方を練習しています。
具体的にやりたいことは、
2chのメニュー(http://menu.2ch.net/bbsmenu.html)を
ツリービューのノードとして取り込みたいのです。
2chのメニューのhtmlソースの一部を見れば、
<BR><BR><B>地震</B><BR>
<A HREF=http://headline.2ch.net/bbynamazu/>地震headline</A><br>
<A HREF=http://news21.2ch.net/namazuplus/>地震速報</A><br>
となっていて、ノードのLevel1に"地震"、
Level2に地震headline、地震速報を割り当てたいのです。

その方法として、
HtmlDocumetで"<BR><BR><B>"を"<a href="SUBTITLE">"、
"</B><BR>"を"</a>"に置換して
HtmlDocument.GetElementsByTagName("A")で
HtmlElementのコレクションをつくり、それを元にノードを作りたいのです。
この方法とは別に、
stringでHtmlソースを保持して、置換を繰り返すことでノードの実装を
実現できているのですが、置換を繰り返しまくっていて
あまり美しい方法ではないような気がしたので、
質問した方法でできないかなと考えた次第です。



913906:2007/04/08(日) 21:18:12
やってみたのは
string docTemp;
HtmlDocument document=((WebBrowser)sender).Document;
docTemp=document.ToString().Replace("<BR><BR><B>", "<A href=TITLE>");
docTemp=docTemp.Replace("</B><BR>", "</A>");
document = (HtmlDocument)docTemp;
です。最後の行で型変換できないとエラーがでます。
914デフォルトの名無しさん:2007/04/08(日) 21:20:24
……。

あー、書き戻す必要ってどっかにあるのか?
915デフォルトの名無しさん:2007/04/08(日) 21:29:45
>>914
↓をしたいためです。
HtmlDocument.GetElementsByTagName("A")で
HtmlElementのコレクションをつくり、それを元にノードを作りたいのです。
916デフォルトの名無しさん:2007/04/08(日) 21:35:32
HTML解析してノード構築するだけじゃいけない理由があるのか?
意味わかんねー
917デフォルトの名無しさん:2007/04/08(日) 21:46:30
>>916
いや、別にこの方法でできないかなと思ったまでで
他の方法でも構いません。実際、
stringでHtmlのソースを読み込んで
ノードは実装できてますし。


918デフォルトの名無しさん:2007/04/08(日) 21:47:23
つまり、行き当たりばったりで作ってるだけってことですな。

HtmlDocumentの構造を勉強しなおしたほうがいいよ。
919デフォルトの名無しさん:2007/04/08(日) 21:50:58
何故,
>document = (HtmlDocument)docTemp;
こんな幼稚なことが通ると思ったのかが謎。
920デフォルトの名無しさん:2007/04/08(日) 21:55:59
あー……ようやくやりたいことがわかった。
でも普通やらないな、そんなこと。

こんなのとか。
TreeNode category = new TreeNode();
foreach (HtmlElement element in webBrowser.Document.Body.GetElementsByTagName("FONT")[0].Children) {
   switch (element.TagName) {
     case "B" :
      treeView1.Nodes.Add(category = new TreeNode(element.InnerText));
      break;
     case "A" :
      category.Nodes.Add(new TreeNode(element.InnerText));
      break;
   }
}

確かにもうちょっとセマンティックな HTML が欲しいところではあるが。
921デフォルトの名無しさん:2007/04/08(日) 22:01:55
とりあえずMSDNライブラリをろくに読んでないことは把握した。
922デフォルトの名無しさん:2007/04/08(日) 22:09:26
>>918
いや、作るもなにも勉強しながら練習してるだけです。
まだまだ知識がありませんので変なことも沢山やってますので
そのときはどんどん指摘していただけると嬉しいです。
>>919
やってみて通ったらラッキーぐらいでやりました。
>>920
ありがとうございます。説明下手ですいませんでした。
これでやってみます。
923デフォルトの名無しさん:2007/04/08(日) 22:18:48
ソースをstring に読み込んで (exe) でキャストしてファイルに書き込むと、
実行ファイルが出来る。

キャスト万歳!
924デフォルトの名無しさん:2007/04/08(日) 22:23:30
>>923
CodeDOM とキャストのオーバーロードを使えば大体可能だがw
925デフォルトの名無しさん:2007/04/08(日) 22:25:11
SourceCode code = new SourceCode(str);
((Exe)code).Start();
みたいに書けるようにしたら面白いかもしれないな
実際可能だろうし
926デフォルトの名無しさん:2007/04/08(日) 22:29:21
まあわざわざキャストで実現することはなかろ
code.Compile().Start();
の方がよほど自然
927デフォルトの名無しさん:2007/04/08(日) 22:31:20
>SourceCode code = new SourceCode(str);
>((Exe)code).Start();
strの中に、これを入れたら…
928デフォルトの名無しさん:2007/04/08(日) 23:02:58
昔、アセンブラとマシン語でMC68000いじってたころは、メモリ節約とかプロテクトとかワームとかで
おなじようなことあったね〜
929デフォルトの名無しさん:2007/04/09(月) 00:25:32
そんなあなたにはILGeneratorがおすすめ
930デフォルトの名無しさん:2007/04/09(月) 09:18:21
そんなつまんないことオプティマイザに任せろよ。
931デフォルトの名無しさん:2007/04/09(月) 17:19:37
>>864
すごい亀だが、WinAPIのSetParent
932デフォルトの名無しさん:2007/04/09(月) 18:43:20
BackgroundImageが設定されてるパネルの上の背景がTransparentのコントロールの描画時のちらつきを少なくする方法はありますか
933デフォルトの名無しさん:2007/04/09(月) 20:27:57
>>932
マニュアルに 「ちらつきますが気にしないでください」 って書けば良いと思うよ
934デフォルトの名無しさん:2007/04/09(月) 20:33:19
【FAQ】

 Q) 画面のちらつきが気になるのですが……。

 A) 気のせいです。
935デフォルトの名無しさん:2007/04/09(月) 22:03:13
>>932
何したときにちらつくの?
936デフォルトの名無しさん:2007/04/10(火) 21:04:25
>>935
例えばコントロールの追加や移動
937デフォルトの名無しさん:2007/04/11(水) 04:48:47
for (int i = 0; i < checkedListBox1.Items.Count; i++)
{

{
if (checkedListBox1.GetItemChecked(i))
{
string host = "localhost";
int port = 4854
/*
int $tcp = i;
//TcpClientを作成し、サーバーと接続する
System.Net.Sockets.TcpClient $$tcp =
*/
new System.Net.Sockets.TcpClient(host, port);

}

}
}
ちょっとperl見たいな書き方になっていますが
i = 3 であれば 作成されるtcpクライアントの変数名が3
i = 4 であれば 作成されるtcpクライアントの変数名が4
のような記述のしかたをおしえていただけませんか?
938デフォルトの名無しさん:2007/04/11(水) 04:50:44
変数名は無理・無駄・ムラムラ
939デフォルトの名無しさん:2007/04/11(水) 10:37:07
配列作っといてインデックスでアクセスすれば?
940デフォルトの名無しさん:2007/04/11(水) 11:18:59
>>939
インデックスでのアクセスの仕方がわかりません。。
941デフォルトの名無しさん:2007/04/11(水) 11:20:00
なぜ変数名を変えたいのか
942デフォルトの名無しさん:2007/04/11(水) 11:21:17
任意の数のソケットを作りたいんです
943デフォルトの名無しさん:2007/04/11(水) 11:26:33
List<>とか、そういう系統の構造を使えばいいじゃない。
944デフォルトの名無しさん:2007/04/11(水) 11:26:34
hoge[i]
が解らんって?
じゃあ、switch/ifで全パターン網羅しろよ。
945デフォルトの名無しさん:2007/04/11(水) 11:30:35
int[] tcp = new int[500];
System.Net.Sockets.TcpClient tcp[i] =
new System.Net.Sockets.TcpClient(host, port);
こうでしょうか?
946デフォルトの名無しさん:2007/04/11(水) 11:31:52
List<>とはhoge[i]とかのことですか?
947デフォルトの名無しさん:2007/04/11(水) 11:33:12
釣りならよそで
948デフォルトの名無しさん:2007/04/11(水) 11:35:15
初心者でなのにはしょってすみません。。
int[] tcp = new int[500];
for (int i = 0; i < checkedListBox1.Items.Count; i++)
{
{
if (checkedListBox1.GetItemChecked(i))
{
string host = "localhost";
int port = 4536;
System.Net.Sockets.TcpClient tcp[] =
new System.Net.Sockets.TcpClient(host, port);

}
}
}
949デフォルトの名無しさん:2007/04/11(水) 11:39:28
はしょらずに基本からどうぞ>>5-6
950デフォルトの名無しさん:2007/04/11(水) 11:40:25
>>944
リスト長が可変なのでちょっとむずかしいです
951デフォルトの名無しさん:2007/04/11(水) 11:43:19
ヒントになるキーワードいっぱいもらったんだから一巡り検索してこいよハゲ
952デフォルトの名無しさん:2007/04/11(水) 11:57:40
昨日からずっと調べてわからなかったから来たのですがだめでしょうか?
System.Net.Sockets.TcpClient tcp[i] =
new System.Net.Sockets.TcpClient(host, port);
ここの部分がどうしても解決できないんです
953デフォルトの名無しさん:2007/04/11(水) 15:08:32
954デフォルトの名無しさん:2007/04/11(水) 15:52:24
なんとかできた!
ありがたう
955デフォルトの名無しさん:2007/04/11(水) 17:16:15
Type tの指す型にオブジェクトをキャストするってどうやるんでしょう?
リフレクションとかいうものを使わないといけないんでしょうか
956デフォルトの名無しさん:2007/04/11(水) 17:25:10
gettype つかえばいいんじゃにゃい?
957デフォルトの名無しさん:2007/04/11(水) 17:31:25
>>955
試しに作ってみたけど、何が起きても知らん。

public static object Cast(object obj, Type t)
{
IntPtr ipObj = IntPtr.Zero;
try
{
ipObj = Marshal.AllocHGlobal(Marshal.SizeOf(obj));
Marshal.StructureToPtr(obj, ipObj, false);

return Marshal.PtrToStructure(ipObj, t);
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (ipObj != IntPtr.Zero)
{
Marshal.FreeHGlobal(ipObj);
}
}
}
958デフォルトの名無しさん:2007/04/11(水) 21:54:36
VC++で言う、排他的論理和のペンが使いたいんですが
例えば

int saveRop = pDC->GetROP2();
pDC->SetROP2(R2_XORPEN);

//ここでラインなんかを描画

pDC->SetROP2(saveRop);

こんな感じのものがC#にあれば教えて欲しいですが・・・・
959デフォルトの名無しさん:2007/04/11(水) 22:03:53
GDI+ には無いね。
ControlPaint の Reversible 系は画面にしか描けないし。
System.Drawing.Pen は GDI の PEN オブジェクトのラッパってわけじゃないから FromHandle 持ってないし。
Graphics から GetHdc して GDI でがりがり描くしか。
960デフォルトの名無しさん:2007/04/11(水) 22:05:01
GDI+は本当に使えない子だよね。
BitBlt相当もないし。
961デフォルトの名無しさん:2007/04/11(水) 22:09:22
マイクロソフトはMIL APIを公開するべきだと思うんだ
962958 :2007/04/11(水) 22:34:15
ありがとうございます
963デフォルトの名無しさん:2007/04/11(水) 23:15:13
線の枠の形でクリッピングパスを生成して色変換すればいい。
964デフォルトの名無しさん:2007/04/11(水) 23:29:06
>>961
のぞいてみれば分かるがたいしたもん入ってなさげだぞ
少なくともUIのもろもろはその上の混合アセンブリ内

まあDirect3DかOpenGL使えってこった
965958:2007/04/11(水) 23:52:42
とりあえず、教わった事を、ちょっと具体的にして
同じ質問を持つ香具師の為に


GDIのクラスを作る

class GDIClass
{
public const int R2_XORPEN = 7;

System.Runtime.InteropServices.DllImport("gdi32.dll")
public static extern int SetROP2(IntPtr hdc, int fnDrawMode);
System.Runtime.InteropServices.DllImport("gdi32.dll")
    public static extern int GetROP2(IntPtr hdc);
}


なんかのフォームで

private GDIClass GDI = new GDIClass();

Graphics g = this.CreateGraphics();
//ここでgを使ってペンを設定
IntPtr hdc = g.GetHdc();
int saveRop = GDI.GetROP2(hdc);
GDI.SetROP2(hdc,GDI.R2_XORPEN);

//ここでラインなんかをGDIを使って描画

GDI.SetROP2(hdc,saveRop);
g.ReleaseHdc(hdc);
966デフォルトの名無しさん:2007/04/12(木) 00:04:39
突っ込みどころ満載で…
967デフォルトの名無しさん:2007/04/12(木) 02:05:47
んじゃ代りに。

・[]。コンパイル通らないっしょ。
・staticメソッドを使うのにクラスをインスタンス化する必要はない。
・CreateGraphics()して作ったGraphicsはDisposeする。ReleaseHdcしない。
・CreateGraphics()して作ったGraphicsで描くと再描画で消える。
968デフォルトの名無しさん:2007/04/12(木) 02:21:13
++厨全員あんなんじゃないぞと言っておく
969デフォルトの名無しさん:2007/04/12(木) 10:50:35
すみません、TextBox や RichTextBox では、キー操作で
cntrl + Ins や shft + Ins などすることで、はじめから自動的に
Copy & Paste する機能が実装されていますが、、

これってのはマウス操作でこれと同じことをやるときは、自分でそのため
のメソッドを全部作成してやらないといけないでしょうか?それとも、
これらのキー操作で叩いている内部のメソッドか何かがあってそれをCallする
だけでできる、みたいなことはあるでしょうか?
970デフォルトの名無しさん:2007/04/12(木) 11:01:06
>>969
実装されているのは、OSのほう。
マウス操作も同じ。
971デフォルトの名無しさん:2007/04/12(木) 11:16:20
>>970
そうだったんですか、どうもです。

ということは、Copy&Pasteなどは、Mouse操作でボタンを押して行なうような
場合の動作は、FileやFolderなどのCopyなども、CopyやPasteの機能を
コードで作成して自分で実装するしかないということになるわけですよね。
972970:2007/04/12(木) 11:20:03
いや、独自の処理を実装する以外は、コードを書く必要はない。
Win32api・メッセージループで検索してみ。
973デフォルトの名無しさん:2007/04/12(木) 18:17:03
ぐぐったけど実際どうやればいいのか見つけられなかった
974デフォルトの名無しさん:2007/04/12(木) 20:18:22
>>967
なんかこういう得意げな馬鹿って笑えるなw
975デフォルトの名無しさん:2007/04/12(木) 23:22:24
新スレ
http://pc11.2ch.net/test/read.cgi/tech/1176387265/

過去ログの URI リストをお持ちの方おりましたらどうか書き込んでいただけませんでしょうか。
976デフォルトの名無しさん:2007/04/12(木) 23:31:33
お前の方が笑えるっていうか笑えない。
977デフォルトの名無しさん:2007/04/13(金) 00:02:07
>>1読んだことなかったが、ここは>>1の案内とは別世界だな。
チョット反省した。
今まで、すまんかった。
978デフォルトの名無しさん:2007/04/13(金) 01:04:05
学校いけよ
979デフォルトの名無しさん:2007/04/13(金) 08:37:34
俺ももう一度学校行きたいわ
980デフォルトの名無しさん:2007/04/13(金) 09:34:59
むしろ小学生からやり直したい
今の知識とかのままでw

といつも思う
人生の分岐点間違えすぎだ俺・・・・
981デフォルトの名無しさん:2007/04/13(金) 10:40:51
どうせどの選択をしても大してかわってなかったと思うよ
とお決まりのセリフ
982デフォルトの名無しさん:2007/04/13(金) 11:56:11
合法的に、小学生とか中学生の女の子と遊べるではないか。

この歳になると、遊ぶだけで犯罪だよ・・・
いあ、むしろ話しかけるだけで・・・orz
983デフォルトの名無しさん:2007/04/13(金) 12:00:59
>>982
さぁ、今晩何処で飲みながら語り合おうか?
984デフォルトの名無しさん:2007/04/13(金) 21:09:35

プログラミングするぞ!プログラミングするぞ!
985デフォルトの名無しさん:2007/04/13(金) 21:16:05
徹底的にハードな
986デフォルトの名無しさん:2007/04/14(土) 15:40:43
システムの音量を調整したいのですが調べても全然出てきません。

WAVファイルはPlaySound()というもので再生や停止ができる。
という程度の事は分かったのですがシステム全体の音量を調整したいです。

どなたかヒント教えてもらえませんか?
987デフォルトの名無しさん:2007/04/14(土) 18:55:41
[1] winmm.dll 内の mixer で始まる関数名を DllImport。必要な構造体を定義。
[2] mixerGetNumDevs
[3] mixerGetDevCaps
[4] mixerOpen
[5] mixerGetLineInfo
[6] mixerGetLineControls
[7] mixerGetControlDetails ←ここで音量取得
[8] mixerSetControlDetails ←ここで音量設定
[9] mixerClose

ちなみに、P/Invoke の知識をフル活用しないと出来ないです。
これが組めるのならば、既に貴方は初心者ではありません。

ttp://www.terra.dti.ne.jp/~vivas/delphi/mixerapi.html
ttp://hp.vector.co.jp/authors/VA016117/mixer1.html
988デフォルトの名無しさん:2007/04/14(土) 19:00:59
ま、一応、答えは
ttp://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=200027&SiteID=1
にあるから、自分で作れなさそうだと思ったら参考にするのも一興。
989986:2007/04/14(土) 21:26:29
レスありがとうございます。
しかし何が書いてるかすら分からないorz
学生でまだ手探りってレベルです。

ここで聞くのもなんなんですがVBでちょっと調べてみたらまだこっちよりは簡単そうなんですがどうでしょうか?
990デフォルトの名無しさん:2007/04/14(土) 21:27:37
>>989
.NETなんだしVB.NETで理解できるんならVB.NETで書けばいいんじゃね?
991デフォルトの名無しさん:2007/04/14(土) 21:29:35
.NETならC#が一番すっきりかけるんじゃない会
992デフォルトの名無しさん:2007/04/15(日) 00:18:42
言語の問題じゃないだろバカ
993デフォルトの名無しさん:2007/04/15(日) 01:57:34
言語の問題だマヌケ死ね
994デフォルトの名無しさん:2007/04/15(日) 05:34:26
プログラミング初心者です。
いきなりC#から始めるのって大丈夫ですか?
C言語から始めたほうがいいのかな???
995デフォルトの名無しさん:2007/04/15(日) 05:52:00
C言語はあまりC#の役には立たない希ガス
C#から始めたら?
996デフォルトの名無しさん:2007/04/15(日) 09:17:29
C#とC言語系はまったく違う
従ってCを勉強してもC#では役に立たない
997デフォルトの名無しさん:2007/04/15(日) 10:29:47
ポインタの概念だけはCで学ぶと手っ取り早いけどね。
998デフォルトの名無しさん:2007/04/15(日) 10:30:54
ポインタはアセンブリ言語をやるのが一番手っ取り早いよ。
999デフォルトの名無しさん:2007/04/15(日) 10:44:13
アセンブリじゃ言語構造が違うだろ。別にいいけど。
1000デフォルトの名無しさん:2007/04/15(日) 10:46:51
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。