このスレッドは 「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
ごめんなさい このスレは放置して下さい
次スレとして使えばいいんでないの
11 名前:デフォルトの名無しさん[sage] 投稿日:2007/01/18(木) 19:19:37 質問するときに 〜したいのですが、上手くいきません。 〜したときにエラーが出ます。 という書き方はイクナイ。 何も書いてないのと同じ☆ 〜したいのですが、〜で〜が失敗します。 〜したときに〜エラーが出ます。 隠さずくわしくかきましょう
System.Net.WebClient を非同期で動かすと、 コールバックは呼び出し元のスレッドで発生するわけなんですが、 これってどうやって実現してるんでしょうか? 相手が、Windows.Forms.Control 限定なら、 (Delegate.Target as Control).Invoke でいけると思いますが、Forms.Control 以外でも 呼び出し元のスレッドでイベントを発生させる方法が あれば教えてください。
> コールバックは呼び出し元のスレッドで発生する まじで?
10 :
7 :2007/03/01(木) 08:34:17
>>9 コールバックされたメソッド内で、Control.InvokeRequired=false なので
呼び出し元のスレッドで動いてると思います。
12 :
8 :2007/03/03(土) 01:26:09
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みたいな奴があれば解決するのか?とも思うのですが, やり方が分かりません. どなたかご教授下さい.
unmanagedからmanagedにコピーするならMarshal.Copy(IntPtr source, Byte[] destination, Int32 startIndex, Int32 length)だ
>>13 Bitmapデータは行末に詰め物があるからStrideから計算して一行ごとにコピーしないとダメだよ
16 :
デフォルトの名無しさん :2007/03/03(土) 21:39:27
こんばんわ、お世話になります。 socketが相手から切断された場合に検地したいのですが、ReadLineの 返値から判断する事は出来るのでしょうか?。
できません。
18 :
デフォルトの名無しさん :2007/03/03(土) 21:49:24
>>17 やはり・・色々と試しているのですがエラーもでませんよね
みなさん、どうやって検出されているのですか?
Connected
20 :
デフォルトの名無しさん :2007/03/03(土) 22:03:57
クライアント側で切断してもループしたままでした TcpClient tcp = server.AcceptTcpClient(); while (tcp.Connected) { }
21 :
13 :2007/03/04(日) 00:33:55
>>15 一度バッファにコピーしてから〜という感じでしょうか?
>>13 Marshal.Copy(fdmpciGetBuffer(), bmp_data.Scan0, 0,BMP_WIDTH * BMP_HEIGHT);
としても
-----
エラー 2 引数 '1': 'byte*' から 'int[]' に変換できません。
エラー 3 引数 '2': 'System.IntPtr' から 'int' に変換できません。
エラー 4 引数 '3': 'int' から 'System.IntPtr' に変換できません。
-----
といった感じです.IntPtrってのがそもそも理解できてないので,手のつけようが・・・.
ttp://msdn2.microsoft.com/ja-jp/library/system.intptr (VS.80).aspx
を読んでも,「何のために」「いつ」使うべきものなのかが分かりません.
22 :
13 :2007/03/04(日) 00:35:20
----- Public Declare Sub RtlMemtoArrMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, ByVal Source As Any, ByVal Length As Long) ----- Private Sub Timer1_Timer() Dim num As Integer Dim i As Long, j As Long Dim ptr As Long Dim oldBMP1 As Long, DIBS1 As Long Dim oldBMP2 As Long, DIBS2 As Long Dim imgbuff As Long Dim color As Long num = fdmpciGetFrameNum Call fdmpciSingleCapture window_clear DIBS1 = CreateDIBSection(window1.hDC, bmpinfo, 0, hMem1, 0, 0) oldBMP1 = SelectObject(window1.hDC, DIBS1) DIBS2 = CreateDIBSection(window2.hDC, bmpinfo, 0, hMem2, 0, 0) oldBMP2 = SelectObject(window2.hDC, DIBS2)
23 :
13 :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 -------ここまで
かなり長くておじゃまかと思いましたが,製品にくっついてたVB6のサンプルソースを転載いたします. 2ch同時に入力可能なキャプチャーボードなので,各所でそのようなサンプルとなっているようです. (タイマーイベントは33msに一回,つまり30FPSになっている) これをC#で実装しなおすのが一応の目標なのですが・・・
読まずにレスするけど、 byte *fdmpciGetBuffer(void) の戻り値はbyte配列の先頭アドレスなんだろうから インポートするときにシグネチャを [DllImport( hoge.dll )] IntPtr fdmpciGetBuffer(); ってすりゃいいんでないの?
>>25 要領得ない質問者にまともなレスを返すあんたは偉いな。
フォームのAllowDropプロパティをtrueにしてもイベントが来ない・・・。 かれこれ半日くらい迷っています・・・。 私にはもうお手上げです・・・(´;ω;`)ブワ
>>27 Part13のほうでエスパー回答しといたから。
>>30 ありがとうございます。
あちらのほうに返事をしておきました。
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のアクセスが出来ていないようです(線などは描けます) 何か足りないのでしょうか?
pictureBox1 じゃなくて pictureBox1.Image だろ SelectObject で srcHDC にコピー元のビットマップを選択してやらにゃならん ……つか PictureBox 使う意味あるのか?
>>34 アホなんだから黙ってた方がいいと思うよお前さん。
トンチンカンなこと言っちゃってw
純粋にプログラム的に言えば
>>33 はどこもおかしくないと思うよ。
いや、BitBltの返り値がboolなのはちょっと違うと思うけど。。
回答する前に試しもしない奴に言われたくはないが……。
37 :
33 :2007/03/04(日) 19:02:51
質問用にちょっとソース変えてあります 実際はOnPaintから呼んだ先で作業しているのですが SelectObjectを具体的にどこにどんな風に入れるといいんでしょうか boolなのはサンプルプログラムの引用なんですが 問題でしょうか?
boolで全く問題ないよ
おいおいw Console.WriteLine(sizeof(bool)); Win32のBOOLはlongのエイリアスだから、対応するマネージ型はInt32かUint32 だと思いますよw
void で全く問題ないよ
DllImport の場合マーシャラは既定では bool を Win32 の BOOL に変換する。 だから何も問題ない。
今度は引数と返り値の区別がつきませんか。 困った君ですねまったくw
春だよなあ
44 :
33 :2007/03/04(日) 19:43:49
pictureBox1.ImageをBitmapにしてSelectObjectするといいんでしょうか
SelectObject 関数は調べれば分かる 画像を選択するには HBITMAP を渡す必要があるわけだが、これは Image クラスの GetHbitmap メソッドで取得できる 使用後は SelectObject で元々選択されていたのを選択しなおして、取得した HBITMAP の方は DeleteObject
46 :
33 :2007/03/04(日) 20:38:40
C#では SelectObjectは現在のコンテキスト内には存在しません エラーが出てしまいます いつでもいいのでどなたか pictureBox1.ImageからForm1へのBitBltでのコピー成功例を示してもらえると嬉しいのですが
>>46 BitBltなんて多用してるけど、今までなにも問題出てないけどなあ。
主に裏画面(Bitmap)と実画面の間の相互の転送だけど。
SelectObjectの話はヨタだから真に受けちゃダメよw
是非とも該当部分のコードを晒してくれ
50 :
33 :2007/03/05(月) 00:32:21
実行時にフォーム白地に赤で×が描かれエラーが出るようになってしまった コンパイラが壊れてしまったのか それともこれは何か特有の現象?
描画メモリに不正アクセスしたっぽい挙動だなぁ
e.Graphics を Dispose したとかそんなんじゃね? ま、原因は幾らでも
いやいや、
>>50 みたいな現象はフォームとかPictureBoxとかに描画するときに
描画メソッドで例外が発生するとそうなる。
例えばデバッグなしでこんなコード実行すると再現できるよ。
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Point[] pts = { new Point(0, 0) };
e.Graphics.DrawLines(Pens.Black, pts);
}
54 :
33 :2007/03/05(月) 02:28:20
GDIはデリケートですね エラーは戻せたけど なにかプロパティをいじらないといけないのかな
そもそもどうしてBitBltでなければならないのかを説明しておくれ。
e.Graphics.DrawImage() とか、this.BackgroundImage とかではだめなの?
いや、33じゃなくてもBitBlt使いたい場面は少なくないはず。 だって該当する機能がGDI+にはないからね。 そういう問いかけはナンセンスだよ。 今日仕事終わったら33の言ってる問題が再現するか試してみようかな。
58 :
33 :2007/03/05(月) 10:16:01
BitBltしか知らなかったもんで これですか e.Graphics.DrawImage() これはコピー元の座標指定ができないんですかね?
できる。 Graphics.DrawImage()はやたらとオーバーロードが多いので、MSDNライブラリでよく確認して、適切なものを選んで。 なお、俺はOnPaint()で(というか、.NETコントロール全体を通して)BitBltを使うこと自体が間違ってると思うよ。
>BitBltを使うこと自体が間違ってる だからそんなことないって。 例えば描画サーフィスから画像をBitmapに転送することは GDI+では実現できないんだから。
61 :
13 :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分)
エスパーの皆さん,ありがとうございました.
>>61 fdmpciGetBuffer()でとったバッファはこっちで解放しなくていい仕様なの?
63 :
33 :2007/03/05(月) 20:45:10
BitBltを使わないほうが良いというのは.NETの中に全て収めた方が良いということでしょうか BitBltでは意味不明のところで例の赤×エラーが多発してお手上げ状態になります e.Graphics.DrawImageとBitmapを使ってやってみました(速さはどうなのか分かりませんが) ウインドウが隠れても絵が消えないこと 表画面から裏画面への逆コピーが出来ること 裏画面の座標指定が出来ること 表示画面のセーブが出来ること これらの条件を満たせるようにしました どうでしょうか?
64 :
33 :2007/03/05(月) 20:46:14
int d1,x1,y1; Bitmap _bmp = new Bitmap(300, 300); //表面 Bitmap _bmp2 = new Bitmap(@"C:/test.jpg"); //裏面 Rectangle srcRect = new Rectangle(0, 0, 300, 300); GraphicsUnit units = GraphicsUnit.Pixel; protected override void OnPaint(PaintEventArgs e) { if (d1 == 0) init(); x1 = 0; y1 = 0; srcRect.X = 0; srcRect.Y = 0; srcRect.Width = 300; srcRect.Height = 300; //常に表面を表示 e.Graphics.DrawImage(_bmp, x1, y1, srcRect, units); } private void init() { //ここは最初に1度だけやることを書く //試しに裏の横50から100切り取って表へコピー Graphics g = Graphics.FromImage(_bmp); x1 = 0; //表X座標 y1 = 0; //表Y座標 srcRect.X = 50; //裏X座標 srcRect.Y = 0; //裏Y座標 srcRect.Width = 100; //転送X幅 srcRect.Height = 300; //転送Y幅 g.DrawImage(_bmp2, 0, 0, srcRect, units); g.Dispose(); d1 = 1; }
65 :
33 :2007/03/05(月) 20:50:01
インデント失敗^^
どうでしょうか、って言われても 知らんがな、としか答えようがないのでは。。。
67 :
33 :2007/03/05(月) 21:14:28
一応画像のやり方のコツはつかみました 教えてくれた方々 どうもありがとう。
どうでしょう、っていうか、とりあえずbase.OnPaint()を呼んでないのはよくない。
>>64 のコードって、コンストラクタで
Init();
BackgoundImage = _bmp;
とやれば、OnPaint()を使う必要ないんじゃね。
70 :
33 :2007/03/05(月) 22:06:23
そうですか もっと調べてみます
http プロトコルで配布されているzipファイルの 日付だけを取得することはできますか? 今は、手動でダウンロードしているんですが、 更新されていたら自動でダウンロードする機能を つけたいもので。
72 :
13 :2007/03/06(火) 14:36:19
>>62 サンプルソース&仕様書を読む限りでは
fdmpciSingleCapture()
でキャプチャー後,
fdmpciGetBuffer()
で得られたアドレスからデータを読み出すだけでokなようです.
(キャプチャーボードへの接続開始,終了時はそれぞれInit,Exitという処理がありますが)
WebClient.DownloadFileAsync 内で WebException が発生しているようなのですが、 try{ WebClient.DownloadFileAsync(...); }catch(WebException){ .... } と書いても catch できません。DownloadFileAsync 内で発生した例外を catch する にはどう書いたらよいのでしょうか?
>>71 HTTP の仕様、If-Modified-Since を調べなさい
つうか HEAD でいいじゃん
返してくれるかどうかは相手の鯖次第だけどな
>>73 確認してないが、DownloadFileCompleted のイベント引数に入ってないか?
78 :
73 :2007/03/06(火) 23:13:32
>>77 ばっちりでした。
ありがとうございました。
さっき C# 触ったばかりですが質問ください int i = 1; string s = (string) i ; と、これでは整数型を文字列型にキャストできないようなのですが、 どうすればできるでしょうか
string s = i.ToString();
>>80 ありがとうございます できました!
ところで、いま VC# 2005 無償版を触っていますが、
プロシージャ(?)を作った際に、 { } は自動で補完してくれないのものなのでしょうかどうでしょうか
そんなん補完されても全く嬉しくないな
してくれないものです
プロシージャて呼ぶのは何やってる人だろう・・・
>>84 元コボラーもしくはDB/SQLべったりな人とかはそういう呼び方しそう。
VBじゃないの?
VBだったらEnd SubなりEnd Functionが補完されるのに、ってことか。
>>86 ん? VBでプロシージャなんて呼称でてきたっけ?
パルカルあたりが起源の言葉だと思うけど、Cの文化でもプロシージャっていうでしょ。 WndProcのProcじゃん。
>>89 パスカルは知らんけど、Cの用語/文化ではプロシージャってのは聞かんぞ。
そりゃWndProcみたいな一部の関数名としては聞くけど。
92 :
デフォルトの名無しさん :2007/03/07(水) 01:30:13
CellValidatingについて教えてください DataGridViewにて同一行に移動した場合はCellValidatingイベントを 発生させたくないのですが、まったくわかりません。 バカな質問かもしてませんが どなたかおねがいします
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データの加工をしてしまえば できると思うのですが、デザイナ画面で実装イメージが確認したいので そのようにしたくはありません。
97 :
デフォルトの名無しさん :2007/03/07(水) 13:04:54
コンパイルした後の、最適化されたソースを見ることはできますか? どこかのページで見たような気がするのですが。。
コンパイルとはCILへのコンパイルのことかJITコンパイルなのか。 前者ならildasmか.NET Reflector、後者ならそのへんのデバッガで
99 :
デフォルトの名無しさん :2007/03/07(水) 15:02:59
VS2005にてビルドを行った時に、中間言語みたいなものを見ることができなかったかなぁと。 よく、解説サイトなんかで、volatileを使った時の結果を見てみましょう みたいな感じで、volatileをつけたときとつけない時の比較を行ったりしている時に 表示しているコードみたいな。。 VS2005、アセンブリにする直前のソースを表示させる事なんかができないのかなぁと。 無ければ.net reflectorを使ってみます。 ありがとうございます。
ILならildasmで見れるだろ
おぅ。なるほど〜 .net reflectorに目がいってますた ありがとうございます。
DropDownStyle=DropDownList な ComboBox を作りました。 このコンボボックスの状態を ApplicationSetting 保存しようと、 (ApplicationSettings).(PropertyBinding)にTextを設定しましたが、 無視されました。 DropDownList でどの項目が選択状態にあるか保存するには (ApplicationSettings).(PropertyBinding)になにを指定すれば よいのでしょうか?
104 :
デフォルトの名無しさん :2007/03/09(金) 18:44:43
前スレ埋まったのでage
↓同意。 1000 名前:デフォルトの名無しさん[sage] 投稿日:2007/03/09(金) 18:44:10 マ板でやれ
__________ __ ______ _____ ___ ___ ___
/ / / / | / /__ __/ [][] _| |_| |__ _| |_
/_______ /__/ /_ | ____/ / / | _ | |_ レ'~ ̄|
/ / /__ _/ / /____ | |___  ̄| | / / / /| |
/ / / | / __ / \__| | |  ̄ /_ / | |_
/ \ / / / | / | / / |_| |__| \/
.\ \/ / / / /|_| / /| | / /
\ / \// / / / \ V / We are The Real Programmers
\ \ / / / / / \
http://pc11.2ch.net/prog/ \/ /_/ /_/ ∠_/\_\
マ板でやれというのももっともなので最後にしますが >>前スレ997 おまえさん独善的杉。妄想力が豊かなのは結構だが、脳内ソースで人を非難するのはやめてね。
まだ春休みなのか・・・
110 :
デフォルトの名無しさん :2007/03/10(土) 16:42:48
C#で書かれたPNGもしくはJPEGのプログレッシブ表示に対応したコントロールありませんか? あったら教えてください。 プログレッシブ表示のアルゴリズムを知りたいのですが。
111 :
デフォルトの名無しさん :2007/03/10(土) 16:48:11
それならC#である必要ないだろ
Javaで書かれたのならあるだろ ほとんどC#と変わらない
マ板とかム板とか! どっちも同じプ板じゃないか!!
115 :
デフォルトの名無しさん :2007/03/10(土) 18:49:32
プロジェクトを新規作成するときに、「ソリューションのディレクトリを作成」にチェックを入れなかった場合、 あとから、「ソリューションのディレクトリを作成」にチェックを入れたのと同じ状態(フォルダ構成とか、 exeファイルの出力先とか)にするにはどうしたらよいでしょうか?
ディレクトリとソリューションファイルなどを再配置し、プロジェクト出力先を変更するだけじゃないのかな?
Hoge.slnファイルを削除してそのプロジェクトのフォルダを任意の位置に移動して ほかのソリューションにHoge.csprojを追加するだけ
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)
何かデータベースと関係があるのか? Bitmap 型なら Width/Height と PixelFormat/GetPixelFormatSize 使えばいいだろ。
122 :
119 :2007/03/11(日) 15:44:16
>>119 で書いた方法でデータベースに保存したのですが、
Bitmap bmp = dataGridView[col, row].Value as Bitmap;
としても、bmp が null になってしまいました。
そこで、Bitmap を取り出す方法はあきらめて、サイズの取得
方法を質問したわけですが、結局 Bitmap を取り出さなければ
いけないようです。
private void t_FILEDataGridView_CellToolTipTextNeeded(object sender, DataGridViewCellToolTipTextNeededEventArgs e)
{
if (e.ColumnIndex < 0 || e.RowIndex < 0) { return; }
DataGridViewImageCell cell = t_FILEDataGridView[e.ColumnIndex, e.RowIndex] as DataGridViewImageCell;
if (cell != null)
{
Bitmap bmp = t_FILEDataGridView[e.ColumnIndex, e.RowIndex].Value as Bitmap;
if (bmp != null)
「
123 :
119 :2007/03/11(日) 15:46:35
すいません、編集中に誤って書き込んでしまいました。 コードは上記の通りなんですが、 bmp が null になってしまうんですが、なんで null に なってしまうのでしょうか?
データベースには Bitmap 型なんて存在しないから。 直接画像ファイルのバイトイメージが入ってるんじゃなかったっけ。
MySQLだとblob型ってバイナリ格納用があるが PHPでそこに入れる場合、mysql_real_escape_string()を 通さないといけないらしい 俺じゃ答えらんないから そういうこともあるってことで参考までに
PHPのPDOでない関数は直接文字列としてクエリを送るからescapeする必要がある。BLOBでもTEXTでも。 しかしこの場合は自動でデータバインディングされるような。
127 :
119 :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 になってしまうのがなぜなんだろう〜って感じです。
DataGridViewImageCell が頑張ってるからに決まってる
129 :
119 :2007/03/11(日) 18:45:04
自己解決したのでご報告を。 byte[] bytes = dataGridView[col, row].Value as byte[]; とした後、 bytes から MemoryStream をつくって、 Bitmap.FromStream() としたら、読めました。 レスをくれた皆様、ありがとうございました。
>>119 ”データベースに画像を保存”でググると簡単にその答えに辿り着くね
質問いいですか? Doucuworksみたいな文書をMDIウインドウ内に表示って出来るんですかね? 2005EE Win2000です
OLEサーバとして公開されてればもしかしたら可能。 まあ、(おまえには)無理
134 :
102 :2007/03/11(日) 22:58:11
どなたか、私にも愛の手を差し伸べてはいただけないでしょうか・・・orz
じゃあ愛の鞭な。 普通に@itのTIPSとかにあるとおりやるだけじゃん。 っていうか、Textってなんだよw 本屋に平積みされてる超初心者向けの入門書から勉強した方がいいと思うよ。
>>134 ComboBoxのSelectedIndexを格納する不可視のTextBoxなりなんなりを用意して
そっちでPropertyBindしたら?
まあ自前でxmlファイルに保存した方が簡単だと思うが
>>136 TextBox使うって、どっちみちコード書くならそのまま
SelectedIndexの読込/保存を書くほうがいいんじゃねーの?
138 :
137 :2007/03/12(月) 02:17:28
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側からデータを格納すればいいのか、といったことがわかりません。 初歩的な質問で申し訳ないのですが、 ご助言お願いします。
配列を返す、読み取り専用のプロパティを定義したとします。 読み取り専用にしても、配列の各要素は自由に書き換えできてしまいますよね。 この場合、配列の各要素の書き換えを禁じる方法はあるのでしょうか?
コード書いて試せば一番早いことはわかってるんですが質問させてください。すいません。 継承についてですが 1、継承は基本クラスのメンバのコードを、内部的に派生クラスへコピぺする機能である。 2、自動で基本クラスのインスタンスが作られ、それを利用できる機能である。 (new一回につき基本と派生で一個ずつ、インスタンスが二つできる) のどちらなんでしょうか? また、 1、の場合 ・privateメンバは継承されない ・protectedメンバは継承され、privateのように振舞う。 2、の場合 ・privateはprivate。アクセスできるわけないじゃないか。 ・protectedメンバは派生クラスからはアクセスしていいぜ。 ってことであってるんでしょうか?
>>141 1か2かで言ったら1。new一回につきインスタンスがいくつもできたんじゃたまらん。
で、privateは基本クラスのみから、protectedは基本クラスと派生クラスの両方からアクセスできる。
>>140 ないんじゃね?
そのプロパティで配列のコピーを返すようにすれば
書き換えはできるがもとには反映しなくなるけど
>>140 配列帰す限りはムリだと思う。
getインデクサでも定義して要素だけ返せば?
>>140 それか、そのプロパティを読み取り専用のインデクサにしてみることを検討
>>140 いっそプログラムやめちまえばいいんじゃね?
148 :
デフォルトの名無しさん :2007/03/12(月) 13:08:15
2.0ならクライアントポストバックを使う。
>>142 すばやい返答ありがとうございます。
privateメンバは引き継がれて存在するのに派生クラスでは使えない。
基本クラスでprotectedだったメンバは、なぜか基本クラスから派生クラスのメンバへアクセスできる。
ってことですね
うんにゃ、基底クラスから派生クラスのメンバにはアクセスできない。 なぜなら、基底クラスは派生クラスのことを何も知らないから。派生クラスは自分の基底クラスをはっきり知ってるけどね。
151 :
デフォルトの名無しさん :2007/03/12(月) 13:46:31
描画がちらつくので、既定のダブルバッファというのを試してみたんです。 SetStyle(ControlStyles.DoubleBuffer, true); SetStyle(ControlStyles.UserPaint, true); SetStyle(ControlStyles.AllPaintingInWmPaint, true); ↑ このコードを追加するか、またはDoubuleBufferedプロパティをtrueにするとあったので、 両方試したのですが、ArgumentException(使用されたパラメータが有効ではありません) という例外エラーが出て、実行できません。 プログラム中で、Graphics g=this.CreateGraphics();というふうにしてるのがまずいのでしょうか
152 :
デフォルトの名無しさん :2007/03/12(月) 13:52:40
>>140 IList<T>を返すようにしてReadonlyなリストを返せばいい
153 :
151 :2007/03/12(月) 14:51:33
原因は、ペイントハンドラで描画後にg.Dispose()を呼んでいたことでした
>>150 そういわれれば当たり前ですね、だめだ頭回ってないなー自分
ありがとうございましたー
>>140 てっとり早くIEnumerable<T>型として返すのもあり
>>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; (以下数値型のデータ型分続く) ・・・ ・・・ } といった感じで今は数値型(+や−の演算子が使える型)の全データ型分を書いています。 このように全データ型分書かなくても同様のことが行えるいい方法があればご教授願えませんか?
基本的には無理 それよりobject型はまずいだろ 型ごとに個別に処理書いてるんならなんでオーバーロードしない
159 :
デフォルトの名無しさん :2007/03/12(月) 23:48:01
>>157 汚い技を使わない限り無理。
素直にオーバーロードしとけ
演算子が入ってくるとどうしようもない あと、面倒なのは分かるが引数の型ごとにオーバーロードにした方が良いな それから、byte 同士の加算の結果がどうなるか把握してる?
メソッドに属性付けといてVisualStudioのマクロ機能を使って自動生成するとか
162 :
157 :2007/03/13(火) 00:04:46
了解です。
演算子が入ると無理なんですね。
皆さんレスありがとうございました。
この関数を呼び出す前のaとbに渡されるものがすでにDLL化された関数が出力するデータでそれがobject型となっているからです。
オーバーロードというのも考えたのですが、そうなると呼び出し側で型判定し、データ型分の関数を用意することになってしまうので
簡潔に書きたかったからこのようにしました。
>>160 byte同士の加算結果はオーバーフロー発生の場合は255を返す処理にしています。
(そのほかの型でもオーバーフローが発生したらMaxValueを返すようにしています。)
>>162 try { return (byte)a + (byte)b; }
catch (OverflowException ex) { return byte.MaxValue; }
みたいなコードだったりしないよな?
いや、分かってるなら良いんだけど。
ちなみに、上記の演算は決して例外が発生しない。
164 :
157 :2007/03/13(火) 00:23:33
はい、例外が発生しませんので、 return ((byte)a + (byte)b > byte.MaxValue ? byte.MaxValue : (byte)a + (byte)b); と書いています。
コンパイラオプションで例外出せたような
166 :
デフォルトの名無しさん :2007/03/13(火) 00:47:46
ユーザに対して数値しか入力をさせたくない場合に 例えばユーザが下記ユーザID入力項目にアルファベットの Aを入力した場合に、KeyCodeが1から9の範囲に無いので 入力を破棄するにはどうすれば良いでしょうか? ユーザID □□□□□ ※入力値チェックをするのではなくそもそも最初から数字以外を入力不可に したいです。 ご存知の方がいらしましたら教えて下さい。
167 :
デフォルトの名無しさん :2007/03/13(火) 00:54:12
textBox.KeyPress += delegate(object sender, KeyPressEventArgs e) { if ((e.KeyChar < '1' || e.KeyChar > '9') && e.KeyChar != (char)Keys.Back) e.Handled = true; }
168 :
166 :2007/03/13(火) 01:13:49
コピペされるとマズい気が。
textbox numeric でググるくらいのことはしろよ。
>>166 GetWindowLong/SetWindowLongとES_NUMBERで実現できます。
ちなみにXPで実行するとバルーンチップも出てきます。
>>88 亀ですが
VBではSubやFunctionやPropertyの正式な呼び名はプロシージャです。これは
Quick BASICの頃からそうです。
ただほとんどの人はサブルーチンとか関数とか呼んでる気がします。
MaskedTextBox使わんの? 2002/2003?
ワイルドカードを含んだパス(たとえば"C:\hoge\*.txt"とか)に該当するファイルを列挙する方法はあるんでしょうか。
174 :
デフォルトの名無しさん :2007/03/13(火) 12:19:49
System.IO.Directory.GetFiles
グラフィックの塗りつぶしをしたいのですがVC++のように FloodFillを使う方法はないでしょうか
上下に分割した SplitContainer で、 Panel1 を Hide() し、 Panel2 を ( Panel1 + Panel2 ) の大きさに最大化したいのですが、 どのようにするとよいでしょうか?
178 :
デフォルトの名無しさん :2007/03/13(火) 16:42:58
Panel1Collapsed = truel
179 :
177 :2007/03/13(火) 16:45:10
>>178 まさにこれです!!
どうもありがとうございました。
>>176 どうもです 直接はできないんですね
やってみます
私は現在「プログラムを作ろう!パソコン教科書 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はハンドルされませんでした。」「オブジェクト参照がオブジェクト インスタンスに設定されていません。」というエラーが出ます。 どのようにすれば解決できるのでしょうか。
Graphicsを解放してないDQNコードだな this.backgroundPicture.Imageの古い方も宙ぶらりんだし とりあえずパラメータのnullチェック PictureBox.Imageがnullなんじゃねーの?
まあusing使っちゃうと,ちょっと込み入った 言語仕様の解説が必要になるから仕方ないのかな それとも著者がDQNなのか
181が「著者」のコードかどうか分からないでしょw さすがにそこまで無知な人が本を書くとは思えないけど
質問です。 WebBrowser上でマウスの戻る・進むボタンを押した時のイベントを受け取るにはどうするとよいですか?
>>181 >NullReferenceExceptionはハンドルされませんでした
エラー見た限りでは、
DrawImageOnBackGround(PictureBox drawpicture) メソッド呼び出しの時にdrawpictureの参照先がないってことじゃないかな?
>>185 俺も知らないけどググルと出てくるんじゃないの?
c# マウス 5ボタン
質問です メソッドAは派生クラスでオーバーライドされています。 その派生クラスのインスタンスに対して, 派生クラスではなく基底クラスで定義されたAを呼び出すにはどうしたらいいですか?
無理
190 :
187 :2007/03/13(火) 22:01:57
>>182 ,
>>186 ありがとうございます。
DrawImageOnBackGroundの呼び出し元で使っている配列の要素を指定するのにconstで宣言した定数を使っていたのですが、直接数字で指定してみるとうまくいきました。
ただ、日経のサイトにあったサンプルのコードでは定数を使っています。
いったい何が原因だったのでしょうか。
192 :
デフォルトの名無しさん :2007/03/13(火) 22:09:40
>>191 さらしてない部分のコードのことを言われてもコメントしようがないな。
194 :
デフォルトの名無しさん :2007/03/13(火) 23:04:49
>>192 リフレクションでできたっけ?無理じゃない?
日経はやってんのか?
197 :
185 :2007/03/14(水) 10:44:11
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のビットマップを返すのか」
じゃないのか?
>>198 もしかしてお前が聞きたいのは、
「そのビットマップに対する描画の結果は32bppのビットマップと同じなのか」
じゃないのか?
202 :
デフォルトの名無しさん :2007/03/14(水) 14:17:31
Windows.Form上で使うControlクラスを継承して新しいコントロールを作成し、 そのBaseクラスのプロパティすべてを、一回の属性設定だけでプロパティウインドウに 表示されなくすることは可能でしょうか。 目的はアプリケーションに関係のない項目はプロパティウインドウに表示させず、 関係のあるごく少わずかの項目だけを表示させたいからですが、このためには 一つ一つのプロパティを継承作成して全部そこにAttribuetes設定しないといけないでしょうか? できれば、既存の項目は全部まとめて表示させないようにしてから、自分で追加した プロパティだけを表示させるようにしたいのですが、こうしたことは可能でしょうか?
マルチ(・A・)イクナイ
マルチ指摘厨ウザス
>>204 は掃除のオバサンとかゴミ拾いしてる人にもウザいとかいうタイプだな。
207 :
デフォルトの名無しさん :2007/03/14(水) 17:56:37
えーと、やれやれって感じですが、以下の2点について ご回答願います。 Windows.Form上で使うControlクラスを継承して新しいコントロールを作成し、 そのBaseクラスのプロパティすべてを、一回の属性設定だけでプロパティウインドウに 表示されなくすることは可能でしょうか。 目的はアプリケーションに関係のない項目はプロパティウインドウに表示させず、 関係のあるごく少わずかの項目だけを表示させたいからですが、このためには 一つ一つのプロパティを継承作成して全部そこにAttribuetes設定しないといけないでしょうか? できれば、既存の項目は全部まとめて表示させないようにしてから、自分で追加した プロパティだけを表示させるようにしたいのですが、こうしたことは可能でしょうか?
マルチ(・A・)イクナイ
210 :
202 :2007/03/14(水) 18:16:57
>>207 私は
>>202 で質問した者ですが、VB.NETのほうでも聞かせていただきました、
結果としてマルチになってすみませんでした、できれば少しでも早くわかればと
思い質問してしていました。これができれば便利と思いました。
すみませんがよろしくお願い致します。
>>210 そんなアホな機能があるとは思えないけどね俺には。。
少なくとも俺が.NETや各言語のコンパイラの作者ならそういう機能を実装しようとは
まず思わないな。
>>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#でも現れ始めたか。
ダイアログのコンストラクタに引数として渡す。
>結果としてマルチ どんなんだよw
C++だと親Windowのポインタを取得して参照したけど。 そんな、面倒なことすることないからShowDialog()の前にメンバ変数に設定するのが一番
あーなんてバカなことで悩んでたんだ 確かにコンストラクタで渡せばいいだけじゃないか ShowDialogメソッドのせいでコンストラクタのこと忘れてたわ
ほんとは 生成元―プロパティ→ダイアログ 生成元←イベント―ダイアログ に限定するべきなんだろうけどな
ボタンおして処理まわってる間に、 他のボタンをおしたりするにはどうすればいいですか?
222 :
デフォルトの名無しさん :2007/03/15(木) 01:11:50
スレッドつかっとけ。
初心者スレなのでもう少し丁寧に行こうぜ。GUI 周りはスレッド面倒だし。
>>221 2005 使ってるなら、その回す処理を BackgroundWorker にやらせればいい。
224 :
デフォルトの名無しさん :2007/03/15(木) 07:39:40
すいません。 自分198ですが、下らん事を質問してたみたいですね。 忘れてください。
225 :
デフォルトの名無しさん :2007/03/15(木) 10:16:28
System.Net.WebRequestを使って、非同期通信を行ってるんですが ちょっと巨大なデータをPOSTしてるんで、途中経過をプログレスバーに出したいのです。 そこで現在転送してるデータのサイズを取得したいんですが、そういうプロパティはありませんか? MSDN見た限り見つからなかったんですが・・・
>>225 System.Net.WebClient じゃダメなの?
こいつなら、POSTの進捗をイベントで通知してくれるけど。
>>226 なるほど、WebClientですか
ただ、今回は.NET 1.1で動かす事を想定しているので、WebRequestを使わざるを得ないのです。
228 :
188 :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を呼び出すことができました。 変なことはやめろということですね。
>>228 そんなことしなくても、
((BaseClass)instance).Method()
でいけない?
231 :
デフォルトの名無しさん :2007/03/15(木) 15:37:59
Callvirtで呼び出されるから無理だわな
済みません BitmapにFromStreamで読み込むときに画像のdpiを 保持しながら読み込めないでしょうか?(全部96dpiになります) 何とか後からはSetResolutionで設定するのを見つけたのですが.. 元の値がわからないと再設定のしようがなく 宜しくお願いいたします
保持されてるような気がするが・・・ jpegを読んでDrawImageUnscaledで描くようなアプリで、 ピクセル数は一緒なのに描画される絵の大きさが違ってたことがあったから。 常にかどうかはわからないけど。
何でだろ.......... Photoshopで300dpiにして保存したやつを読み込んで VerticalResolutionで調べると96dpiに...orz SetResolution(300.0f,300.0f)をしてやるとちゃんと300に戻るのですが (そのファイルをPhotoshopで再度開くと ちゃんと300で保存されています また読み込んだBitmapを保存してPhotoshopで開くと96dpiに....) Bitmapで先にdpiの属性を設定する所があるのかな.... Image.Flagsって言うのが有るみたいなのですが、 取得のみのようですし
>>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はスレッド起動して、登録されたメソッドを実行 この場合、実行されたメソッドはどちらのスレッドで動くのでしょうか?
Aが起動したスレッド
質問です。 よく Class test = new Class(); で、クラスの作成に何らかの理由で失敗した時に、戻り値がnullになってるのを利用して if(!test) //エラー処理 ってやってますけど、こういう処理をするクラスを作りたいのですが コンストラクタ内で、ある条件で生成するクラスをnullにしたい場合、どうすればいいのでしょうか? this=null; ってやると、コンパイラすら通りませんし
そんなことするな ていうかできないんじゃない? 初期化に成功したかどうかを何らかのプロパティで知ることができればそれでいいんじゃね? 場合によってはClassを派生させたNullClassを作っておいて、そもそもifを不要にするとか
>>239 C#以外の言語についての質問は、それぞれのスレでおながいします。
>>239 「条件によって生成に失敗する」ようなクラスを作りたいなら、
コンストラクタ内で例外を throw するようにし、try で処理する。
243 :
デフォルトの名無しさん :2007/03/16(金) 09:55:41
オブジェクトをXmlファイルにシリアライズすることが可能で、そのときにパブリックフィールド
の名前を別名で保存することが可能なようでした。
http://dobon.net/vb/dotnet/file/xmlserializer.html これと似た感じで、属性の設定によってプロパティグリッドにプロパティの別名で表示する
ことは可能でしょうか、目的はやはり変数名ではなく意味のすぐわかる表示にするためでした。
Description欄で説明表示することももちろんできますが、そのものですぐわかるものにしたい
場合の方法となります。よろしくお願いします。
>>243 DisplayNameAttribute
>>239 >で、クラスの作成に何らかの理由で失敗した時に、戻り値がnullになってるのを利用して
そうなってたのはVC++6までだったと思うぞ。いまのVC++2005ではstd::bad_alloc exceptionがかえる。
いわんやC#をや。
246 :
デフォルトの名無しさん :2007/03/16(金) 10:29:25
>>244 この属性もあったのですね、ありがとうございました。
助かりました。
>>247 プロダクト系コントロールも似たようなコードだろう。
250 :
デフォルトの名無しさん :2007/03/16(金) 19:59:09
Vista か……
>>250 デバッグ中に稀になることがあるな・・・
VisualStudio開きなおしても直らない?
>>252 はい。
と言うかインストール直後からこの状態です。
あとスキンでVista風にしているのであって
OSはWinXPです。
>>248 無名デリゲートを直結してることを言ってるのジャマイカ
普通にはやらんだろ それに初心者スレだし
コードから作ったオブジェクトに対してはよく使うけどな デザイナで張り付けたオブジェクトには普通使わないだろうな
lispとかJavaScript使いはガンガンやるでしょ。
質問です。 あるプログラムの多重起動を禁止していて、多重起動したときには すでに起動している方にコマンドライン引数を渡そうとしています。 そのときにProcess.GetProcessesByNameでプロセスを取得し、該当する プロセスのMainWindowTitleプロパティやMainWindowHandleプロパティから ウインドウのタイトルやハンドルを取得しようとしたのですが、タイトルが 空になっていたり、ハンドルがメインウインドウの物と違っていたりして正確に 送ることができません。 この場合、どのようにしたら正確な値が取得できるのでしょうか?
> ハンドルがメインウインドウの物と違っていたり ってのが良く分からんが。 ちゃんとやろうとするなら ・新規プロセスが PostMessage で自分のハンドルをブロードキャスト ・既存プロセスが受け取ってそのハンドルに自分のハンドルを SendMessage ・新規プロセスは受け取ったハンドルに対して WM_COPYDATA とか。 リモーティングでやるとか TCP で任意のポート使って通信するとか名前つきパイプ使うとか 共有メモリに書き込んで名前付きイベントで通知とか今更 DDE に手を出してみるとか
>>260 ハンドルがメインウインドウと違うというのは、Process.GetProcessesByNameで
取得したプロセスのMainWindowHandleの値と、すでに起動している側の
ハンドルの値が…
ここまで書いてて気づいたのですが、どうやらProcess.GetProcessesByName
で取得した配列にはすでに起動しているものと、自分自身が含まれているみたいで、
自分自身にSendMessageしていたみたいです。
そりゃ届くわけねーよ orz
ちょっと小一時間吊ってきます
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() { 〜 } よろしくお願いします!
class ClassA { public ClassA(){ ClassB b= new ClassB(); this = b; } }; class ClassB { }; みたいな事をしたいんです。
実行時にオブジェクトの型を変えたいのか?
条件によって、クラスの型を変更したいんです。
利点は?
269 :
デフォルトの名無しさん :2007/03/17(土) 01:06:34
無理。おそらく設計間違ってるだろ。
意味わからないし。 釣りとしか思えないんだけど、なんか本気っぽいところが怖いw
て言うかさー、そのコードが書けるとして、利用者が ClassA = new ClassA(); ってした瞬間に下手したら InvalidCastException が投げられるじゃん
272 :
デフォルトの名無しさん :2007/03/17(土) 01:12:48
ただの莫迦かC++厨だろ
273 :
265 :2007/03/17(土) 01:15:57
なんだ C♯って何にも出来ないんだな。 本当に初心者向けの自称安全なコードだなwww
そうだね
AとBに適当なインターフェース実装すりゃいいんじゃね
そだねー
処理別に代理実行ならdelegate使えよ もしくはクラス内に2つのインターフェースを作っとけよ クラスそのものを切り替える理由がわからん。 C++厨の言う事だ『そんなメモリの無駄遣いは出来ない。』とかだろうかw
そういうときのために継承とインターフェースがあるとしか言えない っていうかただの釣りか
C++とか、そんなレベルの話しじゃねーぞ
いいからもう相手にするな
C++がなんでもプログラマに実装を許すからスパゲッティコードができた歴史を反省して C#でプログラマが実装できるコードを限定的にしたことが理解できてないC++厨 それだけのことだ相手にするな
それぞれ違う方を向いてて上も下もないと思うがね。
C♯なんてVBやPerlやPHPと同じ女子供の使う言語だろ。 一丁前にプログラマ名乗るなやw
C♯(笑)
プログラム言語が道具だと理解できてないバカが湧いてますね。 アプリを使う人が使い易ければC++・C#・VB・Javaなんてユーザには関係ないのに。
またJava厨か
288 :
285 :2007/03/17(土) 08:35:56
普通にプログラム言語は複数習得するのあたりまえじゃないか? C++・C#・Java習得してるけどC#は使いやすさでは一番かな。 delegate使えばThreadPoolと関数ポインタ使わないで便利だから。
>>286 出来上がったものは、.NETフレームワーク入れなきゃいけないし
メモリガバっと馬鹿みたいに確保されるし、起動するまで遅いし
どこが使う人にメリットあんの?
とか言うと、『他の言語で酷い組み方をするくらいならC♯に任せた方がマシ』とか言うんだろうけど
そんな酷いコードかけませんよ(笑
そうだね
>>289 .NETフレームワークのメモリ確保についてはGCを使う上では仕方がないと思う。
起動が遅いのは機械語に変換するまで時間がかかるからだけど、
一度起動すればページアウトしない限り早くなる。
どうしても機械語に変換されたネイティブプログラムを作成したいならC++が
現在では一番なのは事実だが、将来C#がネイティブ対応したら複雑怪奇な
言語仕様のC++がすたれると思う。
>>286 CやC++でも結局標準でないDLLがなかったり、
VB製ソフト一個でも使うなら結局入れる羽目になるんだから
最近はRuntime如き大して差がねーよと思ってきた。
Vistaじゃ.Net3.0のRuntime標準搭載だしな。
そもそもメモリガバっと確保されて困った!みたいなことを経験したことがないんだよね。
Firefoxに比べれば他ソフトのメモリ確保なんてちょろいちょろい(ぇ
C#を理解してない人が叩いてるからしょうがないな。 スパゲッティになるから推奨してないけどポインタ使えるし、アンマネージコードのコール・SVCも可能。 きちんと勉強してから湧いてね坊やたち。
294 :
292 :2007/03/17(土) 09:32:07
おまいら釣られすぎ そんなに腹減ってたのか
>>293 それ、使えた所で、メモリ確保やランタイム必須や起動の遅さはかわらんだろ。
使うだけ無駄
>>292 .NET 1.1なら良いんだけどな。
VS2005で開発してると、.NET2になってて、リリースすると案外ランタイムはいって無い人が多い。
最近はポインタ乱用型の難読ソースもスパゲッティって言うのか。
継承関係が錯綜した難読ソースもスパゲッティって言うらしいぞ。ベーマガは遠くなりにけり、だな。
まあ読みづらいソースは滅べってのは(ほぼ)全てのプログラマの共通意識だろ
ちょっと気になったんだけど,C#でクラスのオブジェクトのprivateメンバの値を 外部から直接変更することって可能なの? もちろんそんなことやるつもりはないけど,構造体ならポインタをキャストすれば 可能みたいだから,クラスではどうなのかなと思った。
>>291 将来C#がネイティブ対応する可能性てある?
>>303 以前中の人がネイティブコード吐けるようになるかもって言ってた気がする
今更それは無いだろうな 外の人が勝手に作るかもしれないが
そもそも.Net Framework はなんでNativeで構成しなかったんだ。x64睨んでたから?
>>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を何度もとりに行くのはどうしてですか?
たぶん,ControlクラスのBackgroundImageのセッター内で this.BackgroundImageのゲッターにアクセスしてるから
311 :
デフォルトの名無しさん :2007/03/17(土) 16:40:47
おまいだけ
俺も化けて見える
縺オ縺峨・繧だけUnicodeでフォームだな。
private int _hoge = 0; public int Hoge { get { return _hoge; } set { } }
315 :
314 :2007/03/17(土) 18:44:02
すみません。途中で書き込んでしまいました。
>>314 のようなプロパティで、set アクセサの内部で値のチェックなどをやっているとします。
そのチェックの条件が複雑なので、定義しているクラスの内部からも、_hoge に直接アクセスできない
ようにしたいのですが、そのような方法があるのでしょうか。
流石に無理だ。 せいぜい使いにくい名前でも付けとけ。\uXXXX を駆使するとかして。
_hoge を int 丸出しじゃなくて別のクラスのオブジェクトにすればいんじゃね?
まあ直接触ってはいけないフィルドにうっかり触ってしまう危険性を感じるとしたら、 それはそのクラスが見通しが悪いからなわけで、 修正されるべきはその点って気もするけどね
>>314 _hoge のXMLコメントに、触るなって書いておけ。
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 ありがとうございます。
私に向けた発言でなかったら本当に勘違い野郎ですみません。
コンポーネント作るの初めてだったもので
とりあえず自身で色々試験してますけどバグは少ないと思います。
(ブラウザとしてのバグはあります・・)
VSのIDEと比べた特徴なんですが
長所
・ドッキングレイアウト操作時に、いちいちウィンドウを分離させないので
キャンセルとか容易です。
短所
・ドッキングからの分離で、のこされたペイン(タブコントロールの一枚)
をリサイズするときに、人間的なリサイズ方法ではないかも
しれない。
というところが特徴です。
面白いな でもreadme.txtを読む限りでは,今のライセンスだとyukilib.dllを 作者以外の人が自分のアプリに組み込んで配布することはできないんじゃないの?
>>324 感想有難う御座います。
あ。
すみません。ライセンスの制度について勉強不足だったので
readmeの書き方が拙かったようです。申し訳ないです。
yukilib.dllに関しては、現在デコンパイル以外は全てOKです。
使用いただけるのであれば
どんなアプリに組み込んで再配布していただいても構いません。
事前にお知らせいただければ嬉しいですが。
>>325 うわー!これいいですね!
起動時に設定ファイルを反映させたいんですけどどうするんですか?
>>325 ライセンス変えてほげにでもだせば?
見てないけど
>>326 有難う御座います!
起動時に設定ファイル反映させるには、
「AutoDeserialize」ボタンをチェックしたままアプリ終了させてください。
そのボタンがチェックされている限り、起動時には状態が復元されます。
ただしWebPageに関してはロードしません。Webを開いたまま終了したら、
専用のボタンとメニューが起動時に出現します。
もともとライブラリのサンプルアプリのつもりで作り始めたので
アプリ本体のソースとかツールボタン構成とかはあまりエンドユーザ向けでない部分が
多々ありますが、貧弱ながらヘルプ「簡易Tips」に色々書いてあるので
そちらも参考いただければ幸いです。
>>327 アドバイス有難う御座います。
ちなみに「ほげ」とは何でしょうか。
一応今のところ、もう少しブラウザの安定化とソースの再構成を行ったら
Vectorとかには出してみようと思っていたのです。
もし他にいい場所があればそちらも見てみたいです。
クラムボンは死んだよ
330 :
デフォルトの名無しさん :2007/03/18(日) 00:15:54
>>321 よくできてるね。
しかしバイナリしか提供されないライブラリはいろんな意味で使いづらいな。
#CPLとかきれいなライセンスをつけてcodeplexあたりに公開したら流行りそう
sourceforge.jp のことじゃないかな。>ほげっ!
クラムボンは殺されたよ
333 :
デフォルトの名無しさん :2007/03/18(日) 00:40:09
>>330 ちょっと関係ないかもしれないのですが、ついでに少し教えてください。
このCPLでググルと
http://kazuho.exblog.jp/1624574 のようなことがありました。これって危険なのでしょうか?
またうっかりライセンスに関して知らずに無料だからと公開されている
ライブラリを使って後で損害賠償請求されるといったことはあるでしょうか、
よろしければ教えてください。別スレのご紹介もありましたらよろしく
>>330 ,331
アドバイス等有難う御座います!
しかしcodeplexにしろ、sourceforgeにしろ、
Vectorのライブラリ系のところに登録するより良さそうですね。
ちょっと仕組みを勉強した上で(ライセンスに関してもちょっと調べてみます。)
ライブラリのソースごと投稿してみます。
ただ、問題が。
ソース内のsummaryなど、全て日本語なんですけど。
これらを英訳する必要ありますかね?
フィールド名とかメソッド名とかはまぁ、辞書調べながら意味が不明でない物を
選べますけれど。注釈に関しては英文に直せる自信がないですw
まぁ、一寸づつ変えていけばいいですかね。
クラムボンは死んでしまったよ・・・
CPLについて勉強してみました。 間違っている可能性がありますが、おさらいのため、スレ汚しですけれど ここに自分の解釈を書いてみます。 ・CPLライセンスの適用されるオープンソースプロジェクトに 静的、動的にリンクするソフトはオープン、クローズドどちらでも良く、 また、商用であってもそうでなくても構わない。 つまり、333さんの危惧されているケースは通常起こらない(のかな?) ただし、 「CPLで定義されたオープンソースプロジェクトに変更を加えた上で 自社・自身の製品の一部に取り込んでリリースする場合には 、変更箇所のソースを公開・明示しなければならない。」 というような制約があるみたいですね。 ゆえに、333さんが使用しているCPLライブラリを333が変更して ソースを非公開のまま再配布していたら、 まずいことになるかもということですね。 間違っていたらすみません。 とりあえず、GPLとCPLでは、企業にとってはCPLで定義されているライブラリの 方が有り難いみたいなので、CPLもしくはそれに似たライセンスに変更します。 次はライセンスのミックスについて引き続きもうちょい調べようと思います。 続く
殺されたよ
続き ところでSourceForegeとCodePlexについて少々調べてみました。 SourceForgeは日本語版もあるくらいですから、流石にとっつき易いです。 で、ここからは高望みになってしまいますけれど CodePlexは言語の壁さえなければ、環境としては最高に良さそうです。 何よりVSから直で、プロジェクトにアクセスできるようになるみたいですから。 そこで皆さんに質問させていただきます。 @はじめのうちはSourceForgeで、後にCodePlexにお引越し なんていう都合のいいことは可能でしょうか。可能だとして許されることでしょうか。 (理由) このような経験は初めてなので、まずは理解しやすいsorceForgeで コミュニティの基盤を学びたい。ということです。 多分無理な気がするんですけれど。 というか阿呆な質問になっている気がします。 これらのようなコミュニティを活用したことのある方のご意見を伺いたいです。 意味不明な長文すみません。 よろしくお願いします。
すいません。 先ほどから気にはなっていたのですが、 クラムボンとは何でしょう。 私のレスの後に3度目となると少々気になりまして。
それならなぜ殺された わからない
クラムボンはクラムボンだよ。怪しくないよ。
キチガイでしょほっとけって。 しかし、キチガイってのはなんで春先になると活動が活発になるんだろうね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の場所から実行すると、コンパイルは通っても実行時に不正な処理を行いましたって出てきます。 どこがまずいのでしょうか?
俺コンパイルとおらねえんだが・・・
>>346 ん?
どこがおかしいのかわからん。
別の場所でエラー起きてるってオチじゃないの?
public test(funcA func)メソッドに戻り値が定義されてないよ?
>>328 ありがとうございます!
頑張ってください。応援してます!!
すれ違いとか言われてますがココが「初心者」スレだからでは?
気にしなくていいと思いますよ
351 :
デフォルトの名無しさん :2007/03/18(日) 13:38:48
ライセンスやコミュニティの話は完全にスレ違いだろうが
別にこのスレを覗くような人間にとって有益な話なら問題ないじゃん。 そもそもこういったスレや板が存在することの意義や目的は何だと思ってるんだ。 物事を自分の頭で一から考えられない351のような奴が安易に「ルール」に縋るんだよな。 「ルール」が存在することのそもそもの意義を忘れて。
353 :
デフォルトの名無しさん :2007/03/18(日) 14:02:37
>>346 コンパイルは通ってるんだったら,参照してるDLLが見つからないとか,
アンマネージドな世界でのエラーとか
355 :
321 :2007/03/18(日) 16:24:34
>>350 お心遣い、有難う御座います。
色々スレ違い投稿してすみませんでした。
最後にもう一つだけスレ違いさせて頂きますがご容赦下さい。
皆様のアドバイスの下、CodePlexにてプロジェクトページを作成しました。
まだ不備が多々ありますが、今後のそのフォーラム内にて活動していきます。
以降、もしご興味頂いた方はフォーラムにご参加頂けると幸いです。
ttp://www.codeplex.com/sdock これにてこのスレ内での発言は控えます。
失礼致しました。
webBrowserクラスのDocumentTextプロパティの内容(htmlの中身)を StreamWriterクラスを使ってファイルに書き出すと、日本語が文字化けするんですが、、、、 Encodingを設定しても文字化けしてます new StreamWriter(fs, Encoding.GetEncoding("shift-JIS")) このインスタンスを使って、webBrowser1.DocumentTextを直接書き込んだだけでは 文字化けします
DocumentStream の方を使えば良いんじゃね これなら Encoding が介在する必要なく byte のやり取りで済むし
文字化けっていうけど… それぞれどんな文字コードか調べた? 元のデータ 読み込んだデータ 書き込んだデータ
>>357 DocumentStreamからbyte[]経由で書き込んだら、日本語もちゃんと書き込めました
>>358 そこら辺全然分かってないです
これから文字コードやエンコーディングの勉強をしないと・・・
C#ではUTF-8が標準だというのは聞いてます
DocumentTextはStringだからUTF-8に変換してるのかな?わからん
360 :
デフォルトの名無しさん :2007/03/18(日) 21:22:37
.NET文字列の内部表現はUTF-16
内部表現は Unicode な。 それを外に見せるのに UTF-16 を使う。 ああややこしい。
UnicodeとUTF-16をどういう意味で使い分けてる?
ファイルに保存するときにはUTF−8
364 :
デフォルトの名無しさん :2007/03/18(日) 21:59:40
>>361 内部表現もUTF-16だって。
もちろん文字集合はUnicodeだけど、符号化方式のUnicodeじゃない
俺内部で全部UTF-8に変換して処理してるんだが、最初からUTF-16ならこんな無駄な事しない方がいいのかな・・・
366 :
デフォルトの名無しさん :2007/03/18(日) 23:18:03
なんでそんな意味不明なことするんだよ。莫迦か?
莫迦 が未だに読めない俺が居る('A`)
なるほど THX
>>362 BMP面だけを使う限りは同じと考えといていいんじゃないのかな。
俺の場合、BMP面以外の文字を扱う機会はおそらく一生ないだろう。
OSとブラウザくらいだろ。 そんな世界的なソフトを開発する機会は無いなぁ
>>370 同じと考えていいものを、分けて扱っている
>>361 が
どういう意味でそれらを使い分けてるのかを知りたかった。
内部ではサロゲートペア使わないとかか?
Vistaでハマリングw
質問です Form1からForm2を呼び出した場合 Form2でForm1のデータ(変数の値やラジオボタンのチェック等)を 参照するにはどうすればいいですか?
これは買っとけっていうお勧めの本ってありますか? レベルとしては初心者に毛の生えた程度です
質問です ピクチャーボックスに描画されているオブジェクトを印刷したいのですが. ただ印刷することはともかくとして, 色情報を指定色だけ反転させたり A4サイズにぴったりあう用にサイズ指定をしたりするにはどうしたら用のでしょうか?
>>374 Form2のコンストラクタでForm1の参照を渡す
>>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型にならん。 どうにかしてくれ。
>>377 どうもありがとうございます!!
早速購入しねーよ
>>377 は(日本人の感覚としては)初心者には難しすぎる
>>380 クイックウオッチでの見えかたなんぞ問題じゃないだろ。
DateTimeの実体は単なる64ビットの数値。内部にフォーマット情報など持っていない。
>378-379 ありがとうございます 今キーワードでググりながら悪戦苦闘してます
385 :
デフォルトの名無しさん :2007/03/19(月) 17:56:14
>383 レスサンクス! じゃあどうすればいいんだ? かれこれ時間変換に引っかかって1週間になる。 頼む教えてくれ。
頼む教えてくれマン参上!
388 :
374 :2007/03/19(月) 19:05:30
色々いじってたらなんとか出来ました >378-379 繰り返しありがとうございました
>>374 参照したいならメソッドにrefつけてアクセサメソッドで呼び出せばいいだろう。
この香ばしさは釣りなのかマジなのかw
393 :
391 :2007/03/19(月) 20:49:22
refではなくてoutだったぜw
>>374 「C# get set プロパティ」で調べて!
395 :
374 :2007/03/19(月) 20:55:13
(#^ω^) ビキビキ もう出来たって言っとろーが
396 :
390 :2007/03/19(月) 20:56:41
いや,
>>374 の質問はしょっちゅう目にするっていう意味で言ったんだが…
>>374 釣りだと思ってたから、もう少し遊びたかったな
>>374 っていうか、これは真面目な話だけどFormから別のFormの何かを取得したい、
なんて動機を持つことがそもそもおかしいんだよ。
Formなんて別の「何か」の情報を表示するためのハリボテ(表示器)に過ぎないんだから。
ハリボテからハリボテに配線が行ってるなんておかしいだろ。
確かに同一の「何か」の情報を表示している二つのFormを同期させたい、
という場合はないこともないけど、そういう場合はFormAからFormBに直接配線をするんじゃなくて
FormAで「何か」の情報を変更すると「何か」はイベントを生成するようにして、
FormBはそのイベントを受信して表示を更新するようにするんだよ。
VB.NETスレでは嫌われるタイプのレスだな
>>372 MSDNのSystem.Charの項を見ると、次のように書いてある。
> ほとんどの Unicode 文字は、単一の Char オブジェクトで表現できますが、基本文字、
> サロゲート ペア、組み合わせ文字シーケンスとしてエンコードされる文字については、
> 複数の Char オブジェクトを使って表現されます。
> そのため、String オブジェクト内の 1 つの Char 構造体が、必ずしも単一の Unicode 文字に
> 対応するとは限りません。
日本語扱ってる範囲で組合せ文字ってあるの?
また、その文章と
>>362 との関連性もよくわからない
UnicodeのBMP面以外がどんどん使われるようになったら、 32bit長のwcharとwstringを追加して固定長で処理したほうが楽な気もする。 当分そうはならんとは思うけど。
英語圏だとそもそも 7-bit かそこらで十分だからな。 UCS4 とか普及するとは思えないなあ。
>>401 そこは実に微妙な問題で、「日本語で扱う文字」の範囲をどう考えるかによる。
例えば、鼻濁音を表す「か゜」「き゜」やアイヌ語の「セ゜」「ト゜」のような文字は文字シーケンスを
使わないと表現できないが、これを日本語で扱う文字に含めるかどうかはケースバイケースだろう。
また、CJK統合漢字拡張Bにも、吉野家の「吉」が U+20BB7 に入っていたりするので、これを扱いたければ
サロゲートペアを考慮しなければならない。
俺の考えとしては、日本語だけを考えても、文字シーケンスやBMP面以外の文字を扱う機会は十分ありえるから、
UnicodeとUTF-16を同じに考えてはいけない、と思う。
そもそもUnicodeは文字集合、UTF-16は文字の符号化方式。全然違う。
407 :
デフォルトの名無しさん :2007/03/19(月) 22:07:21
>>403 Unicodeスカラ値が固定長でもgrapheme単位で処理するためには、
更に高度な(複雑な)切り分けが必要になってくるから
UTF-16でもUTF-32でもそのあたりの面倒くささって変わらない気がするんだなあ。
unicodeは文字コードとその仕様で、utfとかはunicodeの仕様の一部で コードの数字の表現方法だよね????
>>407 そのためにStringInfoなんてものがある。
410 :
デフォルトの名無しさん :2007/03/19(月) 22:21:15
>>408 Unicodeは文字集合。スカラ値とその意味を定義してる。
UTFは符号化形式(CEF)と符号化方式(CES)をあわせたもので、
前者はスカラ値を符号単位列に変換する方法を、
後者はスカラ値を符号単位列を経てバイト列に変換する方法を定義している。
(要するにCESはCEFにエンディアンを加えたもの)
ソフトウェア開発者試験でユニコードは2バイトだって出るよ。
412 :
デフォルトの名無しさん :2007/03/19(月) 22:32:47
>>406 それがそうでもないんだなあ。悩ましいことに。
UCS-2をUnicodeって呼ぶことがあって、
こいつも文字集合なんだけどUnicodeの符号化方式に転用されることがしばしばある。
誤用なんだけど、ユニコード周りの用語が混乱しすぎてよくわからんことになってる。
413 :
デフォルトの名無しさん :2007/03/19(月) 22:36:52
教えてください、配列を使うか、List(Of Type)を使うかの切り分けというか、 明瞭な目的別の区分ってあるでしょうか?
要素数固定なら配列でいいんじゃね。好きにすればいいよ。
>>412 UCS-2もエンコーディングなんじゃないのか?
Unicodeとは別の文字集合?
417 :
デフォルトの名無しさん :2007/03/19(月) 22:45:52
>>414 そういうことだったんですね。どうもでした。
>>415 UCS-2そのものはISO/IECが規格化した16bitの文字集合だよ。
BMP面では互換性があるから、21bitのUnicodeスカラ値を縮めるのによく使われてて、
UTF-16互換エンコーディング同然の扱いをされてるけど。
さらに転じてリトルエンディアンのUTF-16を"Unicode"と呼んじゃってるのがMicrosoft UCSをUnicodeと呼ぶよりかはなんぼかマシだけれども そういうわけで、「"Unicode"は符号化方式である」というのもあながち間違いではない。
UTF-16 は1文字が2、または4バイト(サロゲートペア)で、 UCS2 はサロゲートペアなしの1文字2バイト固定じゃなかったっけか。
>>421 あってるよ。文字よりはコードポイントといったほうが正確だろうけど。
UCS-2に含まれる文字に限れば、UCS-2もUTF-16も2オクテットで互換性がある。
ん? エンディアン無視ですか?
424 :
422 :2007/03/19(月) 23:28:03
UTF-16符号化形式の意味で言った。
んー文字コードまわりは複雑でわっかんねーよー なんか詳しそうな人がたくさんいるんでついでに聞いてみていいですか? 基本から分からないんですが wcharって2byteでいいの? 例えばPInvokeでバッファ確保するとき 260文字だったら520バイト?
Win32APIのWCHARなら2バイトだな。 終端のヌルとか気をつけないといかんが、 大抵の場合はStringBuilderで確保すればなんとかなるだろ。
427 :
デフォルトの名無しさん :2007/03/20(火) 01:50:26
これもWni32APIですが、Explorerで編集メニューに 「元に戻す」というのがありました、 これは、戻す前にやった操作をどんどん戻せる機能だと思いますが、これを .NETのアプリケーションなどでも使うことはできるでしょうか?やはりWin32APIを 用いるのでしょうか?
操作を覚えておいてその逆操作をやるってだけだ API とかの問題じゃない
429 :
デフォルトの名無しさん :2007/03/20(火) 02:02:15
>>428 そうだったんですか、ということはExplorer内のプログラムで操作しているということ
だったのですか。
たとえばゴミ箱に移動の場合は、その逆はやはり同じWin32API関数の
ファイル操作関数をつかって戻せるということでしょうか。その辺がよくわかりません。
そのあたりはShell APIで全部できる
431 :
デフォルトの名無しさん :2007/03/20(火) 02:20:47
>>430 Shell API ですか、わかりました調べてみます。
ありがとうございました。
SaveFileDialogで既定のファイル名を指定するにはどうすれば良いんでしょうか? あらかじめこちらでファイル名を指定しておいて、それで良ければそのままOKボタン 押して貰って終わりにしたいのです。
433 :
デフォルトの名無しさん :2007/03/20(火) 12:06:54
透明な部分があるコントロールを作りたいのですが、 子コントロールがある領域は親コントロールが描画してくれません。 子コントロールの領域も描画するように設定する方法はありませんか?
WPF
>>432 FileNameプロパティにファイル名だけ設定すればあらかじめ出てきます。
ディレクトリも指定したければフルパスで。
437 :
デフォルトの名無しさん :2007/03/20(火) 15:46:49
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の設定に問題があるのか、それとも何かの色関係のドライバーが
インストールされていないためといった関係でしょうか?
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) というところから最新版を入れた方がいいでしょうか?
質問です 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()してしまえばきちんと読めるのですが・・・ よろしくお願いします。
とりあえず szXXX は置いとくが、 >reqStream.Write(Encoding.ASCII.GetBytes(szData), 0, szData.Length); これには疑問。
>>439 ObjectForScriptingにオブジェクト突っ込んどいたら?
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]; }
イベントをデザイナでform1のインスタンスに設定してない
>>446 448氏の意見のとおりになっていないことを願うが、
他の可能性としては
・Form1のクライアント領域が違う別のコントロールで埋まっているため
DragEnter,DragDropイベントが通達されない。
もう一つ。
というか、どんな不具合がおきているのか446さんの文章だけでは
確定できないな。
textBox1に文章が表示されないのか、それとも例外落ちするのか
あと、e.Effect = DragDropEffects.All;
この書き方よくないよ。
他のOLEドラッグアンドドロップを使うソフトに迷惑かけることになる。
enum型変数をクラス内ではなく関数内で宣言したいのですが エラーを出さずに↑を実現する方法はありますか?
>>448 おそらく、Form1_DragEnter, Form1_DragDropを手動でわざわざ書かないだろうから
Form1.Designer.csには、this.DragEnter += ・・・, this.DragDrop += ・・・があるんじゃないかな?
>>450 普通にできるだろ。
void foo() {
EnumType bar;
}
enum型にこだわる必要性が無いなら 例えばswicthの分岐値として使いたいなら const int 宣言しておけば? 昨今のインテリセンスのお陰で、それだけで十分でしょう。 後はお好みでsummaryタグ付けとくとか。
454 :
466 :2007/03/20(火) 22:02:50
>>448 >>449 どうもありがとうございます。
環境も忘れていました。VisualC#2005 EEです。
現象としては、a.txtをFormにドロップしても無反応です。
Form1はソリューション作成時にできたもので、textBoxを貼り付けた以外にいじっていません。
>あと、e.Effect = DragDropEffects.All;
>この書き方よくないよ。
>他のOLEドラッグアンドドロップを使うソフトに迷惑かけることになる。
ご指摘ありがとうございます。
MSDN読み返してきます。
>>454 その条件を元に自分の環境でほぼ同じものを作ってみたら
動きました。
なんで駄目なんだろう?
なんでだめかっていうと、
ドラッグ開始側はGiveFeedbackイベントとQueryContinueDragイベントでしか
ドラッグアンドドロップの状況を確認できない。
そしてwndprocに頼らない場合、相手先のウィンドウハンドルは判んないんだよね。
446氏の何がまずい事に繋がり得るかっていうのは
・データ形式を確認していないこと。
・Effectと動作の意図がマッチしていないこと(この場合はLinkとすべき)
ドラッグイベントで何も確認せずにダイアログ開くようなアプリにめぐり合った時
かなり腹立たしいことがおきる。
AllowDrop はTrueになってるよな?
457 :
446 :2007/03/20(火) 22:58:34
>>455 あれ?動きましたか・・・
ひょっとして、Vistaが悪いのかな・・・
Formにマウスオーバーしてもカーソルが、○に/が入ったカーソルになるので、
DragEnterが起動する以前の問題のようです。
>>456 はい、trueに設定しています。
このあたりだろ? >DataFormats クラス >このフィールドは、.NET Framework インフラストラクチャをサポートします。 >独自に作成したコードから直接使用するためのものではありません。
イベントハンドラの仮引数に名前空間付いてないのが気になる…… イベントの追加は雷アイコンからやったんだよね?
少なくとも2005のデザイナではusingあれば名前空間つかないはずだが。
俺もdragのコード貼ったけど、上手くいったよ? linkにしたんだが。 ああ、あとXPだけどな。 textbox上でカーソルはどんなマークになる?
ieやゴミ箱はドラッグしても反応しないな。
>>459 はい、イベントは雷マークから追加しました。
>>451 さんの言うとおり、Form1.Designer.csにnewされています。
Linkでも変わらないです
>>461 textBox1上でも○に/が入ったカーソルになります。(TДT)
もう一度同じ手順でやり直すんだな。 あれ?bitmapドロップしてもdata形式にbitmapが含まれないな…
465 :
446 :2007/03/21(水) 01:46:59
できました。 VSのビルドから起動させるのではなく、直接exeを叩いたら正常に起動しました。 みなさん、どうもありがとうございました。
466 :
デフォルトの名無しさん :2007/03/21(水) 10:14:28
Microsoft Visual C# .NET Standard Version 2003 アカデミックパック ってどこも在庫切れでなんですが、私今回出品しようと思ってるんです。 幾らくらいなら買いますか?
氏ね
今更2003いらね
469 :
デフォルトの名無しさん :2007/03/21(水) 10:22:49
そう言わずに教えてください 困ってるんです 3000円くらいでもいいんで買いたい人いませんか?
>>466 そんなもの買うなら、今はVC♯ .NET2005のエクスプレス版をダウンロードするだろ。
無料だし。
ぶっちゃけ、無価値だと思っておいたほうがいい。
471 :
デフォルトの名無しさん :2007/03/21(水) 10:24:08
>>470 な、なるほど・・・それだと価値ないですね
情報ありがとうございました
有料の古いIDEは大抵無価値だ 無料の新しいIDEの方が便利なことがある
必要があるとしたら、古いプロジェクトの中身を見たり更新する必要がある場合だな 細いながらも一応需要はあるんじゃね?
>>474 新しい環境で開けば、勝手に新しい環境向けにコンバートしてくれる
>476 それはわかってるよ あくまで.NET 1.1のままで閲覧したり更新したい場合に必要だって言ってるんだよ 勝手にコンバートされると嫌な場合もあるだろう?
それにしてもアカデミックはいらね
VS2003pro相当のアカデミック版が新品でも5000円ぐらいだったろ? 実売は3500円程度
theSpokeはVS2003Pro(パッケージ)+VS2005Pro(ダウンロード)で5000円だった
481 :
デフォルトの名無しさん :2007/03/21(水) 13:40:46
スクリーンキャプチャでマウスカーソルも表示するのって どうすればいいの?
カーソル取得して自分で描けば
某マウスもキャプチャーされることがウリのフリーソフトはそういう仕様だよね。 だからキャプチャ結果のマウスカーソルの位置がずれてるし2kやXPでもカーソルに影がない
大抵の遠隔操作アプリケーションがやってるようにビデオドライバにフックかければいい。 Vistaでは難しいけど。
引数つきコンストラクタのインターフェースを持たせたり、 ジェネリックでコンストラクタの制約を持たせることはできませんか。 具体的には、class A<T>{ void B(){T t = new T(a,b);} } こういうのをつくりたいです。
>>485 無理。
interface IHogeFactory<T> { T Create(a, b); }
class A<T>{ A(IHogeFactory<T> factory); void B(){T t = factory.Create(a,b);} }
みたいなキモイことするしかない。
>>486 ありがとうございます。
class A<T>{ void B(){T t = new T(); t.a = a; t.b = b;} }
ならいけますかね。ジェネリックでインスタンス作成っつーのは
推奨されてなかったりするのでしょうか。
>>487 それならいけるな。
別に推奨されてないわけじゃないが、インターフェイスで静的メンバを定義できないし、
型パラメータの静的メンバに関する制約がコンストラクタ制約しかないから、使い物にならん。
class A<T> where T : new(A, B){ void B(A a, B b){ T t = new T(a, b); } }
え、それができたら最高なんですけど、できるんでしょうか。 もしや3.0の新機能とか。
無理だろ。.NET Fx 3.5でもCLRのバージョンアップはないし。
2.0から言語仕様の変更は全くない
C#の言語仕様は変更しまくりだろうが
.NET Framework 2.0→.NET Framework 3.0 C#自体は変わらない C# 2.0→C# 3.0 いろいろ追加の予定 バージョンがずれるとややこしいね
無念orz ありがとうございます。 Fxではなく言語仕様のC#3.0っつーのはまだなんでしょうか。 LINQとかラムダ式とかかっちょいいのがあると見たんですが。
C#3.0はOrcas待ちやね
いまさらですが、レスして頂いた皆様ありがとうございました。
とくに
>>486 様にはお世話になりました。
3.0などという曖昧な記述をして申し訳ございません。
Orcas出たらすぐにOrcas Expressも出る?
マイクロソフトの資料に"Orcas" Express Editionの文言はあるが、 無料かどうかはわからんし、そもそも公開するとは明言されてない。
>>499 ぎりぎりまで公開しないよ
VS2005の売上に影響するから
501 :
デフォルトの名無しさん :2007/03/21(水) 16:30:35
>>445 ObjectForScriptingっていうものがあったんですね!!わかりました、すぐ調べてみます。
502 :
デフォルトの名無しさん :2007/03/21(水) 16:46:53
MinimumとMaximumは消せるようですがFormの×ボタンを表示させない オプションってありましたっけ?
つ ControlBox
504 :
デフォルトの名無しさん :2007/03/21(水) 17:39:31
>>503 それだと、最大化も最小化も消えてしまうため、それらは残しておいて消すことだけできないように
したいのでしたが、そういうことは無理ですかね?
×アイコンを非表示にするのは記憶にないが、グレイアウトで良いなら @IT の Tips に記事があった
Win32APIを弄れば可能
システムメニューからSC_CLOSE外せば消える
DataGridView の ToolTip をオーナードローにすることはできますか? 具体的には、DataGridViewImageCell のツールチップを表示するときだけ、 DataGridViewImageCell の画像を拡大したものを ToolTip として表示したいんです。
>>508 ToolTipを別に用意したほうが簡単じゃね?
511 :
デフォルトの名無しさん :2007/03/21(水) 19:08:39
>>509 おお、こういう方法があったのですか!助かりました、ありがとうございました!
>>505-507 そういうのもあったんですね、どうもでした!
前から思ってるんだが「どぼん!の .NET Tips」をテンプレのトップに持っていくべきじゃないか? 初心者の質問ならそこ見れば8割がた解決すると思うんだけど。
そもそもテンプレなんて無意味だって。 あれは書いてる奴の自己満足以外のなんでもない、悪いけどw このこういうプログラミング言語のスレに限っては、 予めテンプレのリンク先に目を通すような殊勝な(っていうか、本当はこれむしろ当たり前のことなんだけど) 心がけを持った人間ならテンプレなんてなくても最初から自分で調べる努力してるから。
>>512 あそこは正直どうなのってソース多いからなあ
まあ大概の質問は C# <キーワード> でぐぐれば答えが出てくる
出てきたら、ここに書き込んでやれ。
たしかに度本のソースは良くないよな。 情報はいいけどな。
俺もコピペプログラマには向かないと思うね。 内容を理解して使う分にはいいサイトだと思うんだけど。
Tips紹介してるコードに向かって「どうなの」も糞もないと思うけど
俺的には
>>514 みたいな「背伸びクン」こそどうなのだよw
朝日新聞を否定すれば賢くなったと思う馬鹿と共通するメンタリティだよ
田舎なので読売と地方紙しかないよ。
どぼんはともかく、朝日新聞をありがたく受け入れるのはアホだけだろw
そうだな。 「賢い人は朝日新聞を否定する」 が正解だから。
asahiパソコンってまだあるのか? と思ったらやっぱ休刊。
>>515 こんな感じ?
c# 年金 の検索結果のうち 日本語のページ 約 114,000 件中 1 - 10 件目 (0.15 秒)
c# イケメン の検索結果のうち 日本語のページ 約 31,000 件中 1 - 10 件目 (0.24 秒)
c# 東国原知事 の検索結果のうち 日本語のページ 約 266 件中 1 - 10 件目 (0.22 秒)
C# 完全数はいくつあるのですか?
そんなことより、.NET のつぼは閉鎖?
マウスドラッグでリサイズできるTextBoxをつくるには、どうしたらいいのでしょうか?
>>527 マウスイベントで座標見ればいいんじゃないの?
c#を思いっきり勉強してるのですが、ソフトウェア業界ではc#はどうなんでしょう c#を利用したシステム開発というのはどのぐらい行われているのですか 職業プログラマでC#使って開発してる人いたら教えてください
職業プログラマって、基本的に何でもやらされるから 特定の言語だけを習得すればいいってわけじゃなくて、その都度どんな言語にも対応出来ないといけない。 まぁ、基本的に、C/C++/C♯/Java、Web開発系なら、JavaScript/PHPが出来れば殆ど困らんが… ちなみに、ここ一年で俺は13件の案件を請けたがC♯を使ったのはそのうちの7件だな
C#使えたらVB.NETとJavaはすぐ使えるだろ
C#使えたらVB.NETは使う必要ないだろ・・・
仕事で指定されたら使わんと仕方ないやん?
CとC#がわかれば他はだいたいわかるよな
そこでVB6やらRubyやらの以来が
VBAも結構使われているよ…
>>530 世界的に見ると結構C#広まってるんだけど、
日本は i mode のせいでまだちょっと Java 優勢。
まあ、みんな言ってる通り、どっちか片方できたらもう片方もできるけど。
>533 Excelとか操作するときにVB.NETが便利だよ。
レイトバインディングなら JScript.NET 使うね
>>536 Rubyはまだなくね?
事実ならうらやましい限りだ
>>538 i-modeのJavaとC♯は、業種的にかなりセグメント離れてね?w
C♯って携帯電話で使えたっけ?
って思ったらWindows携帯なるものがあったな・・・w
一般の携帯にCLRが載る日は来るのかな
xbox360とかzuneの展開次第じゃね?
Xbox360にはもう載ってるな
質問があります。 TimeSpanで取り出した日付が999日を超えたんですよ。 答えを、仮に1234日だとします。 この期間1234日を、Y年M月D日分と言う風に変換したいのですが、 良い方法はありませんでしょうか?
年の定義は? うるう年は考慮する?
549 :
547 :2007/03/23(金) 18:18:35
>>548 レスありがとうございます。
できれば、閏年も考慮したい所ですが、
初心者なので簡単な方法で結構です。
追伸:999日でなくても、365日超えたら年月日表示なんだよね。(自分つっこみ)
Calenderを使えば?
うるう年とか気にするならTimeSpanといえども基点の年月日は必要だからな 1年を365日固定にするなら、そのまま日数を365で割ればいいのでは
553 :
547 :2007/03/23(金) 19:36:54
>>552 そうですか、年月日での期間の表示は、簡単に出来るものじゃぁないんですねぇ。
なんか、MSならC#なら初心者向けに、ありそうだったんですけどねぇ。
地道に、がんばってPGで組んでみます。
ありがとうございました。
554 :
別件 :2007/03/23(金) 19:38:53
DateTimeについて質問です。 StringにするとYYYY/MM/DDになるのですが、 これを、和暦(平成)年号で表示するにはどうしたら宜しいでしょうか?
>>547 良い方法とか悪い方法とかじゃなくて、仕様に沿った変換をしないと「バグ」ってことになるよ。
たとえば期間で「1年間」とかいうのは「次の年の同じ日(の前日)」までを指すことが多いし、
「1ヶ月間」とは「次の月の同じ日(の前日)」を指すことが多い。
こういう仕様の場合には、開始日が分からない限り日数と1ヶ月間などを変換することはできない。
>>554 DateTime.ToLongDateString
TimeSpanはTickをもってるんだから、 DateTimeへの変換できるやん 年月日への変換は簡単に出来るだろ (基準は考える必要があるだろうけど)
558 :
554 :2007/03/23(金) 19:46:52
559 :
558 :2007/03/23(金) 19:47:25
554→556
>>553 それは言語やクラスライブラリの問題ではなく、暦法そのものの問題だよ。
だから、「初心者向けの簡単な解決」なんてものは、このスレの範疇を超えてるよw
とりあえずグレゴリオ暦を前提にしていえば、月の長さは毎月違うし、年の長さも違う場合があるんだから、
単純に「○○日は○○年○○ヶ月○○日」なんて変換できないのはわかるよね。
あなたの考えている年月日の定義がわからないことには、解など提案のしようがないわけ。
>>550 俺も前よく間違っていたんだけど、"calendar"ね。
>>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);
>>562 さあ、数ある年の定義の中から恒星年を選んだ理由を聞かせてもらおうか。
で、理由は計算しやすいから。
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Creat("
http://www.yahoo.co.jp ") ;
HttpWebResponse myRes = (HttpWebResponse)myReq.GetResponse() ;
myWebBrowser.DocumentStream = myReq.GetResponseStream() ;
このようにhttpリクエストで得たリソースをそのままwebに表示しても何も表示されないのですが、
これはエンコーディングしてないから表示できないということですか
DynamicMethodとDelegateって何が違うんですか? DynamicMethodだと、Delegateをやたらめったらややこしくしたようにしか 見えないんですが…
>>567 や、根本的に別物だが。
デリゲートは動的に呼び出すメソッドを差し替えるためのもの。
DynamicMethod は動的にメソッドを作り出すためのもの。
569 :
デフォルトの名無しさん :2007/03/24(土) 02:38:28
navigateメソッド使わん理由は何
あ〜 <br>とか日本語を含んだHTMLからXmlDocumentを作りたくて、 IHTMLDocument2のドキュメントのノードを一つづつ読んで、 XmlNode作ってたんですが、IHTMLDocument2側のノードのスキャンがめちゃくちゃおそい。 なんか、いい手はないですか?
ぜんぶまとめて読め
自分でXMLを解析するアルゴリズムを作成してプログラムでスキャンする
>>567 DynamicMethodに限らずSystem.Reflection.Emit系は,
分らなければ分らないままでも全くおk
Delegateを理解して使いこなすのは必須
delegate使ってマルチスレッドやってるんですけど、 debugビルドで別スレッドから別スレッドのコントロールを操作すると、try〜catchにひっかかってしまいますけど あれは、問題ない(そのスレッド以外そのコントロールを操作し得ない)と分かってる場合、無視しても良いんですよね? 何か強制的にcatchされないようにするための方法はありませんか? 同期処理を取る方法がありますけど、コードが複雑になるので手抜きをしたいのです。
CheckForIllegalCrossThreadCalls = false; ただし、VS2005以降な 2003とかだと無いので、どうすれば良いかは知りません。
それ以前によく574の日本語が理解できるな。 感心しちゃうよ。もちろん嫌味だけど。
日本語でおkな文章でも、要点さえおさえれば言いたい事は把握出来る。 ・マルチスレッド ・別スレッドのコントロールを操作 ・自己責任でスレッドセーフ(のつもり) ・debugビルド ・手抜きしたい ここまで来れば経験のあるPGなら何がしたいかわかる。 PGやってると、周りは日本語がまともに出来ないやつが8割なんで慣れるだろ。 インド人なんてもっとわかんねぇよ・・・orz
578 :
デフォルトの名無しさん :2007/03/24(土) 16:57:42
じゃああれだ、「問題があることがはっきりしている」から例外が発生してるのに 「問題ないと分かってる」とはどういう意味か俺に解説してみてw
インド人を右に!!
そんなの俺らの責任の範囲外だろ 本人がそうだと言ってるんだから、そうなんだ。 俺は本人の意図に沿った返答はした。後は知らん。
.NETの例外処理ってそんなに賢くないよ。 自前でmutexやセマフォやってても、固定で例外出す。 あれ単純に局所的にコード見てるだけで、全体の処理なんて確認してるわけが無い。 例外発生も、あれはワザと発生させてるものだし
583 :
デフォルトの名無しさん :2007/03/24(土) 17:09:28
>>581 逆の言い方をすれば、コントロール操作してるメソッドの呼び出しが
デリゲート経由だろうがなんだろうが「問題」がなければ例外なんて起こらないでしょ。
こんなの当たり前じゃん。
>>583 コントロールを別のスレッドから触ったら問題がなくても例外が出る。
585 :
デフォルトの名無しさん :2007/03/24(土) 17:12:33
>>584 馬鹿でしょ君。
そんなの当たり前ジャンw
だからここでいう「問題」とは、「コントロールを別のスレッドから触ること」
何この初心者率の高さ 学生暇なんか?
>>585 それなら俺とお前で「問題」の認識の仕方が異なっていただけで、どちらも間違ってはいなかったということだ。
よくわからん自己正当化だなそれ。。
素直にInvokeすりゃいんじゃね?
最初から『問題』の定義なんてわかってたろうに 馬鹿がごまかしてるだけのようにしか見えん。
>>578 からは、どう見てもそういう風には取れません。
どう見てもごまかしです。本当にありがとうございました。
592 :
デフォルトの名無しさん :2007/03/24(土) 17:40:47
Microsoft Visual C# .NET Standard Version 2003 アカデミックパック ってどこも在庫切れでなんですが、私今回出品しようと思ってるんです。 幾らくらいなら買いますか? の質問をした者です。 覚えてますでしょうか?あれから価格を\1000にして出品しましたところ 買っていただく事に成功しました。 世の中わからないもんですね。
鬼
2003のコンパイルバージョンが必要になったから買ったんじゃないか? 2005だとランタイム2.0用が出力されるから
595 :
デフォルトの名無しさん :2007/03/24(土) 17:50:52
>>593 思慮の浅い方ですね
使いたい人がいるから購入されたんです
使い道はどんなものかわからないですが需要があったんです
私が押し売りしたわけでもないのに短期間のなかで売れたという事の何処に問題があるでしょうか?
>>594 2005でも.NET1.xでのコンパイル出来るぞ。
>>595 何いちいちマジレスしてるんだ。
そもそもスレ違いだし、だんだん釣りに見えてくるぞ
コンパイルバージョンじゃないならアカデミックライセンスで2005へのバージョンアップを買うためか?
599 :
デフォルトの名無しさん :2007/03/24(土) 18:00:12
>598 eVCとか2005Expressあたりからのバージョンアップお勧め。 通常版を売る気がないとしか思えない。
所詮IDE エディタに毛の生えたもんだろ。コンパイラとは別なんだから単なる編集ツールなわけだ となると出力されるバイナリとかの問題ではない。 そう、エディタの使い勝手の問題だ きっと2005のエディタ部分が嫌いで2003を欲しがってたんだろう
602 :
デフォルトの名無しさん :2007/03/24(土) 19:19:33
VisualStudio2005を使ってるのですが エディタに行数を表示したいんです。 設定教えて頂けませんでしょうか。
そういうのはオプションにあるだろ ツール - オプション - テキストエディタ の C/C++ の全般に、行番号という項目あるべ
604 :
デフォルトの名無しさん :2007/03/24(土) 19:39:49
今まで、不要な参照名前空間を外す作業を普通に行ってましたが、 コーディング上、キレイではないという点以外で、 不要な参照名前空間があることで どのようなデメリットが生じるのでしょうか? 参照している名前空間はガベージコレクションの対象にならない。 という勝手な推測をしてますが、実際どうなんでしょうか。 よろしくお願い致します。
>>604 /reference から使ってないのを外すってことか?
それともusing .. で使ってないのを削除するってこと?
606 :
デフォルトの名無しさん :2007/03/24(土) 19:55:50
>>605 詳細を書いてなくて申し訳ありません。
/reference から削除する場合と、
using文を削除する場合、
両方ともデメリット等を教えて頂けたらありがたいです。
よろしくお願い致します。
usingディレクティブは名前解決に利用されるだけで内部的な処理には影響しないよ。 /referenceに関しても同じ。というかどうやら試した限りでは使われない参照はコンパイル時に自動的に削除されるっぽい。
かなり初心者な質問ですが、 値型、参照型、オブジェクト、とメソッドの引数の関係がイマイチわかりません 猫でもわかるC#という本では、オブジェクトそのものを直接渡すと自動でrefの引数になる、見たいな事が書いてあり、 例文では配列を使って説明していました。 ここで言うオブジェクトが参照型の変数全般を指しているのかな?とおもったら、 string型は値型のように処理されるそうです。 ・・・つまり、new演算子を使用するデータ型の変数はrefってこと?
値型もnewできる
610 :
デフォルトの名無しさん :2007/03/24(土) 20:42:30
>>607 以前(当時はVS2003使ってたかも)は、コンパイル後にアセンブリの中を見ると
使ってない参照名前空間の情報が入ってたような気がしたのですが、
いま VS2005 でコンパイルしたところ、自動的に削除されてました。
レスありがとうございました。
>>608 値型=スタックに確保されるため高速。引数ではrefを指定しない限りコピーが発生する。
参照型(オブジェクト)=ヒープに確保される。引数ではコピーは発生しない。
>string型は値型のように処理される
どういう点で?stringはオブジェクトそのものだけど。
というかrefという単語を誤用してるようだが
refは「引数として渡した変数をメソッドから変更できるようにするキーワード」であって
参照型だとかそういうのとは無関係。
メソッドで引数を渡すと、refをつけない限り、コピーが渡される。 メソッド内で変数を変更しても呼び出し元の変数の値が変わらないのは、 このため。オブジェクトも同じ。 でもオブジェクトを渡すと変更が反映されているのでは?と思うかもしれない。 普段使っているオブジェクトは実際はオブジェクトの位置を記したもので、 引数として渡されるのはオブジェクトの位置をコピーしたもの。 うーん何を書いているのかわからなくなったなw
>>612 じゃあ、refでオブジェクトを渡すと、オブジェクトの位置自体を変えられるの?
い い え
オブジェクトは 値渡しでも参照渡しでも同じじゃね?
617 :
608 :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#では 元の値(実引数)が変わらないと思ってたので 前者の要素が何で変わるのかわからなくて。
>>612 で合ってる
refで参照型の変数を渡すと,
「この変数に他のオブジェクトへの参照(位置)を代入してね」
っていう意味になる
>>617 public void SwapMethod(ref string x, ref string y )
これも上の話と同じ
「他のオブジェクト」って何?何で他なの?
>>617 stringは特別。仲間外れ。immutable。
つまりインスタンスは一度作られると変化しない。
配列はオブジェクト。参照型。
>>619 void Hoge( ref object obj )
{
obj = new Hage();
}
ってのもできるってことかな? あんまりやらないけど
>>620 stringがimmutableなのはここでは関係ないと思うぞ
Stringは普通の参照型。特別でも何でもない。 オブジェクトの実体の中身を変更する方法がクラス側で用意されてないだけ。
String str1 = "abc";// アドレス 0000 str1 = "def";// アドレス 0001 str1の参照先が0000から0001へ変更されただけ。 参照されない0000はGCで回収される。 StringBuilderは参照先を変更しないで文字列を扱うクラス 参照先のメモリ割り当てが気になるならこっちを使う
まとめとしては、引数にクラスや配列を指定した場合、
1、アドレスの位置がコピーされる
2、メンバや要素を変更しようとするとアドレスをたどって実際に参照先のメモリの値を書き換える
3、結果的に、ちゃんと値が変更される
なので
>>608 のSampleMethodは配列の要素を書き換えられるってことですかね?
つまりrefしないと参照先(c++のptr)を示した値は変えられないけど、
refなしで、実際の参照先の値は変えられるってことか
ちょっとおたずねしますが SystemInformation.CaptionHeight これ自体プロパティなんだが、これを public int PropTitleBarHeight { get { return SystemInformation.CaptionHeight; } set { titleBarHeight = value; } } みたいに取得するのって変?
別にプロパティでラップすること自体は全然構わないと思うが、 セッターとゲッターの先が違うのはすごい混乱を生むと思う。
さんくす
え、プロパティって戻り値に指定できるの!? 関数メンバを戻り値に指定できるの初めて知った・・・
日本語でおk
630 :
デフォルトの名無しさん :2007/03/24(土) 23:54:08
public static readonly int NOVALUE = -1; int num = NOVALUE; Console.WriteLine("num = {0}",num); こんなコードなのですが、 num = 0 と出力されます。 何がおかしいのかさっぱりなので、教えてください。
それだけじゃさっぱりだな
632 :
デフォルトの名無しさん :2007/03/25(日) 00:00:20
readonlyで宣言した変数を、他の変数に代入すると 代入された値が0になるなんてことありますか?
あんたの言ってる問題が発生し、かつコンパイルできる最小のコードを書いてくれ。 それだけじゃ、変数の名前が被ってることくらいしか思いつかん
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(); } } } こんな感じです。
こ、これわ・・・
636 :
デフォルトの名無しさん :2007/03/25(日) 00:20:31
文字列処理で自作メソッドを作りたいのですが、そのような場合、 Stringクラスを継承したクラスを作ってその中にまとめておく、 という継承の使い方は間違ってますか?
>>634 >public static readonly int NOVALUE = -1;
これが実行されるのは、
>int num = NOVALUE;
>Console.WriteLine("num = {0}", num);
これが実行された後。
>>634 private static Program main ;// = new Program();
^ 意味的にこっから後ろ余分だろ
NOVALUEフィールドにはinitonly属性がついてるが、
初期化される前に参照してしまってるので、-1に初期化することが出来なくなっている。
staticコンストラクタがキーですよん
>>634 NOVALUEが初期化される前に呼ばれてる。zero fillは
その前にされるので0になる
というかそのコード、2行出力するよね?0と-1で。
641 :
634 :2007/03/25(日) 00:25:02
なるほど、直してみます。ありがとうございます!
ほほーこんなはまり方することもあるんだ。 勉強になるな。
>>640 Main呼び出し
.cctor呼び出し
mainフィールド初期化
.ctor()呼び出し
NOVALUEフィールド初期化(最初の参照=default(int))
NOVALUEの値を表示(=0)
NOVALUEフィールド初期化(initonly属性がついているので無視される)
.ctor呼び出し
NOVALUEの値を表示(=0)
というわけで、0が二行表示されるはず
>>636 そもそも String は sealed なので間違い以前だな
その文字列処理とやらが特定のクラスに結びついた処理ならそのクラスに実装すべき
そうでないならまあ適当に文字列処理クラスでも作れ
質問です。 Vistaでは、プログレスバーとディレクトリ位置とが一体化したようなコントロールが多く見られますが あのコントロールは.NETフレームワークに含まれているのでしょうか? 探したところ見つからないんですが… また、ターゲットはWinXPも含めてるのですが、それらで実現出来ない場合サードパーティーでコントロールは用意されていますか?
646 :
デフォルトの名無しさん :2007/03/25(日) 16:42:17
>>645 無い
自分でコントロール作れ
漏れなく俺が使ってやるぞ
>>522 朝日はなんで不買運動されないんだろね。
648 :
デフォルトの名無しさん :2007/03/25(日) 17:31:06
VistaのMS作成になるソフトは全部 .NET アプリなのでしょうか?
いいえ
650 :
554 :2007/03/25(日) 17:57:43
>>558 様
ありがとうございました。
解読するのに時間が掛かりましたが、
教えて頂いたサイトを参考にして、
やっと和暦に変換する事が出来ました。
本当に感謝いたします♪
質問です C#で外部dllを使って通信する場合にC#側で参照設定やライブラリのインポートが必要でしょうか? C#2005EEでlocalhostに建てたサーバーからdll経由でデータを取得するアプリを作っていますが、 dllのソースで確認したところホストの指定にlocalhostを指定するとwinsock2のgethostbynameメソッドで想定してない値が返り。 また、127.0.0.1を指定するとソケットの作成に失敗します。 dll自体は信頼性があり、このdllを使う他人のプログラムでは正常に動作しています
>>646 あらら…
てっきり、あれは標準化されたコンポーネントだと思ってました。
と言う事で作ってみます。
どうもありがとうございました。
あのパス表示コントロールは慣れると便利だね ファイルパスに限らずツリー構造をたどるときにいろいろ使えそう
vista持ってない俺にkwsk
>>651 外部dllというのをちゃんと説明しろよ。
COMなのかOSやC++のDLLなのか、.NETのアセンブリなのか。
Vistaは嫌いだが、あれはVistaでほめれる数少ない良い部分だ。 プログレスバー+アドレスバー+エクスプローラーバーの融合みたいな 凄く省スペースで、なおかつ理にかなったシステムだな。
>>655 説明が足らずすいません。
外部dllはC++で記述されていますが、COMや、.NETアセンブリではありません。
>>658 それじゃ、単にP/Invokeの書き方が悪いのかと
660 :
547 :2007/03/26(月) 01:24:39
>>552 ,
>>555 ,
>>557 ,
>>560 様各位の神々へ
お返事おそくなりました。
やっぱり、ちゃんとしないとダメですね。
反省しております。
でも、やはりチャンと計算で出したいと思います。
仕様が決まりましたので報告します。
基準は、誕生日になりました。
それで、「生後Y年M月D日」を求めたいだけです。
私では短くて簡単なPGが、思いつきません。
よろしくお願いもうしあげます。
>>562 様のPGは、自分のPGと比べて見て
短くて簡単なのに驚きました。
私、IF文の羅列でした。お恥ずかしい・・・。
IF(365でわって余ったら)・・・IF(30日であまったら)・・・って感じで
色んな意味でダメPGです。
if少なくて短ければ常に良いコードかというと、そうでもないよ 評価の基準も色々あるし
>>660 誕生日とある日付でしょ?なんでTimeSpanが出てくるのか判らん。
DateTimeでいいんじゃないの?
時間差ってシリアルで計算するほうが早かったんじゃなかったっけ?
すまん書いてみたら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日"));
665 :
547 :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日です。」となってしまいます。
このすごい誤差を直すにはどうしたら良いのでしょうか?
666 :
660 :2007/03/26(月) 11:51:53
>>661 さん
励ましのお言葉ありがとうございます。
お蔭様で、もう少し頑張れそうです。
>>663 助言ありがとうございます。
素人には、ミリ秒単位のスピードより
分りやすくて簡潔なPGが嬉しいです。
PGPG言ってるのがすごい気になる こういうときはコードと呼ぶのが普通
ピックガード
669 :
660 :2007/03/26(月) 12:05:10
>>667 コード・・・そうなんですか・・・(^^;
いつも、プログラミング(PG)って言ってました。
どうも、コードと言うと機械の電気のコード線を
イメージしてしまいます。(笑)
>>668 ???
ぬるぽ
ぬるりが好きです。でもCOMExceptionはもっと好きです。
672 :
デフォルトの名無しさん :2007/03/26(月) 13:44:06
if文の書き方で… 旧: if (hoge() == true) { hogehoge処理 } 新: if (hoge()) { hogehoge処理 } 今まで「旧」のように記述していたのですが 有識者に「新」のように記述汁と言われますた。 どっちも同じ結果になるのですが… アセンブラに展開したときに無駄が出るのでしょうか? ご教授願います。
全く同じ意味だから違いは消えてなくなる
>>672 別にどっちでもいいと思うけど。
メソッド名がisHogeHogeみたいに述語を表すなら==trueを書くのに違和感あるけど、そうでないなら敢えて書いたほうが可読性があがるケースもあるし。
アセンブラレベルではどうせどちらの場合でも0と比較してJZとかそんな感じだと思うから、特に違いは出ないかと。
>>672 C#ではそうじゃないけど、
他の言語だとfalse(に相当するもの)以外のすべての値が真に解釈されることが多い。
なのでtrueと比較するのはバグの元になりやすくてあまり良い習慣ではない。
あと、((n == 100) == true) とか書かないしね・・・。
if 文の()の中はtrueかそうでないかを調べてるのに それをまたわざわざ trueと比較するのは馬鹿げてる
hoge() == true hoge() != true hoge() == false hoge() != false
static bool IsTrue(bool hoge){return hoge;}
if(IsTrue(hoge()) == true) { }
hoge() !hoge() //hage
意味がわかりやすいほうの書き方をすればいいだけのことよ
でもIsTrue()じゃないけど、boolを返す関数はそれを現す名前だとif文が美しくなるな
でもメンバだとthis.とかClassName.とかつけたくなるから 醜くなって困る
this.IsSelected とか見やすいでしょ。 オブジェクトの役割とメソッド/プロパティの名付けがマッチしてればクラス名修飾しても大丈夫。 必ずしも上手くいくけーすばかりじゃありませんけどね。
俺の英語力でつけたメソッド名ほど怪しいものはない
You.WaShock
MSのルールでは,値がboolのプロパティやメソッドの名前を Is○○○,Can○○○,Has○○○にするのは 取得専用の場合だけみたいだな
>>665 if (monthCalendar_Today.SelectionStart.Date == dtpBirthday.Value.Date) {
Console.WriteLine("生後0年0月0日だバカ野郎");
return;
}
流石にきたないな
上級者っていうか、あるていど以上のレベルの人は、 if (・・・==true) みたいな比較はしないな。 やってると激しく下手に見える。
bool なんだから直接 if に放り込めばいいのにね。
trueかどうかを判定するのに == true なんてしてたら、 if (...) if (... == true) if ((... == true) == true) てな感じで切りがないからね。
まぁCからの慣れでキモいというのはある。 けど、式の中の型を意識していないコードにも見えるから その点でも嫌い。
ifを封印してswitchを使えば一番明示的かも
そこで三項演算子 A?B:C
switchもコンパイルすればifと同じ処理を繰り返すけど。 プログラムコードの可読性を考えると必然とどの判定式を 用いるべきかは回答はでる。 ifは式の結果のbool型を判定する句であることはプログラマなら必然と理解している。 if(式 == true)は冗長なコードであることは言うまでもない。
> switchもコンパイルすればifと同じ処理を繰り返すけど。 IL レベルでもマシン語レベルでも、if の繰り返しよりちょっとだけ効率的にやってくれる。
void Hage(bool a) Hage(hoge() == true); if(hoge() == true)もこれと同じようなもんだろ
699 :
デフォルトの名無しさん :2007/03/27(火) 00:33:43
ごめん、おれVB厨なんで必要ないと分かっていてもつい==trueってやりたい衝動に駆られる場合があるw なんかその方が明示的に感じられる場合があるんだよね
明示ってのはあいまい性があったり 微妙なルールを意識しないといけないときや 省略形で分かりにくいとき それを「明示」すると言うのだよ。 == true は単に無駄に冗長に記述を増やしてるだけで、なにも明示していない。
まあべつに論理的な冗長性が増してるだけであってそれ以外のデメリットは特にないから 書きたいように書けばいいと思うが。
慣れてくるとめんどくさくなって=trueを書かなくなるから。
それは単にbool型が存在しないから、という理由だけのような気もしますが。。 cだと定義されているのはfalseだけだし。
C#のifの()内はboolしか入らないからboolであることは明らか なおさら必要なし
true演算子を使えばbool型以外のも入る
707 :
デフォルトの名無しさん :2007/03/27(火) 11:26:21
C#.Netで親フォームから子フォームを表示し、親フォームを消して子フォームだけを残したいんですけど、 どうやったらできますか? 現在親フォームを消すと子フォームも消えます。
>>707 visible=falseして残しておく。
VC#EEが重い、SharpDevelopも重い、VC#2003が一番軽い、でもVC#EEを使う
>>708 レスどうもありがとうございます。
「親フォームをアンロードし子フォームを表示する」という課題なのです。
本来これはVB.NETの課題だったのですが、C#でVB.NETの課題をやってくれと
指示があったのでやっています。
なんとなくMainをいじったらできそうな気がしてきましたが、なんかトリッキー
な感じが(@@;
static void Main()
{
while(true)
{
Application.Run(new frmMain());
if(blnCloseFlag)
break;
Application.Run(new frmChild());
}
}
ちなみに下が今つまづいているいている内容です
「親フォーム「XXXボタン」が押されたら、子を初期状態で表示、親フォームをアンロードする。」
「子フォームが閉じられたとき、親フォーム開き、子フォームでの入力を親フォームに反映させて子フォームをアンロードする」
グローバル変数を使うしかないんですかね…。
アンロードってどうしろっていう事だろう
透明なFormに子Formを2つぶら下げてそれを切り替えるとか?
親/子って言ってるし、動き的には
>>708 が一番それっぽい気がする。
課題なんだからその通りにしないとまずいんじゃね?
VB6のフォームがそういう作りで、不可視のウインドウが背後にある。 そのせいでタスクマネージャから最大化や最小化すると得体の知れないことになった。
ほんなら「アンロード」せんと
「アンロード」が完全に閉じて破棄することを意味するならこんな感じか? 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();
どうせ課題出したほうもよくわかってないという落ちと見たw ココで言われているように親子がどうのとかアンロードの意味とか関係なくて ただフォームが切り替わればいいんじゃないか?ww
VB6で「フォームをアンロードする」って言ったら, .NETのDisoseやCloseに相当するの?
C♯には、deleteに相当するのが存在しないのが気持ち悪い。 malloc()〜free() new〜delete は必ずペアで書くように自分を教育してきたからなぁ…。 ガベコレはいつ開放するか分からんのがちょっとな・・・。
721 :
665 :2007/03/27(火) 16:51:43
>>ALL
なんとか、自分の力で出来ました!!
しかし、皆さんのご助力が無ければ、出来なかったです。
改めて御礼申し上げます♪
結果的に、長いコードになったので、生誕を求める事だけを
関数にして出させる事になりました。
なんとか、1日の誤差も無く動いているようです。
はじめてのC#で、ただ生後を求めるだけというのに
こんなにも苦労しましたが、
皆様のお陰で無事に出来て楽しかったです。
蛇足ですが、
>>665 のやり方だと生後1日後でも誤作動になるので
参考になりませんでした。
if文は、素人の私も=trueは使わないですね。
フォームって親消しちゃったら、個人的に不安でたまりません。
蛇足をつけるなw
>>720 perlもrubyもlispもあれもこれもみんなGCあるよ・・・
>>720 shared_ptrとかのスマートポインタ使いまくってた俺はその辺は全然どうでもいいが
const引数/constメソッドが無い・switchフォールスルー怒られる・プリプロセッサが何か全然違う
あたりはかなり戸惑った。と言うか戸惑ってる。
正直プリプロセッサのファイルと行番号は欲しがった。
プロパティ名を展開してくれるマクロもあるといいな INotifyPropertyChanged で文字列でプロパティ名を指定するのめんどい
constまわりはなんとかしてほしいな コンパイル時の命令でしかないんだっけ?
C++やってろよ
子フォームのインスタンス保持してるのが親フォームだと消えるのは当たり前だ。
730 :
デフォルトの名無しさん :2007/03/27(火) 20:23:37
組み込みC野郎です。 今回どっとネットC#でRS232CからPCに入力したデータを、自作クラスでデコード して、必要な情報を画面に出力するようなツールをつくっています。 ウインドウズのイベントが理解できません。 コード上では、イベントのリッスンは、デリゲート経由で行うことはわかるのですが、 イベントの発生後、(イベントキューにたまるとして、) 誰が、いつ、実際にデリゲート(関数ポインタ)経由で呼び出し先関数にジャンプするのですか?
茶色い小人さんが、気が向いたときに、気が向いたところへ
732 :
730 :2007/03/27(火) 20:32:21
たとえば、次のようなことをやってみてください。 メインフォームにボタンを2つつくり、 ひとつのボタンイベント関数内に、無限ループを組みます。 もうひとつのボタンイベントは何でもいいです。 そうすると、無限ループを組んだほ宇野ボタンをクリックすると、 アプリからの応答がなくなるのです。まったく信じられません。 マウスが動くところを見ると、割り込みイベントは発生している 用ですが、もうひとつのボタンのイベントをりっすんしていないのです。 application.doeventを無限ループ中に入れると、たまにもうひとつのボタンが反応します。
>>704 いや、そういう理由じゃない。
ブール値のある言語でも、ブール値の定数と比較なんてことはしない。
Cでも、わざざXX_TRUE、XX_FALSEとか定義してあっても、定数との比較はしてない。
734 :
730 :2007/03/27(火) 20:37:20
処理と、表示の処理スレッドを別々に作れというのはわかりますが、 動作がどうなっているのかわからないのでいらいらします。 あれかな、ひとつのスレッド内は、あるイベント関数から抜けると、イベント待ちうけに はいるのかな?マルチタスクOSでいうpendに。
>動作がどうなっているのかわからないのでいらいらします。 じゃあ勉強すりゃいいじゃん。 掲示板でゼロから聞くおつもりか?
736 :
730 :2007/03/27(火) 20:42:09
マルチタスクOSじゃなくてリアルタイムOSだった^^;
738 :
デフォルトの名無しさん :2007/03/27(火) 20:45:00
>>730 ググればいくらでも出てくるから、読んでくるといいよ
莫迦に一から説明するのはちょっと骨が折れる
しょうがないから、処理を分割して、タイマーイベントでちょっとずつ実行しろ。
740 :
730 :2007/03/27(火) 20:45:21
>ひとつのスレッド内は、あるイベント関数から抜けると、イベント待ちうけに はいるのかな? この推測が正しいかどうかしりたいのです。もしくは書籍を紹介してください。 マルチスレッドの例として、動作が滞る例はたくさん出てきますが、 動作の概念がつかめません。
741 :
デフォルトの名無しさん :2007/03/27(火) 20:50:35
>>740 アプリケーションは基本的にシングルスレッドだ。
そいつがメッセージループを回してて
回収したメッセージに応じたウィンドウプロシージャに飛んでいく。
それを妨害して戻れなくすればメッセージが受け取れなくなるのは当然だろうが。
生成されたスレッドは、実行が終わったら消滅。
イベントドリブンを理解しろ。
744 :
730 :2007/03/27(火) 21:06:17
>>741 なんとなくわかりました。
アプリケーション内に小人がいて、スレッドを時分割でメッセージが
たまっていないか回る。
シングルスレッドの場合、確認したメッセージに応じて関数ポインタで
イベント関数に飛んでいき、処理を開始する。おわるまでずっと。
マルチスレッドの場合、時間がきたら処理をいったんやめて、次のスレッドに
飛ぶから、UIの動作とかは動ける。
ってかんじですか。
>マルチスレッドの場合、時間がきたら処理をいったんやめて、次のスレッドに飛ぶから、 CPUの動き的にはそうだけど、イベントドリブンのシングルスレッドとの比較なら、マルチスレッドは単純に 同時に動いてるって考えていいよ。
746 :
730 :2007/03/27(火) 21:17:57
>>742 普通は必要な期間はループさせるのではないのですか?
たとえば、ループ内でイベントが起きたらパケットを受ける関数など呼ぶとか。
アプリを閉じるとか、ネットワーク切るときとかにスレッドを終わらせるのでは?
イベントドリブンだと、その必要はないのかー。スレッド内で生成したインスタンスも消滅するよねえ。クラスの中に
Program.csとかみりゃなんとなくイメージわかんか?
>>746 メインスレッドでメッセージループを回してて、こいつは基本的にアプリケーションが終了するまで止まらない。
時間のかかる処理をするために新しいスレッドを立ち上げるわけだが、
こいつは用済みになったら廃棄する場合もあるし止めておくだけの場合もある。
749 :
730 :2007/03/27(火) 21:20:57
スレチガイになってきましたので終わります。 ありがとうございました。
750 :
デフォルトの名無しさん :2007/03/27(火) 21:23:21
>CPUの動き的にはそうだけど、イベントドリブンのシングルスレッドとの比較なら、マルチスレッドは単純に 同時に動いてるって考えていいよ。 こういう説明みると、ならシングルスレッドでいいジャンって思うよね。 何のためにマルチスレッドにするかまったく説明がつかない。
いや、説明がつかないのはむしろ750の発想だと思うけど。。
>>746 ワーカースレッドは、自分の用がすんだら終了するよ。
753 :
730 :2007/03/27(火) 21:35:52
むー。じゃあ、最優先でパケット受信しながら なんかメインで別のこともやってるばあいは、 毎回パケット処理用のスレッド立ち上げるの? オブジェクト指向なんてうそっぱちだー
何を言ってんだ。用が済んだら、と言っているではないか
>>753 オブジェクト指向とスレッドは関係ないだろ。
>>753 そのほうがイベントと相性がよくて便利なんだよ
>>753 昔のapacheなんか、接続があるたびにスレッドどころかプロセスを立ち上げてたぞ。
ってのはおいといて、スレッドの生成と消滅がボトルネックになるような処理の場合は、
消さないで使いまわしたりするな。
758 :
730 :2007/03/27(火) 21:50:37
>>何を言ってんだ。用が済んだら、と言っているではないか 了解。 >>オブジェクト指向とスレッドは関係ないだろ。 ちょっといってみただけ。たしかに。でも、時間的なものが絡んでくると、 シングルスレッドじゃ下手なクラス作っちゃうとメソッドの呼ばれる順番 とか変数の状態とかかなり気にしないとだめになるよね。
そりゃ下手なクラス作りゃそうなるだろうが、普通はそうはせん
Visual C# 2005 Express Edition で作ったアプリの Setup.msi とかって、どやってつくるの?
>>760 プロジェクトのプロパティ→「発行」ページ→「発行ウィザード」ボタン
762 :
760 :2007/03/27(火) 22:14:26
763 :
デフォルトの名無しさん :2007/03/28(水) 10:53:31
VBのEventステートメントに該当するものはC#にはないですか?
どなたかご教授ください。 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です。
visualC#2005EEは最初、1ファイル1クラスの時ファイル名とクラス名が一緒に変えられるじゃないですか 気がついたらファイル名変えてもクラス名が変わらなくなってたんですけど、 どうすればまた一緒に変えられるようになりますかね
クラス名を変更してファイル名と同じにしてみて
768 :
デフォルトの名無しさん :2007/03/28(水) 23:02:53
TreeView使っていて TreeNodeのFullPathプロパティからフルパス(string)をゲット 今度は逆にそのパスからノードにアクセスしたいんですが それってTreeViewに同名ノードを複数登録できるところからして 自分で再帰でもしないと無理ですかね?
そう セパレータに使う文字が TreeNode.Text に含まれていた場合どうする? という問題もある
770 :
768 :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曲くらい入っているでしょうか。
曲名からその曲が収録されているアルバムを探したり、
歌手からその歌手の曲全部表示したり、重複している曲を探したり・・
という機能が欲しいです。
これを実現するにはどのような技術が適していますか?
iTunesとか
databaseとか
NomaNomaとか
775 :
771 :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の内容が見れるようです。
どのような技術もなにも、 URLを生成してGetして文字列検索するだけ。 オーナーがサイトの構成変えたりしたら終了。
777 :
771 :2007/03/29(木) 00:44:28
>>776 そっか・・ありがとう。
難しく考えていたみたいです。
Namazuとかw
常駐プログラムを作ろうと思っております。 そこで、起動時にメインウィンドウを非表示にしたいのですが、 メインウィンドウのコンストラクタとかに Visible = false をしても メインウィンドウが表示されてしまうのです。 どのタイミングで Visible = false をすればよいのでしょうか?
>>779 Application.Run() を引数無しで実行
たしか、どぼんにそんなことが書いてあった希ガス
.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){}
素直に DocumentCompleted で待ち構えてな。
785 :
779 :2007/04/01(日) 22:41:12
レスありがとうございます。 Application.Run() を引数無しで実行する線から探ってみたいとおもいます。
かなりFAQな質問かもしれないけど、よろしくです。 VisualStudio2005(VS80sp1)で、Buttonを継承したカスタムコントロールを作ってるのですが、 機能や振る舞いをいろいろ限定、隠蔽したいです。で2点質問 1つめ まずは属性Browsableでプロパティを隠してるのだけど、いちいちoverrideせずにまとめて隠せないかな・・・ 2つめ ビルドエラーになるように、プロパティやメソッドをprivateやprotectedに変えたいけど、 スーパークラスのアクセス修飾子を変えんなゴルァとおこられちゃいます。 修飾子じゃなくて属性でなんとかならんかなと思ったのだけどObsoleteとかが効くのは クラスだけみたい。メソッドやプロパティだと警告にはならないし・・・ なんかいい方法ないかな?
>>786 IDEはあくまでIDEであり、エスパー機能は実装されていない
>>787 至言だね。
いや、当たり前のことなんだがw
>>786 二つ目はシャドウしたらダメなの?
「ビルドエラーになるように、」という言葉の意味がいまいちよくわからないけど。
なるわけないじゃんw 特定のインターフェイスをインプリメントしたら クラスが「俺様」の意図をテレパシーで感じてプロパティーウィンドウに 表示したくないプロパティーは隠蔽してくれるようになるの? んなアホなw
>>786 Button を継承するのをあきらめる
>>790 テレパシーでは感じてくれないだろうが
プロパティグリッドが実装してるかどうか聞いてくる可能性はあるかもな
実装したこと無いから知らんけど
そこまでカスタマイズしたいなら 完全自作Buttonクラスくらい簡単にできるよ。 そっちの方が楽ちんじゃないかな
Controlクラスから自作すべき
隠したいプロパティが何なのかわかんないけど、どっから継承しても同じ壁にぶち当たるのではないかと。
そもそもプロパティを隠したいって欲望はおかしい
同一のデータソースを参照する2つのコンボボックスの、 片方の値を変更するともう片方も同じように変更されてしまいます。 これを、独立した動作にすることはできないのでしょうか?
日本語でおk 例えば「片方の値」の値ってなんのことだよ。 人間相手にわからせる文章書けない奴が融通利かないPCを操れるかよ。
799 :
797 :2007/04/02(月) 19:23:21
>>798 失礼しました。
2つのコンボボックスは、同じBindingSourceを参照しておりまして、
同じ内容のDataMemberを持っています。
この状態で、コンボボックス1のプルダウンよりValeuを変更しますと、
コンボボックス2のValueもコンボボックス1と同じValueに変更されてしまいます。
これを独立した動作にすることはできますでしょうか?
データバインドの意味を理解してないだけだな。
801 :
797 :2007/04/02(月) 19:43:34
>>800 >>データバインドの意味を理解してないだけだな
どうやらデータバインドを勘違いしていたようです。
このアドバイスで何とか判りかけてきました。あとは自力で何とかします。
ありがとうございました。
>>796 たとえば、スキルも国籍もばらばらの多国籍軍PG達に作らせたときに、
できるだけ、イベントやプロパティの扱いかたをそろえたいときとか・・・
俺様コントロールとかもろもろで、俺様フレームワークもどきをお膳立てしといて
んで、俺様仕様で作ってくれとかそんなとこ
たとえば、Clickイベントじゃなくて、MouseClickイベントでするように強制するとか
ドキュメントって何の為にあるんだろう・・・
DQNMent
System.Threading.Thread.CurrentThread.Abort();
806 :
デフォルトの名無しさん :2007/04/03(火) 13:57:38
ドキュメントを完全に読み込んでないのに、DocumentCompleteイベントハンドラが呼ばれることがあるのだが。 プログラムを開始してから一番最初のNavigateの時。 こんなことがあっては困るんだが、こんなものなの?
漏れはなったことない。
808 :
デフォルトの名無しさん :2007/04/03(火) 14:31:55
CとC+とC#の違いはなんですか?
性別が異なります
年齢が異なります
811 :
867 :2007/04/03(火) 18:39:49
Cの fscanf(fr,"%c,%c",c,d); のようなことを C#でしたいのですがどうすれば良いのでしょうか? fr.ReadLine("%c,%c",c,d); ってだめですね。
正規表現だな。
xhtmlをXmlDocumentに読み込ませようとしてるんですが、
XmlDocumentTypeを作ろうとして、
CreateDocumentType("html", "-//W3C//DTD XHTML 1.1//EN", "
http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd ")
とかやると、ネット上のDTDを毎回読みに行ってるようで、
べらぼうな時間待たされるんですが、解決策をどなたか知りませんか?
treeViewでクリックするとノードを展開、折りたたみをしたいと思い、 以下のプログラムを作りました。 private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { if (treeView1.SelectedNode != null) { if (e.Node.IsExpanded) { e.Node.Collapse(); } else { e.Node.Expand(); } } } 一見うまくいったのですが、+,-のところをクリックすると、 例えば、展開したいときには 一度展開された後、折りたたまれてしまいます。 その理由はなんとなくわかるのですが、回避方法がわかりません。 回避するにはどう記述すればいいのでしょうか?
Hittest
>>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] だとエラーになるようです。
なんかC#じゃなくて、Cくさくね?
>char string 2つとも予約語だよ string temp[]
char[] chars = argv[i].ToCharArray (); なだ。 C#のコマンドラインってargcとかargv[]で見れたっけ?
C# Express editionで作ったWindowアプリケーションを .NET1.1で動くようにしたいのですが、 ビルドできるようにすることは可能でしょうか? とりあえずSharpDevelopでプロジェクトを読み込んで Target Frameworkを1.1に変更 partialで別れてるクラスを合体させてビルドしてみましたが、 Propertiesフォルダ下の Resources.resxやSettings.settingsあたりで エラーが沢山でまくりです
>char[] chars = argv[i].ToCharArray (); が書けてなんで >C#のコマンドラインってargcとかargv[]で見れたっけ? こんなこと知らないんだよw
>>822 C#のコマンドラインのコードなんて、何年も前に@ITあたりで見ただけだよ。
>>820 void Main() {
string[] argv = System.Environment.GetCommandLineArgs();
int argc = argv.Length;
}
817です。すいませんスレ間違えたっぽいです。Cですね。
>>824 static void Main(string[] args)
使えよ
>>813 事前に XmlResolver プロパティに XmlUrlResolver の独自派生クラスを設定。
そのクラスで
a) ResolveUri のオーバーライドで file:/// スキームに書き換える
b) GetEntity のオーバーライドで独自の Stream を返す
どっちかをする。
どんなファイルが要求されているかは、一度 DTD 読み込ませて GetEntity の absoluteUri を表示させれば分かる。
あとはそれらをローカルにファイルとしておいておく(a)なりリソースに突っ込んでいく(b で便利)なり。
829 :
813 :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
突っ込みどころが多すぎて
まぁとりあえず必ず1行で完結してしまうような形式のテキストではないのでそのやり方は お勧めできない って所からはじめようか
>>831 System.Text.RegularExpressions.Regex.Replace(source, "<(.|\r|\n)*?>", string.Empty);
出来ませんでしたがレスありがとうございました。
自分がどの書き込みした奴で何をどう試してどう出来なかったか書けば教えようもあるのに……
837 :
デフォルトの名無しさん :2007/04/04(水) 21:58:43
あのー、WindowsFormですが、Formのタイトルバーの部分をOwnerDrawすることって できましたっけ・・・。できれば色変えたり、幅変えたりしたいのですが方法が知りたいのです。
標準じゃできない WM_NCPAINT拾って自前で描くか FormBorderStyleをNoneにして枠から全部自前で描くか
タイトルバー使わずに描画。
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して 表示はできたんですが、今度は親ウィンドウのタイトルバーはアクティブ状態なんですが、 子ウィンドウ(擬似?)は非アクティブのままになってしまいます。 ググるにしても、キーワードが指定しにくくて思ったようにヒットしません。 どうすれば意図した表示にできるでしょうか。
>>841 イマイチよくわからんのだけど、全ての子フォームのインスタンスは親フォームが管理してね。
だから子フォームから別の子フォームを作る場合、親フォームに対してもう一個、子フォーム
作ってくれを呼び出すようにするのが筋じゃね?
子:「ママ、僕も弟がほしいよー」
父:「よーし、パパ(ry)」
843 :
841 :2007/04/05(木) 00:50:21
>>842 説明しづらいんですが、普通のSDIのアプリが
MDI親フォームの中で動くようにしたいってことです。
子フォームからいくつもたどれるようにしたいんだけど
難しそうですな。
>>843 こういうことなのか?
親ウィンドウ
|
|______MDI子_____MDI子その1()
| |___________MDI子その2
|
|
|______MDI子_____MDI子その1()
| |___________MDI子その2
以下...続く
845 :
841 :2007/04/05(木) 11:08:39
>>844 そうです、そんな感じ。
親フォームの配列か何かで管理すればいいのかな?
自分でFormを拡張して作ったほうが良いと思う。
むしろ、そんなちょっと想像しただけで糞とわかるUIを(
>>843 まだわからん。
普通のMDIとなにがちがうの?
MDI の中で 『SDI のアプリケーションを動かしたい』 んだと想像
qemuみたいな感じか。
851 :
841 :2007/04/06(金) 00:03:16
>>844 俺にはその図だと竿竹に鯉のぼりが付いててそれに再帰的に
真鯉、緋鯉がつらなるようなイメージしか浮ばなかったんだが…
親-(子|子) split で上下左右に分割 (よく見かける例)
親-(子-(孫|孫)))-(子-(孫|孫)))
>>844 の図
あ、そうか…一旦、左右に割って、それを上下に割って4面にして
その割った下の部分をさらに左右に割って*2 で全部で6面構成。
多機能な動画編集ソフトみたいなイメージか…
>>851 とかいって、よく見たら書いてあるし orz
>>851 MDI の中に表示したいアプリケーションが .NET 製かどうかでだいぶやり方が変わってくると思う。
上手くいけば、ちょいと外部から弄ってやるだけでやりたいことできるかと。
855 :
848 :2007/04/06(金) 11:33:24
>>849 >>851 MDIアプリの中で別のアプリを動かしたいってこと?
例えばEXCELやWORDを自作MDIアプリの中で…かな?
子フォームじゃないじゃん・・・
856 :
841 :2007/04/06(金) 21:37:04
SDIの意味わかってないな
レーガン政権時代に米国がソ連をつぶすために提唱した 嘘八百の防衛計画のことですね。
>>856 ただのMDIじゃん。
言葉にこだわりすぎ。なに言ってるか訳わからん。
標準で作れるアプリを覚えきってから新しいことをやりなさい。
861 :
841 :2007/04/06(金) 22:25:03
うーん、すいません。 MDIって親の中で同時にいくつか開けるんですよね? 僕が作ろうとしてたのは、表示は1ウィンドウのみにしたかったから、 そんな言い回しをしてました。
俺様用語使うときは独り言だけにしてくれ
子をつねに最大化しとけばいいんじゃね
864 :
848 :2007/04/06(金) 23:35:56
勇気出して
>>856 を実行してみたら …別アプリ起動じゃないじゃん。
>>861 MDI子ウィンドウの表示を1ウィンドウ限定にするのはプログラマであってユーザーじゃない。
>>859 も言うように専門用語なんて使わなくていいからそのまま伝えてくれ。
で、コレもう解決なの?
そもそも何を悩んでいるのか未だにわからない
866 :
841 :2007/04/07(土) 00:18:47
すんません、勘違いやら何やらでおかしなことばかり
言ってました。
結局は
>>842 さんの通りでした。
いろいろと失礼しました。
MDI子ウィンドウで孫を開いて孫の親を消そうとしていたのか… やっとわかったw
>>868 Calendar.GetWeekOfYear をうまく使えば同じになりそうな気がしないでもない
ある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)ならどういうプログラムを組めばよいのかヒントをご教示ください。 よろしくお願いします。
DocumentCompleted が発生するまでは Document は null または不完全。
>>872 遅くなりましたがレス有難うございました。
いまから調べてやってみます。
874 :
デフォルトの名無しさん :2007/04/07(土) 21:33:08
HashtableとかDataRowとか、そんなので、格納されてる値をstringへ 取り出すことよくあると思うjんだけど、 そんときはキャストつかう?それともToString()つかう? 性能考えるとキャストで、異常処理でInvalidCastExceptionをcatchかなとか思うけど これだと、DBNullとかが、InvalidCastExceptionだよね そうすると、やっぱり、ToString()で文字列にしたほうが汎用的だけど、nullを扱いたいってときに NullReferenceExceptionになっちゃうよね。 一応使い分けるようにしてるつもりだけど、明確な基準はもってないんだよね〜 まぁ好みの問題だと思うんだけど・・・おまんらはどっち?
String.Concat(Object)
String であることが明らかならキャスト DBNull になりうるなら事前にチェックする
StringとかBoolとかエイリアスもってるのって、どっちつかってる? String? string? 律儀にSystem.String?
>>877 Bool, bool とかって System.Boolのエイリアスだったんだ。
知らなかった…
むしろSystem.Boolがboolへのエイリアス
>>878 BoolはSystem.Boolのエイリアスではなくそのものだろ
なんとなく 型名のときはstring 静的メソッド/プロパティをとるときString ってしちゃう。意味ないけど
たしかboolやBoolはどっちもCILのプリミティブ型として扱われるんだったか
.NETではプリミティブ型は値型に含まれる。 System.Boolは値型でboolはそのエイリアス。
IL レベルでのプリミティブ型は i4/i8/r4/r8 の 4 種類 Bool は i4 だな
>>884 みたいに考えていいことになってる,ってことでしょ
実際プリミティブ型(System.Bool等も含む)は特別扱いされる
staticなイベントを発生させるとき、object senderには何を設定すればいいのでしょう。 nullでいいんですかね。
そう言うのに悩んだらまず MSDN のガイドラインを見てみるんだ つ イベントのデザイン
>>887 ありがとうございます。
「イベントの処理と発生」あたりをいくら見てもstaticイベントに関する記述が見つからなくて困っていました。
ガイドラインですね。覚えておきます。
スタティックならEventArg(の派生)だけでいいだろ
891 :
デフォルトの名無しさん :2007/04/08(日) 06:13:33
基本構文を学んだ程度の初心者です。 一応、C言語でのwin32apiを使ったプログラミングの経験 は少なからず有るのですが、例えば 2chブラウザのTwintailソースを見て勉強しようと思っても 初心者には複雑すぎて、部分的にしかわかりませんでした。 Formのソースを見てもすべて、自作でコントロールの配置や イベント管理(フォームをダブルクリックして出すメソッドを使わない) を自前で処理してるので、とても初心者の自分には ソースの解読が難解です。 で、すみませんが、参考になるサイトは有りませんでしょうか。 どうもメソッド(object sender, eventargc e) だけで処理していくのは適切ではないような気もするので すみませんが、参考になるサイトをご存じなら教えてください。 お願いします。
とりあえずあれだ。初心者言うな、テンプレ嫁。
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(); } } }
エラーメッセージの通りとしか言いようがないが……。 取りあえずヘルプで StreamReader のコンストラクタを調べろ。 そこに渡すことができる引数の型が書いてある。 それから FileInfo のメンバ一覧も。
プログラムが動かない、と、コンパイルエラー、を区別しよう、な。
>>891 twintai見てみたが普通にイベントハンドラを使ってるし特に変わったところはないと思う
ただし,メニューのイベントハンドラはpartialクラスを使ってファイルを別にしてあるみたい
partialクラスは一つのクラスを複数のファイルに分けて書けるC#の機能
自分でイベントハンドラ用のメソッドを別ファイルに書いたあと,
デザイナからそのメソッドをイベントハンドラとしてコントロールに関連付けてるのかな
>以下のプログラムがうまく動きません。 動く以前の問題だろうがっ
じゃあ、何の問題なんだよ。具体的に述べれや
初心者なら初心者でいいしここはそういう場なんだが、 コンパイル通すぐらいまでは自力でやってくれ。掲示板での フォローは難しい(orドキュメント嫁で終わる)んだそのレベル だと。
だから何の問題なのかと聞いている。問題を具体的に述べろ。
まだガッコ始まらないの?
無効な引数がいくつか含まれているんだよ!!
な、なーんだ。
HtmlDocument型で文字の置換ができないようなのですが、 できるならHtmlDocumentで置換したいのです。 何か方法がないでしょうか? 一度stringにして置換した後、 HtmlDocumentにしようとしたのですが、 型変換できなくて困っています。
よくわからんけどHtmlDocument.AllでHtmlElementを回して HtmlElement.InnerTextを置換すれば委員ジャマイカ
二次元配列型もIListを実装してるみたいだから IListにキャストして一次元のインデックスでアクセスしてみたら例外出た 何のためにIListを実装してるのかと
いっそ Body の InnerHtml とっかえちまえば良いんじゃね つかもうちょっと分かりやすい日本語を頼む
だってArrayが実装してんだからしゃーないじゃん
>>906 stringを元の位置に戻すだけですよ?
912 :
906 :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ソースを保持して、置換を繰り返すことでノードの実装を
実現できているのですが、置換を繰り返しまくっていて
あまり美しい方法ではないような気がしたので、
質問した方法でできないかなと考えた次第です。
913 :
906 :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 ↓をしたいためです。
HtmlDocument.GetElementsByTagName("A")で
HtmlElementのコレクションをつくり、それを元にノードを作りたいのです。
HTML解析してノード構築するだけじゃいけない理由があるのか? 意味わかんねー
>>916 いや、別にこの方法でできないかなと思ったまでで
他の方法でも構いません。実際、
stringでHtmlのソースを読み込んで
ノードは実装できてますし。
つまり、行き当たりばったりで作ってるだけってことですな。 HtmlDocumentの構造を勉強しなおしたほうがいいよ。
何故, >document = (HtmlDocument)docTemp; こんな幼稚なことが通ると思ったのかが謎。
あー……ようやくやりたいことがわかった。 でも普通やらないな、そんなこと。 こんなのとか。 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 が欲しいところではあるが。
とりあえずMSDNライブラリをろくに読んでないことは把握した。
>>918 いや、作るもなにも勉強しながら練習してるだけです。
まだまだ知識がありませんので変なことも沢山やってますので
そのときはどんどん指摘していただけると嬉しいです。
>>919 やってみて通ったらラッキーぐらいでやりました。
>>920 ありがとうございます。説明下手ですいませんでした。
これでやってみます。
ソースをstring に読み込んで (exe) でキャストしてファイルに書き込むと、 実行ファイルが出来る。 キャスト万歳!
>>923 CodeDOM とキャストのオーバーロードを使えば大体可能だがw
SourceCode code = new SourceCode(str); ((Exe)code).Start(); みたいに書けるようにしたら面白いかもしれないな 実際可能だろうし
まあわざわざキャストで実現することはなかろ code.Compile().Start(); の方がよほど自然
>SourceCode code = new SourceCode(str); >((Exe)code).Start(); strの中に、これを入れたら…
昔、アセンブラとマシン語でMC68000いじってたころは、メモリ節約とかプロテクトとかワームとかで おなじようなことあったね〜
そんなあなたにはILGeneratorがおすすめ
そんなつまんないことオプティマイザに任せろよ。
>>864 すごい亀だが、WinAPIのSetParent
BackgroundImageが設定されてるパネルの上の背景がTransparentのコントロールの描画時のちらつきを少なくする方法はありますか
>>932 マニュアルに 「ちらつきますが気にしないでください」 って書けば良いと思うよ
【FAQ】 Q) 画面のちらつきが気になるのですが……。 A) 気のせいです。
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 のような記述のしかたをおしえていただけませんか?
変数名は無理・無駄・ムラムラ
配列作っといてインデックスでアクセスすれば?
>>939 インデックスでのアクセスの仕方がわかりません。。
なぜ変数名を変えたいのか
任意の数のソケットを作りたいんです
List<>とか、そういう系統の構造を使えばいいじゃない。
hoge[i] が解らんって? じゃあ、switch/ifで全パターン網羅しろよ。
int[] tcp = new int[500]; System.Net.Sockets.TcpClient tcp[i] = new System.Net.Sockets.TcpClient(host, port); こうでしょうか?
List<>とはhoge[i]とかのことですか?
釣りならよそで
初心者でなのにはしょってすみません。。 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); } } }
>>944 リスト長が可変なのでちょっとむずかしいです
ヒントになるキーワードいっぱいもらったんだから一巡り検索してこいよハゲ
昨日からずっと調べてわからなかったから来たのですがだめでしょうか? System.Net.Sockets.TcpClient tcp[i] = new System.Net.Sockets.TcpClient(host, port); ここの部分がどうしても解決できないんです
なんとかできた! ありがたう
Type tの指す型にオブジェクトをキャストするってどうやるんでしょう? リフレクションとかいうものを使わないといけないんでしょうか
gettype つかえばいいんじゃにゃい?
>>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#にあれば教えて欲しいですが・・・・
GDI+ には無いね。 ControlPaint の Reversible 系は画面にしか描けないし。 System.Drawing.Pen は GDI の PEN オブジェクトのラッパってわけじゃないから FromHandle 持ってないし。 Graphics から GetHdc して GDI でがりがり描くしか。
GDI+は本当に使えない子だよね。 BitBlt相当もないし。
マイクロソフトはMIL APIを公開するべきだと思うんだ
962 :
958 :2007/04/11(水) 22:34:15
ありがとうございます
線の枠の形でクリッピングパスを生成して色変換すればいい。
>>961 のぞいてみれば分かるがたいしたもん入ってなさげだぞ
少なくともUIのもろもろはその上の混合アセンブリ内
まあDirect3DかOpenGL使えってこった
965 :
958 :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);
突っ込みどころ満載で…
んじゃ代りに。 ・[]。コンパイル通らないっしょ。 ・staticメソッドを使うのにクラスをインスタンス化する必要はない。 ・CreateGraphics()して作ったGraphicsはDisposeする。ReleaseHdcしない。 ・CreateGraphics()して作ったGraphicsで描くと再描画で消える。
++厨全員あんなんじゃないぞと言っておく
969 :
デフォルトの名無しさん :2007/04/12(木) 10:50:35
すみません、TextBox や RichTextBox では、キー操作で cntrl + Ins や shft + Ins などすることで、はじめから自動的に Copy & Paste する機能が実装されていますが、、 これってのはマウス操作でこれと同じことをやるときは、自分でそのため のメソッドを全部作成してやらないといけないでしょうか?それとも、 これらのキー操作で叩いている内部のメソッドか何かがあってそれをCallする だけでできる、みたいなことはあるでしょうか?
>>969 実装されているのは、OSのほう。
マウス操作も同じ。
971 :
デフォルトの名無しさん :2007/04/12(木) 11:16:20
>>970 そうだったんですか、どうもです。
ということは、Copy&Pasteなどは、Mouse操作でボタンを押して行なうような
場合の動作は、FileやFolderなどのCopyなども、CopyやPasteの機能を
コードで作成して自分で実装するしかないということになるわけですよね。
972 :
970 :2007/04/12(木) 11:20:03
いや、独自の処理を実装する以外は、コードを書く必要はない。 Win32api・メッセージループで検索してみ。
ぐぐったけど実際どうやればいいのか見つけられなかった
>>967 なんかこういう得意げな馬鹿って笑えるなw
お前の方が笑えるっていうか笑えない。
>>1 読んだことなかったが、ここは
>>1 の案内とは別世界だな。
チョット反省した。
今まで、すまんかった。
学校いけよ
俺ももう一度学校行きたいわ
むしろ小学生からやり直したい 今の知識とかのままでw といつも思う 人生の分岐点間違えすぎだ俺・・・・
どうせどの選択をしても大してかわってなかったと思うよ とお決まりのセリフ
合法的に、小学生とか中学生の女の子と遊べるではないか。 この歳になると、遊ぶだけで犯罪だよ・・・ いあ、むしろ話しかけるだけで・・・orz
983 :
デフォルトの名無しさん :2007/04/13(金) 12:00:59
>>982 さぁ、今晩何処で飲みながら語り合おうか?
プログラミングするぞ!プログラミングするぞ!
徹底的にハードな
システムの音量を調整したいのですが調べても全然出てきません。 WAVファイルはPlaySound()というもので再生や停止ができる。 という程度の事は分かったのですがシステム全体の音量を調整したいです。 どなたかヒント教えてもらえませんか?
989 :
986 :2007/04/14(土) 21:26:29
レスありがとうございます。 しかし何が書いてるかすら分からないorz 学生でまだ手探りってレベルです。 ここで聞くのもなんなんですがVBでちょっと調べてみたらまだこっちよりは簡単そうなんですがどうでしょうか?
>>989 .NETなんだしVB.NETで理解できるんならVB.NETで書けばいいんじゃね?
.NETならC#が一番すっきりかけるんじゃない会
言語の問題じゃないだろバカ
言語の問題だマヌケ死ね
994 :
デフォルトの名無しさん :2007/04/15(日) 05:34:26
プログラミング初心者です。 いきなりC#から始めるのって大丈夫ですか? C言語から始めたほうがいいのかな???
C言語はあまりC#の役には立たない希ガス C#から始めたら?
996 :
デフォルトの名無しさん :2007/04/15(日) 09:17:29
C#とC言語系はまったく違う 従ってCを勉強してもC#では役に立たない
ポインタの概念だけはCで学ぶと手っ取り早いけどね。
ポインタはアセンブリ言語をやるのが一番手っ取り早いよ。
アセンブリじゃ言語構造が違うだろ。別にいいけど。
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。