トップページ⇒tech
1001コメント285KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/10/12(火) 22:38:49
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からない場合など、勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ
ふらっとC#,C♯,C#(初心者用) Part63
http://hibari.2ch.net/test/read.cgi/tech/1285048678/

■関連スレ
C#, C♯, C#相談室 Part62
http://hibari.2ch.net/test/read.cgi/tech/1284775031/
VB.NET質問スレ(Part35)
http://hibari.2ch.net/test/read.cgi/tech/1284423653/
くだすれC++/CLI(初心者用)part2
http://pc12.2ch.net/test/read.cgi/tech/1268613679/

■備考
コードの量が多い場合は下記サイトを使うなどしたほうがいいかも
http://ideone.com/
コードを貼り付けてRun codeのチェックをはずしてsubmitボタンを押すと
コードを鯖側にアップして専用のアドレスが発行されます。

直接貼る場合は下記サイトなどを利用してhtmlエンコードした方が
インデントも残って見やすいです
http://kawama.jp/php/encode_html.php
0159デフォルトの名無しさん2010/10/17(日) 18:45:32
>>157 に一票。

どうしても作りたいなら InputMan 買えば?
それか、DataGrid, DataForm。
0160デフォルトの名無しさん2010/10/17(日) 18:53:17
>>158
え、そこ!?
真面目に答えたおれ超KYじゃないか
0161デフォルトの名無しさん2010/10/17(日) 19:32:54
>>159
InputManでテキストデータ編集できるんですか?

Accessクエリでも良いのですが、結構複雑なことを
やりたいんです。
ズバリ自動化やWaha!TransformerのようなEAIツールのような
感覚でデータ編集ジョブを作ってそれをC#で呼び出すような
ことが出来ると良いのですが・・

今は、Accessでクエリ作って、SQLビューでSQL文をコピって
SQLサーバーやOracleに貼り付けして使用なんて事もしているんですが
ある程度複雑なことをやろうとすると手詰まりになることもあるので・・・
0162デフォルトの名無しさん2010/10/17(日) 19:48:46
あきらめろよ
0163デフォルトの名無しさん2010/10/17(日) 21:16:27
川俣がまた何か言ってます
0164デフォルトの名無しさん2010/10/17(日) 21:29:23
何か言ってますね
0165デフォルトの名無しさん2010/10/17(日) 21:31:45
>>161
もうちょっとやりたいことをまとめてから質問した方が良いよ
情報小出しにされると解答するのめんどくさくなるから
0166デフォルトの名無しさん2010/10/17(日) 23:30:15
>>153
01671662010/10/17(日) 23:32:12
すいませんミスです
>>153ありがとうございました!理想の動きができました!
0168デフォルトの名無しさん2010/10/17(日) 23:34:06
アンカーだけ書く奴って時々いるけど、
こういう奴の思考回路って意味不明な質問文書く奴と同じなんだろうな。

基本、自分を客観視できないというか、他人から自分の言動がどう見えるか
多分想像する能力が欠如しまくってるとしか思えない。
0169デフォルトの名無しさん2010/10/17(日) 23:36:53
>>168
あわてんぼさん
0170デフォルトの名無しさん2010/10/17(日) 23:38:43
>>168
早まったなw
0171デフォルトの名無しさん2010/10/17(日) 23:38:48
やっちまったなw
0172デフォルトの名無しさん2010/10/17(日) 23:41:18
>>168みたいな奴って時々いるけど、
こういう奴の思考回路って意味不明な質問文書く奴と同じなんだろうな。

基本、自分を客観視できないというか、他人から自分の言動がどう見えるか
多分想像する能力が欠如しまくってるとしか思えない。
0173デフォルトの名無しさん2010/10/17(日) 23:42:20
>>172
悪かったからそう苛めないでよw
0174デフォルトの名無しさん2010/10/17(日) 23:43:33
仕方がない、許したる。
0175デフォルトの名無しさん2010/10/17(日) 23:44:39
こうして>>168は書き込み前リロードのスキルを身につけたのであった
0176デフォルトの名無しさん2010/10/18(月) 00:00:15
次は172が面白いこと言う番ですね
0177デフォルトの名無しさん2010/10/18(月) 01:28:51
>>174
なんと寛大なお心!
0178デフォルトの名無しさん2010/10/18(月) 01:48:48
ガハハ
0179デフォルトの名無しさん2010/10/18(月) 01:57:48
LINQの勉強したいんだけど、なにかいい題材はない?
0180デフォルトの名無しさん2010/10/18(月) 02:06:07
データベース系でよく見るのは図書管理かな
0181デフォルトの名無しさん2010/10/18(月) 02:10:13
3D 関係だと、頂点とか面とかの数が多くなるから、LINQ が使える。
C# が使えるかどうかは別として。
0182デフォルトの名無しさん2010/10/18(月) 02:12:21
C# から HLSL を生成するんだ!
(注: 本当にやっている人います)
0183デフォルトの名無しさん2010/10/18(月) 02:27:44
>>180
岡崎図書館の館長に土下座して許可取らないと愛知県警に逮捕されるぞw
0184デフォルトの名無しさん2010/10/18(月) 02:36:56
>>180
検索、貸出管理、予約機能があれば十分ですかね
完成したらここに貼りつけてもいいですか?

>>181,182
なんかハードル高くね?間違いなく身長の3倍はある。
0185デフォルトの名無しさん2010/10/18(月) 03:32:58
データベースは自分で作れよw
Dictionaryとかで
0186デフォルトの名無しさん2010/10/18(月) 03:36:29
>>185
DictionaryにしたらLinqの練習にならないんじゃない?
0187デフォルトの名無しさん2010/10/18(月) 03:58:29
データソースを問わないのが LINQ だろ。
0188デフォルトの名無しさん2010/10/18(月) 10:43:46
ttp://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=hello&langpair=en%7Cja

IEで投げるとutf8で返って来るけどC#WebClientで投げると文字化けします。
原因は何でしょうか?
0189デフォルトの名無しさん2010/10/18(月) 10:49:57
フォームアプリケーションで「Hellow World!」が出せるようになったばかりの者です。
めっちゃ基本的過ぎて誰にも聞けないので教えてください。
C#でビルドして出てきたEXEを、他のパソで起動するには、
そのパソにNET Frameworkとかいうのが入ってないと駄目なんですよね?
しかもバージョンが合ってないと駄目なんですよね?
で今のWindows7とかには最初からNET Frameworkは入ってるのですか?XPには入ってませんよね。
0190デフォルトの名無しさん2010/10/18(月) 11:23:03
>>189
入ってないとダメ
バージョンは上位互換があるからとりあえず最新版が入ってればおk
7とVistaは最初から入ってる、XPは入ってない
0191デフォルトの名無しさん2010/10/18(月) 11:26:11
>>188
System.Net.WebClient wc = new System.Net.WebClient();
wc.Encoding = Encoding.UTF8;
string x = wc.DownloadString(new Uri("http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=hello&langpair=en%7Cja "));
0192デフォルトの名無しさん2010/10/18(月) 11:45:53
>>190
どうもありがとうございました!スッキリしました!
0193デフォルトの名無しさん2010/10/18(月) 11:56:24
>>191
ありがとうございます
0194デフォルトの名無しさん2010/10/18(月) 13:04:56
>>192-193
いえいえ
0195デフォルトの名無しさん2010/10/18(月) 13:22:18
>>194
お前は答えてないだろw
と毎回突っ込みたくなる
0196デフォルトの名無しさん2010/10/18(月) 15:29:53
どうしてわかった?
0197デフォルトの名無しさん2010/10/18(月) 15:32:32
>>180
早速作ってみた
http://ideone.com/gUrO6

やたら長くなってしまって申し訳ないんだけど、
もし暇な人いたらレビューしていただけませんか?
0198デフォルトの名無しさん2010/10/18(月) 17:39:41
乙
Linqの勉強にしてはLinq以外を作りすぎな気もするが・・・
0199デフォルトの名無しさん2010/10/18(月) 17:46:11
学校の課題で褒められたから公開しよ!
↓
そうだ!自分でネタふりしてその回答提示でやればもっと凄いと思われるお!
0200デフォルトの名無しさん2010/10/18(月) 18:06:57
>>199
そうだね、そういうつもりじゃなかったんだけど、
見返してみたらそのまんまでなんか嫌になってきた
0201デフォルトの名無しさん2010/10/18(月) 18:33:26
>>198
Linqは横断的な技術で、コレクションやデータベース、
スレッドが縦糸とするとLinqは横糸的な位置づけ。
お題を決めたらLinq以外が膨らむのはしょうがないと思うよ。
0202デフォルトの名無しさん2010/10/18(月) 18:35:26
コード評価の前に人が評価されるなんて
ここは怖いインターネットですね^^;
0203デフォルトの名無しさん2010/10/18(月) 18:38:20
>>199
こいつ性格悪すぎワロタw
0204デフォルトの名無しさん2010/10/18(月) 21:46:09
ideoneおちてるな
0205デフォルトの名無しさん2010/10/20(水) 10:30:13
ファイルのレジュームでレジューム可能ならレジュームを不可能なら最初からダウンロードしたいのですが
常に最初からのダウンロードになってしまいます。m_FileStream.Lengthがファイルの長さだと思うので
特に間違ってはいないように思うのですが何処がおかしいのでしょうか?。

m_FileStream = new FileStream(m_path, FileMode.OpenOrCreate, FileAccess.Write);

HttpWebRequest request = (HttpWebRequest)ar.AsyncState;
request.AddRange(m_FileStream.Length);

HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(ar);
if (response.StatusCode != HttpStatusCode.PartialContent)
{
m_FileStream.Seek(0, SeekOrigin.Begin);
}
else
{
m_FileStream.Seek(0, SeekOrigin.End);
}
0206デフォルトの名無しさん2010/10/20(水) 10:34:15
>>205
request.AddRange(m_FileStream.Length);
だと先頭からm_pathのファイルサイズまでってことじゃない?
0207デフォルトの名無しさん2010/10/20(水) 22:10:49
バイト配列に格納されてる値にxor演算をしたいのですが(1つ単位で)
どうやらバイト同士ではxor演算ができないようなので一度int型に入れてから演算し、もう一度バイト配列に入れようと思うのですが・・・

byte[] code;//値が代入されている
byte[] code2;
int ii;
for (i = 0; i < code.Length; i ++)
{
ii = code[i];
ii = ii ^ 0x30;
code2[i] = BitConverter.GetBytes(ii);
}

しかしこれだと「byte[]をbyteに暗黙的に変換できません」と怒られてしまいます
byte配列の1つはbyte型と同じ扱いはできないのでしょうか?

だとしたらどうすればいいですか?
0208デフォルトの名無しさん2010/10/20(水) 22:15:24
BitConverter.GetBytes(int)の戻りをよく見ろ
0209デフォルトの名無しさん2010/10/20(水) 22:17:11
>>207
その例ならiiを普通にbyteにキャストすればいいだけ。
GetBytesなんかループの中で使うな。恐ろしく非効率。
0210デフォルトの名無しさん2010/10/20(水) 22:28:23
>>208-209
ありがとうございます。解決しました。
やっぱ似てるとはいえDelphiとは違いが多いですね;;
0211デフォルトの名無しさん2010/10/20(水) 22:38:03
C#のビット演算や型変換はほぼC言語準拠だから
いくらDelphiと似てるといっても全く関係ない部分でしょ
でも>>207はDelphiと違うからわからないとかいうことではなくてそれ以前の問題な気がするが
0212デフォルトの名無しさん2010/10/20(水) 23:06:41
code2[i] = (byte)(code[i] ^ 0x30);
念のために書いておくけどこれで十分だからね
0213デフォルトの名無しさん2010/10/21(木) 10:41:06
>>210
Delphiでも普通にキャストするだろw
0214デフォルトの名無しさん2010/10/21(木) 11:00:44
C#ではshortやbyte同士の演算結果がintに拡張されるからキャストが必要になるんだよね。
short a, b, c;
a = (short) (b + c);
0215デフォルトの名無しさん2010/10/21(木) 11:59:47
正確には演算結果が拡張されるんじゃなくて拡張してから演算してる
C#に限らず、ごく一般的な動作
0216デフォルトの名無しさん2010/10/21(木) 14:02:03
レジスターに格納するときどうこうという話でなくて名目上の動作の話。
Cの場合short同士の演算結果はあくまでshortで精度の拡張は行われないから
こういうキャストはいらない。
0217デフォルトの名無しさん2010/10/21(木) 14:21:02
Cはintからshortやunsigned charへの代入をキャストなしでできるので
どちらの考え方があってるかは規格書見ないとわからんけど
おそらく計算前に拡張しているでいいと思う。
C#との違いはキャストの要不要の部分だろう。
0218デフォルトの名無しさん2010/10/21(木) 14:38:28
あってるよ
Cでもchar+charでオーバーフローしたりはしない
0219デフォルトの名無しさん2010/10/21(木) 14:43:15
Cの、intより小さい型からintへの汎整数拡張は演算の前に起きる。
キャストが要らないのはintを小さい型の変数に代入するのがエラーではないから。
0220デフォルトの名無しさん2010/10/21(木) 14:46:11
どなたか教えてください。
某雑誌の「一気にわかるC#」という付録を見てサンプルを作ってみたのですが、
記事によると、フォームが開くとき、それをハンドラとして最初にロードされるプログラムを書く、
とあるのですが、記事の通り書いたのですが動いてくれません。
自分なりに調べたところ、フォームのデザイナが自動生成するコード(FormMain.Designer.cs)の中に
必要な一文が抜けてることを発見しました。
「this.Load += new System.EventHandler(this.FormMain_Load);」
なのですが、この一文をデザイナ(というかIDE?)で自動生成させるための操作はどうすればいいのでしょうか?
記事にはそのへんのところが詳しく書いてないのです。
手動で書き足すしかないのでしょうか?
他にも数箇所、抜けてる行があるのですが良く分かりません。orz
0221デフォルトの名無しさん2010/10/21(木) 14:50:27
フォームをダブルクリック
0222デフォルトの名無しさん2010/10/21(木) 15:15:38
なるほど!他のブタンとかのオブジェクトをハンドラにするときと同じなんだ!
ありがとうございました。
0223デフォルトの名無しさん2010/10/21(木) 15:24:35
VC#2010Expで勉強中なのですが、
複数のフォームから参照できる変数はどこに書けば良いのですか?
0224デフォルトの名無しさん2010/10/21(木) 15:27:57
ブタンに引火しないように注意な。
0225デフォルトの名無しさん2010/10/21(木) 15:45:44
>>223
C++やVBでいうところのグローバル変数は.NETには無いので
一番最初にその変数を使うクラス内でメンバ変数として保持しておいて、
別のフォームにはコンストラクタを追加して渡したり:
MyForm form2 = new MyForm("Additional Info");
プロパティ経由で渡したりする:
MyForm form3 = new MyForm();
form3.MyProp = "Additional Info";
0226デフォルトの名無しさん2010/10/21(木) 15:54:50
実質的なグローバル変数はあるよ
internal static class Globals {
 internal string どこからでも参照可能 = "Additional Info";
}
のようにすればどこからでも Globals.どこからでも参照可能 でアクセスできる
褒められたものではないけど初心者なら>>225のような方法よりもわかりやすいし
変に背伸びするより見通しのよいコードになると思う。
0227デフォルトの名無しさん2010/10/21(木) 16:14:55
static class Programの中に変数書いたら他のフォームから見れました。
0228デフォルトの名無しさん2010/10/21(木) 20:21:46
XmlReaderからXmlSerializerに切り替えたら、難読化してるせいで動かなくなってしまった。。。
ここら辺どうしてます?
0229デフォルトの名無しさん2010/10/21(木) 20:28:00
難読化しない
難読化から除外する
0230デフォルトの名無しさん2010/10/21(木) 20:45:14
>>229
あっ、部分的に除外ってできるのか。さんきゅー。
[ObfuscationAttribute(Exclude = true, ApplyToMembers = true)]
0231デフォルトの名無しさん2010/10/21(木) 21:06:07
文字列変数string strが10文字に達していなかったら足りない分だけx(英字のx)で埋めたいのですが、指定した数だけ文字を作り出す関数とかってないですかね
参考書読んでも書いてないんですが・・・
0232デフォルトの名無しさん2010/10/21(木) 21:07:08
String.PadRight or PadLeft
0233デフォルトの名無しさん2010/10/21(木) 21:09:07
>>231
文字を作り出すのなら new String(char, count) も。
参考書より、この手のものはコンストラクタかメソッドか静的メソッドのどれかにあるわけだから
入力補完を眺めるのがいいと思うよ。
0234デフォルトの名無しさん2010/10/21(木) 21:22:02
>>233
理想の動きができました
ありがとうございます
0235デフォルトの名無しさん2010/10/21(木) 21:27:09
>>233は文字列を作り出すならこういうやり方もあるよ」とうことであって
>>231の目的ではPadRightとPadLeftが正解だろ
そのまんま「文字列が指定した文字数に達していなかったら足りない分だけ指定した文字で埋める」メソッドだ
0236デフォルトの名無しさん2010/10/22(金) 07:34:12
ReactiveExtensionsって何?おいしいの?
0237デフォルトの名無しさん2010/10/22(金) 07:48:04
>>236
イベントにたいする処理や非同期呼び出しをLINQ使って簡単に処理出来るようになるよ。
0238デフォルトの名無しさん2010/10/22(金) 08:15:49
まだ始めたばかりのものなのですが、
フォームアプリのHowToが知りたくて、「"C#" フォームアプリケーション」でググったのですが、
「Hello World!」入門サイトか、逆にやたら難しい研究サイトみたいなのしか出てこないですね?
中間くらいの難易度で実用的なアプリのサンプルと、
そのコードの解説をしてるようなサイトか参考書を教えて欲しいです。お願いします。
0239デフォルトの名無しさん2010/10/22(金) 08:22:40
>>238
@ITの.NET Tipsとかはどう?
0240デフォルトの名無しさん2010/10/22(金) 08:23:57
>>238
2ch 専用ブラウザの作り方
http://cs2ch.blog123.fc2.com/blog-entry-1.html
0241デフォルトの名無しさん2010/10/22(金) 11:36:48
>>239
こんな大きなサイトがあったのですね!参考になります。ありがとうございました。
0242デフォルトの名無しさん2010/10/22(金) 12:25:23
>>238
入門と@ITの中間くらい。わかりやすい。実用ではない
ttp://ufcpp.net/study/csharp/index.html
0243デフォルトの名無しさん2010/10/22(金) 14:12:22
( ^ω^)おっおっ
0244デフォルトの名無しさん2010/10/22(金) 16:16:00
(´・ω・`)…
0245デフォルトの名無しさん2010/10/22(金) 16:58:35
ω・`)…
0246デフォルトの名無しさん2010/10/22(金) 17:05:16
・`)…
0247デフォルトの名無しさん2010/10/22(金) 17:06:22
`)…
0248デフォルトの名無しさん2010/10/22(金) 23:34:57
…
0249デフォルトの名無しさん2010/10/23(土) 00:05:24
Form1でボタンを押すとForm2が開くようにしたいのですが、

Form2 frm2 =new Form2();
frm2.Show();

だとボタンを押す事に別のForm2が開いてしまいます。
一つだけ開けるようにするにはどうしたらいいですか。
0250デフォルトの名無しさん2010/10/23(土) 00:08:00
private Form2 frm2;
private void button1_Click(object sender, EventArgs e) {
 if (frm2 == null) {
  frm2 = new Form2();
  frm2.FormClosed += (s, e1) => frm2 = null;
  frm2.Show();
 }
}
0251デフォルトの名無しさん2010/10/23(土) 00:08:58
ボタンを押せなくする
0252デフォルトの名無しさん2010/10/23(土) 00:10:26
Form2 frm2;
これをForm1のどこからでも参照できる位置に置いて

frm2 =new Form2();
この部分をLoadイベントもしくはShowイベントなどで一度だけ呼ばれるようにする
0253デフォルトの名無しさん2010/10/23(土) 00:34:02
>>250,252
有り難うございます。
0254デフォルトの名無しさん2010/10/23(土) 00:35:04
>>249
シングルトンパターンの応用でいいでしょ。
Form2のコントスラクタをprivateにして(この場合静的クラスは不可)、
こんなメソッドを作ればOK.

private static Form2 _instance;
public static void ShowInstance()
{
  if (_instance == null)
  {
    _instance = new Form2();
    _instance.FormClosed += _instance_Closed;
  }
  _instance.Show();
}
0255デフォルトの名無しさん2010/10/23(土) 00:38:46
>>251に一票入れたいのに無視されててどうしたものかと思案中
0256デフォルトの名無しさん2010/10/23(土) 00:40:03
>>255
それでもいいけどボタンを再度おせるような状況も考えないといけないからなあ
0257デフォルトの名無しさん2010/10/23(土) 00:43:41
一つしか開かないって言ってるんだから
ボタンを再度押せるような状況考えてやっても
大きなお世話だろうけど、普通はシングルトンだろうな
0258デフォルトの名無しさん2010/10/23(土) 00:45:58
ボタン押したらForm2をアクティブにさせるべきだろう
■ このスレッドは過去ログ倉庫に格納されています