5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

C#, C♯, C#相談室 Part64

1 :デフォルトの名無しさん:2011/01/11(火) 17:23:41
前スレ
C#, C♯, C#相談室 Part63
http://hibari.2ch.net/test/read.cgi/tech/1289733048/

Visual Studio 2010 Express
http://www.microsoft.com/japan/msdn/vstudio/express/default.aspx

2 :デフォルトの名無しさん:2011/01/11(火) 17:26:30
関連スレ

ふらっとC#,C♯,C#(初心者用) Part67
http://hibari.2ch.net/test/read.cgi/tech/1292491413/

WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part8
http://hibari.2ch.net/test/read.cgi/tech/1291554513/

【VB.NET】LINQ友の会【C#, C♯, C#】
http://hibari.2ch.net/test/read.cgi/tech/1202568694/

C#,C#の宿題片付けます。
http://hibari.2ch.net/test/read.cgi/tech/1197620454/

ASP.NET + Atlas or Ajax について
http://hibari.2ch.net/test/read.cgi/tech/1150036430/

Microsoft Silverlight その7
http://hibari.2ch.net/test/read.cgi/tech/1288613056/

Visual Studio 2010 Part12
http://hibari.2ch.net/test/read.cgi/tech/1292341596/

C# C# C♯ でゲームを作ろう Part2
http://hibari.2ch.net/test/read.cgi/gamedev/1290300779/

3 :デフォルトの名無しさん:2011/01/11(火) 17:27:14
参考リンク

MSDNライブラリ
http://msdn.microsoft.com/ja-jp/library/

@IT Insider.NET
http://www.atmarkit.co.jp/fdotnet/
Insider.NET 会議室 ディレクトリ
http://www.atmarkit.co.jp/fdotnet/index/bbs/
MSDN フォーラム
http://social.msdn.microsoft.com/Forums/ja-JP/categories/


pinvoke.net: the interop wiki!
http://pinvoke.net/
宇宙仮面の C# プログラミング / C# Programming
http://uchukamen.com/
WisdomSoft C#入門
http://wisdom.sakura.ne.jp/programming/cs/
WisdomSoft Microsoft .NET入門
http://wisdom.sakura.ne.jp/system/msnet/
どっとねっとふぁん
http://dotnetfan.org/
緑のバイク 初めてのC# 〜 覚え書き 〜
http://homepage3.nifty.com/midori_no_bike/CS/
どぼん!の .NET Tips
http://dobon.net/vb/dotnet/

4 :デフォルトの名無しさん:2011/01/11(火) 17:28:19
質問する前に"必ず"WikiやFAQ集を参照し、同じような質問がないか確認してください。

初歩的な質問はPC初心者板で・・・
http://pc11.2ch.net/pcqa/
参考リンク(よく出てくる情報リンク)
Windows Vista Wiki
http://windowsvista.ms/index.php
Windows VistaFAQ
http://vistafaq.stdo.net/index.html
〜インストールから設定・活用まで〜 すべてが分かるWindows Vista大百科
http://journal.mycom.co.jp/special/2007/windowsvista/menu.html


※コードの量が多い場合は下記サイトを使うなどしたほうがいいかも※

http://ideone.com/
http://codepad.org/ (C#非対応)

5 :デフォルトの名無しさん:2011/01/11(火) 17:58:30
>>1


6 :デフォルトの名無しさん:2011/01/11(火) 18:05:55

 ○  >>2-4 乙 もうお前に用はない 
 く|)へ
  〉   ヽ○ノ
 ̄ ̄7  ヘ/
  /   ノ
  |
 /
 |





7 :デフォルトの名無しさん:2011/01/11(火) 19:18:45
  ______  ______ __    __ __   _ _
 |          | |        | |  \ |   | |   |  | || |
 |          | |____    .| |.     | |   | |   |   ̄  ̄ _____
   ̄ ̄ ̄|   | r― 、  /  /  \__| |   | |     ̄ ̄ ̄| |       |
  ___|   | |   \/  /       /   | |          | |       |
 |          | \     ./  | ̄ ̄ ̄  ./ |   | ̄ ̄ ̄  ̄ ̄ ̄ ̄ ̄
 |          |   \   \ |     /   |   |
   ̄ ̄ ̄ ̄ ̄      ̄ ̄ ̄   ̄ ̄ ̄      ̄ ̄

8 :デフォルトの名無しさん:2011/01/12(水) 20:32:38
SqlConnnection/SqlCommand等を1つにまとめたラッパークラスみたいなクラスを作っています(同僚が)
お前等はどう思いますか?

俺はそんなクラスを作られると激しく使いづらいんだけど

9 :デフォルトの名無しさん:2011/01/12(水) 21:46:03
目的がちゃんとあって、達成できてれば文句は言わないな

まあそんなキッチリしたラッパー見たことないけど

10 :8:2011/01/12(水) 21:51:33
>>9
普通に考えれば、SqlConnection/SqlCommand/SqlTransactionを
1つのクラスにするのは無理があると思よな
本当にこのラッパークラスが便利なら、もうM$が提供しているよな〜

11 :デフォルトの名無しさん:2011/01/12(水) 22:54:02
TableAdapterェ…

12 :デフォルトの名無しさん:2011/01/12(水) 23:58:26
前にも同じ話題があったな

13 :デフォルトの名無しさん:2011/01/13(木) 00:13:26
>>8
うちはそんなラッパーつかってる
VB6のoo4oからその流れだ
使いたくはないが、それを使用する決まりになってるしな・・・

14 :デフォルトの名無しさん:2011/01/13(木) 17:39:24
その同僚ってもしかして俺のことか

15 :8:2011/01/13(木) 20:05:22
>>13
うちの会社仕事が無いから、先輩にSqlConnectionのラッパー作ってみてよ〜って言われてしまった
あぁ〜、意味ないって
その気持ち痛いほどわかるわ

16 :デフォルトの名無しさん:2011/01/13(木) 20:53:27
WebClientで画像をダウンロードしてそのままbmpにする場合はどのようにすればいいのでしょうか?
例外などの処理を省いたのが下記になります

byte[] data;
WebClient wc = new WebClient();
wc.Encoding = wc.Encoding = System.Text.Encoding.GetEncoding("utf-8");
data = wc.DownloadData(_Url);
wc.Dispose();

DownloadDataだとbyte配列になるようですがこれをどうやればいいかがわかりません。

17 :デフォルトの名無しさん:2011/01/13(木) 21:03:46
File.WriteAllData()

18 :デフォルトの名無しさん:2011/01/13(木) 21:07:19
あ、そういう意味ではなくPictureBoxなどへ渡すためのBitmap形式にしたかったのです

19 :デフォルトの名無しさん:2011/01/13(木) 21:13:09
byte配列にはしない
OpenReadでStream取得してImage.FromStream

20 :デフォルトの名無しさん:2011/01/13(木) 21:31:35
あとbyte[]⇔MemoryStreamの変換もDBとかでよく使う

21 :デフォルトの名無しさん:2011/01/13(木) 21:35:44
>>19>>20
なるほど
byte配列をそういう風に使えるんですね
ありがとうございます

22 :デフォルトの名無しさん:2011/01/14(金) 01:16:43
BOMの削除ってどうしてます?

23 :デフォルトの名無しさん:2011/01/14(金) 01:42:31
StreamWriterのコンストラクタでエンコードを指定しない(BOMなしUTF8で出力)。
またはエンコーディングにnew UTF8Encoding(false)とかを使用。


24 :デフォルトの名無しさん:2011/01/14(金) 03:28:06
ありがとう、いつもEncoding.UTF8を使ってたから気付かなかった

25 :デフォルトの名無しさん:2011/01/14(金) 16:29:37
C#2.0です
動的に数が増減するTextBoxのリストをやりたいのですが

1.DataGridView
2.ListView
3.FlowLayoutPanel
4.TableLayoutPanel

どれが一番簡単でしょうか?
表示したテキストはそれぞれ行選択した後固有処理したり簡易編集したりします
また、TextBoxも個別に属性を割り振って処理を変えたりします
リスト表示するだけなら1がもっとも簡単そうなのですが、この個別処理まわりが
大変そうで悩んでいます

26 :デフォルトの名無しさん:2011/01/14(金) 17:06:33
やってみればいいじゃない!

27 :デフォルトの名無しさん:2011/01/14(金) 18:32:07
正直個別処理のレベルによる
DataGridViewでもEditingControl取得すれば多少はいじれるし

28 :デフォルトの名無しさん:2011/01/14(金) 20:21:22
C#で キーを押す という動作を実行するにはどうしたらいいでしょうか。

別のフリーウェアであるキーを押すと特定のマクロを実行してくれるソフトがあります。
このマクロを実行させるために、「キーを押す」という動作を実行させたいのです。

非常にしょうもない質問かもしれませんが、分かる方教えて頂けると助かります。
よろしくお願いします。

29 :デフォルトの名無しさん:2011/01/14(金) 20:23:39
>>28
http://cs2ch.blog123.fc2.com/blog-entry-85.html

30 :28:2011/01/14(金) 21:07:24
>>29
おお、ありがとうございます。
それで行けそうな感じです。

よくわからないのですが、そのページのそれっぽい部分をそのままボタンクリック(? private void button1_Click)の
ところに突っ込んでもうまくいかない。

ちょっと勉強して導入してみます。

ありがとうございました。<(_ _)>

31 :デフォルトの名無しさん:2011/01/14(金) 21:11:12
>>30
肝はSendKeyCodeクラスの方だからね

32 :30:2011/01/14(金) 22:42:19
ぬうう、そうですか。そう言われて、SendKeyCodeでググッてみてもよく分からないページが・・。
C#のシステムをほとんど理解せず、見知ったプログラムをつなぎあわせて動かしてばかりなので
全く分からないのです。なのでここで具体的に質問できるレベルではないのです orz
下のようにやってるんですけど、エラーが出るなあ・・・・

using System;
using System.Collections.Generic;

using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}

private void button1_Click(object sender, EventArgs e)
{
SendKeyCode send = new SendKeyCode();
send.Sendkey(51);
}
}
}

33 :デフォルトの名無しさん:2011/01/14(金) 22:47:54
>>32
SendKeyCodeっていうクラスも書かなければいけないのでは?

関係ないけどSendKeysってクラスもありますよ
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.sendkeys(v=VS.100).aspx

34 :デフォルトの名無しさん:2011/01/14(金) 23:11:39
>>32
そのサイトのSendKeyCodeクラスをコピーして使うか
そのクラスの中でやってることを自分のソースに入れないと無理だよw

>>33
それって微妙なんだよな・・・
ある程度使えるようにするには>>29の方がいいよ

35 :デフォルトの名無しさん:2011/01/14(金) 23:14:12
このコードをコピーしないとダメ

using System;
using System.Runtime.InteropServices;

namespace test
{
    class SendKeyCode
    {
        [DllImport("user32.dll")]
        public static extern uint keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo);
        public void Sendkey(byte Code)
        {
            keybd_event(Code, 0, 0, (UIntPtr)0);
            keybd_event(Code, 0, 2/*KEYEVENTF_KEYUP*/, (UIntPtr)0);
        }
    }
}

namespaceは自分のプロジェクトにあわせてね・・・(もしかしてその辺も説明がいるレベルの人?

36 :32:2011/01/14(金) 23:23:41
おおお、皆様のヒントを頼りになんとかエラー除去できました。

全くよくわかっていないですが、適当に色々いじってるとなんかうまくいきました。

どうもありがとうございました。

37 :デフォルトの名無しさん:2011/01/14(金) 23:47:40
exploaderここの支援ツール作ってたけどアフィブログ側がいろいろパターンあって厳しいな・・・

38 :デフォルトの名無しさん:2011/01/14(金) 23:59:18
C#って配列のLowerBoundを指定できますか?

39 :デフォルトの名無しさん:2011/01/15(土) 00:00:53
できません

40 :38:2011/01/15(土) 00:25:21
(object[,])typeof(object).MakeArrayType(2).GetConstructor(new[] { typeof(int), typeof(int), typeof(int), typeof(int) }).Invoke(new object[] { 1, 1, 1, 1 })で出来ました

41 :デフォルトの名無しさん:2011/01/15(土) 00:29:39
そんなことしないと出来ないのかw

42 :デフォルトの名無しさん:2011/01/15(土) 00:32:37
Array.CreateInstance(Type, int[], int[])でもっと簡単に作れる
いずれにせよ「C#では」作れないけど

43 :デフォルトの名無しさん:2011/01/17(月) 11:08:58
SortedListとかに記述してある、O(log n)
というのはどういうことなんでしょうか?


44 :デフォルトの名無しさん:2011/01/17(月) 11:13:18
ランダウの記号 とかで調べてみる

45 :デフォルトの名無しさん:2011/01/17(月) 13:06:00
>>44
ググってみた
うぃきとか見ても専門店きすぎてイミフ

46 :デフォルトの名無しさん:2011/01/17(月) 13:22:48
えっ

47 :デフォルトの名無しさん:2011/01/17(月) 14:24:10
nがそこそこ大きければ、処理時間はだいたいlog nに比例するという意味
たとえばList<T>ならIndexOfはO(n)なのに対してBinarySearchはO(log n)なので
後者のメソッドの方が効率よく要素を検索できることがわかります
nはこの場合コレクションの要素数

48 :デフォルトの名無しさん:2011/01/17(月) 15:11:50
>>45
処理時間の指標だよ、アルゴリズムの性能を端的に表すときに使う
だいたいそれくらいかかるって意味
O(n^2)よりO(n)のが早い、O(n)よりO(log n)のほうが早い

49 :デフォルトの名無しさん:2011/01/17(月) 15:31:33
>>47-48
サンクスです
大体理解しました。
そもそも対数自体からよくわかってなかったのがいけなかったんですが…
助かりました。



50 :デフォルトの名無しさん:2011/01/18(火) 09:37:49
以下のコードの Class2.InternalUse を public 以外にすると状態により消失したり出現したりします
オプティマイズが原因だと思われますが、このInternalUseは可能なら public にしたくない。
常に出現させる事は果たして可能なのでしょうか?オプティマイズ禁止アトリビュートとか知っている人いませんか?
public static void Test()
{
  Func<object, bool> f = Class2.GetMethod(typeof(int));
  f(10);
}
public static class Class2
{
  // ジェネリック関数 InternalUse の型引数をType型オブジェクトで引き渡そうという試み
  public static Func<object, bool> GetMethod(Type type)
  {
    foreach (System.Reflection.MethodInfo item in typeof(Class2).GetMethods())
    {
      if (item.Name == "InternalUse")
      {
        System.Reflection.MethodInfo method = item.MakeGenericMethod(type);
        return (arg) => (bool)method.Invoke(null, new object[] { arg });
      }
    }
    System.Diagnostics.Debug.Assert(false, "InternalUse<T> が消失");
    return null;
  }
  // 型引数をType型で渡したいジェネリック関数
  //private static bool InternalUse<T>(T arg) { System.Console.WriteLine(arg); return true; }
  public static bool InternalUse<T>(T arg) { System.Console.WriteLine(arg); return true; }
}

51 :デフォルトの名無しさん:2011/01/18(火) 10:12:41
最適化でメンバが勝手に消えることはありません
public以外にすると消えたように見えるのは、GetMethodsがpublicメンバしか返さないからです
かわりにGetMembers(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)を使えば
publicでなくても取得できます
どうせ名前だけで判別するならforeachも必要なくて
GetMethod("InternalUse", BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)
の結果だけを見れば十分です

52 :デフォルトの名無しさん:2011/01/18(火) 11:56:58
>>50のコードってなんかいい使い道あんの?

53 :デフォルトの名無しさん:2011/01/18(火) 12:24:29
GetObject<T>()みたいなメソッドはオーバーロードでGetObject(Type)が用意されてるのが普通だけど
それが用意されてなくてどうしてもTypeで指定したいときは稀にあるな
基本的には動的に使われそうなメソッドはTypeを取るオーバーロードを用意しておいて
ジェネリック版の方を T GetObject<T>() { return GetObject(typeof(T)); }と実装するのが普通

54 :デフォルトの名無しさん:2011/01/18(火) 13:12:24
Streamをファイルに保存する簡単な方法ってないですかね?
WriteStream(stream)みたいな

55 :デフォルトの名無しさん:2011/01/18(火) 13:16:03
あるだろ・・・MSDN読んでみろよ

どっちかというと
WriteStream(filePath)
じゃね?


56 :デフォルトの名無しさん:2011/01/18(火) 13:26:12
ないない
FileStream作ってRead->Writeを繰り返す

57 :デフォルトの名無しさん:2011/01/18(火) 13:38:41
var buf = new byte[0xffff]; // バッファサイズは適当に
int read;
using (var output = File.OpenWrite(path))
while ((read = input.Read(buf, 0, buf.Length)) > 0)
 output.Write(buf, 0, read);
これだけのことだろ

58 :デフォルトの名無しさん:2011/01/18(火) 13:46:55
.NET4にはStream.CopyToがあるな

59 :デフォルトの名無しさん:2011/01/18(火) 13:53:06
>>55-58
ありがとう、3.5なんで普通に書くことにします

60 :デフォルトの名無しさん:2011/01/19(水) 00:09:58
Java の commons-io みたいなのってないの?

61 :デフォルトの名無しさん:2011/01/19(水) 00:23:56
Fileクラスとかで十分でしょ
.NETのライブラリははもともとJavaほど使いにくくないからユーティリティ集みたいなのはあんまり流行らないよね

62 :デフォルトの名無しさん:2011/01/19(水) 01:10:02
個人的にユーティリティ集作ってたけどバージョン上がるごとに無用の長物と化していったな

63 :デフォルトの名無しさん:2011/01/19(水) 01:51:16
>>62
あるあるw
2.0の頃にGenericsでTuple作ってたけど無用になった。

しかし、.NET肥大化しまくってる気がしないでもない。
次のバージョンではどうなるか…

64 :デフォルトの名無しさん:2011/01/19(水) 01:58:25
肥大して制御不能になれば別の新しい規格立てるだけです
歴史が証明しています

65 :デフォルトの名無しさん:2011/01/19(水) 02:04:32
今のところ、無駄に肥大してる感じはないけども。
要求広がったぶんだけ正比例ででかくなってる感じ。

66 :デフォルトの名無しさん:2011/01/19(水) 02:08:18
まともに入れると何個もランタイムが必要という点は肥大化とも言えなくも無いこともない事かもしれない

67 :デフォルトの名無しさん:2011/01/19(水) 02:24:05
コンパイル時に解決される機能も多いしそんなに肥大化って感じはしないけど
新機能を覚えるのが苦手な人には辛いかもね

68 :デフォルトの名無しさん:2011/01/19(水) 02:57:38
新機能覚えたら前のバージョンに戻れなくなる

69 :デフォルトの名無しさん:2011/01/19(水) 04:30:39
というか型推論、匿名型、拡張メソッド、ラムダ式、dynamicとか見るに
マルチスレッドと関数型へのパラダイムシフトを確実に実行する為に10年計画とかで一直線に進んでるように見える
2.0、3.0、4と新しくなる度に二度と前に戻れないほどの利便性生産性の向上は凄まじいし、全くブレてない

70 :デフォルトの名無しさん:2011/01/19(水) 05:18:18
だよな
ちょっと前まではSTLやRubyが羨ましかったのに、
もうそれらを使う必要性を全く感じない

71 :デフォルトの名無しさん:2011/01/19(水) 08:48:27
[フォルダ名1] - [フォルダ名1-2]
         - [フォルダ名1-3]
というふうに「フォルダ名1-2とフォルダ名1-3」のフォルダ名を取得することはできるのでしょうか?
取得することができるなら、どういったものを使えば取得できるのでしょうか?

72 :デフォルトの名無しさん:2011/01/19(水) 08:51:23
できるからぐぐりなさい

73 :デフォルトの名無しさん:2011/01/19(水) 08:54:00
>>71
再帰の話しかね?
http://support.microsoft.com/kb/303974/ja

74 :デフォルトの名無しさん:2011/01/19(水) 10:34:45
>>69
2点訂正:

「非同期処理だからといってマルチスレッドは要らない」という流れも。
GUI アプリだとディスパッチャー使って UI スレッドに戻して実行ってのができるんで。

あと、「関数型へのシフト」じゃなくて「関数型の取り込み、融合」だと思う。

75 :デフォルトの名無しさん:2011/01/19(水) 11:33:21
Rxみたいに非同期を同期的に扱う流れが流行ってるね。
.NETの世界だけじゃなくて例えばJavaScriptにもStratifiedJSみたいなのがある。

C#5では非同期構文(async/awaitキーワード)が導入される。
RxとAsync CTPがあれば非同期プログラミングは怖くない。

76 :デフォルトの名無しさん:2011/01/19(水) 11:42:01
C# 5のasyncはほんとにあれ、単一スレッド実行(非同期IO終わったらUIスレッドにディスパッチ)するからね。
lock要らない。

77 :デフォルトの名無しさん:2011/01/19(水) 12:15:25
>>70
STLだけはまだ魅力的だけどな。

78 :デフォルトの名無しさん:2011/01/19(水) 21:41:54
>>75-76
まじか。オラわくわくしてきたぞ。

79 :デフォルトの名無しさん:2011/01/19(水) 22:20:27
SL の 3D 対応のほうが興味ある。

80 :デフォルトの名無しさん:2011/01/20(木) 00:40:45
>>73
ありがとうございます
それでできました

配列にディレクトリ名が挿入されたんですが、
while文でディレクトリ1つ1つ表示させているんですが、
配列に値が入ってるかどうかが判別する方法がわかりません
おかげで無限ループになってしまいます

どのようにしたら配列(string型)の中かどうか確認できるんでしょうか?

81 :80:2011/01/20(木) 00:42:31
すいません。間違えました
最終行: どのようにしたら配列(string型)の中が空かどうか確認できるのでしょうか?

ちなみにnull、""では意味がありませんでした……

82 :デフォルトの名無しさん:2011/01/20(木) 00:45:32
Length

83 :デフォルトの名無しさん:2011/01/20(木) 00:51:24
foreach文勉強しような

84 :デフォルトの名無しさん:2011/01/20(木) 01:00:20
C言語スレで質問してた奴か
邪推するにエロ画像フォルダでも整理したいんか?

85 :デフォルトの名無しさん:2011/01/20(木) 01:09:22
>>84
用途はなんでもいいだろw

エロに関する動機が多い気もするがw俺の場合w
exploader.netの支援ツールとか作ってるぞw

アフィブログがあまりにもうざすぎるので・・・
ざっくり仕様は固まってるがアフィブログ側の作りがまちまちなので
その辺の細かい部分をどうするかが悩ましい

86 :デフォルトの名無しさん:2011/01/20(木) 01:22:46
とりあえず質問スレでどうぞ

87 :デフォルトの名無しさん:2011/01/20(木) 01:31:34
>>83
ありがとうございます。やりたいことができました

>>84
まぁそんな感じです

>>85
超ほしいなそれw


88 :デフォルトの名無しさん:2011/01/20(木) 02:34:13
最近はどこのサイトもアフィリエイトで埋まってるからな
Adblockで全部消してやるとすっとするw

89 :デフォルトの名無しさん:2011/01/20(木) 04:15:57
exploader.netはまあ生かさず殺さずでアフィ残しておかないと場が消えるけど
そこへアップしてるアフィサイトはいらないからな・・・

というかexploader.netは数字の認識関連以外は実は簡単なんだよな

ロックかかってるとなってるがアフィサイトのhtmlだけ入手して下記のようなアドレスを
正規表現で探せばいいだけなんだよな・・・
後はアフィサイトのアドレスとパスなどを管理して・・・と
http://www.exploader.net/download/%EF%BD%880120a1?session=IQgXNhfRaaY

>>88
adblockは便利なんだが数が増えると重くなるしたまに必要な画像を消しちゃうこともあるしな・・・

90 :デフォルトの名無しさん:2011/01/20(木) 07:41:01
一日で作れそうだな

91 :デフォルトの名無しさん:2011/01/20(木) 07:42:26
すべての参照型のオブジェクトを一意に識別する値を取得したい。
例えば、オブジェクトのアドレスなどを取得するのは無理でしょうか?

92 :デフォルトの名無しさん:2011/01/20(木) 07:45:44
すみません。自己解決しました。

93 :デフォルトの名無しさん:2011/01/20(木) 08:24:36
慌て過ぎ

94 :デフォルトの名無しさん:2011/01/20(木) 08:26:30
えへへ

95 :デフォルトの名無しさん:2011/01/20(木) 10:09:38
>>90
.netの勉強用には手軽でいい題材かもしれんな


96 :デフォルトの名無しさん:2011/01/20(木) 15:38:29
unsafe使ってポインタ取ってくるのしか思いつかないんだけど・・・・

97 :デフォルトの名無しさん:2011/01/20(木) 15:52:26
RuntimeHelpers.GetHashCodeを使う

98 :デフォルトの名無しさん:2011/01/20(木) 16:07:01
自己解決ってのは、そんな馬鹿げたことはやるべきでないと理解した って意味だろ。

99 :デフォルトの名無しさん:2011/01/20(木) 18:34:32
>>97
d

100 :デフォルトの名無しさん:2011/01/21(金) 16:20:56
Graphics.DrawStringで文字末端のスペースにも
下線を引きたいのですが消えてしまいます。
StringFormatでStringFormatFlags.MeasureTrailingSpacesを
指定ししても変わりませんでした。
とりあえず自力で線を引くことにしますが、これは
どうすれば解決するでしょうか?


101 :デフォルトの名無しさん:2011/01/21(金) 18:53:33
exploader.netへアップしてるアフィサイトの解析ツール
http://ideone.com/2pyC3

上のテキストボックスに1行1URLでアドレスを貼ってボタンを押すと解析開始
該当するアドレスがあれば下のテキストボックに貼る


102 :デフォルトの名無しさん:2011/01/22(土) 04:31:41
exploader.net関係のレスはスレ違いなのでそろそろやめて


103 :デフォルトの名無しさん:2011/01/22(土) 06:18:48
>>100
末尾にピリオド付与すれば?

104 :デフォルトの名無しさん:2011/01/22(土) 13:55:42
APIをDLLから呼び出すには新規ソリューションでクラスライブラリを作成し
そこにAPIをコーディングし、呼び出し側からDllImportをしてあげればよろしいのでしょうか?

105 :デフォルトの名無しさん:2011/01/22(土) 14:01:06
>>104
用語の使い方がデタラメで何が言いたいのかさっぱり分からない。
理解してもいない用語を無理に使おうとせず、自分がやりたいことをベタに
書いた方がいい。

106 :デフォルトの名無しさん:2011/01/22(土) 14:06:14
自分で作ったDLLの関数を呼び出すにはどうすればいいのー?って意味じゃね

107 :デフォルトの名無しさん:2011/01/22(土) 14:49:48
DLLをプロジェクトに追加するか、コンパイルオプションで指定する

108 :デフォルトの名無しさん:2011/01/22(土) 14:56:31
DLLがマネージなのかアンマネージなのかすら分からない

109 :デフォルトの名無しさん:2011/01/22(土) 17:51:34
   DLLはマネージドorアンマネージド?

↓(マネージド)         ↓(アンマネージド)

プロジェクトの参照で     DllImport属性で適当なクラスに
DLLを追加する         使いたいメソッドを宣言

↓                 ↓

      あとはググれ

110 :デフォルトの名無しさん:2011/01/22(土) 19:32:52
親切やね。

111 :デフォルトの名無しさん:2011/01/22(土) 19:54:13
C++/CLIで結合が抜けてるぞ!

112 :デフォルトの名無しさん:2011/01/22(土) 21:41:59
P/Invoke ならいらない

113 :デフォルトの名無しさん:2011/01/22(土) 21:53:25
string型の変数の中に"ABCDEF"とある場合
ABCと入力されていれば文字列の中を"DEF"という風に
入力されている文字列だけ変数の中から削除という場合どんなものを方法があるでしょうか?
sliceメソッドってC#にはないんでしょうか?それがあればできるんですけど・・・


114 :デフォルトの名無しさん:2011/01/22(土) 21:55:32
"ABCDEF".Replace("ABC", "")
一般的にいって、sliceと名の付くメソッドはそんなことには使いません

115 :デフォルトの名無しさん:2011/01/22(土) 22:32:41
後学のために言っておくと
javascriptと等価なsliceなんかある言語の方がすくねーぞ

116 :デフォルトの名無しさん:2011/01/23(日) 00:19:50
後学のために....って言い回しは他人に向かっても使うんだっけ?w
初めて見たよそんな使い方

117 :デフォルトの名無しさん:2011/01/23(日) 03:39:24
>>106
他人の作ったネイティブDLLの関数を呼び出したいんじゃねーの?
方法1
 C#からDllImportで直接呼び出す。
 余計なDLLは不要だが、データ構造が複雑だとDllImportを書くのが面倒。
方法2
 C++/CLIでクラスライブラリを作成し、C++と.NETの変換を行いC#で参照する。
 余計なDLLが要るが、使用するパラメータは少ないのにいろんな構造体を
 用意しないといけないときにはこっちが楽

118 :113:2011/01/23(日) 16:18:44
>>114
ありがとうございました

今度は
string n = "[Playback Part2] 馬鹿にしないでよ〜"
とある場合[ ]の中のPlayback Part2だけを抜き出すには何を使えばいいですか?



119 :デフォルトの名無しさん:2011/01/23(日) 16:20:45
>>118
バーカ

120 :デフォルトの名無しさん:2011/01/23(日) 16:22:25
誰が一番先に正規表現書いてやるか賭けようぜ

121 :デフォルトの名無しさん:2011/01/23(日) 16:22:57
手取り足取りだな
人間の考える力はこうして失われていく

122 :デフォルトの名無しさん:2011/01/23(日) 16:26:08
>>118は初心者スレ行ったほうがいいよ

123 :113:2011/01/23(日) 16:26:36
正規表現という言葉がでてきませんでした 
>>120さんありがとうございました


124 :デフォルトの名無しさん:2011/01/23(日) 16:27:35
>>118

string n = "[Playback Part2] 馬鹿にしないでよ〜"
StringBuilder m = new StringBuilder();

for(int i=0;i<15;i++){
m.Append(n[i+1]);
}

n = m.ToString();

125 :デフォルトの名無しさん:2011/01/23(日) 16:28:08
次は正規表現の書き方を正規表現スレに聞きに行くんだろうかw

126 :デフォルトの名無しさん:2011/01/23(日) 16:29:10
>>123
べ、別にあんたのために書いたわけじゃないんだからね!!!!勘違いしないでsyぽね!!!

127 :デフォルトの名無しさん:2011/01/23(日) 16:31:09
つI

128 :デフォルトの名無しさん:2011/01/23(日) 17:13:23
>>125
残念でした

http://hibari.2ch.net/test/read.cgi/tech/1294921393/549

129 :デフォルトの名無しさん:2011/01/23(日) 17:18:35
正規表現という言葉がでてきた意味がまったくありませんでしたね。

130 :デフォルトの名無しさん:2011/01/23(日) 17:29:13
DataGridViewをD&Dで行を並び替える方法を教えていただけませんでしょうか
ドラッグどころかフォーカスしかできない始末です。

131 :デフォルトの名無しさん:2011/01/23(日) 20:02:13
System.Linq.Expressionsについて質問です。

CodeDOMを用いた動的なコンパイル・実行では
AppDomainを分けないとメモリリークが発生してしまう
という話を聞いたことがあります。
動的な実行コード生成という点では、Expression.Compileも同様だと思うのですが
こちらはそういった問題は発生しうるのでしょうか?

132 :デフォルトの名無しさん:2011/01/23(日) 20:12:34
Expression.CompileはDynamicMethodのラッパー
DynamicMethodは生成されたコードがGC対象になることと
アセンブリや型を生成する必要がないのでオーバーヘッドが小さいのが売り

133 :デフォルトの名無しさん:2011/01/25(火) 03:29:57
>>132
遅くなりましたが、回答ありがとうございます。
GCの対象になるのでしたら問題無く使用できそうですね。

DynamicMethodについては知りませんでした。
C++のXbyacみたいな機能があったんですね。
面白そうなので調べてみます。

134 :デフォルトの名無しさん:2011/01/25(火) 14:01:17
大概の場合、そういうの考えるの無駄なことが多いから可動性を重要視
考えなきゃいけない所だけ考えればいい

135 :デフォルトの名無しさん:2011/01/25(火) 14:29:11
さすがに確実にメモリリークするのわかってるのに考えないのはどうかとw
読み込むコードが限られててeval的なことはしないならいいけどさ
ふらっとスレの誤爆か

136 :デフォルトの名無しさん:2011/01/25(火) 15:04:05
XDocumentでXmlDocument.Document.NamespaceURIに相当するものは
どれですか?

137 :デフォルトの名無しさん:2011/01/25(火) 15:15:39
XmlDocument.DocumentElement?
XDocument.Root.GetDefaultNamespace()じゃね

138 :デフォルトの名無しさん:2011/01/25(火) 15:20:31
XDocument.Root.Name.NamespaceNameの方か

139 :デフォルトの名無しさん:2011/01/25(火) 16:53:36
C#は宣言が長すぎる

ClassName a = new ClassName();

ClassName a;

でいいじゃん
次のバージョンとかで改善される予定はないの?

140 :デフォルトの名無しさん:2011/01/25(火) 16:55:29
>>139
下は単なる宣言じゃん

上は

ClassName a;
a = new ClassName();

これを一行で書いただけだろ?

141 :デフォルトの名無しさん:2011/01/25(火) 16:58:46
それに

ClassName a = new
とnewまで入力してスペースあければ支援機能が候補だしてくれるし


それよりプロパティの省略書き方 {get;set;} って入力支援機能ってないのかな?
イベントとかだと += まで入力すればTABx2でメソッドまで自動で生成してくれるけどw

142 :デフォルトの名無しさん:2011/01/25(火) 17:16:34
コードスニペット作ろうぜ

143 :デフォルトの名無しさん:2011/01/25(火) 17:36:27
var a = new ClassName();
だろ。
あとインテリセンス様のお陰で、ClassNameはCN<TAB>で補完出来るじゃん

144 :デフォルトの名無しさん:2011/01/25(火) 17:47:17
インテリセンス様は便利だけど、コード書いてる気がしないんだよなー
いつも使ってるメソッドの名前ぜんぜん覚えなくて
IDE以外でコード書いたときあまりの書けなさっぷりに愕然とするし

145 :デフォルトの名無しさん:2011/01/25(火) 19:08:19
IDE以外でコード書くことをやめた方がいいよ、そろそろ

146 :デフォルトの名無しさん:2011/01/25(火) 19:21:32
どうして?
IDE以外でなにか困ることあるっけ?

147 :デフォルトの名無しさん:2011/01/25(火) 19:28:03
>>141
prop Tab Tabを知らないで生きてるのは不幸

148 :デフォルトの名無しさん:2011/01/25(火) 19:30:24
プログラマーを最高に快適なぬるま湯状態に置きIDEから離れられなくする
それがMSのIDE囲い込み戦略!!!

149 :デフォルトの名無しさん:2011/01/25(火) 19:48:12
IDE使わない俺、カッコいい!!ってのはもうやめません?
C#は、IDEで最適化されてる言語だと思うの。

150 :デフォルトの名無しさん:2011/01/25(火) 20:01:34
まぁ実際VisualStudioなしでC#書く理由がない


151 :デフォルトの名無しさん:2011/01/25(火) 20:03:06
普通のテキストエディタでC++書いたりPython書いたりはするけどC#やVBは絶対に嫌
ライブラリがインテリセンス前提で綴りが長すぎる

152 :デフォルトの名無しさん:2011/01/25(火) 20:03:39
SharpDevelopというソフトが今年バージョンアップして結構使える

153 :デフォルトの名無しさん:2011/01/25(火) 20:04:03
>>150-151
全くだ。

154 :デフォルトの名無しさん:2011/01/25(火) 20:06:30
SharpDevelopってどうせ永遠にVSExpressに勝てるわけないのに何がしたいの?
どうせならクロスプラットフォームにすりゃいいのに

155 :デフォルトの名無しさん:2011/01/25(火) 20:12:52
いちおうOSSで無償利用可能だしな

156 :デフォルトの名無しさん:2011/01/25(火) 20:17:58
Mono使うときと、F#で使ってる.SharpDevelop

157 :デフォルトの名無しさん:2011/01/25(火) 21:14:14
一番の価値はマックでドトネト・・・・だったのにな

158 :デフォルトの名無しさん:2011/01/25(火) 21:19:03
>>157
ちょっと何言ってるのかわからないですね

159 :デフォルトの名無しさん:2011/01/25(火) 21:25:10
Expressに対しては十分対抗馬だと思う。
例えばコンテキストメニューで単体テスト(NUnit)を走らせたりできる。

160 :デフォルトの名無しさん:2011/01/25(火) 21:33:14
そんなもんカスタムツールに登録するとかビルドステップ弄るとかで十分じゃね

161 :デフォルトの名無しさん:2011/01/25(火) 21:34:44
>>158
いや、monoさえしっかりしていたらMacでも.net使えたはずだったのにな

162 :デフォルトの名無しさん:2011/01/25(火) 21:37:43
>>140
すでにクラスは決まってるんだからインスタンス化する時はコンストラクタ名を省略できてもいいと思うんだ
同じ名前を何度も書くのはなんか美しくない

163 :デフォルトの名無しさん:2011/01/25(火) 21:39:04
>>162
派生クラス入れたいとか幾らでもあるだろ
var使えvar

164 :デフォルトの名無しさん:2011/01/25(火) 21:39:53
>>161
しっかり者ではなかったということですね

165 :デフォルトの名無しさん:2011/01/25(火) 21:40:46
>>162
コンストラクタを省略して「ClassName a;」とかキモすぎる。
var使っとけ

var a = new ClassName();

166 :デフォルトの名無しさん:2011/01/25(火) 21:41:06
>>162
VBでも使っとけ

167 :デフォルトの名無しさん:2011/01/25(火) 21:42:00
やっぱ男よりきれいなお姉さんの方がいいですよね

168 :デフォルトの名無しさん:2011/01/25(火) 21:44:32
>>154
多様性がいかに大事か分からんのか。

>どうせならクロスプラットフォームにすりゃいいのに
MonoDevelopがある。
MonoDevelopは元を辿ればSharpDevelopをGtk#に移植するとこから始まってる。

Flash用のIDEとして人気の高いFlashDevelopも、SharpDevelopからの派生。

SharpDevelopはインストールせずに使えて、Visual Studioのソリューション開いて編集できる。
派生を作る・USBメモリで持ち運ぶ・機能が少ない分軽い・・・Visual Studioにできない事ができる点で住み分けてるだろ。

169 :デフォルトの名無しさん:2011/01/25(火) 21:56:22
>>162
VB使ってるガキを見たら二度とそんなこと言わなくなる

170 :デフォルトの名無しさん:2011/01/25(火) 21:58:55
VB.NETはちゃんと住み分けできてんの?
C#の機能をVBの分かりづらい構文で書くだけの劣化C#と化しているわけだけど

171 :デフォルトの名無しさん:2011/01/25(火) 22:01:40
もともと
VB.NET…VB6、VBAユーザーの囲い込み用
C#…C++、Javaユーザーの取り込み用
なので、完全に目論見どおり

172 :デフォルトの名無しさん:2011/01/25(火) 22:02:06
VB6ユーザーのC#への移行パスという位置付けですお

173 :デフォルトの名無しさん:2011/01/25(火) 22:02:26
VB6はたしかに糞だけど、VB.NETは出来る子だぞ
VB6の機能を互換用に残しているのは微妙だけどな

174 :デフォルトの名無しさん:2011/01/25(火) 22:05:41
VB6やVBAから.NETへ移行しやすくしてるというより、
お前らには一生VBしか使えないと思い込ませるのが目的に思える
実際VB.NETがちゃんと使えてるならC#もJavaも全く変わらないわけだが

175 :デフォルトの名無しさん:2011/01/25(火) 22:11:43
イベントハンドラをエディタで扱うときはVBの方が楽
コードだとAddHandler Me.Load, AddressOf Form_Loadとか糞長くなるけど

あとXMLリテラルとかどうでもいいものもあった気がする

176 :デフォルトの名無しさん:2011/01/25(火) 22:14:38
.NETを使うんなら呼び出し元はどんな言語で書いてもできることは同じでしょ
論理的な行や処理の区切りが改行かセミコロンかなんて、それこそどうでもいい話に思えてくる

177 :デフォルトの名無しさん:2011/01/25(火) 22:17:10
VB.NETはVB6のせいで不当に低く見られてるとは思う。使ってないけど
結局は使う人次第さ

178 :デフォルトの名無しさん:2011/01/25(火) 22:19:15
使う人次第だが、どちらを使うか選べる人ならあえてVBは選ばないだろ?
そういうことだ

179 :デフォルトの名無しさん:2011/01/25(火) 22:19:51
そりゃ同じもん吐き出すからな
昔はVB6馬鹿にしてりゃ様になるとか思ってるアホもいたようだけど
ベーマガ育ちのオッサンとかBASICが好きな奴も中にはいるだろうし
好き好きだろ

180 :デフォルトの名無しさん:2011/01/25(火) 22:20:09
C#の機能を追いかける必要はなかったよな
機能限定.NETで覚えること少なくて初心者に優しい路線目指せばよかったのに

181 :デフォルトの名無しさん:2011/01/25(火) 22:22:17
>>178
選べる環境にある人がどれだけ居るのだろうか。
上や顧客の言いなりよ。俺だって使えって言われたら使うさ

そういうもんだろ?

182 :デフォルトの名無しさん:2011/01/25(火) 22:24:01
>>180
とても機能限定版なんか作ってる余裕はなさそうだけどね
初心者相手だとサポートは何倍も大変になるし

183 :デフォルトの名無しさん:2011/01/25(火) 22:26:15
もうすぐVisual Studio LightSwitchが出るよ
Access + VBA感覚でSilverlight使ったWebアプリが作れるらしい

184 :デフォルトの名無しさん:2011/01/25(火) 22:28:35
ビット演算が貧弱な時点でC#もVBも大差なし
算術シフトと論理シフトとローテートぐらい標準装備しといてほしいわ

185 :デフォルトの名無しさん:2011/01/25(火) 22:30:17
C#のビット演算はCのフルセットだが?

186 :デフォルトの名無しさん:2011/01/25(火) 22:32:17
そっとしといてやれ…w

187 :デフォルトの名無しさん:2011/01/25(火) 22:33:01
算術シフトはあるでしょ。
アセンブラじゃあるまいしローテートなんて使い道あるかね。

188 :デフォルトの名無しさん:2011/01/25(火) 22:33:45
>>179
VBは言語機能の為にMicrosoft.VisualBasic.dll利用してるので同じILにはならない
ためしにTry…Catchブロックを書いてReflectorに掛ければ分かると思うよ

189 :デフォルトの名無しさん:2011/01/25(火) 22:34:32
>>187
なんとなくサポートしてるだけじゃないの?w
もうローテートは必要なだろうしなあw


190 :デフォルトの名無しさん:2011/01/25(火) 22:35:39
論理シフトもあるぞ
符号なし整数にキャストしてからシフトすると論理シフトになるのはCと同じ
Javaでは別の演算子なのは、Javaには符号なし整数が無いからで
C#が劣っているわけではない

191 :デフォルトの名無しさん:2011/01/25(火) 22:41:01
VBは、表面上リフレクション使わずにexcel弄れるのが便利だ

192 :デフォルトの名無しさん:2011/01/25(火) 22:47:16
C#4.0はdynamicでVBと同じように遅延バインディングできるよ
必要な型だけdynamicにすればいいので Option Strict Off にしないといけないVBよりも優れてる
オプション引数もサポートされた

193 :デフォルトの名無しさん:2011/01/25(火) 23:00:25
>>189
ローテートシフトはゲームとかだと良く使いたくなるんだけどな。

194 :デフォルトの名無しさん:2011/01/25(火) 23:04:29
そうだとしても関数作っとけば済むこと
演算子が欲しくなるほどそんなもんが多用されてたらさすがに糞コードと呼ばざるを得ない

195 :デフォルトの名無しさん:2011/01/25(火) 23:14:28
関数化したら遅くなるじゃん
PC用ならまだしも、携帯、家電、ゲーム機、その他組み込み系はCPUパワーもメモリも全然足らんのですよ
HDDレコーダーとか地デジテレビとか、最近の家電はどれもこれも動作がトロくさくてイライラせんか?

196 :デフォルトの名無しさん:2011/01/25(火) 23:14:30
>>192
リフレクション使いまくり?
遅い?

197 :デフォルトの名無しさん:2011/01/25(火) 23:20:00
>>196
リフレクションは初回だけで、あとはExpressionTreeでコンパイルしたデリゲートが呼び出されるだけなので意外と早い
動的言語で使われる最適化手法

198 :デフォルトの名無しさん:2011/01/25(火) 23:21:36
>>195
組み込み系向けの処理系が……

Monoに頑張ってもらうしかないかねぇ?

199 :デフォルトの名無しさん:2011/01/25(火) 23:32:53
>>195
地デジ関連でチャンネルの切替とかが緩慢なのは地デジの仕様上の問題であって
組み込みCPUの問題では必ずしもないでしょ

200 :デフォルトの名無しさん:2011/01/25(火) 23:49:07
組み込み系に.NETを使用している事例なんてあるの?
Windows Phoneはどうでもいいや

201 :デフォルトの名無しさん:2011/01/26(水) 00:01:07
>>199
主にGUIの部分、たとえば番組表の表示とかスクロールとか、めっちゃ遅いじゃん
画像処理はビット演算多用するでしょ
とくに、限られた画面にたくさんの情報を出そうとするとフォントサイズも整数倍じゃなくなってくるし
さすがにmpegの圧縮、展開は専用チップでやってるだろうけど、最近はGUI用にも画像プロセッサ積んでるのかな?

202 :デフォルトの名無しさん:2011/01/26(水) 00:04:37
Cellなめんな

203 :デフォルトの名無しさん:2011/01/26(水) 00:29:30
Cellは使いこなせる人間が現場にいなかったのと消費電力がデカすぎたので死にました
残念

Cellのプログラミングはちょっとやってみたかったかな

204 :デフォルトの名無しさん:2011/01/26(水) 00:31:32
>>201
つNVIDIA Tegra  GPU入りのARMチップ
そのうち地デジでもこの手が主力になってくるんじゃないかな?

205 :デフォルトの名無しさん:2011/01/26(水) 01:17:51
>>184>>195>>201
全く反論の余地がないからって、突然組み込み系出すとか流石に頭おかしいわ

206 :デフォルトの名無しさん:2011/01/26(水) 02:03:10
かなり自演臭いしな

207 :デフォルトの名無しさん:2011/01/26(水) 10:18:32
すげぇな わかったから他スレでやれ

NVIDIA Tegraは使ってみたい

208 :デフォルトの名無しさん:2011/01/26(水) 17:34:29
RegexOptions.Compiledって指定したほうがいいんですかね?
イマイチメリットがわからない

209 :デフォルトの名無しさん:2011/01/26(水) 19:41:10
>>208
MSDNにはっきりメリットとデメリット書いてあるじゃん。

210 :デフォルトの名無しさん:2011/01/26(水) 21:28:10
>>209
ありがとう、見てくる

211 :デフォルトの名無しさん:2011/01/26(水) 21:31:40
> 正規表現をコンパイルしてアセンブリを作成することを指定します。
> これにより実行速度は速くなりますが、起動にかかる時間は長くなります。
> この値は、CompileToAssembly メソッドを呼び出すときには
> Options プロパティに割り当てないでください。

これだけ?もっと説明ないの?

212 :デフォルトの名無しさん:2011/01/26(水) 21:40:34
メリットデメリットがちゃんと書かれてると思うが

213 :デフォルトの名無しさん:2011/01/26(水) 21:53:44
そうだけど、
大量のRegex.Match()静的メソッドをCompiledオプションをつけて呼び出した場合どうなるかとか、
どのくらいの複雑さのパターンからコンパイルしたほうが圧倒的に速くなるとかそういう詳しい情報が欲しかった

214 :デフォルトの名無しさん:2011/01/26(水) 21:55:52
実測すれば?

215 :デフォルトの名無しさん:2011/01/26(水) 22:01:57
>>213
静的メソッドは関係ないでしょ。
「コンパイルと再利用」の項も読んだ?

216 :デフォルトの名無しさん:2011/01/26(水) 22:12:16
>>215
ありがとう、欲しかった情報が全部書いてあった

217 :デフォルトの名無しさん:2011/01/27(木) 15:27:05
if (System.IO.File.Exist(cacheFileName)){
cacheDictionary = HogeClass.FromFile(cacheFileName)
}else{
cacheDictionary = new HogeClass();
}
にするか
try{
cacheDictionary = HogeClass.FromFile(cacheFileName);
}catch(FileNotFoundException ex){
cacheDictionary = new HogeClass();
}
にするかちょっと悩んでるんだが、こういう場合、やっぱり前者の方が良いの?
いつぞか読んだDelphiの本で「例外処理を使いすぎるとイベントドリブンじゃなくてエラードリブンになっちゃいますよw」みたいな事を読んだ気がするが
自分はなんか後者でも良いような気がする

218 :デフォルトの名無しさん:2011/01/27(木) 15:29:55
>>217
俺なら100%前者

219 :デフォルトの名無しさん:2011/01/27(木) 15:42:02
ファイルが存在しないケースが考えられるなら、例外が発生しないように未然に対処すべき
例外を投げるのは、存在してるはずのファイルが存在しないような異常なケース

後者で統一すると、想定してる例外としてない例外がごちゃ混ぜになって後で保守する時に困るよ。

220 :デフォルトの名無しさん:2011/01/27(木) 15:42:15
前者でも例外処理は必要
ファイルが存在しているからといって開ける保証はないし
チェックしてから開くまでの間に開けない状態に変更される可能性もある

221 :デフォルトの名無しさん:2011/01/27(木) 18:16:37
存在チェックだけで安心してるやつはスレッド関係で再現困難なバグ出しそう
安全性とファイル存在した場合の存在チェック分の負荷を考えると後者だな

222 :デフォルトの名無しさん:2011/01/27(木) 18:19:09
>>218-220
THX
ってことは、例外の使い方、概念自体なんか間違ってるかも知れないなぁ…

ところでVCLの時から気になってたけど、Windows.Formsの配置で
AnchorとDockがあるけど、このDockってAnchorのプリセットみたいな物で
適切にAnchorを設定すれば、Dockは要らない子になる?

223 :デフォルトの名無しさん:2011/01/27(木) 18:22:12
全然別もんだろ・・・・
似たような動きはさせること出来るけど根本的につがう

224 :デフォルトの名無しさん:2011/01/27(木) 20:09:40
こうかしらね

try
{
  if (System.IO.File.Exist(cacheFileName))
  {
    cacheDictionary = HogeClass.FromFile(cacheFileName);
  }
  else
  {
    cacheDictionary = new HogeClass();
  }
}
catch( System.Exception error )
{
  MessageBox.Show(error.ToString());
}

225 :デフォルトの名無しさん:2011/01/27(木) 20:14:26
cacheDictionary = null;
if (System.IO.File.Exist(cacheFileName))
{
try
{
cacheDictionary = HogeClass.FromFile(cacheFileName);
}
catch (Exception ex)
{
Trace.WriteLine(ex);
MessageBox.Show(ex, "error");
}
}

if (null == cacheDictionary)
{
cacheDictionary = new HogeClass();
}

俺ならこうする

226 :デフォルトの名無しさん:2011/01/27(木) 20:14:59
・リトライ可能な物と不可の物をより分けてリトライを組み込む
・致命的な物はもっと上のレベルまでスルーしてそこで終了させる

なんて本式で組みだしたら軽く死ねるな・・・・

227 :デフォルトの名無しさん:2011/01/27(木) 20:19:15
続きはマ板の「例外を正しく使えないプログラマ多いね。」スレで

228 :デフォルトの名無しさん:2011/01/27(木) 20:57:53
誘導貼れよ

229 :デフォルトの名無しさん:2011/01/27(木) 23:57:31
リトライ処理がそもそも書きづらい

230 :デフォルトの名無しさん:2011/01/28(金) 00:02:38
そこでgotoですよ
もちろん冗談だけど while(true) { … continue; … break; } なら実際gotoと変わらないと思う

231 :デフォルトの名無しさん:2011/01/28(金) 00:23:59
while(true)でcontinueじゃ永久リトライだけどな

232 :デフォルトの名無しさん:2011/01/28(金) 00:30:36
while(true) { … break; … continue; } の間違いだろうな

保守性を考えるなら
bool retry = false; do { ... } while(retry);


233 :デフォルトの名無しさん:2011/01/28(金) 00:39:09
>>232
最後にcontinueしてどうするwそのまま放置しても普通に最初に戻るのに
つうかリトライならリトライカウント考慮してforループ使うのが普通

234 :デフォルトの名無しさん:2011/01/28(金) 01:17:23
おw
ダメだ寝るか・・・

235 :デフォルトの名無しさん:2011/01/28(金) 03:03:27
テキストボックスか、リッチテキストボックスで
行間を指定する事って出来ますか?

236 :デフォルトの名無しさん:2011/01/28(金) 08:52:19
WinFormならRichTextBoxでPARAFORMAT2使ったEM_SETPARAFORMATでできたと思う

237 :デフォルトの名無しさん:2011/01/28(金) 11:00:22
前のポーカーのものです。
乱数を取得してその取得した数を削除していくListについて質問です。
一回のゲームごとにListの中身をリセットしたいのですが、どうしたらいいでしょうか?

238 :デフォルトの名無しさん:2011/01/28(金) 11:00:41
質問です

データベース内に数値などをリスト化(?)などし、
それをFormにあるテキストボックス内に条件が一致した時に抽出したいのですが
抽出もとのデータベースは何を使ったらいいのかがよくわかりません。
様々な方法があると思いますが、単純にリスト内にある数値の1行のみを抽出したい場合は何を使えばよろしいでしょうか?

239 :デフォルトの名無しさん:2011/01/28(金) 11:21:27
抽出できないデータベースなんてあるのか?

240 :デフォルトの名無しさん:2011/01/28(金) 11:21:38
数字と名前のようなペア?
だったとしたらSortedListとかDictionaryとか?

241 :240:2011/01/28(金) 11:24:09
骨髄反射で回答してデータベース選定の話だと気付いた・・・
死にたい・・・・

簡単にやろうとしたら普通のテキストとかCSVとかデータテーブルをXMLにするとか
かな?

242 :デフォルトの名無しさん:2011/01/28(金) 11:25:20
>>237
破壊的な操作をしているならオブジェクトを作り直せばいい

>>238
質問がSQLServerみたいなシステムの事なのか、intみたいな型の事なのか
はたまたデータの持ち方の事なのかが判らない

243 :238:2011/01/28(金) 11:31:03
みなさんレスありがとうございます。
説明が足りなかった事をお詫び申し上げます。

リスト内の行を抽出する場合、手っ取り早い(簡単な)手段では何がいいのか教えていただきたかったのです。
テーブル系からデータを引っ張ってくるという事をやった事がないので何をすればいいのかわかりませんでした。

>>241
CSVなら簡単かなと思っていましたが、特殊な事をするわけではないのでこのあたりが妥当でしょうか?

244 :デフォルトの名無しさん:2011/01/28(金) 11:39:42
>>243
データが何件ぐらいで一行にどれくらいデータ有るかで答え方変わるよ

245 :238:2011/01/28(金) 11:46:00
>>244
データ量は莫大にあります。
列はすべて4〜5ほどです。
1つ目のテーブルでの行は100です
2つ目のテーブルでの行は300少々
3つ目のテーブルも同じ
4つ目のテーブルでの行は250

すべてまとめてもいいのかもしれませんが、別個にした方が管理しやすい気がしました。

246 :238:2011/01/28(金) 11:47:23
追記:行の文字数は最大で15バイトほどです。

247 :デフォルトの名無しさん:2011/01/28(金) 11:57:42
アクセス使ったらいいと思うよ、
アクセスのマクロで組んでも良いし、C#で組んでも出来る
俺ならExcelのマクロで組んじゃうけどね

248 :デフォルトの名無しさん:2011/01/28(金) 11:57:50
膨大というには少なすぎる気がするけど
SqlServerCompactとか使ってみては?

249 :デフォルトの名無しさん:2011/01/28(金) 12:02:51
>>242
破壊的な操作って?

250 :238:2011/01/28(金) 12:02:52
>>247
アクセス経験がほとんど皆無なものでして…おすすめでしたらこの際一から勉強してみます。
Excelのが扱いなれてるので一度そちらで試してみようかと思います。
しかし>>243で「>テーブル系からデータを引っ張ってくるという事をやった事がないので」という通りCSVから引っ張ってくる方法が現段階では理解できていませんが・・・

>>248
結構あると思いましたが少ない方なのですね
SQLも今後会得する予定ではいますがC自体未熟なので先に基本的な事を扱えるようになってからSqlServerを使ってみたいと思います。

251 :デフォルトの名無しさん:2011/01/28(金) 12:09:07
>>249 の続き
プログラムの部分はこうなっております。

List<int> mountCards;
void randam()
{
Random cRandom = new System.Random();
int index = cRandom.Next(mountCards.Count);
int n = mountCards[index] + 1;
mountCards.RemoveAt(index);
card = n;
}

252 :デフォルトの名無しさん:2011/01/28(金) 12:49:46
>>251
ちょっと何やってるかわかりにくいけど
ひょっとしてユニークな乱数を発生させる物がほしい?
>>242の言うように、 mountCardsを作り直せば、良いんじゃないかな?

あと、関数の中で毎回Randomを生成するんじゃなくて、UniqueRandomクラスみたいなのを作って
その中にList<int>とRandomを保持して、乱数を発生させるときだけリストにアクセスできるようにして
Gameクラスの中にUniqueRandomクラスを入れておけば、コンストラクタ呼び出すだけですべては元通りになる。

253 :デフォルトの名無しさん:2011/01/28(金) 12:56:09
>>249
元々有ったデータあるいはデータ構造が無くなってしまう操作

>>243
DBから読み込むのはSELECT文(…と言う答えでいいのか?)
DBそのものについては、C#だとMDBファイルを使うのがいいかも。
他に何かをインストールしなくても使おうと思えば使えるし

254 :デフォルトの名無しさん:2011/01/28(金) 13:12:26
つSQLite

255 :デフォルトの名無しさん:2011/01/28(金) 13:18:43
>>251
具体的に言うとこんな感じ
http://privatepaste.com/66e5699fa7

256 :デフォルトの名無しさん:2011/01/28(金) 13:26:40
>>245程度ならCSVでも問題無いけどな
まーSQLもやる予定なら、練習がてらいじっておいたほうが良いと思うけど

257 :デフォルトの名無しさん:2011/01/28(金) 13:28:24
データ元が何でもLinq使えばいんじゃねの

258 :デフォルトの名無しさん:2011/01/28(金) 13:37:58
>>255
ありがとうございます。
さっきのリストを消してそれを入れればいいんですよね?

259 :デフォルトの名無しさん:2011/01/28(金) 14:44:32
>>258
Listの中身をシャッフルしたいってだけなら
private List<int> _sourceList;
List<int> GetNewList()
{
Random r = new Random();
return _sourceList.OrderBy(a => r.Next());
}
でよくね?

260 :デフォルトの名無しさん:2011/01/28(金) 14:46:12
>>259はこっちのがいいかも
private List<int> _sourceList; // コンストラクタかどこかで初期化
private Random _random = new Random();
List<int> GetNewList()
{
return _sourceList.OrderBy(a => _random.Next());
}

261 :デフォルトの名無しさん:2011/01/28(金) 15:53:01
>>259
>>260
シャッフルじゃなくてリセットしたいんです。
Listで消えた乱数を元に戻したいんです。

262 :デフォルトの名無しさん:2011/01/28(金) 15:56:09
コピーしとけばいいじゃない・・・・

263 :デフォルトの名無しさん:2011/01/28(金) 15:59:42
>>258
乱数の重複を避ける意味であれば、元のListから出た数を削っていくってのが良い方法だと思う
乱数を出して重複してたら再度乱数を出し直しってのは処理時間が均一じゃないから微妙

264 :デフォルトの名無しさん:2011/01/28(金) 17:12:38
>>237
http://hibari.2ch.net/test/read.cgi/tech/1294921393/394-
の人
初心者だから優しくしてやれよ

265 :デフォルトの名無しさん:2011/01/28(金) 17:23:25
>>190
細かいことだけど、Cのシフト演算が算術シフトか論理シフトかは処理系定義
なので、Cにおいてsignedな整数の右シフトには移植性がない


266 :デフォルトの名無しさん:2011/01/28(金) 17:25:33
>>264
>>237は人の出してくれたソースは読まないのかな?
それなりに動くソースあったしその中に毎度リセットするものもあったろうに・・・

267 :238:2011/01/28(金) 17:47:49
>>253
>DBから読み込むのはSELECT文
どの様なコードで読み込ませればいいのかまだわからないのでわかりません・・・

>DBそのものについては、C#だとMDBファイルを使うのがいいかも。
アクセスは使った事がありませんが、>>256さんはCSVやSQLもいいのではないかとおっしゃって下さっているので各々の使い勝手を調べてみようt思います。


とりあえずは扱えるCSVでチャレンジして、成功したらMDBやSQLにもチャレンジしたいと思います。
ありがとうございました。
また行き詰ることがあると思いますがどうかその時はお力沿いお願いいたします。

268 :デフォルトの名無しさん:2011/01/28(金) 17:50:25
>>264
日本式だとへりくだって質問する
海外式だと「ヘイ!ブラザー!!俺のレベルだとどこから手をつけていいかわからないぜ!!
すまねーが触りだけでも解説してくれ!!」とか書くものだぜ

2chなんでかしこまる必要はないけど目を通すなどして通した結果わからない箇所を聞くとかしろよ
その辺ガン無視ならだれも答えてくれなくなるぞ

円の描画の質問者のようにw

ふらっとC#,C♯,C#(初心者用) Part68
http://hibari.2ch.net/test/read.cgi/tech/1294921393/190
のソースのDeckクラスにあるじゃん

これを流用すればいいだけだろ
http://ideone.com/lnYNB

269 :デフォルトの名無しさん:2011/01/28(金) 17:59:14
mp3をwavファイルとして読み込む方法ってありますか?

270 :デフォルトの名無しさん:2011/01/28(金) 18:27:35
>>269
サウンド関連も音を出力する直前ではwavになってるけど・・・ってそういう話じゃなくて
波形データが欲しいとかそういうこと?

>>237のレベルに合わせてみた
http://ideone.com/bcRte

271 :デフォルトの名無しさん:2011/01/28(金) 18:39:47
>>270
wav形式のファイルが欲しいです。音を再生する必要はありません

272 :デフォルトの名無しさん:2011/01/28(金) 18:55:36
ffmpegでも使えばいいじゃん
動画変換ソフトなどと銘打って実は作ってるのはフロントエンドだけで
ffmpegに丸投げフリーウェアは結構多いよ

273 :デフォルトの名無しさん:2011/01/28(金) 19:10:45
lame.dllでエンコードやらせたことあるけど、デコードも多分出来るんじゃないかな
メモリー上で出来るかは知らないが

274 :デフォルトの名無しさん:2011/01/28(金) 19:27:58
らめぇ・・・

275 :デフォルトの名無しさん:2011/01/28(金) 19:38:08
>>272,273
ありがとうございました
ffmpegとlame.dllを試してみます

276 :デフォルトの名無しさん:2011/01/28(金) 19:44:56
コーデック呼び出して生wav取り出せばいんじゃね
C#にそう云うの用意されてるかったらNOだけど

277 :デフォルトの名無しさん:2011/01/28(金) 21:15:27
xmlドキュメントで<exception>書く時、
あくまでそのメソッドが投げる例外だけ書きます?
それとも、中で呼び出すメソッドが投げる例外も書きますか?

278 :デフォルトの名無しさん:2011/01/28(金) 21:19:13
例外出るのわかってて原因も明らかなんだったらいったんキャッチして再スローしたほうが

279 :デフォルトの名無しさん:2011/01/28(金) 22:03:45
>>277
俺なら<exception>に書かれていない例外が発生した時点でそのライブラリを信用できなくなる

280 :デフォルトの名無しさん:2011/01/28(金) 22:21:00
>>277
俺なら<exception>に書かれていない例外が発生した時点でそのライブラリを信用できなくなる

281 :デフォルトの名無しさん:2011/01/28(金) 22:26:42
>>277
例外処理をしたいものだけ個別に書く
残りは全部一緒くた

282 :デフォルトの名無しさん:2011/01/28(金) 22:28:05
俺ならあらゆる例外を無視するのでどうでもいい

283 :デフォルトの名無しさん:2011/01/28(金) 23:37:11
silverlightでPathを使って任意の図形を作っています。
時計周りにLineを設定していき閉じた空間を塗りつぶそうと思ったのですが
塗りつぶしてくれません。

WinFormのGraphicsだと時計回りに設定していくと
閉じることもできたのですが仕様が違うんでしょうか?

284 :デフォルトの名無しさん:2011/01/28(金) 23:42:08
最後にzで閉じる必要がある

285 :277:2011/01/28(金) 23:47:14
ご意見ありがとうございます

流石に全部書いてるとえらいことになりそうなんで
基本はそのメソッドが投げるもの
publicメソッドはわかる限り書くってスタンスで行こうと思います

286 :デフォルトの名無しさん:2011/01/29(土) 00:06:14
>>285
自分で使うだけならかかんでもいい

287 :デフォルトの名無しさん:2011/01/29(土) 00:07:34
>>284
レスありがとうございます。

自己解決しました・・・(書き込むと・・という法則ですねw

最初の線だけ引かれてしまうダメパターン
    public Path GetPath()
    {
        GeometryGroup wp = new GeometryGroup();
        wp.Children.Add(this.GetLineGeometry(0, 10, 10, 0));
        wp.Children.Add(this.GetLineGeometry(10, 0, 90, 0));
        wp.Children.Add(this.GetLineGeometry(90, 0, 100, 10));
        wp.Children.Add(this.GetLineGeometry(100, 10, 100, 290));
        wp.Children.Add(this.GetLineGeometry(100, 290, 90, 300));
        wp.Children.Add(this.GetLineGeometry(90, 300, 10, 300));
        wp.Children.Add(this.GetLineGeometry(10, 300, 0, 290));
        wp.Children.Add(this.GetLineGeometry(0, 290, 0, 10));

        p.Stroke = new SolidColorBrush(this.StrokeColor);
        p.Fill = new SolidColorBrush(this.FillColor);
        p.StrokeThickness = this.StrokeThickness;
        return p;
    }
    private LineGeometry GetLineGeometry(double SX, double SY, double EX, double EY)
    {
        LineGeometry lm = new LineGeometry();
        lm.StartPoint = new Point(SX, SY);
        lm.EndPoint = new Point(EX, EY);
        return lm;
    }


288 :デフォルトの名無しさん:2011/01/29(土) 00:10:39
で、書き込んでから調べててこのページに行き当たったので
C#に置き換えてみました
http://msdn.microsoft.com/ja-jp/library/cc189068%28v=vs.95%29.aspx#wcpsdk_graphics_geometry_geometryandshapes

理想コードは次でw


289 :デフォルトの名無しさん:2011/01/29(土) 00:11:23
    Point[] Point = new Point[]
    {
        new Point( 0, 10), new Point( 10, 0), new Point( 90, 0), new Point(100, 10),
        new Point(100,290), new Point( 90,300), new Point( 10,300), new Point( 0,290),
    };
    public Path GetPath()
    {
        PathGeometry pg = new PathGeometry();
        PathFigure pf = new PathFigure();
        pf.StartPoint = this.Point[0];
        for (int i = 1; i < this.Point.Length; i++)
        {
            pf.Segments.Add(this.GetLineSegment(this.Point[i]));
        }
        pf.Segments.Add(this.GetLineSegment(this.Point[0]));
        pg.Figures.Add(pf);
        Path p = new Path();
        p.Data = pg;
        p.Stroke = new SolidColorBrush(this.StrokeColor);
        p.Fill = new SolidColorBrush(this.FillColor);
        p.StrokeThickness = this.StrokeThickness;
        return p;
    }
    private LineSegment GetLineSegment(Point Point)
    {
        LineSegment ls = new LineSegment();
        ls.Point = Point;
        return ls;
    }

いろいろ変わってるのでなれるまでがきつい・・・

290 :デフォルトの名無しさん:2011/01/29(土) 00:33:31
ところでVS2010はマシンスペックどれくらいいるだろ
SL4のアプリ作るので
VWD2010Expressを久々に起動したけどなんかいろいろもっさり

windowsXP SP3
Athlon64 のBE2350だったかな
AMD690GのIGP
メモリ3GB

291 :デフォルトの名無しさん:2011/01/29(土) 00:33:51
そんな行き当たりばったりのコード書くなよ

292 :デフォルトの名無しさん:2011/01/29(土) 00:36:36
>>291
では理想のパターンは?
SLの開発はこれからなので模索しながらやってるから
これでいいとは思ってないだけに理想系を教えてもらえると・・・

ほんとはBlend?に手を出すべきなんだろうけどさ・・・


293 :デフォルトの名無しさん:2011/01/29(土) 03:24:27
>>290
XPは相性が悪いらしい

294 :デフォルトの名無しさん:2011/01/29(土) 06:56:35
低スペックかどうかは微妙だが、Atom D510(X7SPA-HF+SSD+メモリ4GB)でも実用的な速度だったぞ
D3D非対応なせいか、WPFのウィンドウをドラッグするとヤバかったけど

295 :デフォルトの名無しさん:2011/01/29(土) 10:15:17
>>290
OS : WinVista+SP2(x86)
CPU : Intel Core2 Extreme X9650 @3.00GHz
RAM : 2GB*2 (DDR3)

今となっちゃ型落ち品だけど、特に速度的な不満は感じて無い

296 :デフォルトの名無しさん:2011/01/29(土) 10:45:00
>>291
とりあえず上であげた物はstaticなリソース化しましたが
実のところ簡単なグラフィックツールを作るので
動的にLineなどを追加したPathを作る必要があるので
c#で実現できないとダメな気がするんですがどうなんですかね?
動的に作ったPathもXAMLで記述できますかね?

>>293>>294>>295
なるほど
VS2010がWPFで作られてるとか聞いたのでもしや・・と思ってましたが

ところで簡単なメニューの実装とか何でされてますか?
SilverLightは図形にもマウス関連のイベントが用意されてるのでPathなどで
複雑な形のパーツを作って・・・とか出来そうな感じですが・・・

297 :デフォルトの名無しさん:2011/01/29(土) 11:09:20
最近Ribbonが意外と気に入ってる

298 :デフォルトの名無しさん:2011/01/29(土) 11:49:22
ルック&フィールは好きだけど、RibbonCommand作ったりするのがめんどくさくてあんま使わないな

299 :デフォルトの名無しさん:2011/01/29(土) 11:56:47
>>297
ああいうのはいいよね

>>298
まーそれほど複雑な階層を持たせるわけじゃないので自作でもいいんだけどさ〜


ところでSilverLightやWPFなりのまとめ方ってどうすればいいんだろ

Lineとかを継承して自作クラス作って一部処理を持たせるだけのクラス作ったけど
それをCanvasとかに入れてもオリジナルクラスと同じように表示してくれないだよな・・・

300 :デフォルトの名無しさん:2011/01/29(土) 12:03:22
SilverlightもWPFも関係ないだろ
結局、ドローツールの描画を実装する上で必要な機能というのは
図形を好きな場所に描画することだけなんであって、図形をどう管理するかとかは勝手
フレームワークに依存するような部分じゃない

301 :デフォルトの名無しさん:2011/01/29(土) 12:06:32
>>300
いや、図形をマウスでクリックしたところに置くだけならいいけどオブジェクトを管理して
オブジェクトのサイズ変更もやるし、複数のLineをマージしてPathという塊にもしたりと
いろいろイベントとか増えるんだがどうもうまくクラスに封入できないなあ・・と思って

今のままだとWinFormでいうところのForm1にべったりコード書いた状態になりそうでw

302 :デフォルトの名無しさん:2011/01/29(土) 12:13:11
ある程度複雑になるならLineクラスとかPathクラスとかキャンバスクラスとか独自に作って
好きなように管理したほうがいいと思う
継承するのは作法的にあんまりよろしくない

303 :デフォルトの名無しさん:2011/01/29(土) 12:21:29
>>302
>ある程度複雑になるならLineクラスとかPathクラスとかキャンバスクラスとか独自に作って
>好きなように管理したほうがいいと思う
やっぱりそうなるかねえ・・・

まあ1000オブジェクトも同時に扱わないだろうからなんとかなるとは思うんだが



304 :デフォルトの名無しさん:2011/01/29(土) 12:35:36
RibbonやるならCodePlexにあるFluent Ribbonの方がいいよね

305 :デフォルトの名無しさん:2011/01/29(土) 12:38:57
何となくリボン使ったことあるが、アイコンが余りにスカスカすぎて他のに変えたw

306 :デフォルトの名無しさん:2011/01/29(土) 20:18:10
たびたびすいません、教えてください・・・orz
皆さんに教えてもらって一度成功したのですが、そのコードをなんかバグって保存できませんでした。
で、再度同じやり方でコードを記述したのに今度は何故か全く成功しません。
あれからひたすらアレコレやってるのですが、本当もう全くわかりません。
すいません・・・なにが間違ってるのか教えていただけるほんと助かります。


http://amer.web.fc2.com/33.txt


ボタンを押すと「3」が押されるプログラム・・・のはずなのですが、うんともすんとも言いません。
(ネームスペースに二つのクラスがあるとダメ?と思ってネームスペースを分けて記述したら今度はエラーが出るし・・。)

307 :28=30=32:2011/01/29(土) 20:20:04
すいません、>>306ですが、>>28 >>30 >>32の件です。
書き忘れました<(_ _)>

308 :デフォルトの名無しさん:2011/01/29(土) 22:34:43
へえ

309 :デフォルトの名無しさん:2011/01/29(土) 23:07:14
>>306
>>29のリンク先にある//フォームがアクティブにならないようにするためのおまじない
ってとこ追加すればいいと思うよ。


310 :デフォルトの名無しさん:2011/01/30(日) 00:24:38
>>306
SendInputs、keybd_eventは単純にキーのエミュレーションをしてるので
アクティブウィンドウに直接キーが流れるよ。だから自分がアクティブウィンドウだと、まず意味がない。

送信先のHandleが取得できるならPostMessageでWM_KEYDOWNを送った方が何かと楽かと
自分もちょうど似たようなオートパイロットを作ってるが、何かとヘタレなので
Spy++で調べたHandleをテキストボックスに入力して、そこに対してBitBltなりPostMessageしてる

あと(UIntPtr)0って言うのがあるけど
IntPtr.ZeroとかIntPtr.Nullとか無かった?つうか、nullを渡せなかったっけ?
今時のコンパイラは賢いから、たぶんうまく最適化してくれてると思うけど
キャストしてる分、CPUリソース食うよ?


311 :デフォルトの名無しさん:2011/01/30(日) 00:33:46
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern bool PostMessage(IntPtr hWnd, Int32 Msg, IntPtr wParam, IntPtr lParam);

public static Boolean SendKey(IntPtr TgtControlHandle, Byte KeyValue)
{
return WinAPI.PostMessage(TgtControlHandle, WM_KEYDOWN, new IntPtr(KeyValue), IntPtr.Zero);
}

こんな感じ

312 :デフォルトの名無しさん:2011/01/30(日) 11:45:11
どんなオブジェクトでもIEnumerable<OBJECT>型に変換してくれるようなメソッドってないでしょうか?
ToEnum(obj).Select(o => /**/).First()というようなことがしたいのですが

313 :デフォルトの名無しさん:2011/01/30(日) 11:50:18
オブジェクト・型・メンバ
言葉の意味を正しく理解して使いましょう
列挙体のメンバの値を全て取得するにはEnum.GetValuesを使う

314 :デフォルトの名無しさん:2011/01/30(日) 11:57:20
プロパティの列挙とかかしら…

315 :デフォルトの名無しさん:2011/01/30(日) 12:27:15
じゃあリフレクションで

316 :デフォルトの名無しさん:2011/01/30(日) 12:32:38
stringを要素数1のIEnumerable<string>にしたいとか?
それぐらいyield使って拡張メソッド書けって話だけど

317 :デフォルトの名無しさん:2011/01/30(日) 12:48:33
最近困ったら拡張メソッド書いちゃうんだけど、よくない事なんですかね?

318 :デフォルトの名無しさん:2011/01/30(日) 12:55:33
無闇に使ってメソッドが衝突したら困るんじゃないかな

319 :デフォルトの名無しさん:2011/01/30(日) 12:57:26
必要であればやらない理由がない
必要でないならする理由がない

320 :デフォルトの名無しさん:2011/01/30(日) 13:02:02
乱用はダメ。計画的に使わないと「どこで定義したのか分からん」とか
「違う拡張メソッド読んじゃった」ということになりかねない。

でも拡張メソッドで済む処理 = そのオブジェクトを外から触って処理するだけでおkな処理。
拡張メソッド関数はpublic関数よりも疎なので頑強になる。

321 :>>312:2011/01/30(日) 13:06:47
>>316
そのとおりです。自分で書くとあとで忘れちゃいそうなので用意されているものがあるなら使いたいなと・・

322 :デフォルトの名無しさん:2011/01/30(日) 13:43:52
(new[]{value})でいいだろ

323 :デフォルトの名無しさん:2011/01/30(日) 13:51:43
ひょっとしてECMA/JavaScriptとそのJSONみたいに
なんでも感でも格納できるものがほしいってことなのかも

324 :デフォルトの名無しさん:2011/01/30(日) 13:54:54
>>322
その構文知らんかったwwwwすげえなwww

325 :デフォルトの名無しさん:2011/01/30(日) 14:00:28
それってC#1.0のころから使えたような....

326 :デフォルトの名無しさん:2011/01/30(日) 14:06:40
>C# 3.0 では、 配列の初期化時の、「new 型名[]」の型名を省略することが可能に成りました。

327 :デフォルトの名無しさん:2011/01/30(日) 14:09:44
そういうことじゃなくて、配列初期化子のこと。
型名の省略なんて本質的な問題じゃないじゃん

328 :デフォルトの名無しさん:2011/01/30(日) 14:12:46
new演算子に括弧付けるって発想が無かったのかもしれん

329 :306:2011/01/30(日) 14:14:42
>>309
>>310
>>311

あああ
ありがとうございます!
すいません、昨日質問だけ書いて、しばらくレスチェックしたあと寝てしまいました。

レスありがとうございます。

ちょっと、頂いたレスを元につくるのに時間かかるので、まずはどうもありがとうございました<(_ _)>
今からいじってみます。

330 :デフォルトの名無しさん:2011/01/30(日) 14:16:42
おっと、括弧は別に不要か

331 :デフォルトの名無しさん:2011/01/30(日) 14:20:04
new int[]{1,5,9}.ToList().ForEach(p=>test(p))とかユニットテストでは便利だよな

332 :デフォルトの名無しさん:2011/01/30(日) 14:24:35
new List<int>() {1,5,9}.ForEach(p=>test(p))とかユニットテストでは便利だよな

333 :デフォルトの名無しさん:2011/01/30(日) 14:28:48
テストなら結果も用意しないといけないからforブロック使うけど

334 :デフォルトの名無しさん:2011/01/30(日) 14:43:59
>>327
int[] x = { 1,2,3}; // 1.0 時代からできた
int[] y;
y = { 1,2,3 }; // これは昔から/今でもダメ
var z = new[] { 1,2,3 }; // 3.0 でできるようになったのはこれ
y = new[] { 1,2,3 }; // 3.0 以降、これならOK

335 :デフォルトの名無しさん:2011/01/30(日) 15:04:33
>>332
テスト対象のメソッドを呼びっぱなしなら、と言う注釈付きでしょ

336 :デフォルトの名無しさん:2011/01/30(日) 15:50:43
みんなはNUnitとか使わないの?

337 :デフォルトの名無しさん:2011/01/30(日) 15:52:01
自宅では使ってるよ
会社ではVBもC#をも使ったことがないよ

338 :デフォルトの名無しさん:2011/01/30(日) 16:00:23
VS Proの単体テストだなあ
ホントはカバレッジとか測りたいんだけど

339 :デフォルトの名無しさん:2011/01/30(日) 16:45:08
右辺の型から左辺の型を推論するのが普通になってるから
今作り直したら int[] x = { 1, 2, 3 }; は無くなるだろうな

340 :デフォルトの名無しさん:2011/01/30(日) 16:58:12
>>339
そんなことないでしょ。
例えばdoubleの配列をintの変数で初期化するとき、わざわざキャストしろって?

341 :デフォルトの名無しさん:2011/01/30(日) 17:01:55
Scala みたいになるってことだろ

342 :デフォルトの名無しさん:2011/01/30(日) 17:11:00
>>340
そのときはnew double[]と書けばいいだけ
左辺の型を明示して変数宣言と同時に初期化する場合にしか使えない構文なんてダサすぎ

343 :デフォルトの名無しさん:2011/01/30(日) 17:15:30
varがあれば要らないって言いたいわけか。
ダサいかどうかはともかく、まあ確かにそういう考え方もあるかも。

344 :デフォルトの名無しさん:2011/01/30(日) 17:27:15
というか似たような省略構文のバリエーションがいくつもあるのがキモい
new[]では右辺だけで型が決まってるんだから左辺にvar使うかどうかはこの場合関係ないよ
デリゲートやラムダ式は例外的に代入先の型で推論できるけど
それと同じくらいint[] x = {1,2,3};と書けることが重要か?

345 :デフォルトの名無しさん:2011/01/30(日) 17:33:40
Cの構文がベースなんだから、C言語が21世紀に開発されたらって前提が必要になってくるな

346 :デフォルトの名無しさん:2011/01/30(日) 17:35:14
ほんと言語厨マジうぜぇ
使い慣れた自分の見やすいやり方でやる

347 :デフォルトの名無しさん:2011/01/30(日) 17:40:33
C#はint* a, b, c;と書くと全てint*型になるという地味に革命的な改変が行われてるぞw
*を型の一部にしてしまった方が文法は簡単だろうから、
滅多に使わないものの互換性のために文法を汚したくなかったんだろうな

348 :329:2011/01/30(日) 17:41:47
お影さまで無事できました。
ウィンドウをアクティブにすればよかったのですね。

>>310-311
に書いてあることは私には少しむつかしいようです。今必死で調べて解読しています。

あるマクロツールで特定のキーを押したら、登録したマクロ発動するってのがあります。
そのマクロを時間がきたら発動させるために、こんな「キーを押す」というプログラムを作っています。

ところがなぜか、そのマクロツールだけはC#上からキーを押す動作を実行しても
反応しないようです。

なぞですが、310-311にヒントが解決策があるかもしれません。
ちょっと頑張ってみます。

どうもみなさん、ご親切にありがとうございました。

349 :デフォルトの名無しさん:2011/01/30(日) 17:45:40
配列(リスト)の省略記法なんかは、重要性が高いかどうかはともかく、
ニーズはあるとは思うけれどね。

350 :デフォルトの名無しさん:2011/01/30(日) 17:50:50
関係ないかもしれないけど、相手のプロセスがRegisterHotKeyしていた場合SendKeysって有効なの?
全く持ってC#の話題じゃないな

351 :デフォルトの名無しさん:2011/01/30(日) 17:55:47
>>348
そいつはGetKeyboardStateでも使ってるのかな?
その場合どうやれば他アプリからキー押した扱いにさせられるのか知らないけど

352 :デフォルトの名無しさん:2011/01/30(日) 18:09:01
>>342
あやまれ!ラムダ式にあやまれ!

353 :デフォルトの名無しさん:2011/01/30(日) 18:18:24
ラムダの型推論は引数に渡すときも既に宣言済みの変数に代入する時も機能するじゃん。
C風の配列初期化ほど限定的じゃない。
varとは逆に、List<int> list = { 1, 2, 3 }; とか object obj = new(); みたいに統一するのもアリだと思うよ。
実際Javaではこっちの方向で検討されてたらしいし。

354 :デフォルトの名無しさん:2011/01/30(日) 18:27:28
もう実装されてる機能の構文を変えるとかありえないから余所でやれ

355 :デフォルトの名無しさん:2011/01/30(日) 18:31:11
はい

356 :デフォルトの名無しさん:2011/01/30(日) 19:02:14
>>355
はいじゃ(ry

C#は後発で、シュガーたっぷりなんだから、同じことするのに複数の構文があるのは当然だろ。
var array = new String[]{"a","b","c"}; でも
String[] array = {"a","b","c"};でも
string[] array = new string[]{"a","b","c"} でも
何でもいいじゃない。

個人的にはVB.netの方が遙かに難しいぞw
Dim array as integer() ' ok
Dim array() as integer ' ok
Dim array(10) as integer 'ok
Dim array as integer(10) ' ng
Dim array as integer() = New integer(10) ' ng
Dim array as integer()
array = New integer(10) ' ng

過去とのしがらみのおかげで、細かいところで融通が利かなくなってる。
Pascalの時には気になってなかったintegerがかったるすぎる。Int32ってかいてよかですか?

357 :デフォルトの名無しさん:2011/01/30(日) 19:18:42
VBで要素数指定して空の配列をNewしたいときは
New Integer(10){}と書く

358 :デフォルトの名無しさん:2011/01/30(日) 19:25:07
4月からVB.NETの仕事だけど、C#との対応表みたいのあればいいのに。
amazonでそういう本あったけど、出版日が古い。

359 :デフォルトの名無しさん:2011/01/30(日) 19:27:21
>>357
さすがに突っ込み待ち?

360 :デフォルトの名無しさん:2011/01/30(日) 19:32:06
つっこみって何が?

{}←がないとコンストラクタに引数を渡しているのか配列の要素数なのか区別できないからマジで必要。

361 :デフォルトの名無しさん:2011/01/30(日) 19:35:37
Dim array as integer() = New integer(10) ' ng

Dim array() as integer = New integer(10){} ' ok

はぁーん
こんなの使ってたら病気になるな
VB6プログラマなんて病気野郎しかいないけど

362 :デフォルトの名無しさん:2011/01/30(日) 19:35:47
>>356
オプションによるけどVBも型推論の例くらい挙げてやれよ

363 :デフォルトの名無しさん:2011/01/30(日) 19:36:29
>>361
それ.netでしょ?

364 :デフォルトの名無しさん:2011/01/30(日) 19:36:59
Dim array = New integer(10){}

これは書けるはず
Strict Onでもちゃんと通るはず

365 :デフォルトの名無しさん:2011/01/30(日) 19:37:27
>>363
今VB6使ってるなら速やかに死ね

366 :デフォルトの名無しさん:2011/01/30(日) 19:38:00
VB6は宣言と同時に代入はできんから的外れな感じがする
まあ2行目と3行目は関係なんだろうが

367 :デフォルトの名無しさん:2011/01/30(日) 19:38:07
どこにVB6の話題が出てんだよ
VB.NETの話だろ
病気か?

368 :デフォルトの名無しさん:2011/01/30(日) 19:38:34
>>364
2010以降のみだけどね

>>357
それ空の配列じゃないでしょ。

369 :デフォルトの名無しさん:2011/01/30(日) 19:39:14
それ.NETの話でしょ?って、初めから.NETの話だと思うけど。

370 :デフォルトの名無しさん:2011/01/30(日) 19:40:13
2010だと暗黙的な改行が通るようになったから属性とかラムダも書きやすくなったよ>VB
多少は進歩してるよ

371 :デフォルトの名無しさん:2011/01/30(日) 19:41:04
>>368
VBも2008から型推論なかったっけ?
2008だとOption InferはデフォルトだとOffだけど
2010からはOnがデフォルトだったと思う

372 :デフォルトの名無しさん:2011/01/30(日) 19:42:45
2008でも通ったような気がする
Inferなんてオプション弄ったかどうかは覚えてない

373 :デフォルトの名無しさん:2011/01/30(日) 19:44:21
>>369
VB6の話をしてる人がいますが。

374 :デフォルトの名無しさん:2011/01/30(日) 19:45:12
>>373
そいつはスレ違いだわな。

375 :デフォルトの名無しさん:2011/01/30(日) 19:45:56
自動プロパティもいつの間にか導入されたのか
次はあの野暮ったいイベント関連の構文に手付けて欲しい

376 :デフォルトの名無しさん:2011/01/30(日) 19:46:11
いきなりVB6の話題をあげて病気とか叫んでいる奴が上にいるけど
そいつこそがマジで病気っぽいんだけど

377 :デフォルトの名無しさん:2011/01/30(日) 19:47:18
初心者スレにも昨日同じようなのがいたな

378 :デフォルトの名無しさん:2011/01/30(日) 19:50:25
コボラーが未だに生きてるんだからVB6もあと10年は生き続ける

379 :デフォルトの名無しさん:2011/01/30(日) 19:52:03
C#の方が先に無くなるんじゃないかと思うw。

380 :デフォルトの名無しさん:2011/01/30(日) 19:52:47
>>378
まあまだVBAはVB6のエンジンなんだよね確か。
そういう意味では確かに

381 :デフォルトの名無しさん:2011/01/30(日) 19:58:00
OfficeをWPF化するタイミングでVBAを.NET系に(ry
…いや、なんでもない

382 :デフォルトの名無しさん:2011/01/30(日) 19:59:27
OfficeのVBAなんぞ廃止して、全部LightSwitchにしてしまえー

つか、VB6かVB.NETかに関わらず
VBの話題自体、スレ違いなんじゃね?

383 :デフォルトの名無しさん:2011/01/30(日) 20:04:43
誰が言うかなと思ってたけど結構かかったな

384 :デフォルトの名無しさん:2011/01/30(日) 20:06:45
配列の型推論の当たりからすでに現状のC#無視した展開になってた

385 :デフォルトの名無しさん:2011/01/30(日) 20:07:25
>>378
うちのメインの商品がVB6だけど、Win8でVB6の対応がなくなるってことで
.NETに移行中。
つい2,3年まえに、VB2からVB6への移植の仕事もあったからほんとうに
どうしようもなくなるまで移行しないところもあるだろうけど。

386 :デフォルトの名無しさん:2011/01/30(日) 20:16:47
工夫すれば動くものを金出してまで移行する経営者はいないわな

387 :デフォルトの名無しさん:2011/01/30(日) 20:22:11
>>382
まあそうだなw
C#のちょっとしたことで嘆いている人がいるみたいだから
隣の芝は青い・・・んじゃなくて、茶色いところをだな…

友達のVB.netな課題をみてあげてるけど、正直泣きたいです。
(+ せんせいのおてほん の酷さも泣ける)

VBAの話も同意。VS Expressを無料配布してるなら
それなりで、あまりよろしくないIDEを付属させて、.netなほかの言語でくめるようにした方が絶対幸せだ。

あと、すっかり重要なことを言い忘れていたが、「10個分の配列を作ったつもりが、.Lengthプロパティが11」
な… 何を言っているか(ry 頭がどうにかなりそうだった…

388 :デフォルトの名無しさん:2011/01/30(日) 20:25:27
>>387
VBで配列のインスタンスを作る時には New Integer(size - 1){}みたいに
常に明示的に-1を付ける習慣にした方がいいね。

389 :デフォルトの名無しさん:2011/01/30(日) 20:27:12
>>386
まあでも計画的に移行したほうが結局安くはなると思う。
VB2からVB6への移行だって、すでにVB6終わってるし。

390 :デフォルトの名無しさん:2011/01/30(日) 20:29:15
>>388
最大インデックスを指定する、というのは理解できる仕様なのだが
要素数0の配列作るのに-1指定するのは気持ち悪いなー

391 :デフォルトの名無しさん:2011/01/30(日) 20:32:12
>>390
その場合はNew Integer(){}でOK.

392 :デフォルトの名無しさん:2011/01/31(月) 03:12:49
ポーカーの者です
返信遅くなりました
何とか完成しました
(出来が酷いですけど・・・)
自分でもいやになってきました・・・
長いし・・・
初心者だし・・・
判定とかぜんぜんできてねぇ

393 :デフォルトの名無しさん:2011/01/31(月) 03:38:21
それでいいんだ
完成させるってことが大事だ

394 :デフォルトの名無しさん:2011/01/31(月) 03:42:42
次に何か作るときは少しずつ満足感が増えてくる

395 :デフォルトの名無しさん:2011/01/31(月) 09:08:28
次のソフト書き終わった後に今のそのポーカーみてみ?
別人のソースだからw

396 :デフォルトの名無しさん:2011/01/31(月) 10:05:40
判定部分のコード上がってた気がしたが見てないんだな



397 :デフォルトの名無しさん:2011/01/31(月) 19:24:44
>>109
ありがとうございます
DataRowはやっぱ要素取り出さないと比較できませんね…

398 :デフォルトの名無しさん:2011/01/31(月) 19:31:32
いま、Interfaceを継承したロジックのみのクラスを作っててVSTSで単体テストしてるんですが
うまくいかなくて悩んでます

継承元Interfaceに実装されてるpublicメソッドのテストしたいのです
継承元Interfaceをnewして、newしたテスト対象クラスをinterface型にキャストすればいいのはわかるのですが
テスト対象クラスのprivate変数に値を代入してテストパターンを変えないといけないんです

プライベートアクセサを生成してもpublicメソッド使えないし、PrivateObjectをテスト対象クラスでnewして
GetInvokeメソッド使ってみたけど、対象メソッドが見つかりませんでしたotr

なにかうまい逃げ道はありませんでしょうか?
 

399 :デフォルトの名無しさん:2011/01/31(月) 19:36:49
何を言っているのかわからない
サンプルコードを下記サイトでもどこでも貼ってから説明してくれ
ttp://ideone.com/

400 :デフォルトの名無しさん:2011/01/31(月) 19:44:05
>>398
よくわからないけどprivateメンバーをリフレクションで無理矢理変更してやればいいんでない?

401 :デフォルトの名無しさん:2011/01/31(月) 20:00:41
//継承元のInterface
interface IMiserable
{
string Hiroyuki();
}

//継承先のクラス(テスト対象のクラス)
class AClass : IMiserable
{
private int _date = 20100131; ←テストコード中でアクセスして値を変えたいメンバ
public IMiserable.Hiroyuki()  ←テストしたいメソッド
{
(処理)
   return XXX;
}

//テストクラス中のテストメソッド
[TestMethod()]
[DeploymentItem("Doukaku.exe")]
public void SumWithStateTest02()
{
AClass_Accessor target1 = new AClass_Accessor();
IMiserable target2 = new AClass();
}

プライベートアクセサでやろうとすると
target1._dateは使えるけど、target1.Hiroyuki()やtarget1.IMiserable.Hiroyuki()は使えません
テスト対象クラスを宣言しようとすると、privateな_dateにアクセスできないのでうまくいきません
privateな_dateにアクセスしつつ、.IMiserable.Hiroyuki()をテストコード中で使う方法はないでしょうか?
ってかんじでわかるでしょうか??

402 :デフォルトの名無しさん:2011/01/31(月) 20:07:03
リフレクション使えば?

403 :デフォルトの名無しさん:2011/01/31(月) 20:09:45
_dateにアクセスするSetDate_TESTONLY()メソッドを追加するとか

[Conditional("TEST")]
SetDate_TESTONLY()
{}

こんな感じ

404 :デフォルトの名無しさん:2011/01/31(月) 20:10:31
DynamicObject継承してラッパー作るのが手軽だと思う
実装はもちろんリフレクションで

405 :デフォルトの名無しさん:2011/01/31(月) 20:22:19
>>401
VSTSをよく知らないんだけど、
AClass_Accessorは自動生成されるの?

406 :デフォルトの名無しさん:2011/01/31(月) 20:24:17
>>405
されます
テスト対象のメンバがプライベートなら勝手に作られます 使わなくともいいですが

407 :デフォルトの名無しさん:2011/01/31(月) 20:34:30
>>406
それならAClass_Accessorから元のクラスの参照へアクセスする手段が用意されてないとおかしいから調べてみたら?

408 :デフォルトの名無しさん:2011/01/31(月) 20:36:44
まーたMSは微妙ツールの迷路に顧客迷いこませて囲い込みしてんのかwww
おとなしくNUnit使っとけよ
会社の命令だったら乙

409 :デフォルトの名無しさん:2011/01/31(月) 20:41:39
ていうか自力でリフレクションできるようになれ

410 :デフォルトの名無しさん:2011/01/31(月) 20:45:37
>>404
kwsk

411 :デフォルトの名無しさん:2011/01/31(月) 20:51:55
.NET4限定だけど
dynamic accessor = new DynamicAccessor(new AClass());
accessor._date = 100;
みたいな感じでdynamicでプロキシ使ってリフレクションを隠せる
DynamicObjectの実装は簡単だからMSDN読め

412 :デフォルトの名無しさん:2011/01/31(月) 21:11:23
>>411
d
dynamicキーワードで調べてみるわ

413 :デフォルトの名無しさん:2011/01/31(月) 21:26:36
>>412
DynamicObjectをMSDNで調べろって書いてあるのになんでだよw

414 :デフォルトの名無しさん:2011/01/31(月) 21:52:23
いや、dynamicキーワードから知らんし

415 :デフォルトの名無しさん:2011/01/31(月) 21:54:57
.NET4よさげだな
で、これはXPサポートしてるの?

416 :デフォルトの名無しさん:2011/01/31(月) 21:58:06
そんくらいしらべろよ

必要システム

* サポートされているオペレーティング システム : Windows 7; Windows Server 2003 Service Pack 2; Windows Server 2008; Windows Server 2008 R2; Windows Vista Service Pack 1; Windows XP Service Pack 3

o Windows XP SP3
o Windows Server 2003 SP2
o Windows Vista SP1 以降
o Windows Server 2008 (Server Core の役割のみ ではサポートされません)
o Windows 7
o Windows Server 2008 R2 (Server Core の役割のみ ではサポートされません)

* サポートされているアーキテクチャ:
o x86
o x64
o ia64 (WPF など、一部の機能は ia64 ではサポートされていません)
* ハードウェア要件:
o 最小限の推奨要件: Pentium 1 GHz 以上、512 MB 以上の RAM
o ディスクの最小空き容量:
+ x86 ? 900 MB
+ x64 ? 2.1 GB

417 :デフォルトの名無しさん:2011/01/31(月) 22:01:34
それより.NET4知らなかったんだったらVSのバージョンは大丈夫なのか?w
C#4.0も.NET4もVS2010でないと使えないぞ

418 :デフォルトの名無しさん:2011/01/31(月) 22:11:17
あ、僕コンソール派なんで大丈夫です^^

419 :デフォルトの名無しさん:2011/01/31(月) 22:13:05
>>4408
NUnitでどう解決すんだよ


420 :デフォルトの名無しさん:2011/01/31(月) 22:21:37
>>419
>>411じゃね?
それかリフレクション

VSTSはよく知らんけど、〜_Accessorなんて
テスト中に違うクラスのプライベートメンバ使いたくなったら速攻破綻するのによくやるよな
そのクラスの〜_Accessorも生成してファイルが増えて複雑になる一方だ

421 :デフォルトの名無しさん:2011/01/31(月) 22:21:54
objectで渡ってくるインスタンスを元の型に戻す場合はどのように記述すればいいんでしょうか?
GetTypeで元の型が取得できるようですが・・・

422 :デフォルトの名無しさん:2011/01/31(月) 22:27:07
object a = Hoge();
元の型 b = (元の型)a;
失敗する可能性があるなら
元の型 b = a as 元の型; としてnullかどうか調べる
元の型が分からない場合は元の型に戻す必要はないはず

423 :デフォルトの名無しさん:2011/01/31(月) 22:32:27
しかし(type)と as type と動きが微妙に違うやり方があるって
言語設計上失敗じゃないのか?

424 :デフォルトの名無しさん:2011/01/31(月) 22:38:14
asはダウンキャスト専用の演算子。
失敗する可能性があるダウンキャストをするとき、javaだと
if (a instanceof Type) { (Type)a … }
が頻出パターンなんだけど、これだとinstanceofとキャストで二回型チェックが行われて非効率なので
わざわざ導入された。

425 :デフォルトの名無しさん:2011/01/31(月) 22:38:34
>>422
objectのままだと必要な情報が見えなくて、元の型もその調べたい場所だと
範囲は決まってますが数種類あるんです

やっぱりif文などでTypeを調べて処理するしかないですかね?

426 :デフォルトの名無しさん:2011/01/31(月) 22:39:21
>>420
VSがテスト用に自走生成するだけだぜ。
多くの場合は自分で書かなくてもいいから楽だけどな。
ファイルは一つだけだったと思うよ。
追加でほしければ自分で追加もできたような。


427 :デフォルトの名無しさん:2011/01/31(月) 22:40:06
プライベートアクセサー試してみたけど、普通にパブリックメンバーもあるし
コンストラクターでラップするインスタンス指定できる
さらにはTargetプロパティも公開してるからなんとでもなるじゃん

428 :デフォルトの名無しさん:2011/01/31(月) 23:04:32
とりあえず困ったらリフレクションと考えるのはド素人

429 :デフォルトの名無しさん:2011/01/31(月) 23:07:28
BindingFlags.NonPublic | BindingFlags.Instanceとか躊躇なく書いちゃう素人は嫌だな

430 :デフォルトの名無しさん:2011/01/31(月) 23:17:33
テストのために余計なコードを生成する方がおかしい
リフレクションが使われるようなケースの中にはコード生成する方が適切な場合も多いけど、
この場合は動的にやれるならそのほうが適切だろ

431 :デフォルトの名無しさん:2011/01/31(月) 23:17:42
>>429
それが書けるようになるまでちょっとした試行錯誤が必要だしなwww

432 :デフォルトの名無しさん:2011/01/31(月) 23:20:11
>>430
コード書かずに静的にやれる、以上

433 :デフォルトの名無しさん:2011/01/31(月) 23:37:19
こういうラッパークラスってコンポジットパターンとか複雑なオブジェクト構造の場合はどうすんの?

434 :デフォルトの名無しさん:2011/01/31(月) 23:42:23
あくまでテスト用だから気にしない
最近のMSのサンプルなんかでもテスト用モックの動的自動生成とかやってるけど
当然そういうのは複雑な構造になるとダメ
でもそもそもテストを考えるならa.b.cみたいに階層掘らせるような構造にしちゃダメ

435 :デフォルトの名無しさん:2011/01/31(月) 23:52:50
静的ユーティリティクラスの自動生成にはきな臭いものを感じる
簡単なものをわざわざ複雑にしようとしているようにしか見えない

ただのアクセサなら>>411で十分だと思うんだが・・・

436 :デフォルトの名無しさん:2011/02/01(火) 00:06:46
>>427
プライベートアクセサで、「元クラスのパブリックメソッド」以外に、「interfaceを継承して元クラスに明示的に実装されてるメソッド」
にアクセスできましたか?できたらコード例をお願いします><

437 :デフォルトの名無しさん:2011/02/01(火) 00:55:55
そりゃ .NET4ならそれがいいけどね。


438 :401:2011/02/01(火) 00:56:48
みなさんの助言聞いて、こんな案を考えました
明日やってみます
ありがとうございました
※当方の環境は.net3.0なのでDynamicObjectは使えない

using System.Reflection;

//テストクラス中のテストメソッド
[TestMethod()]
[DeploymentItem("Doukaku.exe")]
public void TestMethod01()
{
AClass c1 = new AClass();
Type tp = typeof(AClass);
FieldInfo info = tp.GetField("_date", BindingFlags.SetField | BindingFlags.NonPublic | BindingFlags.Instance);
info.SetValue(c1,20110201);
IMiserable it = (IMiserable)c1;
string actual = it.Hiroyuki();
string expected = "aaa";
Assert.AreEqual(actual,expected);
}

439 :401:2011/02/01(火) 01:33:28
つーか単体テストクラス内じゃなくてもかけますね
なおしました

using System.Reflection;


public void Method01()
{
AClass c1 = new AClass();
Type tp = typeof(AClass);
ConstructorInfo ci = tp.GetConstructor(new Type[]{});
object target = ci.Invoke(new object[]{});

FieldInfo info = tp.GetField("_date", BindingFlags.SetField | BindingFlags.NonPublic | BindingFlags.Instance);
info.SetValue(target,20110201);
IMiserable it = (IMiserable)c1;

//デバッグ
label1.Text = (int)info.GetValue(target).ToString();
label2.Text = it.Hiroyuki()

}
以上のコードで、interfaceを継承したクラスのinterface側メソッドのテストができました
(privateメンバへのアクセスあり)



440 :427:2011/02/01(火) 06:57:10
>>436
var accessor = new AClass_Accessor();
var target = (AClass)accessor.Target;
var miserable = (IMiserable)target;

あるいは
var target = new AClass();
var miserable = (IMiserable)target;
var accessor = new AClass_Accessor(new PrivateObject(target));

441 :デフォルトの名無しさん:2011/02/01(火) 09:25:12
>>436
何がアクセスできましたかだよ

.net1.0からインターフェイスの明示的な実装へのアクセスする場合は
そのインターフェイス型にキャストするって決まってんだろ

お前の勉強不足を俺らのせいみたいに言うんじゃねーよ屑が

442 :デフォルトの名無しさん:2011/02/01(火) 09:41:28
もちつけ

443 :427:2011/02/01(火) 12:36:44
401は>>438でキャスト使ってるように見えるんだが

444 :デフォルトの名無しさん:2011/02/01(火) 12:42:28
Assert.AreEqualでNUnitかと思ったけどVSTSにも同名メソッドがあるんだなぁ

445 :デフォルトの名無しさん:2011/02/02(水) 06:45:07
.NET4で文字の幅を取得するにはどうすれば良いのでしょうか
以前はTextRendererのMeasureTextをつかっていたのですが
無くなってしまったので代わりになるものを教えてください

446 :デフォルトの名無しさん:2011/02/02(水) 06:52:12
>>445
Graphcis.MeasureString()じゃね?調べてないから詳しくは知らん

447 :デフォルトの名無しさん:2011/02/02(水) 06:59:01
>>446
ありがとうございます、試してみます

448 :デフォルトの名無しさん:2011/02/02(水) 10:03:00
いくつか調べてみたのですが
FormattedTextやglyphTypeface.AdvanceWidths利用すると
TextRenderer.MeasureTextの文字幅とは違った値が返されます
また、TextBlock.ActualWidthでは計測自体が出来ず、0が返ってきます
デザインされた文字ではなく単にTextBoxにMS Pゴシック,12ポイントで
表示した際の文字幅が欲しいだけなのですが、何か良い方法はないでしょうか




449 :デフォルトの名無しさん:2011/02/02(水) 10:41:03
FotmattedTextでいいんじゃね
ただしWPFのフォントサイズはpx単位だからptからは変換する必要がある px=pt*96/72
ちなみにTextRenderer.MeasureTextとかGraphics.MeasureStringは周囲の余白を含むので大きくなりがち

450 :デフォルトの名無しさん:2011/02/02(水) 11:06:09
>>449
ありがとうございます、無事文字幅を取得することが出来ました
emSizeの単位を理解していなかったことと、
TextFormattingMode.Displayを指定していなかったことが、
正しいpixelを取得できなかった原因でした


451 :デフォルトの名無しさん:2011/02/02(水) 15:41:04
もう一つ質問させてください
FormattedTextを使って、文字幅の取得を行い、空白などを挿入することでMS Pゴシック,12ポイントの環境下で
アスキーアートを整形するプログラムをWPFで作っていたのですが、FontFamily="MS PGothic"と指定しても
TextBoxに表示した際に空白の幅が本来の半角5、全角11の通りになりません
WinFormのTextBoxでは正常な横幅でAAが表示されていたのですが、
WPFで同じように表示するにはどうすれば良いでしょうか

452 :デフォルトの名無しさん:2011/02/02(水) 17:34:27
それWPFのバグっぽい仕様のハズ
TextBlock系使ってる限り逃れられない

453 :デフォルトの名無しさん:2011/02/02(水) 17:42:08
ということはまだWPFに移行しないほうがいいのかな

454 :デフォルトの名無しさん:2011/02/02(水) 19:27:55
TextRendererでできてたんだったらそのままでいいじゃん
Bitmapに描画してWPFのBitmapSourceにコピーするだけ

455 :デフォルトの名無しさん:2011/02/02(水) 19:33:10
そもそもWPFは始まりもせずに終わコン

456 :デフォルトの名無しさん:2011/02/02(水) 19:46:09
>>455
まじかよ、MSの新技術はほんとアテにならないな

457 :デフォルトの名無しさん:2011/02/02(水) 20:05:27
ここまで俺の自演

458 :デフォルトの名無しさん:2011/02/02(水) 20:12:02
ちょっと信じちゃったじゃないですか
実際のWPFはどうなんですか?

459 :デフォルトの名無しさん:2011/02/02(水) 20:38:23
今は選択肢としてありじゃないかな。

将来性で言うと、たぶん、今WPFが持ってる機能が全部Silverlightに引き継がれていって、
そうなった時にはWPF消える(けど、今身に着けた知識は使える)。

460 :デフォルトの名無しさん:2011/02/02(水) 21:01:41
>>459
WPFが消えることはない。WPFが消えたらSilverlightも自動的に消える。

461 :デフォルトの名無しさん:2011/02/02(水) 21:04:12
C#が使えるのにWinForm時代とあれこれ変わってるのが困る・・・

462 :デフォルトの名無しさん:2011/02/02(水) 21:47:25
>>459
それって今C#で書かれてるWPFの機能をアンマネージコードで実装しなおすことを意味するんだよな
SilverlightってWinFormsなんかよりずっとアンマネージコードに依存してるんだぜ

463 :デフォルトの名無しさん:2011/02/02(水) 23:42:55
SLはMacでも動く様にする為に、色々無理してるからな。
後、ランタイムサイズを抑える都合で
かなりイベントやライブラリを削ってる。

せめて、イベントだけでもWPFと等価にして欲しいよなあ。

464 :デフォルトの名無しさん:2011/02/03(木) 11:29:28
WPFって至る所で文字がぼけぼけなるのがどうにも

465 :デフォルトの名無しさん:2011/02/03(木) 11:36:16
ビットマップフォントは時代遅れですよ

466 :デフォルトの名無しさん:2011/02/03(木) 11:41:12
WPFのフォントがぼやけるってビットマップフォントを使うと起きるの?起きた事ないんだが

467 :デフォルトの名無しさん:2011/02/03(木) 11:44:27
ClearTypeじゃなくてPDFみたいに縦のスムージングされるからじゃないか

468 :デフォルトの名無しさん:2011/02/03(木) 11:52:56
>>464
AAかけるからしかたないんじゃないの?

469 :デフォルトの名無しさん:2011/02/03(木) 11:54:57
つうか画像のデフォルトがボケボケ仕様なのは勘弁して欲しい

470 :デフォルトの名無しさん:2011/02/03(木) 13:58:57
.NET4で改善された

471 :デフォルトの名無しさん:2011/02/03(木) 14:06:04
ほう?一応公約は果たしたのか

472 :デフォルトの名無しさん:2011/02/03(木) 14:32:09
VS2010にWPF4を採用するという荒療治をやったからな
ttp://blogs.msdn.com/b/text/archive/2010/04/13/blind-comparison-vs2008-vs-vs2010.aspx

473 :デフォルトの名無しさん:2011/02/03(木) 17:13:33
質問です
webBrowser.Navigateを使ってURL呼び出しした後、webBrowser1.Refresh(WebBrowserRefreshOption.Completely)で
更新をかけていますがキャッシュを読み込んでいるようです

下記URLを参考にして
ttp://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200409/04090095.txt
"http://www.hoge.net/hoge.pl?dummy="+DateTime.Now.ToString("yyyyMMddHHmm")
の形でやってみてもキャッシュを読み込む結果になってしまいました。

当方環境は
CPU:Core 2 Duo E8600
OS:WinXP 32bit
メモリ:3.25G
使用ソフト:VisualStudio2008

private void reloadpage()
{
while (stopflag == 0)
{
reloadpage_bg();
if (stopflag == 1)
{
break;
}
else
{
Thread.Sleep(60000);
}
}
stopaction();
}
(続く)

474 :デフォルトの名無しさん:2011/02/03(木) 17:15:33
private void reloadpage_bg()
{
string webad = "";
webad = "http://www.hoge.net/hoge.pl?dummy="+DateTime.Now.ToString("yyyyMMddHHmm");
webBrowser1.Navigate(webad,false);
webBrowser1.Refresh(WebBrowserRefreshOption.Completely);
System.Text.Encoding dest = System.Text.Encoding.UTF8;
len = (int)webBrowser1.DocumentStream.Length;
string webcode ="";
//webcode = webBrowser1.DocumentText;
byte[] buf = new byte[len];
webBrowser1.DocumentStream.Read(buf, 0, len);
Encoding ec = Encoding.GetEncoding(webBrowser1.Document.Encoding);
byte[] sjis_temp = System.Text.Encoding.Convert(ec, dest, buf);
string sjis_str = dest.GetString(sjis_temp);
try
{
int cback = sjis_str.IndexOf(")</span>");
webcode = sjis_str.Remove(cback);
int cfront = webcode.IndexOf(" <span>(");
webcode = webcode.Remove(0, cfront + 13);
webcode = DateTime.Now.ToString("D") + "," + DateTime.Now.ToString("t") + "," + webcode;
StreamWriter writer = new StreamWriter(fnam, true, Encoding.GetEncoding("Shift_JIS"));
writer.WriteLine(webcode);
writer.Close();
}
catch
{
stopflag = 1;
}
}

475 :デフォルトの名無しさん:2011/02/03(木) 17:16:57
>>4のコード貼れるサイトお勧め

476 :デフォルトの名無しさん:2011/02/03(木) 19:37:46
イデオーン〜

477 :デフォルトの名無しさん:2011/02/03(木) 20:09:48
アイディーイーワンじゃね?

478 :デフォルトの名無しさん:2011/02/03(木) 20:27:42
オヤジギャグにマジレスされると気まずいな....

479 :デフォルトの名無しさん:2011/02/03(木) 20:41:03
HashSet.Containsって何をもって等しいと判断しているのでしょうか?
object.Equalsで比較するような動作をさせたいです。

480 :デフォルトの名無しさん:2011/02/03(木) 20:42:35
ハッシュ系の比較はGetHashCode→Equals
両方オーバーライドせんと警告が出るだろ?

481 :デフォルトの名無しさん:2011/02/03(木) 20:44:45
お世話になります。
StreamReaderでtxt形式ファイルのテキストを取得する感じで、
doc形式ファイル内のテキストをstringとして取得したいのですが、
関数など無いものでしょうか……?

482 :デフォルトの名無しさん:2011/02/03(木) 20:49:15
>>473
思いついたアイデアがあるけど詳しくないので今調査中
知ってる人があったら補足をよろしく

以前何かの関係で調べてた際にIEはキャッシュの再取得をなかなかしない設定だった
(なるべくローカルのキャッシュを利用)する傾向が高いとかで意図的に期限などをいじらないとだめだとかなんとか

で、今その期限をいじれそうなところ調べてるんだが(たぶんwebBrowser.Uriのところ)・・・

483 :デフォルトの名無しさん:2011/02/03(木) 20:51:36
>>481
Microsoft.Office.Interop.WordのRange.Textあたりじゃないか?
Office非依存にしたいのなら知らん

484 :デフォルトの名無しさん:2011/02/03(木) 21:04:17
あーwebBrowser.Uriじゃないわ
webBrowser.Navigateにオーバーロードで追加ヘッダとか入れれるジャン・・・


485 :デフォルトの名無しさん:2011/02/03(木) 21:06:03
>>479
既定ではHashSetの比較はEqualityComparer<T>.DefaultのEquals
つまりTがIEquatable<T>を実装してなかったらGetHashCode/Equalsを使う

486 :デフォルトの名無しさん:2011/02/03(木) 21:20:02
こんな書き方でいいみたいだけど
webBrowser1.Navigate("http://www.hoge.com",null,null,"Cache-Control: no-cache");

487 :デフォルトの名無しさん:2011/02/03(木) 21:26:39
>>486
ありがとうございます
早速試してみます

488 :デフォルトの名無しさん:2011/02/03(木) 21:27:35
>>480、485
ありがとう。
なるほど、コンストラクタで指定するんですね。

489 :487:2011/02/03(木) 21:45:38
やってみたところダメだったみたいです

490 :デフォルトの名無しさん:2011/02/03(木) 21:59:34
webBrowser1.Navigate(u, null, null, "If-Unmodified-Since: Sat, 29 Oct 1994 19:43:31 GMT");

古い日付を与えて無理やりバージョン
というかこの辺はあまり利用してる人がいないのか国内に情報なさそうなので
MSが配ってるソースをみるとかしないと中でどうやってるかさっぱりわからん
あとhttpヘッダーの勉強してくれ

491 :デフォルトの名無しさん:2011/02/03(木) 22:05:15
あとはwiresharkなどでどういうヘッダーを送ってるか見てみろ

492 :481:2011/02/04(金) 18:20:48
>>483
返答が遅くなりましたが本文の取得に成功しました。
ありがとうございます。

ただ、テキストボックスの内容も必要との事で、
方法をググって探しています。

493 :デフォルトの名無しさん:2011/02/04(金) 22:04:08
_Document.Shapes→Shape.TextFrame.TextRange.Textで値自体は取れる
本文と上手くつなぎ合わせる方法は知らない

494 :デフォルトの名無しさん:2011/02/07(月) 18:11:47
ぷぅ〜

495 :デフォルトの名無しさん:2011/02/08(火) 01:22:46
>>494
こら〜 モコナ〜!

496 :デフォルトの名無しさん:2011/02/08(火) 01:28:21
ぷいにゅー

497 :デフォルトの名無しさん:2011/02/08(火) 01:35:06
.netFramework2.0(サーバ)、ASP.net(WebApp)で、
サーバはpng画像を定周期で出力、Webはaspx.csでサーバが出力した画像パスからバイト配列にしてResponseにして返す
って処理なんですけど、ファイルアクセス競合ってどうやって防ぐべきなんでしょう?
サーバ側は画像保存前後でlockファイルとか作って、web側はlockがある場合は消えるまでリトライ、とか考えたんですけど
結局競合する瞬間はあるし…。

JMeter使って検査するとIOException出ちゃいます。
みなさんこういう場合ってどういう対処しますか?

498 :デフォルトの名無しさん:2011/02/08(火) 03:31:50
名前付きミューテクスとか

499 :デフォルトの名無しさん:2011/02/08(火) 07:59:53
"\"をエスケープしてから>>498

500 :デフォルトの名無しさん:2011/02/08(火) 08:11:14
ロックファイルを作るならFile.Exists()使っちゃダメ
ロックファイルを開けたらそのまま所有して操作するって風にしないと競合は防げない

まぁMutexのほうが便利ですけおね

501 :デフォルトの名無しさん:2011/02/08(火) 09:48:19
画像なんぞDBに入れて管理してるからあんま気にしてない

502 :デフォルトの名無しさん:2011/02/08(火) 11:37:49
.NET Framework 3.5 を対象としてビルドして、3.5が入っているXPで実行したところ、4.0 が必要だと言うエラーが発生しました。
とりあえず、4.0 をインストールしたら正常に動いたのですが、
これは、XPの問題なのでしょうか?それとも、開発側のビルドの問題でしょうか?

開発環境は、Vista、VS2008で、ビルド対象のフレームワークは3.5にしてあります(4.0 は選択できない)。

503 :デフォルトの名無しさん:2011/02/08(火) 11:41:21
>>502
インストーラのFWが4.0になってると思われ

504 :502:2011/02/08(火) 11:51:02
>>503
早速のレスありがとうございます。
今のところEXEで配布しているため、インストーラは使用していません。インストーラが .NET を使う場合は注意なのですね。

また、LINQを使っていないEXEに関しては、対象を3.5にしてビルドをしても、2.0 だけ入っていれば、動きました。

505 :デフォルトの名無しさん:2011/02/08(火) 11:54:24
VS2008が入ってるマシンって4.0も入れてる?


506 :デフォルトの名無しさん:2011/02/08(火) 12:04:26
4.0のDLL参照設定に入れてたりしてな

507 :502:2011/02/08(火) 12:09:05
>>505
「プログラムと機能」には、「.NET Framework 4.0 Extended」など、4.0 とつくものが 5つ入っています。
以前2010をインストールして、すぐに削除したこともあり、その影響でしょうか。

>>506
特に参照設定の追加は行っていないです。

508 :502:2011/02/08(火) 12:35:57
>>503 >>505 >>506
すみません。原因がわかりました。
難読化する際に、4.0 の ilasm.exe を使うように設定しておりました。
お手数おかけしました。

509 :デフォルトの名無しさん:2011/02/08(火) 15:45:59
おヴァカ

510 :デフォルトの名無しさん:2011/02/08(火) 17:28:19
あるライブラリのデータ部分にIntPtrを渡すことができるんですが、
ここにファイルのデータを直接渡すことは可能でしょうか?

一度bytesに読み込んだ後にGCHandle.AllocでPinすれば渡せることを確認しています
ファイルマップなどを使用して直接渡すことはできないでしょうか・・・

511 :デフォルトの名無しさん:2011/02/08(火) 17:35:20
できるよ
Win32APIでファイルマッピングしても良いし
.NET 4ならSystem.IO.MemoryMappedFiles名前空間のクラス使っても良い

512 :デフォルトの名無しさん:2011/02/08(火) 17:47:30
ありがとうございます。
早速やっているんですが、データの先頭を表すIntPtrが取得できません
MemoryMappedViewStreamのPositionPointerでbyte*が取れそうなんですが、
実行するとNotSurpportedExceptionが発生します。
また、できればunsafeコードを使用しないでやりたいのですが、
どうやればデータの先頭のIntPtrが取れるんでしょうか?

513 :デフォルトの名無しさん:2011/02/08(火) 18:06:25
SafeMemoryMappedViewHandleのAcquirePointerかDangerousGetHandle

514 :デフォルトの名無しさん:2011/02/08(火) 18:13:15
できたぁああ!できました!
unsafeは避けられそうにないですが、これで満足です。
ありがとうございました!!

515 :デフォルトの名無しさん:2011/02/08(火) 20:56:41
unsafeくらい使えよ
画像処理とかやる時、全然違うぞ

516 :デフォルトの名無しさん:2011/02/08(火) 21:13:48
配列をアンマネージ領域にコピーしたりその逆をしたりするなら
ポインタ触るよりMarshal.Copyの方が速いけどな

517 :デフォルトの名無しさん:2011/02/08(火) 21:23:30
>DangerousGetHandle
いつ見てもいい名前だ


518 :デフォルトの名無しさん:2011/02/08(火) 22:45:54
.NET Reflector 終了だなんて。

519 :デフォルトの名無しさん:2011/02/08(火) 22:53:11
差額$60ならPRO買うな

520 :デフォルトの名無しさん:2011/02/08(火) 22:54:50
まじで?
代替品はないのか?


521 :デフォルトの名無しさん:2011/02/08(火) 23:14:38
英語圏の.NETerの間では、フリーの逆コンパイラー作る?とかなんとかいう議論も出てるけどもねぇ。

いいツールだから自分はお金出してもいいけども、
初心者のハードルは上がっちゃうよなぁ。

522 :デフォルトの名無しさん:2011/02/08(火) 23:16:09
>>521
なんかその辺の流れはどうにもならない見たいねw

フリーで作る->多機能化その他で有料化へ踏み切る->他所が・・・

523 :デフォルトの名無しさん:2011/02/08(火) 23:16:37
今のうちにダウンロードしといたらいいやん

524 :デフォルトの名無しさん:2011/02/08(火) 23:17:56
今月末までに登録しとけば次のCLRのバージョンアップまではそのまま使えるんだろ
5,6年は先でしょ

525 :デフォルトの名無しさん:2011/02/08(火) 23:54:46
今使っているものも登録しないと使えなくなる?

526 :デフォルトの名無しさん:2011/02/09(水) 23:16:24
前のポーカーのものです。
ありがとうございました。
今回私が作ったポーカーです。
駄作です・・・
バンバン言ってくれてかまいません。
遊び方のテキストが参照が違っているので、直してくれれば嬉しいです。
高校の授業で教わるのは無理がありすぎる・・・

http://uproda11.2ch-library.com/11284934.zip.shtml
DLkey はpoker です

527 :デフォルトの名無しさん:2011/02/10(木) 00:06:43
>>526
高校ってそんな暇なのか?(中学校の時には個人的にやってたけど、高校じゃそんな暇なかったな…僕が無能だからか)

とりあえず、ぱっと思いついたことを箇条書きにすると
・変数名はもっとわかりやすく。ましてや関数外で宣言されたメンバー変数なんて。
・確かに日本語は使えるけどさ…使わない方がよくね?
・リソースファイルから引っ張ってくるのも良いけど、同じサイズの画像なら、ImageListを使う手もあった
・カードの画像は一度、配列に放り込んで二次元配列なりで使えば、遙かに楽になるな。
ジョーカーとかは14番目のカードとするか、ラッパーになるような関数内で特殊処理するなりして。
・PictureBoxも配列・リストに放り込んでおくなりするとよかった。
・細かいところだけど、関数の途中で変数宣言するのはイクナイ癖。やるにしても、ブロックを作ってその中にするべき
・というか、isFlashなんていう大量の変数を作るくらいなら、列挙型なり、集合型…はC#にはないか、まあそいつらを使うと良い。
・i i2 i3なんて変数をforループのたびに作っちゃうなんて…先生もっと生徒のサポートしろよ
・usingはC#特有とはいえ、せめてtry finallyぐらい指示してあげなさいよ>先生
・c1 c2…なんて変数を宣言した時点で配列に仕様と思わなかったの? というかなんかレジスタっぽくって嫌。アセンブリ嫌い
・つうか、何このスクリプトで出力しました的なコードは…怖いよ

とは言え、よく頑張った。
パソコンに普段触れてないやつが初めてやったプログラミングにしては上出来な方だと思うよ。
ある意味、理想的な「初心者が組んだコード」を地でいっててすばらしい。
ま、そうなる前に周りの人が止めるから、そういうことにはまずならないんだけどな。

528 :デフォルトの名無しさん:2011/02/10(木) 00:27:32
>>527
ですよね・・・
なんとなく分かるところと分からないところがありますが
私自身もなんでこうなった感じはあります・・・
高校じゃこれが限界・・・
先生はあんまりサポートしない
っていうか個人でがんばるみたいな
まあ工業系の高校で、しかも電気の情報だから勉強してみよかみたいな?
先輩たちもやってるみたいだし
三年の一年間だけ・・・

529 :デフォルトの名無しさん:2011/02/10(木) 00:36:10
なんで学校のせいにしてんの?馬鹿じゃねーの
少ない小遣いで参考書吟味して独学する覚悟のないやつがプログラムやるんじゃねーよボケ

530 :デフォルトの名無しさん:2011/02/10(木) 00:47:45
>>529
プログラマーとして働く事になる覚悟がないやつは子供の頃からプログラムやっちゃいけない、も追加

>>528
高専の電気情報工学科と工業高校は別な? 工業高校ならそれでも仕方ないかな?
高専ならまずい。もう少し、学力というか、学ぶ力を身につけないと。

531 :デフォルトの名無しさん:2011/02/10(木) 00:59:17
>>・細かいところだけど、関数の途中で変数宣言するのはイクナイ癖。やるにしても、ブロックを作ってその中にするべき


ソース見ないでケチつけるのもなんだけど、なぜイクナイのか意味不明

532 :デフォルトの名無しさん:2011/02/10(木) 01:17:16
>>527の内容はかなり恣意的な内容だと思う
日本語使うなって言ってるけど、
微妙な英語力でラノベの超能力名みたいな英語書くくらいなら
日本語で書いたほうがいいに決まってる

533 :デフォルトの名無しさん:2011/02/10(木) 01:24:12
変なクセつけさせるなよ

534 :デフォルトの名無しさん:2011/02/10(木) 01:43:32
途中で宣言するのはわりとよくやるわ

535 :デフォルトの名無しさん:2011/02/10(木) 01:49:04
>先生もっと生徒のサポートしろよ
教師に期待する方が・・・

日本式横並び詰め込み方式さえできれば優秀とされる使えない人種なのに

536 :デフォルトの名無しさん:2011/02/10(木) 01:54:31
・クラスに宣言した変数(メンバ変数) は 1 箇所にまとめること。上の方とか下の方とかに。

C# はいっぱい文法があるけど、どれもコードの綺麗さを保つ上で重要なものが多い。
徐々に覚えていくといいよ。

まあ、ちゃんと動いてるんだから上出来。俺の初心者の時を思い出した。。
バグが消えないんだよな。。今になっても俺はバグと戦ってるけど。
最低限、ブレークポイントをおいて、ウォッチ式使ってデバッグ出来るようにしておくといい。
ぜんぜん違う。

あと、擬似乱数生成器についてちゃんと理解できてない気がした。
Random rand1 = new Random(); // new Random(1);
Random rand2 = new Random(); // new Random(2);
for (int i = 0; i < 10; i++){
Console.WriteLine(rand1.Next());
Console.WriteLine(rand2.Next());
Console.WriteLine();
}
これを動かしたら何がいけなかったかわかると思う。(コメントの部分と差し替えてやってみて)

537 :デフォルトの名無しさん:2011/02/10(木) 01:56:33
プログラムの中身は見てないけど

>>・細かいところだけど、関数の途中で変数宣言するのはイクナイ癖。やるにしても、ブロックを作ってその中にするべき

こういうのは論外ですね
Cがそれしかできなかったからって古い悪習を強要するのはやめろ
こういうやつが開発現場にいると激しく開発効率が下がるってしばしばコラムでも糾弾の対象になる

>>・usingはC#特有とはいえ、せめてtry finallyぐらい指示してあげなさいよ>先生

これも論外

538 :デフォルトの名無しさん:2011/02/10(木) 02:04:35
C# というか、.NET 系は割と日本語変数名に抵抗感少ない文化。
何でもかんでも日本語って人はさすがに少ないけど、enum のメンバーとかは普通に日本語使う人多い。

変数は使う場所の直前で定義するのは C# に限らず、C++ の頃から言われてること。
関数の先頭で宣言とかありえない。

using は普通に教えた方がいいと思う。

539 :デフォルトの名無しさん:2011/02/10(木) 02:12:47
変数でクソ長い複雑な英語考えるなら素直に日本語使うほうが見やすい
先頭は英語で初めて日本語を続けるようにするとVisualStudioのインテリセンスが使いやすくなる

540 :527:2011/02/10(木) 02:26:22
途中で宣言するのはやっぱりありか?

たしかDelphiかなんかの参考書に、どうしても途中で宣言したくなるようなことがあれば
その関数が必要以上に長く・複雑になってるから
別の関数に分けられないかどうか考えろって話だった希ガス

541 :デフォルトの名無しさん:2011/02/10(木) 02:28:51
$日本語 = "";

こんな感じで先頭に$がつけられたらいいのにといつも思う
今は_を付けてるけどこれってprivate変数と同じ意味で気持ち悪いのよね

542 :デフォルトの名無しさん:2011/02/10(木) 02:35:13
>>540
馬鹿初心者に触ってる時点でお前のレベルが知れる

543 :527:2011/02/10(木) 02:36:17
>>537
なぜに二重引用かわからないけど、とりあえず
>>>・usingはC#特有とはいえ、せめてtry finallyぐらい指示してあげなさいよ>先生
>これも論外
え?それじゃあ、例外機構いらないって話?
何のためにtry finallyを拡張したusingまで用意されてると思ってるの?
確保したりソースは確実に解放できるようにすべきじゃね?
それとも例外機構がある言語でも戻り値が-1か調べてやれってこと?

それこそ昔の悪しき習慣だと思うんだが?

>>539
それ良いよね。個人的なプログラムを書くときに、それ使ってる。

544 :デフォルトの名無しさん:2011/02/10(木) 02:40:02
>>543
死ね
死んで速やかにふらっとに行け
ここは初心者相手に講釈垂れるスレじゃない

545 :デフォルトの名無しさん:2011/02/10(木) 02:42:12
あと>>526も二度とくんなよ。お前は存在がスレ違い

546 :デフォルトの名無しさん:2011/02/10(木) 02:47:22
たいしたネタないんだから、にぎやかしにたまにはいいよ。こんなのも。
市ねとかいってるほうが、さっさとどこかにいったほうが吉。

547 :デフォルトの名無しさん:2011/02/10(木) 02:52:51
Cからの復帰組としては参考になる部分もあるから続けてください。

548 :デフォルトの名無しさん:2011/02/10(木) 02:53:03
>>546
>>544>>545みたいな荒らしの相手してやるだけ時間の無駄よ

549 :デフォルトの名無しさん:2011/02/10(木) 02:53:29
的確な指摘をするならともかく
>>527みたいに間違ったことを平気で広めるやつは害悪すぎる
マジでやめてくれ
初心者は真に受けちまうからな
あとスレ違いであることは間違いない

550 :デフォルトの名無しさん:2011/02/10(木) 02:57:18
>>547
初心者は初心者スレ行けよ
しょーもない議論でレス流されたら迷惑

551 :デフォルトの名無しさん:2011/02/10(木) 06:58:08
>>527
マ歴2年くらい?
まだまだ人に教えられるレベルに無いよ
あんま自惚れちゃいかん

552 :デフォルトの名無しさん:2011/02/10(木) 08:54:54
マ歴半年でもあんな指摘しねえ
ただしみながわさんは除く

553 :デフォルトの名無しさん:2011/02/10(木) 08:57:53
いやいや、むしろ527大先生はよほど実力をお持ちの方だとお見受けした
こんな素晴らしいアドバイスを下さる大先生がお書きになったコードが是非みたいですマジで

554 :デフォルトの名無しさん:2011/02/10(木) 09:28:00
>>526
遊んでみた
最初から並び替えといてくれると親切かな?と思った
きたままでFlashだったんで交換なしで”交換”ボタンおしたんだけど
カードが小さい順に入れ替わって何となく違和感を感じた

いきなりでこれだけ出来りゃ十分だとおもうよ

自分が教えてるなら
カード1枚の情報をクラスに分離してやってみて
とか言うかも

555 :デフォルトの名無しさん:2011/02/10(木) 11:05:51
いい雰囲気のところぶった切って済まない

アセンブリ参照についての質問で、C#あんまり関係ないかもだけどどこで聞いたらいいかわからないのでお願いします

アセンブリA、Bと、メインプログラムXがある
XはA、Bを参照し
BはAを参照している
Bが参照しているAは、Xが参照しているAより古いバージョンのものである

この状況で古いAと新しいAがGACに登録されていれば正しく動作するものの、
実際の運用ではサイドバイサイドで運用したいと思っています

そこで、Xから参照するAのみ、厳密にパスなどを指示すればできると考えましたが
app.configにそれらしい設定をすると、BからもそちらのAを見に行ってしまい、バージョンが異なりエラーとなります

Xから参照するAのみパスを指定するにはどうすればいいのでしょう
もしくはほかの方法がありましたらお願いします

556 :デフォルトの名無しさん:2011/02/10(木) 11:27:00
む・・・自己解決できそうな予感です

557 :デフォルトの名無しさん:2011/02/10(木) 11:30:55
app.configの指定がちょっとおかしかったようです
以下の指定でうまくいきました。お騒がせしました

<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="A" culture="neutral" publicKeyToken="xxxxxxxxxxxxx"/>
<codeBase version="4.0.0.0" href="A_New.dll"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="A" culture="neutral" publicKeyToken="xxxxxxxxxxxxx"/>
<codeBase version="2.0.0.0" href="A.dll"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>


558 :デフォルトの名無しさん:2011/02/10(木) 16:27:44
>>545
すみません・・・
きちゃいました

>>554
ありがとうございます。
実は最初のところでも並び替えしようとしてたんですけど、
なぜかできませんでした・・・
時間もありませんでしたし・・・

そうですね・・・
すべて自分が悪いんです・・・
質問者に答えてくれる皆さんが素直にすごいと思いました。

ブレークポイントってすごく便利ですよね。
今回何度も助けられました。

559 :デフォルトの名無しさん:2011/02/10(木) 16:41:25
>>558は謝りながらレイプするタイプ

560 :デフォルトの名無しさん:2011/02/10(木) 18:04:39
続きは ふらっと で

561 :デフォルトの名無しさん:2011/02/10(木) 23:40:06
プログラムをいじっていたら何か変なところを消したのか付け加えたのか、一斉に大量のエラーが出るようになりました。
自分は根本的なところが分かっていないので何を直せばそのエラーが消えるかさっぱりわかりません。
なので10分くらい前の状態に戻ってやり直そうと思ったのですが、うまくいきません。

最初はアンドゥを繰り返してみたのですが何故か元に戻りません。
ならばとりあえずいったんセーブしないで終了して、今回の作業を開始する前のファイルで起動すれば前の状態からできるだろうとやってみたので
すが、何故か、前の状態のが残っていません(勝手にセーブされている?)

一体こういう場合どうすればいいでしょうか?

562 :デフォルトの名無しさん:2011/02/10(木) 23:57:19
あんどうくんにたのめ

563 :デフォルトの名無しさん:2011/02/11(金) 00:00:35
こまめにバックアップを取って保管しておくべきだった・・・としか・・・

564 :デフォルトの名無しさん:2011/02/11(金) 00:00:56
前提としてメッセージが無いと分からんが、一斉にエラー出るのは参照関係じゃないかね
あるいはデータセット他の大物クラスを破壊したとか

565 :デフォルトの名無しさん:2011/02/11(金) 00:01:53
>>561
デバッグを始めると保存されたんじゃなかったかな・・・?
差分を取ったりと管理してなければプロジェクト丸ごとコピーして履歴管理するしかないと思うよ

そのやってるプロジェクト一式は公開できる?

その書き込みだけでは何が起きてるかなんてさっぱりわからん

566 :デフォルトの名無しさん:2011/02/11(金) 00:06:20
>>561
Formのコードだったら、デザイナのコードを開いてundoしてみ?

567 :デフォルトの名無しさん:2011/02/11(金) 00:06:53
VisualStudioが勝手に作成する参照関係はバグる事あるね
外部のメーカーのライブラリ導入してるときとかに起こる

568 :デフォルトの名無しさん:2011/02/11(金) 00:13:47
>>561
エラーを全部記録してアップしてみれば?

569 :561:2011/02/11(金) 00:14:00
みなさん、色々すみません。
本当に助かります。

まず、一回、ビジュアルスタジオ自体を終了しているのでアンドゥがもう出来ません。

おっしゃるとおり、こまめにバックアップ取るべきだということを痛感しました。
ほんとに事あるごとにとらないと私のような人間には対処不能になってしまい、恐ろしいです。

デバックすると保存されるんですね。それは知りませんでした。
以後気をつけます。

一応、ソースを公開します・・・・。
http://amer.web.fc2.com/owata.txt

もう何がなにやら・・・・。

570 :デフォルトの名無しさん:2011/02/11(金) 00:16:30
public static extern long PlaySound(String lpszName, IntPtr hModule, Int32 dwFlags);の前の}が要らないな

571 :デフォルトの名無しさん:2011/02/11(金) 00:23:59
>>570
だね、そこでクラスが終わっちゃってるからエラーが出てる
それにしてもずいぶん古い形式のソースだな
もしかしてVS2003とかじゃね?

572 :デフォルトの名無しさん:2011/02/11(金) 00:32:37
VS2003だね
会社で2003使うように強制されてるのか?
だとしたら哀れすぎる
2005から格段に良くなってるのに
ジェネリックも使えないし
そんな会社嫌すぎる

573 :デフォルトの名無しさん:2011/02/11(金) 00:36:12
ジェネリックも辛いけどラムダ式使えないのは拷問に近い

574 :デフォルトの名無しさん:2011/02/11(金) 00:40:06
>>570
2分で解決・・・・・・・・orz
ありがとうございました・゚・(つд`)・゚・


VS2003?
よく知らないのですが、同じく2chで教えてもらったタダで使えるというビジュアルC#2010エクスプレスというのを
マイクロソフトからダウンロードして使っております。
会社ではなく個人で使ってます。
あれ?もっといいのがある・・・???(゚Д゚;)

575 :デフォルトの名無しさん:2011/02/11(金) 00:41:42
VS = Visual Studio(有償)

Visual C# Express は Visual Studio のサブセット。

576 :574:2011/02/11(金) 00:55:33
そうなのですか。

その教えてもらったスレの人を悪く言うつもりもないのですが、エクスプレスだと色々足りない機能があるという
説明がMSのサイトにあったので、そういうのがないエクスプレス使っても大丈夫?とスレで聞いたら、「その足りない
機能というのはお前程度なやつには不要な機能。エクスプレスで充分」と言われました。
だから、エクスプレスでいいのかな〜と思ったのですが、うーん。

ジェネリックとラムダ・・・・。
ちょっと調べて出直してきます。

577 :デフォルトの名無しさん:2011/02/11(金) 00:55:37
>>574
クラスにあるはずのものが無いってエラーなので、}が多すぎるのを疑って、
あとはpublic class Form1の横の「-」をクリックして場所を特定すれば解決だよ

VS2010で作ると、designer.csってのが出来るはずなんだけど、どこかのコードのコピー改変かな?

578 :デフォルトの名無しさん:2011/02/11(金) 00:58:33
>>569
caseの使い方が恥ずかし過ぎて
痛々しいコードだな

579 :デフォルトの名無しさん:2011/02/11(金) 00:59:02
>>576
絶対おかしい
ビジュアルC#2010エクスプレスならジェネリックもラムダも全部使えるし
そんなソースが自動生成されることはあり得ないし
絶対2003で作ったソースだろ

580 :デフォルトの名無しさん:2011/02/11(金) 01:06:11
>>576
とりあえず初心者さんはC#の初心者用スレがあるからそっちいってくれ
初心者のコードの添削とかしょうもない講釈とか始まるからうざいんだよ

581 :デフォルトの名無しさん:2011/02/11(金) 01:10:17
2010も入れてるけど前に入れてた2003で作っちゃったとか?
ちなみにExpressといえど出欠大サービス(死語)だぞ

まあある程度ごりごり書いて公開とかのになると難読化してー
とかクラス図作りてーとかでExpressは不満に思うけどそこまでまずはいかねーだろうし
仕事で使うなら会社に買ってもらえ(もしくは買え)ってところだな

582 :デフォルトの名無しさん:2011/02/11(金) 01:13:58
>>578
普通配列使う罠

583 :デフォルトの名無しさん:2011/02/11(金) 01:17:51
>>576
うん、お前程度にはエクスプレスで十分。

Expressかどうかの問題よりも、バージョンの問題じゃね?って言われてるわけよ、今は。
2003→2005→2008→2010と、使える機能増えてるわけだけども。

584 :デフォルトの名無しさん:2011/02/11(金) 01:26:33
いい加減初心者弄るのやめない?
初歩的すぎて誰の得にもならない助言とか時間の無駄だし
そういうの初心者スレでやるべきだと思うけどなぁ。
何でそんなに初心者構うのか分からない。
…また騒ぎになるからこれ以上はやめとこ!

585 :デフォルトの名無しさん:2011/02/11(金) 01:30:30
ここも初心者スレのようなもんだけどねw

まー古いバージョンのIDE入れてるなら削除しちゃった方がいいけどね

WinForm書くのであればVC#2008でも十分だしな
OSやマシン次第では2008の方がサクサク動くし

最近はSL関連書いてるからVWD2010使ってるけどもっさり気味・・・

586 :デフォルトの名無しさん:2011/02/11(金) 01:34:24
初心者スレは初心者が初心者をバカにするスレだからお勧めできない
別にスレ違いでも、過密スレでもないのに騒ぐなよ

587 :デフォルトの名無しさん:2011/02/11(金) 01:37:39
こっちは中級者が初心者と中級者と上級者をバカにするスレだよなwww

588 :デフォルトの名無しさん:2011/02/11(金) 02:03:27
「出欠大サービス」は死語どころか日本語じゃないと思うんだ
「今日は大サービスで出勤したことにしてやる」なんて良い上司だな

589 :デフォルトの名無しさん:2011/02/11(金) 04:08:03
System.Random r = new System.Random();
for(int i = 0; i < 10; i++) {
int j = r.Next(i + 1);
num[i] = num[j];
num[j] = i + 1;
}
ってやれば空の配列に数字を入れながらランダムにできる

590 :デフォルトの名無しさん:2011/02/11(金) 08:49:22
↓分布がどうたらという聞き飽きて既に何回目だか分からない指摘

591 :デフォルトの名無しさん:2011/02/11(金) 09:47:49
OrderByは評価関数を一度しか呼ばないからなんたら

592 :デフォルトの名無しさん:2011/02/12(土) 02:19:49
>>588花粉症の季節には何度かそのありがたいサービスつかってます。

593 :デフォルトの名無しさん:2011/02/13(日) 13:36:19
あるクラス内の配列を呼び出すときに場合によってその対象を差し替えたいのですが
ポインタの使えないC#ではどのように記述すればよいでしょうか

具体的にはXNAで描画するときの頂点配列verticesなんですが
今は重いデータと軽いデータ両方の頂点配列をpublic宣言して
そのクラス達を管理してる外側で描画時にif文でDrawUserPrimitivesに渡すもの自体を切り替えていますが
あまりスマートでない気がします

プロパティで参照すればいい気もしますが都度コピーしていては効率も悪いので
何かいい方法はないでしょうか

594 :デフォルトの名無しさん:2011/02/13(日) 13:39:06
配列の中身が値型でも配列は参照型だから
普通に参照返すだけなら中身まではコピーされないですよ

595 :デフォルトの名無しさん:2011/02/13(日) 16:38:09
>>593
private double[] vertLarge;
private double[] vertSmall;
private bool Large = true;
があったとして
プロパティで
public double[] vertex
{
  get
  {
    return Large == true ? vertLarge : vertSmall;
  }
}

じゃいかんの?
仮に何かにコピーして返したとしても、>>594が言うように配列の変数自体は参照を持ってるだけだから、中身全部コピーなんていう ことにはならない。

XNAはよくわからんが、OpenGLの知識で行くと毎回頂点配列をメモリに送っていること自体がもったいないと思う。
OpenGLでいうところのVBOみたいなのがあるのならそれを使うべき。

596 :デフォルトの名無しさん:2011/02/13(日) 17:12:50
>>594
あ,なるほど勘違いしていました.
どーもです.
状態ごとに
vertices = omoi;とか代入しておけば
描画時にはverticesを呼び出せばいけると.

追加で申し訳ないのですが
型の違う配列になったらさすがに分岐しないと無理ですよね

まだちょっと重かったので軽いモデルでは法線情報を削り
<VertexPositionNormalColor>と<VertexPositionColor>を使い分けたいのですが

つくづく自分の設計能力の低さを実感orz

597 :デフォルトの名無しさん:2011/02/13(日) 18:47:23
>>595
道理でしょぼいプログラムが重いわけですね
C#もXNAも始めたばかりなので勉強になります.

598 :デフォルトの名無しさん:2011/02/14(月) 21:40:31
今ならXNAよりunityのほうがいいんじゃない?
XNAが勝ってるところが思い浮かばない。

599 :デフォルトの名無しさん:2011/02/15(火) 10:09:08
別にXNAはゲームエンジンじゃないんだから比べるのはおかしい
特定のゲームエンジンの勉強しても他の環境では全く役に立たないけど
XNAは生DirectXに近いから知識の応用も広い

600 :デフォルトの名無しさん:2011/02/15(火) 12:33:06
ましてや構文はC#だしな

601 :デフォルトの名無しさん:2011/02/16(水) 00:53:28
>>600
それがさ、unityもC#で、しかもネイティブに変換できて
ブラウザ含めマルチプラットフォームという…。

602 :デフォルトの名無しさん:2011/02/16(水) 01:13:05
使いたいやつを使えばいいよ

603 :デフォルトの名無しさん:2011/02/16(水) 11:48:26
使えばいいよ

604 :デフォルトの名無しさん:2011/02/16(水) 19:50:30
これの出力がc c cになる理由がわかりません
何が起きているのでしょうか・・・

http://ideone.com/qpaTi

605 :デフォルトの名無しさん:2011/02/16(水) 19:59:42
レキシカルクロージャといって、クロージャにキャプチャされるのは変数の値じゃなくて変数そのもの。
foreachの繰り返し変数はループ全体で使い回されるから、
すべてのクロージャが一つのitemを共有することになる。
a b cと出力させるには、ループの中でvar item2 = item;と宣言しなおして
取り込む変数のスコープを一回のループだけに限定してやればいい。

606 :デフォルトの名無しさん:2011/02/16(水) 20:37:43
>>605
なるほど!ポインタ渡しのようなものなのですね
ありがとうございました

607 :デフォルトの名無しさん:2011/02/17(木) 20:49:16
XElementで生のタグをそのまま入力する方法はないでしょうか?
XHTMLを処理したいのですが
XElement("div", "aaaaaaaaaa<br />bbbbbbbbb");
のような書き方をしたいです

元の文字列をパースしてXNodeに変換すると、
異常に手間がかかってしまうので直接入力する方法が知りたいです
よろしくお願いします

608 :デフォルトの名無しさん:2011/02/17(木) 20:55:18
>>607
XElement.Parse()

609 :デフォルトの名無しさん:2011/02/17(木) 21:42:01
>>607
そんな風な汎用メソッドを一つ作ればいいんじゃないかと
XElement hoge = fuga.moge("div", "aaaaaaaaaa<br />bbbbbbbbb");

610 :デフォルトの名無しさん:2011/02/17(木) 23:07:12
C#でwebサイトのソースコードを取得するプログラムを
作ってますが、javascriptが出力するソースコードが取得できません。
firefoxの「選択した部分のソースコードを表示」の機能で表示することはできます。
どうしたらC#のプログラムから取得できますでしょうか。

611 :デフォルトの名無しさん:2011/02/17(木) 23:11:08
そういうのはjavascriptを動かすしかないんじゃないの?
それとhtmlヘッダーに書かれてるjsを取得したいだけってことはないよね?

612 :デフォルトの名無しさん:2011/02/17(木) 23:18:09
Ajaxで取得して来てるデータを取りたいなら、Chromeとかのツールで通信を見てそれを真似てリクエストを送ればいいだろうけど...

613 :デフォルトの名無しさん:2011/02/18(金) 00:59:30
>>608,609
XElement hoge = new XElement("div", XElement.Parse("aaaaaaaaaa<br />bbbbbbbbb"));

これでいけました。ありがとうございました!!

614 :デフォルトの名無しさん:2011/02/18(金) 01:15:33
>>611
>>612
webBrowser.Document.Body.OuterHtml
これでいけました。ありがとうございました!!

615 :デフォルトの名無しさん:2011/02/18(金) 01:19:41
どういたしまして

616 :デフォルトの名無しさん:2011/02/18(金) 19:57:28
HashSetで意図した比較ができません。
どこが間違っているのでしょうか?

class CTest : IEquatable<CTest>
{
 public bool Equals(CTest other)
 {
  MessageBox.Show("call");
  return true;
 }
}

CTest test1 = new CTest();
CTest test2 = new CTest();

bool test = EqualityComparer<CTest>.Default.Equals(test1, test2); //呼ばれる
HashSet<CTest> set = new HashSet<CTest>(EqualityComparer<CTest>.Default);

set.Add(test1);
set.Add(test2); //呼ばれない


617 :デフォルトの名無しさん:2011/02/18(金) 20:21:18
HashCode違うのに呼ばれるわけないだろあほ

618 :デフォルトの名無しさん:2011/02/18(金) 20:22:53
>>616
IEquatable<T>だけを実装してはいけない
実装するならObject.Equalsもオーバーライドして、同じ結果を返す必要がある
GetHashCodeの実装も必要
そもそもIEquatable<T>は構造体のEqualsのパフォーマンスを上げるために実装するもので
クラスに実装する必要はない

619 :デフォルトの名無しさん:2011/02/18(金) 20:28:36
IEqualityComparerがEqualsとGetHashCodeの両方の実装を要求してる時点で気付け

620 :デフォルトの名無しさん:2011/02/18(金) 20:34:40
IEqualityComparer<T>は値型のボックス化を防ぐためだけに存在する
クラスならEqualsとGetHashCodeをオーバーライドするだけでいい
実際、structにするとIEquatable<T>.Equalsが呼ばれるようになる

621 :デフォルトの名無しさん:2011/02/18(金) 20:35:51
>>620
訂正
IEqualityComparer<T>ではなくIEquatable<T>だった

622 :616:2011/02/18(金) 21:22:29
なるほど。
ありがとうございます。

623 :デフォルトの名無しさん:2011/02/19(土) 11:29:16
フォームのコントロールにバインドされているBindingList<T>のメソッドって
UIスレッド以外から呼び出して大丈夫なんでしょうか?

624 :デフォルトの名無しさん:2011/02/19(土) 11:43:51
例外は起きないけど無反応っぽ

625 :デフォルトの名無しさん:2011/02/19(土) 11:56:44
ありがとうございました!UIスレッドで実行するようにします

626 :デフォルトの名無しさん:2011/02/19(土) 13:26:46
例外起きないんだ。
意外だな。
Formsの中で勝手に処理してしまってる可能性もあるか?

627 :デフォルトの名無しさん:2011/02/19(土) 18:44:24
プロの方、知恵をください
他のクラスで使いまわしたいstaticなメソッドを集めたユーティリティクラスがあります。
このクラスを 「継承せず」 にクラス名の修飾無しでメソッドを使うベストなプラクティスはありますか?
Javaで言う static import みたいな事です。


namespace NS1 {
public class UtilClass {
public static Method1 {}
}
}

namespace NS2 {
ここで Method1 を修飾無しで使いたい。
}

628 :デフォルトの名無しさん:2011/02/19(土) 18:50:51
普通にusingするだけでは?
でも、個人的には「クラス名の修飾無しでメソッドを使いたい」なんて要求は、
たぶん正しくないと思うんだよね。

コード書くときのことばっかり考えて、後で見直すときのことを考えてないんじゃないの?

629 :627:2011/02/19(土) 19:02:43
>>628
using だとクラス名の修飾が必要になるかと思います。
UtilClass.Method1 のように

四則演算や配列操作をまとめたユーティリティクラスなどはよく作られると思いますが、
拡張メソッド以外のスマートな呼び出し方がないか探しています。

630 :デフォルトの名無しさん:2011/02/19(土) 19:05:01
修飾有りでいいんじゃないの?

Sin Cosなんかだって

Math.Sinとかじゃん

631 :デフォルトの名無しさん:2011/02/19(土) 19:11:05
探したってないものはないのだし、潔くJavaに戻るのがいいのでは

632 :デフォルトの名無しさん:2011/02/19(土) 19:12:23
意図的に修飾を強要してるんだよ
オブジェクト指向を崇拝してたくせにVBみたいな機能を後付けしたJavaのほうがおかしい

633 :デフォルトの名無しさん:2011/02/19(土) 19:13:39
クラス名は名前空間じゃない。

634 :デフォルトの名無しさん:2011/02/19(土) 19:15:23
なんていうか、慣れるとか合わせるって発想はないのかね?


635 :デフォルトの名無しさん:2011/02/19(土) 19:18:18
別にそういう機能があってもいいとは思うけど、名前被りが嫌そう

636 :デフォルトの名無しさん:2011/02/19(土) 19:18:42
>>633
Cみたいなスタイルのコーディングを助長するという意味だよ
モジュールを使ったVBのスタイルと言ってもいいな

637 :デフォルトの名無しさん:2011/02/19(土) 19:25:04
拡張メソッドならスマートってのも危険な兆候

638 :デフォルトの名無しさん:2011/02/19(土) 19:28:41
多用しないほうがいいのはもちろんだけど、特定の型に対してメソッドを追加するのと
グローバル空間にメソッドを追加するのでは名前が被る可能性が全然違う

639 :デフォルトの名無しさん:2011/02/19(土) 19:34:19
話はそれるけど、VBのModuleをC#で書きたいならこう書ける。
using Microsoft.VisualBasic.CompilerServices; 
[StandardModule] 
public static class StdModule { 
  public static int Mul(int i, int j) { return i * j; } 

これでVB側ではクラス名の修飾なしで使えるからVBを使えってことで。

640 :デフォルトの名無しさん:2011/02/19(土) 19:52:55.82
VB(と言っても.NET以前の)でもむしろモジュール名で関数名を修飾して書いてたけどな。
余程小さなプログラム以外は

641 :デフォルトの名無しさん:2011/02/19(土) 22:46:19.00
Control.Invokeメソッドで呼び出されたデリゲート内で
スローされた例外の内部例外が
Control.Invokeメソッドで再スローされるのは仕様ですか?
ttp://ideone.com/ZaX4l

642 :デフォルトの名無しさん:2011/02/19(土) 23:38:18.30
バグだって
http://connect.microsoft.com/VisualStudio/feedback/details/433765/control-invoke-throws-exception-getbaseexception-rather-than-the-actual-exception

643 :デフォルトの名無しさん:2011/02/19(土) 23:41:16.62
ToolStripのTabStopをTrueにしてSHIFT+TABキーでフォーカス移動すると
ToolStripから後ろに戻れないんですがこれバグですか?
(TABだけならちゃんとループする)

644 :デフォルトの名無しさん:2011/02/19(土) 23:42:24.49
2005です

645 :デフォルトの名無しさん:2011/02/20(日) 00:09:55.33
>>642
バグでしたか、とりあえずGetBaseExceptionをオーバーライドして回避出来るみたいですね
ありがとうございました

646 :デフォルトの名無しさん:2011/02/20(日) 00:50:32.72
1.独自のユーザーコントロールを張り付けたコンポーネントクラスがあるとします
2.このコンポーネントクラスを継承してコンポーネントクラスを作ったとします

継承先のコンポーネントクラスで、1.で張り付けたユーザーコントロールのメソッドを使いました。
このメソッドは継承元(base)のもの?継承先(this)のもの?

647 :デフォルトの名無しさん:2011/02/20(日) 00:52:38.59
>>646
継承しない場合はそのメソッドを使うには1で貼り付ける予定のコントロールを
newして・・とかしないと使えないよね
つまりそういうことです

648 :デフォルトの名無しさん:2011/02/20(日) 00:53:14.13
オーバーライドしたともnewしたとも前提条件がない訳だけど、どう答えることを期待されてるの?
ストレステストなの?

649 :デフォルトの名無しさん:2011/02/20(日) 08:51:57.62
ユーザーコントロールは「貼りつけた」とあるだけで継承も何もしてないからbaseもthisもないと思うんだが・・・

650 :デフォルトの名無しさん:2011/02/20(日) 12:13:12.88
>>641が何を言ってるか理解できた>>642のエスパー力凄いな。
俺には何を言ってるのか全然理解できなかった。

651 :デフォルトの名無しさん:2011/02/20(日) 14:28:34.92
その独自のユーザーコントロールは、公開していなければ、どっちみち継承先で使えないのでは?

652 :デフォルトの名無しさん:2011/02/20(日) 23:45:50.62
>>650
おう、もっと褒めてくれ

ま、リンク先のstringリテラルだけ見れば意図は分かると思うし、>>641本文も変なことは言ってない

653 :デフォルトの名無しさん:2011/02/21(月) 00:47:15.32
>>650
安心してくれ
お前が馬鹿なだけ

654 :デフォルトの名無しさん:2011/02/21(月) 09:58:00.16
そして私は天才・・・ふふ・・

655 :デフォルトの名無しさん:2011/02/21(月) 10:19:49.25
皆XML読み書きしたりする時にどうやって書き込んでる?
やっぱXmlWriter?

あと、対象の属性・要素検索したり取り出す時に使うのってLinqToXML?

他の人が標準的に使うやり方でやってみたいけど標準が判らない

656 :デフォルトの名無しさん:2011/02/21(月) 10:29:31.65
msdnは見ないのかね

657 :デフォルトの名無しさん:2011/02/21(月) 10:35:28.15
XmlWriterを直接使うのはストリーミング処理が必要なときだけ
書き出しや検索はLINQが使えるならLINQ to XML
使えないならXML DOMとXPath

658 :デフォルトの名無しさん:2011/02/21(月) 10:37:54.65
>>656
MSDNとかで調べたら
Xml.XmlDocument
とかで書いてるのは紹介されてたりしたんでそれ使ってたけど
今風の使い方的な?

659 :デフォルトの名無しさん:2011/02/21(月) 10:40:20.92
XmlDocumentは使いにくいからスクリプト言語っぽくDOMを再設計したのがLINQ to XML

660 :デフォルトの名無しさん:2011/02/21(月) 11:10:47.24
なるほど
基本的にLinqToXMLでやっておくのがこの先
妥当な感じがしますね。

情報ありがとうございます。

661 :デフォルトの名無しさん:2011/02/21(月) 11:16:20.74
LINQ to XMLは読み書きも検索も共通のモデルで扱えるのが便利だよな
XPathをいちいち思い出さなくてもLINQだけで検索できる

662 :デフォルトの名無しさん:2011/02/21(月) 11:56:49.97
XPathも普通に使うけどね

663 :デフォルトの名無しさん:2011/02/21(月) 12:13:11.02
XmlReaderは悪夢だった
Linq最高

664 :デフォルトの名無しさん:2011/02/21(月) 12:30:51.46
>>663
性質の違うもんを比較すんなよw

665 :デフォルトの名無しさん:2011/02/21(月) 13:52:24.81
LINQ to XMLもXML DOMも下層にXmlReader/XmlWriterを使ってる

666 :デフォルトの名無しさん:2011/02/21(月) 16:30:24.87
C#って、
1バイトのプリミティブ型が4つ並んでる配列があったら
それを直接4バイトのプリミティブ型としてキャストする事は出来ますか?
Cで言う、char型が4つの配列の先頭アドレスをintとして扱う、というような事です。
unsafeとかを使えば可能ですか?

667 :デフォルトの名無しさん:2011/02/21(月) 16:31:59.95
BitConverterでどう?

668 :デフォルトの名無しさん:2011/02/21(月) 16:34:38.22
>>666
Marshalクラスのメソッド一覧眺めてみたらたぶんあるよ


669 :デフォルトの名無しさん:2011/02/21(月) 16:36:15.81
>>666
unsafeならCと全く同じことができたはず

670 :デフォルトの名無しさん:2011/02/21(月) 16:51:52.30
unsafe、fixedでポインタを使えばいい

671 :デフォルトの名無しさん:2011/02/21(月) 17:24:27.47
C#でJavaアプレット的なWEBページでクライアントサイドで動くアプリって作れますか?
どういう名称ですか?

672 :デフォルトの名無しさん:2011/02/21(月) 17:27:42.40
クイズなら自分で調べろ

673 :デフォルトの名無しさん:2011/02/21(月) 17:30:15.25
クイズ100人に聞きましたの問題作成準備かも知れないぞ

674 :デフォルトの名無しさん:2011/02/21(月) 17:38:30.29
え、何?SilverLight?

675 :デフォルトの名無しさん:2011/02/21(月) 19:23:07.75
C#使いってつくづく糞揃いなのはなんでだ?
MSごと切っちゃった方がいいかもな

676 :671:2011/02/21(月) 19:46:23.80
>>675は僕じゃないです。
引き続き情報待ってます。よろしくお願いします

677 :デフォルトの名無しさん:2011/02/21(月) 19:48:44.16
>>676
>>671のようなことならこちらへどうぞ
Microsoft Silverlight その7
http://hibari.2ch.net/test/read.cgi/tech/1288613056/

678 :デフォルトの名無しさん:2011/02/21(月) 19:50:25.26
comboboxでownerdrawを使いたいんですが
ownerdrawを使いつつビジュアルスタイルにすることって出来ますか?

679 :671:2011/02/21(月) 20:06:28.77
>>674,677
ありがとうございました!

680 :デフォルトの名無しさん:2011/02/21(月) 20:09:11.91
WPF時代なんで、もうownerdrawって言葉は死語。

681 :デフォルトの名無しさん:2011/02/21(月) 20:13:22.38
>>680
やっぱりそうですかー
これを機会に学んでみようかな

682 :デフォルトの名無しさん:2011/02/21(月) 20:24:49.62
現実的にはWPFの時代、なんてものは来ない気もするけどね。
少なくともビジネスユーザーはそんなもの望んでない。


683 :デフォルトの名無しさん:2011/02/21(月) 20:28:06.89
WebBrowserばりにレイアウトが簡単なら移行しようかな
XMLでUIパーツを配置してスタイルシートで装飾みたいなことはできます?

684 :デフォルトの名無しさん:2011/02/21(月) 20:29:19.35
WPFはWindows8時代から本格普及するだろうから、今のうちに覚えておくのがベスト。
MFCプログラマーだった俺が、WinFormsの習得に遅れて苦労した経験上の話。
今回は出遅れないぞと。

685 :デフォルトの名無しさん:2011/02/21(月) 20:31:11.38
>>683
出来るよ。但しCSSにあたる物がちょっと複雑なだけで

686 :デフォルトの名無しさん:2011/02/21(月) 20:31:53.88
MSDN読むの怠いんだよな、文章はMFC時代より遥かに良くなってるけど
ハイパーリンクであっちこっち飛ぶ学術書を長時間読むのは辛い
みんなどうしてるの?

687 :デフォルトの名無しさん:2011/02/21(月) 20:33:13.97
>>685
ありがとう!本格的に移行考えるよ

688 :デフォルトの名無しさん:2011/02/21(月) 20:37:03.95
MSDNは文章が固くて読みにくい
atmarkitとか個人サイトとかで沢山資料はあるだろ
WPFもしかり

689 :デフォルトの名無しさん:2011/02/21(月) 20:42:51.40
とりあえず1,2時間で読める入門の文書読んだら何か作ってみる
で、詰まったらそれをwebで調べてとりあえず完成させる

一つ作った後だと長い奴読んでも飽きずに続けられるよ

690 :デフォルトの名無しさん:2011/02/21(月) 20:49:32.90
>>688,689
ありがとうございました。トライアンドエラーですね。頑張って勉強してきます

691 :デフォルトの名無しさん:2011/02/21(月) 21:06:17.63
試行錯誤を繰り返して江戸幕府を開いた徳川家康のように苦労と忍耐こそがプログラミング。
それができない奴にプログラミングは無理。

692 :大便:2011/02/21(月) 21:17:58.92
MFCは悪質で違法かつ許し難い難解なクラスライブラリです。
こんなもの、さっさと廃止すべきです。

693 :デフォルトの名無しさん:2011/02/21(月) 21:26:19.38
苦労と忍耐というとちょっと大げさ。
執念深さとか粘着力とかいう言葉の方が適切だと思う。
でもこれ、確かに一つの才能だとは思うが、一歩間違うと偏執狂だから、
あまり人に威張れるようなものかという気もする。

あとまあ本当に頭がいい人は粘着力なんて要らない気もするよ

694 :デフォルトの名無しさん:2011/02/21(月) 21:39:52.91
>>693
そういう人はソフト作る人じゃなくて言語作ったり論文書いたりしそう

695 :デフォルトの名無しさん:2011/02/21(月) 21:42:32.71
糞#とかマジで使えねーわー

696 :デフォルトの名無しさん:2011/02/21(月) 21:52:01.72
あんまりJ#たんをいじめるなよ

697 :デフォルトの名無しさん:2011/02/21(月) 21:54:24.02
J#たん(´・ω・`)

698 :デフォルトの名無しさん:2011/02/21(月) 21:54:50.26
ダメだダメだとか言ってないで
お前が一番好きな言語を褒め称える活動に精を出せよ

699 :デフォルトの名無しさん:2011/02/21(月) 21:56:58.34
やっぱVB.NETかな

700 :デフォルトの名無しさん:2011/02/21(月) 22:03:26.89
ここはC#スレだけどね

701 :デフォルトの名無しさん:2011/02/21(月) 22:12:09.13
豚は煽てりゃ木にも登るが
人の雄は煽てても調子に乗るのがオチじゃ
-電撃文庫 狼と香辛料-

702 :デフォルトの名無しさん:2011/02/21(月) 22:17:35.60
もっとちゃんとした文献から引用してください

703 :デフォルトの名無しさん:2011/02/21(月) 22:21:30.18
>>700
残念だけど、VB.NETはC#の ̄の上空に漂う最強なんだが?
すれはいをみないしたほうがっj

704 :デフォルトの名無しさん:2011/02/21(月) 22:24:25.00
>>686
MSDNは初めての概念を学ぶ時に読むものじゃないと思う。
比較的分かりやすく書いてる記事でも分かりにくい。
あと、日本語版は読まない方がいい。

知らない概念のことなら、CodeProjectとかに分かりやすい記事があったりするので、
そちらを読んだほうが早い。

705 :デフォルトの名無しさん:2011/02/21(月) 22:29:14.24
誰か>>703を解読してくれ

706 :デフォルトの名無しさん:2011/02/21(月) 22:30:51.07
そのままじゃん

707 :デフォルトの名無しさん:2011/02/21(月) 22:40:48.89
ところでプログラムで会話は可能だろうか

708 :デフォルトの名無しさん:2011/02/21(月) 22:45:54.72
うん

709 :デフォルトの名無しさん:2011/02/21(月) 22:49:23.68
まず会話の定義から

710 :デフォルトの名無しさん:2011/02/21(月) 22:53:40.74
かいわれ大根ですYo!

711 :デフォルトの名無しさん:2011/02/21(月) 23:30:08.72
public class 2channeler{
private void masturbation(Okazu okazu){
}
}

public interface Okazu{
}

public class HentaiMovie implements Okazu{
}

public class MysteriousHash{
}

712 :デフォルトの名無しさん:2011/02/21(月) 23:54:34.30
J#スレでやれ

713 :デフォルトの名無しさん:2011/02/22(火) 00:06:31.54
>>711
privateメソッドもPascalCaseで書くべきだと言っておこう。

714 :デフォルトの名無しさん:2011/02/22(火) 00:07:16.82
あ、ってJavaなのか、そりゃすまん。

715 :デフォルトの名無しさん:2011/02/22(火) 00:21:55.74
最近のJavaは識別子を数字で始められるのか

716 :デフォルトの名無しさん:2011/02/22(火) 00:46:09.67
いつもすいません。lockに関する質問をさせてください。

下のようなコードでChildren.Addは排他的に実行されますか?
本来ならlock(Children)をすれば疑いようもなく排他的になると
思うのですがChildren = nullの状態を作りたいのでlock(this)
をしています。
(Childrenがnullのときにlock(Children)をしてしまうとエラーになるので。)


class MyClass
{
 public List<String> Children = null;

 public MyClass(){
  Children = new List<String>();
 }

 public void Add(String hoge)
 {
  lock (this)
  {
   Children.Add(new Object());
  }
 }
}

717 :sage:2011/02/22(火) 00:58:28.38
すいません。自己レスですがロックされてました。


718 :デフォルトの名無しさん:2011/02/22(火) 01:01:33.22
Childrenをprivateにしなきゃダメじゃね?

719 :デフォルトの名無しさん:2011/02/22(火) 01:03:35.18
うん
this含め、クラス外から見えるものをロックするのは厳禁

720 :デフォルトの名無しさん:2011/02/22(火) 01:06:35.18
なんで?

721 :デフォルトの名無しさん:2011/02/22(火) 01:10:08.66
private readonly object _cri = new object();
private static readonly object _cri = new object();
のようなロックオブジェクトを作りクラス内だけで使うのが作法
クラス外からロックできるとデッドロックする可能性がある

722 :デフォルトの名無しさん:2011/02/22(火) 07:55:07.48
彼女のロックを外したいです

723 :デフォルトの名無しさん:2011/02/22(火) 08:20:02.47
readonlyは必須なの?

724 :デフォルトの名無しさん:2011/02/22(火) 08:20:50.52
[NTR]

725 :デフォルトの名無しさん:2011/02/22(火) 08:26:45.04
必須ってことはないだろうが、ロックオブジェクトにはそれ以外の機能を持たせることはねぇだろうし
挿げ替える必要がなければreadonlyにしておくべきだろう

726 :デフォルトの名無しさん:2011/02/22(火) 09:01:01.15
外部からlock(なんとか)するのもそのクラスのメソッド内でlock(this)するのも変わらない気がする

727 :デフォルトの名無しさん:2011/02/22(火) 10:03:35.65
NTRはどの名前空間に属しているのですか?

728 :デフォルトの名無しさん:2011/02/22(火) 10:06:12.35
>>727
【NTR】寝取られ 総合スレ 100
http://set.bbspink.com/test/read.cgi/erocomic/1268148145/

729 :デフォルトの名無しさん:2011/02/22(火) 10:08:33.40
>>728
ありがとうございます。そこで聞いてみます。

730 :デフォルトの名無しさん:2011/02/22(火) 10:11:20.13
そのlock(なんとか)が知らないうちにいろんなところで行われるんだから
そりゃデッドロックの可能性は上がるだろ
それに、
スレッド1: lock (a) { 処理 lock(b) { 処理 } }
スレッド2: lock (b) { 処理 lock(a) { 処理 } }
こう書くといかにもデッドロックしそうだけど
スレッド1: lock (a) { 処理 b.Foo(); } // Fooはthisをロックする
スレッド2: lock (b) { 処理 a.Bar(); } // Barもthisをロックする
これはわかりにくいだろ?

731 :デフォルトの名無しさん:2011/02/22(火) 10:23:03.23
>>726
ライブラリの設計者もそのつもりだったけど、
いろんな人が検証した結果、>>721が一番無難であるという結論に達したみたいだよ

732 :デフォルトの名無しさん:2011/02/22(火) 10:42:42.33
別にロック専用のprivateオブジェクト一個増えたところで
パフォーマンスが落ちるわけでもないしそんなに面倒になるわけでもないもん
>>721なら少なくともそのクラス内でのロックがデッドロックにつながることはなくなるわけで
危険の大小は別にしてもわざわざ潜在的な問題を含む方法を選ぶ意味がない

733 :デフォルトの名無しさん:2011/02/22(火) 11:07:29.90
>>721みたいにして
外から値変えたい場合全部公開のメソッドとか経由で操作させるようにしてるかな
内部でprivateなロック使ってセーフな感じに

自由に外からロックかけられても困るしソフト肥大化してきたらバグつぶすのがしんどくなりそう

734 :デフォルトの名無しさん:2011/02/22(火) 15:01:13.45
じゃあ俺はプロパティ

735 :デフォルトの名無しさん:2011/02/24(木) 09:26:35.04
>>723
.netのreadonlyクラス変数はダブルチェックロッキングしなくても安全と聞いた

736 :デフォルトの名無しさん:2011/02/24(木) 09:37:12.92
それはreadonlyかどうかは関係ない
ロック用のオブジェクトなんか後で変更するわけがないから
readonly付けといて損はないというだけ

737 :デフォルトの名無しさん:2011/02/25(金) 09:00:16.07
DataGridView上の数値項目に 文字列("aaa"等)を入れてフォーカスが外れた
タイミングにエラーダイアログが表示されてしまうのですが
これを回避するにはどうすれば良いでしょうか?

※チェック処理は「実行」ボタン等がクリックされたタイミングに集約したいと思っています。

738 :デフォルトの名無しさん:2011/02/25(金) 09:46:28.93
それはDataTableとかをバインドして使っている
ということでいいの?


739 :デフォルトの名無しさん:2011/02/25(金) 10:08:25.62
>>737
DataErrorをハンドリングしろとダイアログそのものかに書いている筈
その通りにすればいい

740 :デフォルトの名無しさん:2011/02/25(金) 10:13:33.15
>>737
あ、一つ注意点が有った
エラーが起きるものはDataTableには保存されないので、表示と内部データが一致しなくなる
エラーチェックをDataTableの値を使ってやりたいなら数値カラムを止めるか、数字しか入力できないようにしないと無理

741 :デフォルトの名無しさん:2011/02/25(金) 10:15:40.06
文字カラムにしてFomattingイベントで体裁を整えるようにするとか

742 :デフォルトの名無しさん:2011/02/25(金) 12:57:08.00
>>739 >>740 >>741
アドバイスありがとうございます。
DGVのセル上では属性を文字列にし何でも入力可能な様
にする事により対応したいと思います。

743 :デフォルトの名無しさん:2011/02/26(土) 17:36:06.19
DataGridViewで指定した行をアクティブにするにはどうすれば良いのでしょうか?

例えば、10行のデータが存在しているとして
3行目をアクティブにしたいのですがやりかたがわかりません。


744 :デフォルトの名無しさん:2011/02/26(土) 22:33:31.54
>>743
VB.NET質問スレ(Part35)
http://hibari.2ch.net/test/read.cgi/tech/1284423653/770

745 :デフォルトの名無しさん:2011/02/26(土) 22:45:21.12
>>743
マルチすんな死ね

746 :デフォルトの名無しさん:2011/02/26(土) 23:06:10.06
743自己解決

アホに聞かなくても調べたら一発だったwww

747 :デフォルトの名無しさん:2011/02/26(土) 23:30:00.55
よかったねおめでとう

748 :デフォルトの名無しさん:2011/02/26(土) 23:33:38.20
これからも、自分で調べるのがいいと思うよ

749 :デフォルトの名無しさん:2011/02/26(土) 23:35:16.76
           YES → 【ヒットした?】 ─ YES →最初からググレカス。死ね。
         /                \  
【検索した?】                     NO → なら、ねぇよ。死ね。
         \                   
            NO → 死ね。

まさにこれだな

750 :デフォルトの名無しさん:2011/02/27(日) 00:19:38.15
プリプロセッサでc#のバージョンや.NetFrameworkのバージョンを取得することはできますか?

751 :デフォルトの名無しさん:2011/02/27(日) 00:19:49.04
2分木

752 :デフォルトの名無しさん:2011/02/27(日) 10:23:00.07
>>750
不可能
プロジェクトのプロパティでNET_VERSION_4とかCS_VERSION_4のようなシンボルを自分で定義しておく

753 :デフォルトの名無しさん:2011/02/27(日) 14:24:19.14
オーバーロードが多いと継承時にコンストラクタ書くのめんどくさくね?
これには何か意図があるの?
コンストラクタはスーパークラスでキャストされた状態で呼ばれる事は無いから
インターフェイスを合わせる必要が無い事ってのは分かるんだけどさ。


754 :デフォルトの名無しさん:2011/02/27(日) 14:30:21.20
なんか上手い方法考えて開発チームに教えたれ

755 :デフォルトの名無しさん:2011/02/27(日) 14:31:47.25
抽象クラスや継承前提のクラスはそんなにコンストラクタ多くないでしょ
めんどくさいと感じるほど継承なんか多用するもんじゃない

756 :デフォルトの名無しさん:2011/02/27(日) 14:36:38.57
: base(・・・)で引数渡すだけじゃん
見せたくない基底クラスのコンストラクタって、見せたいのと同じくらいあると思うよ
デフォルトで基底クラスのコンストラクタが見える仕様だと、隠すための特別な構文が必要になって格好悪い

757 :753:2011/02/27(日) 15:16:55.65
オレが少数派だったか…
JAVAが長いからかな?

確かに見せたくない場合にはいいね。
でもコンストラクタで渡すものって大体プロパティあるしそっちも消すの?
(隠蔽+Editor属性だっけ?)

758 :デフォルトの名無しさん:2011/02/27(日) 15:25:20.03
似てるようでJavaとはぜんぜん違うんだな
>>757が何を言おうとしているのか理解出来ない

759 :デフォルトの名無しさん:2011/02/27(日) 15:27:37.71
コンストラクタって初期化時じゃないと整合性を欠くパラメータか
利便性のためのもののどちらかでしょう

760 :デフォルトの名無しさん:2011/02/27(日) 15:38:13.37
>>757
こういうのは多いと思う
Hoge(a, b) : base(a, b, b.A)

761 :デフォルトの名無しさん:2011/02/27(日) 22:25:48.96
自分で Exception またはその派生クラスから、派生させて例外クラス作るとき、
コンストラクタを何パターンか用意するのがめんどいとは思う。

762 :デフォルトの名無しさん:2011/02/27(日) 22:34:26.80
Excaption<Tab><Tab>でかなり楽になる

763 :デフォルトの名無しさん:2011/02/27(日) 22:34:32.09
必要になってから書くようにするか、
派生例外クラスを出力するプログラム組めば?

764 :デフォルトの名無しさん:2011/02/27(日) 22:34:47.28
基底クラスと同じパラメータなら、アドインとかの機能で自動生成するだけじゃないのか?

765 :デフォルトの名無しさん:2011/02/28(月) 00:19:14.27
T4で簡単に作れるな

766 :デフォルトの名無しさん:2011/02/28(月) 01:41:14.83
そんな機能があるの…

767 :デフォルトの名無しさん:2011/02/28(月) 02:38:19.05
ApplicationExceptionから派生させるのがマナーと聞いたんだが、そうでもないの?

768 :デフォルトの名無しさん:2011/02/28(月) 07:30:36.14
けっこう前に、ApplicationExceptionから派生させても特に意味がないってことになって、そのルールは推奨されなくなった

769 :デフォルトの名無しさん:2011/02/28(月) 10:25:57.59
[Editor(typeof(FileNameEditor), typeof(UITypeEditor))]

この属性をプロパティにつけると
そのクラスのシリアライズに失敗します。
つけなければ問題なく保存できます。

なにか対策ありますでしょうか。

実行環境はWin7 32bit .net 4 Client Profile です。

770 :デフォルトの名無しさん:2011/02/28(月) 11:49:39.62
シリアライズされるようなクラスに付けるような属性じゃねえような
まぁいいか

失敗したときに例外くらい出てないのか?
それを書けよ。一字一句もらすなよ

771 :デフォルトの名無しさん:2011/02/28(月) 13:22:17.82
>>770
確かに属性がシリアライズ不可なだけかもしれません

例外は「シリアライズに失敗しました・・・」的なメッセージらしいです
客先のPCなので残念ながら全部はわかりません

属性をはずすことにします。

772 :デフォルトの名無しさん:2011/02/28(月) 13:25:14.60
シリアライズする予定の物にはなるべく余計な物はつけない方がいい
一番いいのはシリアライズ用のクラスを作ってそれ経由でシリアライズ、デシリアライズした方がいい

773 :デフォルトの名無しさん:2011/02/28(月) 13:34:14.72
>>772
そこまでやるとシリアライズする意味がわからなくなってXlinqになったのが俺

774 :デフォルトの名無しさん:2011/03/01(火) 22:05:04.65
.NET2.0です。
メニュアイテムにショートカットキーを割り当てたのですが
たまに効かなくなって、そのキーを押すとフォーカス移動
なんかが起ります。

デフォルトでフォーカス移動にショートカットキーが割り当てられて
いるコントロールがあるのでしょうか?

775 :デフォルトの名無しさん:2011/03/01(火) 22:08:21.94
変な質問。

776 :デフォルトの名無しさん:2011/03/02(水) 05:07:07.32
LINQでTreeViewにBindingできるファイルシステムツリーのデータセットを作る
エレガントな方法ありませんか?

777 :デフォルトの名無しさん:2011/03/02(水) 09:25:37.11
>>774
そのショートカットキーが何かを書かないのか?

778 :774:2011/03/02(水) 10:57:55.46
すいません。間違えです他。
メニューアイテムがenabledになってませんでした。

779 :774:2011/03/02(水) 10:59:26.87
popupのときにenabledの切り替えしてる人
要注意
だよね。

780 :デフォルトの名無しさん:2011/03/02(水) 11:30:50.02
>>776
紅茶を飲みながら作るといいよ

781 :デフォルトの名無しさん:2011/03/02(水) 13:08:54.53
>>779
enabledかどうか見りゃすぐわかるだろ

782 :デフォルトの名無しさん:2011/03/02(水) 13:17:51.58
バインドするようになってからあんまりそういう目には会わんな

783 :デフォルトの名無しさん:2011/03/02(水) 14:32:43.12
エレガントさに拘る奴が肝の部分を人にまる投げとか
エレガントじゃねぇな

784 :デフォルトの名無しさん:2011/03/02(水) 19:57:12.21
つうか精々数十しかデータがないファイルシステムのTreeViewで
Linq使ったらエレガントじゃない罠

785 :デフォルトの名無しさん:2011/03/02(水) 23:18:17.13
データの件数でLinq使うかどうか考えるのかw

786 :デフォルトの名無しさん:2011/03/02(水) 23:37:32.59
LINQで統計がうんたら

787 :デフォルトの名無しさん:2011/03/02(水) 23:42:41.82
統計的結果がどうたらは初心者スレの話

788 :デフォルトの名無しさん:2011/03/03(木) 06:10:56.77
つうかDirectoryInfo使ってもApiCodePackのShellObject使ってもアルファベット順にソートされて居るのに
Linq使って何をやるんだ?

789 :デフォルトの名無しさん:2011/03/03(木) 21:08:15.15
>>788
MSDNでDirectoryInfo.GetFiles をみてみたら、返される順序は保障されないって書いてあったけど。


790 :デフォルトの名無しさん:2011/03/03(木) 21:14:37.95
関係ないけど.NET4からはGetFilesじゃなくてEnumerateFilesが推奨
遅延評価(読み込みながらyieldで列挙が行われる)だから効率が良い

791 :デフォルトの名無しさん:2011/03/03(木) 21:18:03.44
統計的結果が反映されないからLINQ引いてはyieldは駄目だ

792 :デフォルトの名無しさん:2011/03/03(木) 21:23:51.47
そのネタ飽きたよ

793 :デフォルトの名無しさん:2011/03/03(木) 21:27:41.39
全てのファイル情報の取得が完了するまでGetFilesの結果を取得できないって
普通に考えて糞設計だよな
yieldが一番エレガントなのはもちろんだけど
デリゲートでコールバックするバージョンが今まで無かったのが不思議

794 :デフォルトの名無しさん:2011/03/03(木) 21:29:12.47
統計的結果とか言ってる奴は面白いと思ってんの?

795 :デフォルトの名無しさん:2011/03/03(木) 21:37:29.09
統計的結果を言い出した奴は面白かったよ。

796 :デフォルトの名無しさん:2011/03/03(木) 21:53:57.26
>>789
Treeだから使うのはGetDirectoryです。こっちは記述無いけどソートされて居たと思う

797 :デフォルトの名無しさん:2011/03/03(木) 22:07:41.25
GetDirectoryがソートしてるんじゃないよ。
NTFSが名前順に並べてるから、それをそのまま返してるだけ。

ファイルシステムの実装が変われば順序が変わってもおかしくはない。

798 :デフォルトの名無しさん:2011/03/03(木) 22:25:31.96
FATは書き込んだ順番だったな
ウザかったな

799 :デフォルトの名無しさん:2011/03/03(木) 23:48:16.06
今C#でアンドロメダ銀河にいる宇宙人とコンタクトを取るための
ツールを作っています。

800 :デフォルトの名無しさん:2011/03/03(木) 23:52:30.22
>>799
なんで宇宙人とコンタクトレンズ取り合う必要があるの?

801 :デフォルトの名無しさん:2011/03/03(木) 23:54:46.72
帰りたいんだろ
察してやれよ…

802 :デフォルトの名無しさん:2011/03/04(金) 00:13:09.59
どうせならパンツを取り合えばいいのに

803 :デフォルトの名無しさん:2011/03/04(金) 00:15:35.49
TimeSpanの上限は2万9千年だからアンドロメダには3桁足りないぞ

804 :デフォルトの名無しさん:2011/03/04(金) 00:20:21.01
RFC2550を実装すれば万事解決

805 :デフォルトの名無しさん:2011/03/04(金) 00:26:53.90
いまだに亜光速通信とか使ってるのかよw

806 :デフォルトの名無しさん:2011/03/04(金) 00:34:47.50
.NET 4.0で新しく追加されたクラスとかをまとめたMSDNってある?

807 :デフォルトの名無しさん:2011/03/04(金) 03:05:02.27
MSDNマガジンにならちらほら

808 :デフォルトの名無しさん:2011/03/04(金) 09:18:41.89
でも使うのは2.0
7専用でも3.5

809 :デフォルトの名無しさん:2011/03/04(金) 09:57:37.72
2008serverの事とか考えると2.0になっちまうな…悲しいけど

810 :デフォルトの名無しさん:2011/03/04(金) 10:08:01.65
AppDomainA内のオブジェクトから、AppDomainB内の静的オブジェクトにアクセスする方法はありますか?


811 :デフォルトの名無しさん:2011/03/04(金) 10:27:09.60
静的オブジェクト?

812 :デフォルトの名無しさん:2011/03/04(金) 11:17:27.87
http://ideone.com/6Z5f2
コードを用意した。
StaticObjectクラスはAppDomain毎に確保されるから、
見かけ上はMainDomainのコードが変更してSubDomainが10を返すように見えるけど、
実際にはMainDomainが変更したのはMainDomainのStaticObjectで、SubDomainが見てるのはSubDomainのStaticObjectじゃないですか。
SubDomainからAppDomainのStaticObjectにアクセスする方法があれば知りたいのです。

813 :デフォルトの名無しさん:2011/03/04(金) 11:20:07.97
誤:SubDomainからAppDomainのStaticObjectにアクセスする方法があれば知りたいのです。
誤:SubDomainからMainDomainのStaticObjectにアクセスする方法があれば知りたいのです。

814 :デフォルトの名無しさん:2011/03/04(金) 11:24:29.77
ちょっとおちつけマジ落ち着け

815 :デフォルトの名無しさん:2011/03/04(金) 11:59:53.69
>>812
こんな感じでどう
http://ideone.com/pcys3

816 :デフォルトの名無しさん:2011/03/04(金) 15:19:02.99
なるほど、同じアプリケーション内でIPCRemotingするのか。
実際共有したいオブジェクトの中身は複雑だから単純にこうは行かないんだけど検討してみます。
ありがとうございます。

817 :デフォルトの名無しさん:2011/03/04(金) 16:15:19.23
WCFのプロセス間通信を使う手もあるよ
古臭いリモーティングの仕組みやMarshalByRefObjectを排除できるのでちょっと気持ちいい

818 :デフォルトの名無しさん:2011/03/05(土) 10:34:50.70
emlメールファイルの解析したいのですが
そういうライブラリってあるのでしょうか?

819 :デフォルトの名無しさん:2011/03/05(土) 14:54:11.25
探してる手間暇あるなら作ってしまう方が早いわな

820 :デフォルトの名無しさん:2011/03/06(日) 00:43:49.05
AppliationSettingsBaseの設定ファイルを実行ファイルと同じディレクトリに保存したいのですが、
SettingsProviderの独自実装を作るしかないでしょうか?

ユーザーごとバージョンごとに設定ファイルを分けたりするは必要ないので
(むしろソフトのディレクトリ以外を汚染したくないです)
シンプルに設定を保存したいです
いい方法はないでしょうか?

821 :デフォルトの名無しさん:2011/03/06(日) 00:47:47.26
それVista以降だとセキュリティで弾かれるよ

822 :デフォルトの名無しさん:2011/03/06(日) 00:54:24.49
インストーラーを使わずに任意の場所に配置するアプリなので、
USBメモリなどに入れて設定ごと持ち運びたいです

インストーラーを使って配置するアプリでは諦めるしかないみたいですね

823 :デフォルトの名無しさん:2011/03/06(日) 00:57:27.79
>>822
スタティックなクラス定義して、シリアライズするのが早道だよ

824 :デフォルトの名無しさん:2011/03/06(日) 01:01:27.42
に、日本語なのかそれは・・・

825 :デフォルトの名無しさん:2011/03/06(日) 08:21:36.46
>>824
スタティックなクラスをデファインして、シリアライズするのがセオリー

826 :デフォルトの名無しさん:2011/03/06(日) 12:56:41.42
育ってきた環境が違うからすれ違いは否めない・・・

827 :デフォルトの名無しさん:2011/03/06(日) 14:26:04.39
DefaultIfEmpty()でのデフォルト値の指定の仕方がいまいちよくわかりません。
どんな型でデフォルト値のパラメータを渡してあげるのかがわからないのです。
ご教授お願いします。

var a = new[] {
new { X = 0, Z = "ONE" },
new { X = 1, Z = "TWO" },
new { X = 2, Z = "THREE" },
new { X = 3, Z = "FOUR" },
new { X = 4, Z = "FIVE" },
};
var b = new [] {
new { X = 0, W = "あ" },
new { X = 0, W = "い" },
new { X = 1, W = "う" },
new { X = 1, W = "え" },
};

var d = from cura in a
join curb in b on cura.X equals curb.X into p
from curp in p.DefaultIfEmpty(ここに何を入れればいいか分からない)
select new { cura.Z, curp.W };



828 :デフォルトの名無しさん:2011/03/06(日) 14:40:09.04
DefaultIfEmptyの中に返す値を書く

829 :デフォルトの名無しさん:2011/03/06(日) 14:43:06.02
>>828

p.DefaultIfEmpty("値なし")

こんな感じでしょうか?これだとエラーになってしまって…。
何か根本的なことを理解してないのかもしれません。。

830 :デフォルトの名無しさん:2011/03/06(日) 14:43:51.94
一度メソッドで書いた方が分かりやすいと思うぞん

831 :デフォルトの名無しさん:2011/03/06(日) 14:50:45.44
>>829
http://psyas.wordpress.com/2009/12/14/%E2%96%A0%E3%80%90vb-net%E3%80%91linq-to-entities%E3%81%A7%E5%B7%A6%E5%A4%96%E9%83%A8%E7%B5%90%E5%90%88%E3%82%92%E3%81%99%E3%82%8B/

832 :デフォルトの名無しさん:2011/03/06(日) 15:05:49.42
普通にこれで通らないだろうか

from curp in p.DefaultIfEmpty(new { X=0, W= "default"})

TSource(この場合は匿名型 {X,W} )を要求されているのにstringを返して通るはずがない罠

833 :デフォルトの名無しさん:2011/03/06(日) 15:10:18.85
>>832

それで通りましたん!
ありがとうございます!!!
仰るとおり、stringじゃだめですね!!馬鹿ですみませぬ。

834 :デフォルトの名無しさん:2011/03/07(月) 15:03:10.65
デッドロックでちょっとした疑問
よくlock(this)でデッドロックの危険が、と言われるけど
typeofみたいに対象インスタンスが複数になるわけでも
ないのになんでデッドロックになるんだろう?

835 :デフォルトの名無しさん:2011/03/07(月) 15:13:54.12
thisはクラスの外から見えるだろ?
外からlock(a)とするのと、aのインスタンスメソッドの中でthisをロックするのは
どちらもaのインスタンスをロックしている。
同じオブジェクトが同時にロックされる可能性が高くなるから、当然デッドロックの危険も高くなる。
クラスの外から見えないオブジェクトをロックしている限り、
そのクラスの中だけで待合状態を起こさないように気をつけていれば
そのロックがデッドロックの原因になる恐れはない。つまり責任範囲が限定できるってこと。

836 :デフォルトの名無しさん:2011/03/07(月) 16:23:43.39
隠蔽はオブジェクト指向の基本だろうがよォ

なんでロックを露出したがるの?変態なの?

837 :デフォルトの名無しさん:2011/03/07(月) 17:12:38.12
>>835
つまりは規約でlock(this)縛りするなら問題はないということか
規約縛りなんて守られないからやめとけって話かな

>>836
つまりICollection.SyncRootは変態という話ですねわかります

838 :デフォルトの名無しさん:2011/03/07(月) 17:15:36.24
そういえば、BindingList<T>をマルチスレッドで安全に列挙するにはどうすればいいんだろう

839 :デフォルトの名無しさん:2011/03/07(月) 17:17:35.16
>>837
列挙中に変更されないように外部からロックする必要があるだろ

840 :デフォルトの名無しさん:2011/03/07(月) 17:40:13.53
>>839
ジェネリック"以外"のコレクションならSync派生があるだろがよ
つかなんでジェネリック版にも用意しなかったのか理解に苦しむ

841 :デフォルトの名無しさん:2011/03/07(月) 17:46:30.42
要らなくなったから取っ払われたという発想はないんかい

842 :デフォルトの名無しさん:2011/03/07(月) 17:50:35.71
>>839-840
おまえらこれでググれ つSynchronizedCollection

>>837
残念ながらBindingにはないらしい
地道にlockするしかないっぽい

843 :デフォルトの名無しさん:2011/03/07(月) 17:53:01.58
SyncRootプロパティはSynchronizedメソッドが生成するラッパーコレクションが利用していたんだ
ジェネリックコレクションではSynchronizedメソッドがなくなったので、SyncRootプロパティもお役御免となった

844 :デフォルトの名無しさん:2011/03/07(月) 17:53:47.51
リロードしてなかったアウチ

845 :デフォルトの名無しさん:2011/03/07(月) 19:24:23.41
非同期処理なんてのは慎重に設計して責任範囲を限定して扱うもの
片っ端からコレクションなどをスレッドセーフにしたからといって安心というようなものじゃない
.NETはそういうポリシーなんだよ

846 :デフォルトの名無しさん:2011/03/08(火) 23:52:12.27
フォームの背景を完全に透明にしたくてBackColorにTransparentを使えるようにしたのですが
若干グレーっぽいような色が見えてしまいます。

何かいい方法はないでしょうか?
ただしTransparencyKeyは作成しているものの仕様上使うことはできません

847 :デフォルトの名無しさん:2011/03/09(水) 00:01:15.06
Region設定する方が素直なやり方じゃないのかなと。
まあ固定サイズじゃないと上手くいくのかなって気もするけど。

しかし、なんでそんなアタック25みたいなキモいUI作りたいかね。
あんまり趣味のいいセンスとも思えないが

848 :デフォルトの名無しさん:2011/03/09(水) 00:07:01.12
いろんなニーズがあるんだから、いい悪いをお前が決めつける必要はないだろ。
技術的なことだけ答えていればいいのに。

849 :デフォルトの名無しさん:2011/03/09(水) 00:08:35.03
>>848
>若干グレーっぽいような色が見えてしまいます。
これだけじゃあなあ
SSもないし晒せる範囲のコードもないので本当に余計なことをやってないのかすらわからん

850 :デフォルトの名無しさん:2011/03/09(水) 00:20:41.02
>>848
決め付けてないでしょ。個人の感想です。

しかし、人にケチつけるな、というケチ?
平気で人をお前呼ばわりするタイプって大概こういう自分棚上げ野郎だね。

851 :デフォルトの名無しさん:2011/03/09(水) 00:29:52.57
方法は色々あるだろうけど、とりあえず下のコードで試したらいけた。
Formから派生させたForm1クラスに以下のコードをどうぞ。希望通りかは分からんけど。

public Form1()
{
 InitializeComponent();
 this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
 this.BackColor = Color.Transparent;
}

protected override CreateParams CreateParams
{
 get
 {
  CreateParams cp = base.CreateParams;
  cp.ExStyle |= 0x020;
  return cp;
 }
}

protected override void OnPaintBackground(PaintEventArgs e)
{
 // base.OnPaintBackground(e);
}

p/invoke使ってWinAPI使ってもいいけど。

Windows.Formsのコントロールを透明化するテクニックはネット上で沢山掲載されてるから、
分からなければ英語で検索することをおすすめする。"Form" "C#" "Transparent" とか。

852 :デフォルトの名無しさん:2011/03/09(水) 00:33:27.13
>>847
アタック25をつくりたいとしたら…?

853 :デフォルトの名無しさん:2011/03/09(水) 00:38:42.00
またどうでもいいことを・・・

あとどういう物を作りたくてそういうことをやってるかというのも
軽く添えておけば代替案なんかもでてくるのにね
質問の仕方によっては答えがもらえないどころか攻撃されるだけという・・・

854 :デフォルトの名無しさん:2011/03/09(水) 00:46:37.08
フォームの背景を透明にしたいって言ってるんだから、これ以上明確な質問は無いだろw
代替案も糞もない。分からなければ分かりませんでいいのでは?

855 :デフォルトの名無しさん:2011/03/09(水) 00:53:45.89
winformの背景を透明にしたいという質問者はおかしい人ばっかりw

856 :デフォルトの名無しさん:2011/03/09(水) 00:58:02.48
そうだねPowerPointで文字を入力する際に、いちいち背景が消されて見えなくなったら不便だね。

857 :デフォルトの名無しさん:2011/03/09(水) 01:49:26.65
特殊な形状のウィンドウを作りたいとかそんなのじゃね?

858 :デフォルトの名無しさん:2011/03/09(水) 02:06:11.05
>>853=>>847だとしたらひどいな。コミュニケーションが出来ない類かもしれん。

859 :デフォルトの名無しさん:2011/03/09(水) 04:42:03.40
別に=なんて無くても両方キチガイの類

860 :デフォルトの名無しさん:2011/03/09(水) 08:46:15.10
846です
遅くなって申し訳ないです。

用途はスプラッシュウインドウに使おうと思っています。

スプラッシュウインドウに使う画像はAlphaBlendを使用した影があるのですが、
TransparencyKeyで指定してしまうと影の部分がうまく透過されなかったのです。

>>851さんの方法で透明化し、
protected override void OnPaintBackground(PaintEventArgs e)
{
//base.OnPaintBackground(e);
e.Graphics.DrawImage(bmp, 0, 0); // bmp はスプラッシュウインドウの画像
}
このようにしたところ背景は透過されましたが、フォームの裏側の状態が変わってもはじめフォームの裏側にあった物が
透過され続けていましたw
いろいろサンプルを探してみたいと思います

861 :デフォルトの名無しさん:2011/03/09(水) 13:42:36.36
>>860
裏側のものが変わってもWM_PAINT飛んでこないかも

862 :デフォルトの名無しさん:2011/03/09(水) 17:26:07.37
846です
ttp://www.ipentec.com/document/document.aspx?page=csharp-create-layered-window
こちらの方法で無事に目的を達成できました。ありがとうございました!

863 :デフォルトの名無しさん:2011/03/10(木) 10:16:06.94
Visual C# expressって言うのを使ってみたんですが
すごいですね
なんとかツクールみたいにパーツ持ってきて切り貼りして数値変えたら
ソフトが作れるんですね
直接プログラムを書かなくていいって凄い

でもこんなのが通用するのはチュートリアルだけなんですよね、やっぱり?

864 :デフォルトの名無しさん:2011/03/10(木) 10:24:47.48
いやボタンを貼り付けるのはプログラムいらないけど
ボタンが押されたときの処理はプログラムで書く
コントロールをペタペタ貼り付けるのは業務でも普通に使う

865 :デフォルトの名無しさん:2011/03/10(木) 10:29:05.71
>>864
今まだチュートリアルで画像ソフトを作成しているんですが

プロパティで(name)って所にclearbuttonだのcloseButtonだの書いて
ダブルクリックで生成されたコードっぽいのは
処理じゃなく只のラベル?なんですか?


866 :デフォルトの名無しさん:2011/03/10(木) 10:31:45.42
ダブルクリックして生成されるのは何もしないスケルトン
private void clearbutton_Click(object sender, EventArgs e) {
// ここにclearbuttonが押されたときに実行したいプログラムを書く
}

867 :デフォルトの名無しさん:2011/03/10(木) 10:33:46.25
あああ、なるほど・・
先は長い・・

868 :デフォルトの名無しさん:2011/03/10(木) 23:37:37.22
まぁそれでもVisual C#の生産性の高さはすごいものがあるよ。
これに嵌る人ならモチベーション上がって一気にプログラムに慣れることができるだろう。

869 :デフォルトの名無しさん:2011/03/11(金) 01:00:42.79
>>867
長くかかるようならふらっとのほうに行ってくれないかな
初心者が居つくと講釈垂れる人が発生してうざいんだ

870 :デフォルトの名無しさん:2011/03/11(金) 01:42:26.78
>>869
こういう人が沸いてうざい

871 :デフォルトの名無しさん:2011/03/11(金) 01:56:09.92
そそ、だからフラットに行ってね^^

872 :デフォルトの名無しさん:2011/03/13(日) 02:56:27.11
http://www.atmarkit.co.jp/fdotnet/csharp4/csharp4_09/csharp4_09_01.html
いらっ

873 :デフォルトの名無しさん:2011/03/13(日) 02:58:35.76
ターゲットフレームワークをガン無視してるのは何でなのかね

874 :デフォルトの名無しさん:2011/03/13(日) 13:21:22.14
C#のバージョンと.NETのバージョンを混同しすぎ
記事のタイトルの 「C# 4」が象徴してるな
.NETのバージョンは「4」で正しいが、C#のバージョンは「4.0」

875 :デフォルトの名無しさん:2011/03/13(日) 13:37:50.60
まぁ川俣だし

876 :デフォルトの名無しさん:2011/03/13(日) 13:47:37.38
むしろアホな2chネラの小姑ぶりを象徴してるだろ>>874

877 :デフォルトの名無しさん:2011/03/13(日) 13:49:04.99
そんなこと書くと川俣乙って言われちゃうぞ☆

878 :デフォルトの名無しさん:2011/03/13(日) 13:49:42.21
>>876
ちゃんと読めよ
C#3.5とか出てくるぞw

879 :デフォルトの名無しさん:2011/03/13(日) 23:24:54.39
今自分はFormでタイトルバーにもスキンを使えるようなアプリを作成したいのですが、
角を丸くするのに手こずってます。
というのは角を丸くすると背景を透明にしなければなりません。
しかし作っているのがグラフィックエディタということがあり、TransparencyKeyを
使うことが出来ません。
>>860の方法ではコントロールが描画されませんし……
いい方法はありませんかね??

880 :デフォルトの名無しさん:2011/03/13(日) 23:29:00.76
やっぱりFormに透明が関わる質問をする人はちょっとあれだなw

WPFで作るか、スキンを諦めるか、めんどくさいけど>>860で自力でがんばるか

881 :デフォルトの名無しさん:2011/03/13(日) 23:30:12.57
透明使わなくてもRegionでがんばれば何とかなる

882 :デフォルトの名無しさん:2011/03/13(日) 23:37:21.31
あ、そういえば>>860の方法にちょっと足せばコントロールのイベントも取れるとか以前やってたな

ログを漁ってみなよ

確か、Formを2枚重ねて〜とか話してたはず

883 :デフォルトの名無しさん:2011/03/13(日) 23:40:33.16
>>880
ちょっとアレですみません・・・
>>881
Region・・・ですか
>>882
そうなのですか!漁って見ますね

884 :デフォルトの名無しさん:2011/03/13(日) 23:41:23.69
>>883
ここかこっちか忘れたけどw
ふらっとC#,C♯,C#(初心者用) Part70
http://hibari.2ch.net/test/read.cgi/tech/1298054350/

885 :デフォルトの名無しさん:2011/03/13(日) 23:45:48.56
http://logsoku.com/thread/pc12.2ch.net/tech/1265283175/80-93
これですかねえ・・・

886 :デフォルトの名無しさん:2011/03/13(日) 23:53:40.84
>>885
それじゃないかなあ・・・
その後に一応サンプルコードも出回った記憶が・・・

887 :デフォルトの名無しさん:2011/03/13(日) 23:56:51.80
思い出した
赤い線を描いてそれをつまんだらウインドウのサイズを変えるとかなんとかやってたな

888 :デフォルトの名無しさん:2011/03/13(日) 23:57:24.88
>>886
そうですかあ・・・
今日のところは一旦諦めます。
また明日にでも挑戦してみます

ありがとうございました。またよろしくお願いします

889 :デフォルトの名無しさん:2011/03/14(月) 00:06:23.99
と思った
http://2bangai.net/read/3303979ec9a1e7cb65be59f61c455e633f912a2b1ae9275feb52c175774f94b8/501
ここの563あたりからありました。
もう時間がないのでやはり続きは叉の機会にします。
本当にありがとうございました

890 :デフォルトの名無しさん:2011/03/14(月) 00:06:49.13
と思ったらでしたwwww
連レスすみません

891 :デフォルトの名無しさん:2011/03/14(月) 00:13:19.16
>>889
その辺

892 :デフォルトの名無しさん:2011/03/14(月) 23:49:21.57
どうも昨日のFormのスキン云々の人です。
結局>>881の方法でごにょごにょしたら出来ました。
フォームの移動等も割とすんなり出来ました。
ありがとうございました

893 :デフォルトの名無しさん:2011/03/15(火) 00:07:44.19
>>881っていうか、透明なんてアホっぽい方向にがんばるより素直にRegion使った方がよいのではって
>>847の時点で書いてあるんだけどさw

894 :デフォルトの名無しさん:2011/03/15(火) 00:09:24.36
>>893
そもそもWinFormで透明を扱う需要がないし透明扱うサンプルって
Region使ったの無いので関係ない話に見える

895 :デフォルトの名無しさん:2011/03/15(火) 00:41:36.87
コマンドラインで作業したいんですけど、MSBuildとNAntどっち使うのがいいでしょうか?

896 :デフォルトの名無しさん:2011/03/15(火) 13:37:09.29
VC#で作ったプロジェクトをコマンドラインからmsbuildでビルドできるよ

897 :デフォルトの名無しさん:2011/03/15(火) 14:19:41.75
NAntとかもう存在価値無いだろ
MSBuildとの差別化として手書きに適したツールを目指すならわかるが、XMLとかアホかと
VSで作ったプロジェクトファイルを必要に応じて弄ってコマンドラインからmsbuildでだいたいなんでもできるよ

898 :デフォルトの名無しさん:2011/03/17(木) 16:09:03.23
あるアプリを作っていてそのアプリに更新機能をつけたくて
アップデーターを作ったのですが

アプリ起動→更新をクリック→アップデーター起動→新しいバージョンの.exeをDL→
古い.exeを削除し新しいものに置き換える

としたいのですが、最後の置き換えるときに古い.exeを削除できません。
Process.Start("Updater.exe");
Application.Exit(); // .exeを削除できるように終了する
このようにしてアップデーターを呼び出しています。
アップデーターを起動後はボタンをおすことで更新が始まります。

どなたか良い方法をご教授ください

899 :デフォルトの名無しさん:2011/03/17(木) 16:35:40.55
起動している自分自身を削除しようとしてねえか?

900 :デフォルトの名無しさん:2011/03/17(木) 16:42:01.59
>>899
起動している自分自身ということになるのですかねえ・・・
一応対象となるプログラムは
Application.Exit();
でとじていますが・・・

901 :デフォルトの名無しさん:2011/03/17(木) 16:44:10.91
削除の時点でちゃんとプログラム終わってんの?

902 :デフォルトの名無しさん:2011/03/17(木) 16:45:19.68
もしくは権限とか、削除できない理由をAPIの戻り値とかで調べたりできたとおもうけど。
削除できないと例外がでるんだっけな、そこら辺はしらべてみてくれい。

903 :デフォルトの名無しさん:2011/03/17(木) 16:46:26.92
アプリ側にMutex作らせておいて、アップデータ側でMutexが消えるのを確認するまで待つとか

904 :デフォルトの名無しさん:2011/03/17(木) 16:49:46.51
>>901
タスクマネージャーでプロセス見る限りではアップデーターではない方は消えています。
>>902
例外は出てます。アクセスが拒否されているみたいです。
>>903
hmhmググッてきます

905 :デフォルトの名無しさん:2011/03/17(木) 17:54:02.98
ううむやはりできない
ひとつわかったのは
>>898の手順でアップデーターを起動した状態だとアップデートを行っていないにもかからわず
Windowsからアップデート対象のファイルを削除できませんでした。

Process.Start("Updater.exe"); だと呼び出し元がロックされた状態になるのですかねえ

906 :デフォルトの名無しさん:2011/03/17(木) 18:23:33.90
アップデーターの権限が実行ファイルを削除できるレベルのものではないのではないかな?
特権みたいのを与えないとむりとかそんなんじゃねえかな。

907 :デフォルトの名無しさん:2011/03/17(木) 18:34:34.28
>>906
試しに適当な実行ファイルを消させてみたら普通に消せました。

908 :デフォルトの名無しさん:2011/03/17(木) 18:51:40.86
ごめんなさい原因分かりました。
オリジナルコントロールを作っていて、同じプロジェクト内でそのコントロールを使うために参照に
アップデート対象となる実行ファイルをいれていたせいでした。
クラス等も含めてコピーしてソースを直した結果無事に成功しました。

こんな初歩的なことですみません。

909 :デフォルトの名無しさん:2011/03/17(木) 19:11:54.91
#頭に指して死ね

910 :デフォルトの名無しさん:2011/03/17(木) 19:15:45.63
死んじゃえ!死んじゃえ!#の角に頭ぶつけて死んじゃえーっ!

911 :デフォルトの名無しさん:2011/03/17(木) 19:28:49.83
#の角は痛そう

912 :デフォルトの名無しさん:2011/03/18(金) 06:40:28.26
どうすればDelegate継承型のTypeオブジェクトから引数や返り値の型を
取得できますか?
例:typeof(Func<TArg,TRet>)からTArgとTRetを取得

913 :デフォルトの名無しさん:2011/03/18(金) 07:04:44.30
Delegate派生型ならInvokeのMethodInfo見ればいいんじゃないの?
試したことはないが

914 :デフォルトの名無しさん:2011/03/18(金) 07:42:21.44
MethodInfoは、Delegate派生型(継承型)のインスタンス
がもつのではないでしょうか。
型情報から取得ってわけにはいかないでしょうか?

915 :デフォルトの名無しさん:2011/03/18(金) 10:08:41.11
typeof(Func<TArg,TRet>).GetGenericArguments()ただしFunc限定
一般には、typeof(デリゲートの型).GetMethod("Invoke")でMethodInfoを取得するしかない
それだって立派な型情報だと思うけど何が問題なのか

916 :デフォルトの名無しさん:2011/03/18(金) 10:38:07.78
>>915
申し訳ありません。せっかく素晴らしい方法を
教えていただいたのに、Invokeメソッドのことを見落としておりました。
DelegateはTarget(object)とMethod(MethodInfo)から成っているので、
デリゲートインスタンスからそのMethodを習得しろといわれているのかと
MethodInfoだけ見て反射的に…。
その方法でやらせていただきます。ありがとうございました。

917 :デフォルトの名無しさん:2011/03/18(金) 16:31:21.47
LINQでMAX値と一緒に、MAX値を持っている要素ごと取得するのはどうすればいいのでしょうか?
状況としてはこんな感じです↓
http://okwave.jp/qa/q6601769.html
ちなみにこれは俺がした質問です。


918 :デフォルトの名無しさん:2011/03/18(金) 17:16:33.25
なんで無理してLINQでやろうとするかな
OrderByとFirst使え

919 :デフォルトの名無しさん:2011/03/18(金) 17:23:45.97
>>918
なるほど!!それで出来そうです!!

>なんで無理してLINQでやろうとするかな
すみません。まだ覚えたてなので、使いこなせるようになりたくって。

920 :デフォルトの名無しさん:2011/03/18(金) 17:49:43.02
そうおもうならやり切れよ
Linqでガッツリやれ

921 :デフォルトの名無しさん:2011/03/18(金) 21:15:19.46

C#でID・パスワードの自動再発行の機能をつくりたいのですが
一番効率的な方法ってどんなものがあるんでしょう?

ざっくりな質問ですいませんがよろしくお願いします。

922 :デフォルトの名無しさん:2011/03/18(金) 21:18:22.55
登録時のメールアドレスにリセットアドレス投げればいいんじゃないですか
C#全く関係ないけどね

923 :デフォルトの名無しさん:2011/03/18(金) 21:25:54.24
使えるなら統合認証が楽だとは思う

924 :デフォルトの名無しさん:2011/03/18(金) 21:27:42.72
PasswordRecoveryコントロール

925 :デフォルトの名無しさん:2011/03/18(金) 21:38:52.80
>>922

ありがとうございます。ただ、実装にちと時間がかかりそうな気が・・


>>924

なるほど。。ちょっと調べてみたんですが良さげですね!
ありがとうございます。



926 :デフォルトの名無しさん:2011/03/19(土) 05:16:25.91
デリゲートを使う目的、利点を教えてください
どの解説も直接メソッド呼び出せばいいだろって
ツッコミたくなるような糞ばっかりでうんざりしてます

927 :デフォルトの名無しさん:2011/03/19(土) 05:16:46.97
ふらっとに帰れ

928 :デフォルトの名無しさん:2011/03/19(土) 05:18:10.92
向こうは荒らしが常駐しているのでここで質問させてください

というか、あなた荒らしじゃないの?
この時間にいるのは荒らししかいないようだしね

929 :デフォルトの名無しさん:2011/03/19(土) 05:28:09.96
つか住人はほぼ同じだよ。
向こうはくだらねぇ質問スレの残骸なんだけど、C#が君のようなくだらねぇ質問者を引き寄せるんで、わざと分けたままなの。

930 :デフォルトの名無しさん:2011/03/19(土) 05:37:36.35
で、お前らは初心者煽って楽しんでるんだ?
気の毒な人たちだね
そうやって自分たちの首絞めているんだね?
若いプログラマが育たなければ安泰とでも思ってるのかな?
そりゃ海外に負けるわけだ

931 :デフォルトの名無しさん:2011/03/19(土) 05:41:59.99
少なくともお前のようなバカはいらん。

932 :デフォルトの名無しさん:2011/03/19(土) 07:12:56.27
若手を育てるのは仕事であって趣味じゃない
どうしてもっていうなら1万/hぐらいでお安く教えてやるよ

933 :デフォルトの名無しさん:2011/03/19(土) 07:18:19.92
ID出ないから自演するの良くないと思います

934 :デフォルトの名無しさん:2011/03/19(土) 07:29:48.79
ID出ないから自演と決めつけるの良くないと思います

935 :デフォルトの名無しさん:2011/03/19(土) 07:45:21.50
自演は自粛汁

936 :デフォルトの名無しさん:2011/03/19(土) 08:32:01.12
雨には放射能が含まれていると危険だから
必ず傘をさすようにってお天気で毎回言った方が良い

937 :デフォルトの名無しさん:2011/03/19(土) 12:17:33.24
はい

938 :デフォルトの名無しさん:2011/03/19(土) 13:21:56.12
合点承知

939 :デフォルトの名無しさん:2011/03/19(土) 13:25:10.53
>>926
Observerパターンを従来のインターフェイスによる方法とデリゲートを使った方法の
両方で書いてみれば、嫌でもデリゲートの威力は体感できると思うけどね。

あと別解。

FirstName, FamilyName, Age, .....などのプロパティを持つPersonクラスがあるとする。
List<Person>のソート方法を、Personのプロパティーの数だけ用意したい(Personの各プロパティーを
キーにしてソートする)とき、List.Sortのどのオーバーロードを使うのが一番簡潔に書けるか
やってみるとか。

940 :デフォルトの名無しさん:2011/03/19(土) 13:55:36.16
>>939
ありがとう
ソートはよくわからないけど、Obseverの方はよくわかった

941 :デフォルトの名無しさん:2011/03/19(土) 14:44:28.61
Linq使えば一発で分かる。
デリゲートがないと話にならない。

942 :デフォルトの名無しさん:2011/03/19(土) 14:48:40.40
そもそもeventがデリゲートな件

943 :デフォルトの名無しさん:2011/03/19(土) 14:55:41.68
>>926
http://ufcpp.net/study/csharp/misc_delegate.html
↑これじゃダメなの?

944 :デフォルトの名無しさん:2011/03/19(土) 15:52:04.04
そもそもeventがObserverな件

945 :デフォルトの名無しさん:2011/03/19(土) 16:21:57.09
>>943
それそれ、その説明がわかりにくい
普通にメソッドでいいじゃんって思う

eventや非同期でのデリゲートの有用性はわかりますが
それ以外でのデリゲートの有用性が知りたい

946 :デフォルトの名無しさん:2011/03/19(土) 16:29:54.16
>>945
その二つで有用ならそれで十分じゃねーの?

947 :デフォルトの名無しさん:2011/03/19(土) 16:33:19.10
ドライバーでねじを締められるのはわかりますがほかの使い方を知りたい

鼻くそでも穿ってれば?

948 :デフォルトの名無しさん:2011/03/19(土) 16:35:22.20
>>945
ひょっとして、匿名メソッドとデリゲートを混同してない?

あと、eventと非同期の有用性わかったんならそれでOK。

949 :デフォルトの名無しさん:2011/03/19(土) 16:39:04.99
つか他にあんのかい?
>>943ではコールバック=非同期みたいないい方をしてるけどLINQもコールバックだ
コールバック処理の中の一つの例が非同期処理

950 :デフォルトの名無しさん:2011/03/19(土) 16:40:55.07
>>948
え?それだけでいいの?

例えば、デリゲートに複数のメソッドを追加することできるけど
こういうを使う機会とかないんですか?
解説サイトの例がこういうのばかりなので
何に使えるのかが知りたいんだけど

もちろん自作クラスやコントロールに複数のイベントを
登録するというのはわかります

951 :デフォルトの名無しさん:2011/03/19(土) 16:42:57.26
直接マルチキャストデリゲートを使う機会はまずない
eventを使うと勝手に利用されるつから

952 :デフォルトの名無しさん:2011/03/19(土) 16:44:02.65
>>948
それはあるかもしれない
匿名メソッドとデリゲートを一緒に解説してたりするから
混同している部分はあると思う

953 :デフォルトの名無しさん:2011/03/19(土) 16:46:52.08
>>950
マルチキャストなデリゲートなんて、イベント以外の何に使うんだよ。

954 :デフォルトの名無しさん:2011/03/19(土) 16:50:20.42
>>953
そうなんだー
じゃあ、とりあえずは、非同期とイベントを実現するのに
デリゲートは使われているって思っていればいいんですね

解説サイトの多くは演算処理に使ってたり
いまいち実用性がないようなコードばかりだったので
それ以外の使い道があるのかと思っていた

DelegateComandのようにある処理をまとめるために使う方法で
みんな使っているのかなと思ったけどそうでもなさそうですね

955 :デフォルトの名無しさん:2011/03/19(土) 16:51:59.49
そもそもDelegateCommandってWPF(とSilverLight)の奴だし
超少数派

956 :デフォルトの名無しさん:2011/03/19(土) 16:55:01.35
>>954
>多くは演算処理に使ってたり
あんまり使ったことないけどC/C++時代にコールバックて
ソートか何かで使ってなかったっけ?

957 :デフォルトの名無しさん:2011/03/19(土) 16:56:30.51
C++はファンクタを要求する奴がSTLに沢山あるよ
また増えるし

958 :デフォルトの名無しさん:2011/03/19(土) 16:58:48.57
他はW32APIを使うときにデリゲート使うぐらいですね

959 :デフォルトの名無しさん:2011/03/19(土) 16:59:57.03
>>954
後は、LINQ覚えろ。

960 :デフォルトの名無しさん:2011/03/19(土) 17:01:10.70
また何に使うんですかとか言い出すから覚えんでいい。

961 :デフォルトの名無しさん:2011/03/19(土) 17:02:20.92
>>956
いわゆる述語ってやつね。
比較関数とかを外から挿しこむの。

C#だと、IEqualityComparer使ったものとデリゲート使ったものが混在してるのよねぇ。
3.0以前のものはインターフェイス、3.5以降はデリゲートって感じで。

962 :デフォルトの名無しさん:2011/03/19(土) 17:04:06.09
そっか。"DelegateCommand"が、とかって言い出すのって以前いたWPF云々の奴か。
前も同じこと言ってて同じ流れになったのに、また同じこと聞いて、何度繰り返すんだか。

963 :デフォルトの名無しさん:2011/03/19(土) 17:04:45.96
いいんだよWPF使ってる奴なんて珍種なんだから気にしなくて

964 :デフォルトの名無しさん:2011/03/19(土) 17:05:46.85
>>957>>961
その辺その辺
>多くは演算処理に使ってたり
ってのは手っ取り早く簡単なネタで説明するには
その辺のコード書くほうが楽ってだけだと思うよ

実際はその辺のコードなんて.net側でどんどん実装しちゃうから
ほとんどユーザーが気にする必要が無いので無意味に見える

965 :デフォルトの名無しさん:2011/03/19(土) 17:07:20.39
盛り上がってるところ悪いが次スレをだな
俺は規制中なので無理

966 :デフォルトの名無しさん:2011/03/19(土) 17:40:20.13
次スレ不要だろ

967 :デフォルトの名無しさん:2011/03/19(土) 18:26:51.37
変なのが沸かない限り、このペースなら>>980あたりでいいだろ

968 :デフォルトの名無しさん:2011/03/19(土) 18:39:43.33
>>961
IEqualityComparerはEqualsとGetHashCodeが常にセットだから
デリゲートよりもインターフェイスを使う方が適切
SequenceEqualはデリゲート使えてもいい気はするけど

969 :デフォルトの名無しさん:2011/03/19(土) 20:00:06.18
>>968
でもそれはやっぱり、ハッシュ値使うかどうか次第では。
ソートにハッシュ値は使わないわけで。

970 :デフォルトの名無しさん:2011/03/19(土) 20:24:42.44
OrderByはIComparer。
これもComparison使えたほうがいいとは思うね。

971 :デフォルトの名無しさん:2011/03/20(日) 03:37:01.17
糞#

972 :デフォルトの名無しさん:2011/03/20(日) 17:07:46.66
Streamをファイルに出力したい

StreamReader reader = new StreamReader(stm, System.Text.Encoding.GetEncoding("Shift_JIS"));
StreamWriter writer = new StreamWriter(filePath, false, System.Text.Encoding.GetEncoding("Shift_JIS"));
writer.Write( reader.ReadToEnd();

これでおk?
回りくどい気がする、StreamからStreamWriteに直接データ送れないの?

973 :デフォルトの名無しさん:2011/03/20(日) 17:20:44.10
File.Copyすれよ
あとエンコーディングが同じならReaderWriterなんか使わずStream.CopyToでいい

974 :デフォルトの名無しさん:2011/03/20(日) 17:21:27.70
追記したいんじゃないの?

975 :デフォルトの名無しさん:2011/03/20(日) 17:24:33.69
Stream.CopyTo()で追記できるじゃん

976 :デフォルトの名無しさん:2011/03/20(日) 17:28:34.04
StreamReader/WriterのStreamはBaseStreamプロパティって事までは言わせんな恥ずかしい

977 :デフォルトの名無しさん:2011/03/20(日) 17:36:03.68
CopyTo使うとビルドできねーぞ
引数 1: 'System.IO.StreamWriter' から 'System.IO.Stream' に変換できません

//ネットのデータ受け取り
Stream stm = rsp.GetResponseStream();
//ファイルに出力
StreamWriter writer = new StreamWriter(filePath, false, System.Text.Encoding.GetEncoding("Shift_JIS"));
stm.CopyTo(writer, (int)stm.Length);
stm.Close();

978 :デフォルトの名無しさん:2011/03/20(日) 17:38:05.84
おまわりさんに頼んでこの馬鹿逮捕してもらうか。

979 :デフォルトの名無しさん:2011/03/20(日) 17:39:12.63
>>977
お前どこまでアホなん。>>976

980 :デフォルトの名無しさん:2011/03/20(日) 17:42:31.62
>>977
その使い方だとReaderで読み取ってWriterの手順を踏まないとエンコーディングぶっ壊れるので
直接書き込むのは止めた方がいいと思う

981 :デフォルトの名無しさん:2011/03/20(日) 17:45:40.59
できたぞ

Stream stm = rsp.GetResponseStream();
FileStream source = File.Open(@"D:\data.txt", FileMode.OpenOrCreate);
stm.CopyTo(source);

StreamWriterは糞、FileStreamは神

982 :デフォルトの名無しさん:2011/03/20(日) 17:46:27.43
お前の頭に糞が詰まってるんだよ

983 :デフォルトの名無しさん:2011/03/20(日) 17:48:08.59
FileStream source;じゃなくてdestじゃねえのかと思ったけどまあどうでもいいか。

984 :デフォルトの名無しさん:2011/03/20(日) 17:48:15.97
障害者はネットに繋ぐな

985 :デフォルトの名無しさん:2011/03/20(日) 17:50:22.60
で、お前らは障害者煽って楽しんでるんだ?
気の毒な人たちだね
そうやって自分たちの首絞めているんだね?
若いプログラマが育たなければ安泰とでも思ってるのかな?
そりゃ海外に負けるわけだ

986 :デフォルトの名無しさん:2011/03/20(日) 17:50:27.21
みずほの中身とかこんなもんだからな

987 :デフォルトの名無しさん:2011/03/20(日) 17:51:53.64
新たな問題が発生したぞ

ファイル出力後TextBoxを更新しようとすると
"追加情報: このストリームはシーク操作をサポートしません。"
なんでシークできないんじゃ

stm.Seek(0, SeekOrigin.Begin);
StreamReader reader = new StreamReader(stm, System.Text.Encoding.GetEncoding("Shift_JIS"));
this.richTextBox1.Text = reader.ReadToEnd();


988 :デフォルトの名無しさん:2011/03/20(日) 17:51:57.75
次スレ立てるからちょっと中断しろゴミども

989 :デフォルトの名無しさん:2011/03/20(日) 17:53:25.52
C#のアンチか?
C#関連のスレがこの障害者に荒らされまくってる

990 :デフォルトの名無しさん:2011/03/20(日) 17:53:47.64
>>987
糞クラスなのでサポートされていません
http://msdn.microsoft.com/ja-jp/library/system.net.sockets.networkstream.position.aspx

991 :デフォルトの名無しさん:2011/03/20(日) 17:55:06.03
日本人は何でこんなつまらないことしているのかな
リアルじゃびくびくしてるくせに
ネットではキチガイになる

992 :デフォルトの名無しさん:2011/03/20(日) 17:55:33.17
>>990
みんなはどう対策してる?
泣き寝入りかこれ

993 :デフォルトの名無しさん:2011/03/20(日) 17:56:26.88
C#, C♯, C#相談室 Part65
http://hibari.2ch.net/test/read.cgi/tech/1300611299/

994 :デフォルトの名無しさん:2011/03/20(日) 17:58:33.19
>>992
みんなは天才なので1パスで済ます方法を考えるかMemoryStreamなどにコピーしてしまう

995 :デフォルトの名無しさん:2011/03/20(日) 18:03:59.25
完璧だ、満足


//メモリコピー
MemoryStream ms = new MemoryStream();
stm.CopyTo(ms);

//ファイルに出力
FileStream fs = File.Open(filePath, FileMode.Create);
ms.Seek(0, SeekOrigin.Begin);
ms.CopyTo(fs);
fs.Close();

//ボックス更新
ms.Seek(0, SeekOrigin.Begin);
StreamReader reader = new StreamReader(ms, System.Text.Encoding.GetEncoding("Shift_JIS"));
this.richTextBox1.Text = reader.ReadToEnd();

996 :デフォルトの名無しさん:2011/03/20(日) 18:06:36.91
テキストボックスに書き込んでからそれをファイルに出力すればMemoryStreamなんか要らんけどね。この場合。まあいいか。

997 :デフォルトの名無しさん:2011/03/20(日) 18:10:36.96
もうどうでもいいから

998 :デフォルトの名無しさん:2011/03/20(日) 18:17:21.85
できたぞー、神コードに近付いている

//ボックス更新
StreamReader reader = new StreamReader(stm, System.Text.Encoding.GetEncoding("Shift_JIS"));
this.richTextBox1.Text = reader.ReadToEnd();

//ファイルに出力
FileStream fs = File.Open(filePath, FileMode.Create);
fs.Write(Encoding.Default.GetBytes(this.richTextBox1.Text), 0, this.richTextBox1.Text.Length);


999 :デフォルトの名無しさん:2011/03/20(日) 18:20:28.39
Encoding.DefaultってUnicodeだぞ

1000 :デフォルトの名無しさん:2011/03/20(日) 18:23:15.69
Rubyなら一行でできる

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

231 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)