ふらっとC♯, C#(初心者用) Part19 at TECH
[2ch|▼Menu]
1:デフォルトの名無しさん
07/09/04 11:20:46
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

前スレ: ふらっとC♯, C#(初心者用) Part18
スレリンク(tech板)

前前スレ: ふらっとC♯, C#(初心者用) Part17
スレリンク(tech板)

(,,゜Д゜)∩先生助けてくださいです! 
....世の中には貴方の助けを必要としている人がいるぽ....
2 名前: デフォルトの名無しさん [sage] 投稿日: 2007/08/08(水

2:デフォルトの名無しさん
07/09/04 11:56:43
>>1


3:デフォルトの名無しさん
07/09/04 12:01:53
前スレ999

やりたいことは
int[] intData = new int[]{ 5,4,3 ];
これだけで済むと思うよ
Console.WriteLine(intData[0]); //5
Console.WriteLine(intData[1]); //4
Console.WriteLine(intData[2]); //3

for(int i = 0; i < 3; ++i)
{
Console.WriteLine(intData[i]);
}
こんなふうにも出来る

4:デフォルトの名無しさん
07/09/04 12:09:11
もっというと

int[] intData = new int[]{ 5,4,3 };

int[] intData2 = new int[4];

for(int i = 0; i < 3; i++){
intData2[i + 1] = intData[i];
}

こんな感じかね

5:デフォルトの名無しさん
07/09/04 12:09:14
前スレのラストに来た質問、今読んだけど微笑ましいなw
自分のしたいことと、ポインタ/配列の概念がうまく結びついてない感じがする

6:デフォルトの名無しさん
07/09/04 12:10:29
多分動的に変数名を指定できるスクリプトから来たんだと思うなあ

7:996
07/09/04 12:43:08
前スレ996です。
999を書いたのは私と別人なようで…。。。
>>3-4
回答ありがとうございます。
ただ…。やりたいことと微妙にズレがあります。
動的に変数名を指定という言葉が近いのかと思いますが、
for(int i = 0; i < 3 ;i++){
  [intData + i] = i * 5;
}
といった感じに左辺を動的に指定したいのです。

8:デフォルトの名無しさん
07/09/04 12:50:28
> 動的に変数名を指定
変数ってのは入れ物であって、値じゃないのよ?
↓じゃダメなの?

for(int i=0; i<3 ;i++)
  intData[i] = i * 5;

9:デフォルトの名無しさん
07/09/04 12:52:37
よろしくお願いします

ListViewコントロール をdetailで使用しています。

したいことは、選択されたItemが、常にListViewコントロールの真ん中に表示できるようにしたいです。
矢印キーを押して、行をスクロールさせた時に、選択された行の下3,4行くらいも見える(コントロール内に出てくる)ようにするようにしたいということです。


Item数が少なく、Itemを構成する行がListView内に収まる場合は、すべてが見えてるので問題ありません。


10:デフォルトの名無しさん
07/09/04 12:54:07
>>7
>ただ…。やりたいことと微妙にズレがあります。

この手の質問ってC#スレで頻出なんですが
残念(に思われるのは996さんだけかもしれませんが)ながら
C#の仕様だと無理なのですよ。

もうみんなうんざりなので最短ルートとして「C#でどう書くか」が
提示されまくってるのをお察し下さいませ。

11:デフォルトの名無しさん
07/09/04 12:55:10
どうしてもっていうなら Dictinoary<string,int> でも使ってろってこったな

12:デフォルトの名無しさん
07/09/04 13:09:21
変数名がintDataで、その後に数字が続くだけなら、
配列で出来る。
配列はあらかじめ大きさを指定しなきゃならないので、
それがまずいときは

List<int> list = new List<int>();

for(int i = 0; i < 3; ++i){
list.Add(intData[i] * 5);
}
動的に大きさが増える配列であるListを使えば出来る。

後、変数以外の名前も指定したければ、その変数を持ったクラスを新しく作って、
そのクラスの配列やListを使う

13:996
07/09/04 13:24:36
お答えいただいた皆さんありがとうございました。
色々と提示してもらえて助かりました。
どの方法を使うのかが最適か試してみます。

14:デフォルトの名無しさん
07/09/04 13:32:29
*頻出質問*

 ・コントロールを名前の文字列から取得したいんですが
 ・VB6みたいなコントロール配列ってどうやるんですか
 ・変数を名前で指定したいんですが
 ・フォーム間でデータを渡したいんですが
 ・イベントが発生しません。これはバグですね?
 ・参照型と値渡しと値型と参照渡しがよくわかりません><

15:デフォルトの名無しさん
07/09/04 13:52:51
>>10
> もうみんなうんざりなので

これからも頻出質問は出続けると思うのでそういうのをまとめたものを作りませんか。
答えるほうもそこへのリンクさすだけで手間無く済みそうですし。一挙両得
>>14さんも挙げられてるようにこういうものがあればなと思われてる方も
少なからずいるのではないでしょうか。
よろしくお願いします。


16:デフォルトの名無しさん
07/09/04 13:59:47
>>3
996がやりたいこととは全然違うだろ。
とどのつまり前スレ999さんのいってる事の解決が事件をとく鍵だと思う

17:デフォルトの名無しさん
07/09/04 13:59:51
>>9
ListViewItem item = ほにゃらら;
item.EnsureVisible();

18:デフォルトの名無しさん
07/09/04 14:04:12
文字列からなんとしてでも変数を取得したい、
と思ってるやつにはどう答えたらいいんだろう。

それは間違ってるよ、と代替案を提示すべきなのか
リフレクション使え、と突き放すべきなのか

19:デフォルトの名無しさん
07/09/04 14:07:42
C#は静的にコンパイルされてチェックされるのがいいところだからな
動的に変数名を文字列で指定しなきゃならないようなケースは普通ないし
そういう場合にはリフレクションなりDictionaryなり使えという話になるな

20:デフォルトの名無しさん
07/09/04 14:08:05
>リフレクション使え
それはないだろ

21:デフォルトの名無しさん
07/09/04 14:20:53
それはない

22:デフォルトの名無しさん
07/09/04 14:25:49
>>15
そんなのいらん
このスレは質問者がある特化した質問をして、その特化したシチュエーションに対応する回答を
スレ住人がしてくれるから存在価値があるんだろ

つか、大抵はググれば済むんだから…

23:デフォルトの名無しさん
07/09/04 14:30:23
動的にクラスを生成しろという話になるのかな
やりかた知らんけど

24:デフォルトの名無しさん
07/09/04 14:31:04
>>18
もう一段前があって、多分こんな感じなんじゃないかな。

1.ループを使えば綺麗に書けるのに
2.ピコーン 「文字列から変数が取れれば解決じゃん?」
3.やり方わかんね -> 2ch

「ループを使えば綺麗に書けるのに」というときの定石には
言語ごとにかなりクセがある。
C#だとそれは最初からループ対応の変数(配列とかListとか)を使うであったり
アクセス用のメソッドを用意するであったりするわけだ。

一方で緩い言語では変数の名前空間自体が一種のDictionaryになっていて
命名ルールを工夫するだけで複数の変数をループ処理できるものもある。

そこまで緩くないC#としては、
「C#でループを書くときの定石を学べ」か
「.NETの機能を駆使して自分でパターンを作れ」になるんだろうなぁ。

25:デフォルトの名無しさん
07/09/04 14:34:33
>>22
すんませんでした。
”頻出質問”に”うんざり”ということだったので、
あれば便利かなと思って先走ってしまいました。
それではみんなでれっつうんざり!

26:デフォルトの名無しさん
07/09/04 14:58:45
つーか普通配列で十分だしな
なんでそんなことやろうとしてるのかわからん。
あおり楽しかったけどw

27:デフォルトの名無しさん
07/09/04 16:42:09
ぶっちゃけ、なんかニヤッとする面白い質問だた

28:デフォルトの名無しさん
07/09/04 16:48:48
class MyObjectBase {
public IDictionary<string,object> Properties{get;};
public IDictionary<string,Delegate> Methods{get;};
}
もう全部これを継承するようにするとか

29:デフォルトの名無しさん
07/09/04 20:10:16
こんばんは。
早速ですが質問させていただきます。
C#を用いてExcelを扱うアプリを作ってるんですが
既存のシステムにはCOMを使用し、直接Excelを開いてRangeオブジェクトを
ToString()などして値を取得していたんですが、先輩曰くそのやり方は非常に駄目だから
VBS使えといわれました。
Excelのデータはデータベースに入れてるんですが
VBSを用いて同じことしたいんですがどのようにすればいいでしょうか。


30:デフォルトの名無しさん
07/09/04 20:15:39
VC#2005で開発しているのですが
VScrollBarをフォームにくっつけているのですが
上下左右キーを押した際にスクロールバーにフォーカスを
持って行かれてしまいます。これを回避することは可能でしょうか。

フォームでキー処理をしたいのですがフォーカスをVScrollbarに取られてしまい
キーイベントが来ないので困っています。

31:デフォルトの名無しさん
07/09/04 20:43:53
---色々---  上
---Panel---  |
---Form---  下

とか?

32:デフォルトの名無しさん
07/09/04 20:47:31
KeyPreview = Trueで普通にいけるでしょ。

33:30
07/09/04 21:05:55
フォームのIsInputKeyをoverrideすることで解決しました

34:デフォルトの名無しさん
07/09/04 21:40:45
アクセスキーにFunctionキーを割り付けるにはどうしたらいいですか?
お願いします。

35:デフォルトの名無しさん
07/09/04 22:17:31
>>29
確かにc#だと上手くやらないとゴミ残りまくり。
VBSの使い方?
すれ違い

>>34
アクセラレータ キー?

ショートカットキー?

36:デフォルトの名無しさん
07/09/04 22:31:49
[intData + i.ToString()] ってどの言語?

37:デフォルトの名無しさん
07/09/04 22:36:18
何の言語かはわからんがC#コードの一部としてでも有り得る

38:デフォルトの名無しさん
07/09/04 22:38:20
そういうコードってスクリプト言語の宣伝によく使われる感じがするけど
C#でそういうのはほとんど見かけないよな

39:デフォルトの名無しさん
07/09/04 22:41:19
D言語でもつかってろよ

40:デフォルトの名無しさん
07/09/04 23:39:51
スクリプト言語では変数名の後に整数の変数を文字列化したものをくっつけて
配列の変数のように使うことも多い

41:34
07/09/04 23:56:16
>>35
ショートカットキーです。
でもアクセラレータキーも教えてください。
調べたら「便利だな」って思いました

42:デフォルトの名無しさん
07/09/05 01:01:22
DoubleBufferedプロパティを有効にすれば
Paintイベントをバックバッファでやってくれるからちらつかない
なんて聞いたんでTrueにしてみたがFalseのときよりちらつくようになった
漏れ、だまされたんでしょうか?
それとも手法がいけないんでしょうか?

43:デフォルトの名無しさん
07/09/05 04:07:39
片方のバッファにしか描いてないんだろうw

44:デフォルトの名無しさん
07/09/05 04:10:48
つか、OnPaintの外で描いてる?

45:デフォルトの名無しさん
07/09/05 04:15:53
ふと思ったが、PaintEventArgs e の
e.Graphics 使ってる?

46:デフォルトの名無しさん
07/09/05 04:18:34
CreateGraphics()とe.Graphicsじゃ結果が変わるね

47:デフォルトの名無しさん
07/09/05 05:07:42
ッタリメー

48:デフォルトの名無しさん
07/09/05 08:14:39
ダブルバッファの有効範囲をきちんと理解してないからだろう。
コントロールのと描画の範囲は抑えておきましょう。

49:デフォルトの名無しさん
07/09/05 11:28:58
全画面で実行される別アプリ(ゲーム)の補助ツールを作ろうと思うのですが
その別アプリが例外エラーで落ちるときに、エクスプローラのタスクバーが消えたままになってしまうため、
それを常駐させておいた補助プログラムで自動的に検出して、タスクバーの復帰を解決しようと思うのですが、
これらの処理について調べるには、どのようなキーワードで検索すれば良いでしょうか?

稚拙な質問ですがよろしくお願いします。

50:デフォルトの名無しさん
07/09/05 12:32:51
>49
例外で落ちてタスクバーが消える事が問題なんじゃない
なぜ例外をキャッチしてないのかと問いたい

51:デフォルトの名無しさん
07/09/05 12:38:06
何か障害が発生した場合、最初にすべきことは原因の特定。
>>49は、障害を覆い隠すのではなく、障害の原因を特定し、その解決を考えてみるべきでしょ。

52:デフォルトの名無しさん
07/09/05 12:38:25
別アプリの例外とかキャッチ出来るの?

53:デフォルトの名無しさん
07/09/05 12:39:19
ましてゲームと書いてあるのにw

54:デフォルトの名無しさん
07/09/05 12:40:30
>52
だから本アプリでキャッチしようよ。
触れない理由でもあるんかな?

55:デフォルトの名無しさん
07/09/05 12:42:04
>全画面で実行される別アプリ(ゲーム)の補助ツール

よく読みましょう。

56:デフォルトの名無しさん
07/09/05 12:43:22
>55
いや、読んだ。だから別アプリが問題だっていってるわけだが?

57:デフォルトの名無しさん
07/09/05 12:45:01
本当はチートツールですちゃんと嫁

58:デフォルトの名無しさん
07/09/05 12:46:34
>57
そうか、なら死ね

59:デフォルトの名無しさん
07/09/05 12:50:22
うるせぇ解決策だせもしねえでお前がしね

60:デフォルトの名無しさん
07/09/05 12:54:12
>59
DirectX SDK
でぐぐれ馬鹿

61:デフォルトの名無しさん
07/09/05 12:55:40
>>49
explorer.exeのプロセスを定期的に調べて死んでたら起動するとかでは?

62:デフォルトの名無しさん
07/09/05 13:10:39
消えたタスクボタンを復活させるフリーソフトがあったような。

63:49
07/09/05 14:00:02
>>56
別アプリはあくまでも別(ゲームなのでソースは公開されてない)なので、
どういう原因で例外が発生しているのかはタイミングを含めてほとんど不明です。
なのでその不慮の自体からの回避をするための補助ツールをと思いまして。

>>57,58
結果的にチート扱いになってしまうかも分かりませんが、今回はタスクバーの
表示回復だけが目的です。

>>60
ググって見ます。

>>61
explorer.exeは生きてる状態で、タスクバーが消えてる以外は問題なく動いています。
(Windowsキーを押すとスタートメニューが表示されます。)

>>62
その機能を、補助ツールを常駐させることで自動的に回復したいのです。

64:デフォルトの名無しさん
07/09/05 14:05:36
>63
もう一度ゲームを起動して正常終了してもタスクバーは消えたままですか?

65:デフォルトの名無しさん
07/09/05 14:06:33
>>60はノイズだよ
そんなんぐぐっても何も出てこんぜ

66:デフォルトの名無しさん
07/09/05 14:08:32
>65
いや出てくるが?

67:49
07/09/05 14:11:52
>>64
その場合はタスクバーも表示されています。

68:デフォルトの名無しさん
07/09/05 14:13:34
プロセス終了時にShell_TrayWndかなんかがVisibleか調べて
表示させればいいんじゃない

69:デフォルトの名無しさん
07/09/05 14:16:08
>>63
んーじゃあ最初にタスクバーのハンドルを取得して
非表示になってたらShowWindowするとか。
非表示じゃなくて存在自体なくなってたらexplorer.exeをkillして再起動とか。
後者はあまり好ましくないかも知れんがやむを得ないと思われ

70:デフォルトの名無しさん
07/09/05 14:27:31
>>68,69
ありがとうございます。
その方法で調べて試してみます。

>>69
確かにexplorerのkillは最終手段ですね^^;

71:デフォルトの名無しさん
07/09/05 15:29:47
>67
DirectXで画面にクリア処理

それで終わるよ

72:デフォルトの名無しさん
07/09/05 17:04:32
>>45-46
CreateGraphics()で書いてました
e.Graphicsじゃないといかんのですね
ありがとうございました


73:デフォルトの名無しさん
07/09/05 17:08:21
どういたしまして^^

74:デフォルトの名無しさん
07/09/05 17:13:21
>72
ヒント
最大化
最小化

createグラフィックが正解

あとはわかるね

75:デフォルトの名無しさん
07/09/05 17:26:53
>>49
そのゲームの作者かメーカーに修正依頼するのが筋じゃねーの

76:デフォルトの名無しさん
07/09/05 17:38:16
それが作者は昨年死亡したもので・・・

77:デフォルトの名無しさん
07/09/05 18:00:09
owata

78:デフォルトの名無しさん
07/09/05 18:44:41
ユーザーコントロールのプロパティに独自に作成したクラスの配列を指定する方法を教えてください。
コンパイルは通るけど、プロパティで設定した値が保存されません。string型の配列とかだと問題ないのですが orz

・TestClass.cs
public class dataClass{
 private string _member;
 public string Member{
  set { _member = value; }
  get { return _member;}
 }
}

・ユーザーコントロール.cs
private dataClass[] _test;
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public dataClass[] Test{
 set { _test = value;}
get { return _test;}
}

79:デフォルトの名無しさん
07/09/05 19:02:13
>>78
このコードでちゃんと値取れたが、Testへはどうやって値入れてるんだ?

80:デフォルトの名無しさん
07/09/05 20:31:28
エロビデオ専用のプレイヤー作りたいのですが
ムービー再生の命令ってありますか?

81:デフォルトの名無しさん
07/09/05 20:33:02
命令^^

82:デフォルトの名無しさん
07/09/05 20:34:37
何か間違ってますか?

83:デフォルトの名無しさん
07/09/05 20:47:10
>>41

(&1)
(&2)

(&12

84:デフォルトの名無しさん
07/09/05 20:47:18
>>79
ユーザーコントロールを新規のフォームに配置 ⇒ プロパティシートから設定しています。

85:デフォルトの名無しさん
07/09/05 20:47:50
>>80
すまんが、エロビデオのモザイク除去コマンドしか知らね
他スレを当たってみてくれ
そして二度と来んな

86:デフォルトの名無しさん
07/09/05 20:54:57
知らないならレスしないでください!

87:デフォルトの名無しさん
07/09/05 20:55:23
>>84
???
プロパティシートからどうやって?
string?

88:デフォルトの名無しさん
07/09/05 21:10:43
>>85
くだらねぇ
面白いと思ってんのか?
お前が二度とくんな

89:デフォルトの名無しさん
07/09/05 21:17:37
>78
そのSET処理にメッセージボックスを置けばすぐ解るよ

90:デフォルトの名無しさん
07/09/05 22:41:50
C#で
String型で誕生日が入っている場合
その誕生日から現在日付を計算して
年齢を取得するにはどうすればいいのでしょうか?

つまり誕生日が
"1991/09/06"の場合
今日実行すれば、15歳を表示
明日実行すれば、16歳を表示

91:デフォルトの名無しさん
07/09/05 22:44:30
プロパティシートから?プロパティグリッドのことか?

92:デフォルトの名無しさん
07/09/05 22:58:01
>>90
DateTimeにパースして
現在の年月日と比較したら?


93:デフォルトの名無しさん
07/09/05 22:58:46
>>90
>"1991/09/06"の場合
>今日実行すれば、15歳を表示
>明日実行すれば、16歳を表示

これはどうやって計算した?
基本的にはその計算した過程をプログラムすれば良い。

ここが参考になるんじゃない
URLリンク(jeanne.wankuma.com)

94:デフォルトの名無しさん
07/09/05 22:59:15
>>90
こんなかんじか?

string tanjyo = "1979/01/27";
DateTime dt = DateTime.Parse(tanjyo);
TimeSpan ts = DateTime.Now - dt;
int nenrei = (int)ts.TotalDays / 365;
MessageBox.Show(nenrei.ToString());


95:デフォルトの名無しさん
07/09/05 23:01:02
閏年は?

96:デフォルトの名無しさん
07/09/05 23:02:53
年と月日を別々に比較しないとだめぽ

97:デフォルトの名無しさん
07/09/05 23:07:51
Calendarがやってくれない?

98:72
07/09/06 00:38:06
Paintイベントで
CreateGraphics()で描いていたのを
e.Graphicsを使って描いてDoubleBufferdをTrueにする事で
ダブルバッファリングを有効にすることができましたが

意図的にPaintイベントを発生させたいときに
Paint(null,null)で呼び出していた手法が使えなくなってしまいました
(PaintEventArgs e が nullになってしまうため)

何かいい方法はないでしょうか?


99:デフォルトの名無しさん
07/09/06 00:43:23
>>98
そういうのは
・スレッドをブロックして即座に描画するんならControl.Refresh
・非同期的に描画するんならControl.Invalidate
を呼ぶ。
通常は後者

100:デフォルトの名無しさん
07/09/06 00:49:22
>>99
嗚呼、Refreshでよかったのか〜
Invalidateは初めて知りまつた
ありがとうございました

101:デフォルトの名無しさん
07/09/06 09:18:28
年齢は前日でプラス1だよ

102:デフォルトの名無しさん
07/09/06 09:47:12
Refresh は、 Invalidate して Update してる

103:デフォルトの名無しさん
07/09/06 09:51:03
>>101

あれ、満年齢って誕生日の前日に数えるんじゃなかったっけ?

104:デフォルトの名無しさん
07/09/06 10:01:26
>>101

すまん、前日+1と読み誤っていた。
前日でプラス1、その通りでございます。



105:デフォルトの名無しさん
07/09/06 10:06:16
VC#2005を使って簡単なブラウザを作りたいんですけど、とりあえずFormに
textboxやbuttonとか貼り付けて、buttonの名前を「移動]「戻る」「進む」と
名づけたんだけど、そのボタンにどうやったらその機能を付けたらいいのかが
わからないんです。
navigate()やGoback()などのメソッドを使うことは分かったんだけど、実際に
どのように記述すればいいのか…

106:デフォルトの名無しさん
07/09/06 10:25:58
>>105
レンダリングエンジンを自作するつもりでなければ、
WebBrowserコントロールを貼り付ける。
あとはWebBrowserコントロールでググればいろいろ出てくるだろ。


107:デフォルトの名無しさん
07/09/06 10:29:00
>>105
このへんが参考になるかな。
URLリンク(www.microsoft.com)

108:デフォルトの名無しさん
07/09/06 10:48:33
>>107
おおっ!ありがとうございます。
参考になります♪


109:デフォルトの名無しさん
07/09/06 11:17:40
>>87
>>91
プロパティグリッドというのですかね。正確な名称はわかりませんが、
コレクションエディタ? でメンバを追加しています。
>>78
メンバを追加してもメッセージは表示されません。。

110:109
07/09/06 11:41:39
CollectionBase を派生させたクラスを使用すればよかったみたいですね。
お騒がせしました。

111:デフォルトの名無しさん
07/09/06 11:55:36
>>107のサイトを見て一応作ったんだけど、この場合だとcomboBoxのプロパティitemに
登録したサイトのみ閲覧できるってことなんですよね?
そうではなくIEみたいにアドレスや検索語をtextBoxに入力して移動buttunを押せば
そのページに飛ぶようなブラウザをつくりたいんですけど、どうすれば…?

どのようにメソッドを記述すればいいんでしょうか?

112:デフォルトの名無しさん
07/09/06 11:58:44
取りあえず、いきなりブラウザじゃなくて普通に
簡易なソフトを組むところから始めて見た方が良いのでは…。

113:デフォルトの名無しさん
07/09/06 12:01:45
いきなり自分だけで作ってみるよりも、VisualC#入門 みたいな書籍やサイトを回って
軽く練習してからの方が早いよ

114:デフォルトの名無しさん
07/09/06 12:09:38
応用のきかないやっちゃ

115:デフォルトの名無しさん
07/09/06 12:14:48
>>113
嫌です
というかウェブブラウザ以外以外作るきはないんです
一度きりのプログラミングなので知る必要はないと思います

116:デフォルトの名無しさん
07/09/06 12:16:17
>>115
>>111程度のこともできないんじゃ無理だね

117:デフォルトの名無しさん
07/09/06 12:16:51
ってまあ騙りなんだろうけど、釣られてみたw

118:デフォルトの名無しさん
07/09/06 12:18:10
誰だって初めからできるわけじゃないでしょが!!

119:デフォルトの名無しさん
07/09/06 12:35:50
これが所謂ゆとりってやつかね。

120:デフォルトの名無しさん
07/09/06 12:42:18
中身がわからないもの作って何が面白いんだろうか
もし入門書を読むのが苦痛ならプログラマには向いていないってことだよ

121:デフォルトの名無しさん
07/09/06 12:47:04
webBrowser1.Navigate(comboBox1.SelectedItem.ToString());

webBrowser1.Navigate(textBox1.Text);

がんばれ

122:デフォルトの名無しさん
07/09/06 13:39:40
>>120
誰でも苦痛だと思うが

123:デフォルトの名無しさん
07/09/06 13:44:57
えー、苦痛ならほんとに向いてないでしょ

124:デフォルトの名無しさん
07/09/06 13:57:27
入門書を読むのはまあ苦痛だろう。
苦痛じゃなくなるのは程よく慣れて思い通りになってくるだいぶ後の話だ。
苦痛だと思ったらプログラマに向いてないなんてちょい言い過ぎ。

>>115を読むとこいつは人間的にどうかと思うがな。

125:デフォルトの名無しさん
07/09/06 14:07:37
>>118ワロタ
だから練習しろといってるw

126:デフォルトの名無しさん
07/09/06 14:20:20
というか騙りじゃなけりゃ、スキルなくてやる気もないんだから発注しろよって話だな

127:デフォルトの名無しさん
07/09/06 16:59:46
webBrowser1.DocumentText = "<html><body></body></html>";
HtmlElement he = webBrowser1.Document.Body;
if (he == null) {
MessageBox.Show("error");
return;
}
he.InnerHtml += "a";

これを行うとhe==nullがtrueになってしまいます。
Bodyを取得するにはどうしたらよいのでしょうか?

128:デフォルトの名無しさん
07/09/06 17:39:16
よくgenericの例の説明で

Swap<T>(ref T,ref T);

なんてのがありますけど、

実際にSwapクラス?ってどこかの名前空間にあります?

129:デフォルトの名無しさん
07/09/06 18:04:10
普通に自作のジェネリクスメソッドじゃね?

130:128
07/09/06 18:13:49
いやまぁ作るのは簡単なんだけど・・・

誰が作っても同じだし、汎用的な処理なんであるに決まってると思い込んでた

131:デフォルトの名無しさん
07/09/06 18:28:26
そんな事までクラスで面倒見ないといけないのか・・・?

132:デフォルトの名無しさん
07/09/06 18:39:35
使わないだろ
欲しいと思ったことも無いなSwap

133:デフォルトの名無しさん
07/09/06 18:44:40
コルーチンの説明でフィボナッチ数列求めるようなもんだろ。

134:128
07/09/06 18:53:26
あぁ、そうか
C#みたいな言語では例外安全とかあんまり考えなくていいのね

だからSwapも要らないと

135:デフォルトの名無しさん
07/09/06 20:15:57
考えなくていいわけじゃないけど
Swap1こだけあってもそんなにありがたくないような気がする
そういうの集めたライブラリとかなら知らんが。

136:デフォルトの名無しさん
07/09/06 20:18:03
ていうかどのレベルで考えるかによるけとな。
Swapだけそんなに安全に使えてもあんまり意味ないし

137:デフォルトの名無しさん
07/09/06 20:21:23
例外安全も考えたこと無いな
GCされるだけだし、
構造体のコンストラクタでは例外投げられないし

138:デフォルトの名無しさん
07/09/06 20:43:43
例外安全ってどういうこと?
例外が発生するかどうかはこの場合関係ないような気がするけど・・・
誰か詳しい人教えて


139:デフォルトの名無しさん
07/09/06 21:04:44
>138
OutOfMemoryExceptionやThreadAbortExceptionみたいな
いつでも起きうる例外もあるから。
例えばAPIでMutexを作って変数に代入する前に例外が起きたりして解放する機会を失ったりとかすると致命傷になる。
swapなら何かのIntPtrを例外安全に入れ替えたいときに必要なのかもしれず。C#使っててそんな機会はまずないかもしれないけど。

まぁ、ThreadAbortExceptionなんかAbortを叩くやつが悪いと思うし
本当のメモリ不足のOutOfMemoryExceptionは例外安全を考えるまでもなく復旧できないだろうし
こいつらはあんまり考えなくてもいいかもね。
他にいつでも割り込んで起きうる例外ってあったかなぁ?

140:デフォルトの名無しさん
07/09/06 21:11:16
例えば片方入れ替えたところで何らかの例外が発生してしまうと、
変数の状態が不正になる
ローカル変数とかは普通に書いてりゃ問題ないけど
寿命の長いオブジェクトのフィールドだったりすると
例外が起こった処理以外に影響を与えてしまう。

まあ可能性は普通ものすごく低いので
ここまで考慮することはまあそうそうないけどね。
本当にクリティカルなオブジェクトだったりすると
そこまで考えなきゃならないこともあったりはする

普通はコード上で想定される例外くらいの考慮でしますけどね
Swapは普通問題が起こるのはまれな部類なので
そこまで考慮しないのがほとんど

141:デフォルトの名無しさん
07/09/06 21:15:39
例えばASP.NET環境だと、処理に時間がかかりすぎると
スレッドがアボートされるので
思いもよらんところで例外が発生する可能性はある

そこまで考慮するかどうかはまた別の問題だが。

142:デフォルトの名無しさん
07/09/06 21:17:51
どうでもいいし脇道なんだがCERあるのでその辺は「いつでも」は起こらない
2.0になる時に信頼性に関してはかなり手を加えられてたりする、ひっそり
まあSQLサーバーのせいだろうけど。

143:デフォルトの名無しさん
07/09/06 21:18:28
だいたいアンマネージが絡むようなところか
セキュリティ上まずいことになる可能性があるところくらいかな
ロックなんかが関わってくるところもあるかもしれない

144:デフォルトの名無しさん
07/09/06 21:20:20
>>142
それはつまりちゃんと対応した場合の話じゃないの?
ってか対応しる手段としてそういうのがあれ

145:デフォルトの名無しさん
07/09/06 21:20:36
Compact上でのWebResponseの質問なんですが、
WebRequest.Create()でWebRequestを作成した後、GetResponse()で
WebResponseを作成するまではいいのですが、ファイルをダウンロード後に
Close()しようとしてもなぜかそこでハングしてしまい、WebResponseを閉じる
ことが出来ません。試しにGetResponseStream()で取得したStreamの方を
Close()してみたのですが、こっちの方でもハングしてしまい止まってしまいました。
ダウンロード対象はファイルとストリーミングデータ両方です。
何かヒントだけでもいただけないでしょうか?

146:138
07/09/06 21:22:42
>>139-140
なるほどー。そういう問題があったとは気づかなかった。
でもSwapをメソッドにしてもそういう問題は変わらないんじゃない?
それともInterlockedクラスみたいに内部的な処理として実装するって意味なのかな

147:デフォルトの名無しさん
07/09/06 21:50:37
>>127
判らないけど処理に時間がかかるんじゃないか。

148:デフォルトの名無しさん
07/09/06 21:51:00
そういうことでしょう。


149:デフォルトの名無しさん
07/09/06 21:51:30
>>146そういうことでしょう。
のつもりだったのですよ。


150:デフォルトの名無しさん
07/09/06 21:53:41
すみません。どれが自作自演でしょうか?

151:デフォルトの名無しさん
07/09/06 22:04:24
いや、多分、C++では例外安全なプログラムを書くためには
Swapが頻出するから、そのメソッドが用意されてないのはなんでじゃろ、
といった程度の話じゃないのかな
C++だとSwap以外のほとんどの処理が例外を投げる可能性があって大変らしい
StackのPopにいたっては例外安全に記述する方法がないという

152:デフォルトの名無しさん
07/09/06 22:23:00
>>145
Compactは知らないが、その手のコードはあちこちにある。
それで試したら?

つーかストリーミングの処理はどうやってるのか非常に興味ある。
出来てなさそう。

153:デフォルトの名無しさん
07/09/06 22:25:28
>>151
C++は基本的に例外安全か否かの2値しか考えないからねぇ。

URLリンク(msdn2.microsoft.com)(VS.80).aspx

これで言うと、C++な人たちの世界では
Consistency.WillNotCorruptState
Consistency.MayCorruptProcess
のどちらか。

そうじゃなくて、状態の一貫性が失われることはあるのは前提で、
どこまで状態が不定になるかを分類するというアプローチもあると。

154:デフォルトの名無しさん
07/09/06 22:28:19
そりゃそうだろ。
メモリだって100%確実に書き込みできるわけじゃないし。

155:デフォルトの名無しさん
07/09/06 22:29:05
>>152
PC上で同じコードを実行した場合はハングせずに切断できるので
多分Compact上でやるのがいけないのか、CE機の方に原因がある
のかもしれません。
一応探してみます。

ストリーミングといってもただフレーム単位で流れてくるmp3を
スレッドに分けてConnectStreamから読んでるだけなんですけどね orz

156:デフォルトの名無しさん
07/09/06 22:34:46
>>151
C++のstd::swapもコピーコンストラクタの実装によっては例外が出ると思うけど・・・
そういうことではない?

157:デフォルトの名無しさん
07/09/06 22:37:30
c++のスレでどうぞ。


158:デフォルトの名無しさん
07/09/06 22:39:09
変数名+1という式を実行したいのです
すなわちなぜ数字の1と文字列型の1が存在し区別する必要があるのかということです?
すごく面倒です

159:デフォルトの名無しさん
07/09/06 22:46:26
ツマンネ

160:デフォルトの名無しさん
07/09/06 22:47:01
釣れますか

161:デフォルトの名無しさん
07/09/06 22:47:05
ゴメンネ

162:デフォルトの名無しさん
07/09/06 22:53:20
>>161>>159に絶妙のレスを入れようとしたのに>>160の野郎が邪魔しやがって、
と思っているに違いない。

>>160は女。

163:デフォルトの名無しさん
07/09/06 22:54:40
野郎なのに女とはこれいかに

164:デフォルトの名無しさん
07/09/06 22:58:22
Mutexを使って多重起動を抑止したのはいいんだが

・多重起動してるかチェックしたときにすでに同じEXEが起動してた
・かつ起動済みのEXEが最小化されてる

こんなとき、すでに起動済みのEXEのほうの最小化を解除することは可能?


165:デフォルトの名無しさん
07/09/06 23:03:30
可能だな

166:デフォルトの名無しさん
07/09/06 23:11:03
>>164
プロセス間通信する必要がある。
IpcChannelとかその辺

167:デフォルトの名無しさん
07/09/06 23:17:07
>>164
Win32API呼べばいけると思う。

参考
URLリンク(program.station.ez-net.jp)

168:デフォルトの名無しさん
07/09/06 23:23:12
まあでもchar型の数値と整数型の数字があるって不思議だよな!
たとえばprintに渡せないし
プログラムしない人にはわからないと思うぜ

169:デフォルトの名無しさん
07/09/06 23:24:57
>>167
なにその参考先
二回目以降に起動したやつは存在するプロセスに通知するだけにすればいいのに

170:デフォルトの名無しさん
07/09/06 23:25:12
158==168?

171:デフォルトの名無しさん
07/09/06 23:34:13
>>158は前スレのベストセレクションだな

172:デフォルトの名無しさん
07/09/07 00:33:32
int iに年代を入れてカレンダーを作るプログラムを作ったんだけど、
もし i におかしな数字を入れられた時はもう一度入力させるようにwhile文でまわすつもりが、
数字じゃなくてaaaaみたいな文字列を入れられて延々ループが始まってしまいました。
これを防ぐにはどうしたらいいですか?

173:デフォルトの名無しさん
07/09/07 00:38:45
>はもう一度入力させるようにwhile文でまわすつもりが
意味分からんからコード書いてみ

174:デフォルトの名無しさん
07/09/07 00:44:18
どのような処理か分かりかねるけど、普通はループ中に条件変わらなければ
ループ入る前に評価するのでは?

175:デフォルトの名無しさん
07/09/07 00:53:25
>>173

int i;

scanf("%d",i);

while( i>1 || i<9999 )
 {
 printf("もう一度入力してください");
 scanf("%d",&y);
 }


こんな感じです。

176:デフォルトの名無しさん
07/09/07 00:54:14
>>172
どんなコードかすごい興味あるw

177:デフォルトの名無しさん
07/09/07 00:54:43
あ、すいません
最初のscanfの括弧内のiの前に&書き忘れです。

178:デフォルトの名無しさん
07/09/07 00:56:34
たびたびすいません・・・・
whileの条件の不等号が逆です・・・

179:デフォルトの名無しさん
07/09/07 00:56:47
Cかよ

180:デフォルトの名無しさん
07/09/07 00:58:07
つーかなんで1個目のscanfはiで2個目はyなの

181:デフォルトの名無しさん
07/09/07 00:59:23
1<i<9999 なら無限ループしたいの?

182:175
07/09/07 01:03:59
>>180

ぐは;・・・・ちょっとミスしすぎですね。。
yはもともとのコードをyで書いてたんでその癖でそのまま書き写してしまいました・・・

183:デフォルトの名無しさん
07/09/07 01:04:40
スレ違い
CとC#は別の言語だよ
自分が勉強してる言語の名前くらいちゃんと覚えとけ
この質問は>>180でFAだが次からこっち行けよ
スレリンク(tech板)

184:175
07/09/07 01:06:45
>>181
すいません、i<1 || i>9999 の時に正しく入力されるまでループさせたいんです。
でもaaaaなどの文字列を入れられてしまうとなぜかバグみたいに”もう一度入力してください”が延々流れ続けるようになってしまうんです。

185:デフォルトの名無しさん
07/09/07 01:07:27
scanfじゃね?と冗談で書こうとしたらマジかよ

186:175
07/09/07 01:07:30
すいません、失礼いたしました。

187:デフォルトの名無しさん
07/09/07 01:09:29
まあまあどうせ暇なんだし答えてやろうぜ。
ってかすでに無限ループする以外の選択肢しかないだろこれはw

188:デフォルトの名無しさん
07/09/07 01:11:28
>>186
いや構わんよ
自分はCのスレにも居るから何かあれば遠慮なく聞いて

189:デフォルトの名無しさん
07/09/07 01:12:04
こんな感じのソースじゃなくてそのものがないとなんともいえんな
処理自体は間違ってないように見える

190:デフォルトの名無しさん
07/09/07 01:19:55
>>189
Wikipedia項目リンク

191:デフォルトの名無しさん
07/09/07 01:24:58
scanfってこんなんだっけ
もうすっかり忘れてるなw

なるほどこれはダメだ

192:デフォルトの名無しさん
07/09/07 01:28:19
こういうの見るとC#やっててよかったと思うわ>scanf

193:デフォルトの名無しさん
07/09/07 01:33:36
scanfのfってなんですか?

194:デフォルトの名無しさん
07/09/07 01:36:41
フォーマットのfじゃね?

scanf 懐かしいな、講義で教わったときは「使うな」だったけど。

195:デフォルトの名無しさん
07/09/07 01:44:28
教えといて使うなってのもなw
まぁ知らなきゃ使ってしまうかもしれないし当然だが

196:デフォルトの名無しさん
07/09/07 04:06:43
ファイルの保存ですがオブジェクトを複数個リストにいれてそれを保存なんてことできますか?
取り出し方が思いつかないですけど

197:デフォルトの名無しさん
07/09/07 04:12:56
シリアライズでぐぐれ

198:デフォルトの名無しさん
07/09/07 05:09:53
前スレの透過キー問題、結構重要じゃね?
リサイズが出来なくなるのは仕様で済ましちゃ問題あると思うんだが。

199:デフォルトの名無しさん
07/09/07 08:05:44
24bitバグが絡んでると思ったが16bitでも発生するみたいだ

200:デフォルトの名無しさん
07/09/07 09:14:16
これ釣りですから

201:デフォルトの名無しさん
07/09/07 09:15:02


202:デフォルトの名無しさん
07/09/07 09:54:42
誤爆に10ゲイツ

203:デフォルトの名無しさん
07/09/07 11:27:00
>>197
正直だめもとで質問したのですが便利なものがあるんですね。難しいけど
ありがとうございました

204:デフォルトの名無しさん
07/09/07 11:55:10
あるプロジェクトがマネージドなのかアンマネージドなのかを判別する方法あるのでしょうか?
単純に、DllImportなどを指定して、WindowsのAPIとかを呼び出すコードが混じっていたら、
アンマネージドになるのであって、
明示的に、VisualStudioのビルドプロパティのどっかにフラグで指定されているわけでは無いですよね?

205:デフォルトの名無しさん
07/09/07 12:35:57
プロジェクトファイルの拡張子からして違うように見えるのは俺の気のせいか?

206:デフォルトの名無しさん
07/09/07 13:48:21
C#(というか.NET)で作ってたらDllImport使ってようとunsafe使ってようと
マネージドには違いないだろ

207:デフォルトの名無しさん
07/09/07 13:51:32
>>204
>DllImportなどを指定して、WindowsのAPIとかを呼び出すコードが混じっていたら、
>アンマネージドになる

ならなねーよ


208:デフォルトの名無しさん
07/09/07 14:20:27
URLリンク(www.atmarkit.co.jp)
ここの>CLRに準処 の意味がわからん
CLIに準処したCLR上で動作する の間違いか?

209:デフォルトの名無しさん
07/09/07 14:52:05
>>204
アンセーフとごっちゃにしてない?
アンセーフかどうかならプロジェクトのプロパティにあるよ
Win32APIはたしかにアンマネージだが呼び出し側がアンマネージになるわけではない

210:デフォルトの名無しさん
07/09/07 14:59:23
文字列の配列またはListの要素を結合する方法ってありますか?
arrray.Joint("区切り文字")
見たいなメソッドがあれば一番良いのですが。。。
今はループで回して+=で結合してるのですあ、もっと良い方法がないかな、と思って

211:デフォルトの名無しさん
07/09/07 15:03:14
Strings.Join

212:デフォルトの名無しさん
07/09/07 15:04:08
String.Join

213:デフォルトの名無しさん
07/09/07 15:07:09
>>210
ちなみに要素数にもよるがループ中で文字列連結はよくない。
要素数だけゴミ(一時オブジェクト)が生成されるので。
そういうときは代わりにStringBuilderを使う。

214:デフォルトの名無しさん
07/09/07 15:15:09
文字列の連結は今回は関係なおのでは

215:213
07/09/07 15:18:40
>>214
まあ関係ないけど、一応言っといて損はないでしょ

216:デフォルトの名無しさん
07/09/07 15:22:46
要素数があらかじめ決まっているならstringの方が最適化されて効率がよくなるらしいよ

217:デフォルトの名無しさん
07/09/07 15:57:55
>>216
それは"a" + "b" + "c"がstring.Concat("a", "b", "c")になるというだけでは?
ループの連結では関係ないよ

218:デフォルトの名無しさん
07/09/07 16:25:28
ループでも回数が決まってれば展開される最適化が行われることがあるだろ
そしてstring の += が全部一つにまとまってちょっぱやになるだろ

219:204
07/09/07 16:33:10
皆様、確かにアンセーフとごっちゃにしていました。申し訳ありませんでした。
多分、以下のようになります。

アンマネージ :
  昔のDLLなどがアンマネージコード。
  .NETから呼び出しても、呼び出した側はマネージドコードのまま。

アンセーフ :
  ポインタなどを使ったコードで、unsafe{}句で記述する。
  ビルドプロパティで許可の設定をしないとビルドエラーとなる。


220:デフォルトの名無しさん
07/09/07 16:53:15
>>218
なんねーよ
ループの展開ってどれだけ膨大なコードになるんだw

221:デフォルトの名無しさん
07/09/07 17:29:59
JITでループが展開されることはあるんじゃなかったっけ
まあstringの連結の展開には無関係だけど

222:デフォルトの名無しさん
07/09/07 17:31:09
繰り返し構造が3回以内なら展開される

223:デフォルトの名無しさん
07/09/07 23:26:05
最小化されているFormを元の状態に戻すにはどうしたらいいんでしょうか?
もとの状態が最大化だったら最大化した状態に戻したいのですが。

224:デフォルトの名無しさん
07/09/07 23:44:45
ShowWindow( hWnd, SW_RESTORE );


225:デフォルトの名無しさん
07/09/08 01:31:23
>>224
どうもです。
やっぱWin32APIを使わないと無理なんでしょうかね?

226:デフォルトの名無しさん
07/09/08 01:46:02
なんでだよw
要は最小化される前の状態を「覚えて」おけばいつでも元に戻せるだろ?
小学校1年生でもわかる理屈だと思うけど

227:223
07/09/08 02:29:21
>>226
そうなんですけど覚えておける状況にあるとは限らないんで。

228:155
07/09/08 02:37:48
すいません、詰ったのでもう一度質問させてください orz

あの後、いろいろ実験したのですが、どうやらファイルを完全にダウンロード完了しないと
回線が切断されないようで、単品のファイルをダウンロードする場合はちゃんと切断できるの
ですが、ラジオ放送などの終わりがいつになるかわからないものだと放送が終了するまで
切断できないようです。
ですが、さすがにそれだと通信帯域的や、コネクション数の制限的にまずいのでどうにかして
切断したいのですが、どうしたらいいでしょうか?

229:デフォルトの名無しさん
07/09/08 03:49:50
適当に強制Closeしてやりゃいいんじゃねーの?

230:デフォルトの名無しさん
07/09/08 04:25:25
>>229
usingで囲ってるのですが、どうしてもそうするとClose出来なくて
ハングしてしまい抜け出せません orz

231:デフォルトの名無しさん
07/09/08 13:37:04
スレッドを作ってその中からClose

232:デフォルトの名無しさん
07/09/08 18:04:50
>>223
ウインドウステートプロパティで
最大化か最小化か普通か取得できるからそれみて
最小化されてたら設定かえてやるだけでよくね?

233:デフォルトの名無しさん
07/09/08 18:10:13
まあ、「覚えておけない状態」っていうのがどういう状態のことなのか
227に聞いてみたいものだねw

234:デフォルトの名無しさん
07/09/08 18:26:45
>>231
スレッドは嫌韓雑誌なのでNGです
テコンダー朴がすごすぎです

235:デフォルトの名無しさん
07/09/08 19:00:06
C#を無料で入手できるサイトってありますか?

236:デフォルトの名無しさん
07/09/08 19:05:16
>>235
ネタ?
.Net framework sdkかC# Expressで検索。

237:223
07/09/08 19:27:09
>>233
単に対象のフォームを作成時から面倒みれるわけではないというだけです。
まあライブラリ的なもんだと考えてもらえばわかりやすいかと。

>>232
元の状態がわからないのでそれではできないです。

238:デフォルトの名無しさん
07/09/08 19:30:47
Form.WindowStateプロパティで取れるっていってんだろうがボケナス

239:223
07/09/08 19:48:34
>>238
いや、だから現在の状態は取得できても元の状態は取得できないんですが・・・


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4618日前に更新/255 KB
担当:undef