ふらっとC♯(初心者用) Part6
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2005/07/22(金) 12:04:18「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
少しずつC#プログラマを名乗るものが現れました。みなさん一緒に勉強しましょう。
前スレッドはこちら
http://pc8.2ch.net/test/read.cgi/tech/1065196964/l50 (Part5)
http://pc2.2ch.net/test/read.cgi/tech/1059028988/l50 (Part4)
http://pc2.2ch.net/tech/kako/1047/10472/1047210828.html (Part3)
http://pc2.2ch.net/tech/kako/1035/10358/1035895873.html (Part2)
http://pc2.2ch.net/tech/kako/1023/10237/1023766485.html
C♯相談室 Part24
http://pc8.2ch.net/test/read.cgi/tech/1117631000/l50
0002デフォルトの名無しさん
2005/07/22(金) 12:05:38http://www.borland.co.jp/csharpbuilder/personal/index.html
.NET Framework 1.1 製品ドキュメント
http://www.microsoft.com/japan/msdn/library/ja/netstart/html/sdkstart.asp
@IT Insider.NET
http://www.atmarkit.co.jp/fdotnet/index.html
Insider.NET 会議室 ディレクトリ
http://www.atmarkit.co.jp/fdotnet/index/bbs/index.html
GotDotNet Japan 掲示板
http://www.gdncom.jp/general/bbs/
宇宙仮面の C# プログラミング / C# Programming
http://ukamen.hp.infoseek.co.jp/
WisdomSoft C#入門
http://wisdom.sakura.ne.jp/programming/cs/index.html
WisdomSoft Microsoft .NET入門
http://black.sakura.ne.jp/~third/system/msnet/msnet.html
どっとねっとふぁん
http://dotnetfan.org/
緑のバイク 初めてのC# 〜 覚え書き 〜
http://homepage3.nifty.com/midori_no_bike/CS/
どぼん!の .NET Tips
http://dobon.net/vb/dotnet/
.NET のつぼ
http://park16.wakwak.com/~mimi/dotnet/top.html
0003デフォルトの名無しさん
2005/07/22(金) 12:16:110004デフォルトの名無しさん
2005/07/22(金) 19:33:41http://wisdom.sakura.ne.jp/
0005デフォルトの名無しさん
2005/07/22(金) 23:34:430006デフォルトの名無しさん
2005/07/23(土) 00:07:400007デフォルトの名無しさん
2005/07/24(日) 14:46:14C#にFLASH(SWFファイル)を読み込みました。
デスクトップウォッチみたいなものをつくりたいので
SWFの背景も透明にしたいと思うのですが上手くいきません。
これは実現可能なことでしょうか?
00087
2005/07/24(日) 15:56:23すみません
0009デフォルトの名無しさん
2005/07/24(日) 16:36:5600109
2005/08/01(月) 14:16:57すみません
0011デフォルトの名無しさん
2005/08/01(月) 15:49:520012デフォルトの名無しさん
2005/08/04(木) 23:02:32.C# に対応したおすすめのステップカウンタ
何か紹介してください
宜しくお願いします
001312
2005/08/04(木) 23:25:19こんなの利用してみました
いいかどうかはともかく、数字が出るのでOKっす
ありがとうございました
0014デフォルトの名無しさん
2005/08/05(金) 20:43:27なんとかして消す方法ないですか
0015デフォルトの名無しさん
2005/08/05(金) 20:45:20Release
0016デフォルトの名無しさん
2005/08/05(金) 21:09:45C:\○○\obj\Release\HogeHoge.pdb って感じで
0017デフォルトの名無しさん
2005/08/05(金) 21:12:28それでも入っているなら、デバッグ情報を生成するかどうかの設定がどこかにあるから必死こいて探せ。
0018デフォルトの名無しさん
2005/08/05(金) 21:15:22objフォルダは人に見せるものではない。
自分でさえまず見るものではない。
001917
2005/08/05(金) 21:23:060020デフォルトの名無しさん
2005/08/05(金) 21:24:57ビルドの設定は初期状態から弄ってないです
>>18
bin\Release\HogeHoge.exe に ...\obj\Release\... って文字列が入ってるんです
0021デフォルトの名無しさん
2005/08/05(金) 21:30:53そのパスが exe 内にあるということは、デバッグ情報付きでビルドした証拠
……設定を、もう一度確認の事
0022デフォルトの名無しさん
2005/08/05(金) 21:33:180023デフォルトの名無しさん
2005/08/05(金) 21:46:19<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
のうち <DebugType>pdbonly</DebugType> を消したら
.....\obj\Release\HogeHoge.pdb の文字列が消えました
IDEが手元にないんでIDEではどうするかは分からんです
でもこれが初期設定だったんだよー信じてくれー
ttp://winfx.msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_fxgenref/html/d8c19b36-f5ca-484b-afa6-8ff3b90e103a.asp
によると DebugType を消して EmitDebugInformation=true にすればいいっぽい?
0024デフォルトの名無しさん
2005/08/08(月) 12:52:250025デフォルトの名無しさん
2005/08/09(火) 07:40:370027デフォルトの名無しさん
2005/08/16(火) 16:18:36public virtual Control ActiveControl {get; set;}
となっているけど、本当にvirtualになってる?
0028デフォルトの名無しさん
2005/08/16(火) 16:24:33困ったときはildasmでアセンブリを確認。
0029デフォルトの名無しさん
2005/08/16(火) 18:36:04.method public hidebysig newslot specialname virtual final
instance class System.Windows.Forms.Control
get_ActiveControl() cil managed
この様になってました。final がついているということは
virtual ではないということでしょうか?
MSILがわからないので的外れなことをいっているかも。
0030デフォルトの名無しさん
2005/08/16(火) 18:41:01……筈
virtual かつ final なメソッドは在るよ
0031デフォルトの名無しさん
2005/08/16(火) 18:54:51フォーム1のボタンを押すと、フォーム2を開く。
フォーム2のボタンを押すと、フォーム1に戻る。
ということがやりたいのですが、
フォーム2を開けずに困ってます。
2枚目のフォームをプロジェクトに追加して、インスタンスを作成すれば表示できるのですが、
なんか、いまいちな気がするのです。。。
スタンダードなやりかた教えて下さい。
なんか、すんごい初心者質問ですいません。。。
0032デフォルトの名無しさん
2005/08/16(火) 18:58:13そこまで調べたなら上出来だ。
ちょっと解説を付けとこう。
ヘルプのSystem.Reflection.MethodBaseクラスのIsVirtualプロパティにそこら辺の情報がある。
ちなみにこのプロパティはメソッドにvirtual属性がついてるかどうかを返すって単純なもの。
かいつまんで言うと、コンパイラはインターフェイスの実装メンバには必ずvirtual属性を付けなければならない。
その場合、クラスでその実装メンバがvirtualやabstractで修飾されていない場合はfinal属性を付けてオーバーライド禁止であることを示す。
何でこんな事をするかって言うと、
インターフェイスの明示的実装が内部でインターフェイスメンバのオーバーライドとして表現されるから、
内部的にはvirtualじゃないとまずいのね。
>>31
ごく真っ当な手法だと思うんだが、なにがどういまいちと感じるんだ?
0033デフォルトの名無しさん
2005/08/16(火) 20:42:02解説ありがとうございます。
IsVirtualプロパティも参考にしてみます。
0034858
2005/08/16(火) 22:18:27[C#バージョン]
VC# Express Beta2
Windows XP sp2
[目的]
IMEをONの状態にしておいて、
日本語による文字入力が「開始」されたことを検知する。
また、
日本語による文字入力がリターンキーなどにより確定したことを検知する。
[作ってみたソース]
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
protected override void WndProc(ref Message m)
{
Console.WriteLine(String.Format("{0,5:X}",m.Msg));
base.WndProc(ref m);
}
}
}
0035デフォルトの名無しさん
2005/08/16(火) 22:23:08フォームには、テキストボックスがひとつ置いてあるだけです。
[問題]
上記おソース如く、m.MSGを監視していても、
例えば、
WM_IME_STARTCOMPOSITION(0X010D)や、
WM_IME_ENDCOMPOSITION(0X010E)が、
飛んできません。
[今までのアドバイス]
・VC6++では、当然の如くうまくいくらしい。
即ち、問題なく0x010D等が飛んでくるらしい。
・フィルタリングされているのではないか。
http://www.google.com/search?num=50&hl=ja&q=%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0+Msg+WndProc&lr=lang_ja
なお、m.MSGとして133や84、112などは問題なく飛んできます。
ただ、文字入力開始時のみならず、文字を続けて確定することなく入力している最中は、
一切、メッセージが飛んできません。
0036デフォルトの名無しさん
2005/08/16(火) 22:26:12・http://wisdom.sakura.ne.jp/system/winapi/win32/win9.html
・http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0+Msg&num=50
・http://www.google.com/search?num=50&hl=ja&q=%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0+Msg+WndProc&lr=lang_ja
・http://pc8.2ch.net/test/read.cgi/tech/1122723009/450-469
0037デフォルトの名無しさん
2005/08/16(火) 22:34:52言い換えればどのウィンドウなのか、考えれば分かるよな?
0038858
2005/08/16(火) 22:55:04WndProcを呼び出すときに、
自己のハンドルであるThis.Handleを引数として入れてあげないと
いけないってことですか??
(↑この文は、かなりわけもわからずに書いていますが・・・)
0039858
2005/08/16(火) 23:12:470040デフォルトの名無しさん
2005/08/16(火) 23:54:34それなのにFormのWndProcで受け取ろうとしても無駄でしょ?
受け取るWndProcはどのオブジェクトのものよ?
それをオーバーライドしなさいってこと。
0041858
2005/08/17(水) 00:21:04テキストボックスです・・・。
受け取るWndProcはテキストボックスクラスから作ったTextBox1のものです。
それをオーバーライドします。
ふむふむ・・・え、そうなの??(><
0042858
2005/08/17(水) 00:38:37{
protected override void WndProc(ref Message m)
{
Console.WriteLine(String.Format("{0,5:X}", m.Msg));
base.WndProc(ref m);
}
}
public partial class Form1 : Form
{
TextEX tx;
public Form1()
{
InitializeComponent();
tx = new TextEX();
tx.Name = "40さんありがとう";
tx.Left = 1;
tx.Top = 1;
tx.Width = 50;
this.Controls.Add(tx);
}
}
0043858
2005/08/17(水) 00:54:36{
protected override void WndProc(ref Message m)
{
switch(m.Msg){
case 0x010D:
this.Parent.Text="start";
break;
case 0x010E:
this.Parent.Text="end";
break;
default:
break;
}
base.WndProc(ref m);
}
}
public partial class Form1 : Form
{
TextEX tx;
public Form1()
{
InitializeComponent();
tx = new TextEX();
this.Controls.Add(tx);
}
}
板汚してすみません。
テキストボックスから派生クラスを作らなくてもすむ方法って
ないでしょうか・・・。
0044デフォルトの名無しさん
2005/08/17(水) 23:11:59フォーム内のTextBoxに何か文字を入力
↓
登録を押す
↓
指定されたWeb上のTextBoxに文字を入力し、スクリプトを起動させる(?)
うぅ、説明がひどすぎる・・・
(例) 2chの専用ブラウザ
→フォーム内のTextBoxに書き込み、「書き込み」ボタンを押すと2chに書き込むことが出来る
すみません、日本語が下手すぎますね。
申し訳ありませんがご教授願います。
0045デフォルトの名無しさん
2005/08/17(水) 23:24:54専ブラの2ch投稿と一般的な入力補助ソフト(懸賞支援みたいなのとか)じゃ全然動きが違うが……
>>43
何で派生クラスが嫌なのさ
オブジェクト指向が嫌ならWin32APIにどっぷりつかってSetWindowLongでWndProc書き換えれば
004644
2005/08/17(水) 23:36:54とあるWebページに文字を何箇所か入力して登録をする作業があるのですが、
入力する場所がかなり離れていていちいちスクロールバーを上下させるのが
面倒なため、入力が必要な部分だけ抜き出して登録を行いたい、というのが
目的です。
0047デフォルトの名無しさん
2005/08/17(水) 23:40:18WebBrowser クラスの URL プロパティだったかに
javascript:hogehogehgoe とか代入しても動いていたような気もする
0048858
2005/08/18(木) 00:24:08すみませんでした。
派生でがんばります。おっしゃるとおりです。
0049デフォルトの名無しさん
2005/08/18(木) 00:39:21よくあるなこの質問。
0050デフォルトの名無しさん
2005/08/18(木) 04:29:37http://pc8.2ch.net/test/read.cgi/tech/1121600038/191
もしくは
HttpWebRequest、HttpUtility.UrlEncode
005144
2005/08/19(金) 12:23:49どうもありがとうございます。
仕事の効率化とC#の勉強もかねて作ってみようかと思ったのですが、
結構難しくて挫折しそうです…。サンプルのソースもかなり探したのですが
見当りませんでした。
0052デフォルトの名無しさん
2005/08/24(水) 07:41:34floatの変数を書式指定してstring型に変更するためにC言語のsprint()のような関数を探しているのですが見つかりません
同じような動作をする関数はありますか?
0053デフォルトの名無しさん
2005/08/24(水) 08:25:40関数じゃなくてfloat(System.Single)のインスタンスメソッドだけどな。
0054デフォルトの名無しさん
2005/08/24(水) 08:30:03foo.ToString("F2")
みたいにやるといいんですね
助かりました
0055デフォルトの名無しさん
2005/08/24(水) 22:15:570056デフォルトの名無しさん
2005/08/24(水) 22:17:330057858
2005/08/25(木) 00:10:41String.Format("{0,5:F}←書式設定",hensuu_float);
0058デフォルトの名無しさん
2005/08/25(木) 20:21:34新しいパソコンを買おうと思っているのですが、もちろんできる奴がほしいのですが
変更できない奴買うと困るので教えてもらおうと思って書き込みました。
あと、何故できないのかも教えていただけたら幸いです。宜しくお願いします。
0059デフォルトの名無しさん
2005/08/25(木) 20:53:200060デフォルトの名無しさん
2005/08/25(木) 21:37:10基本的に総べてできる。
できないPCを見たことが無い。
0061デフォルトの名無しさん
2005/08/25(木) 22:03:45まさか拡張子を表示しない設定にしてるとかないよな
006258
2005/08/25(木) 22:11:28自分のは98でして、OSとかもちろん関係ありませんよね
拡張子を表示しない設定というとすべてのファイルにしてないってことですか?
状況をかくと***.cに変えるとき、例えば test.cって名前で保存すると
そのままの名前でテキストになってます、もちろんすべてのファイルにしてあります
弟のPCを使うと普通にCファイル?にできるんですけど
0063デフォルトの名無しさん
2005/08/25(木) 22:19:330064デフォルトの名無しさん
2005/08/25(木) 22:19:46使ってるソフトの設定だろう。 (なに使ってるかしらんが。
使い方の問題でPCのせいではない。
0065デフォルトの名無しさん
2005/08/25(木) 22:25:420066デフォルトの名無しさん
2005/08/25(木) 23:32:34その中の表示text部分の文字を寝かせる事は可能か
0067デフォルトの名無しさん
2005/08/25(木) 23:37:18寝かせる?Italic の事?
ならばフォント指定でそうすれば良い。
0068デフォルトの名無しさん
2005/08/25(木) 23:39:59XPのビジュアルスタイルを保ちつつオーナードローする方法ってない?
0069デフォルトの名無しさん
2005/08/25(木) 23:42:470070デフォルトの名無しさん
2005/08/25(木) 23:46:50そう言う風にフォントを作ればできる。
Fontクラスのコンストラクタじゃ不可能なのでFont.FromLogFontで。
LOGFONT構造体については頑張ってしれべれ。
0071デフォルトの名無しさん
2005/08/25(木) 23:53:45分かった
007253
2005/08/26(金) 00:22:50エラーE2209 インクルードファイルをオープンできない、といわれました
borland c++ 5.5 ってコンパイラーを使ってます。
誰かたすけてもらえませんか?
0073デフォルトの名無しさん
2005/08/26(金) 00:26:28007453
2005/08/26(金) 00:31:35すれ違いってwそりゃないぜ
0075デフォルトの名無しさん
2005/08/26(金) 00:34:38007653
2005/08/26(金) 00:36:230077858
2005/08/26(金) 01:51:18素直だな。
0078デフォルトの名無しさん
2005/08/26(金) 03:32:030079デフォルトの名無しさん
2005/08/26(金) 05:47:570080デフォルトの名無しさん
2005/08/26(金) 13:46:41+
++C++
+
+
0081デフォルトの名無しさん
2005/08/26(金) 15:28:100082デフォルトの名無しさん
2005/08/26(金) 15:46:39Dは無駄な機能だらけといいたいのか貴様!
0083デフォルトの名無しさん
2005/08/27(土) 00:21:59ブラウザ起動直後に自動的にタブページが
1つ開いている状態にするにはどうしたらいいか
ヒントくれ
0084デフォルトの名無しさん
2005/08/27(土) 00:23:48何が分からないのかが分からないよ
0085デフォルトの名無しさん
2005/08/27(土) 00:44:05about:blank
0086デフォルトの名無しさん
2005/08/27(土) 05:28:40下のような構造のコードなんですが、
rnd が初期化される前に rnd.Next() が呼ばれるため
エラーになってしまいます。
これはどうやって回避すればよいのでしょうか。
要はベースクラスのコンストラクタよりに先にコードを実行したいんですが
class Hoge
{
static void Main(string[] args)
{
DerivedClass cls = new DerivedClass();
}
}
class BaseClass
{
public BaseClass()
{
VirtualMethod();
}
protected virtual void VirtualMethod() { }
}
(つづく)
0087デフォルトの名無しさん
2005/08/27(土) 05:29:11class DerivedClass : BaseClass
{
private Random rnd;
public DerivedClass()
{
rnd = new Random();
}
protected override void VirtualMethod()
{
int n = rnd.Next();
Console.WriteLine(n);
}
}
0088デフォルトの名無しさん
2005/08/27(土) 05:45:33if (rnd == null)
{
rnd = new Random();
}
int n = rnd.Next();
...
008986
2005/08/27(土) 06:14:34レスどうもありがとうございます。
その方法がありましたね・・思いつきませんでした。
自分の場合は解決したのでいいのですが、
コンストラクタでの初期化はできないんですかね。
rnd の使用箇所が多いと結構面倒な気がしますが
0090デフォルトの名無しさん
2005/08/27(土) 06:26:26{
Random rnd = new Random();
protected override void VirtualMethod()
{
int n = rnd.Next();
Console.WriteLine(n);
}
}
こんな風に書けたと思う。
009186
2005/08/27(土) 07:06:05ああ、なるほど・・
そんな書き方ができたんですねえ。
それが答えっぽいですね。
コンストラクタの初期化は全部そうしたほうがいいのかな・・?
ともあれ、どうもありがとうございました。
0092デフォルトの名無しさん
2005/08/27(土) 11:37:33>コンストラクタの初期化は全部そうしたほうがいいのかな・・?
その考え方を続けると立ち上がりが異常に遅いソフトが出来るぞ。
漏れは、Initialize()メソッドを作って、まずは最短で画面表示をして。
初期化を必要な場所に分散している。 (まあ、好みの問題だがな。
これにより、何をしているかを表示するユザーフレンドリーなソフトにしている。
0093デフォルトの名無しさん
2005/08/27(土) 11:59:14初めからそれをやるのは早すぎる最適化
0094デフォルトの名無しさん
2005/08/27(土) 16:37:18先にフィールドのrndに中身が入って、その後
BaseClassのコンストラクタ -> DerivedClassのコンストラクタが呼ばれる流れになるんでしょうか?
0095デフォルトの名無しさん
2005/08/27(土) 16:43:56そうだよ。
ildasmで派生クラスのコンストラクタを見てみると流れがよく分かる。
0096デフォルトの名無しさん
2005/08/27(土) 16:56:06ありがとう。
ちなみにこの考え方続けると>>92さんの言うように初期化が遅いソフトになるってのは分かるんですが、
今回の>>90の場合は、rndはstaticメンバじゃないから、
DerivedClassのオブジェクトが作られるまで中身入りませんよね?
0097デフォルトの名無しさん
2005/08/27(土) 17:04:010098デフォルトの名無しさん
2005/08/27(土) 17:04:29クラス単独で見ればそうだね、全体を見たら、起動時のコンストラクタに
入っていたと言うのは良くある話。
0099デフォルトの名無しさん
2005/08/29(月) 01:46:28監視して、以下のようなソフトを作りたいと思っています。
�@ワード文書内において、
�AIME入力、言い換えれば漢字入力を開始すると、
�B入力された文字が確定されるまで、
�C背景を薄いブルーにする、
というものです。
すでに私は、
ソリューションダイアログでWord.ObjectLibraryを参照するように設定することで、
�@ワード文書に例えば文字列をinsertしたり、選択範囲を変更したりできるようになりました。
また、
自分のフォームに、テキストボックスから派生させたMyテキストボックスを
貼り付けて、そのMyテキストボックスに文字が入力されはじめたことを
ウィンドウメッセージとして取得できるようになりました。
具体的には、派生させたクラス(Myテキストボックス)のWndProcをOverrideして
m.MsgがWM_IME_STARTCOMPOSITIONかどうかを判定する機能を追加しました。
【質問】
しかしながら、Myテキストボックスでは「文字が入力されはじめたことを検知」する
機能を搭載することに成功したのですが、
ワード文書ではうまくいきません。とうかどうやるのかよくわかりません。
テキストボックスから、上記の機能を搭載したクラスを派生させるように、
例えば、Word.ApplicationやWord.Documentから派生クラスを用意して適宜同じように
WndProcをoverrideすればうまくいくでしょうか。
もっとも、Word.Applicationは、インターフェース型(?)ですが。
【質問2】
思いっきりすれ違いな予感もしますが、当方VisualC#2.0 beta2 , WindowsXPsp2,Word2000です。
よろしくお願いします。
0100デフォルトの名無しさん
2005/08/29(月) 17:39:47できません
0101デフォルトの名無しさん
2005/08/29(月) 18:49:40どなたかご存知の方いらっしゃいましたら教えていただけないでしょうか
0102デフォルトの名無しさん
2005/08/29(月) 19:14:40なぜWaitMessageを使いたいのか知らないが、どうしても使いたいならDllImportして使えば?
0103101
2005/08/29(月) 19:46:22ウィンドウを最小化している間、無限ループを一時止めるために使おうと思ってます。
今は一応DllImportして使ってますが、他に.netでの一般的な方法が無いかと思い質問させていただきました。
0104デフォルトの名無しさん
2005/08/29(月) 20:51:01やりたいことは、他クライアントのUSB機器をサーバーを介して動かすというものです。
USB機器を動かすというプログラムは別途作成しました。
ただ動かすという実験だけなので、はたから見るとサーバーを介しているように見えるだけでもかまいません。
開発環境はVC#2003で動作PCはサーバー、クライアント共にWinXP Pro(ローカルネットワークで接続)です。
色々と切り捨てるため、セキュリティ、機種依存などは問題としないことにしています。
何かよい方法はないでしょうか。
0105デフォルトの名無しさん
2005/08/29(月) 20:59:09C/S型ならまあ好きにやればいい。
0106104
2005/08/29(月) 22:10:38調べてみたら次のようなものが検索結果として出てきたので、参考にしてやってみます。
ttp://www.microsoft.com/japan/msdn/netframework/technical/articles/windows/analystreports/smartclient.asp
ただ、ページに書いてある日本語がよく分からないので、本当に使えるかどうかが微妙で・・・orz
010799
2005/08/31(水) 19:33:42前回の質問がちょっと無謀だったので変更します。
Wordで未確定の文字があるのを検知することはできませんでしょうか・・。
0108デフォルトの名無しさん
2005/08/31(水) 20:15:20010999
2005/08/31(水) 21:05:13WM_IME_STARTCOMPOSITION出てきませんよ。
ワードにくわれるみたい。
0110デフォルトの名無しさん
2005/08/31(水) 21:07:39マルチポスト良くない
0111デフォルトの名無しさん
2005/08/31(水) 21:22:01たしかワード自体ではなくて、その中の実際に文字を入力する部分がウィンドウになっていて、
そこにでないとWM_IME_STARTCOMPOSITIONとかは出てこないはず。
011299
2005/08/31(水) 21:28:57ここの掲示板の方はひょっとすると、VC++を専ら使用されてるかとも
思ったんです…。
>>110
すみません。ふらっとC#へは今後この件に関して投稿しないことにします。
>>111
なるほど、そうだったのですか。
ところで、VBAには、「今現在は、何らかの文字が未確定にあります」っていう
ことを検知できる方法、何かないでしょうか。
僕は、Word.ApplicationClassとか、Word.DocumentClassとかを
継承させて自ら作ったMyApplicationClass等内で
private override void WndProc(Message m){
}
と、書けないかなと思ったのですが、
テキストボックスから派生するかのようには
簡単にはいきませんでした。
011399
2005/08/31(水) 21:30:20すみません。ふらっとC#へは今後この件に関して投稿しないことにします。
ではなく、
すみません。WINAPIへは今後この件に関して投稿しないことにします。
と修正させていただきます。あぁはずかしい…。
0114デフォルトの名無しさん
2005/08/31(水) 23:28:10011599
2005/08/31(水) 23:53:27そんなことゆわんといて(>><
0116デフォルトの名無しさん
2005/09/01(木) 00:14:54海外の書籍が少なので不人気なのかとちょっと疑問がわいた。
0117デフォルトの名無しさん
2005/09/01(木) 00:17:46まあ少なくとも向こう5年はそうかわらんだろ
WindowsがWinFXで動くようになればWindowsの開発では主流になるかもしれん。
しかしLinuxやらでメインになることはあんまり考えられんな。
0118デフォルトの名無しさん
2005/09/01(木) 00:27:06Effective C#がない時点で少しがっかりしたのです・・・
VB.Net関係の書籍は結構でてるのにね
0119デフォルトの名無しさん
2005/09/01(木) 01:06:29どうしようもないC++をそれでも使うための指針、がまとめられた本という印象を受けたんだけど
C#はそこのところキチンと作られてて自動的に解決されちゃうからそういう本は需要少ないんじゃないかな
0120デフォルトの名無しさん
2005/09/01(木) 01:07:43> Effective C#
あるよ。
ttp://www.amazon.co.jp/exec/obidos/ASIN/0321245660/
0121デフォルトの名無しさん
2005/09/01(木) 01:15:512.0でGenericsが加わったとは言えテンプレートほど傍若無人なものでもないし。
どっちかってとC#よりも.NETの修得の方に時間がかかる。
あとVB.NETの本っつっても大半が入門書じゃね? 偏見に基づく先入観?
0122デフォルトの名無しさん
2005/09/01(木) 01:57:53落ちたばかりの最新のスレのアドレス知ってる方居ましたら誰か教えてください。
0123デフォルトの名無しさん
2005/09/01(木) 02:03:14……くだスレ?
0124デフォルトの名無しさん
2005/09/01(木) 04:40:42昔あった、ここと似たような初心者用C#スレ。
0125デフォルトの名無しさん
2005/09/01(木) 05:05:03Effective C++は、C++使い始めの頃に読んだんだけど
なかなかヨカッタっすよ。C++の不便なところも見えたし。
>>120
海外の翻訳書が少ないって意味ですた。
あっ本当だ。でも洋書(´・ω・`)ショボーン
翻訳されるまで待つ。
とりあえず本屋に逝って目次だけ見てみる。
あと、C#版のJ2EEパターン・J2EEデザインパターンや
JAVAの鉄則みたいな書籍があると助かるのだけど・・・
MSDNのサンプルとかは役に立つのかな。
0126デフォルトの名無しさん
2005/09/01(木) 05:41:32ほい、.NETのパターン本。
http://bpstore.nikkeibp.co.jp/item/main/148910045170.html
0127デフォルトの名無しさん
2005/09/01(木) 09:23:58vc#でボタンの名前を変更してもイベントハンドラの名前が変わりません。
button1のままです。
イベントハンドらの名前を変えるとビルドエラーになります。
これは仕様ですか?
0128デフォルトの名無しさん
2005/09/01(木) 09:27:460129デフォルトの名無しさん
2005/09/01(木) 09:31:02仕様。
変えたいのならハンドラのメソッド名を書き換えた上で雷マークからイベント選び直せ。
>>128
そのインスタンスが型変換できるかどうか、ならisやas演算。
typeofとかで取得したTypeがどうか、ならType.IsSubclassOfメソッド。
0130デフォルトの名無しさん
2005/09/01(木) 09:39:29ありがとうございました。
0131デフォルトの名無しさん
2005/09/01(木) 21:50:47Webページをローカルに保存したHtmlファイルを秀丸で確認すると
改行コードは\nだけのようです。
その\nだけのHtmlファイルをReadToEnd()で読み込んで
TextBoxに表示すると改行は入りません。
string s = "";
s = s + ReadLine() + "\r\n"
と一行ずつ読み込むしかないのでしょうか?
0132デフォルトの名無しさん
2005/09/01(木) 22:05:530133デフォルトの名無しさん
2005/09/01(木) 22:07:51Windowsでは改行コードが\r\nで、そうでないところが\nを使っている。
↓
TextBoxはWindowsのコントロール
↓
よって\nでは改行しない
0134デフォルトの名無しさん
2005/09/01(木) 22:17:25どんなファイルを開くか分からないことを考えると
Replaceだと行末が\rの場合、\nの場合、\r\nの場合の3パターン
処理を書かないといけないんじゃないかと思うんですけど・・・。
だとすると131で書いたようにReadLine()を使った方が良いのかなと思ったんです。
ReadLine()で\nだけの場合も改行と認識してくれるなら
一発で\r\nに置換できる方法があったも良いのになー
0135デフォルトの名無しさん
2005/09/01(木) 22:34:240136デフォルトの名無しさん
2005/09/02(金) 00:57:45書き方がよく分からないのですが
131で書いたように3パターン書くのでしょうか
0137デフォルトの名無しさん
2005/09/02(金) 11:57:16正規表現は無いような・・・
\r\nがやっかいで重複してしますんですよね・・・
0138デフォルトの名無しさん
2005/09/02(金) 12:16:210139デフォルトの名無しさん
2005/09/02(金) 12:31:25ずっと[\r\n|\r|\n]とか[ ]を付けていました・・・。
ホントすいません。
そしてありがとうございました。
0140デフォルトの名無しさん
2005/09/02(金) 18:19:48独自にMenuitemを追加しようとするとデザイナではじかれてしまいます。
何か方法はないでしょうか?
0141デフォルトの名無しさん
2005/09/02(金) 22:39:01メニューをContextMenuとか作ってそこに記述して、コードで連結する。とか
VisualStudio2003で ツール>Webページのビルドコメント を使ってヘルプページを作ると
プロジェクトのリストまでは出るんですけど、プロジェクトをクリックしてもページが真っ白なんですが
(個々のクラスに対するヘルプはできている模様)
どなたか解決方法ご存じないですか
コードエラーページでは
operator ==などをオーバーライドしてるところでエラーでてるってでます。
コンパイルは通るのに・・
0142デフォルトの名無しさん
2005/09/02(金) 23:38:27メモリ使用量が仮想メモリもあわせて20MB以上になるんですが、
こんなもんですか?
もっと小さくするテクニックとかあるんでしょうか?
0143デフォルトの名無しさん
2005/09/02(金) 23:43:23ぶっちゃけ気にする必要はないよ
0144デフォルトの名無しさん
2005/09/03(土) 00:16:520145デフォルトの名無しさん
2005/09/03(土) 00:46:18014699
2005/09/03(土) 01:14:060147デフォルトの名無しさん
2005/09/03(土) 01:16:10IMEを0から書けばいいよ
014899
2005/09/04(日) 12:22:22おしえてくりすます。
014999
2005/09/04(日) 15:06:410150デフォルトの名無しさん
2005/09/04(日) 17:33:010151デフォルトの名無しさん
2005/09/04(日) 23:54:55ttp://www.divakk.co.jp/aoyagi/csharp_tips_wbzone.html
ここが参考に・・・ならないね。スマソ
話は変わるけど、デジカメの2〜3MBくらいのjpgを連続で縮小してListBoxに
突っ込むプログラムを作ってるんだけど、「GetThumbnailImage」が
かなり遅くて使い物にならない。
C#ではこれが限界ですかね?
C++で速そうなソース見つけたけど、こんなのがC#用のライブラリになって
ませんか?
ttp://www.geocities.jp/i96815/mm/mm02.html
0152デフォルトの名無しさん
2005/09/04(日) 23:57:43てかGDI+使ってるのならベタ移植も可能じゃん
大したコード量でも無し
0153デフォルトの名無しさん
2005/09/05(月) 03:45:25ふつうにshdocvw.dllをtlbimp
0154デフォルトの名無しさん
2005/09/05(月) 18:54:13こんな感じ
Image srcImage = //元になる画像
Size destSize = //縮小するサイズ
Bitmap destImage = new Bitmap(destSize.Width, destSize.Height); //縮小されたイメージ
Rectangle srcRect = new Rectangle(new Point(0, 0), srcImage.Size);
Rectangle destRect = new Rectangle(new Point(0, 0), destSize);
using (Graphics g = Graphics.FromImage(destImage)) {
g.InterpolationMode = //縮小補完モード
g.DrawImage(srcImage, destRect, srcRect, GraphicsUnit.Pixel);
}
//必要に応じて
//srcImage.Dispose();
//destImage.Dispose();
でもあんまり速くならないと思う
015599
2005/09/05(月) 20:12:140156デフォルトの名無しさん
2005/09/05(月) 20:18:420157デフォルトの名無しさん
2005/09/06(火) 13:23:11string[] ss = {"タイトル", "内容"};
list.Add(ss);
listBox.Items.Add((string)list[0][0]);
textBox.Text = (string)list[0][1];
としてリストボックスにタイトル、テキストボックスに内容を表示しようとすると
「角かっこ [] 付きインデックスを 'object' 型の式に適用することはできません。」
と出てビルドできません。
何がいけないのでしょうか?
AddやRemoveを使いたいのでArrayListを使いたいのですがムリなんですかね?
0158デフォルトの名無しさん
2005/09/06(火) 13:28:55OKまずは分解だ。
ArrayList list = new ArrayList();
string[] ss = {"タイトル", "内容"};
list.Add(ss);
object o1 = list[0];
listBox.Items.Add((string)o1[0]);
object o2 = list[0];
textBox.Text = (string)o2[1];
ばらしてやるとこういうコードになるわけだが、さて不自然な点はどこかな?
0159157
2005/09/06(火) 13:30:390160デフォルトの名無しさん
2005/09/06(火) 15:00:03ArrayListについてのリファレンス読むべし。
だからlist[0][0]はそのエラーが出る。
インデックスでアクセスしたいならstring[]にキャストする
((string[])list[0])[0]
0161デフォルトの名無しさん
2005/09/06(火) 15:45:16レスありがとうございます。
検索しながらあれこれやってみて
listBox.Items.Add((string)((Ilist)list[0])[0])
とIListにキャストすると出来ました。
意味はよく分かっていないのですが・・・。
string[]でも出来るのですね。確認しました。
> ArrayListについてのリファレンス読むべし
確かに奥が深いですね。勉強し直します。
ありがとうございました。
0162デフォルトの名無しさん
2005/09/06(火) 17:12:15なぜ IList にキャストするんだろう
0163151
2005/09/06(火) 20:56:52トンクスです。
やっぱり速度を求める場合はC++の方がいいと再認識。
とりあえず、マルチスレッドでやってますが、いずれC++に移行する予定。
C#いろいろ楽でいいんだけどな〜
0164デフォルトの名無しさん
2005/09/06(火) 20:59:26C#で速度が欲しいならDllImportでGDI関数を直接扱ってみたら?
0166デフォルトの名無しさん
2005/09/07(水) 19:13:18データベースを弄くるものを作りたいなと思っています。
フォームに名前や住所などを入力するテキストボックスを作って、
そこから入力されたものをレコードとして追加したいのですが、
詰まってしまいましたorz
string name = textBox1.Text;
string tel = textBox2.Text;
string sqlStr = "INSERT INTO 顧客 (名前, 電話番号)"
+ "VALUES (name, tel)";
みたいなことをしたいのです・・・
"VALUES (name, tel)";
じゃだめに決まってますよねorz
初心者杉でごめんなさい
よろしくおねがいしまs
0167166
2005/09/07(水) 19:17:26自己解決しましたorzz
0168デフォルトの名無しさん
2005/09/07(水) 19:17:38だと name も tel も変数ではなくて文字列として処理される。
文字列と変数の違いを理解しましょう。
0169デフォルトの名無しさん
2005/09/07(水) 19:18:370170デフォルトの名無しさん
2005/09/07(水) 22:52:23テキストボックスが空欄になっていないことを条件にしたいのですが、
どのように書いたらよいでしょうか?
string a = textBox1.Text;
if(a =! null)
ではまずいでしょうか?
0171デフォルトの名無しさん
2005/09/07(水) 22:53:15空欄の場合は空文字列。""かString.Emptyか。
0172デフォルトの名無しさん
2005/09/07(水) 22:53:35if(a != null && a != String.Empty)
0173デフォルトの名無しさん
2005/09/07(水) 22:54:57やっぱりstringがnullはおかしいですよねorz
たすかりましたー
0174デフォルトの名無しさん
2005/09/07(水) 22:58:42ただコントロールのTextプロパティはnullには普通ならないってだけ。
//多分決してならない、だと思う。nullを代入しても代わりに空文字列が入るしね。
0175デフォルトの名無しさん
2005/09/07(水) 23:12:01解説ありがとうございます
なるほど意味が分かりました!
テキストボックスだからだめだったんですね
ありがとうです!
0176デフォルトの名無しさん
2005/09/08(木) 00:27:04素直に string.IsNullOrEmpty を使えよ
0177デフォルトの名無しさん
2005/09/08(木) 00:31:540178デフォルトの名無しさん
2005/09/08(木) 00:32:34それ2005だろ
0179デフォルトの名無しさん
2005/09/08(木) 00:44:38Version Information
.NET Framework
Supported in: 2.0
.NET Compact Framework
Supported in: 2.0
0180デフォルトの名無しさん
2005/09/08(木) 00:57:260181デフォルトの名無しさん
2005/09/08(木) 03:02:25ベタに書くのとforでまわして配列で定義するのって
実行時はどっちが効率的なんですか?
書くの面倒くさいけどベタに書いた方が
コンパイラが上手くやってくれるんでしょうか?
0182デフォルトの名無しさん
2005/09/08(木) 03:04:250183デフォルトの名無しさん
2005/09/08(木) 03:10:54そうですよね。よく考えたら
それくらいで差がある方がおかしいですよね。
失礼しました。
0184デフォルトの名無しさん
2005/09/08(木) 18:55:130185デフォルトの名無しさん
2005/09/08(木) 18:58:14プロジェクトのプロパティで出力の種類をライブラリにするだけだろ?
0186デフォルトの名無しさん
2005/09/10(土) 02:19:33http://www2.lint.ne.jp/~lrc/de_mouse.htm
本家サイトはなくなったみたいです
0187デフォルトの名無しさん
2005/09/10(土) 09:52:04CreateDCでディスプレイのデバイスコンテキスト作って、それを元にGetPixel使うとか。
018899
2005/09/10(土) 22:38:200189デフォルトの名無しさん
2005/09/12(月) 22:16:37レスありがとうございます
手探りですが調べて以下のようにやれば出来そうなのですが、
「Bitmap b」をどのようにして実体化すればいいのかで行き詰まっています・・・。
というか、こんな感じで良いのでしょうか?
[DllImport("Gdi32.dll",EntryPoint="CreateDC")]
private static extern IntPtr CreateDC(string Display,string c, object b, object a);
//マウスを押したとき
private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e){
//動作の判定
if (checkBox1.Checked){
Graphics g = Graphics.FromHdc(CreateDC("DISPLAY", null, null, null));
Bitmap b = ;
Color c = b.GetPixel(e.X, e.Y);
MessageBox.Show(c.Name, this.Text);
}
}
0190デフォルトの名無しさん
2005/09/12(月) 22:47:29色目ちゃんとやらの仕様を知らないので、ディスプレイの任意の位置の色の取得という手法を考えているんだが合ってる?
0191デフォルトの名無しさん
2005/09/12(月) 22:52:55Microsoft Win32 と Microsoft .NET Framework API との対応
http://www.microsoft.com/japan/msdn/net/general/win32map.asp
ここを読んでSystem.Drawing.Bitmap.GetPixelで良いのかと思ってました。
またもやWin32APIですか・・・。もうちょっと調べてみます。
> ディスプレイの任意の位置の色の取得という手法を考えているんだが合ってる?
はい、クリックした位置の色を調べたいのです。
0192デフォルトの名無しさん
2005/09/12(月) 23:13:11GDI+ではその辺が整理されてGDIとは関係がいささかねじれてしまってるから、単純に置き換えは難しい。
0193デフォルトの名無しさん
2005/09/13(火) 01:20:580194デフォルトの名無しさん
2005/09/13(火) 01:31:430195デフォルトの名無しさん
2005/09/13(火) 07:08:10[DllImport("Gdi32.dll",EntryPoint="CreateDC")]
private static extern IntPtr CreateDC(string Display,string c, object b, object a);
[DllImport("Gdi32.dll", EntryPoint="GetPixel")]
private static extern Color GetPixel(IntPtr hWnd, int x, int y);
int x = Cursor.Position.X;
int y = Cursor.Position.Y;
Color c = GetPixel(CreateDC("DISPLAY", null, null, null), x, y);
MessageBox.Show(c.Name, this.Text);
こんな感じかなと思うのですが、
テストとしてForm1のMouseDownイベントハンドラに実装すると
Color c = の所で
---
'System.NullReferenceException' のハンドルされていない例外が WindowsApplication5.exe で発生しました。
追加情報 : オブジェクト参照がオブジェクト インスタンスに設定されていません。
---
と出ます。何がいけないかさっぱりです。
0196デフォルトの名無しさん
2005/09/13(火) 08:15:50・CreateDCしたデバイスコンテキストは、使い終わったらDeleteDCしなければならない
・GetPixelが返すCOLORREFは.NETのColor構造体とは無関係の32ビット値。
Color構造体に変換するにはSystem.Drawing.ColorTranslator.FromWin32メソッドなどを使用する
0197デフォルトの名無しさん
2005/09/13(火) 17:39:26GetDC(GetDesktopWindow())の値でGetPixelをやってみたら常に-1が返ってくる。
途方に暮れている時、GetWindowDCじゃないとダメとのHPを見つけ、
GetWindowDC(GetDesktopWindow())とやってみたら見事上手いこと出来ました。
>>187,>>190,>>192,>>196さん、ありがとうございました。
0198デフォルトの名無しさん
2005/09/13(火) 18:02:18GetWindowDC(null)でたぶん平気だよ。
最後にGetDC/GetWindowDCの返すハンドルはReleaseDCへ。
0199デフォルトの名無しさん
2005/09/13(火) 21:48:21レスありがとうございます。
ReleaseDCでしたか。意味も分からずDeleteDCとしてました。
ReleaseDCはWebで調べた限りでは、
---
[DllImport("user32.dll")]
public static extern IntPtr ReleaseDC(IntPtr hWnd, IntPtr hDc);
---
とパラメータが2つ必要みたいなので
> GetWindowDC(null)
はムリっぽいと思い無難にWebを参考に
IntPtr hwnd = GetDesktopWindow();
IntPtr hdc = GetWindowDC(hwnd);
ReleaseDC(hwnd, hdc);
としました。
多分これで問題ないと思うのですが・・。
0200デフォルトの名無しさん
2005/09/13(火) 21:58:45まあ>199でも問題ないけどね
ちなみに NULL == IntPtr.Zero てのはOKね?
0201デフォルトの名無しさん
2005/09/13(火) 22:10:49機能としてはどのような違いがあるのですか?
beta版は使えるコントロールが少ないとかそんな程度ですか
0202デフォルトの名無しさん
2005/09/13(火) 22:12:52> ちなみに NULL == IntPtr.Zero てのはOKね?
これが分からず、「nullからIntPtrに変換できません」と出てよく分からなくなっていました。
IntPtr hdc = GetWindowDC(IntPtr.Zero);
ReleaseDC(IntPtr.Zero, hdc);
で動くことを確認しました。m(_._)m
0203デフォルトの名無しさん
2005/09/13(火) 22:17:14ベータテストって知らないの?
0204デフォルトの名無しさん
2005/09/13(火) 22:18:53Beta版とは要するに試作品。
0205デフォルトの名無しさん
2005/09/13(火) 22:34:21>VC# Express Beta2
VC#2005のベータ版、その中でもExpressはもっとも安い
>店に売ってるvc#
VC#2003、何種類か出てる
3つの点で違います
まずVC#2003とVC#2005の違い
・IDEが便利になった
・ライブラリが新しくなった
・言語仕様が新しくなった
新しいほうが色々と便利な機能が増えています
今までのが変わったというより色々追加された印象
ベータ版とは
・無保証
・バグあり
・使用期限あり
ベータ版は発売する前に試してもらうという意味合いが大きいので実際の商売には使いません
MSでは使った人の声をフィードバックして販売するものをもっと良くしたり、宣伝のためだったり
学習するのに使って欲しいみたいです
最後にExpressとそれ以外の違い
ExpressはVC#2005ではもっとも安く5000円程度で販売される予定です
高価なものは業務向けシステムを組むのに便利なコンポーネントなどが追加されています
ぶっちゃけた話、今のbetaって販売されるものとほとんど変わらんと思うよ
VC#2003向けの入門書が使えるのか?っていう話なら、細かい所は違うから読み替える自信があるなら大丈夫
0207デフォルトの名無しさん
2005/09/16(金) 10:46:29数値をバイナリ形式でファイルに保存することを考えてるんですけど、
エクセルマクロでバイナリファイルを作った場合、
出来上がったファイルをメモ帳で開くと読めない文字
(wordファイルをメモ帳で開いたときみたい)になっているのですが、
C#で作成した場合、下の例ではHelloと文字になってしまします。
数値をバイナリ形式で保存したい場合、
どのようにコードを書けばいいんでしょうか?
private void button1_Click(object sender,System.EventArgs e)
{
int [] mydata = {72,101,108,108,111}
FileStream hoge = new FileStream(@"C:\testbin.txt",FileMode.OpenOrCreate,FileAccess.Write);
foreach (byte mybin in mydata)
{
hoge.WriteByte(mybin);
}
hoge.Close();
}
0208デフォルトの名無しさん
2005/09/16(金) 10:53:290209デフォルトの名無しさん
2005/09/16(金) 11:06:29207が何したいのか良くわからん。
0x48 0x65 0x6C 0x6C 0x6F という並びがあるとして、
これをそのままバイトデータとして書き込みたい?
書き込んだらメモ帳で開いたときに文字コード的にHelloになるのは当然だし。
バイナリ形式って何?
どういう形になるのがお望みなの?
バイナリエディタで開いたときにどう見えるのが希望の形?
0210デフォルトの名無しさん
2005/09/16(金) 11:22:10とりあえずint配列をforeachでbyteで取り出すのはやめれ。
BitConverter.GetBytes()で得たbyte[]をStream.Write()に書け。
0211207
2005/09/16(金) 14:20:330212デフォルトの名無しさん
2005/09/16(金) 14:26:15でも、>>207 もちゃんと「int配列のデータをバイナリファイルに保存」してるんだよなぁ……
0213デフォルトの名無しさん
2005/09/16(金) 14:58:11何も考えずに「int配列のデータをバイナリファイルに保存」できるぜ。
0214デフォルトの名無しさん
2005/09/16(金) 15:47:13こういうことですか?↓
public static void SaveToBinaryFile(object obj, string path)
{
FileStream fs = new FileStream(path,FileMode.Create,FileAccess.Write);
BinaryFormatter bf = new BinaryFormatter();
//シリアル化して書き込む
bf.Serialize(fs, obj);
fs.Close();
}
}
0215デフォルトの名無しさん
2005/09/16(金) 21:19:25private static voidを使うというのを見たんですが、
private static void scan()
{
string path = textBox1.Text;
string currentdirectory = System.IO.Directory.GetCurrentDirectory() + "\\setting.ini";
string pattern = textBox2.Text;
//以下略
}
のように、private static voidの中でtextBoxの内容をstringに突っ込むにはどうしたらよいのでしょうか?
上の例でやったらエラーになります。
0216デフォルトの名無しさん
2005/09/16(金) 21:24:28{
string path = textBox1.Text;
string currentdirectory = System.IO.Directory.GetCurrentDirectory() + "\\setting.ini";
string pattern = textBox2.Text;
//以下略
}
0217デフォルトの名無しさん
2005/09/16(金) 21:25:12> C#で自作の関数を宣言するには、
> private static voidを使うというのを見たんですが、
どこで見たんだそんな馬鹿なこと
……いや215の読み間違いかもしれんか
0218215
2005/09/16(金) 21:36:50見たところはここ→ttp://homepage3.nifty.com/midori_no_bike/CS/
しかもstaticの位置違ってるし・・・OTL
>>216
thx
0219デフォルトの名無しさん
2005/09/16(金) 21:37:360220デフォルトの名無しさん
2005/09/16(金) 21:45:04static の位置は間違って無いよ。アクセサは順不同。俺もその順で書くし。
0221デフォルトの名無しさん
2005/09/16(金) 22:28:510222デフォルトの名無しさん
2005/09/16(金) 22:30:41そのあとにexternがついてうえにDllImportがつくのは良く見かける。
0223デフォルトの名無しさん
2005/09/16(金) 22:34:120224デフォルトの名無しさん
2005/09/19(月) 23:03:43実際にテキストを入力するUIはどうやってつくるのですか?
0225デフォルトの名無しさん
2005/09/19(月) 23:28:330226デフォルトの名無しさん
2005/09/19(月) 23:36:31ってのと
private static void hoge()
って動作速度とかメモリ消費量に差が出ますか?
hogeは確実にプログラム内でコールされるって過程でおながいします。
0227デフォルトの名無しさん
2005/09/19(月) 23:39:260228226
2005/09/19(月) 23:45:55素人プログラマなんでstaticなぞ使ったことないのですよ。
0229デフォルトの名無しさん
2005/09/19(月) 23:47:49ちなみに static の方が若干早いはず
0230226
2005/09/19(月) 23:52:05意味的に独立している〜って判断が難しそうですが、
ほとんどの場合クラス自体Form1で終わってしまうので
中々C#の使いこなせてない感じです。
0231デフォルトの名無しさん
2005/09/20(火) 03:03:51キーが押されたらTextを更新してInvalidateを呼ぶ。
で、OnPaintをオーバーライドしてTextを基にして描画。
みたいな感じかな
0232デフォルトの名無しさん
2005/09/20(火) 11:54:010233デフォルトの名無しさん
2005/09/20(火) 23:16:38Controlから派生するとわかるけど、
そのTextを更新するところがないんですけど・・・
0234デフォルトの名無しさん
2005/09/20(火) 23:18:31Invalidate();
これが何か?
0235デフォルトの名無しさん
2005/09/20(火) 23:26:15テキストが入力できるところってキャレットがフリッカしてんじゃん
そのキャレットがフリッカしているところがない
0236デフォルトの名無しさん
2005/09/20(火) 23:26:540237デフォルトの名無しさん
2005/09/20(火) 23:33:00Control を継承したのなら、自分でキャレットを作らないといけないし、作りたくなかったら Control の継承を止める
0238デフォルトの名無しさん
2005/09/20(火) 23:37:09まじ頭わりーな
0239デフォルトの名無しさん
2005/09/20(火) 23:42:46あたま悪くて俺はわかんね
0240デフォルトの名無しさん
2005/09/20(火) 23:43:040241デフォルトの名無しさん
2005/09/20(火) 23:46:200242デフォルトの名無しさん
2005/09/21(水) 00:16:17TextBoxだとPaintイベントが発生しないんですが
0243デフォルトの名無しさん
2005/09/21(水) 00:35:050244デフォルトの名無しさん
2005/09/21(水) 00:56:350245デフォルトの名無しさん
2005/09/21(水) 01:02:16縦棒点滅させとけ
0246デフォルトの名無しさん
2005/09/21(水) 01:29:26それから C# に戻ってきて作った方が早い。
0247デフォルトの名無しさん
2005/09/21(水) 01:34:01> 完全にカスタムメイド
で作る必要があるんだ
0248デフォルトの名無しさん
2005/09/21(水) 05:05:100249デフォルトの名無しさん
2005/09/21(水) 09:05:01閲覧者のパソコンに、.NETフレームワークが入ってて、
自分がウエブアプリを作っておけば、ホームページにアップすれば、
それだけで、良いの?
それとも他に特殊な何かが必要なのですか?
昔、ちらっと,net用のサーバーが必要だとか聞いた気もするのですが。
0250デフォルトの名無しさん
2005/09/21(水) 09:11:16.NET用のサーバーを探してこなきゃ、駄目とか?
0251デフォルトの名無しさん
2005/09/21(水) 09:33:40自前でサーバを用意するんでない限り後者はまず無理。
IIS/ASP.NETを使用できるレンタルサーバならMicrosoftに紹介がある。
なおWebアプリってのは処理をサーバ側が行うので、クライアントはWebブラウザさえあればいい。
ちょっと掲示板プログラム書いてみて公開したいってのには向かないね。
0252デフォルトの名無しさん
2005/09/21(水) 10:19:23javaスクリプトみたいなことは今のところ、c#ではできないってことですね。
>なおWebアプリってのは処理をサーバ側が行うので、クライアントはWebブラウザさえあればいい。
これについては、もちろん、クライアントは.NETフレームワークが必要ですよね。
0253デフォルトの名無しさん
2005/09/21(水) 10:32:36ていうかなに、JavaScriptみたいなのを想定してたの?
それはWebアプリとは言わない。
.NET Frameworkではそういうのはサポートしていないな。
ノータッチデプロイメントという手法はある。
サーバに実行ファイルを用意しておいて、クライアントがIEから直接それをダウンロード&実行するというものだ。
インターネット越しの場合、普通はかなり強固にセキュリティに縛られるけどな。
ttp://www.gotdotnet.com/japan/team/windowsforms/iesourcing.aspx
こういうのもあるけどユーザにセキュリティをゆるめて貰う必要がある。
何をしたいのか分からないことにはこれ以上言いようもないな。
0254デフォルトの名無しさん
2005/09/21(水) 11:08:07ありがとうございました。
0255デフォルトの名無しさん
2005/09/21(水) 13:58:58独自のコンテキストメニューのようなものを作成したいと考えています。
Formをベースに作成しようと思ったのですが、普通にやるとフォーカスが
ShowしたFormに来て、親ウインドウがアクティブではなくなってしまいます。
これをコンテキストメニューや、コンボボックスのように、親ウインドウ
がアクティブなまま操作できるポップアップコントロールを作成したいの
ですが、ベースとなるコントロールがそもそもFormで可能なのかもよく
わかりません。
よろしければどのようなコントロールをベースにすればよいのか、
もしくはフォームを設定すればよいのか、アドバイスを頂けないでしょうか。
よろしくお願いいたします。
0256デフォルトの名無しさん
2005/09/21(水) 14:05:190257デフォルトの名無しさん
2005/09/21(水) 14:53:36一番近いのはVisualStudioのエディタのパラメータの
入力時に出るオーバーロードの一覧ToolTipみたいな感じ
( [▲] 1/5 [▼] ・・・←こんなの)で、ちょっと独自の
操作系を実装したいと考えています。
MenuItemはあまり挙動を弄れそうにないのです・・
0258デフォルトの名無しさん
2005/09/21(水) 16:58:37Apacheのmod_aspdotnetでも可能
0259デフォルトの名無しさん
2005/09/21(水) 21:57:41じきにdat落ちするから早く見とけ
http://pc8.2ch.net/test/read.cgi/tech/1122352650/662-664
0260三咲
2005/09/23(金) 12:07:07ボタンを押したらサブルーチンを呼び出し、計算結果をラベルに表示することを考えてます。
それで以下のように書いたのですが、エラーになってしまいます。
計算結果をメッセージボックスに表示する場合はちゃんと動くのですが、フォームのラベルには表示できません。
static関数の中でラベルへの表示はできないんでしょうか?
namespace test0921{
public class Form1 : System.Windows.Forms.Form{
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Button button1;
//中略
private void button1_Click(object sender, System.EventArgs e){
double a=2,b=4;
subroutine1(a,b);
}
static void subroutine1(double x,double y){
double MYsub;
MYsub=Math.Pow (x,2)+Math.Pow (y,1/2D)+10;
test0921.Form1.label1.Text=MYsub.ToString();
}
0261デフォルトの名無しさん
2005/09/23(金) 12:11:470262デフォルトの名無しさん
2005/09/23(金) 12:22:39ところで、なんでsoubroutine1内で書き込みまでさせるの?
普通サブルーチンって言えば計算させて結果をよこすとかそう言うもんじゃない?
そもそもなんでsoubroutine1をstaticにしようと思ったの?
まずオブジェクト指向の基礎からやらなくちゃいけないが、さて。
ttp://www-ise2.ist.osaka-u.ac.jp/~iwanaga/study/csharp/index.html
この辺からか。
0263三咲
2005/09/23(金) 13:04:00ここ↓のサンプルを見ていてConsole.Writeで結果を出していたので、labelでできないかと思ってやってみたんです。
http://www-ise2.ise.eng.osaka-u.ac.jp/~iwanaga/study/csharp/st_function.html#EN
サブルーチンの中で書込みさせる理由は、座標の計算をして結果とかグラフを描こうと思ったためです。
0264デフォルトの名無しさん
2005/09/23(金) 13:06:24外注にでも作ってもらったら?
0265三咲
2005/09/23(金) 14:24:110267デフォルトの名無しさん
2005/09/23(金) 14:43:34g.DrawEllipse(Pens.Black,rec);
で描けますが、
逆にrecを与えたら座標リスト(point[])として楕円を返すようなメソッドってないでしょうか?
0268デフォルトの名無しさん
2005/09/23(金) 14:44:16あと素直にオブジェクト指向について学んでこい。
0269デフォルトの名無しさん
2005/09/23(金) 15:04:35GraphicsPathにAddEllipseして、FlattenしてからPathPointsプロパティかな。
PointF[]だけど。
0270267
2005/09/23(金) 15:24:07早速調べてみます。
ありがとうございました。
0271デフォルトの名無しさん
2005/09/23(金) 15:25:57まあなんだ、static外したら
0272デフォルトの名無しさん
2005/09/23(金) 16:16:42そんなもん高校数学の知識があればすぐできんじゃん
0273デフォルトの名無しさん
2005/09/23(金) 19:30:03ネタはいいから
0274デフォルトの名無しさん
2005/09/24(土) 03:10:02ネタですか?
0275デフォルトの名無しさん
2005/09/24(土) 17:30:16ネットワーク上のコンピュータ(\\○○\)の共有フォルダ一覧を取得したいのですが、
どのようにすればよいのでしょうか。
System.IO.Directory.GetDirectories
では取得できませんでした。
よろしくお願いいたします。
0276デフォルトの名無しさん
2005/09/25(日) 01:55:38http://groups.yahoo.co.jp/group/dotnet-csharp/message/40
0277デフォルトの名無しさん
2005/09/25(日) 03:11:37むほっ。一筋縄ではいかなそうですね。
明日詳細に追って見ます。
ありがとうございます。
0278デフォルトの名無しさん
2005/09/26(月) 21:38:59初心者をいびるスレというのは。
0279デフォルトの名無しさん
2005/09/26(月) 21:42:24基本サドなので
0280デフォルトの名無しさん
2005/09/27(火) 17:59:58voidとか何かの組み合わせでグローバル関数モドキは作れるってどっかに書いてあったんで試したんですが、引数0個指定出来ないとかなんとかって怒られてうまくいかないんですが
0281デフォルトの名無しさん
2005/09/27(火) 18:02:030282デフォルトの名無しさん
2005/09/27(火) 18:28:00メソッドで駄目な理由を説明しろ。
0283デフォルトの名無しさん
2005/09/27(火) 18:30:210284デフォルトの名無しさん
2005/09/27(火) 18:34:31クラスを1つだけにして総べてその中に書け。
class all
{
int a,b,c;
string str1;
void sub1()
{
}
:
:
:
void subXXX1()
{
}
void main(void)
{
}
}
0285デフォルトの名無しさん
2005/09/27(火) 18:40:320286デフォルトの名無しさん
2005/09/27(火) 18:44:49そりは、前に 「オブジェクトのデータがアクセスできません!何で!!」
の質問がきてたぞ。w
0287デフォルトの名無しさん
2005/09/27(火) 22:33:13ID:0仕様です。
0288デフォルトの名無しさん
2005/09/27(火) 23:14:330289デフォルトの名無しさん
2005/09/27(火) 23:43:190290デフォルトの名無しさん
2005/09/28(水) 02:01:170291デフォルトの名無しさん
2005/09/28(水) 19:51:02vbからやって来たのが多いからじゃないのかな。
vb.netにするならc#って感じで。
0292デフォルトの名無しさん
2005/09/28(水) 19:59:34初心者用のバイブル本をおしえてくださるとありがたいです。
きたみあきこの「かんたんプログラミング」から始めたのが間違いだった。
あれではオブジェクト指向なんてまったく理解できない。
0293デフォルトの名無しさん
2005/09/28(水) 20:23:070294デフォルトの名無しさん
2005/09/28(水) 20:33:260295デフォルトの名無しさん
2005/09/28(水) 20:40:530296デフォルトの名無しさん
2005/09/28(水) 21:46:11Point B //(20,30)
から
Point C = B-A //(10,20)
のような結果を得るため "-"に相当する演算を行いたいのですが、
どうすればいいのでしょうか?
+,-がPointに対し定義されているらしいのですが
どう使えばいいのかわかりません。
0297デフォルトの名無しさん
2005/09/28(水) 21:51:470298デフォルトの名無しさん
2005/09/28(水) 21:52:09リファレンスでPoint構造体の演算子と型変換を見てみるとどういう型同士の演算ができるのか分かると思うよ
0299296
2005/09/28(水) 21:53:43というエラーになります。
ttp://www.atmarkit.co.jp/fdotnet/csharp_abc2/csabc2_008/cs2_008_03.html
によると
System.Drawing.Point構造体には、「+」や「-」の演算子が存在する。
とあるのですが…
さっぱりわかりません。
0300デフォルトの名無しさん
2005/09/28(水) 21:54:27Point C = B - sA;
0301296
2005/09/28(水) 21:58:42ありがとうございました。
それで行けました。
Point - Pointは出来ないのに
Point - Sizeなら行けるのですね…ややこしい
0302デフォルトの名無しさん
2005/09/28(水) 22:02:09むしろ
Point C = B - (Size)A;
0303296
2005/09/28(水) 22:05:10PointからSizeにキャストできるんですね。
ますますすっきりしそうです。
ありがとうございました。
0304デフォルトの名無しさん
2005/09/28(水) 22:05:400305デフォルトの名無しさん
2005/09/28(水) 22:12:280306デフォルトの名無しさん
2005/09/29(木) 10:54:400307デフォルトの名無しさん
2005/09/29(木) 10:59:02ildasmでSystem.Drawing.dllをあけて
Point構造体のop_ExplicitメソッドとかSize構造体の.ctor(コンストラクタメソッド)とかみればすぐ分かる。
ま、いずれにせよ構造体をnewするコストなど考慮する必要も無し。
0308デフォルトの名無しさん
2005/09/29(木) 12:36:490309デフォルトの名無しさん
2005/09/30(金) 18:40:33staticはクラスのインスタンスが共通して使うけれども、インスタンスの内容に依存しないメンバーにつける。
例えば文字列をMSゴシックで描画するDrawMSGothicTextクラスを作る場合、
MSゴシックフォントはnew Font("MS ゴシック", 12)で作るわけだが、
すべてのインスタンスでFontクラスを生成してたら時間とメモリの無駄だろ?
だからあらかじめ
protected static Font _msgothic = new Font("MS ゴシック", 12)
みたいにstaticをつける。
こうすればFontクラスが生成されるのはDrawMSGothicTextクラスが初めて使われるときだけ。
以下のような使い方をされた場合、staticがついてるとFontクラスが生成されるのは�@のときだけ。
staticがついてないと�AのときもFontクラスを生成してしまってその分メモリと時間が無駄になる。
dw1 = new DrawMSGothicText("テスト1"); ←�@
dw1.Draw();
dw2 = new DrawMSGothicText("テスト2"); ←�A
dw2.Draw();
まぁいろいろ試して体で覚えるしかないけどな。
オブジェクト指向を実践的に覚えたいならこれ↓
ttp://www.amazon.co.jp/exec/obidos/ASIN/4894712288/
プログラムには手続き型で書くべき場合とオブジェクト指向で書いた方がいい場合があるわけだが、
むりやり手続き型で書かれてしまったコードをオブジェクト指向に書き直す手順が丁寧に解説されている。
自分のコードを上の本に従ってオブジェクト指向コードに直してみれば覚えられると思うよ。
0310デフォルトの名無しさん
2005/09/30(金) 18:48:39親切な方有難うございます。
このスレにもあなたような方がいらっしゃるのですね。
いつも質問者はいびられてばかりで、そんな私もしょぼーんとしてしまいます。
早速買って勉強しますです。
0311デフォルトの名無しさん
2005/09/30(金) 19:50:10サンプルコードがJavaだから気をつけて。(構文はほとんど同じだから問題ないとは思うが)
あと、この本はオブジェクト指向プログラマーのバイブルだけども
初心者のバイブルになるとは限らないから一応本屋で確認してね。
0312デフォルトの名無しさん
2005/09/30(金) 20:23:360313デフォルトの名無しさん
2005/09/30(金) 22:14:190314デフォルトの名無しさん
2005/10/01(土) 23:50:520315デフォルトの名無しさん
2005/10/02(日) 00:18:41ToolTip tt = new ToolTip();
tt.SetToolTip(textBox1, textBox1.Text);
テキストボックスの内容を変更
再びtooltipを表示
とすると上手く反映されず前のままの内容が表示されたりするときがあるね
0316デフォルトの名無しさん
2005/10/03(月) 22:34:500317デフォルトの名無しさん
2005/10/03(月) 23:03:44JScriptのprototypeみたいなの?
Rubyの特異メソッド(だったっけ)?
0318デフォルトの名無しさん
2005/10/03(月) 23:11:02出来なければデリゲート格納する Hashtable 使うだけなんだけど。
0319デフォルトの名無しさん
2005/10/03(月) 23:14:15C# 3.0で静的メソッドをインスタンスメソッドかのように呼び出す文法は追加されるようだけど、所詮シンタックスシュガーだし。
0320デフォルトの名無しさん
2005/10/03(月) 23:14:58無理。
それやりだすと、開発規模が大きくなるにつれ、
どこでどのメソッド追加したかわけ分からなくなるし。
C# 3.0 で、拡張メソッドって機能が追加されて、
クラス定義とは別の場所で後からメソッドを追加する
(したかのような)ことができるようになるけど、
やっぱり動的(実行時)にってのは無理。
(そもそも実行時にメソッドを作る手段がないけど。)
あと、この拡張メソッドも、他に代替手段がない場合以外、
極力使わない方がいい非推奨機能と仕様書に明言されてる。
0321デフォルトの名無しさん
2005/10/03(月) 23:20:020322デフォルトの名無しさん
2005/10/03(月) 23:24:05っつーか、デリゲートでは駄目なん?<動的に変更。
0323デフォルトの名無しさん
2005/10/03(月) 23:35:30CodeDomで動的にプロクシクラスを生成すればあたかもメソッドが
追加されたように振る舞う事はできるよ。
ただこれだけでは実用性がないから、呼び出し側はインターフェイ
スにアクセスする様にして、呼び出される側はDIコンテナによって
生成される様にするといった工夫が必要。
0324デフォルトの名無しさん
2005/10/04(火) 01:51:39C#でdllを作って、普通のC言語からそれを読み込んで使う、というようなことは出来るのでしょうか?
0325デフォルトの名無しさん
2005/10/04(火) 02:05:13DLLをCOMに公開してそれを利用すると言うことになる。
0326デフォルトの名無しさん
2005/10/04(火) 02:21:45「com」でググってもamazon.comとかが出てきて、まともに調べられないのです…
何でググれば良いのでしょうか
0327デフォルトの名無しさん
2005/10/04(火) 02:42:440328デフォルトの名無しさん
2005/10/04(火) 03:38:25http://www5.plala.or.jp/atata/com/
このサイトとか、良さそうですね。
明日読んでみます。
0329デフォルトの名無しさん
2005/10/04(火) 11:34:55例えば、画面にテキストボックスと、ボタンと、AxSHDocVw.AxWebBrowserが
あるとします。ここで、テキストボックスに何か入力し、ボタンをクリック
すると、AxSHDocVw.AxWebBrowserのブラウザ画面には、テキストボックスに
入力された文字列をキーワードとして google で検索した結果の画面を
表示させたい。
のように、特定 URL のフォームにプログラムから値を代入し、
submit した結果を表示させたいのですが。。
アドバイスお願いします。
0330デフォルトの名無しさん
2005/10/04(火) 11:41:48そこにポストデータを文字列で書き込めばOKだったはず。
でもGoogle検索はPOSTじゃなくてGETでやってるぞ。
0331デフォルトの名無しさん
2005/10/04(火) 12:03:33System.Text.Encoding.GetBytesを。
UrlEncodeは、多分WebBrowserコントロールが勝手にやってくれるはず……?
0332329
2005/10/04(火) 12:55:07ありがとうございます。
POST する事ができました。postData は byte[] を渡す必要があることと、
URL は POST 先の URL を指定しなければならない事にはまっていました。
(From.html から to.html を POST する場合、URL には to.html を
渡さなければならなかったのに、ずっと From.html を…...)
Google は私の例がよろしくなかったですね、すみません。
0333デフォルトの名無しさん
2005/10/04(火) 17:14:29A は B の中で処理が完了するのを待ちます。
B の処理終了は delegete で通知がきます。
B は Windows.Forms ですがフォームを show せずに、
B にかかれている public なメソッドのみを実行します。
ここまでは組めましたが、B の処理を行なっている間、
A では処理中である事をあらわす何らかの処理(画像をくるくるさせたり)
したいと思っています。
FormB f = new FormB();
f.ActionComplete += new FormB.ActionCompleteEventHandler(f_ActionComplete);
f.DoAction();
のように B の処理を実行すると A では処理がかたまってしまいます。
B の処理を実行中 A でも処理を行なうにはどのようにすればよいでしょうか?
0334デフォルトの名無しさん
2005/10/04(火) 17:54:23FormBには書かない方が良いよ。
さて、重い処理を行う場合はスレッドだ。
ttp://www.atmarkit.co.jp/fdotnet/mthread/index/index.html
ただしWinFormでスレッドを操作するには注意が必要だ。
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/312ctrlinvoke/ctrlinvoke.html
0335デフォルトの名無しさん
2005/10/04(火) 19:18:49COMやGACなどのめんどくさいことしないと駄目みたいですけど、
今後もこういうのが続くんでしょうか?
0336デフォルトの名無しさん
2005/10/04(火) 19:23:330337デフォルトの名無しさん
2005/10/04(火) 19:44:01一番最初にプログラムとは?を知りたいんですが、ここは、まだ俺の来れる所じゃないので
超初心者が見るようなサイト、教えて貰えませんか?
プログラムとは?でぐぐっても、出てこなかったので・・・。
本気で勉強したいと思うので、宜しくお願いします。
0338デフォルトの名無しさん
2005/10/04(火) 19:48:320339デフォルトの名無しさん
2005/10/04(火) 19:50:22分かりました。
今から本屋に急行します。
有難う御座いました。
0340デフォルトの名無しさん
2005/10/04(火) 19:53:47どこかのスレにもありますが、独習シリーズはお勧めですか?
0341デフォルトの名無しさん
2005/10/04(火) 20:27:360342デフォルトの名無しさん
2005/10/04(火) 20:52:41System.Timers.Timer
これってどうやって使い分けるの
0343デフォルトの名無しさん
2005/10/04(火) 21:07:52ただし精度に多少難がある。9x系だと最悪で50ミリ秒程度だったかな?
System.Timers.Timerはちょうどその逆。
0344デフォルトの名無しさん
2005/10/05(水) 10:21:22Console.ReadLine()でコンソール画面からone+twoと言う入力を受けた時に、
+だけを取り出したい時はどうすれば良いんでしょうか?
Splitを使って取りだそうとしているのですが、煮詰まってしまってます。
0345デフォルトの名無しさん
2005/10/05(水) 10:29:00つまり正規表現。
0346デフォルトの名無しさん
2005/10/05(水) 10:34:49ありがとうございます!
リファレンスと熟読します。
0348デフォルトの名無しさん
2005/10/05(水) 13:13:51Windowsアプリケーションを作成して、一個ボタンを置いただけのフォームを作成したあと
コンパイルしようとしたところ
リソースを準備しています...
C:ソースファイルの場所\プロジェクト名.resx: リソース ファイルへの書き込み中にエラーが発生しました。 指定されたパスが見つかりません。
といったエラーが出てコンパイルすることができません
今まで普通につかえてたのですが、急にこのエラーが出るようになりました・・・
何か情報もってる方いませんか?
0349デフォルトの名無しさん
2005/10/05(水) 17:20:13C#では無理のようです。
こんなの↓
public int data(int index1, int index2) {
get {
return m_data[index1,index2];
}
set{
m_data[index1,index2] = value;
}
}
Set〜,Get〜とかのメソッドを書くよりないのでしょうか
0350デフォルトの名無しさん
2005/10/05(水) 17:23:12でもそれならコレクションクラスをgetアクセサで返すプロパティにした方が自然じゃない?
0351デフォルトの名無しさん
2005/10/05(水) 18:13:05やっぱりコンソールからやっていくのが、
遠いようで近道なの?
0352デフォルトの名無しさん
2005/10/05(水) 18:23:280353デフォルトの名無しさん
2005/10/05(水) 18:25:07その逆は結構あることだけど
0354デフォルトの名無しさん
2005/10/05(水) 19:08:05宿題で「画面にクラス・番号を表示して次の行に名前を表示するプログラムを作れ」というのがでました
まったく分からないので教えてくれませんか?
0355デフォルトの名無しさん
2005/10/05(水) 19:13:050356デフォルトの名無しさん
2005/10/05(水) 19:15:18いきなりWinFormをいじりだしても、デリゲートとかで躓くだろうから……。
やっぱりコンソールから始めるのを薦める。
0357デフォルトの名無しさん
2005/10/05(水) 19:17:37あれ?
違うのですか?
すみません
0358デフォルトの名無しさん
2005/10/05(水) 20:49:57授業ちゃんと聞いとけよ
0359デフォルトの名無しさん
2005/10/07(金) 17:45:480360デフォルトの名無しさん
2005/10/07(金) 18:04:240361デフォルトの名無しさん
2005/10/07(金) 20:44:22もし、できないことがあるとしたらそれは言語ではなく自分の能力を疑ったほうがいい。
0362デフォルトの名無しさん
2005/10/07(金) 23:02:210363デフォルトの名無しさん
2005/10/07(金) 23:05:050364デフォルトの名無しさん
2005/10/07(金) 23:25:440365デフォルトの名無しさん
2005/10/08(土) 03:19:20xxxx = ????
????のところになんと書けばよろしいのでしょうか?
宜しくお願いいたします
0366デフォルトの名無しさん
2005/10/08(土) 03:20:400367デフォルトの名無しさん
2005/10/08(土) 03:51:03お早い回答感謝いたします。
ありがとうございました。
0368デフォルトの名無しさん
2005/10/08(土) 12:27:12インターフェイスと抽象クラス。
それぞれ、どのように使い分けるかを教えてちょんまげ。
ちなみにC#勉強してから、10日目。
@ITのC#入門は全部読んだ。
わたしに、わかりやすくよろしこ。
0369デフォルトの名無しさん
2005/10/08(土) 12:35:29C# ならインターフェイスを使う機会はあまり無い。単一継承で噛ませられない場合の補助だと思いねぇ。
0370デフォルトの名無しさん
2005/10/08(土) 14:22:52http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/Vbcon/html/vbconabstractclassesversusinterfaces.asp
インターフェイスと抽象クラスで迷ったら、ここは目を通しておく価値があると思う。
>>369
>C# ならインターフェイスを使う機会はあまり無い。
C#なら、というよりは小規模のプロジェクトでは、じゃまいか。
0371デフォルトの名無しさん
2005/10/08(土) 14:30:39はい。だから 「単一継承で〜」 って書いたんです。
0372デフォルトの名無しさん
2005/10/08(土) 14:31:250373デフォルトの名無しさん
2005/10/08(土) 15:05:170374デフォルトの名無しさん
2005/10/08(土) 17:43:01ダイアログボタンが押されたかチェックする場合は
どういう記述で行えばよろしいのでしょうか?
if(?????????.Checked)
という記述でやってみたのですがビルドは通るものの
実行したときに別のところでエラーがでてしまいます・・・。
どなたか助言お願いいたします。
0375デフォルトの名無しさん
2005/10/08(土) 17:47:210376デフォルトの名無しさん
2005/10/08(土) 17:47:55RadioButtonやCheckBoxのことならCheckedでいいはずだが。
とりあえずそのエラーメッセージを書いてみようか。
0377デフォルトの名無しさん
2005/10/08(土) 17:52:420378デフォルトの名無しさん
2005/10/08(土) 17:57:060379374
2005/10/08(土) 18:48:29『System.ArgumentException' のハンドルされていない例外が mscorlib.dll で発生しました』
とでてしまいます。
チェックする記述を入れなければ問題なく動くのですが・・・
0380デフォルトの名無しさん
2005/10/08(土) 18:56:54まず別の場所がどこでどういうコードなのか書いてもらえないと何もいえない
0381デフォルトの名無しさん
2005/10/08(土) 22:47:21実用的なアプリケーションはVC+++MFCってところ
のようだ。
C#に未来はあるのか???
0382デフォルトの名無しさん
2005/10/08(土) 22:56:55業務でC#は結構使われてる。
つか、俺の会社で今、C#でプロジェクトやってる。
0383デフォルトの名無しさん
2005/10/08(土) 22:59:46それはASP.NETでは?
もし、そうでなければ禿げしく疑問
C#がVC+++MFCより優位に立てる点があるのか?
0384デフォルトの名無しさん
2005/10/08(土) 23:02:30早くて安く作らなければならんこともあるのだというのに
0385デフォルトの名無しさん
2005/10/08(土) 23:02:470387デフォルトの名無しさん
2005/10/08(土) 23:28:29一度に2度の質問失礼します。
1、XPスタイルにするときに、FlatStyleをSystemにしますが、
FlatStyleがPopupのときにでもXPのような形状にしたい。
2、Buttonが押されたときに、沈み込んだ状態にしたい。
ボタンは押されたらすぐに戻ってしまいますが、沈み込んだ状態のまま保つ、というやり方がわからなくて・・。
いいやり方を知っていましたらお教え願いませんでしょうか?
よろしくお願いします。
0388デフォルトの名無しさん
2005/10/08(土) 23:31:201.無理。OSの問題だから。
2.CheckBoxクラスのAppearanceプロパティをButtonに変えてみたらどうよ。
0389デフォルトの名無しさん
2005/10/08(土) 23:31:37> 1、XPスタイルにするときに、FlatStyleをSystemにしますが、
> FlatStyleがPopupのときにでもXPのような形状にしたい。
諦めろ。
> 2、Buttonが押されたときに、沈み込んだ状態にしたい。
> ボタンは押されたらすぐに戻ってしまいますが、沈み込んだ状態のまま保つ、というやり方がわからなくて・・。
ButtonじゃなくてCheckBoxを使用する。
AppearanceプロパティをAppeareance.Buttonに。
0390389
2005/10/08(土) 23:32:210391デフォルトの名無しさん
2005/10/08(土) 23:58:37こんなやり方があったとは・・・。
押すものはButton!!と決め付けてしまっていたようです。
絶対笑われますが、押した瞬間にThread.Sleepでも使うの?って思ってました・・。
ありがとうございました。
0392デフォルトの名無しさん
2005/10/09(日) 00:04:58未だにネットで公開しても恥ずかしくないようなアプリがかけません?
どのように勉強していけばネットで有名なアプリがかけるようになるの?
0393デフォルトの名無しさん
2005/10/09(日) 00:08:21何を作るか、というところができてないとみた
0394デフォルトの名無しさん
2005/10/09(日) 00:13:29そのアプリの掲示板をみて要望を先に反映
あとは2ちゃんねるのレスをうまく取捨選択できれば安泰
反応がなくなれば新しいアプリを探して真似すればいい
0395デフォルトの名無しさん
2005/10/09(日) 00:17:12>そのアプリの掲示板をみて要望を先に反映
ってソースがないとダメでは?
0396デフォルトの名無しさん
2005/10/09(日) 00:17:300397デフォルトの名無しさん
2005/10/09(日) 00:20:27才能のあるあなたはどのようなものを作られているのでしょうか?
0398デフォルトの名無しさん
2005/10/09(日) 00:30:03丁度>>396の人がいったとおり、自分で使う欲しいものを作ってるだけ。
0399デフォルトの名無しさん
2005/10/09(日) 00:52:02同じようなものを作れないなら実力が足りない
新規で作るのに比べて労力はずっと少ない
0400デフォルトの名無しさん
2005/10/09(日) 00:52:46おそらく誰もが知ってるような、例えば秀丸などのソフトのことをいってるのであれば
それは無理。
誰でも作れないから、シェアウェアとして公開されているのです。
0401デフォルトの名無しさん
2005/10/09(日) 00:54:54何時も思いつきで作っていくので可読性が低いです。
で、最近フローチャートってのを知りました。
プログラムの本をよんでてもあまり出てこないですよね。
0402デフォルトの名無しさん
2005/10/09(日) 00:55:000403デフォルトの名無しさん
2005/10/09(日) 00:55:320404デフォルトの名無しさん
2005/10/09(日) 01:00:21オブジェクト指向の言語にはあまり向かない手法だな
0405デフォルトの名無しさん
2005/10/09(日) 01:16:12http://pc7.2ch.net/test/read.cgi/software/1123630518/
0406デフォルトの名無しさん
2005/10/09(日) 01:29:11見せるの恥ずかしいとか言ってるから進歩しねーんじゃねーの。
とりあえず公開してみろ。
ありがたいご指摘受けれるかもしれないし、
人に見せてると言う意識を持つことで、スキルがあがるかもしれない。
0407デフォルトの名無しさん
2005/10/09(日) 02:15:290408デフォルトの名無しさん
2005/10/09(日) 16:08:00仕様とか大まかな流れを決めるのに良いかと思ったのですが、
フローチャートは向かないのですか・・・
0409デフォルトの名無しさん
2005/10/09(日) 16:12:160410デフォルトの名無しさん
2005/10/09(日) 16:41:52ソースを見た時に処理の流れが追えない様なメソッドは、処理内容を
メソッド抽出して処理の流れと分離して細分化すべき。
0411デフォルトの名無しさん
2005/10/10(月) 01:30:17↑のサイトのC#のコーディング規約についての文書、どう思うよ。
0412デフォルトの名無しさん
2005/10/10(月) 21:47:02http://wisdom.sakura.ne.jp/programming/cs/cs56.html のコードで言うと
public void StartEvent() がイベントハンドラに当たるのでしょうか・・・?
0413デフォルトの名無しさん
2005/10/10(月) 21:55:000414デフォルトの名無しさん
2005/10/10(月) 22:01:110415デフォルトの名無しさん
2005/10/10(月) 22:06:490416デフォルトの名無しさん
2005/10/10(月) 22:10:11返信ありがとうございます
>>412は×ということですね
.netのコーディング命名規約のイベントの辺りを読んでいたら頭が混乱してしまったもので…
0417デフォルトの名無しさん
2005/10/10(月) 22:21:280418デフォルトの名無しさん
2005/10/10(月) 22:37:280419デフォルトの名無しさん
2005/10/10(月) 22:45:25使い方を知らない人が知っても・・・
0420デフォルトの名無しさん
2005/10/10(月) 22:55:40最初は誰でも初心者ですよ・・・
つか、僕も今まで使ったことないし
よく分かっていないけど・・・
0421デフォルトの名無しさん
2005/10/10(月) 23:03:56その程度の質問する初心者は5年、ソフトウェアで金をもらうことは
ない。
0422デフォルトの名無しさん
2005/10/10(月) 23:10:07http://www.atmarkit.co.jp/fdotnet/onepoint/onepoint03/onepoint03_01.html
ここ読んでふ〜んって程度に理解して、用意されてるイベントが使えればOK。
細かいことは気にすんな。
0423デフォルトの名無しさん
2005/10/10(月) 23:11:10キタ━━━━━━(゚∀゚)━━━━━━ !!
0424デフォルトの名無しさん
2005/10/11(火) 03:47:35現在C#でドット絵(ピクセル画)を表示するプログラムを作っています。
それに拡大表示機能をつけたのですが補間モードが働いてドットがぼやけてしまいます。
e.Graphics.InterpolationModeの設定で補間モードを変更できると知り、
近い物は見つけましたが望む形にはなりませんでした。
>>
e.Graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
e.Graphics.ScaleTransform(Zoom,Zoom);
e.Graphics.DrawImageUnscaled(imgBase,0,0);
<<
この補間モードをOffにして、
単純(均等)倍表示のようなことはできないでしょうか。
よろしくお願いします。
わかりにくかったらすみません。
0425デフォルトの名無しさん
2005/10/11(火) 04:33:503x3の画像を下のように描画したところ
>>
e.Graphics.DrawImage(imgBase,0,0,6,6);
<<
なぜか5x5の画像になってしまいました。
GraphicsUnit.Pixel指定でも変わりませんでした。
なにかほかにも設定が必要なのでしょうか?
0426デフォルトの名無しさん
2005/10/11(火) 04:46:31PixelOffsetModeの設定も必要なようです。
3レス消費してしまい申し訳ありません。
0427デフォルトの名無しさん
2005/10/11(火) 08:08:37自動で自分の再起動させたいのですが、どうすればいい
でしょうか?
手持ちの本をあさって見ましたが方法等は一切乗って
ませんでした。
0428デフォルトの名無しさん
2005/10/11(火) 22:40:360429デフォルトの名無しさん
2005/10/12(水) 04:49:47Environment.Exit(0);
0431デフォルトの名無しさん
2005/10/12(水) 08:23:40そんな適当な奴でよかったのか
0432デフォルトの名無しさん
2005/10/12(水) 18:40:41このテクニックが実際にどのようなところに使えるものなのか全く創造もできません。
インデクサじゃないと難しい処理ってあるの?
0433デフォルトの名無しさん
2005/10/12(水) 18:47:36arrayList.SetItem(4, arrayList.GetItem(3));
とか書きたくない。
arrayList[4] = arrayList[3]
の方がよほど直感的。
0434デフォルトの名無しさん
2005/10/12(水) 23:38:24多重起動禁止にしてる場合でも、それで上手くいく?
0435デフォルトの名無しさん
2005/10/12(水) 23:44:410436デフォルトの名無しさん
2005/10/12(水) 23:45:230437デフォルトの名無しさん
2005/10/12(水) 23:54:020438デフォルトの名無しさん
2005/10/13(木) 08:57:32そーなんすか
ありがとう
よし、がんばるぞ
0439デフォルトの名無しさん
2005/10/13(木) 19:37:33例えば、1 から 10 の範囲で並びをバラバラにしたいのですが、
その結果を配列に保持するような事がしたいです。
private int [] valOrder = new int [10];
で、valOrder[0] から valOrder[9] には、それぞれ
1 から 10までがランダムに入っている(重複はなしで)
という事がやりたいです。
アドバイスを頂けると幸いです。よろしくお願いします。
0440デフォルトの名無しさん
2005/10/13(木) 19:40:590441デフォルトの名無しさん
2005/10/13(木) 19:57:51正当性と計算量の証明をしろってのを学生実験でやったことがあるぞ
0442デフォルトの名無しさん
2005/10/14(金) 11:00:18Visual Studio で、デフォルトでは、
[assembly: AssemblyVersion("1.0.*")]
と定義されています。バージョン番号の内訳は、
メジャー.マイナー.ビルド.リビジョンだと思います。
で、A.EXE と B.DLL があり A.EXE は B.DLL を参照している場合、
B.DLL にバグがあり修正を行なってビルドした場合、
メジャー、マイナー、ビルドが上がる為、B.DLL を参照している
A.EXE もリビルドしないと動きませんよね?
(その時修正したのは B.DLL だけなのに、A.EXE もリビルドしなければ
ならなくなる。)
なので、バージョン番号は
[assembly: AssemblyVersion("1.0.0.*")]
のように、ビルド番号まで固定しておかないと、すごく不便じゃないかと
思っているのですが、このあたり、みなさんはどうされていますか?
よろしくお願いします。
0443デフォルトの名無しさん
2005/10/15(土) 23:28:35データ検索のプログラムを作っています。
DataRow型というのがありますが、
DataRow r
のように宣言してもうまく行きません。
これはどのように使うものなんでしょか?
よろしくおねがいします
0444デフォルトの名無しさん
2005/10/15(土) 23:31:44a.exe はコンパイルしなおさんでもいいでしょ
>>443
System.Data は参照に追加してあるか?
0445デフォルトの名無しさん
2005/10/15(土) 23:33:09で、何をしたいのかさっぱりわからん。
DataTableというかADO.NETは基本的にデータベースとの相互運用のためのライブラリだが。
別に単独で使っちゃいけない訳じゃないが。
0446デフォルトの名無しさん
2005/10/15(土) 23:37:05ありがとうございます。
あれです、
>System.Data は参照に追加してあるか?
まさにこれでありました。まじ変な質問して時間とらせてすみませんですた。
ありがとうでしたー。
0447デフォルトの名無しさん
2005/10/16(日) 01:21:41列じゃなくて行では?
列は DataColumn。
0448デフォルトの名無しさん
2005/10/17(月) 00:22:24ただいまC#を勉強しているものです。
ファイルを同時にダウンロード、アップロードできるソフトを作ろうと思いまして、
同時に処理するためにマルチスレッドを使おうと考えました。
そこで思ったのですが、マルチスレッドは限界はあるのでしょうか?
何個までしか作ってはいけない、などの規約というかルールがあるのかなと思いまして
質問しました。
何かおかしいこと言っていればご指摘くださいますようお願いします。
0449448
2005/10/17(月) 00:29:29すいません。ここにそれらしいことが書いてありました。
探し方が悪かったみたいです。すいません。。
0450デフォルトの名無しさん
2005/10/17(月) 00:48:000451448
2005/10/17(月) 07:05:28ttp://www.stackasterisk.jp/tech/dotNet/csharp07_02.jsp
ここですね
0452デフォルトの名無しさん
2005/10/17(月) 12:50:450453デフォルトの名無しさん
2005/10/19(水) 15:29:14単純にテキストファイルを読み込んでConsole.WriteLineで出力したいのですが
MSDNのガイドの例題通りにプログラムを書いて、ファイルの指定の部分を自分で
用意したTest.txtと指定してプログラムを実行すると指定されたファイルが見つかりません
と出ます。
読みだしたいファイルの指定はどのようにすれば良いのでしょうか?
また、文字コードや保存場所の指定にルールはあるんでしょうか?
0454デフォルトの名無しさん
2005/10/19(水) 16:29:25文字コードはStreamReaderコンストラクタのオーバーロード参照
0455453
2005/10/19(水) 17:51:17回答ありがとうございます。
ディレクトリに存在しないという事なのでcatchでエラーを拾うと
《ファイル "C:………\bin\debug\Test.txt"が見つかりませんでした》
と出てくるのでこの\debugのフォルダの中に、Test.txtを移動するとファイルを
読み込む事が出来ました。
ディレクトリに対する理解はこれであってるんでしょうか?
色々HPを探すんですがC#に関連づけたHPが見つからず不安です
0456デフォルトの名無しさん
2005/10/19(水) 17:58:48フルパスでファイルを指定しない場合、ファイルは現在のフォルダからの相対パスで探索される。
んで、実行時には \bin\debug が現在のフォルダになってたんで、\bin\debug\test.txt を探しにいったという仕掛け。
ちなみに、VS から実行したときに何処を現在のフォルダにするかは、プロジェクトのプロパティで指定できる。
VS2003 なら、構成プロパティのデバック→作業ディレクトリの筈。
0458デフォルトの名無しさん
2005/10/21(金) 14:11:090459デフォルトの名無しさん
2005/10/21(金) 17:09:39.NETのDLLなら元々そんなのないし、ネイティブC++のDLLはどのみちextern "C"されてないとC#からは使えないし。
0460デフォルトの名無しさん
2005/10/21(金) 19:23:10>ネイティブC++のDLLはどのみちextern "C"されてないとC#からは使えないし。
なるほど。そうでしたか。ありがとう。
ハードウェアの制御用のDLLなので、おそらくネイティブC++のDLLだと思います。
ちなみに、C++からだとどうなんでしょう?
ポインタでかまいませんので、示してくださいませ。
0461デフォルトの名無しさん
2005/10/21(金) 19:42:42http://pc8.2ch.net/test/read.cgi/tech/1127063469/452-455
0462デフォルトの名無しさん
2005/10/21(金) 20:01:000463デフォルトの名無しさん
2005/10/21(金) 20:55:22{
// 閑話休題
}
0464デフォルトの名無しさん
2005/10/22(土) 00:23:18ドラッグしたファイルをドロップした瞬間に処理→処理したファイルをエクスプローラにドロップ
ということをしたいんだけど、どんなイベントを使えばいいの?
0465デフォルトの名無しさん
2005/10/22(土) 00:23:56「ASP.NET」の情報がネット上で、とっても少ないのは、なぜに?
0466デフォルトの名無しさん
2005/10/22(土) 00:34:31お前がどこで詰まっているのかが分からん
>>465
JSPと違って簡単に使えるからじゃね
0467デフォルトの名無しさん
2005/10/22(土) 00:52:29ttp://dobon.net/vb/bbs/log3-18/10824.html
0468デフォルトの名無しさん
2005/10/22(土) 01:46:47QueryContinueDragイベントでDoDragDropするってことでしょうか?
0469デフォルトの名無しさん
2005/10/23(日) 03:06:38すげー使いずらい
自力で作ったほうがよさそうw
0470デフォルトの名無しさん
2005/10/23(日) 09:39:29Form1.cs の中で宣言した変数を Form2 で利用したいのですが
どのようにすればいいのでしょうか?Public をつけるのかなと思い、
Form1 で
public int x = 1;
としましたが、コンパイル時にそこでエラーが出ました。
0471デフォルトの名無しさん
2005/10/23(日) 09:43:37アドバイスその1: その行にはエラーはない。
アドバイスその2: せめてプロパティ越しに扱うようにしろ。
アドバイスその3: 同じことやろうとしている奴は結構いる。探してみると良いよ。
0472470
2005/10/23(日) 09:56:31ありがとうございます。
プロパティ越しですか。意味はよく分かりませんが(たぶんグローバル変数
を使うのはよくないみたいなことかな)調べてみます。
何か検索するためのキーワードを教えていただきたいのですが。
0473デフォルトの名無しさん
2005/10/23(日) 10:44:50話はそれからだ
0474デフォルトの名無しさん
2005/10/23(日) 15:35:22for ( int i = 0; i < 5; i++)
label1.text = i;
こんな感じで Form1 上に
0
1
2
3
4
こんな風に表示したいのです。今は label1 〜 label4 まで作ってそれぞれに
表示させていますが、なんかイマイチです。
0475デフォルトの名無しさん
2005/10/23(日) 15:39:110476デフォルトの名無しさん
2005/10/23(日) 15:47:151.直接描画する
2.縦長のLabelやTextBoxなどのコントロールに改行つけて渡す
0478デフォルトの名無しさん
2005/10/24(月) 00:16:10レベルは、ASP.NETのDataGridコントロール使って、
一覧・更新画面とかは作れる。
でも、C#が完璧にできるとは全然思わない。
さて、次に何をすればいい?
ASP.NET または、C#のお薦めのWebサイトがあったら、おしえてくれ。
たのむ、エロいひと。
0479デフォルトの名無しさん
2005/10/24(月) 00:21:010480デフォルトの名無しさん
2005/10/24(月) 00:21:130481デフォルトの名無しさん
2005/10/24(月) 00:46:45http://www.codeproject.com/
・ここのサンプルを動かす。
・英語の資料に対して免疫をつける。
VS.NETのアドイン作りに挑戦するのもいいかもしれんな。
0482デフォルトの名無しさん
2005/10/24(月) 00:49:55プログラム作成と障害とは切っても切れない関係だ
従って障害管理ツールを作るとかが良いのではないか?
0483478
2005/10/24(月) 01:28:38とんくす。
上記のサイト、はじめて知った。
面白そうなので、これから色々使うとおもう。
なんとなく、C#とASP.NETの日本のサイトって
あまり充実していないような気がする。
0484デフォルトの名無しさん
2005/10/24(月) 01:31:34海外のサイトのほうが役に立つぞ
0485デフォルトの名無しさん
2005/10/25(火) 21:20:21誰か俺に英語の勉強の仕方教えてください。
0486デフォルトの名無しさん
2005/10/25(火) 21:23:54面白い本でも見つけれ。
読むだけならできるようになる。
0487デフォルトの名無しさん
2005/10/27(木) 10:42:460488デフォルトの名無しさん
2005/10/27(木) 10:57:170489デフォルトの名無しさん
2005/10/28(金) 00:07:02やはり使えないんですね。
ちょっとだけVBがうらやましい。
0490デフォルトの名無しさん
2005/10/28(金) 00:12:460491デフォルトの名無しさん
2005/10/28(金) 12:36:21KeyPressedとKeyDownのどっちで定義するのがよいのでしょうか?
0492デフォルトの名無しさん
2005/10/28(金) 14:28:09中に基本的に何を指定するんでしょうか?
今、自分が指定しているのは
{' ', ',', '.', '\f','\v','\n','\t'}
でsplitするようにしてるんですが、作ったプログラムとフリーソフトのOpenOffice.org
の出力する結果にズレが生じてます。
色々とcharの中身を変更してみるんですが同じ出力結果にならないんです。
0493デフォルトの名無しさん
2005/10/28(金) 15:45:21あたりはどうしてるの?
0494492
2005/10/28(金) 16:10:43現状では、疑問符や感嘆符はまだ実装して無いです。
先程から自分の組んだプログラムの挙動をF11キーを連打して確認した所、
単語数は自分のプログラムの出力結果で合ってるんです。
どうも、フリーソフトの方は単語ではないchar型は飛ばして集計しているような
動作をしてる模様です。
果たしてどちらが合っているのか…
0495デフォルトの名無しさん
2005/10/28(金) 18:16:10OOoの出力結果が望ましいのならそれに合わすのが良いし、そうでないのならそうでない。
で、具体的に例えばどんな文ならそれぞれどんな結果になるの?
0496デフォルトの名無しさん
2005/11/03(木) 03:38:27処理の途中で
string hoge = "あああ\nいいい\nううう\n";
のような文字列が出来るのですが、最後の改行を削除したいのです。
そこで hoge.TrimEnd(ch); としたのですが、最後の改行が削除されて
くれませんでした。(ch は char [] ch = {'\n'}; としています)
正しい方法を教えて下さい。
それともう1つ、配列はstringのようにその場では書けないのでしょうか?
例えばstring型の場合、hoge.equals("abcde"); のように””で括ってしまえば
その場に直接書いても問題ないですよね?
しかし配列を与える場所に Trim({' ', 'a', 'b', 'c'}); と書いてしまうと
エラーが出ます。キャストなどもかけてみましたがコンパイラに怒られました。
こういう方法はできない仕様と考えていいのでしょうか?
文法のページなども調べましたが意外に載ってなくて・・・。
環境は WinXP, VisualStudio.NET 2003, C# WindowsFormアプリ です。
0497デフォルトの名無しさん
2005/11/03(木) 04:37:14hoge = hoge.TrimEnd(ch);
とかしなくてはいけません。TrimEndとかは、hogeオブジェクト自体が操作されるのではなくて、
操作した結果を返り値で返してくれるメソッドです。
後半:配列の要素を初期化する前に配列をつくる必要があるので、以下のように書く
TrimEnd(new char[]{'', 'a', 'b', 'c'});
僕は以下のように書くのが簡単で好き。
TrimEnd(" abc".ToCharArray());
続けて質問なんですが、描画のダブルバッファリングをControlにまかせたとき、つまり以下のように指定したとき、
Control.SetStyle(ControlStyles.DoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true);
このとき、バッファを取得する方法はありませんか?最終的にはそれをBitmapにしたいです。
例えばOnPaintでもらえるPaintEventArgsから何とかなるか苦闘したのですが。
0498496
2005/11/03(木) 20:10:35教えていただいた方法でコードがすっきりしました。
どうもありがとうございました。
0499デフォルトの名無しさん
2005/11/04(金) 01:16:02って聞いたんですけど
どうやったら他の人が作ったプログラムのソースが分かるんですか
0500デフォルトの名無しさん
2005/11/04(金) 02:21:17たとえば値型の変数なら。。。
int i; // 変数
int temp; // 一時退避編集用変数
int = 1; // 初期値
temp = i; // 初期値保存
i = 5; // 変数に違う値を代入
i = temp; // 保存した初期値を戻す
とやると、変数iは初期値に戻りますよね。
同じことをクラスでやりたいんですがクラスって参照型ですよね・・・そもそもそんなことやろうとする設計自体がおかしいんでしょうか。
クラス AとtempA(一時退避編集用)が存在するとき。。。
A.str = "編集前"; // クラス内のstring変数strに初期値を代入
tempA = A; // クラスAの初期値保存
A.str = "編集後"; // クラス内のstring変数strに違う値を代入
A = tempA; // 保存した初期値を戻す
としても、Aの変数strは"編集後"になっちゃいますよね。どうにかしてクラスの変数の値を一時保管しておきたいのですが。。。
0501デフォルトの名無しさん
2005/11/04(金) 03:12:10作って公開したら大儲けだろうなあ・・・
きっと何百万は行くと思う
Let's try!
0502デフォルトの名無しさん
2005/11/04(金) 07:11:38ildasm
.NET Reflector
>>500
ICloneable
0503デフォルトの名無しさん
2005/11/05(土) 17:54:26シリアライズ
0504デフォルトの名無しさん
2005/11/05(土) 20:40:07struct
0505500
2005/11/07(月) 00:56:54>>502
>>503
>>504
実現方法としてはいろいろな手法が考えられるのですね。
まずICloneableを使用してみて、クラスのコピー作成を試してみましたが、
他にもいろいろな選択肢があるんですね。
シリアライズ等に至っては、わたし個人で考えていてもは思いもつかなかったと思います……。
structにしてしまうのも一つの方法ですね。
ありがとうございました。
0507デフォルトの名無しさん
2005/11/07(月) 01:53:50C#プログラムで以下の機能を実装したのですが、どのようにすれば良いでしょうか?
1.ping(アドレススキャン)
2.traceroute(経路調査)
3.ポートスキャン(稼動ポートを割り出す)
4.ドメインネーム調査(IPからドメイン、ドメインからIPを割り出す)
5.文章からパスワード(大文字、小文字、数字、一部記号)生成
0508507
2005/11/07(月) 01:55:08誤)実装した
正)実装したい
0509デフォルトの名無しさん
2005/11/07(月) 01:57:231-5 => 888
887 デフォルトの名無しさん [sage] 2005/11/06(日) 20:01:35
TCP/IPを勉強する
888 デフォルトの名無しさん [sage] 2005/11/06(日) 21:09:16
どっかのだれかが作ってるだろうから借りてくればいいよ。
0510デフォルトの名無しさん
2005/11/07(月) 02:06:16クラスのソースコードとか落ちてないですかね?
ちょっとググってみたけど見つからなかったんですよ
0511デフォルトの名無しさん
2005/11/07(月) 02:11:50codeprojectで。
0512デフォルトの名無しさん
2005/11/07(月) 11:21:25河西朝雄の「はじめてのVisual C#.net」という本で、
グラフィックスではどんなことを扱ってますでしょうか?
単に四角と丸描いて終りとかそんな感じですか?
本屋へ行ってもC#本自体少なくて・・・
0513デフォルトの名無しさん
2005/11/07(月) 12:38:32つkoders
0514デフォルトの名無しさん
2005/11/07(月) 12:53:56丸め処理(切り捨てや四捨五入)をどうやるのでしょうか?
JavaならDecimalのメソッドを使えば出来ると分かるのですが、C#はさっぱりわかりません。
会社ではネットにも繋げる環境にないので、非常に困ってます。
回答をお願いします。m(__)m
0515デフォルトの名無しさん
2005/11/07(月) 12:57:31java の標準ライブラリに Decimal なんてクラスは無い。
Floor とか Round があるのは、C# も Java も Math クラス。
0516デフォルトの名無しさん
2005/11/07(月) 12:59:58ってことは俺釣られたんか?
0517デフォルトの名無しさん
2005/11/07(月) 19:12:20,r‐-、
. ,! _
. i, _,r‐''''''''''''''''ヾ,_`、_
,r'''''''ブ、 `.、`フ
\ ,r' .,f'´ ,r f .i 、 , i i`ト、
\ ,f ,f ,'´i ,'`、 ;`、ヽ,! .! Yi、
.\ i i, ' ' ヽ; ヾ,'`ヽi__ i、!``ー‐┐
.\'''''i ̄ ̄  ̄ ̄ ! .! ,ト、`ヾ;┘
. !\ ━━ ━━┿ .!' `ー′ ======
. i ,.\ , , i ,! そんなエサで騎士王である私がー!!
i ! `\ _________,,/i,`′
ヽ,! .f /人;!/ i, ======
ヽ,r`i___iヽ,/___! ====== (´⌒
. ,r`.、,!:.:.:レ':.:.:.:.:>-、 (´⌒;;(´⌒;;
,r:i;.:.:.:.:.:.:.:.:.:.:.:.:.:.':,ゞ-ゝ (´;;⌒ (´⌒;; ズザザザ
`ー--''´`ー--‐''´ (´⌒; (´⌒;;;
0518デフォルトの名無しさん
2005/11/07(月) 21:48:26お前誰
0519デフォルトの名無しさん
2005/11/09(水) 16:35:580520デフォルトの名無しさん
2005/11/09(水) 17:02:57マイクからの音声を拾って、音量をリアルタイムにモニタしたいのです。
マイクから音を拾ったり、音に対して処理を行うクラスライブラリが見つかりません。
「sound」「音声」「録音」「wave」あたりのキーワードでMSDN検索してみたのですが、出てきません。
参考になるサイトや、キーワードがありましたらご教授ください。
よろしくお願いしますm(__)m
0521デフォルトの名無しさん
2005/11/09(水) 18:16:17DirectX 使えばいいと思うよ。
音に対して処理するのはフリーのライブラリが結構落ちてる。
音声信号処理とかで検索してみ。
0522520
2005/11/09(水) 19:08:00なんかそれっぽいサイトがありました。
ありがとうございます!m(_ _)m
0523デフォルトの名無しさん
2005/11/09(水) 22:09:15初歩的で恥ずかしいのですが、どうしてもわからずこまってるところがあるので、教えてください。
デザインタブで、ボタンなどを配置して、そのボタンをダブルクリックすると、
(form1).csのコードがかいてあるタブで、
private void button1_Click(object sender, EventArgs e)
{
}
のコードが自動で書かれますが、
これを削除したい場合はどのようにして削除すればいいでしょうか。
手動で削除してデバッグすると”button_1 clickの定義がありません”とエラーメッセージが出てきてしまいます。
超初歩的な質問だと思うのですが、ここから進まないですおねがいします、、
0524デフォルトの名無しさん
2005/11/09(水) 22:11:19ボタンのプロパティ⇒イベントの Click に button1_Click って書いてあると思うから、
そこを消してコード側も削除。
0525デフォルトの名無しさん
2005/11/09(水) 22:13:37プロパティ一覧の代わりにイベント一覧が現れる。
0526デフォルトの名無しさん
2005/11/09(水) 22:28:46早速ありがとうございます。
できました。
ありがとうございました〜
0527デフォルトの名無しさん
2005/11/10(木) 00:34:11静的変数・静的メソッドはクラス単位に実態を持ち、すべてのインスタンス間
で共有されるとのことですが、(理解が間違ってたらすみません)
これらはC#のコーディングにおいて、どのような局面で使用されるのでしょうか?
VB6でいうところの標準モジュールのような位置づけなのかとも思いましたが、
C#にはモジュールという概念が無いので、それは間違った使い方なのか、とも思います。
どなたかご回答お願いします。
0528デフォルトの名無しさん
2005/11/10(木) 00:41:17全てのインスタンス間で共有したいとき。
0529デフォルトの名無しさん
2005/11/10(木) 00:47:58俺の場合。
静的変数(フィールド)はreadonlyつけて、
configファイルのデータをいろんなところから読むのに使ってる。
静的メソッドはpublicの場合は、
クラスの性格にあってインスタンスを必要とする処理を提供するのに使う。
0530デフォルトの名無しさん
2005/11/11(金) 10:48:47C#でC++やCのクラスライブラリを使うには、どうしたらいいのですか?
MSDNを検索してみたのですが、うまく答えに行き着かないので困ってます
よろしくおねがいしますm(_ _)m
0531デフォルトの名無しさん
2005/11/11(金) 10:57:03C++のクラスはC#からは扱えない
0532デフォルトの名無しさん
2005/11/11(金) 11:06:55Managed C++ やら C++/CLI で Managed なラッパークラスを書く。
0533デフォルトの名無しさん
2005/11/11(金) 11:26:570534デフォルトの名無しさん
2005/11/11(金) 11:29:04ありがとうございます。
そのへんのキーワードを調べて挑戦してみます!
0535デフォルトの名無しさん
2005/11/11(金) 14:20:28C++があるにもかかわらず、何故C#が出てきたのですか?
C++ではいけないのでしょうか。
C++でもいいとしたら、C#の存在意義ってなんなのでしょうか?
0536デフォルトの名無しさん
2005/11/11(金) 14:23:33適所適材
0537デフォルトの名無しさん
2005/11/11(金) 14:26:290538デフォルトの名無しさん
2005/11/11(金) 14:46:38C++ は昔からの負の遺産もいろいろ背負っちゃってるから一度リセットしたかった。
それを最初にしたのは Java だったんだけど、
SUN が Java の仕様策定権を独占しちゃってたから、
やむを得ず Microsoft が Java のパクリ言語を作ったってのが C#。
C# は結局、.NET アプリを作るには、C++ の悪い面をそぎ落とした使いやすい言語。
C++ は(負のものもあれど)過去の遺産を使えるし、非Managedなコードを書くには C# よりも最適。
0539デフォルトの名無しさん
2005/11/11(金) 15:46:57C++は悪者扱いみたいですけど、結局使う人次第ってことですよね。
包丁を善人が持てばおいしい料理を作ってくれるけど、悪人が持てば(ry
C#ってそんなにいいんですか?
だったらこれからの人はC++じゃなくてC#から勉強しているのかな?
0540デフォルトの名無しさん
2005/11/11(金) 16:50:20そうだよ。
c++は罪だ。そして悪。そして糞。
0541デフォルトの名無しさん
2005/11/11(金) 17:31:11いい人が必ずしももてるとは限らないだろう。
それと一緒だ。
0542デフォルトの名無しさん
2005/11/11(金) 17:48:36これからはC丼の時代。
みんなc丼を買おう!
0543デフォルトの名無しさん
2005/11/12(土) 18:16:02C++じゃ開発に限界でもあるのですか?
0544デフォルトの名無しさん
2005/11/12(土) 18:22:23そんなに乗用車っていいんですか?
F1マシンじゃ何か不便なことでもあるのですか?
に置き換えると多分理解してもらえないとおもう。
0545デフォルトの名無しさん
2005/11/12(土) 18:43:58普通の恋愛じゃ何か不都合なことでもあるんですか?
0546デフォルトの名無しさん
2005/11/12(土) 19:10:460547デフォルトの名無しさん
2005/11/12(土) 19:39:09前バージョンである Visual Studio .net 2002 で利用することはできますか?
0548デフォルトの名無しさん
2005/11/12(土) 19:40:47…いや確信ないけども
0549デフォルトの名無しさん
2005/11/12(土) 19:46:300550デフォルトの名無しさん
2005/11/12(土) 20:04:12ちなみに2002のを2003で開けて保存し直したのも2002ではもう使えない
0551デフォルトの名無しさん
2005/11/13(日) 15:02:02いや、可能だよ。
2002や2003、また2005で保存したもののプロジェクト変換してくれるツールが普通にある。
というか、プロジェクトファイルなんてタダのテキストの羅列なんだから、
それぞれがどういった形式か分かれば手動で変換も可能。
だからこそ、そういったツールも存在する訳だし。
基本的に動作しなくなるのは、上位バージョンで追加された機能なんかを使ったコードがある場合、
プロジェクトの変換とかは出来ても、コンパイルできないとかその程度。
0552デフォルトの名無しさん
2005/11/13(日) 15:03:47ttp://www.codeproject.com/macro/vsconvert.asp
0553デフォルトの名無しさん
2005/11/13(日) 19:36:50マイクロソフトは嫌いだけどC#は好きな俺のようなLinux or OSXユーザーっていないのかな、、、。
monoスレ余りにも過疎でさ。さびしいからこっちきた。ごめん
0554デフォルトの名無しさん
2005/11/14(月) 01:42:04monoの存在意義が、IIS高すぎw負荷分散したらライセンスだけで予算オーバーだぜもっと易くASP使えないのかよだから
0555デフォルトの名無しさん
2005/11/14(月) 01:45:100556デフォルトの名無しさん
2005/11/14(月) 11:05:35いままでテキストエディタ + コマンドラインコンパイルしてたから
はじめてExpress EditionでIDE体験したら笑うくらい簡単だ〜
フォームとかトライ&エラーでやってたのがバカみたい
#endregion
0557デフォルトの名無しさん
2005/11/14(月) 14:21:30Type typeが渡されたときに、typeがFooの子クラスのTypeであれば
なんらかの処理を行いたいのですが、if文の条件式はどう書けばいいのでしょうか
一応typeはFooではなくFooBarやFooFooが来る事を想定してます
public void doSyori( Type type )
{
if (ここがわからない)
処理;
}
こんな感じです
よろしくお願いします
0558デフォルトの名無しさん
2005/11/14(月) 14:27:060559デフォルトの名無しさん
2005/11/14(月) 14:45:05ですよね
ありがとうございました
0560デフォルトの名無しさん
2005/11/14(月) 21:41:22( つ||⊂) =3 パタン
(_↑>>556
0561デフォルトの名無しさん
2005/11/15(火) 13:30:41デプロイメントプロジェクトは作れないんですか?
インストーラ作りたいんですけど
0562デフォルトの名無しさん
2005/11/15(火) 14:16:48http://lab.msdn.microsoft.com/vs2005/productinfo/productline/default.aspx
ここによると、Express Product の Deployment tools は No になってるよ。
無理なんじゃねーの?
0563デフォルトの名無しさん
2005/11/15(火) 15:48:31フリーで使えてインストーラ作れる奴っていうと、WixかNSISくらい?
WiX
http://wix.sourceforge.net/
NSIS
http://nsis.sourceforge.net/
0564デフォルトの名無しさん
2005/11/15(火) 15:57:38>>563
ありがとう
0565デフォルトの名無しさん
2005/11/16(水) 17:51:13「フォーカスが移る」と「アクティベートされる」の違いってなに?
0566デフォルトの名無しさん
2005/11/17(木) 16:31:41拡張子libのファイルと拡張子DLLのファイルは何が違うのでしょうか?
MSDNのC++関連ヘルプで、
【LIB ツールを使って標準ライブラリやインポート ライブラリを作成する方法については、「LIB リファレンス」を参照してください。LINK を使ってインポート ライブラリを作成する方法については、「/DLL (DLL のビルド)」を参照してください」】
と書いてあったのですが、ライブラリを作成するツールが違うだけで、もともとのソースコードは一緒と思っていいのでしょうか?
libファイルで配布されているライブラリを使おうと思ったのですが、うまくできませんでした。
Dllは[Dllimport("ライブラリ名")]で読み込めるようですが、ファイル名に.libファイルを指定すると、起こられてしまいます。
質問が連続で並んでしまって申し訳ありませんが、よろしくお願いしますm(_ _)m
0567デフォルトの名無しさん
2005/11/17(木) 17:52:26ガセですか?
0568デフォルトの名無しさん
2005/11/17(木) 18:06:42libは静的リンク用のライブラリ。だから、君はそれを静的リンクしたDLLファイルを作らないとC#から関数を呼び出せない
0569デフォルトの名無しさん
2005/11/17(木) 18:07:06DLLはダイナミックリンクライブラリ、実行時にここからモジュールがロードされる。
LIBはスタティックリンクライブラリ、コンパイル時(実際にはリンク時だが)に
必要なモジュールが静的にリンクされる。実行時には不要。
Dllimportで使用できるのはDLLのみ。
0570566
2005/11/17(木) 18:36:43>>569
ご回答、ありがとうございます
すこし理解できました。
僕がこのlibのライブラリを使おうと思ったら、
■DLLを作成して、Dllimport属性を使う
or
■C#でlibファイルを扱う方法を探す
のどちらかになるわけですね。
0571566
2005/11/17(木) 18:36:16>>569
ご回答、ありがとうございます
すこし理解できました。
僕がこのlibのライブラリを使おうと思ったら、
■DLLを作成して、Dllimport属性を使う
or
■C#でlibファイルを扱う方法を探す
のどちらかになるわけですね。
0572デフォルトの名無しさん
2005/11/17(木) 21:59:120573デフォルトの名無しさん
2005/11/18(金) 03:39:06>>566
マジレスすると、C#からC/C++用のlibは読めん。
どうしてもC#から使いたいなら、そのlibを作ったやつに頼むしかない。
0574573
2005/11/18(金) 03:45:11スレの読み込みが中途半端になってて、変なレスしちまった。
せっかくだから補足。
>>571
C#でC/C++用のlibは扱えないから、そのlibに入ってる関数を
全部エクスポートするようなDLLを(C/C++で)作ってDllImportを使うしかない。
.DEFをファイル作ってコンパイルしないと変なエクスポート名になるから注意。
0575デフォルトの名無しさん
2005/11/18(金) 20:59:24パスの指定でうまくいきません。
動的に取得したフォルダのパスがあるとします、
そのパスにはスペースが含まれているのでDOSで実行するには " で挟まなければなりません。
しかしそのパスに " を追加するとどうしても "\"C:\\Documents and Settings\\\"" となってしまい
これを引数として渡すと \"C:\\Documents and Settings\\\" が引数として
渡っているような気がするのですが解決策はないでしょうか?
0576デフォルトの名無しさん
2005/11/18(金) 21:04:57どうしても気になるのなら@""を使えば。//C#リファレンスの文字列のところに書かれてる
0577デフォルトの名無しさん
2005/11/18(金) 21:20:40@"C:\Documents and Settings"を取得するための関数を GetDocPath() とします
これに " を追加するために string path = "\"" + GetDocPath() + "\"" とやっています。
また、 string arg = @"/c sample.exe " + path として
コマンドを送っているのですが・・・
0578デフォルトの名無しさん
2005/11/18(金) 21:25:12C:\Docume~1\とか
0579デフォルトの名無しさん
2005/11/18(金) 21:29:26コマンドを送るってのが微妙な表現だが。
0580デフォルトの名無しさん
2005/11/18(金) 21:31:13エラー起こすみたいでした・・・お騒がせしましたorz。
0581デフォルトの名無しさん
2005/11/18(金) 23:50:31何の話をしてるのか混乱する。
0582デフォルトの名無しさん
2005/11/19(土) 00:01:320583デフォルトの名無しさん
2005/11/20(日) 01:07:26それは仕方無いんじゃ?
Windowsのバージョンによっては『MS-DOSプロンプト』な訳だし、
当然、フルで呼ぶなんてそんなに無いんだから、略せばDOSになるだろうし。
経験が長ければ長いほど、そういった呼び方するだろうしね。
0584デフォルトの名無しさん
2005/11/20(日) 01:20:540585デフォルトの名無しさん
2005/11/20(日) 01:24:240586デフォルトの名無しさん
2005/11/20(日) 09:45:160587デフォルトの名無しさん
2005/11/20(日) 17:09:170588デフォルトの名無しさん
2005/11/20(日) 17:14:240589デフォルトの名無しさん
2005/11/20(日) 17:29:53お前だけは許さない。絶対に・・・
0590デフォルトの名無しさん
2005/11/20(日) 17:49:280591デフォルトの名無しさん
2005/11/20(日) 18:32:29throw >>588
}
0592デフォルトの名無しさん
2005/11/20(日) 18:40:59ProcessBuilder builder = new ProcessBuilder("format", "c:");
Process process = builder.start();
}
0593デフォルトの名無しさん
2005/11/20(日) 19:30:40ProcessBuilder builder = new ProcessBuilder("format", ">>588");
Process process = builder.start();
}
0594デフォルトの名無しさん
2005/11/20(日) 21:10:28書くトラックバーのスクロールイベントに
private void ColorChenge()
{
Color c = new Color();
int r = rTrackBar.Value;
int g = gTrackBar.Value;
int b = bTrackBar.Value;
c = Color.FromArgb(r, g, b);
this.BackColor = c;
}
を指定してスライダーが動いたらフォームのバックカラーを変えました。
そうするとボタンやトラックバーなど他のコントロールのバックカラーも
同時に変わってくれるのですが、かなりフォームがちらつきます。
なにかちらつかずスムーズに色を変える良い方法はないでしょうか
0595デフォルトの名無しさん
2005/11/20(日) 21:12:160596594
2005/11/21(月) 17:50:33色々と試してみて、「this.BackColor = c」の影響を無くすため
コントロールだけ変えてみようと以下のようにやってみたのですが結果は変わらずでした。
private void ChangeColor()
{
Color c = new Color();
int r = rTrackBar.Value;
int g = gTrackBar.Value;
int b = bTrackBar.Value;
c = Color.FromArgb(r, g, b);
this.SuspendLayout();
foreach (Control ctl in Controls)
{
ctl.BackColor = c;
}
this.ResumeLayout(false);
}
0597デフォルトの名無しさん
2005/11/21(月) 23:09:06setstyleがprotectなのでめんどいからAPI使うことを進める。
0598デフォルトの名無しさん
2005/11/21(月) 23:10:57APIつかうといいますと??
継承して、オーバライドするほうが簡単じゃない?
何かデメリットでもあるんですか、API使う方法がどれだけ簡単なのかわからないもので
0599デフォルトの名無しさん
2005/11/22(火) 10:08:29{}
public interface B : A
{}
インターフェイスの上下関係がこのようになっている場合、
実装したクラスを利用する時にAをBにキャストしたりBをAにキャストしたりってできますか?
0600デフォルトの名無しさん
2005/11/22(火) 10:23:160601デフォルトの名無しさん
2005/11/23(水) 11:28:49・それぞれコンストラクタやプロパティで渡す
・public const
・列挙定数
0602デフォルトの名無しさん
2005/11/23(水) 11:30:55普通も何も、そんなの目的次第だ。
0603594
2005/11/23(水) 17:30:39フォームのロード時に
this.SetStyle(ControlStyles.DoubleBuffer, true);
this.SetStyle(ControlStyles.UserPaint, true);
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
としても変わりませんでした。
もうこれは仕様として諦めるしかないのですかね。
0604デフォルトの名無しさん
2005/11/23(水) 20:17:26thisはFormじゃん。
0605デフォルトの名無しさん
2005/11/23(水) 20:23:000606594
2005/11/23(水) 20:54:28フォームではなくトラックバーなどのコントロールがちらつくの間違いでした。
>>603
this意外には設定できないみたいなのですが・・・
0607デフォルトの名無しさん
2005/11/23(水) 23:50:18えっと間違えた604ですけどね。間違ってねえのか。
俺あんまり詳しくないので合ってるのか知らんけど。
そのトラックバーとやらのコントロールの継承コントロールを作ってSetStyleでダブルバッファにして
描画(OnPaint)を自分で書くんです。トラックバーのコードでthisにSetStyleってことですよ。
違ってたらつっこんでください、識者の人。
0608デフォルトの名無しさん
2005/11/24(木) 18:37:03「継承コントロール」でググって
http://www.comrade.co.jp/component/dotnetroom/kt_vsdn/kt_vs2b.htm
に辿り着いてのですが、ほとんど内容に付いていけません。
ここまでしないとダメなんですかね・・・。
ひとつ発見がありました。
Pen3で開発してるのですが、Pen4-2.8Gで実行したところ全くちらつかず
スムーズにバックカラーが変わりました。
って事はCPUの問題なんですかね・・・。
こんな結論でいいのかしら?
どなたかツッコミ・ご指摘があればお願いします。
0609デフォルトの名無しさん
2005/11/25(金) 01:18:48継承コントロールって、ただ継承するだけなんでそんなに難しく考えなくても
こんな感じで
public DoubleBufferedTrackBar : TrackBar{
public DoubleBufferedTrackBar (){
this.SetStyle(ControlStyles.DoubleBuffer, true);
this.SetStyle(ControlStyles.UserPaint, true);
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
}
}
これだけでTrackBarがほんとにダブルバッファ化するのかは謎・・
Panelとかはなるんだけど
個人的にはTabControlのダブルバッファ化のやり方知ってる人いたらいいなぁ
0610デフォルトの名無しさん
2005/11/26(土) 11:23:45フォームのOnPaintで一括描画するしか無いと思うんだな。
できるかどうか知らないけど。
0611594
2005/11/27(日) 19:04:11全く効果無しでした。
>>609
よく分からずコピペしてみたけどダメでした・・・。
何かヒントをもらえないでしょうか。
0612デフォルトの名無しさん
2005/11/27(日) 21:42:52無理だった。SupportTransparentして、TrackBar自身のBackColorをTransparentにしてもダメ
Controlが各自に書き込むのをトラップできたらできそうなんだけどなぁ
0613デフォルトの名無しさん
2005/11/27(日) 23:47:460614デフォルトの名無しさん
2005/11/30(水) 01:52:11protected override void OnPaint(PaintEventArgs e)
{
うんちゃら
}
とあるとき、eからとったGraphicsはDispose()しなくていいんですか?
すると実行時にエラーでるんですが
0615デフォルトの名無しさん
2005/11/30(水) 01:59:40Disposeするのは自分で作ったものだけ。
ほかから参照として渡されたものはその渡した側が責任を持って処分する。
例えばそれの派生クラスがあったとして、
親クラスのメソッドでDisposeされてたらそれ以降使えなくなるだろう?
protected override void OnPaint(PaintEventArgs e) {
base.OnPaint(e); //e.GraphicsがDispose
e.Graphics.Draw... //ObjectDisposedException!
}
0616デフォルトの名無しさん
2005/11/30(水) 02:07:43仕組みがわかってすっきりしました。
0617!=616
2005/12/01(木) 00:13:36ループのなかでBrushを初期化して使う必要にかられたんです
SolidBursh br = new SolidBrush(...);
for(...)
{
br = new SolidBrush( ...);
...
}
br.Dispose();
↑
これはループのなかで一回ごとにすべきでしょうか?
それとも最後に一回で済むんでしょうか。
どこかでnewしたらdiposeと書いてあったのを読んだ気がするんで
0618デフォルトの名無しさん
2005/12/01(木) 00:22:01いちおうなにもしなくてもファイナライザがDisposeするからあんまり心配しなくてもいいんじゃないか。
リソースが枯渇するほど使うわけじゃなきゃ。
0619デフォルトの名無しさん
2005/12/01(木) 00:28:06そのコードのままじゃ先頭で作ったbrをDisposeする機会が失われてるぞ
で、もっとお勧めはusing
0620デフォルトの名無しさん
2005/12/01(木) 00:36:380621!=616
2005/12/01(木) 00:40:09>>619
>>620
ありがとうございます
ループの中でdiposeすることにします。
先頭のはunasignだっておこられるんでつけたんですが
ようするにbrの再利用はできないということですね。
0622デフォルトの名無しさん
2005/12/01(木) 00:54:370623デフォルトの名無しさん
2005/12/01(木) 00:59:52まったくDisposeしないで描画系のプログラムを書いたことがあるが、
ディスクトップが重くなって、アイコンの表示が黒抜けになったりと異常な状態になったことがある。
Disposeをきちんと入れたらまともに動くようになった。
メモリが不足してGCが走る前にGDIリソースが大変なことになるようだ。
そこで思ったのが、Disposeが必要なオブジェクト多すぎだよGDI+
0624デフォルトの名無しさん
2005/12/01(木) 02:31:54SolidBrush.Color プロパティは?
0625デフォルトの名無しさん
2005/12/01(木) 19:59:48下のサイトをみるとリッチテキストボックスにもあるはずなのですが・・・
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vbcon/html/vbtskperformingdragdropoperationswithwindowsformsrichtextboxcontrol.asp
0626デフォルトの名無しさん
2005/12/01(木) 20:04:340627デフォルトの名無しさん
2005/12/01(木) 20:07:40VSのバグですかね?
0628デフォルトの名無しさん
2005/12/01(木) 20:15:23手で書けってことだな
0629デフォルトの名無しさん
2005/12/01(木) 21:05:53現在リッチテキストボックス内のテキストをD&Dで移動できるようにしているのですが、
うまい具合にできあがりません
といいますのも、
文字列選択→選択部分をドラッグ
の操作でドラッグイベントが発生していない?(エフェクトが変わらない)ようなんですよ
それでそのままもう一度ドラッグを行うと今度はエフェクトが変わるわけですが、
なぜ一回目のドラッグでイベントが発生しないのかが分かりません
分かりにくい状況説明ですが、何かご存知ないですか?
0630デフォルトの名無しさん
2005/12/03(土) 14:01:24MouseDown、MouseMoveで自前でDoDragDropを呼んでる?
0631デフォルトの名無しさん
2005/12/04(日) 21:59:25空行の有無を見つける方法を
ご教授下さいませ
0632デフォルトの名無しさん
2005/12/04(日) 22:01:460633デフォルトの名無しさん
2005/12/04(日) 22:24:21.Lines ありがとうございます
解決しました
0634デフォルトの名無しさん
2005/12/13(火) 23:10:42助言をおねがいします。各単体のソフトは個々が完成しましたが
結合をするために同じフォルダにファイルを放り込んで既存を追加したら
データアダプタは残っていますがデータセットなどが消えてしまいました。
C#プロジェクトファイルのよい結合の仕方または方法が載っているサイトを教えてください
0635デフォルトの名無しさん
2005/12/14(水) 21:23:04名前空間変えた?
DataSetも名前空間を変えるかusingしないと見えなくなる。
0636デフォルトの名無しさん
2005/12/15(木) 12:32:070637デフォルトの名無しさん
2005/12/15(木) 13:53:54一昔前はPATHコマンドとか開発者には常識だったんだけどなぁ……
0638デフォルトの名無しさん
2005/12/15(木) 16:51:530639デフォルトの名無しさん
2005/12/15(木) 17:59:250640デフォルトの名無しさん
2005/12/15(木) 22:47:080641デフォルトの名無しさん
2005/12/15(木) 23:05:330642デフォルトの名無しさん
2005/12/16(金) 00:57:05例えば、こんな感じのクラスです。
public class MyData
{
private string myName;
private int myAge;
private string mySex;
private string myRace;
public string MyName
{
get
{
return this.myName;
}
set
{
this.myName = value;
}
}
//行数の関係で省略。
}
0643デフォルトの名無しさん
2005/12/16(金) 01:00:510644デフォルトの名無しさん
2005/12/16(金) 01:10:290645デフォルトの名無しさん
2005/12/16(金) 11:32:070646デフォルトの名無しさん
2005/12/16(金) 11:34:22扱い間違うのがオチだ
0647デフォルトの名無しさん
2005/12/16(金) 11:51:37CreateToolhelp32Snapshot
Process32First
Process32Next
使いたいんですけど、なんかいいサンプルないですか。。。
PROCESSENTRY32の定義がどうしてもできないです。。。
http://www.microsoft.com/japan/msdn/net/compactframework/processmanager.asp
ここみてやってもさっぱり。。。
0648デフォルトの名無しさん
2005/12/16(金) 12:41:02・ユーザ定義型をマーシャリングする場合、StructLayout属性をつけ、LayoutKind.SequentialまたはExplicitを指定する必要がある。
ただしstructの場合はデフォルトでLayoutKind.Sequentialである。
・固定長文字列をstringで定義する場合、MarshalAs属性をつけ、UnmanagedType.ByValTStrを指定し、SizeConstフィールドでで文字列長を指定する。
格納された文字列とバイト列の変換(エンコーディング)は、その型のStructLayout属性のCharSetフィールドで決定される。
・DllImport宣言で、CharSetフィールドで文字セットを指定できる。Autoの場合は自動選択。
使用する構造体のCharSetとマッチしている必要がある。
・外部関数宣言の引数に、byte[]やIntPtrでは無く直接ユーザ定義型を指定できる。
ただし、ユーザ定義型がstructかclassかで値の渡し方が異なるので注意。
ポインタで渡す場合、classならそのまま、structならout/refキーワードが必要になる。
0650650
2005/12/16(金) 21:32:24以下のプログラムがエラーになる理由について。
実行すると、「Application has generated an exception that could not be handled.」
と表示されて止まってしまいます。
class Test : System.Exception {
public override string ToString() {
return "Test";
}
}
//651 に続く
0651デフォルトの名無しさん
2005/12/16(金) 21:33:33class Hoge {
static void Main() {
int[] hoge = new int[3];
try {
A();
} catch (Test err) {
System.Console.WriteLine("最後 :" + err.Message);
try {
A(); // ここいらが多分まずい
hoge[5] = 10;
} catch (System.IndexOutOfRangeException exx) {
System.Console.WriteLine("ラスト: " + exx.Message);
}
}
System.Console.WriteLine("_END_PROGRAM_");
}
static void A() {
try {
B();
} catch (Test err) {
System.Console.WriteLine("中間 :" + err);
throw;
} finally {
System.Console.WriteLine("finally");
}
}
// 652へ
0652デフォルトの名無しさん
2005/12/16(金) 21:36:14int zero = 0;
int ans;
try {
ans = 10 / zero;
} catch (System.DivideByZeroException err) {
System.Console.WriteLine("例外検索開始 :" + err.Message);
throw new Test();
}
}
}
で終わりなのですが、例外のハンドル(?)が生成される量には限りがあると
いうことですか? だとしたら、それはいくつぐらいなのでしょうか?
それとも考え難いのですが、スタックオーバーフロー??
こんな糞コード書く人はいないかもしれませんが、気になりました…
0653デフォルトの名無しさん
2005/12/16(金) 22:00:31Application has generated an exception that could not be handled
の訳はアプリケーションで処理できない例外が発生した、つまりcatchされていない例外が投げられたってだけだし。
Mainの初めのcatchでA()を呼ぶ以上自動的に例外Testが投げられるのにcatchしてないじゃん。
あとExceptionの派生クラスにはExceptionサフィクスつけろとか、ToStringをオーバーライドするんじゃねぇMessageを書き換えろとか。
0654デフォルトの名無しさん
2005/12/16(金) 22:14:58System.Console.WriteLine("ラスト: " + exx.Message); } の下に
catch (TestException exx) {
System.Console.WriteLine("問題はここか" + exx.Message);
}
としたらいけましたデス。
>>653さんの助言がなければ、『throw;実はでMainに処理が戻らず、A関数が残ったまま再びA()で呼び出したからっ』…と
訳のわからない自己解決してしまうところでした。ありがとうございました!
0655デフォルトの名無しさん
2005/12/17(土) 10:20:23class B {}
class Test {
static void Main() {
object objA = new A();
object objB = new B();
/* @@ [1] @@ */
if (objA is B) {
objA = objB;
}
else {
System.Console.WriteLine("ほげ1");
}
/* @@ [2] @@ */
try {
objA = objB;
} catch (System.InvalidCastException err) {
System.Console.WriteLine("ほげ2");
}
}
}
is 演算子はキャストして例外が発生するか否かを調べるものと覚えました。
[1]と[2]では、[2]ではそれほど違いはないと踏んでいたのですが、
"ほげ2"が出力されないのはなぜなんでしょうか?
0656デフォルトの名無しさん
2005/12/17(土) 11:12:40> is 演算子はキャストして例外が発生するか否かを調べるものと覚えました。
違う。そのクラスまたはそのクラスの派生クラスかどうかを調べる。
> [1]と[2]では、[2]ではそれほど違いはないと踏んでいたのですが、
> "ほげ2"が出力されないのはなぜなんでしょうか?
キャストして無いじゃん。キャストってのは
A objA = (A)objB;
ってのだぞ。
objA = objBじゃ単に代入してるだけ。
0657デフォルトの名無しさん
2005/12/17(土) 13:19:18なるほど…is は基底クラス側に派生クラスの実装がない危険を回避するため存在しているのですよね(゚_ 。)?
しかし、色々試すうちちょっとパニくって参りました。
話は少しずれてしまうのdすが、今取り組んでいるサンプルプログラムに object test = new MyClass(); というような
System.Object にアップキャスト(?)する場面が多く見られるのですが、これの使い所がわからなくなってきました。
abstract class A { abstract public void Write(); }
class B : A { public override void Write(){ Console.WriteLine("おーばーらいど"); } }
class Test {
static void Main() {
object objB = new B();
objB.Write();
}
}
これでエラー< CS0117: 'object' に 'Write' の定義がありません。>が出る理由はわかります。
全てのオブジェクトは System.Object の派生ですよね。だから、object型にはなんでも new した
ものが入るわけですが、入るってだけで実用では全く使わない気がするのですが実際のところどうな
のでしょうか?
長文スミマセン
0658デフォルトの名無しさん
2005/12/17(土) 13:27:35そうでなければ特定の型しか入れられない限定的なコレクションになってしまうから。
その「特定の型」を、ArrayListを使う側が指定できればいいのだが(.NET 2.0/C# 2.0のGenericで実現される)、
指定できない以上object型で受け入れないと汎用コレクションクラスに使えない。
0659デフォルトの名無しさん
2005/12/17(土) 14:44:35ありがとうございました。四苦八苦してなんとか飲み込めた感じです。
Generic の方は自分の環境ではコンパイルできずぼんやりとした理解ですが、色々
と勉強になりました。
class Test {
static void Main() {
System.Collections.ArrayList al = new System.Collections.ArrayList();
string hoge;
al.Add("aaa");
al.Add(19); // ●
hoge = (string)al[0];
System.Console.Write("{0},{1}",hoge ,al[1]);
}
}
●部分を回避できるのが Generic というやつっぽいですね。
新しいテクを今覚えたとです。
0660659
2005/12/17(土) 14:52:20そう言えば>>657も ((A)objB).Write(); とキャストすればコンパイル通った(^o^)
多態性となんかごっちゃになってたけど、>>656,658様のお陰でどうにか落ち着きましたっす。 多謝
0661デフォルトの名無しさん
2005/12/17(土) 18:32:58class Tekito {
}
}
namespace G {
class H {
static void Main() {
H.Tekito a = new H.Tekito();
}
}
}
この場合、namespace H の Tekitou クラスを作るにはどうアクセスしたらいいんでしょうか?
0662デフォルトの名無しさん
2005/12/17(土) 18:41:552.0 なら H::Tekito
1.0, 1.2 なら using Hoge = H.Tekito; としてから Hoge で使う
0663デフォルトの名無しさん
2005/12/17(土) 19:00:45いけますた。namespace G の所で宣言して暫く詰まった僕は馬鹿だ… orz
1.2 のはずで下の方で出来たっす。有難う御座います。
0664デフォルトの名無しさん
2005/12/18(日) 03:56:51public class Form1 : System.Windows.Forms.Form
{
public System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.Button button2;
(中略)
public void SetText1()
{
this.textBox1.Text = "abc";
}
private void button2_Click(object sender, System.EventArgs e)
{
testClass1 tc1 = new testClass1();
tc1.TestSet();
}
}
public class testClass1
{
public void TestSet()
{
Form1 fm1 = new Form1();
fm1.SetText1();
}
}
こんな感じでやってみても全然テキストボックスの値は変化しないのですがどうやったらいいのか教えて下さい。
0665デフォルトの名無しさん
2005/12/18(日) 04:30:44fm1.SetText1();のあとにfm1.Show();を追加してみればどんな状態になっているかがわかる。
testClass1に操作したいForm1のインスタンスを渡すなりなんなりする必要がある。
0666デフォルトの名無しさん
2005/12/18(日) 04:48:53ありがとうございます。
fm1.Show();
を追加したら新しく開いたForm1のTextBox2には"abc"と表示されていました。
testClass1にForm1のインスタンスを渡すというのは、testClass1内にTextBox2のインスタンスを
作成してやるということでしょうか?
0667デフォルトの名無しさん
2005/12/18(日) 04:54:13いや、だから新たに作成するなと。
操作したいウィンドウのインスタンスを渡せ
private void button2_Click(object sender, System.EventArgs e)
{
testClass1 tc1 = new testClass1();
tc1.TestSet(this);
}
//
public void TestSet(Form1 fm1)
{
fm1.SetText1();
}
0668デフォルトの名無しさん
2005/12/18(日) 04:57:37出来ました!ありがとうございます。
0669デフォルトの名無しさん
2005/12/18(日) 05:28:16かなり高度な事だよなぁ
0670デフォルトの名無しさん
2005/12/18(日) 13:32:120671デフォルトの名無しさん
2005/12/18(日) 14:20:50貴重な人材
0672デフォルトの名無しさん
2005/12/18(日) 14:22:16統一的に何をどう扱うの?
0673デフォルトの名無しさん
2005/12/18(日) 16:38:44何故かエラーが出て止まってしまうのです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1315.txt
コメント部にやりたいことは一応記述しておきました。
上級者の方から見れば、なにがやりたいのかわかりにくいかもしれませんが、どうか
よろしくお願いします。
0674673
2005/12/18(日) 16:40:380675デフォルトの名無しさん
2005/12/18(日) 17:06:30> if (num > 2) num = 2; // ここ…
> else if (num < 0) num = 0;
> dg = new CallBack[num];
dgはCallback[2]、つまり要素数2の配列。
> dg[id] = obj; // ユーザー定義変換
idが2の場合、配列インデックスは0スタートだからdgの3番目。
ほらOutOfRangeException。
0676デフォルトの名無しさん
2005/12/18(日) 17:21:14わぎゃー、速攻でずっと悩んでたエラーが消えたとです。ありがとうございます。
dg = new CallBack[num+1] でしたか…。
System.NullReferenceException: というエラーは cout.WriteLine(test.dg[1]());
を test.dg[2]() にしたら直った。(*´o`)ホッ
ついでと言っては何なのですが、
>if (num > 2) num = 2;
>else if (num < 0) num = 0;
こういう似たような限界値チェックが沢山出てきました。Cなら #define のマクロ関数
使ってなんとかしていたと思うのですが、C#ならばどうすべきなのでしょうか?
新しいメソッドを作るべきですか?
0677デフォルトの名無しさん
2005/12/18(日) 19:16:460678デフォルトの名無しさん
2005/12/18(日) 21:36:57catch したければ自分で書く
0679デフォルトの名無しさん
2005/12/18(日) 22:06:38そうですか ありがとうございました
0680デフォルトの名無しさん
2005/12/19(月) 00:55:25class Test {
static void Main() {
System.Type t = System.Type.GetType("System.Char");
MethodInfo[] method = t.GetMethods();
foreach(MethodInfo tmp in method) System.Console.WriteLine(tmp);
}
}
これは、どうして new していないんでしょうか? オブジェクトは容量の確保するために、new は必須だと…
MethodInfo クラスの中身でユーザー定義変換を行ってるいう事? けど、配列でそんな事可能なのですか?
一体どういう実装が… 想像がつかなくてこんがらがって来ました。どなたか解説キボソです
0681デフォルトの名無しさん
2005/12/19(月) 00:59:15GetMethodsでMethodInfo[]のインスタンスを返しているが、そこにnewが見えないのはどうしてだってこと?
foreachの実装がどうなってるかってこと?
どっちもインスタンスはGetMethodsの中でnewしてるだけの話だが。
0682デフォルトの名無しさん
2005/12/19(月) 01:07:025行目でパニくってました。return new MethodInfo[]; みたいな感じでやれば行けるのかも…
return で返せるのは一つと思ってたばっかりに。後日試してみようと思います。>>681ありがとうございます、お騒がせしました。
0683デフォルトの名無しさん
2005/12/19(月) 02:34:260684デフォルトの名無しさん
2005/12/19(月) 20:57:480685デフォルトの名無しさん
2005/12/19(月) 23:44:48なんと言うか、もう少し楽に…
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1322.txt
event について
バシっとしっくり来る解説になかなか出会えません。
イベントハンドラって書いてあるけど、なんの事やら…
マルチキャストのデリゲイトと違いもはっきり認識できませぬ。
もし、この辺の解説もいただけたなら喜びまくりです。 m(_ _)m
0686デフォルトの名無しさん
2005/12/19(月) 23:49:12メンバ変数に対してプロパティがあるように、
デリゲートに対してイベントがある感じ。
↓これじゃ駄目?
http://www-ise2.ist.osaka-u.ac.jp/~iwanaga/study/csharp/sp_event.html
0687デフォルトの名無しさん
2005/12/19(月) 23:58:34> ★の部分なのですが、こう以外書きようがないものなのでしょうか
> なんと言うか、もう少し楽に…
3つくらいなら別に良いだろ。
それ以上になったらコンストラクタでforでも使えば。
というかコンストラクタでfor使ってるじゃん。ここでnewしていけば。
> event について
> バシっとしっくり来る解説になかなか出会えません。
> イベントハンドラって書いてあるけど、なんの事やら…
> マルチキャストのデリゲイトと違いもはっきり認識できませぬ。
イベントハンドラは実際に実行するメソッド。デリゲート/イベントに登録する。
デリゲートは実行するメソッドのシグネチャ(引数・返り値)を定義した型。
デリゲートは型なので当然インスタンスを作ることができる。でもこのインスタンスも一緒くたにデリゲートと呼ぶことも多い。
イベントはデリゲートインスタンスに対するプロパティみたいなもの。
宣言部では表に出てこないが、内部でデリゲートインスタンスを持っている。
0688デフォルトの名無しさん
2005/12/20(火) 00:03:34delegateキーワードで宣言した場合自動的にMulticastDelegateから派生したクラスになる。
Delegateから派生させるのは許可されていないので、C#で扱うデリゲートは自動的にマルチキャスト。
0689デフォルトの名無しさん
2005/12/20(火) 00:44:29どこかで見た覚えが(゚゚)ウーン
>メンバ変数に対してプロパティがあるように、デリゲートに対してイベントがある感じ。
何となく理解し易そうでした。これを手掛かりに色々考えていきます。
>コンストラクタでfor使ってるじゃん。ここでnewしていけば。
おぉ…なぜにそこに気が付かなかったんだろう ガクッ なるほど、助かりました。
>>686-688
ありがとうございます。他にも感謝すべきところはあるのですが、長くなりそうなのでこの辺でお許しを…
すぐ理解することが難しそうなので、何日か掛かるかもしれませんが、じっくり消化しようと思います。
0690685
2005/12/20(火) 23:20:03public KeyboardEventLoop() : this(null){} ← こういうのがあるのですが、これが良くわかりません…
一体どういう事でしょうか?
0691デフォルトの名無しさん
2005/12/20(火) 23:31:14ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/csref/html/vclrfInstanceConstructors.asp
| キーワード this を使用して、クラス コンストラクタから
| 同じクラス内の別のコンストラクタを呼び出すこともできます。
| 次にその例を示します。
0692デフォルトの名無しさん
2005/12/20(火) 23:54:48次のこれ→ this.OnKeyDown += OnKeyDown; で null なのになんでオチないんだろう…とか
C# の msdn も存在したのですね。じっくり目を通さねば… >>691ありがとうございました
0693デフォルトの名無しさん
2005/12/21(水) 19:24:20http://www-ise2.ist.osaka-u.ac.jp/~iwanaga/study/csharp/sp_event.html
のサイトで
Console.OpenStandardInput(); の行が何をしているのかわかりません。
ヘルプを見ても、『標準入力ストリームを取得します。』とだけ書かれています。
サンプルを探してみたのですが、Stream 型で受け取っているのが普通なのに、ここでは
一体何をしているのでしょうか? 作者の方に聞くより他に解決手段はないでしょうか
0694デフォルトの名無しさん
2005/12/21(水) 19:27:260695デフォルトの名無しさん
2005/12/21(水) 19:40:09ではこれからは書かないようにしますです
>>694 お早いレスありがとうございました
0696695
2005/12/21(水) 19:42:280697デフォルトの名無しさん
2005/12/21(水) 20:35:090698デフォルトの名無しさん
2005/12/23(金) 00:01:33[Conditional("TETETEST")]
static void Test()
{ /* 何かの処理 */ }
と
#if TETETEST
static void Test()
{ /* 何かの処理 */ }
#endif
の違いもわからないのがさる事ながら、他サイトで書かれていた
『アタッチする』なんて言葉の特別性(?)もよくわかりません。継承するのと
さほど違いが見出せないのですが…初心者びっくり簡単な解説キボソしまっす!
0699デフォルトの名無しさん
2005/12/23(金) 00:09:51ConditionalAttributeは、メソッド定義に影響するんじゃなくてメソッド呼び出しに影響する。
Conditionalで指定されてるシンボルを#defineしてない場合、そのメソッドの"呼び出しが"無かったことになるわけ。
つまり、
static void Main() {
#if TETETEST
Test();
#endif
}
と言う風に展開されるわけだな。
決して
#if TETETEST
static void Test() { ... }
#endif
と展開されるわけではない。
0700デフォルトの名無しさん
2005/12/23(金) 00:36:25アタッチについてですは、管理人の方の許をも得ていないので載せるのは恐縮ですが
<a href=
0701↑変な所で切れてしまった…
2005/12/23(金) 00:37:55を参考にさせて頂いた次第です。
属性の部分少し難しいのでまた質問に来るかもしれませんが、その時はよろしくお願いします。
>>699 ありがとうございました。
0702デフォルトの名無しさん
2005/12/23(金) 01:55:38また、コマンドライン引数にFuga以外を入れた場合、自分で定義した例外が働いて
くれると思ったのですが、それも動いてくれません。なぜでしょうか?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1328.txt
// public 要るん? とか意味不明な消し忘れコメントは無視の方向でオネガイシマス;
0703702
2005/12/23(金) 01:58:10○Christmas
ミスです。レス消費すみません。 Hage はまずいと思って Fuge に変えたと思ったら Christmas でした。
0704デフォルトの名無しさん
2005/12/23(金) 02:09:38[Kitty(KittySup.ICHI, str = "なぜやぁああああ")]
これは、
KittyAttribute kitty = new KittyAttribute(KittySup.ICHI);
kitty.str = "なぜやぁああああ";
という意味になる。
で、strはKittyAttributeクラス内でしか見えないのだから、当然はじかれるわけだ。
こういうことがしたければ、
public KittyAttribute(KittySup sup, string str) {
this.sup = sup;
this.str = (str == null) ? "Kitty on your lap" : str;
}
などと複数引数をとるコンストラクタを作るべし。
そうすれば
[Kitty(KittySup.ICHI, "なぜやぁああああ")]
こんな感じで指定できるようになる。
> また、コマンドライン引数にFuga以外を入れた場合、自分で定義した例外が働いて
> くれると思ったのですが、それも動いてくれません。なぜでしょうか?
そりゃ誰もUGaaException投げてないし。
try {
throw new Exception();
}
catch (NullReferenceException ex) {
//NullReferenceExceptionはExceptionから派生してるけど
Console.WriteLine(ex);
}
これでcatchされるわけにはいかないだろ。
あと、属性クラスを定義する場合AttributeUsageAttribute属性を付加する。
0705デフォルトの名無しさん
2005/12/23(金) 02:18:52[Kitty((KittySup)(-1), "SAF")]
なんて渡し方もできるんだから。
0706デフォルトの名無しさん
2005/12/23(金) 02:36:34private でアクセス制限してたから []内がうまく働かなかったのですね
思いもよらなかったです
NullReferenceException をオーバーライドというのも少しおかしかったと気付きました。
NullReferenceException はシステムか何かが throw してくれるからうまく働くとのですね
AttributeUsageAttribute属性については出直して参ります 有難う御座いました!
0707デフォルトの名無しさん
2005/12/23(金) 02:46:47OK! 理解しました。
流し読みされましたね いちおう uint で宣言してるので → [Kitty((KittySup)(unchecked((uint)(-1))), "SAF")]
みたいになりますた。 …というか、class名ひとつ Unko のままでした 申し訳なかったです
0708デフォルトの名無しさん
2005/12/23(金) 14:50:00http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1330.txt
CS0120 は以前にも出た気がする… 確か呼び出す実態がないからこのエラーが出るとか思ったりして
static 取ったり付けたり奮闘したのですが、駄目です… 何がいけないのでしょうか?
正常に動くと Chaaa がを実行するはずなのです
0709デフォルトの名無しさん
2005/12/23(金) 15:20:18static Authorized atr; で宣言するか、
static 使わないなら Authorized atr = new Authorized(new CallBack(Chaaa));
で良かったのか (;´Д`) ウゥ 自己嫌悪…
0710デフォルトの名無しさん
2005/12/24(土) 01:54:59コンパイルエラーがなくなりません。修正の目処がつかなくなりました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1336.txt
一体なにがいけないのでしょうか?
0711デフォルトの名無しさん
2005/12/24(土) 02:00:130712デフォルトの名無しさん
2005/12/24(土) 02:11:030713デフォルトの名無しさん
2005/12/24(土) 02:39:31CS0208 が… 英語で…
0714デフォルトの名無しさん
2005/12/24(土) 02:42:48キーワードでCS0208引けば出る
0715710
2005/12/24(土) 03:39:59/ ::::::::::::::::\
. | ,,-‐‐ ‐‐-、 .:::|
| 、_(・)_,: _(・)_, :::| やっと消えたぁああ!
. | ::< .::::|
\ /( [三] )ヽ ::/
/`ー‐--‐‐―´\
class Kitty を struct Kitty に変えたらよかったみたい
CS0213 とかのエラーも出たのですが >>714さんの情報よりかろうじて読み解けますた
ヘルプにはエラー情報も載ってたのですね。 クラスの情報ばかりかと思ってました
マネージ型 = 移動可能変数 class に fixed は不可 など等 色々知れてよかったです
ありがとうござました
0716デフォルトの名無しさん
2005/12/24(土) 04:15:000717デフォルトの名無しさん
2005/12/24(土) 14:50:06Microsoft .NET Framework 2.0 Beta ならば動くらしく↓
http://www.microsoft.com/downloads/details.aspx?FamilyID=916ec067-8bdc-4737-9430-6cec9667655c&DisplayLang=en
.NET Framework 2.0 Software Development Kit Beta 1
をインストールしてみたのですが無理でした。なので次に↓
http://www.microsoft.com/japan/msdn/netframework/downloads/default.aspx
Microsoft .NET Framework 2.0 SDK 日本語版(32ビット版:x86)
をインストールすると、
Error: Prerequisite programs are missing
Setup has detected that the following prerequisite programs are not installed:
Rerun setup after installing these programs.
You must first install these programs before Microsoft .NET Framework 2.0 SDK can be installed.
と出てインストールできません。
Visual Studio 2005 Beta 2 日本語版についてというページも見つけたのですが、いったいどれをインストール
すれば、Generics などがコンパイルできるようになるのでしょうか フリーではもう諦めるしかないですか?
0718デフォルトの名無しさん
2005/12/24(土) 15:03:29・ベータのを全てアンインストール
・2.0 再頒布可能パッケージをインストール
・2.0 日本語Language Packをインストール
・2.0 SDKをインストール
Visual Studio 2005 Express Edition入れるって手もある。
その場合はベータアンインストール>VSインストール
その後SDKからMSDNだけインストール
0719デフォルトの名無しさん
2005/12/24(土) 15:05:29最初に.NET Framework2.0入ってないとSDKはインストールできねぇぞ。
0720デフォルトの名無しさん
2005/12/24(土) 16:41:42・Microsoft .NET Framework 2.0 再頒布可能パッケージ(32ビット版: x86)
・Microsoft .NET Framework 2.0 日本語 Language Pack (32ビット版:x86)
・Microsoft .NET Framework 2.0 SDK 日本語版(32ビット版:x86)
の順番でインストールっ コマンドラインからの命令は csc generics_test.cs とかで合ってますよね
なんでかコンパイル出来ないっす もしかして、Microsoft.NET\Framework\v1.1.4322 が残ってたのが
まずかったのかな… β版の方は消したんだけど、全部アンインストールしてまたやり直しでしょうか? orz
0722デフォルトの名無しさん
2005/12/24(土) 16:47:19全てのプログラム>Microsoft .NET Framework SDK v2.0>コマンドプロンプト
で開いたプロンプトでやってみな
ちなみに.NET Frameworkは別バージョンが入っていても問題ない。
というかバージョンが違うものは別物であると考えた方が良い。
0723717
2005/12/24(土) 16:56:32いけた! いけましたです! ありがとうございます!!
なんかめっちゃ嬉しいっす! またインストールし直しかと…。・゚・(ノД`)・゚・。
0724デフォルトの名無しさん
2005/12/25(日) 00:14:36ヽ(・ω・)/ ズコー
\(.\ ノ
、ハ,,、  ̄
 ̄
0725717
2005/12/25(日) 00:34:41{
T Read();
}
interface B
{
void Write();
}
class Setter : A<T>, B
{
T Read() {}
void Write() {}
}
いきなり引っ掛かってしまった・・
これをうまく動かしたいのですが、どう記述すれば良いのでしょうか?
0726デフォルトの名無しさん
2005/12/25(日) 00:45:57interface を実装するメソッドが public じゃないし
Read メソッドじゃ T を返してないし
0727デフォルトの名無しさん
2005/12/25(日) 00:48:370728デフォルトの名無しさん
2005/12/25(日) 01:38:09interface A<T>
{
/*public*/ T Read();
}
interface B
{
void Write();
}
class Tester : A<int>, B
{
int hoge;
int A<int>.Read() { return hoge; }
public void Write() {}
}
0729デフォルトの名無しさん
2005/12/25(日) 01:40:20で、一応コンパイルは通ってくれたのですが、↓のどこがいけないのでしょう?
class Tester : A<T>, B
{
T hoge;
int A<T>.Read() { return hoge; }
public void Write() {}
}
sage.cs(29,25): error CS0246: 型または名前空間名 'T'
が見つかりませんでした。using
ディレクティブまたはアセンブリ参照が不足しています。
とか出るのですけど、A<int> みたいに限定しちゃったら Generics の意味がなくなりませんか
それに、名前空間どうのこうののエラーが出て、メソッド名に .(コロン) 付けてみたけど、その時
public 付けてるとなんか↓のようなエラーが出るんっす
sage.cs(21,11): error CS0106: 修飾子 'public'
がこの項目に対して有効ではありません。 ヘルプもなぜか英語に変わってたし、ゲンナリだす…
0730デフォルトの名無しさん
2005/12/25(日) 01:50:380731デフォルトの名無しさん
2005/12/25(日) 01:59:49あんれまー(; ゚Д゚)
ありがとうございます。無事いけました。
と、
>>727 はい、出来うる限り努力します
>>726 あっざいました!
0732デフォルトの名無しさん
2005/12/25(日) 03:45:00言われてしまいます。
/*
tes.cs(15,7): error CS0534: 'GenericsIndexer<TYPE>' は継承抽象メンバ
'Jit<TYPE>.this[int].set' を実装しません。
*/
abstract class Jit<TYPE>
{
public abstract TYPE this[int list] { get; set; } // int list ?
static void ChackRange(ref int in_val, int c_max, int c_min)
{
if (in_val > c_max) in_val = c_max;
else if (in_val < c_min) in_val = c_min;
}
}
// 次へ
0733デフォルトの名無しさん
2005/12/25(日) 03:46:27class GenericsIndexer<TYPE> : Jit<TYPE>
{
TYPE[] index_value;
private const int DEF_RANGE = 10;
private const int max = DEF_RANGE, min = 0;
public GenericsIndexer() : this(DEF_RANGE) { }
public GenericsIndexer(int val)
{
index_value = new TYPE[val];
max = val - 1;
}
public TYPE this[int list]
{
get
{
Jit.ChackRange(ref list, max, c_min);
return index_value[list];
}
set
{
Jit.ChackRange(ref list, max, c_min);
index_value[list] = value;
}
}
}
インデクサを Generics で継承しようと思っているのです。
Main は省略してあります。宜しくお願いします!
0734デフォルトの名無しさん
2005/12/25(日) 03:49:560735デフォルトの名無しさん
2005/12/25(日) 04:10:51・Jit<TYPE>.ChackRange(ref list, max, min); // c_min がエラー
・static void ChackRange(ref int in_val, int c_max, int c_min) に public をつける
・private readonly int max
だいたいこんな感じで無事終了。期待した動作もしてくれました。
>>734 さんの一言がなければ大変な間違い連鎖を引き起こすところだったと思います。
ありがとうございました
0736デフォルトの名無しさん
2005/12/25(日) 04:23:51CheckRangeは非static・protectedでいいんじゃないかとか
0737デフォルトの名無しさん
2005/12/25(日) 14:09:22分かり申したです。心に留めておきます
ためになる助言サンクス!
0738デフォルトの名無しさん
2005/12/25(日) 18:41:50object box = new Fuge("testest");
Fuge unbox = (Fuge)box; // [1]
unbox.str = "muu...";
Console.WriteLine(unbox); // muu...
unbox = (Fuge)box; // [2]
Console.WriteLine(unbox); // aaa
Fuge は struct の値型です。[1]でなぜ new をしていないのか疑問に思いました。
ユーザー定義変換のように内部で new していると考えたのですが、そうすると [2] でも new している事になります
となると [1] と [2] では unbox のアドレスが異なるのですか? では [1] で作ったインスタンスが物凄く無駄な気がします
確かめようと
System.Console.WriteLine((int)&unbox);
のコードを埋め込んでみたのです。
そしたら、
boxing.cs(16,33): error CS0208:
マネージ型のアドレスの取得、マネージ型のサイズの取得、またはマネージ型へ
のポインタの宣言が実行できません ('Kitty')
上のようなエラーが出てしまって確認のしようがありません。
実際のところをお伺いしたいのですが、よろしければご教示ください
0739738
2005/12/25(日) 18:45:21自分の見解が正しいのか否かが不安な状態なのです。
『[1]と[2]ではアドレスが異なる』が自分の考えなのですが…
0740デフォルトの名無しさん
2005/12/25(日) 18:55:37boxing/unboxingで値のコピーが発生する。
ArrayListに突っ込んだりしたときに問題が表面化したりするな。
0741デフォルトの名無しさん
2005/12/25(日) 19:47:17問題に直面できるよう、これからArrayListを沢山使っていこうと思います。
お陰で安心できました。ありがとうございます。
0742デフォルトの名無しさん
2005/12/25(日) 21:20:54{
static void Main()
{
char ch = 'A';
object obj = ch; // boxing 単なるポインタ渡し
System.Console.WriteLine((int)obj);
}
}
これを実行すると System.InvalidCastException の例外が発生するのはなぜでしょうか?
明示的な参照変換の際に発生するエラーとの事ですが、object は究極の型で何にでもキャストできそう
だと思ったのですが…
char から int へのキャストも問題なさそうなのに え、、System.Int32 も System.Object の派生では
ないのですか 頭がコンガラガッチャッテマスデス
//値型の入ったオブジェクトを、入っているのと異なる値型でキャストしようとすると駄目?
0743↑
2005/12/25(日) 21:22:22// の行は意味不明なのでスルーでよろしくです
0744デフォルトの名無しさん
2005/12/25(日) 21:33:430745デフォルトの名無しさん
2005/12/25(日) 21:41:30……んじゃないか?
0746742
2005/12/26(月) 00:19:04object obj = ch;
int i = (int)obj;
(ll゚Д゚)はぁはぁ…
結局これと同じ現象が起こっていたのか…
どこかで、boxing/unboxing には互換性がないと駄目だとかいうのはこういう事だったんですね。
char と int のメンバは異なるものばかりでした。だからコピーしようにも保障されないからエラーになるのか
なぜ>>744さんのでエラーが起こらないのか不思議で考えてみたりしました
アンボクシングとは、
『new でインスタンスを生成し、いつでもコピー可能な過程にまで持っていった状態の事を指す』
と覚えておこうと思います
int i = (int) (char)obj // (char)obj の所ですでにアンボクシング済み この場合 'A' に等しい
>>745さん、ありがとうございます。関数の引数の時でもアンボクシングが起こるのですね。
アドバイスがなければ、今頃大変な事になっていました。
あ…頭がクラクラして…ふぅ。僕にはだいぶ難しい…
0747デフォルトの名無しさん
2005/12/26(月) 00:34:24オーバーロードを解決する必要が無い限り暗黙にキャストしてくれるけどな。
0748デフォルトの名無しさん
2005/12/26(月) 00:42:46関数の引数のときじゃなくて、
(int)obj
を行った時点で unboxing
0749デフォルトの名無しさん
2005/12/26(月) 04:39:56Textbox.textで日本語を表示させると文字化けしてしまいました。
どうやら読み込んだテキストファイルがAsciiコードだった事が要因のようなのですが、解決法がわかりません・・・
文字化けを解決する方法がありましたら教えて頂きたいです、よろしくお願いします。
0750デフォルトの名無しさん
2005/12/26(月) 06:33:39標準は UTF-8 という文字コードで読み書きされるので、shift-jis 混じりのアスキーファイルを
読み書きしたいなら、文字コードを指定する。
使ってるWindowsの標準の文字コードなら次のように書く。
Dim xxx As StreamReader = New StreamReader("Test.txt", System.Text.Encoding.Default)
0751デフォルトの名無しさん
2005/12/26(月) 06:47:11Dimって(笑)、VBのコードで書いてしまったけど代替一緒だからかんべんな
0752デフォルトの名無しさん
2005/12/26(月) 07:46:240753デフォルトの名無しさん
2005/12/26(月) 13:05:17その画面イメージ(lbl1の範囲)を印刷する事って出来ないのでしょうか?
グラフィックス使って、imageとかFontとかを描画させれば、それをprintするように設定出来ますが、
lbl使った方が作りやすいのですが・・・。
0754デフォルトの名無しさん
2005/12/26(月) 14:21:29ttp://dobon.net/vb/dotnet/vb6/printform.html
0755デフォルトの名無しさん
2005/12/26(月) 18:22:40それでいってみます。印刷範囲の設定も簡単でうまく出来そうです。
0756デフォルトの名無しさん
2005/12/26(月) 19:46:14static void Main()
{
Type[] t = { typeof(int), typeof(char) };
MemberInfo[][] mi = { t[0].GetMembers(), t[1].GetMembers() }; // ★1
for (int i = 0; i < mi.Length; ++i)
{
foreach (object tmp in mi[i])
{
System.Console.WriteLine(tmp);
}
System.Console.WriteLine("-----------");
}
}
★1の部分はどう記述すべきなのでしょうか? 数が2つだからいいけど、沢山あったら大変ですよね
MemberInfo[][] mi = new MemberInfo[t.Length][];
for (int i = 0; i < t.Length; ++i)
mi[i] = t[i].GetMembers(); // ★2
こう書けばいいかとも思ったのですが、それでは ★2 の部分の戻り値が new で取られていたはずだから
★1の new が無効になってしまうのは勿体無いと感じるのです。
{ t[0].GetMembers(), t[1].GetMembers() } こう記述するしかないでしょうか
0757デフォルトの名無しさん
2005/12/26(月) 20:31:29としたとき、作られるのは要素数3をもつ一個のA[][]インスタンスであって、A[]が作られることは無い。
0758デフォルトの名無しさん
2005/12/26(月) 20:42:58と
string[] a = new string[1];
a[0] = "hoge";
はまったく同じだぜ。
0759デフォルトの名無しさん
2005/12/26(月) 23:13:42MemberInfo[][] mi = new MemberInfo[2][];
mi[0] = t[0].GetMembers();
mi[1] = t[1].GetMembers(); // ここで領域確保 & 初期化 が行われている…
ふむふむ。MemberInfoが2次元だから1次元目の領域も取られていないとおかしいと見たりしたけど、
よく考えればジャグ配列とかいうのだったんだ
>>757-758 Thank you! ありがとうございました
0760デフォルトの名無しさん
2005/12/26(月) 23:37:43string str = "abc";
System.Console.WriteLine("{0} それに ", id + " " + str);
のように string型 と int型の混合を一行で書きたいのですが、不可能でしょうか
System.Console.Write("{0} それに ", id);
System.Console.WriteLine(str);
と同じ結果になってはくれません(下の方が正しい結果)
0761デフォルトの名無しさん
2005/12/26(月) 23:39:360762デフォルトの名無しさん
2005/12/26(月) 23:49:43順番には何か関係があるのですか?
ttp://www-ise2.ise.eng.osaka-u.ac.jp/~iwanaga/study/csharp/st_variable.html
参考にさせていただいているサイトでも0から始まっています
ググり方がよくわからんです WriteLine {0} 意味 ??? といった風で
0763デフォルトの名無しさん
2005/12/26(月) 23:51:060764デフォルトの名無しさん
2005/12/26(月) 23:53:22それにの位置が違うぞw
0765デフォルトの名無しさん
2005/12/27(火) 00:09:56ありがとうございます {1} が str の引数に当たっていたということですね
>>764
僕のサンプルが屑だから仕方ないっす
0766デフォルトの名無しさん
2005/12/27(火) 01:05:48そのサイト内からまんまコピペ。
↓
int m = 1, n =3;
Console.Write("m = {0}, n = {1}", m, n); // 文字や数値の出力
この出力の仕方はフォーマット出力といって、 {0} とある場所に m の値が、 {1} とある場所に n の値が書き込まれます。例えば上述のサンプルの出力結果は以下のようなものになります。
m = 1, n = 3
0767デフォルトの名無しさん
2005/12/27(火) 11:18:57複数あると上手くいきません。
ググってもヘルプ見てもダメなのですが、いい手ないですか?
0768デフォルトの名無しさん
2005/12/27(火) 13:59:00しばらく外出しており亀レスになってしまいましたが解決しました。
ありがとうございました!
0769デフォルトの名無しさん
2005/12/28(水) 22:03:49{
void Write();
}
class A<TY> : IA
{
public void Write()
{}
public static void Happy<T>()
{}
}
class Gene<T1, T2> where T1 : IA where T2 : T1 where T2 : new() // ← エラー要因
{
public void Osyougatu()
{ A<int>.Happy<int>(); }
}
class Hoge
{
static void Main()
{
Gene<A<int>, A<int>> gn = new Gene<A<int>, A<int>>();
gn.Osyougatu();
}
}
型パラメータの制約でセカンダリ制約というのんの後に、コンストラクタは公開していなければ
ならない、という制約を続けて記述するすればにはどう良いのでしょうか
0770769
2005/12/28(水) 22:06:020771デフォルトの名無しさん
2005/12/28(水) 22:31:19class Gene<T1, T2> where T1 : IA where T2 : T1, new()
Microsoftのガイドラインでは、ジェネリック型パラメータの名前はTプリフィクスをつけた説明的な名前にせよ、と。
0772デフォルトの名無しさん
2005/12/28(水) 23:05:09Oh! privateコンストラクタをちゃんと弾いてくれる。感激!
Tプリフィックの件、以後注意します ありがとうございました
0773デフォルトの名無しさん
2006/01/01(日) 20:30:20指定したサイズの中身がないビットマップファイルを生成するにはどうしたらよいのでしょうか?
0774デフォルトの名無しさん
2006/01/01(日) 20:31:43ちょっとは考えろよ。
0775デフォルトの名無しさん
2006/01/02(月) 04:29:39using System;
class Test{
public static void Main(){
Console.WriteLine("test");
}
}
ネットに散らばってる、Hello, World も壊滅w
凄すぎ。
年末まで、VSC# で色々作れてたのにw
とりあえず、Linux で起動しなして試してみよっと。
0776デフォルトの名無しさん
2006/01/02(月) 11:06:400777デフォルトの名無しさん
2006/01/02(月) 20:21:02酔いがさめてから出直せ
0778デフォルトの名無しさん
2006/01/02(月) 21:05:470779デフォルトの名無しさん
2006/01/02(月) 23:05:02実行ファイルを子プロセスとして開始し、
標準出力をTextBoxに書き込み、また、別のTextBoxの内容を標準入力に書き込むような、
Cで書いたプログラムの実行テストをするツールを作っているのですが、
int main(){
int num;
printf("数字を入力>");
fflush(stdout);
scanf("%d", &num);
printf("%d*2 = %d", num, num*2);
return 0;
}
このような、対話処理を行うコードをコンパイルしたものを実行させようとすると、
最初の「数字を入力>」が表示されず、標準入力に入力を書き込んでやったときにはじめて「数字を入力」が表示されてしまいます。
プロセスを開始し、標準出力の読み出しを行う処理は
ttp://codezine.jp/a/article.aspx?aid=83
こちらのコードを参考に…というか、結果をテキストボックスに付け足しし、プロセスが終了するまでReadLineメソッドのループを繰り返すようにしている、以外の点はほぼ同じです。
コマンドプロンプトで実行するのと同じように、結果を取得するにはどのようにすればいいか、よろしければご教示ください。
0780デフォルトの名無しさん
2006/01/02(月) 23:30:290781779
2006/01/03(火) 00:35:16ありがとうございます。
Readメソッドを利用するようにしたところ、思ったように動作するようになりました。
実装ミスがあって、別のところに問題が発生してしまいましたがなんとかなりそうです。
本当にありがとうございました。
0782デフォルトの名無しさん
2006/01/11(水) 12:22:16C#のコードで
private void button1_Click(object sender, EventArgs e)
{
}
object sender, EventArgs eはなにを意味してるのでしょうか?
また、どういう時に使用するのでしょうか?
0783デフォルトの名無しさん
2006/01/11(水) 12:28:08senderは、たいていイベントの送信側そのもの
この場合なら(Button)にキャストすればクリックしたボタンが取得できる
EventArgsはイベントにくっついてきた情報がまとめて入ってる。
この場合は特に使い道ないけど、KeyDownとかなからキー情報が入ってるとかいろいろ。
0784デフォルトの名無しさん
2006/01/11(水) 13:07:53private void button1_Click(object sender, System.EventArgs e)
{
MessageBox.Show(sender.ToString());
}
こんな感じで取得できました。
ありがとうございました。
0785デフォルトの名無しさん
2006/01/11(水) 14:17:16ttp://msdn.microsoft.com/library/ja/cpgenref/html/cpconnetframeworkdesignguidelines.asp
MSDNの「クラスライブラリ 開発者向けのデザイン ガイドライン」
読んでないなら目を通しておけ。
0786デフォルトの名無しさん
2006/01/11(水) 14:53:18結果表示用にプロジェクト→ウィンドウズフォームの追加で新しいダイアログ
ResultDialogを追加しました。そして、そこにTextBoxを張り付け。
最初からあるForm1で検索結果表示用ダイアログを生成してそこに結果を表示
しようとしてTextBoxのメソッドを呼び出そうとしたら、TextBoxはResultDialogで
privateになっていてアクセスできません。対応として。
1)検索するためのデータをクラス外に出して、検索自体をResultDialogでやらせ
る。
2)検索結果をResultDialogに送って、そっちで表示させる。
3)検索するためのデータをResultDialogに送ってそっちで検索させる。
4)ResultBox内のTextBoxをpublicにする。
5)その他。
作法としてはどれがいいんでしょうか。
0787デフォルトの名無しさん
2006/01/11(水) 14:53:330788デフォルトの名無しさん
2006/01/11(水) 15:15:591と4以外。
2がベター。
0789デフォルトの名無しさん
2006/01/11(水) 15:48:06サンクスです。
0790デフォルトの名無しさん
2006/01/11(水) 20:17:13いいんでしょうか。
0791デフォルトの名無しさん
2006/01/11(水) 20:31:10File.GetAttributesでディレクトリ属性の有無を確認、は存在しない場合のハンドリングが必要だからなー。
0792デフォルトの名無しさん
2006/01/11(水) 20:45:05なるほど。ありがとうございました。Existsでやっちゃえばいいのか。
ドロップしてきた物の判別なんで、存在しない場合は考えなくていいとは
思うんですが。
0793デフォルトの名無しさん
2006/01/12(木) 00:27:50> ドロップしてきた物の判別なんで、存在しない場合は考えなくていいとは
> 思うんですが。
普通はしないが、できなくは無いからな。
0794デフォルトの名無しさん
2006/01/12(木) 00:33:58え、どうやって?>>793
0795デフォルトの名無しさん
2006/01/12(木) 00:35:40ドラッグ開始
タイマー発動でファイル削除
ドロップ
0796デフォルトの名無しさん
2006/01/12(木) 00:41:56DataObject obj = new DataObject(DataFormats.FileDrop, new string[]{"cd:\\hge"});
DoDragDrop(obj, DragDropEffects.Copy);
0797デフォルトの名無しさん
2006/01/12(木) 01:26:20子ウィンドウを予め用意しておいてVisibleをOn/Offでやるのが無難なんでしょうか・・・
何か変な事言ってたらごめんなさい
0798デフォルトの名無しさん
2006/01/12(木) 01:32:23だいたいそんな感じ。
Screenクラスか何かでデスクトップのサイズを取得できるのでそれでその子ウィンドウの位置を合わせて表示。
つか、CodeProjectあたりにそんなコード(Windows Messenger風)があるからそれを見てみたらどうだ。
0799デフォルトの名無しさん
2006/01/12(木) 01:38:46ありがとうございます
早速探してみます
0800デフォルトの名無しさん
2006/01/12(木) 01:42:050801デフォルトの名無しさん
2006/01/16(月) 21:19:12それってVB以外でも使えるの?
0802デフォルトの名無しさん
2006/01/16(月) 21:37:500804デフォルトの名無しさん
2006/01/18(水) 01:23:24あるフォームの上にマウスがある間だけ、特定の処理をしたいと思い、
FormのMouseEnterやMouseLeaveイベントを使ったのですが思うような動作になりません。
具体的には、Form1のフォームが見えている所では問題ないのですが、
Form上のTextBoxやButtonの上にマウスを移動した際にMouseLeaveイベントが
発生してしまうようなのです。
Form上に配置したコントロールに関係なく、マウスがForm上にあるか
判定するにはどうすれば良いでしょうか?
CursorやSystem.MousePozition?の位置情報を使って試してもみたのですが、
マウスを素早く動かした時などに確実に動かない場合がありまして・・・。
0805デフォルトの名無しさん
2006/01/18(水) 02:42:33フォームがアクティブな時
フォームの範囲内にカーソルがある時
その両方
のどれかなんだろうけど。
どれ?
0806デフォルトの名無しさん
2006/01/18(水) 08:23:55804です。
「フォームがアクティブ かつ そのフォームの範囲内にカーソルがある間」
だけ特定の処理をしたいと考えております。
よろしくお願いします。
0807デフォルトの名無しさん
2006/01/18(水) 11:05:04Form.MouseMoveイベントだけで解決する気がするんだが。
ダメならその都度Form.DesktopBoundsやForm.Visible辺りでも使って条件分岐させるとか。
0808デフォルトの名無しさん
2006/01/18(水) 22:35:56MouseMoveの場合、フォーム内にカーソルがある時しかイベントが
発生しないようで、「フォーム外」という状態を判断できませんでした。
現在のところ、タイマーを配置して一定時間ごとにカーソルの位置を
取得して意図した動きをさせているのですが、他にスマートな方法は
無いでしょうか?
0809デフォルトの名無しさん
2006/01/19(木) 15:47:05Cはかなり長い間仕事で使ってますが、専用マシンでWindowsプログラム
とかは初心者です。C++とかもさわり程度しかやってません。
0810デフォルトの名無しさん
2006/01/20(金) 11:15:23まずはここの「改訂版C#入門」
http://www.atmarkit.co.jp/channel/vbcs/vbcs.html
そしてMSDN
http://msdn2.microsoft.com/ja-jp/library/kx37x362(ja-jp,VS.80).aspx
Visual Studio 2005でポトペタ開発を体験すると感動すると思う。
0811デフォルトの名無しさん
2006/01/20(金) 11:31:50サンクスです。早速みてみます。
実は>>809=>>786=>>790で、すでにポトペタでデータDVD管理用のデータベースを
1本作ってみました。確かに感動しました。
0812デフォルトの名無しさん
2006/01/20(金) 18:59:34List<T>の指定範囲をComparisonデリゲートでソートしたいんですがいい方法はないでしょうか。
単純な比較なのでIComparerを実装したクラスを作りたくはないのですが。
List.Sort()、Array.Sort() のどのオーバーロードもソート範囲とComparisonを同時に指定できないように
ないっています。
これって何か理由があるんでしょうか?
0813デフォルトの名無しさん
2006/01/20(金) 23:36:03ま、無いんだったら仕方あるまい。どうせ数十文字の差だ。
0814812
2006/01/21(土) 07:13:09レスどうもです。
単純といってメンバの比較なのでComparer<T>.Defaultは使えないです。
仕方ないので新しいクラス作って比較することにします。
どうもありがとうございました。
#なんか仕様のところどころに手抜きを感じてしまう・・・
0815デフォルトの名無しさん
2006/01/21(土) 11:31:490816812
2006/01/21(土) 17:44:03うーんそれだとコピーする必要があるのでオーバーヘッドが
馬鹿にならなそうです。
今回はIComparer<T>を継承する方法にします。
レスどうもありがとうございました。
0817デフォルトの名無しさん
2006/01/24(火) 11:54:07クラス名見たら、なんだかよくわからないながーい名前が付いてました。
これってデフォルトの自動生成名でしょうか。
また、自分で名前付けたい時はどこで設定すればいいんでしょうか。
0818デフォルトの名無しさん
2006/01/24(火) 13:15:24色々無茶をすれば不可能ではないけれど。
0819デフォルトの名無しさん
2006/01/24(火) 13:40:090820デフォルトの名無しさん
2006/01/24(火) 22:22:50頭の中でアルキメデスがエウレカ!と叫んでる気がする。
0821デフォルトの名無しさん
2006/01/24(火) 22:53:030822デフォルトの名無しさん
2006/01/25(水) 01:17:44よく知ってたなw スルー覚悟の発言だったとのだがw
0823デフォルトの名無しさん
2006/01/25(水) 10:45:45小学生の時にぴっぽ君のひみつシリーズで読んだ。
0824デフォルトの名無しさん
2006/01/27(金) 01:13:31delegateを使ってみて思ったのですが、呼ぶたび関数から生成するのは
コンパイラがなんとかしてくれているのでしょうか?
フォームとかにインスタンスを持たせると少し早くなる気もするのですが
0825デフォルトの名無しさん
2006/01/27(金) 01:17:350826デフォルトの名無しさん
2006/01/28(土) 13:25:10プラグインによっては初期処理に結構な時間が掛かってしまいます。
そこで、Eclipseのようにプラグインの読み込み状況をスプラッシュウィンドウの
プログレスバー(?)で表示させたいと考えています。
どのようにすれば読み込み状況をバーに反映させられますか?
0827デフォルトの名無しさん
2006/01/28(土) 13:34:311つ完了するたびにプログレスバーを更新すればいいのでは
0828デフォルトの名無しさん
2006/01/28(土) 14:14:300829デフォルトの名無しさん
2006/01/28(土) 15:14:05どうやるんですか?
全部SendMessage()とかのメッセージでなんとかなるもんなんですか?
0830デフォルトの名無しさん
2006/01/28(土) 15:23:56が.NETとは無関係の話だな
0831デフォルトの名無しさん
2006/01/28(土) 15:25:45SetWindowLong()って、他プロセスだとそのまま使えないんじゃない?
0832デフォルトの名無しさん
2006/01/28(土) 16:53:02構造体のリストを定義してリスト内の
要素を直接変更することは可能でしょうか?
例えば、
struct TestRec {
public int i;
public string s;
}
みたいな構造体があって、
TestRec rec;
List<TestRec> lst = new List<TestRec>();
rec.i=1; rec.s = "Hoge";
lst.Add(rec);
lst[0].i = 100; // こいうことがしたい
std::vectorの感覚でやりたいのですが
0833デフォルトの名無しさん
2006/01/28(土) 16:56:160835デフォルトの名無しさん
2006/01/28(土) 20:27:00なんかうまいことやってくれんのかと思ってたんだが、
そうはいかないのか。
0836デフォルトの名無しさん
2006/01/28(土) 20:30:170837デフォルトの名無しさん
2006/01/28(土) 21:42:19ListView.OwnerDraw = true;
DrawSubItem(...) { e.DrawDefault = true; }
DrawColumnHeader(...) { e.DrawDefault = true; }
ここまでで特定の列の色は変わったんですが
ListView.Item[hoge].ForeColorの色を他のSubItemに反映させたいのですが
どうすればよいでしょうか?
0838デフォルトの名無しさん
2006/01/28(土) 21:56:37それぞれのListViewItem/ListViewSubItemのForeColor変更するだけでいけるはずだが。
まあそれぞれのListViewSubItemのForeColor変更すれ。
ListViewSubItemの派生クラスつくってコンストラクタで設定したりするとちょっと楽だぞ。
0839デフォルトの名無しさん
2006/01/28(土) 22:04:53やってみれば分かると思いますが
ListViewSubItemのForeColorを変更しても
ListViewItemのForeColorで描画されてしまいます。
0840デフォルトの名無しさん
2006/01/28(土) 22:06:020841デフォルトの名無しさん
2006/01/28(土) 22:07:57そんなプロパティあったんですか・・・orz
0842デフォルトの名無しさん
2006/01/28(土) 22:09:080843デフォルトの名無しさん
2006/01/28(土) 22:14:14いやー。VS2003からずっとC#やってるんですが初めて知りましたわ・・・
0844デフォルトの名無しさん
2006/01/29(日) 00:29:05Sessionに"PARAM_KEY"というHashtable型の配列を追加して、
その中の"URL_LIST"というキーを削除するコードです。
ここでRemoveSessionParamの中でtableのキーを削除するだけで、
Sessionの中の"PARAM_KEY"の中の"URL_LIST"が削除される理屈が理解できません。
何について勉強すればよいかの手がかりだけでも教えていただけたらとおもいます。
初心者なのでお手柔らかにお願いします。
RemoveSessionParam("URL_LIST");
protected void RemoveSessionParam(string strKey)
{
Hashtable table = GetParamHash();
if (table.ContainsKey(strKey))
table.Remove(strKey);
}
protected Hashtable GetParamHash()
{
Hashtable table = new Hashtable();
Object objPara = Session["PARAM_KEY"];
if (objPara != null)
table = (Hashtable)objPara;
return table;
}
0845デフォルトの名無しさん
2006/01/29(日) 00:36:43んー、「参照型」?
インスタンスつまり実体は一つでそれの参照を渡しあってるということなんだが。
0846デフォルトの名無しさん
2006/01/29(日) 00:49:13早速のお返事ありがとうございます。
すみません。会社の資産で勉強してたのですが、
これを書いた人がもう会社にいないので、一人で悩んでたところでした。
Hashtable型、Object型は参照型で、
> Hashtable table = GetParamHash();
> Object objPara = Session["PARAM_KEY"];
は参照渡しになっているという理解で間違いないでしょうか?
もしお時間があれば添削よろしくお願いします。
0847デフォルトの名無しさん
2006/01/29(日) 00:55:23この場合は参照型の値渡し。この場合の値ってのはつまり参照の値、平たく言えばアドレスの値だ。
ま、Session["PARAM_KEY"]とobjParaとtableが同じ実体を指しているってことだ。
//GetParamHash呼ぶたびに毎回Hashtableのインスタンスを作るってのはどうなんだろう。
//存在しない場合はnullを返して、呼び出し側でnullチェックってのが自然だと思うんだが……。
0848844
2006/01/29(日) 01:06:31たびたびありがとうございます。
> ま、Session["PARAM_KEY"]とobjParaとtableが同じ実体を指しているってことだ。
この一文で、だいぶ明るくなりました。
教えていただいたキーワードを元に勉強してみます。
コメントしていただいている内容について、
Hashtable table = new Hashtable();
を
if (objPara != null)
の後に書けば、Sessionにキーが見つからなかったときに
余計なインスタンスを作成せずに済む・・・ということでよろしいでしょうか?
ついでといっては何ですがこの点についてもお付き合いいただければと思います。
0849デフォルトの名無しさん
2006/01/29(日) 01:27:27GetParamHashメソッドは、Session変数の中の"PARAM_KEY"をキーにしたオブジェクトを返すと思われるメソッドだ。
現在の実装では、もし"PARAM_KEY"にオブジェクトがない場合、新しいHashtableのインスタンスを返している。
そのため、このGetParamHashメソッドの呼び出し側、この例ではRemoveSessionParamメソッドは、
このメソッドを呼んだときに必ずHashtableが返ることは保証されているといっていい。
だから直接返ったオブジェクトのContainsKeyメソッドを呼び出している。
がしかし、毎回インスタンスを作るってのはまあメモリとか処理速度とかが犠牲になるわけだ。
//この例ではそれがボトルネックになることはないだろうから、この実装もそれはそれでありだろう。
//Nullオブジェクトパターンに近いかな。
仕様としては、"PARAM_KEY"にオブジェクトがない場合nullを返す、という方が自然だと考えることもある。
GetParamHashがnullを返しうるのなら、呼び出し元(RemoveSessionParam)は返り値がnullかどうかをチェックする必要がある。
もしnullならContainsKeyの呼び出しも当然失敗(例外が発生)するからだ。
この場合上のパターンとは違って呼び出し元が返り値のチェックをしなければならないという制約がかかるが、
代わりにわざわざ無駄なインスタンスを生成する必要がなくなるというメリットがある。
もう一つ重要なのは、最初のパターンでは呼び出し元が返ってきたHashtableが果たして"PARAM_KEY"にあったのか新しく作られたものなのか判断できないことだ。
例えばこの返り値に新しくキーと値を入れて"PARAM_KEY"に「入れたつもり」になってしまう可能性がある。
もちろん、新しく作って返されたHashtableの場合は"PARAM_KEY"とは別インスタンスになるのだから、"PARAM_KEY"には入らない。
ま、
> Hashtable table = new Hashtable();
> を
> if (objPara != null)
> の後に書けば、Sessionにキーが見つからなかったときに
> 余計なインスタンスを作成せずに済む・・・ということでよろしいでしょうか?
これは最初のパターンにするにしても妥当な改造だろうね。
0850844
2006/01/29(日) 01:48:15こんなに遅い時間に何度も分かりやすく丁寧に解説していただいて、大変感謝しております。
いただいたレスを宝物にして勉強します。
ありがとうございました。
0851デフォルトの名無しさん
2006/01/29(日) 12:42:55を使おうと思ったんですが、string型をどうやって文字列のポインタにしたものか
よくわかりません。
Marshalとか使うしかないんですか?
0852デフォルトの名無しさん
2006/01/29(日) 14:08:46string ss = "文字列";
IntPtr lpsz = Marshal.StringToHGlobalAnsi(ss);
SendMessage(hWnd, WM_SETTEXT, 0, (uint)lpsz);
でいけた
0853デフォルトの名無しさん
2006/01/29(日) 14:55:18もしくは参考になるサイトなどなんでも
0854デフォルトの名無しさん
2006/01/29(日) 15:29:42サンクス。試してみます。.NETなんですが、これってセキュリティーパーミッション
いじくらないと使えないっすよね。やったことないんで、ちょっち調べてみます。
0855デフォルトの名無しさん
2006/01/29(日) 15:48:35Marshal.StringToHGlobalAnsi(ss).ToPointer()
とかにしなければオッケーだった。
サンクスです。ネットで検索しても例が殆どないんで、めっちゃ悩んでた。
0856デフォルトの名無しさん
2006/01/29(日) 21:12:520857デフォルトの名無しさん
2006/01/29(日) 21:48:51間に削ってた。 _| ̄|○
0858デフォルトの名無しさん
2006/01/29(日) 22:41:35この後ってDeleteObjectは必須なのでしょうか?
0859デフォルトの名無しさん
2006/01/29(日) 22:43:480860デフォルトの名無しさん
2006/01/29(日) 23:38:50リークしてなきゃ今後もリークしない保障がありますか?
0861デフォルトの名無しさん
2006/01/30(月) 00:22:38GDI ビットマップ オブジェクトが使用するメモリを解放するために、DeleteObject を呼び出す必要があります。
とMSDNに書いてあるが。
0862デフォルトの名無しさん
2006/01/30(月) 00:36:24MSDNに氏ねと書いてあったら潔く氏ぬのか!
……って一瞬思っちゃったゴメンorz
0863デフォルトの名無しさん
2006/01/30(月) 08:31:16面白かったw
0864デフォルトの名無しさん
2006/01/30(月) 10:52:00やってみりゃわかる。
DeleteObjectしないと物凄いメモリリークを起こすぞ。
0865デフォルトの名無しさん
2006/01/30(月) 20:56:440866デフォルトの名無しさん
2006/01/30(月) 21:20:210867デフォルトの名無しさん
2006/01/30(月) 21:28:280868デフォルトの名無しさん
2006/01/30(月) 22:21:18DeleteObjectを知らない人はDeleteObjectを使うようなコードを書いてはならない。
0869デフォルトの名無しさん
2006/01/31(火) 00:41:32表示してるツリービューみたいなコンポーネントないですかね?
自分で作れるんなら作りますが如何せん
どこをどうすればいいのか分からないので・・・
TreeNodeを継承したコントロール作って
カスタム描画→ツリービューへぶち込みでいけますか?
0870デフォルトの名無しさん
2006/01/31(火) 00:55:28それならTreeView.ImageListとTreeNode.ImageIndexでいけるけど。
0871デフォルトの名無しさん
2006/01/31(火) 00:57:46イメージではなくテキストを2行表示したいんです。
0872デフォルトの名無しさん
2006/01/31(火) 01:19:002.0ならDrawModeプロパティで簡単にできるけど、1.0/1.1だとめんどくさそうだな。
0873デフォルトの名無しさん
2006/01/31(火) 22:02:170874デフォルトの名無しさん
2006/01/31(火) 22:05:48使い終わったらBitmap.UnlockBits
0875デフォルトの名無しさん
2006/01/31(火) 23:04:21使い方間違ってる気がする
誰か使い方教えてください
0876デフォルトの名無しさん
2006/01/31(火) 23:08:48大体サンプルならちょっと検索すれば出てくるだろ。
0877デフォルトの名無しさん
2006/01/31(火) 23:11:36int i, j, ofs, bw;
byte r, g, b;
bmp = new Bitmap(256, 256, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
BitmapData BD;
BD = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), System.Drawing.Imaging.ImageLockMode.ReadWrite, bmp.PixelFormat);
bP = BD.Scan0;
r = 20;
g = 40;
b = 60;
bw = BD.Stride / BD.Width;
for (i = 0; i < bmp.Width; i++)
{
for (j = 0; j < bmp.Height; j++)
{
ofs = BD.Stride * i + j * bw;
Marshal.WriteByte(bP, ofs + 0, b);
Marshal.WriteByte(bP, ofs + 1, g);
Marshal.WriteByte(bP, ofs + 2, r);
}
}
bmp.UnlockBits(BD);
pea.Graphics.DrawImage(bmp, 0, 0, bmp.Width, bmp.Height);
大体こんな感じ。どっかのサイトをほぼそのままパクったんですけど。
0878デフォルトの名無しさん
2006/01/31(火) 23:34:58まるでCみたいなコードだなしかし。
4バイト境界考慮して無かったりと微妙。
0879デフォルトの名無しさん
2006/02/01(水) 01:09:14>まるでCみたいなコードだなしかし。
すいません。もともとVBソースを即興で変換しただけなんで。
>そのままコピペしただけでも全ピクセルにSetPixelするより6〜8倍早かったが。
おかしいな。何秒くらい表示にかかります?
上のソースで5秒くらい。SetPixelで4秒くらいなんですけど。うちの環境で。
0880デフォルトの名無しさん
2006/02/01(水) 01:27:211000x1000だと3000ms/520ms程度。
0881デフォルトの名無しさん
2006/02/01(水) 01:59:44VC#から実行してちゃだめなんですね。
出来上がった実行ファイルを起動したらちゃんと行きました。
0882デフォルトの名無しさん
2006/02/01(水) 12:53:06http://junki.main.jp/csgr/002ColorDataAccess1.htm
0883デフォルトの名無しさん
2006/02/01(水) 23:31:57どういう風に書くもんなんですか?
0884デフォルトの名無しさん
2006/02/01(水) 23:36:32ループ回せば良いんじゃね?
抽象的過ぎると答えづらい。
0885デフォルトの名無しさん
2006/02/02(木) 00:04:13つまり、メインループは大本ダイアログ起動して行きっぱなしだし、大本ダイアログは
イニシャライズが終わったらイベント待ちで、要はアイドルループはどこでやってる
んだろうかと。
0886デフォルトの名無しさん
2006/02/02(木) 00:05:090887デフォルトの名無しさん
2006/02/02(木) 00:11:19メッセージループがどう実装されているかってこと?
ループの中で呼び出すGetMessage関数がメッセージが来るまで待機するんだけど。
0888デフォルトの名無しさん
2006/02/02(木) 00:15:19static class Program
{
/// <summary>
/// アプリケーションのメイン エントリ ポイントです。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
メインはこんなんで、ループしてるとこがどこにもなくて。
0889デフォルトの名無しさん
2006/02/02(木) 00:20:210890デフォルトの名無しさん
2006/02/02(木) 00:25:52これ使えるのかどうかわかんないんですが、解説ではアプリの処理が完了した時に
呼ばれるとだけあって、ポーリングには使えなさそうだったんで。
あと、これ使うとしたらデリゲートで呼び出してもらうんですか?
0891デフォルトの名無しさん
2006/02/02(木) 00:41:060892デフォルトの名無しさん
2006/02/02(木) 01:05:46まあ、タイマセットして定期的に呼び出してもらう方法もわかんないんですが、
タイマ関係はまだ全然見てないんでもう少しいろいろ調べてみます。
0893デフォルトの名無しさん
2006/02/06(月) 02:02:23の代わりに
Form1 form = new Form1();
form.Show();
ってして止まらないようにして、メインループ作ってる人がいたな。
0894デフォルトの名無しさん
2006/02/06(月) 02:08:45これだ↓。
static void Main() {
Form1 form = new Form1();
form.Show();
while (form.Created) {
// フレーム処理
Application.DoEvents();
}
}
これにどんな副作用があるのかは分からない。
0895デフォルトの名無しさん
2006/02/06(月) 03:28:140896デフォルトの名無しさん
2006/02/06(月) 14:29:350897デフォルトの名無しさん
2006/02/07(火) 22:04:35MSDNには最小タイムアウトは10秒とか書いてあるんですが
それより短くしたい(意図的に閉じたい)場合はどうすればいいでしょうか?
0898デフォルトの名無しさん
2006/02/08(水) 10:40:59別なフォームをShowDialogとかしてるのをよく見る。これはいいとおもう?
俺的にはメインフォームがアイドルになった時点で出すものだと思うんだけど。
0899デフォルトの名無しさん
2006/02/08(水) 15:13:200900デフォルトの名無しさん
2006/02/12(日) 23:39:300901デフォルトの名無しさん
2006/02/12(日) 23:40:530902デフォルトの名無しさん
2006/02/15(水) 21:17:51test[0] = 11;
test[1] = 13;
test[2] = 15;
Console.WriteLine("{0}", test[0]);
int* a;
a = (int*)test[0];
a = a + 1;
上のプログラムで結果が
11
15
となるのは、そんなもんなのでしょうか?
Console.WriteLine("{0}", (int)a);
0903修正
2006/02/15(水) 21:18:39test[0] = 11;
test[1] = 13;
test[2] = 15;
Console.WriteLine("{0}", test[0]);
int* a;
a = (int*)test[0];
a = a + 1;
Console.WriteLine("{0}", (int)a);
上のプログラムで結果が
11
15
となるのは、そんなもんなのでしょうか?
0904デフォルトの名無しさん
2006/02/15(水) 21:29:0611バイト目からInt32一つ分先に進めれば15バイト目になるのは当然だな。
0905デフォルトの名無しさん
2006/02/15(水) 21:31:34初めて見たんですけど「int*」これって何ですか?
0906903
2006/02/15(水) 21:42:05何か思い違いしてるなぁ
誰か指摘して
0907デフォルトの名無しさん
2006/02/15(水) 21:47:09int[] test = {11, 13, 15};
fixed (int* a = test) {
Console.WriteLine("{0}", *(a + 1));
}
・.NETの配列をポインタにするには fixed ステートメントを使わないといけない
・ポインタが指す値を取得するのには * 演算子が必要。
・このサンプルで a は変更不可なので、どうしてもこの値を変更したいのなら別ポインタにコピーする。
0908903
2006/02/15(水) 21:49:00一生下僕と呼んでください
0909デフォルトの名無しさん
2006/02/15(水) 21:53:39a = a + 2; にしたら19
a = a + 3; にしたら23
long* a; にしたら8ずつ増える。
バイト数がそのままtest[0]の中の値に足されてた。
0910デフォルトの名無しさん
2006/02/15(水) 22:23:12少なくとも初心者のうちは。
C++ならいいけど。
0911デフォルトの名無しさん
2006/02/15(水) 23:10:491.1と2.0どっちからはじめたほうがいいでしょうか?
2.0をダウンロードして本屋にいってみるとまだ売ってないみたいなんです
新しいほうがいい気もするし本を買うのだったらバージョンを合わせたほうがいい気もするし
迷っています
先輩方のアドバイスよろしくおねがいしますm(_ _)m
0912デフォルトの名無しさん
2006/02/15(水) 23:14:552.0
0913デフォルトの名無しさん
2006/02/15(水) 23:21:34widthやheightはintとuintとどちらを使うべきですか?
気分的にはuint何ですけどいろんなサイトや本では
intが使用されているのであわせるべきかなぁと思ったり。
0914デフォルトの名無しさん
2006/02/15(水) 23:27:13.NETにおいては問題なかろうけど。
0916デフォルトの名無しさん
2006/02/16(木) 00:05:472.0のがいいのはおれも同じくだけど。
0917デフォルトの名無しさん
2006/02/16(木) 02:40:52正規表現で、ある文字(日本語)の前までを抽出する方法はありますか?
Matchメソッドを2回使わないとだめでしょうか?
例えば、入力文字列の中で「12,345円」という形式の文字列を抽出したいときは
Regex reg = new Regex(@"[,0-9]+円");
とすれば、数字(金額)の部分だけ抽出できますが、「円」を抜いた
数字だけを一発で抽出したいのです。
円ではなく、英数字のaの場合、Regex reg = new Regex(@"[,0-9]+[^a]");
とすればいいのですが、日本語の場合それもできません。
どのようにすればスマートに処理できますか?よろしくお願いします。
0918デフォルトの名無しさん
2006/02/16(木) 02:56:47Regex regex = new Regex("([,0-9]+)円");
Console.WriteLine(regex.Match("12,345円").Groups[1].Value);
・名前付きグループ化
Regex regex = new Regex("(?<price>[,0-9]+)円");
Console.WriteLine(regex.Match("12,345円").Groups["price"].Value);
・ゼロ幅先読みアサーション
Regex regex = new Regex("[,0-9]+(?=円)");
Console.WriteLine(regex.Match("12,345円").Value);
0919デフォルトの名無しさん
2006/02/16(木) 02:58:57> 円ではなく、英数字のaの場合、Regex reg = new Regex(@"[,0-9]+[^a]");
> とすればいいのですが、日本語の場合それもできません。
いや、すれば良いんだが。
0920デフォルトの名無しさん
2006/02/16(木) 03:10:41ありがとうございます
>>918
ありがとうございます!しかも3つも
目から鱗ですた
>>919
Regex reg = new Regex(@"[,0-9]+[^円]");
を試してみたらぜんぜんだめぽかったので、[^ ]の中は
日本語NGと思いこみましたがいけるケースもあるんですか。難しい。。
0921デフォルトの名無しさん
2006/02/16(木) 05:21:23そもそも金額を示す部分の数字を抜き出したいってことなら、
Regex(@"[,0-9]+[^円]");
ではダメだろ。これだと"12,345円"を数字から全て弾いてしまう。
数字 + 円以外の一文字部分って意味になる。
0922デフォルトの名無しさん
2006/02/16(木) 10:30:41> これだと"12,345円"を数字から全て弾いてしまう。
の意味が良く分からんが、
Console.WriteLine(Regex.Match("これは12,345ドル", @"[,0-9]+[^円]"));
だと「12,345ド」がマッチしちゃうからダメよんってことが言いたいのか?
0923921
2006/02/16(木) 11:31:20「タマゴは1パック120円です」
を [,0-9]+[^円] でマッチさせた場合、
「1パ」はヒットするが肝心の「120円」はヒットしないよ。
ってことです。「円」だけ取り除いた「120」が欲しいって
ことだったんでしょ。
0924921
2006/02/16(木) 11:36:27答えは>>918氏のところででている。俺は、
>>920
> 日本語NGと思いこみましたがいけるケースもあるんですか。難しい。。
のところ、そもそも正規表現が間違ってんじゃんっていいたかったわけ。
0925デフォルトの名無しさん
2006/02/16(木) 12:08:17正規表現が間違ってるのは確かにその通りなんだが、
120円の120にはヒットするでしょ。「0」は「円」じゃないから。
1円の1にはヒットしないけど。
0927デフォルトの名無しさん
2006/02/16(木) 12:57:100928デフォルトの名無しさん
2006/02/16(木) 13:58:350929デフォルトの名無しさん
2006/02/16(木) 17:42:43どの程度実力が付けばここでタメ口で質問してよくなるでしょうか?
0930デフォルトの名無しさん
2006/02/16(木) 17:45:390931デフォルトの名無しさん
2006/02/16(木) 17:55:58コミュニケーションの基本でしょ。
0932デフォルトの名無しさん
2006/02/16(木) 21:05:03頭に「this.」をつけますか?
うちのプロジェクトではつけるのを強制されてます・・・
0933デフォルトの名無しさん
2006/02/16(木) 21:09:13@ITにも一昨日にスレが立ってたな(そっちではMeだが)
ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=28369&forum=7&32
0934デフォルトの名無しさん
2006/02/16(木) 21:10:42インテリセンス効くし。
0935デフォルトの名無しさん
2006/02/16(木) 21:20:360936932
2006/02/16(木) 21:40:37リンク先でもつける派が多いですね。
分かりやすい、バグが入りにくいのはその通りだと思うのですが、
見づらいんだよな・・・
メソッドが長いとメリットのほうが大きいと思うけど、
昨今のメソッド短めコーディングだとメリット小さいと思う。
けど少数派か。。。
0937デフォルトの名無しさん
2006/02/16(木) 21:46:48グローバルは :hoge で。インテリセンス目的もあるが、何処に
所属するのか分かると、メンテナンスもし易いと思う。
フィールドをやっぱアクセサにするか、という時など特に。
0938デフォルトの名無しさん
2006/02/16(木) 21:51:310939デフォルトの名無しさん
2006/02/16(木) 21:52:50自身のクラスで作ったものには付けてないですね。
0940デフォルトの名無しさん
2006/02/16(木) 21:54:11プロパティっていう機能は何の利点があるんですか?
メンバー変数をpublicと宣言するのとどう違うのですか
0941デフォルトの名無しさん
2006/02/16(木) 21:57:260942デフォルトの名無しさん
2006/02/16(木) 23:29:210943デフォルトの名無しさん
2006/02/16(木) 23:49:53実際メンバ変数に直接関係ないプロパティーも多い。
0944デフォルトの名無しさん
2006/02/17(金) 00:25:03WMPに取られてしまうのですが、ContextStripへ渡す方法はないでしょうか?
WMPのKeyPressイベントにそれなりの処理を書いても
F9などのキーでは反応してくれませんでした。
0945デフォルトの名無しさん
2006/02/17(金) 01:03:15ActiveXが絡むとややこしいな。
Form1(1かどうかは知らんけど)にIMessageFilterを実装して、
Form1のコンストラクタでApplication.AddMessageFilter(this)。
PreFilterMessageでは、m.Msgが0x100から0x108まで(だと思う)の時にthis.WndProc(ref m)してtrueを返す。
それ以外の場合はfalseを返す。
という乱暴なのはどうだ。
0946デフォルトの名無しさん
2006/02/17(金) 13:34:00どうすればいいのでしょうか?
Heightプロパティがなくて困っています
0947デフォルトの名無しさん
2006/02/17(金) 15:00:14DataGridViewでも使え
0948デフォルトの名無しさん
2006/02/17(金) 17:33:00詳しいことはよく分かりませんが、とりあえずやってみます。
>>946
DetailモードだとStateImageListにImageList設定して
そのImageListのHeight変更すればいけたような・・・
0949デフォルトの名無しさん
2006/02/17(金) 21:39:01using( ){ }で、自動的にdispose()したいと考えているのですが・・・
どなたか教えてください。m(・ω・`m)
0950デフォルトの名無しさん
2006/02/17(金) 21:45:200951デフォルトの名無しさん
2006/02/17(金) 21:56:27外部とやりとりするようなクラスの他は大抵GCに任せとけばいいけど
0952デフォルトの名無しさん
2006/02/17(金) 23:08:42>>948
やってみます
0953デフォルトの名無しさん
2006/02/17(金) 23:13:28public class myClass : IDisposable
でも、
インターフェイス メンバ 'System.IDisposable.Dispose()' を実装しません。
と、怒られた... (´_`ヽ)
0954デフォルトの名無しさん
2006/02/17(金) 23:18:520955デフォルトの名無しさん
2006/02/18(土) 00:39:37>インターフェイス メンバ 'System.IDisposable.Dispose()' を実装しません。
Dispose()を実装すればいいんでない?
と勘で言ってみるどうか?
0956デフォルトの名無しさん
2006/02/18(土) 01:00:48PreFilterMessageでWM_KEYDOWNからWM_KEYLASTまでを
判別して WndProc(ref m) するようなコードは書いたんですが
いまいち WndProc(ref m) の意味が分かりません。
WndProc(ref m) しても、ショートカットキーが効かない・・・
どっかを取り違えてるんだろうけど・・・
0957デフォルトの名無しさん
2006/02/18(土) 01:21:17public class myClass : IDisposable
{
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
}
0958デフォルトの名無しさん
2006/02/18(土) 01:23:120959デフォルトの名無しさん
2006/02/18(土) 02:12:28ごめん、ContextMenuStripで試してなかった。
WndProcじゃなくてPreProcessMessageの方を呼ばないと駄目だな。
0960デフォルトの名無しさん
2006/02/18(土) 02:24:18できました。ありがとうございます。
しかしこの辺異常に複雑になってますね・・・
0961デフォルトの名無しさん
2006/02/19(日) 22:48:41場合に、受信ボタンを押して、データを受信する時に、行が多い場合スクロール
アウトしてしまうのですが、最後に受信した文字列が見えるようにしたいのですが、
どのようにすればよいでしょうか?
--- Form1 ---
public partial class Form1 : Form
{
Form2 f2 = new Form2();
private void button1_Click(object sender, EventArgs e)
{
f2.Show();
}
private void button2_Click(object sender, EventArgs e)
{
this.richTextBox1.Text = f2.Date;
}
}
--- Form2 ---
public string Date
{
get
{
return richTextBox1.Text;
}
}
0962デフォルトの名無しさん
2006/02/19(日) 22:51:440964デフォルトの名無しさん
2006/02/20(月) 07:25:380965デフォルトの名無しさん
2006/02/20(月) 10:16:28SDKのADO.net(system.data)あたりを読むべし
質問する前に少しは調べなよ
0966デフォルトの名無しさん
2006/02/20(月) 12:32:40http://www.amazon.co.jp/exec/obidos/ASIN/4891003170/
をじっくり読んで初めて合点がいった。
ADO.NET関連のコントロールはJTableに勝るとも劣らない
くらい難しいと思った。
0967デフォルトの名無しさん
2006/02/22(水) 22:59:540968デフォルトの名無しさん
2006/02/22(水) 23:19:300969デフォルトの名無しさん
2006/02/23(木) 10:31:08このような少数のデータの場合、DataGridViewかListViewのどちらを使用したら良いでしょうか?
ちなみに定期的に値を変更する必要があります。
実行速度(少数データなので大して変わらないと思いますが…)、メモリの使用具合、
プログラム的難度の観点から見て、アドバイスお願いします。
0970デフォルトの名無しさん
2006/02/23(木) 10:59:270971デフォルトの名無しさん
2006/02/23(木) 12:17:53メモリの使用具合は、わからんです。
難度はかわらんです。
ただ、ListViewはソート機能を使いたい場合、ああだこうだです。
0972デフォルトの名無しさん
2006/02/23(木) 13:02:540973デフォルトの名無しさん
2006/02/23(木) 23:58:20編集処理やDataSet系使うときだけDataGridView
0974デフォルトの名無しさん
2006/02/25(土) 08:42:14いろんなアプリで使われてるコンポーネントなのに(´・ω・)
0975デフォルトの名無しさん
2006/02/25(土) 08:46:210976デフォルトの名無しさん
2006/02/25(土) 08:48:050977974
2006/02/25(土) 08:51:450978デフォルトの名無しさん
2006/02/25(土) 18:18:29斉藤清六さんですか?
0979デフォルトの名無しさん
2006/02/26(日) 16:36:020980デフォルトの名無しさん
2006/02/26(日) 16:36:550981デフォルトの名無しさん
2006/02/26(日) 16:48:090982デフォルトの名無しさん
2006/02/26(日) 16:55:07えっと、どゆこと?
Marshal.Copy←この関数でint*をint[]にできるってこと?
とりあえず調べてみます。
0983デフォルトの名無しさん
2006/02/26(日) 17:13:37int*の値をint[]にコピーすることができました
ありがとうございます。
ついでに質問ですが、この関数は
int*→int[]
int[]→int*
だけですか?
int*→int*をするには
int*→int[]→int*
の2段階が必要ですか?
0984デフォルトの名無しさん
2006/02/26(日) 17:15:10それがいやなら CopyMemory を DllImport 。
0985デフォルトの名無しさん
2006/02/26(日) 23:28:08public int this[int, x,int y,int z]
と
public int* this[int, x,int y,int z]
は同じクラス内では宣言できないのでしょうか。
0986デフォルトの名無しさん
2006/02/26(日) 23:48:230987デフォルトの名無しさん
2006/02/27(月) 00:02:340988デフォルトの名無しさん
2006/02/27(月) 00:43:55おとなしくC++使ってた方がいい。
0989デフォルトの名無しさん
2006/02/27(月) 05:33:40それも程度によると思うけどw
ポインタごりごり弄るならC++のがいいのは確かだね
0990デフォルトの名無しさん
2006/02/27(月) 14:28:01何かお勧めのエディタや参考書などありませんか?
0991デフォルトの名無しさん
2006/02/27(月) 15:10:030992デフォルトの名無しさん
2006/02/27(月) 18:08:20インストールコンポーネントを読み込んでいます。この処理には1〜2分かかる可能性があります。
って表示されたまま永久放置なんだけど、なんで?
常駐ソフトもサービスも全部切っても先に進まないんだけど・・
0993デフォルトの名無しさん
2006/02/27(月) 18:18:250994デフォルトの名無しさん
2006/02/27(月) 18:42:20C♯相談室 Part29
http://pc8.2ch.net/test/read.cgi/tech/1138925245/
どうもありがとうございました
0996993
2006/02/27(月) 19:14:490997デフォルトの名無しさん
2006/02/27(月) 22:35:05半日がんばりましたがよく分かりません
使い方を教えてください(使うかどうかは別にして、今後の参考に)
0998デフォルトの名無しさん
2006/02/27(月) 23:18:07今うまくいきました。
ご迷惑おかけしました。
新スレはないんですか?
0999デフォルトの名無しさん
2006/02/27(月) 23:48:01C♯相談室 Part29
http://pc8.2ch.net/test/read.cgi/tech/1138925245/
1000デフォルトの名無しさん
2006/02/27(月) 23:54:5710011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。