ふらっとC#,C♯,C#(初心者用) Part31
at TECH
1:デフォルトの名無しさん
08/09/29 12:39:47
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
前スレ
ふらっとC#,C♯,C#(初心者用) Part30
スレリンク(tech板)
2:デフォルトの名無しさん
08/09/29 12:40:21
C#, C♯, C#相談室 Part48
スレリンク(tech板)
WPF(XAML,XBAP,.NET3.5)GUIプログラミング
スレリンク(tech板)
Live2
スレリンク(tech板)
初心者のためのプログラミング言語ガイド Part11
スレリンク(tech板)
3:デフォルトの名無しさん
08/09/29 12:40:49
参考サイト。まずはここで検索してから。
URLリンク(www.google.co.jp)
URLリンク(homepage3.nifty.com)
URLリンク(www.atmarkit.co.jp)
URLリンク(dobon.net)
URLリンク(jeanne.wankuma.com)
URLリンク(www.labasp.net)
4:デフォルトの名無しさん
08/09/29 13:20:37
(前スレ続き)
ってゲームのセーブデータみたいな移動・コピー不可属性のことか?
あれは自分で好きにプログラム組めないからできる話。
5:デフォルトの名無しさん
08/09/29 13:24:49
スレタイの「ふらっと」ってどういう意味なんでしょう(?_?)
6:デフォルトの名無しさん
08/09/29 13:30:13
>>998
そこまで規制する必要ってのも無いとは思うけどなぁ。
機密文章の持ち出しを禁止するため?
簡単に破られても良いなら、ファイルパスがキーになってファイルの暗号化を解くとかその程度で良いんじゃないかな?
それにしても、NTFSにダビング10とかコピーワンスとかあったらいやだなぁ
保護されたファイルを開くと OSがそのプログラムを監視して そのファイルに類似したデータを作成させないようにしたりして
すごく息苦しくていやになるなぁ。
7:デフォルトの名無しさん
08/09/29 13:31:59
あ
8:前スレ993
08/09/29 13:40:28
>>4>>6
そうです、フォルダ自身やファイル自身に属性があれば制限が可能になる
のだとは思うのですが、少なくともWindows系ではそういう制限はやはり
存在しない、ということですよね?
あればそれをそのフォルダやファイルの作成者が設定可能になっていれば
できると思うのですが、今後そういうものは追加される可能性はないでしょうか?
9:デフォルトの名無しさん
08/09/29 13:48:44
いやだから、読めることができるデータがあって、どこかに書き込みできる権限があれば、
コピー不可だろうがいくつでもコピーできちゃうでしょ、ここはプログラム板だよ?
ファイラーが提供されたものしかない世界じゃないと無理。
10:デフォルトの名無しさん
08/09/29 13:52:36
> あればそれをそのフォルダやファイルの作成者が設定可能になっていれば
> できると思うのですが、今後そういうものは追加される可能性はないでしょうか?
誰かエスパーのひと解読頼む
11:デフォルトの名無しさん
08/09/29 13:58:54
>>9
>どこかに書き込みできる権限があれば、コピー不可だろうが
>いくつでもコピーできちゃうでしょ
だから、そのデータ(=フォルダ、ファイル)に色がついていて、
色がナンであるかで、書き込みを制限する属性があれば、という
ことですよ。
>>10
その属性を、それらデータ(=フォルダ、ファイル)の作成者が、
OSのサービス機能(プロパティ->セキュリティタブ、など)を使って
設定すればそれが有効になる、というような仕組みということです。
12:デフォルトの名無しさん
08/09/29 14:00:56
>>11
その属性を律儀に守らないと無理だろ。
プログラム書いたことあるのか?
13:デフォルトの名無しさん
08/09/29 14:02:33
>>11 続き
だから、例えば、「複製作成」の許可と言った感じで、「削除」の許可
の次あたりに追加してあれば、それをチェックすることで、そのフォルダや
ファイルに色がつくわけで、
そのデータを「書き込み」する時点で、それを操作を制限する、という
仕組みということです。これが可能になれば、複製してほしくないフォルダや
ファイルというものを作ることが可能になるわけです。
14:デフォルトの名無しさん
08/09/29 14:04:20
>>12
まあ、ですから、「書き込み」という操作にも影響が及ぶような
仕組みでないといけないわけではありますですが・・・。
15:デフォルトの名無しさん
08/09/29 14:04:56
>>10
>>8 ooOO(ファッキュー)
URLリンク(www.nicovideo.jp)
16:デフォルトの名無しさん
08/09/29 14:05:58
いや、だからさ。
Explorerでのコピー操作ならそれでいいかもしれないよ?
でもさ、プログラム上、ファイルデータは単なるバイト配列として扱われるわけ。
で、単なるバイト配列を適当に作ったファイルに書き込むのを制限しようがないよね?
17:デフォルトの名無しさん
08/09/29 14:13:38
>>16
確かに、どこまでのレベルで制限するのか、という問題はありますね。
ただ、ファイルシステム上の操作と言われる操作機能では制限される、
ということにしておけば、いわゆる 「ファイラ・ソフト」 レベルでは簡単
にはコピーされないで済む、という感じにではできないでしょうか。
ファイラを、そうやって原初レベルのI/Oの操作から作成されてしまえば
確かにできてはしまうのでしょうが・・・。
18:デフォルトの名無しさん
08/09/29 14:17:29
その属性のファイルを読み込んだプログラムはファイルの作成
や書き込みが失敗するように
またほかのプログラムとの通信までできないようにOS側で徹底
的に管理するのか
そこまでやったとしても抜け道は存在するような気がするが
19:デフォルトの名無しさん
08/09/29 14:18:08
>>17 続き
少なくとも、Win32APIや.NETFramework上のファイルシステム関係のメソッド
からは制限できる、といった感じで。それをやっても、制限としては価値は
ないでしょうか。
20:デフォルトの名無しさん
08/09/29 14:22:19
>>18
フォルダやファイルのデータの中身そのもの仕掛けを作り、
それを所定のAPIやメソッドのコピー操作で書き込むときに
引っ掛ける、という感じまででいいかとは思っています。
21:デフォルトの名無しさん
08/09/29 14:28:25
一切ないね
バックアップソフト作る会社が迷惑蒙るだけだろ
22:デフォルトの名無しさん
08/09/29 14:37:06
なんにせよC#でやるべきじゃないのは確か
23:デフォルトの名無しさん
08/09/29 14:50:53
>>21-22
わかりました。アドバイスくださり、
ありがとうございました。
24:デフォルトの名無しさん
08/09/29 15:15:28
新しいFSを開発するスレはここですか?
25:デフォルトの名無しさん
08/09/29 15:16:59
いや、つまんないから。
26:デフォルトの名無しさん
08/09/29 15:29:33
>>993
拡張子を.scrにしたらコピーできなくなるよ
27:デフォルトの名無しさん
08/09/29 18:14:40
web上からデータを取得するために以下の命令文を記述しました
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
さらに、webのURLが間違えていたり、たまたまサーバーがダウンしているときに
備え、try〜catchの例外処理を施そう試み
try
{
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
}
catch(Exception e)
{
・・・・・
}
Stream st = res.GetResponseStream();
StreamReader sr = new StreamReader(st, enc);
と記述し直しました。
ところがこの状態でコンパイルを試みると、Stream st = res.GetResponseStream();で
「エラー 1 名前 'res' は現在のコンテキスト内に存在しません。」
というエラーが帰ってきました。try〜catchの例外処理に何か間違いでもあったのでしょうか?
28:デフォルトの名無しさん
08/09/29 18:21:20
変数のスコープを考えろ。
それから、直接は関係ないがcatch(Exception)はやめたほうがいい。
29:デフォルトの名無しさん
08/09/29 18:21:28
そりゃスコープから外れたから。
HttpWebResponse res;
ここだけ外に出してごらん。
30:27
08/09/29 18:28:53
try文の中身を
HttpWebResponse res;
try
{
res = (HttpWebResponse)req.GetResponse();
}
と変更してみましたが、今度は同じく Stream st = res.GetResponseStream();の部分で
「エラー 1 未割り当てのローカル変数 'res' が使用されました。」
という違うエラーが帰ってくるようになりましたorz・・・
その後ものは試しとtry文の前の命令を
HttpWebResponse res = null;
と書き直してみたところエラーも発生することなくコンパイルが通りました。
これでよかったのでしょうか?
31:27
08/09/29 18:29:37
>>28
> それから、直接は関係ないがcatch(Exception)はやめたほうがいい。
そうするよう参考書に書かれていたんですが(´・ω・`)・・・
32:デフォルトの名無しさん
08/09/29 18:36:38
初心者向けの本なんだろうからしょうがない
本当はMSDNに書いてある形でキャッチするようにしないと
33:デフォルトの名無しさん
08/09/29 18:40:03
tryで例外出してcatch後にもresを使ってるだろ。
それで未初期化のresを使う可能性があるという警告だよ。
tryブロックに入れるか、catchしたらres使う行に行かないようにしなくちゃ。
34:27
08/09/29 19:04:09
>>32
> 初心者向けの本なんだろうからしょうがない
> 本当はMSDNに書いてある形でキャッチするようにしないと
(WebException e)で受け取り、e.Messageあたりでエラーを表示するようにすればいいでしょうか?
>>33
なるほどresは全てtry文の中に収めたほうが堅牢性が増しましたか。
35:デフォルトの名無しさん
08/09/29 19:17:35
引数に渡されたStreamのデータのフォーマットが正しくないときにはどの例外を投げたらいい?
自作?
36:デフォルトの名無しさん
08/09/29 19:23:25
自作しても良いがArgumentExceptionでいいんじゃね
37:27
08/09/29 19:24:30
>>35
自作です。
よく考えたらStreamで受け取ったデータを見て、フォーマットが正しいか否かで
正しくデータを受信できたかどうか判定するのがいいかもしれません。
GetResponse();
の例外ってあまり使う機会は無いかも知れませんね。
38:デフォルトの名無しさん
08/09/29 19:30:32
> GetResponse();
> の例外ってあまり使う機会は無いかも知れませんね。
や、普通は503返されたりとかしたときの対応が必要だと思うが
39:デフォルトの名無しさん
08/09/29 20:17:36
問題は例外キャッチしたあとどうしようとしてるかだ
40:デフォルトの名無しさん
08/09/29 21:08:34
質問です。
生徒、Aさん Bさん Cさん.... がいます。
それぞれの人に、国語や数学のテストの成績があったとして、
(名前,科目,点数)
というようなデータを、それぞれの人がもつ変数に入れていくプログラムを作りたいと考えています。
ここで、(名前,科目,点数)のデータはイベントでランダムに送られてきます。
Aさん、Bさん、... は、生徒クラスを作成し、1人1インスタンスでnewしたとして、
問題1)Aさん、Bさん、... 別のインスタンスを作成する方法がわからない(それぞれにユニークなインスタンス名を与える方法?)
問題2)問題1が解決したとして、ランダムに送られてきたデータを、それぞれのクラスに振り分ける方法がわからない。
というよりも、なんかもっとスマートな解決策があると思うのですが、、、
41:デフォルトの名無しさん
08/09/29 21:10:43
なんかスマートじゃない方法なら、コードが書けるような口ぶりだな。
42:デフォルトの名無しさん
08/09/29 21:11:36
普通は生徒クラスに名前プロパティ用意するんじゃね?
つかクラスに振り分けるって何よ
43:デフォルトの名無しさん
08/09/29 21:20:16
>>40
「インスタンス名」とは変数名のことだと思うが、そんなものはユニークである必要どころか
名前をつける必要すらない。(データベースのレコードに名前なんて必要ないように)
単純化していえばデータ構造は「生徒クラス」のリストでよく、
要は名前なら名前からそれに一致する「生徒クラス」のインスタンスを
検索できる機能を考えればそれで済む。
それができれば問題2も自動的に解決するでしょ。
44:デフォルトの名無しさん
08/09/29 21:20:40
>>40
class クラス:List<生徒> // 生徒Collectionでもおk
{ String 名前; int Get平均点(科目名 科目);}みたいなクラスにAddしていけばいいんじゃない?
45:デフォルトの名無しさん
08/09/29 21:20:51
Dictionary<string, Student> dic = new Dictionary<string, Student>();
Data[] data = GetData();
foreach(Data d in data)
{
if(dic.ContainsKey(d.Name) == false)
{
dic.Add(d.Name, new Student(d.Name, d.Subject, d.Point));
}
else
{
dic[d.Name].AddResult(d.Subject, d.Point);
}
}
こんなんかね
46:デフォルトの名無しさん
08/09/29 21:29:46
テキストエディタ作ってみました
TeraPad風ですが、プラグインの追加機能などあります
URLリンク(www.dotup.org)
47:デフォルトの名無しさん
08/09/29 21:32:37
素早い返信ありがとうございます。
>>41さん
すいませんでした。
>>42さん
プロパティに名前を入れておき、送られたデータに対して名前が一致するかしらべるメソッドを用意して、一致すれば科目データを入れるというやり方の場合、
すべてのインスタンスにデータを送る方法がわかりません。そして、そういう処理は効率が悪いと思います。
変な説明で申し訳ないです。
>>43さん
「生徒クラス」のリスト、という意味が分かりません。クラスのリスト?クラスをリストにする?っていう意味が・・・
リストの項目にクラスのアドレスを入れておいて呼び出す?
48:デフォルトの名無しさん
08/09/29 21:44:11
>>45
そのStudentのコンストラクタ引数は不自然とおもふw
49:デフォルトの名無しさん
08/09/29 21:48:42
dic.Add(d.Name, new Student(d.Name, new[] { new SubjectScore(d.Subject, d.Point) });
こんな感じか
50:40
08/09/29 21:51:08
具体的な例文まで示していただいて頭が上がりません。
>>44さん
class クラス:List<生徒>
の意味が分かりません。すいません勉強不足です。
Listを継承してるというのは分かるんですが、<生徒>という部分がどういう意味なのか、、、
>>45さん
Dictionaryの次の< > でくくった部分の意味が44さんと同じくどういう意味を示すのか分かりません。
Data[] data = GetData(); の意味が分かりません。要素数を指定しない場合の配列は後で要素数をしていしないといけないのでは?
51:デフォルトの名無しさん
08/09/29 21:51:59
オウム返しに聞くな
馬鹿丸出しじゃないか
52:デフォルトの名無しさん
08/09/29 21:59:33
ちなみにList<T>を継承するのは非推奨だからね
53:デフォルトの名無しさん
08/09/29 21:59:35
>>51
まあしかし、そういうスレでしょ。
>>47
リストが分からないならとりあえず配列だと思えばいいよ。
「生徒クラス」の(インスタンスの)配列。
その配列の中から、名前なら名前を使って目的の「生徒クラス」のインスタンスを
検索する方法を考えればいい。
他の人が書いているようにList<T>とかDictionary<T>を使った方が簡単なんだけど、
いきなりそれらのクラスを理解しろって言っても無理っぽいからまずは配列で
やってみたら?
54:デフォルトの名無しさん
08/09/29 22:00:47
点プレにこのあたりのリンクも必要なんじゃね?
URLリンク(ufcpp.net)
URLリンク(msdn.microsoft.com)
URLリンク(msdn.microsoft.com)
55:デフォルトの名無しさん
08/09/29 22:01:08
ごめんDictionary<T>ってそんなのないなw
56:デフォルトの名無しさん
08/09/29 22:03:48
>>50
Dictionary
URLリンク(msdn.microsoft.com)
まあこれを読め
配列は
int[] array = GetArray();
...
int[] GetArray()
{
return new int[]{ 1, 3, 5 };
}
こんなことも出来るんだ
57:デフォルトの名無しさん
08/09/29 22:09:58
名前だけをキーにしてdicに入れたら、複数の教科に対応できないじゃん。
いいの?
58:デフォルトの名無しさん
08/09/29 22:14:30
>>57
複数の強化に対応できない、ってのは意味不明だけど、
>>40の話はとりあえず名前のみで検索できれば必要十分に聞こえるけど。
59:40
08/09/29 22:16:46
みなさん本当にありがとうございます。
馬鹿丸出しで申し訳ないですが、みなさんのアドバイスが充分に理解できませんでした。
コメントや参照サイト先をじっくりと読んでみます。
解決の方法は示して頂きましたので、あとは自分で理解してみます。
こんな初心者の為に貴重な時間を裂いていただき本当にありがとうございました。
では
60:デフォルトの名無しさん
08/09/29 22:27:50
>>57
それぞれの生徒が教科と点数のセットのコレクションを持てばいい
61:デフォルトの名無しさん
08/09/29 23:38:39
>>58
Aさんの国語の成績、数学の成績ってデータが入ってきたら、「A」だけのキーでdicに
入れてたら、片方の成績しか入らないじゃん。
62:デフォルトの名無しさん
08/09/29 23:42:01
RDB意識すると、こんな感じかね
* 1 1 *
Student ------ ExamResult ------ Exam
生徒 試験結果 試験
class Student {
public string Name;
// その他、付加情報 (e.g. 学籍番号, etc.)
public List<ExamResult> ExamResults;
}
class Exam {
public string Name;
// その他、付加情報 (e.g. 実施日時, etc.)
public List<ExamResult> Results;
}
class ExamResult {
public Exam Subject;
public Student Student;
public int Score;
}
List<Student> students;
var stu1 = students.Single(s => s.Name == "鈴木"); // 生徒の検索
stu1.ExamResults.Single(r => r.Subject.Name == "国語" && r.Subject.Date == new DateTime(2008, 7, 10)).Score; // 成績の参照
stu1.ExamResults.Add(new ExamResult { Subject = exam1, Score = 80 }); // 成績情報の追加
63:デフォルトの名無しさん
08/09/29 23:45:32
>>49
は配列を入れてるZE
64:デフォルトの名無しさん
08/09/29 23:58:48
>>61
いや意味わからんよ。
だからDictionary使うのであれば、Valueは「生徒(の成績)クラス」のインスタンスなんだよ?
65:デフォルトの名無しさん
08/09/30 10:46:45
staticなクラスとかって、どういう時に使うものなんでしょうか?
無理して使う位なら普通のクラスにしてインスタンス生成した方が
いいんでしょうか?
インスタンス生成しなくて良いという事位しか分かりません…。
66:デフォルトの名無しさん
08/09/30 10:57:37
大雑把に言うと状態を持たない(フィールドがない)ことを保証できるクラスならstatic classにできるな
Mathとかね
まあ慣れん間はわざわざ作ることもないか
67:デフォルトの名無しさん
08/09/30 11:15:06
なるほど。「フィールドがない」というパターンで考えると
分かり易いですね。参考になりました。有り難う御座いました。
68:デフォルトの名無しさん
08/09/30 13:19:51
フィールド持っててもOO的に複数のクラスと関連があるけど
決してそのクラスがほかのクラスの参照を持つわけではなかったりした時
staticクラスにする方がいいの?
69:デフォルトの名無しさん
08/09/30 13:31:25
フィールドが全部static readonlyまたはconstでない限りはやめたほうがいい
70:69
08/09/30 13:38:53
static readonlyっていうのはおかしいな
同じメソッドを同じ引数で呼び出したらいつも同じ結果が得られるならstaticでおk
71:デフォルトの名無しさん
08/09/30 16:16:17
web上で指定した名前のhtmlファイルやtextファイルが存在するかどうかをチェックするには
どういうプログラムを組めばいいでしょうか?
req = (HttpWebRequest)WebRequest.Create("URLリンク(hoge.com)");
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
if ("URLリンク(hoge.com)".Equals(res.ResponseUri))
{
Console.Writeline("指定されたtxtファイルはありましたよ( ´∀`)b");
}
のようなプログラムを組めばよろしいでしょうか?
それとももっと適切なプログラムがありますか?
72:デフォルトの名無しさん
08/09/30 16:22:44
何をもって存在したのかという定義は?
res.StatusCode が200ならというだけじゃダメなのかな。
73:デフォルトの名無しさん
08/09/30 16:23:21
200つーか、 HttpStatusCode.OKか
74:デフォルトの名無しさん
08/09/30 16:29:22
リダイレクト考えると大変かもね
FileNotFoundのときにリダイレクトで200 OKな404.html返してきたり
75:デフォルトの名無しさん
08/09/30 16:42:49
>>71
それだと HTTP GET してしまうので
req.Method = "HEAD"; するとか
76:71
08/09/30 16:54:42
>>72-74
そうなんですよ。リダイレクトするサーバーだと指定したファイルが存在しない
違うページに飛ばされた上で200:OKが返されたりするんで判定に使うには
今一歩信頼性が無いんです。
77:デフォルトの名無しさん
08/09/30 17:02:39
いやだから定義は?
URL完全一致なの?
別の場所にリダイレクトするけど同じファイル名だったりするのはどうなの?
78:デフォルトの名無しさん
08/09/30 17:03:28
とは言えどうしようもないんじゃないかなHTTPの仕様上
リダイレクトされたら存在しないとするってんなら多少は簡単になるが
存在しなくても200 OKを返すって挙動も可能なんだし(負荷が大きくなるから普通はしないだろうが)
79:71
08/09/30 17:08:26
>>77
はい、指定した場所にURLが一致するファイルが存在しなければ
そのURLは無効というふうに判断したいです。
リダイレクトされた場合は存在しないと判断したいです。
80:デフォルトの名無しさん
08/09/30 17:14:07
あと、どっちかというと
Uri uri = new Uri("URLリンク(hoge.com)");
if (uri.Equals(res.ResponseUri))
だろうなあ。
81:デフォルトの名無しさん
08/09/30 18:15:00
HttpWebRequestのメンバにリダイレクトを処理するかどうかのプロパティあったろ。
それ無効にしといて、200帰るかどうかみりゃいいんじゃないのか。
82:デフォルトの名無しさん
08/09/30 18:18:29
>リダイレクトを処理するかどうかのプロパティ
そんなのあったのか、知らなかった
83:デフォルトの名無しさん
08/09/30 19:00:04
ListViewやStringなど標準ライブラリのソースを見る方法はないですか?
84:デフォルトの名無しさん
08/09/30 19:07:21
ちょっとは検索しろ
85:デフォルトの名無しさん
08/09/30 19:08:13
MSのを見るのは会社の規模&審査とすさまじい金額がかかったはずなので、MONOのソースでも見たら?
86:デフォルトの名無しさん
08/09/30 19:11:02
URLリンク(www.codeplex.com)
87:デフォルトの名無しさん
08/09/30 19:12:52
>>85
今は閲覧目的に限り無償一般公開されてるんだよ
88:デフォルトの名無しさん
08/09/30 19:52:54
へー
89:デフォルトの名無しさん
08/09/30 20:07:15
独学でC#はじめたんですがsetとgetの使い方がよくわかりません。
よろしければ御教授ください、お願いします。
90:デフォルトの名無しさん
08/09/30 20:09:22
それを言うなら御教示だ
91:89
08/09/30 20:30:45
>>90
すみません間違えました
92:デフォルトの名無しさん
08/09/30 20:31:23
>>89
プロパティのことか?
強いて言うなら、変数っぽいメソッドを作るための仕様という感じかな?
C#の入門サイトで理解できなかったら、いっそうのこと他の言語のサイトも見てみると理解できることもあるかもしれない。
たとえばTextBoxでTextプロパティがあるけど、これをプロパティを使わないでやるとしたら
textbox1.SetText("hogera");
String hoge = textbox1.GetText();と書かなければならない。
もちろん
class TextBox
{
public String Text;
}
として公開してしまえばtextbox1.Text = "hogera";で書き込み読み込みができるが、
SetText(String value)
{ // ReadOnlyの時は変更禁止 (こういう処理を副作用と言う)
if (!this.ReadOnly) this.str = value;
}
というようなことはできなくなる。これをできるようにするためのものがプロパティ
public String str; // Textの実体。こんなダサイ名前をつけるのはよろしくないけど
public String Text{
get { return this.str;}
set { if (!this.ReadOnly) this.str = value;}
}
これでtextbox1.Text = "hoge"とかができるようになる。
また、副作用のないプロパティは(今後、副作用を設定するかもしれないので必要)
public String Text { get; set;}と書くことができる
93:89
08/09/30 20:42:27
>>92
すごく丁寧な説明ありがとうございます。なんとか理解できました。
94:71
08/09/30 20:43:19
>>81
どうもです。
req.AllowAutoRedirect = false;
でオートリダイレクトを拒否することができるようになりました( ´∀`)ノシ
95:デフォルトの名無しさん
08/09/30 20:45:20
>>92
それだったらメソッドで書けばいいだろ
なんでプロパティ使うんだよ
96:デフォルトの名無しさん
08/09/30 20:46:52
>>95
だったら、とはどういう意味?
97:デフォルトの名無しさん
08/09/30 20:47:17
プロパティにする利点は使う側にある
98:デフォルトの名無しさん
08/09/30 20:54:38
String と string ってどうちがうの?
99:デフォルトの名無しさん
08/09/30 20:55:50
まったく同じであることが言語仕様に明記されています
100:デフォルトの名無しさん
08/09/30 21:00:25
ごめんなさい
101:デフォルトの名無しさん
08/09/30 21:22:37
質問です。
クリップボードからテキストボックスに文字を貼りつけています。
単に貼りつけると、テキストボックスで文字入力できなくなるので、
・クリップボードの文字をメモリーする。
・クリップボードの文字がメモリーと異なるときは、貼りつける。
・クリップボードの文字がメモリーとおなじときは、なにもしない。
という処理を考えました。
clipboardwatchtimer.Interval = 500;
clipboardwatchtimer.Enabled = true;
private void clipboardwatchtimer_Tick(object sender, EventArgs e){
if (Clipboard.ContainsText()) {
string clipboardTextBefore = (Clipboard.GetText());
System.Threading.Thread.Sleep(200);
string clipboardTextAfter = (Clipboard.GetText());
if (clipboardTextAfter != clipboardTextBefore)
{textBox1.Text = (Clipboard.GetText());}
}}
これで、4回は動くのですが、そのあとは取得できなくなってしまいます。
アドバイスお願いします。
102:デフォルトの名無しさん
08/09/30 21:27:03
すみませんが、何をおっしゃっているのか理解できません
103:デフォルトの名無しさん
08/09/30 21:38:31
string clipboardTextBefore = "";
private void clipboardwatchtimer_Tick(object sender, EventArgs e){
if (Clipboard.ContainsText()) {
string clipboardTextAfter = (Clipboard.GetText());
if (clipboardTextAfter != clipboardTextBefore)
{textBox1.Text = clipboardTextAfter;
clipboardTextBefore = clipboardTextAfter}
}}
こうじゃないかな
タイマーの中でThread.Sleepとかやらん方がいいと思うよ
104:デフォルトの名無しさん
08/09/30 21:44:42
>>101
何のための機構かよくわからないし
500msごとに200msストップするようなアプリケーションは糞過ぎて使い物にならないと思うんだが
>単に貼りつけると、テキストボックスで文字入力できなくなるので、
では聞くけど、今の状況ならまともに文字入力できるのですか?
何でも良いから適当に文字を入力してみてください。
>clipboardwatchtimer.Inter(ry
・500ms ごとに200msほどユーザの操作を無視する
・その200msの間にクリップボードがたまたま変更されていたら
_・textbox1.Textに入力した文字を削除してクリップボードの内容に置換する
何がしたいのかわからない。
ひょっとして
String clipboradTextBefore = "";
private void clipb(ry_Tick(Object Sender,EventArgs e)
{
if (Clipboard.ContainsText())
{
String clipboradTextNow = Clipboard.GetText();
if (clipboradTextNow != clipboradTextBefore)
{
textBox1.SelectedText = clipboradTextNow;
clipboradTextBefore = clipboradTextNow;
}}}} //行が長すぎるってしかられた
105:デフォルトの名無しさん
08/09/30 21:49:30
>>103
なるほど。
ありがとうございました。
106:デフォルトの名無しさん
08/09/30 22:07:46
>>104
ありがとうございました。
SelectedTextだと追記なんですね!
ちなみに、いまの状況でいちおう文字入力は試してうまくいってました。
107:デフォルトの名無しさん
08/09/30 22:13:33
>>101
だからお前は基礎から学べと言ってるだろ
2度と来るな
108:デフォルトの名無しさん
08/09/30 22:30:51
初心者を煽る荒らしはほんと二度と来ないで欲しいんだけど
109:デフォルトの名無しさん
08/09/30 22:42:47
初心者を甘やかす荒らしはほんと二度と来ないで欲しいんだけど
110:デフォルトの名無しさん
08/09/30 22:50:13
下らんレスの応酬はそれこそ荒らし行為そのものだから二人とも止めとけって。
しかし、初心者っていっても程度問題だと俺も思うけどな。
確かに初心者って真面目に学習してても分からないところ出てきたりするから
そういうのを質問するスレ(つまりここ)があっていいと思うんだが、
最初から地道に学習することを放棄してる奴のケツを拭いてやるなんて作業は
普通の人間はお断りだろ。
それ以前に「日本語の文章表現の初心者」まで救ってやる必要なんてさらさらないと思う。
111:デフォルトの名無しさん
08/09/30 22:52:49
お前の意見を取り入れる気はさらさら無いがな。
112:デフォルトの名無しさん
08/09/30 22:53:55
>>1を読めない奴は二度と書き込むなよ
113:デフォルトの名無しさん
08/09/30 22:59:39
>>1にあてはまらない書き込みがあるの?
114:デフォルトの名無しさん
08/10/01 00:04:19
>>1をC#でおながいします。
115:デフォルトの名無しさん
08/10/01 00:08:17
>>1 なんかいちいち読むかよ。
116:デフォルトの名無しさん
08/10/01 00:33:37
>>1乙
117:デフォルトの名無しさん
08/10/01 01:03:52
制限時間付きオセロを作りたいのですが、どの様にすれば良いのでしょうか?
118:デフォルトの名無しさん
08/10/01 01:04:59
オセロのアルゴリズムとGUIを作ればいい
119:デフォルトの名無しさん
08/10/01 01:15:32
俺もオセロ作っているんだけど
@どこに石をおけるかを調べる
置ける場所を保存
どこに置くか選ぶ
置いた場合どの石が裏返るから調べる
相手や自分の置いた石を盤面に反映する
@ヘ
それぞれどのクラスに記述すればいいかわからなくなる
120:デフォルトの名無しさん
08/10/01 01:18:51
>>119
オブジェクト指向な人々から見るといろいろ意見はあるんだろうけど、
あんまり気にせずまとめて作っちゃえばいいんでね?
121:117
08/10/01 01:20:21
自分はほとんど知識がないのに今日の朝7時までに提出しろと言われたもので・・・
死亡フラグですよね?
122:デフォルトの名無しさん
08/10/01 01:21:16
>>119
これ読めば?
コンピュータ麻雀のアルゴリズム―AIインターフェイスと思考ルーチンを作る (I/O BOOKS)
123:デフォルトの名無しさん
08/10/01 01:21:33
>>121
うん。
124:デフォルトの名無しさん
08/10/01 01:21:45
>>121
無理諦めろ
サボってたお前が悪い
125:デフォルトの名無しさん
08/10/01 01:23:13
本すすめるならこっちだろ
リバーシのアルゴリズム C++&Java対応―「探索アルゴリズム」「評価関数」の設計と実装 (I・O BOOKS) (単行本)
126:デフォルトの名無しさん
08/10/01 01:26:15
どこに置くかを決定するアルゴリズムは面倒そうだね。
簡単なのは、四隅、端、その他、って感じで順位づけをしておいて、
置けるときに置く、って感じかな。
127:デフォルトの名無しさん
08/10/01 01:28:39
>>121
俺昔作った奴あるけど人類よりはるかに強いから
お前が作ったことにして提出したら不正がばれるだろ
128:デフォルトの名無しさん
08/10/01 01:29:05
オセロは一枚返しの定跡があるから、まぁそのあたりで評価関数作れば簡単そうだが
終盤はきちんと全幅探索して読み切る
129:規制解除ヒャッホーウ
08/10/01 01:29:11
まったくわからんが俺も考えてみよう
オセロ板クラス
どこに石が置いてあるか
石を置いて石が置ける場所じゃなかったらエラーを返すとかやるクラス
入出力はインデクサとか使って置いたり置いてあるのを調べたりとかか?
相手CPUクラス
石の置いてある箇所からどこに置くのか決めて適切な位置に置く
これが一番ムズそう
審判クラス
順番になったらイベントで通知してくれたり制限時間はかったり
先に謝っておこうなんていうかごめんなさい
130:デフォルトの名無しさん
08/10/01 01:30:27
>>129
いいんだよ
131:デフォルトの名無しさん
08/10/01 01:31:21
>>129
グリーンだよ
132:デフォルトの名無しさん
08/10/01 01:35:34
夏休み最後の日まで宿題とっておいていいのは小学生までだろ
133:デフォルトの名無しさん
08/10/01 01:38:46
課題だったら、多少くそ重くても総当たりやっちゃえばいいんじゃなかろうか。
134:デフォルトの名無しさん
08/10/01 01:41:14
総当り(笑)
アホだろ
135:デフォルトの名無しさん
08/10/01 01:43:21
もうランダムで置く場所決めればいいじゃん
136:119
08/10/01 01:44:23
>>129
大体そんな感じだろうと思って作ってみたら
CPUクラスで盤面情報を取得したり、どこに置くか?置けるのか?
などが、オセロクラスと機能が微妙にかぶるんですよね
それでこんがらがっちょになるわけで。
よくあるオブジェクト指向の考え方の例で
人間クラス>学生クラス。名簿クラス。なんかがあるけど
こういう考えで作ろうと思うと、非常に難しい
どこに置けるかなどは、オセロ板が考えるんじゃなくて人間が考えるわけで
盤面の情報も頭の中にあるわけで、じゃあ、盤面は石の状態だけ保存させておいたほうがいいのか
とか考えて、でも、CPUクラスごとにルールクラスを保持させるのも変な感じだし
とまあ、こんな感じで途方にくれてます
137:デフォルトの名無しさん
08/10/01 01:52:17
>>136
とりあえずCPUは後回しにして
人間二人が交互に打てるところまで作れば?
138:デフォルトの名無しさん
08/10/01 02:02:48
>>130
>>131
どうも
>>136
どこに置けるか?とかは
オセロ盤クラスの置いてpublicにするかもわからんなー
そうすればCPU側やUI側(マウスが置けないマスに入ったら×マークを表示するとか)とかからも使えるような気がする
139:デフォルトの名無しさん
08/10/01 04:02:51
IBMとマイクロソフトが作った昆虫のゲームの名前なんでしたっけ?
dllで昆虫を作ってプログラマーが競い合うものなんだけど
140:デフォルトの名無しさん
08/10/01 04:16:08
上の方見て、何となくClipboardWatcherというクラスを作った
イベントはまだ実装してない(Trace.WriteLineしてるだけ)けど、
コメントほとんどなしの状態で240行程度
141:119
08/10/01 04:17:27
相手と自分を同じクラスで処理してたから混乱していたのかも
Playerという基底クラスを作って
先手、後手の派生クラスを作って処理してみます
142:デフォルトの名無しさん
08/10/01 07:26:15
同じ自作コントロールを複数生成したいが、
他のフォームで使う予定はまったく無い、
といった場合、ユーザーコントロールを作るより、
フォームのファイル内に自作コントロール用のクラスを作ったほうがいいですかね?
143:デフォルトの名無しさん
08/10/01 07:32:46
>>141
質問ついでに答えてみる。
OOPは、登場人物(モノも含む)を全て洗い出すことから始めてみるといい。
144:デフォルトの名無しさん
08/10/01 07:35:24
>>139
いじったことないけど Terrarium?
145:デフォルトの名無しさん
08/10/01 09:39:46
>よくあるオブジェクト指向の考え方の例で
>人間クラス>学生クラス。名簿クラス。なんかがあるけど
ねーよ。
いや例はよくあるけど。
146:デフォルトの名無しさん
08/10/01 10:33:21
hoge.comって実在するんだなw
147:デフォルトの名無しさん
08/10/01 13:02:16
>>140
それってコントロール派生?
私的にNativewindow使用が良いなー
148:デフォルトの名無しさん
08/10/01 16:33:12
try{
res = (System.Net.HttpWebResponse)req.GetResponse();
}
catch(WebException e)
{
}
でプロトコルエラー416:RequestedRangeNotSatisfiableが返されました。
この例外をcatchで受け、416が返ってきたときに特定の処理をさせたいと思っています。
catchの中身はどう記述すればよろしいでしょうか?
catch(WebException e)
{
if (e.Status == HttpStatusCode.RequestedRangeNotSatisfiable)
・・・・・
}
と記述したところ、e.StatusとHttpStatusCode.RequestedRangeNotSatisfiableは
型が違うと言われてコンパイルエラーになってしまいました・・・
149:デフォルトの名無しさん
08/10/01 16:37:39
WebException.Status の解説ぐらい読めよ
150:デフォルトの名無しさん
08/10/01 16:48:45
>>148
またかよ。少しはぐぐって自分で調べろ。
「WebException プロトコルエラー」 とかでぐぐっても
解決のヒントになるページがいくつも見つかるだろ。
151:デフォルトの名無しさん
08/10/01 16:49:01
全然使ったこと無いけどMSDNのサイトをちょっと回ってみた結果、
if (WebException.Status == WebExceptionStatus.ProtocolError)
{
if (((HttpWebResponse)e.Response).StatusCode == HttpStatusCode.RequestedRangeNotSatisfiable)
{
とかやるんでないの?
}
}
聞くより検索して、実際にやってみたほうがはやいぜ。
152:デフォルトの名無しさん
08/10/01 17:56:25
>>147
System.Windows.Forms.Timerあたりのソースを参考に、
ComponentのサブクラスでNativeWindowを使用
一応、lock, PostMessageもしてるから、多分マルチスレッドでも使える
153:デフォルトの名無しさん
08/10/01 18:03:45
>>149-151
ありがとうございますm(_ _)m
((HttpWebResponse)e.Response).StatusCode == HttpStatusCode.RequestedRangeNotSatisfiable
で通りました。Responseプロパティの中にさらにプロパティStatusCodeがある
とは思い至りませんでした(´・ω・`)
154:デフォルトの名無しさん
08/10/01 19:00:41
Dictionary<T>をforeach使わずに
要素の変更される処理を施すことは出来ますか?
155:デフォルトの名無しさん
08/10/01 19:01:19
はじめましてC#超初心者です
解説本を読む前に質問してます
class1.csってところを下記の様にしたんですけど
エラーになります
どうすればいいですか
Winsockで接続するテストです
何をどうしたらいいのかわかりません
よろしくお願いします
動くように書換えお願いします
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace winsock_tes
{
public class Class1
{string url = "URLリンク(www.yahoo.co.jp)";
System.Net.WebClient wc = new System.Net.WebClient();
wc.Encoding = System.Text.Encoding.GetEncoding(51932);
string src = wc.DownloadString(url);
wc.Dispose();
}
}
156:デフォルトの名無しさん
08/10/01 19:04:28
Mainメソッドにつっこめばおk
157:デフォルトの名無しさん
08/10/01 19:06:23
どっから持ってきたコードなんだ。
まずはHelloWorldからやってみないか
158:デフォルトの名無しさん
08/10/01 19:10:57
>>154
意味が分かりません
159:デフォルトの名無しさん
08/10/01 19:54:44
>>155
マルチうざい
160:155
08/10/01 19:57:42
>>158
おまえがうざい
やっぱC#スレってカスばっかだな
Delphiにしとくわ
161:デフォルトの名無しさん
08/10/01 19:59:02
>>155です
マルチじゃないですよ
他すれで聞いたらここを紹介されたので改めてこちらで聞きました
よろしく
>>159
氏ねよ粘着
162:デフォルトの名無しさん
08/10/01 20:00:39
>>160
おいおい
>>155は私ですよ
応援はありがたいけど
やりすぎです^^;
163:デフォルトの名無しさん
08/10/01 20:53:45
>>154
Dictionary<T>なんてものはBCLに存在しません
164:デフォルトの名無しさん
08/10/01 20:58:16
>>154
数字の添え字もNext系の操作も出来ないから無理だろ
165:デフォルトの名無しさん
08/10/01 21:03:14
CやC++ならまだしも、string型が正式にサポートされたC#に
いまだchar型が存在する理由ってなんでしょうか?
CやC++に慣れ親しんだプログラマ用の救済措置ですか?
166:デフォルトの名無しさん
08/10/01 21:03:19
GetEnumeratorでIEnumerator取って自分で操作すればおk
167:デフォルトの名無しさん
08/10/01 21:04:58
>>165
パフォーマンスでしょ
文字列から一文字ずつ取り出すような処理を全部一文字のstringにしたら恐ろしいことになりそう
168:デフォルトの名無しさん
08/10/01 21:07:33
いやそれ以前に char は文字で string は文字列なんで違うものだろというか
169:デフォルトの名無しさん
08/10/01 21:21:31
>>167
C#ではcharもstringもみなクラス扱いされていますがそんなにパフォーマンスに
違いが出るものですか?
>>168
stringでも1文字だけ格納すれば実質的にcharと同じになると思うんですが。
170:デフォルトの名無しさん
08/10/01 21:23:38
そもそも値型と参照型では?
171:デフォルトの名無しさん
08/10/01 21:25:01
>>169
Charは整数型ですが
172:デフォルトの名無しさん
08/10/01 21:25:11
ならintも長さ1のint[]があれば必要ないねそうだね。
173:デフォルトの名無しさん
08/10/01 21:25:40
おいおい大丈夫か
174:デフォルトの名無しさん
08/10/01 21:25:58
>>171
なにw
ユーザー定義型ではない値型で実質プリミティブ型になる。
175:デフォルトの名無しさん
08/10/01 21:26:15
>>169
charはクラスじゃねーよカス
処理速度も倍違う
>stringでも1文字だけ格納すれば実質的にcharと同じになると思うんですが。
ならねーよバカ
176:デフォルトの名無しさん
08/10/01 21:26:17
スクリプト言語だと文字列と文字を同一視するのもあるみたいだよ
177:デフォルトの名無しさん
08/10/01 21:28:02
格納してるブツがそもそも違うだろ
stringは参照位置だけどcharはユニコードだろ?
178:デフォルトの名無しさん
08/10/01 21:32:33
デュアルコアの時代に倍違うとかどうでもいいだろ
179:デフォルトの名無しさん
08/10/01 21:33:29
string だけあれば char がいらないって発想なら、
int[] だけあれば int もいらないな。
180:デフォルトの名無しさん
08/10/01 21:34:53
GCの負担にもなるから倍どころじゃないはず
stringって内部的にはやっぱりcharの配列なんだよ
fixed (char* p = str)でポインタ取れたりするw
181:デフォルトの名無しさん
08/10/01 21:36:59
ここまでstringbuilderなし
182:デフォルトの名無しさん
08/10/01 21:38:02
札束があれば札は要らないないってレベル
183:165
08/10/01 21:40:11
釣りでした(^^)v
184:デフォルトの名無しさん
08/10/01 21:40:49
>>182
それは何か変だ。
札は束にしても額が変わるだけだけど。
char と string は点と線くらい違う。次元がそもそも違うというか。
185:デフォルトの名無しさん
08/10/01 21:43:00
>>165
救済措置っつーか、C/C++やってて、文字型のない言語に移っても、べつになんにも困らんだろ。
186:デフォルトの名無しさん
08/10/01 21:43:23
string=文字列
char=文字
これはなんでこうなるの?
187:デフォルトの名無しさん
08/10/01 21:44:03
VBにも文字単体あるだろ
188:デフォルトの名無しさん
08/10/01 21:44:45
C#.NET でWindowsアプリを書くときに、メソッドをフォームのソース
(という言い方が正しいかどうか分かりませんが)に書くことも、
フォームではない別のクラスに書くこともできると思います。
ある画面内で完結する機能はフォームのソースに書くとか
なるべくフォームのソースには書かないようにするとか
方針はいくつか考えられますが、
C#.NET ではどうするのが主流なのでしょうか?
アドバイスよろしくお願いします。
ちなみに、Javaでコンソールアプリを書いたことはありますが
その程度の経験しかありません。
189:デフォルトの名無しさん
08/10/01 21:46:00
フォームをコンソールだと思えばおのずと窓口なはず
190:デフォルトの名無しさん
08/10/01 21:48:01
>>178
私も486DXで十分だと思っていた時がありました
191:デフォルトの名無しさん
08/10/01 21:51:45
>>188
フォームとはイベントドリブンを処理するわけで条件反射みたいなもん
フォームに直接関係しない機能や重複した機能は別途クラスを用意する
192:デフォルトの名無しさん
08/10/01 21:52:55
>>188
愚問だね。
OOPというかクラスを使ったプログラミングが分かればそんな疑問は持たない。
そんなウダウダ疑問を抱くのは一通り理解してからにすべきで、
物事の順序が違うんじゃないのかな?
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5376日前に更新/215 KB
担当:undef