ふらっとC#,C♯,C#(初心者用) Part45at TECH
ふらっとC#,C♯,C#(初心者用) Part45 - 暇つぶし2ch175:デフォルトの名無しさん
09/09/25 17:56:39
>>174
え!? 自分で作ったプログラム以外をTopMostにできるんですか?


176:デフォルトの名無しさん
09/09/25 18:06:34
たった今いいことあった!
マックのドライブスルーから帰ってくると、家の車の下にネコ発見!
あれ、うちのネコじゃないなあ・・・でもどっかでみたことあるな・・・
と思い、車の下を覗き込みと逃げずにこっちをみている
まさかと思い、1年くらい前に野良猫に追いかけられ行方不明になった猫の名前を呼んでみた
すると・・・「にゃ~ん」と甘えた声が!
すっごく弱虫で甘えん坊なそいつが1年も生きていたなんて・・・
名前を呼んだら、ビクビクしながらこっちに寄ってきて、身体を撫でたらビクっとしてまた車の下に隠れようとしたけれど
何度も何度も名前を呼んで声かけたらにゃ~んにゃ~んと寄ってきて頭を撫でさせてくれた
ものすごいガリガリに痩せてたけど、抱き上げると前と変わらず、頭をすりつけて甘えてくる
もう絶対死んだと思ったけど、本当によかった!


177:デフォルトの名無しさん
09/09/25 18:42:45
どこの誤爆だ。w
でもよかったと言っておこう。

178:デフォルトの名無しさん
09/09/25 19:12:10
コピペ

179:デフォルトの名無しさん
09/09/25 19:31:53
質問です。
今、webブラウザ(?) を作ろうとしています。
テキストボックスにURLを入れてボタンをおしてページに飛ぶのは出来たのですが、
今みているページのURLをテキストボックスに入れることが出来ません。
IEみたいに、ページのURLを表示する事は出来ませんか?

180:デフォルトの名無しさん
09/09/25 19:35:02
WebBrowser.Document.Url

181:デフォルトの名無しさん
09/09/25 20:07:12
>>169
デスクトップの子供にする

>>171
SystemColors のメンバにいない?

182:デフォルトの名無しさん
09/09/25 23:54:27
>>175
WndProc をオーバーライドして
Zオーダが変わりそうになったら
Zオーダを最背面にしちゃえばよかったはず

183:デフォルトの名無しさん
09/09/26 00:00:25
>>181
> デスクトップの子供にする
これ詳しく頼む

184:デフォルトの名無しさん
09/09/26 00:07:20
認知偽装というやつか

185:デフォルトの名無しさん
09/09/26 00:12:15
ドライブスルーに使った車と、下にネコのいた車とは別なのだろうか
同じ車だとしたら、車庫入れの際にネコが轢かれなくて良かった

186:デフォルトの名無しさん
09/09/26 00:52:38
>>181
(0x7f, 0x9d, 0xb9)とSystemColorsのメンバとすべて比較してみましたが、いずれも違いました。

187:デフォルトの名無しさん
09/09/26 01:19:44
ある場所に自動で入れたフリガナが、
全く別の項目のフリガナに入っちゃうってどういうことよ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

188:デフォルトの名無しさん
09/09/26 01:35:45
うるせーよ馬鹿

189:デフォルトの名無しさん
09/09/26 01:35:52
だあらぁぁぁ、どっかでそのコントロールに入れてるんだよ君が!!!!!!!

190:デフォルトの名無しさん
09/09/26 03:36:29
TextBox継承してTextプロパティ上書きしたコントロールにでも置き替えてブレークポイント貼ってみろ

191:デフォルトの名無しさん
09/09/26 07:20:05
>>183
SetParent(GetDesktopWindow()); だったかな。

192:デフォルトの名無しさん
09/09/26 09:15:02
>>190
なんでそんなことするの?
継承とフリガナに関連性があるの
(*_*)?

193:デフォルトの名無しさん
09/09/26 09:31:27
>>192
死ねよハゲ

194:デフォルトの名無しさん
09/09/26 10:04:01
>>193
うんこ野郎

195:デフォルトの名無しさん
09/09/26 10:14:02
デバッグ放棄するならプログラム向いてない
もう辞めた方がいい

196:デフォルトの名無しさん
09/09/26 10:34:50
ポインタや、参照といったことから、可能性を追求できるぐらいの知能は必要。

>>192
イベントを取得して、どっから送られてきたかとか、確かめることができる。
それをやれって言ってくれてる親切な人だぞ。

197:デフォルトの名無しさん
09/09/26 10:41:13
バカには何を言っても無駄。

198:デフォルトの名無しさん
09/09/26 10:43:20
このゴミ虫殺せよ

199:デフォルトの名無しさん
09/09/26 10:47:20
>>186
そりゃ残念。あとは、実際に描画して取得するくらいかね。

200:デフォルトの名無しさん
09/09/26 10:56:07
>>196
あほかww

201:デフォルトの名無しさん
09/09/26 13:16:44
とんでもない無能っぷりだな
もうほっとけよ

202:デフォルトの名無しさん
09/09/26 14:23:32
>>196が心配なのでTextChanged

203:デフォルトの名無しさん
09/09/26 15:46:06
ACCESSのmdbをC#で読み書きするプログラムを作ったんですよ。
で、ACCESSが入ってない環境で動かせるかどうか確かめたら、
OleDbPermissionのアクセス許可に失敗したようなエラーが出ました。
mdbってACCESSはいってなくなてもC#で操作できるんだよね??
アクセス許可に失敗ってどういうこと?
ACCESSが入ってる環境だと問題なく動くんですが…
誰かアドバイスください。

204:デフォルトの名無しさん
09/09/26 15:53:22
MDAC が必要。

205:デフォルトの名無しさん
09/09/26 16:01:51
>>203
ACCESSつかってcdbを読み書きするプログラムだったら
ACCESS入ってないと無理なのでは?
初心者なので間違ってたらすいません。

206:デフォルトの名無しさん
09/09/26 16:07:12
>>205
そんな事ないんじゃね?
DVD管理ソフトがC#で書かれているのがあったけど
ACCESS入って無くても読み書きできたぞ
もちろんACCESSから読む事もできる

207:デフォルトの名無しさん
09/09/26 16:14:23
>204

MDAC自体は入ってるようなんですが…

208:デフォルトの名無しさん
09/09/26 16:21:29
おまえそれネットワーク共有とかから実行してないだろうな。


209:横から
09/09/26 16:45:36
>>208
俺も詳しくないんで確認だけど、それはイントラネットのネットワーク共有ドライブ
(例えばK:)にある実行アプリを実行しているのではないか、という意味だよね。

mdbファイルはどこにあってもアプリに部分信頼以上の権限があればいい、
という認識でOK? (MDACのバージョンによっては完全信頼)

210:デフォルトの名無しさん
09/09/26 16:55:27
ネットワーク共有っていうか、
環境自体はシンクライアント端末なんだけど、
それは関係あるの?

211:デフォルトの名無しさん
09/09/26 19:14:47
そういうときは、完全信頼を与えるとか、マイコンピュータから実行してみるとか、
その辺を試すのがスジ。

212:デフォルトの名無しさん
09/09/26 20:01:30
完全信頼を与えるって、どこでどうすればできますか

213:デフォルトの名無しさん
09/09/26 20:03:38
caspol だろ?

214:デフォルトの名無しさん
09/09/26 21:07:07
もう悪いこと言わないから .NET Frameworkを3.5SP1にしてしまえ


215:デフォルトの名無しさん
09/09/26 22:20:44
>>198
ハゲ野郎

216:デフォルトの名無しさん
09/09/26 22:34:33
しかし、3.5SP1て
・イントラネットでもマイコンピュータゾーン
・厳密名付きアセンブリでもデフォルト検証なし
いい感じに端折ってきてるよなw


217:デフォルトの名無しさん
09/09/27 21:13:17
C#で配列のスライシングと同様のことをするにはどうやるんですか?

218:デフォルトの名無しさん
09/09/27 21:22:55
>>217
Array.Copy メソッド (Array, Int32, Array, Int32, Int32)
のことかな?

219:デフォルトの名無しさん
09/09/27 21:36:26
>>217
LINQ

220:デフォルトの名無しさん
09/09/27 21:45:20
>>218
できました
ありがとうございました

221:デフォルトの名無しさん
09/09/27 22:14:38
スライシングというなら
new[] { 0, 1, 2, 3, 4 }.Skip(1).Take(3).ToArray()
の方がそれっぽいな

222:デフォルトの名無しさん
09/09/27 22:19:42
気持ち悪いな

223:デフォルトの名無しさん
09/09/27 23:28:03
var source = new[] { 1, 2, 3, 4, 5 };
// Linq
var copyL = source.Skip(1).Take(3).ToArray();
// Array.Copy
int[] copyAC = new int[3];
Array.Copy(source, 1, copyAC, 0, copyAC.Length);

実際に使ってみると、Array.Copyのほうがゴチャついてると思う。

224:デフォルトの名無しさん
09/09/28 00:16:03
VisualC#2008で質問です。
タスクバーのなかに検索枠を作りたいです。
以前はBandObjectでできたらしいのですが、バージョンが古くて動きません。
ToolStripというのがそれらしいんじゃないかと考えました。
Formのなかに配置してみたところ、感じとしてはそれっぽいんだけど、コンパイルしたところ、単にFormにToolStripが配置されているだけで、タスクバーにもっていっても登録できません。
(1)ToolStripでタスクバーのなかに検索枠を作ることはできますか?
(2)できないとしたら、なにをどうすればよいでしょう?
ご教示よろしくお願いします。


225:デフォルトの名無しさん
09/09/28 00:23:38
まっとうなやりかたなら、BandObject 以外の方法はないだろ。

226:デフォルトの名無しさん
09/09/28 00:31:36
アセンブリの生成に失敗しました -- 参照されたアセンブリ 'Interop.SHDocVw' は厳密な名前を持っていません。
をどう解決すればいいですか?

227:デフォルトの名無しさん
09/09/28 01:01:09
タイプライブラリインポータか何かで付けられなかったっけ

228:デフォルトの名無しさん
09/09/28 01:13:24
初歩的なことですみません

//応答データを受信するためのStreamを取得
System.IO.Stream st = webres.GetResponseStream();


//データを読み込む
int readSize = st.Read(bufferData, 0, bufferData.Length);

while (readSize > 0)
{
//データが読み込めた時
//読み込んだデータをMemoryStreamに保存する
requestData.Write(bufferData, 0, bufferData.Length);
readSize = st.Read(bufferData, 0, readSize);

}


Bitmap BmpSource = new Bitmap(requestData);

最後の行で「使用されたパラメータが有効ではありません」とエラーがでます
一昨日こんな感じでうまくいってたコードがHDDクラッシュで涙目です
時間をかけてやりたいのですが、ショックが大きすぎて考えもまとまりません
こんな簡単なことですみません ><。

229:デフォルトの名無しさん
09/09/28 01:16:30
ストリームの現在位置が一番後ろだからじゃね

230:デフォルトの名無しさん
09/09/28 01:16:32
ありがちなネタとしては
ストリームのポインタ巻き戻してないんじゃね

231:230
09/09/28 01:16:57
ぬあ
被った…

2秒差じゃしょうがないよね

232:デフォルトの名無しさん
09/09/28 01:17:53
あ、自己解決しました
人に見てもらう気持ちでながめるだけでちがいますね

ひとりだとこんな簡単なことで ><。

233:デフォルトの名無しさん
09/09/28 01:19:05
せっかくお答え頂いたので訂正箇所を
requestData.Write(bufferData, 0, bufferData.Length);
readSize = st.Read(bufferData, 0, readSize);

第三パラメータがあべこべでした

ありがとう!


234:デフォルトの名無しさん
09/09/28 02:36:40
バグってるぜ。


235:デフォルトの名無しさん
09/09/28 09:00:03
何がバグってるかというと、
1行目もreadSize分だけ書き込むようにしなきゃダメってこと。


236:デフォルトの名無しさん
09/09/28 11:03:35
>>235
ですです ありがとうございました

237:デフォルトの名無しさん
09/09/28 11:09:08
ああごめんそこを直したって話だったか。


238:デフォルトの名無しさん
09/09/28 11:10:34
初めて学ぶプログラミング言語としてC#は適当ですか?
それともVisualBasic.NETのほうがよいでしょうか?

239:デフォルトの名無しさん
09/09/28 11:12:26
どっちでも大して変わらない。


240:デフォルトの名無しさん
09/09/28 11:13:10
VBは変な癖がつくからやめとけ
C#は入門者向けの本が少ないから微妙
.NETでなくていいならJavaにしとけ

241:デフォルトの名無しさん
09/09/28 11:22:25
VB.NET は言語的に無理やり感のある部分があるから .NET にするなら C# の方がよいと思う。
個人的には Python をすすめたいけど 3.0 が出てそんなに経ってないから
2.x 系の情報と混在して初心者には混乱しやすいかも。

242:デフォルトの名無しさん
09/09/28 11:28:31
俺は、ほぼ最初にC#覚えた
あんま問題は無かったな
その前にCとjavaを軽く触ったからかも知れんが

243:デフォルトの名無しさん
09/09/28 13:04:04
>>240

>C#は入門者向けの本が少ない
これは微妙な気がする
後は同意

244:デフォルトの名無しさん
09/09/28 13:08:20
IronPython使ってみたけど
C#の方がいいよ

245:デフォルトの名無しさん
09/09/28 13:16:03
俺もC#→IronPython→C#と出戻り

246:デフォルトの名無しさん
09/09/28 13:25:03
IronPythonはC#から乗り換えるようなもんじゃないだろ
C#の補助だ

247:デフォルトの名無しさん
09/09/28 13:43:06
補助つってもどういうときに使うの?
俺はファイルのバックアップとかの作業の自動化のためにCPythonで小さいスクリプト組んでるけど

248:デフォルトの名無しさん
09/09/28 15:41:18
VBから来たおれは最初;をつけるのがめんどくさかったけど、今はこれのありがたさがわかる

249:デフォルトの名無しさん
09/09/28 15:55:46
逆にマクロとかで;付けて怒られる

250:デフォルトの名無しさん
09/09/28 20:08:55
>>248
VBは末尾の_に発狂する。

251:デフォルトの名無しさん
09/09/28 20:16:24
末尾の_ってなに?


252:デフォルトの名無しさん
09/09/28 20:17:02
VB10で_は省略できるようになるよ
まあVS2010ではC#4.0でCOMサポートの強化やdynamicによって
今までVBの方がやりやすかったことが完全に無くなるわけだけど

253:デフォルトの名無しさん
09/09/28 20:23:23
>>251
VBは(っていうかC系統以外の言語の大半はそうだけど)改行コード = 行の終わりになってる。

だから、(文字列的に)改行しても(文法的な)行を継続したい場合は、‘_’で改行コードを
エスケープする必要がある。

254:デフォルトの名無しさん
09/09/28 20:34:34
>>253
> VBは(っていうかC系統以外の言語の大半はそうだけど)改行コード = 行の終わりになってる。

そんなことねーだろ。



255:デフォルトの名無しさん
09/09/28 20:39:20
まあ少なくとも歴史的にはそうなんだけど、
そのあたりは水掛け論にしかならんから議論しても無駄だね。

256:デフォルトの名無しさん
09/09/28 20:40:58
水掛け論って。
メジャーな言語をいくつか思い浮かべればわかる話。

257:デフォルトの名無しさん
09/09/28 20:44:44
ALGOLの影響下にある言語はフリーフォーマットだろうし、lisp系ももちろん一行一文じゃないし、
関数型だってそうだし、一行一文って、COBOLとかFORTRANとその影響下のBASICくらいじゃね?

258:デフォルトの名無しさん
09/09/28 20:47:22
アセンブラやdosのbatだってそうだよ。
だから水掛け論にしかならんて。

259:デフォルトの名無しさん
09/09/28 20:58:46
・一行一文
アセンブラ、バッチファイルやシェルスクリプト、COBOL,FORTRAN,BASIC

・フリーフォーマット
近代的な言語のほとんど

↑みたいな感じかね

「C系統以外ほとんどは」って、水掛け論になるレベルじゃないわな。
屁理屈でねばって「ほら水掛け論だ」って、自分にも一分くらいは理があるような
口ぶりはできるかもしれんけど。

260:デフォルトの名無しさん
09/09/28 21:02:44
お前らスレタイ

261:デフォルトの名無しさん
09/09/28 21:53:27
List<class>の値をDataGridViewに表示させてるんですけど
classのプロパティの値をコードから変更したら
すぐにDataGridViewにも変更された値を表示させたいんですが、
今のところ dataGridView1.Refresh(); で表示させてるんですが
一般的にはどうやるんですか?
もっとスマートなやり方があると思うんですが


List<Test> testList = new List<Test>();

class Test
{
public string s1 { get; set; }
public string s2 { get; set; }
}

private void Form1_Load(object sender, EventArgs e)
{
testList.Add(new Test { s1 = "a", s2 = "b" });
testList.Add(new Test { s1 = "c", s2 = "d" });
testList.Add(new Test { s1 = "e", s2 = "f" });

dataGridView1.DataSource = testList;
}

private void button1_Click(object sender, EventArgs e)
{
testList[0].s1 = textBox1.Text;
dataGridView1.Refresh();
}

262:デフォルトの名無しさん
09/09/28 22:03:18
INotifyPropertyChanged
BindingList or ObservableCollection

263:デフォルトの名無しさん
09/09/28 22:19:30
>>262
おぉそんなものがあったのか!
ありがとうございます。調べてみます

264:デフォルトの名無しさん
09/09/28 23:47:18
>>252
例外フィルタがないぜ!!


265:デフォルトの名無しさん
09/09/29 00:04:31
>>262
261じゃないがthx

public partial class Form1 : Form
{
class Test : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public void NotifyPropertyChanged(string info)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
private string s1_;

public string s1
{
get
{
return this.s1_;
}
set
{
if (value != this.s1_)
{
this.s1_ = value;
NotifyPropertyChanged("s1");
}
}
}
public string s2 { get; set; }
}

266:デフォルトの名無しさん
09/09/29 00:05:13

List<Test> testList_ = new List<Test>();

public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
testList_[0].s1 = "ababa";

}
private void Form1_Load(object sender, EventArgs e)
{
testList_.Add(new Test { s1 = "a", s2 = "b" });
testList_.Add(new Test { s1 = "c", s2 = "d" });

var customersBindingSource = new BindingSource();
customersBindingSource.DataSource = testList_;
dataGridView1.DataSource = customersBindingSource;
}
}

267:デフォルトの名無しさん
09/09/29 00:25:20
windows movile ソフトウェアを作ってみてためしにcabファイルにしてみたんですが、
インストールに失敗します。
作成環境はVS2005です。
cabで失敗するunicodeは修正しました。

実機にcabを入れてタップすると「インストールに失敗しました」とだけ出ます。
こういう場合どうやって原因を確かめたらいんでしょうか?

268:デフォルトの名無しさん
09/09/29 00:43:47
すぺるみす

269:267
09/09/29 13:57:50
解決しました

ほんとにスペルミスでした

ミスしたのはcabプロジェクト名
本家プロジェクトに上書きしてしまいました orz

270:デフォルトの名無しさん
09/09/29 14:06:38
>>268はエスパーなのか、本当に良くあるミスなのか

271:267
09/09/29 14:13:12
本家プログラムと同じcabファイル名にしようと思うと起こりうることかも知れません

でも相当うっかりしてないとやらないと思います orz

272:デフォルトの名無しさん
09/09/29 15:09:51
movileのことかと思ったわ

273:デフォルトの名無しさん
09/09/29 17:30:16
invokeなんとか、とか、なんとかinvoke とか
たんなる invoke とかいろいろあるんですけど
全部delegateってことですか?

274:デフォルトの名無しさん
09/09/29 18:22:08
invoke自体はただの英単語
何を指すかはメソッド次第

275:デフォルトの名無しさん
09/09/29 20:27:13
各コントロール、フォームなどのフォントサイズを一括して変更する方法はないでしょうか?

276:デフォルトの名無しさん
09/09/29 20:42:53
>>275
君は質問の仕方から勉強する必要がありそう

277:デフォルトの名無しさん
09/09/29 20:53:44
>>275
方法1.フォントサイズを変更するコントロールすべてを一括選択した後にプロパティウィンドウでフォントサイズを変更する。
方法2.フォントなどはアンビエントプロパティなので、特に設定されていない場合(デフォルトの値)は親のコントロール(フォーム)の設定が反映されるようになっているので
     親コントロール(フォーム)のフォントサイズを変更すれば子コントロールにも反映される

278:デフォルトの名無しさん
09/09/29 20:59:59
>>277
「フォントサイズ」なんて概念はそもそも存在しない。
その回答はない。

279:デフォルトの名無しさん
09/09/29 21:02:16
↑君のレスは無用

280:デフォルトの名無しさん
09/09/29 21:13:18
>>279
馬鹿はすぐこれだ。
ならフォントサイズってどういう意味だよ。

281:デフォルトの名無しさん
09/09/29 21:15:21
>>280
フォントのサイズ

282:デフォルトの名無しさん
09/09/29 21:20:44
>>280
URLリンク(msdn.microsoft.com)
これ以外になにが?

283:デフォルトの名無しさん
09/09/29 21:33:16
他人をバカ呼ばわり → 逃亡

284:デフォルトの名無しさん
09/09/29 21:34:13
(・∀・)クスクス

285:デフォルトの名無しさん
09/09/29 21:41:53
>>282
お馬鹿だな。
それで、その「フォントサイズ」を>>277の方法でコントロールに適用できるのかよ。


286:デフォルトの名無しさん
09/09/29 21:45:29
「それじゃできない」とかいらないよ。
「こうやったらできる」って言えばいいだけ。

俺としては、方法2 で十分だと思う。

287:デフォルトの名無しさん
09/09/29 21:48:48
>>286
それは「フォント」を設定しているのであって
「フォントサイズ」(そんな概念は存在しないが)を設定しているのではないだろう。

端的に言えば、コントロールごとに書体が違う場合はどうするのか。

288:デフォルトの名無しさん
09/09/29 21:51:49
>>287
とりあえずお前はスレタイ読んで風呂でも入って落ち着けよ、な?
あと、初心者スレに向いてないよ

289:デフォルトの名無しさん
09/09/29 21:54:26
>>288
俺の方から煽った覚えは無いけどね。
初心者だろうがなんだろうが、正しくないことは正しくないといってるだけだ。

このように、馬鹿ってのは決まって偉そうに人に講釈をする規範を
自分には適用しないダブスタ野郎だ。

290:デフォルトの名無しさん
09/09/29 21:54:32
>>273
一般的にはメンバやデリゲートを呼び出すことをinvokeという
純粋に言語としてのC#に話を限ると,メソッドやデリゲートを表す式の後(引数)を付けた式のことをinvocation expressionと呼ぶ

291:デフォルトの名無しさん
09/09/29 21:55:33
フォントサイズの概念から議論しようか

292:デフォルトの名無しさん
09/09/29 22:10:37
>>289
さっさと失せろゴミ


293:デフォルトの名無しさん
09/09/29 22:11:31
>>289
認知症か
なるほど


294:デフォルトの名無しさん
09/09/29 22:15:02
eventの存在意義がわからない
delegateで十分な気が

295:デフォルトの名無しさん
09/09/29 22:18:35
イベントはデリゲートのためのプロパティみたいなもの。
Javaなどではよくイベントの代わりにObserverパターンというのが使われるんだけど,
それに出てくるaddListenerやremoveListenerを一つにまとめたのがイベント。
その点ではgetValue/setValueを一つにまとめたプロパティと似てる。
Observerについてはググれ

296:デフォルトの名無しさん
09/09/29 22:19:00
eventって、複数登録できるんだよな?

297:デフォルトの名無しさん
09/09/29 22:20:17
イベントは複数登録できる
デリゲートは1個だけ

298:デフォルトの名無しさん
09/09/29 22:22:53
マルチキャストといって,デリゲートも呼び出し対象を複数登録できる
本来,イベントがあればaddとremoveの実装次第でどうとでもなるからマルチキャストはいらないんだが
設計当時はイベント以外のデリゲートの使用が想定されてなかったと思われる

299:デフォルトの名無しさん
09/09/29 22:45:35
>>298
さすがに最後の行はない。そういうデタラメを言っては行かん。
例えばRegex.Replaceを見よ。

300:デフォルトの名無しさん
09/09/29 22:53:20
最後の行は言いすぎだけど今みたいにデリゲートをガンガン使うような状況は絶対に想定されてなかった
最適化しづらいだろうし戻り値の扱いとか無理があるし邪魔なだけ

301:デフォルトの名無しさん
09/09/29 22:56:28
delagteもなんで
DelegateクラスとMulticastDelegateがあるんだよう

はじめからDelegateクラスをマルチキャスト可能にしとけよ

302:デフォルトの名無しさん
09/09/29 23:09:52
private List<EventHandler> _ClickA;
public event ClickA { add { _ClickA.Add(value); } remove { _ClickA.Remove(value); } }

private EventHandler _ClickB;
public event ClickB { add { _ClickB = Delegate.Combine(_ClickB, value); } remove { 略

ClickAのようにするのがイベントの概念としては本来の形。
でも通常,addやremoveを省略して普通にイベントを宣言するとコンパイラはClickBのようなコードを生成する。
つまり「どうせデリゲートなんてほとんどイベントにしか使わないでしょ?」ってことでコンテナをくっつけてる。

303:267
09/09/29 23:23:16
えーとデータから作成した画像がピクチャボックスに貼ってあって
それが(10,10)動いたときもとの画像をずらして
上10ピクセルと左10ピクセルだけ描画したいんですが

for文を2重にして
for(x=0;x<=10;x++)
{
for(y=0;y<=10;y++)
{
}
}

ってやると当然10×10ピクセルしか描画しません
上記のように描画したいとき
また移動量(x,y)が逆に動いてマイナスのときにも対応できる
簡単なアルゴリズムはありませんでしょうか?

ちなみにCGのように描画が必要なのでマスクは使えません

ヒントかリンクだけでもけっこうです
よろしくお願いします

304:275
09/09/29 23:24:07
片付いたので見にきたら少し賑やかになってるw

概念はわかるけどemSizeのemはなに?


305:デフォルトの名無しさん
09/09/29 23:25:25
どうでもいいが0~10の、11回処理してないかい?それ

306:267
09/09/29 23:26:49
あうw

307:デフォルトの名無しさん
09/09/29 23:29:32
何がしたいのかサッパリ

308:デフォルトの名無しさん
09/09/29 23:40:12
x < 10 または y < 10 の領域を描画したいんだろ

309:267
09/09/29 23:45:12
>>308
あ!そうか!そういうことです!

なんかヒントになりました!

ありがとうございました!

310:デフォルトの名無しさん
09/09/29 23:46:00
あらかじめ敵のXY座標を設定しておいて
それらをプログラム全体から利用したいんだけど
どこでどのように定義するのが適切なんでしょうか?

名前空間の内側、classの外側で定義すれば全体から利用できると思ったんだけど
下のを書き込むとフィールドやメソッドは定義できないとエラーがでます

Point TekiPos = new Point(10, 5);

311:デフォルトの名無しさん
09/09/29 23:47:57
Teki.Posとは絶対に書きたくないの?

312:デフォルトの名無しさん
09/09/29 23:48:02
>>310
public staticにしてクラス内にもて。
困ったときはpublic staticだ。

313:デフォルトの名無しさん
09/09/29 23:56:09
まあゲームなんか難しく考えずpublic static(いわゆるグローバル変数)でもいいよ
ゲームは気を使って設計してもどうせ大なり小なり大域コンテキストクラスが出てくる

314:デフォルトの名無しさん
09/09/29 23:56:09
>>311
あ、なるほど、Tekiクラスをプログラム全体で利用できるようにして
そのメンバPosに対してどこかでデータいれるってことかな

>>312
インスタンスを複数必要ないというか、あるとややこしくなるので
staticのほうがわかりやすそうですね

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

315:デフォルトの名無しさん
09/09/29 23:59:48
>>314
ゲームって作ったこと無いんだけど
Enemyクラスかなんか作っといて、必要になったらnew Enemy()で
初期化してやった方がスマートなんじゃないの?

316:デフォルトの名無しさん
09/09/30 00:04:29
敵が一体だからグローバル変数にするならまだいいけど,
敵が複数いて,ほかのクラスから特定の敵の座標を取得するためにいったんグローバル変数に入れたりするのは最悪のパターン

317:デフォルトの名無しさん
09/09/30 00:23:04
どんなゲームだろうねえ

318:デフォルトの名無しさん
09/09/30 00:25:45
敵がいて初心者が作るものったらSTG以外に無いだろ

319:デフォルトの名無しさん
09/09/30 00:40:24
>>313
ありがとうございます。
最初からメモリや動作速度とか考えても仕方が無いですね
できるだけ自分にわかりやすく書こうと思います

>>315
敵と味方では振る舞いが違うからそういう風にしたほうがいいかもですね

>>316
そういう感じで設計仕様と思ってたんですが、なぜだめなんでしょうか?
将棋でいうところの盤をstaticで定義してどこからで参照できるようにして
部隊の動き(どの座標に前進後退するかなど)もstaticで定義しようと思っていたんですが

>>317>>318
シューティングは線形代数や三角関数などの数学的知識がいるので無学のわたしには無理です
ターン制の戦略ゲーム的なものを作ろうと思ってます

320:デフォルトの名無しさん
09/09/30 01:02:15
class Matrix{} //フィールド全体とマス目を定義
class Enemy{} //敵のキャラクターを定義

この二つを作っておいてMatrixにEnemyのインスタンスを突っ込むとか
位置はEnemy、移動先はMatrixで定義しておいたほうが安全だと思う
グローバル変数をたくさん作ったり使い回し足りするのはトラブルの元

321:デフォルトの名無しさん
09/09/30 01:09:03
逆だな
位置はMatrix、移動先はEnemy

322:デフォルトの名無しさん
09/09/30 01:10:55
グローバル変数が使いたい時はstaticって何で入門書に書くんだろ
最初が肝心なんだぞ
書くなよ

323:デフォルトの名無しさん
09/09/30 01:14:50
なるほど、グローバル変数を大量に作ってしまうのはそもそも設計に問題ありって感じですか
クラスの中にも自作クラスを入れられて、さらにそのクラスにも自作クラスを・・・
これがオブジェクト指向?
この感覚に慣れないとだめですね

>>321
マス目にenemyを放り込む感じですよね
そのほうがわかりやすそうですね

ありがとうございます

324:デフォルトの名無しさん
09/09/30 01:25:04
動きゃいいんだよ
未完成で放置するのが一番良くない

325:デフォルトの名無しさん
09/09/30 01:32:11
そんなことはないよ
静的変数使い回しなんてしてたら論理的なミスしたときに
わけわかめになりやすい
最初からオブジェクト指向のお作法を意識するのは上達の近道だよと
遠回りした俺が言ってみる久々のてすつ

326:デフォルトの名無しさん
09/09/30 01:35:24
多言語から移った人間を意識してるんだろうけど要らない説明ではある気がする

327:デフォルトの名無しさん
09/09/30 02:44:03
DataTable内に「name」という列を設けてその中に色々な名前を定義しています。

SEQ NAME
連番 名前
1  たろう
2  タロウ
3  TAROU

DataTable.Select("NAME LIKE '%たろう%'");

として検索した時に本来は
1  たろう
のDataRowのみ抽出したいのですが
2  タロウ
まで抽出されてしまいます。厳密に検索をするにはどうすればよいでしょうか?
※また、大文字・小文字も区別して検索するにはどうすれば良いでしょうか?   


328:デフォルトの名無しさん
09/09/30 06:09:00
>>327
CaseSensitiveプロパティをtrueにしてからSelectしる

329:デフォルトの名無しさん
09/09/30 07:50:56
>>302
どういう理屈だよ


330:デフォルトの名無しさん
09/09/30 08:54:11
>>328
サンクス

331:デフォルトの名無しさん
09/09/30 10:50:45
CSとKS,WSは別じゃないの?
プロパティ一覧見た限りだと、ロケールをインバリアントにすれば良さそう

332:デフォルトの名無しさん
09/09/30 12:43:45
vs2008でWindowsフォームアプリケーションを作成しました。
インストーラーを発行して、配布しようとしましたが、.netフレームワーク3.5のダウンロードに30分近く要します。
コンポーネントはクライアントプロファイルのみにしています。
皆さんはどのような手段でインストール方法を取られていますか?

333:デフォルトの名無しさん
09/09/30 15:57:29
URLリンク(www.microsoft.com)
の.NET Framework 3.5 Service Pack 1 (フルパッケージ) をDLしてインストーラに組み込んじゃいかんの?(いかんか)
#再頒布可能パッケージ があればいいんだけどね・・・・
#Microsoft .NET Framework 3.0 再頒布可能パッケージ まではあるのか・・・

334:デフォルトの名無しさん
09/09/30 16:05:09
クライアント専用Frameworkサブセットってとこチェックしても30分もかかるもんなの?
やったことないけど

335:デフォルトの名無しさん
09/09/30 16:25:46
Client Profile v3.5がインストールされる条件が変で、
バージョンを問わずフルセットの.NET Frameworkがインストールされていないこと。
条件が合わない場合は差分をダウンロードしてフルセットでのインストールとなる。
プレインストールのXPやVista以降の場合、基本的に.NETが導入済みなので、
よほど特殊な環境でなければClient Profileは導入されない。

336:デフォルトの名無しさん
09/09/30 20:44:06
>>335
XPにも標準で.netがついているの?
何かのネットで見たら、付いていないと書いていたんだ。
記事はまちがいだったのかな。

337:デフォルトの名無しさん
09/09/30 20:48:56
「プリインストールの」だろ
相当前に使ってたノートPCにもデフォで1.1が入ってたぜ

338:デフォルトの名無しさん
09/09/30 20:50:09
XP はないよ。
2003 が 1.1、Vista が 3.0 だね。

339:デフォルトの名無しさん
09/09/30 20:51:48
でも、今時.net入ってない環境ってどうよ

340:デフォルトの名無しさん
09/09/30 21:04:00
.netが出だした当初って誰も入れたがらなかったけど
.NETを使ったフリーソフトも出だして当たり前になってきたね

341:デフォルトの名無しさん
09/09/30 21:04:56
2.0は入ってるものと考えていいと思うけど3.5はまだきつい

342:デフォルトの名無しさん
09/09/30 21:07:40
まぁでも、2.0 が入ってれば、勝手に 3.5 が Windows Update で入るんだけどな。

343:デフォルトの名無しさん
09/09/30 21:07:59
1.0が入ってないとダメっつーインストーラーは勘弁して欲しいw

344:デフォルトの名無しさん
09/09/30 21:32:02
1.x が必要なアプリは使いたくない

345:デフォルトの名無しさん
09/09/30 21:44:28
2.0とか3.5の入ってる環境なら1.x必須なのも動くんじゃないの?

346:デフォルトの名無しさん
09/09/30 21:47:32
たいていは 2.0 で動くと思うけど、サポート対象にはしたくない。

347:デフォルトの名無しさん
09/09/30 21:48:34
最近コンポーネントエラーって起きたことないな

348:デフォルトの名無しさん
09/09/30 22:18:05
長くなるけど質問お願い
暗号化を作っていて、ボタンのイベントに処理を書くのではなくて
クラスに処理入れて、それをボタン押したときに呼び出すようにするには
どうしたらいいのでしょうか
お力おかしください

public partial class Form1 : Form
{
//バイト配列で変数を宣言
public byte[] DesKey;
public byte[] DesIV;e,
public byte[] cryptData;


public Form1()
{
InitializeComponent();
RC2CryptoServiceProvider TDES = new RC2CryptoServiceProvider();
//TripleDESCryptoServiceProvider TDES = new TripleDESCryptoServiceProvider();
DesKey = TDES.Key;
DesIV = TDES.IV;
}

//暗号化ボタンを押したときの処理
private void button1_Click(object sender, System.EventArgs e)
{
// source 配列から cryptData 配列へ変換
// 文字列を byte 配列に変換します
byte[] source = Encoding.Unicode.GetBytes(genbun.Text);



349:デフォルトの名無しさん
09/09/30 22:18:58
上に続きですよろしくおねがいします
// Triple DES のサービス プロバイダを生成します
TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();

// 入出力用のストリームを生成します
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(DesKey, DesIV),
CryptoStreamMode.Write);

// ストリームに暗号化するデータを書き込みます
cs.Write(source, 0, source.Length);
cs.Close();

// 暗号化されたデータを byte 配列で取得します
cryptData = ms.ToArray();
ms.Close();

// byte 配列を文字列に変換して表示します
angougo.Text = Encoding.Unicode.GetString(cryptData);

}

350:デフォルトの名無しさん
09/09/30 22:19:53
>>334
クライアント専用サブセットってどこで設定するの?

351:デフォルトの名無しさん
09/09/30 22:22:59
暗号化とかまったく関係ないな。

352:デフォルトの名無しさん
09/09/30 22:23:59
>>350
プロジェクトのプロパティ

353:デフォルトの名無しさん
09/09/30 22:26:42
>>348
どう、ってインスタンスメソッドにするならボタンクリックでクラスを初期化して
メソッド呼び出せばいいのでは?
staticメンバ一個作っておいてそこにインスタンスぶち込んでstaticぽく呼んでもいいけど

354:デフォルトの名無しさん
09/09/30 22:26:49
>>349
public partial … → public class Encryption
public Form1() → public Encryption()
private void button1_Click(… → public byte[] Encrypt(string sourceText)
byte[] source = … → byte[] source = Encoding.Unicode.GetBytes(sourceText);
angougo.Text = Encoding.Unicode.GetString(cryptData); → return Encoding.Unicode.GetString(cryptData);

355:デフォルトの名無しさん
09/09/30 22:27:35
>>354
訂正
private void button1_Click(… → public string Encrypt(string sourceText)

356:デフォルトの名無しさん
09/09/30 22:34:18
>>348
Class Angouka
{
  publick void Start(){....};
}

Class From
{
  Button_Click()
  {
    Angouka ang=new Angouka();
    ang.Start();
  }
}

357:デフォルトの名無しさん
09/09/30 22:58:49
初心者で考え方がいまいちで申し訳ないです。

クラスを作り
その中に今まで入れていたボタン処理を入れて

そのクラスをボタンイベントに生成して
呼び出せばおkと言う感じ?


358:デフォルトの名無しさん
09/09/30 23:03:13
うん。

359:デフォルトの名無しさん
09/09/30 23:22:12
ボタンが押された時の処理を別のクラスに書くんじゃない
その目的の処理を行うクラスを作って,そのクラスをイベントハンドラから利用するんだ
機械的に移すだけだとあんまり意味がない

360:デフォルトの名無しさん
09/09/30 23:33:12
クラスわけは責務をわけるのと同等

361:デフォルトの名無しさん
09/09/30 23:33:57
こういう違いって理解できない人にはなかなか理解してもらえなかったりするな…


362:デフォルトの名無しさん
09/09/30 23:35:53
どうでもいいけどいやよくないけど
暗号化結果のバイト列をUnicodeEncodingで文字列にするのは無茶だぜ。

まあ諸悪の根源はv1.1の頃のMSのサンプルだったりするんだが。


363:デフォルトの名無しさん
09/09/30 23:38:17
一応そのほかにも使う可能性というか応用で使うので

ひとつのクラスに処理をいておきたいと思っています。
ACIIでやろうと思ってたんですがどうもうまくできなかったので今
それです。これは直したいなと思っております

364:デフォルトの名無しさん
09/09/30 23:41:34
>>352
よく見たらありました。
ボケてきたのかな…。ありがとう。

365:デフォルトの名無しさん
09/09/30 23:48:48
会社とか組織をイメージしてみるといいかも。
実際に仕事やる部署と、注文受ける部署、商品配達する部署・・・・・。
食堂で言うなら厨房と接客・電話番、出前とか。
それぞれは、自分の仕事だけして、あとはどっかに受け渡すだけで
良いようになってる。
下手な部署分けすると役所みたいにたらい回しになって困るが。

バイト列の文字列化ならBase64じゃない?昔から用意されてるし。

366:デフォルトの名無しさん
09/09/30 23:52:02
とか思ってみたらBase64変換クラスがぱっと見で見つからん。あれ?
Javaだったのかな?

367:デフォルトの名無しさん
09/09/30 23:55:31
System.Convert.ToBase64String(byte[])

368:デフォルトの名無しさん
09/09/30 23:57:33
Convert.ToBase64

369:デフォルトの名無しさん
09/10/01 00:11:50
キーボードのキーを押してプログラミングするわけだが
キー自体がプログラミングを理解しているわけじゃないよね
あくまで、文字を入力させる命令を出すためのスイッチに過ぎない

役割分担をさせていくわけだけど、その分クラスはどんどん増える
だがそれでいい

370:デフォルトの名無しさん
09/10/01 00:15:42
オブジェクト指向の話になると現実世界の事象を例えにだすのをよく見るけど、
その例えってそんなにわかりやすいもんなのかな。
むしろそこからどうやってコードに落とすのかと悩むことしきりなんじゃないか。

371:デフォルトの名無しさん
09/10/01 00:21:32
もちろんそうだけど、オブジェクト指向の入り口で躓いているんだから仕方が無い

372:デフォルトの名無しさん
09/10/01 00:44:44
まず、構造化プログラミング・設計を学ぶところから・・・。

373:デフォルトの名無しさん
09/10/01 01:17:57
>>370
わかってる人が例えるからそうなるんだよな。
わからない人向けの説明には向かないと思う。

374:デフォルトの名無しさん
09/10/01 01:31:02
かと言ってわかってない人は向いてる向いてない以前に例えられないから。


375:デフォルトの名無しさん
09/10/01 01:39:15
そこをいくとオブジェクト指向のこころは最高だと思う。

376:デフォルトの名無しさん
09/10/01 02:37:13
憂鬱な

377:デフォルトの名無しさん
09/10/01 03:09:44
貝になりたい

378:デフォルトの名無しさん
09/10/01 03:13:33
引きこもりは家をでないのでスペックがさっぱりわからない
やり取りできる手段は、スカイプやネトゲしかない
でも、こっちの情報をいくら伝えてもスペックを晒そうとはしない
オブジェクト指向ってそんな奴

379:デフォルトの名無しさん
09/10/01 07:21:42
良くも悪くも勘違いされる不幸な子ってイメージだけどな。
きちんと理解してあげれば戦力になるが、間違った認識や過度の期待を持たれるとプレッシャーに負ける人みたいな?

380:デフォルトの名無しさん
09/10/01 08:32:43
お前らスレタイ

381:デフォルトの名無しさん
09/10/01 12:58:49
使ってればわかる
結局はノウハウを一般化しただけのもの

382:デフォルトの名無しさん
09/10/01 14:54:21
自作ソフトのソースを公開しようと思うんですが
プロジェクトファイルなどにPCユーザー名など
固有の情報みたいなのが入っていて見られてしまうんでしょうか?
ソースを公開する上での注意点などありましたら教えてください

383:デフォルトの名無しさん
09/10/01 15:03:39
ユーザ名を短くて無意味な英文字にしておく
.csだけ公開する

384:デフォルトの名無しさん
09/10/01 16:36:09
>>383
いや、さすがに.slnと.csprojくらいは付けようよ。
逆に.csproj.userとか.suoは除外。

385:デフォルトの名無しさん
09/10/01 16:38:41
VC#?

386:デフォルトの名無しさん
09/10/01 17:06:33
binフォルダは削除
slnとcsprojは付いてないと読む気が失せる

387:デフォルトの名無しさん
09/10/01 17:10:33
プロジェクト一つならslnはいらないんじゃ…

388:デフォルトの名無しさん
09/10/01 17:22:34
slnないと保存できないからめどい

389:デフォルトの名無しさん
09/10/01 17:38:30
>>388
プロジェクトのみでも一度保存すればソリューション作成されるよ

390:デフォルトの名無しさん
09/10/01 18:59:34
C#初めてはや1.5ヶ月

いまだにクラス呼び出しとかが曖昧
配列わからん。

プログラム自体初心者ですがこれはかなり遅いほうですよね?
最近は分岐がわかりだしてきたところです

391:デフォルトの名無しさん
09/10/01 19:06:18
俺も、1.7ヶ月ぐらいだけど
オブジェクト思考はよくわからんけど
配列とか、クラス呼び出しぐらいなら一応・・・

まぁ、以前Cとjavaをおさわり程度にやった事有るけど

392:デフォルトの名無しさん
09/10/01 19:16:07
C#はじめて7年
クラス呼び出しなんて初めて聞いた

393:デフォルトの名無しさん
09/10/01 19:22:12
小学生初めてはや5年
職員室呼び出し喰らったのは今年が初めてだ

394:デフォルトの名無しさん
09/10/01 19:57:11
お前らスレタイ

395:デフォルトの名無しさん
09/10/01 20:07:10
あぁ、悪い
クラス定義してメソッド呼び出しとか

これでいい?これも違うのかなw

396:デフォルトの名無しさん
09/10/01 20:11:11
DESCryptoServiceProviderの複合化はパスワードが違う場合、絶対にエラーを吐きますか?
それとも適当に復号したデータを返す時がありますか?

397:デフォルトの名無しさん
09/10/01 20:36:51
>>390
1日にやる量にもよるし、いろいろだろ。
他人にかまわず自分のペースで楽しみなよ。

398:デフォルトの名無しさん
09/10/01 20:58:44
なんだかんだで仕事でつかうと習得が早い

399:デフォルトの名無しさん
09/10/01 20:59:28
俺なんか2年目でやっとデリゲートを唱えることが出来た

400:デフォルトの名無しさん
09/10/01 21:28:48
仕事で必要で学んでいるんですが

やはり全然覚えが悪いのでまじで仕事自体を辞めるべきなのか本当に迷ってる
ものすごく申し訳ない気持ちと焦りでぐだぐだ・・・

401:デフォルトの名無しさん
09/10/01 21:34:36
>>396
原理的には適当に復号化。でないとTripleDESが不可能のはずだから。

テストコードとかで確認もしなかったけど、適当に復号化するだろうと決め込んで、
めんどくさくなって平文にヘッダとトレイラを入れといて復号時にパスワードチェック
とした。

パスワードじゃなくてIVとKeyだろ、なんて無粋なツッコミはナシね。

402:デフォルトの名無しさん
09/10/01 21:41:18
>>400
できなければ辞めるか仕事をかえてくれと言ったほうがいい
ムリなひとはどうやってもムリ

403:デフォルトの名無しさん
09/10/01 22:03:47
>>400
記憶力はあるに越したことはないけど、プログラマとしてそんなに重要な
ファクターじゃないと思うよ。

重要なのは理解力と要領だよ。
どのみち、今時のライブラリが全部頭に入っている奴なんていないわけで、
誰でも多かれ少なかれMSDNやwebの情報を見ながらコーディングしてるんだから。

404:デフォルトの名無しさん
09/10/01 22:13:33
俺なんていまだに@ITの「C# 3.0らしいコードの書き方」とか見て頭混乱してる

405:デフォルトの名無しさん
09/10/01 22:16:50
よくさ、そういう解説サイトで学校クラス学生なんて例を出すけどわけわからんよな
誰が学生名簿なんて作るんだよとww
そこそこの規模のソフトを例にプログラミングしながら学ぶようなのがあればいいんだけど

406:デフォルトの名無しさん
09/10/01 22:25:38
参考書は本当に難しいと思う
C#だけでもリファレンス、デザインパターン、入門と3冊持ってるけど
それでも補完できない部分が独学だと必ず出てくる
クラスとかオブジェクトの理解が進まないうちに実践に入るような参考書掴むと
後から本当に苦労する

407:デフォルトの名無しさん
09/10/01 22:26:44
犬クラス
ポチ、パトラッシユ、しろオブジェクト

408:デフォルトの名無しさん
09/10/01 22:27:09
>>404
あれは書いてあるコードが理解できれば十分
記事の内容を真に受けてはいけない

409:デフォルトの名無しさん
09/10/01 22:34:42
K俣か

410:デフォルトの名無しさん
09/10/01 22:38:44
>>400
やめるなら俺を代わりに雇うよう取り計らってくれ


411:デフォルトの名無しさん
09/10/01 22:40:02
むしろ川俣節は、このアジテーションは過大なのかそれぐ
らい言い切ってしまってもいいのかのこう微妙な感じが
個々に判断できるようになると上級者。

…味があって好きなんだけどなぁ川俣節

412:デフォルトの名無しさん
09/10/01 22:49:50
URLリンク(www.r-nakai.com)
ここ見ながらVC#2008Expressで使えるように設定したんだけど、
ぜんぜんステップインしてくれない。もちろんソースコードはDL済みなんだけど。
Expressで使えてる人いる?

413:デフォルトの名無しさん
09/10/01 22:53:47
>404 >408
おれもあの記事かなりわかりにくかった…(´・ω・`)

414:デフォルトの名無しさん
09/10/01 22:58:58
>>411
あれは文体が古い(30年前のパソコン雑誌っぽいw)だけで、アジってほどでもないよ。
まあ今時のプログラマの書く技術解説の文章っぽくないのは確か。

たぶん物書きに憧れがあるっていうか、自己表現しないと気がすまない性格なんだろうw

この人の『Win32API散歩道』って本を持ってるけど、あれ見るといかにもそんな感じ。

415:デフォルトの名無しさん
09/10/01 22:59:19
ちらっと見てみたけど、能書きが多いな。

416:デフォルトの名無しさん
09/10/01 23:00:59
>>414
散歩道のきたあきらって、川俣の別名?

417:デフォルトの名無しさん
09/10/01 23:04:56
>>414
らしいよ。
きたみあきこは別人

418:デフォルトの名無しさん
09/10/01 23:16:25
>>356
できなかったですそれ

419:デフォルトの名無しさん
09/10/01 23:23:41
>>418
>>356を参考にして、どんなコード書いたの?



420:デフォルトの名無しさん
09/10/01 23:34:30
質問です
初心者です

namespace WindowsFormsApplication1
{★
  public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{

}
}
}
とあってclassを★のところに記述するとなぜかフォーム表示が
出来なくなるのですが同対処すべきなのでしょうか

421:デフォルトの名無しさん
09/10/01 23:40:27
そんなところに書かない
1クラス1ファイルを基本にする

422:デフォルトの名無しさん
09/10/01 23:42:38
>>421
1ファイルとはどういうことでしょうか
大変申し訳ないです。

今はクラスとメソッドを外出しにしておいてボタン処理を押したときに
その処理を参照しようとしています

423:デフォルトの名無しさん
09/10/01 23:42:57
>>420
ひ、ひねくれもの!

424:デフォルトの名無しさん
09/10/01 23:43:06
そんなこと聞いてねーよw
おせっかいさんめ

425:デフォルトの名無しさん
09/10/01 23:46:47
>>422
なんだ暗号化君かw

URLリンク(msdn.microsoft.com)

ここ読みなさいよ

426:デフォルトの名無しさん
09/10/01 23:49:04
>>425
はい、私です。
今日作ってよし出来たと思ったら

内部でクラス作らないで外部で作ってと言われて
あたふたしています。


427:デフォルトの名無しさん
09/10/01 23:49:34
>>420
> このページが表示されている理由
> クラス MainForm はデザインできますが、ファイルの最初のクラスではありません。
>Visual Studio では、デザイナはファイルの最初のクラスを使用する必要があります。
>クラスがファイルの最初のクラスになるようにクラス コードを移動して、デザイナを再度読み込んでください。


やってみたけど、理由も対処方法も表示されるじゃん。



428:デフォルトの名無しさん
09/10/01 23:53:55
外部に作ると言うのは
FORMの外部に作ってそこから呼び出すってわけじゃないんですね・・・

From1の下に作ったら表示されました。
勉強たらなすぎてしにたい

429:デフォルトの名無しさん
09/10/01 23:57:55
>>428
86BASICから引越しされてきたのですか?

430:デフォルトの名無しさん
09/10/02 00:08:17
>>428
いや、そのクラスを使うときに必ずForm1がセットになってしまったら使い辛くは
ないかい?例えば別のアプリで使い回しするとき。
だから、別々の .cs ファイルで管理することを皆は薦めている。

まあ、とりあえず動くなら今は別に気にすんな。

どうせ色々使い回しでコピーしたあげく、嫌になって分かってくるもんだから。

431:デフォルトの名無しさん
09/10/02 00:08:55
エラー見てもちんぷんかんぷんなことが多い

まじで今年やってだめなら辞表考えるわほんとに。

432:デフォルトの名無しさん
09/10/02 00:27:57
>>430
ああああああ
なるほど、使いまわし出来るようにとか言ってたましたそういえば・・・
と言うことはcsを処理の分を作るのが外部と言うことなんですね。

理解度足りないですね
まじでありがとうございます。

433:デフォルトの名無しさん
09/10/02 00:54:30
>>396>>401
どうでもいいが、「復号化」ではないのでリアルで使うと恥じをかくことになると忠告しておこう

>>432
ファイルとクラスは1:1が基本ではあるが、分かり易くなるならM:Nでも問題ない

434:デフォルトの名無しさん
09/10/02 01:06:36
最初に手をつけるのがコレって厳しいのん?

435:デフォルトの名無しさん
09/10/02 01:13:54
かもね

436:デフォルトの名無しさん
09/10/02 01:21:21
やっぱりか……
サンクス

437:デフォルトの名無しさん
09/10/02 01:22:35
いやそういう問題じゃないと思うが。

438:デフォルトの名無しさん
09/10/02 01:24:16
>>431
向いてない奴がやると体壊すか鬱になるよ
そういう奴沢山見てきたし
おれは小学校の頃からプログラミングやってて
何時間やっても苦痛じゃないからな
まあ、仕事だとしんどいこともあるけど
息抜きのために自作ソフトを作るぐらいだからw
そういう人間じゃないとだめなんかもな

439:デフォルトの名無しさん
09/10/02 01:27:38
>>432
右のウィンドウにプロジェクト名が書いてあるでしょ?
それを右クリックして、追加>クラス
を選択すると幸せになるよ
ややこしくなってきたら、同じようにしてフォルダを作るんだ

440:デフォルトの名無しさん
09/10/02 01:36:08
>>433
>どうでもいいが、「復号化」ではないので
突っ込むべきはそこではない。

>原理的には適当に復号化。でないとTripleDESが不可能のはずだから。
これがおかしい。

暗号アルゴリズム単体の処理での動作と
パディング等も含めたスキーム全体の処理での動作を
混同している。


441:デフォルトの名無しさん
09/10/02 01:40:40
もういいから外注しろ

442:デフォルトの名無しさん
09/10/02 07:08:56
1ファイル1クラスは冗談だろ?
Javaかよw




冗談だよね?

443:デフォルトの名無しさん
09/10/02 07:32:14
だいたいの機能でファイル分けるけど
さすがに1クラス1ファイルは無いな(1つの機能が1つのクラスで済むならありうるけど)

444:デフォルトの名無しさん
09/10/02 07:32:45
1つのファイルにWindowsFormが2つ以上同居できないとか、
ファイル内の最初のクラスにするといった制限は
IDE(Visual Studio)の制限で、別に言語の制限じゃない。


445:デフォルトの名無しさん
09/10/02 07:41:42
enumやdelegateも型だから、
分けなきゃいかんのならこれも分けるの?てのもあるね。

javaの場合はpublicなenumはファイル分けなきゃいかんかった。
めちゃ不便。

446:デフォルトの名無しさん
09/10/02 11:41:54
関連性が極めて強い型、殆ど従属してると言って言いような型とか、
列挙やらデリゲートやらは流石にファイル分けたりはしないな。

ただ、大体基本的には1クラス1ファイルになると思うけどね。


447:デフォルトの名無しさん
09/10/02 14:28:27
パブリックなクラスが内部だけで使うプライベートなクラスとかなら
1ファイルに書いたりはする
規模にはよるけど

448:デフォルトの名無しさん
09/10/02 14:57:49
ジェネリッククラスも作る時は一緒のファイルに書いてるかな

449:デフォルトの名無しさん
09/10/02 15:28:30
まあ、その辺は好みだよな

450:デフォルトの名無しさん
09/10/02 17:26:45
子ウィンドウハンドルの取得が出来ません。
EnumWindowsはなんとか出来たので、それを元にやっているのですが
EnumChildWindowsの使い方が理解できてません。

private delegate int EnumerateChildWindowsCallback(IntPtr hwndParent, int lParam);

[DllImport("user32.dll")]
private static extern bool EnumChildWindows(IntPtr hwndParent, EnumerateChildWindowsCallback lpEnumFunc, int lParam);

public int EnumerateChildWindows(IntPtr hwndParent, IntPtr lpEnumFunc, IntPtr lParam)
{
 return 1;
}

public void main(IntPtr hWnd)
{
 EnumChildWindows(hWnd, new EnumerateChildWindowsCallback(EnumerateChildWindows), 0);
}

これで「デリゲート 'LTLimit.WindowHandle.EnumerateChildWindowsCallback' に一致する
    'EnumerateChildWindows' のオーバーロードはありません。」と出ます

451:デフォルトの名無しさん
09/10/02 17:34:18
EnumerateChildWindowsCallbackとEnumerateChildWindowsの引数が合ってないじゃん

452:デフォルトの名無しさん
09/10/02 18:10:51
>>451
レスありがとうございます!
ただ、引数に何を入れるのかが分かりません。

(IntPtr hwndParent, WNDENUMPROC lpEnumFunc, int lParam);
とか
(IntPtr hwndParent, IntPtr lpEnumFunc, int lParam);
など試してみたのですがダメでした。

453:デフォルトの名無しさん
09/10/02 18:28:33
>>451
APIの知識がないんだな
C#云々の問題じゃないし

454:デフォルトの名無しさん
09/10/02 18:36:20
>>452
ちゅーかどっからそんなソースをもってきたんだろう。
引数はIntPtr hWnd, int lParamの2つだけ。
引数名をhwndParentとしているが、ココには親のウィンドウハンドルが渡されるのではなく
列挙された子ウィンドウのウィンドウハンドルが渡される。

455:デフォルトの名無しさん
09/10/02 18:37:44
EnumChildWindowsの引数なんて言ってないんだが…

456:デフォルトの名無しさん
09/10/02 19:23:55
>>454
子ウィンドウを列挙するソースが見つからないので
試行錯誤しているところです。
引数名は何も気にせずコピーしてました。

>>455
なんだか的外れな事をしてしまったみたいですみません。
どこをどう直せば良かったのでしょうか。

457:デフォルトの名無しさん
09/10/02 19:25:58
C#のソースに拘らなくていいだろw

458:デフォルトの名無しさん
09/10/02 19:39:51
>>457
こだわってるんじゃなく、違う言語がまったく読めないのでC#に出来ないのです。


459:デフォルトの名無しさん
09/10/02 19:53:13
>>429
ぶー、88BASIC です。

460:デフォルトの名無しさん
09/10/02 19:56:41
>>442
非常識自慢?w

ネストされたクラスはカウントしないとして、
例外クラスとenum以外は基本ファイルあた1クラスでしょ。

あとは、まあ小さなクラスなら派生クラスも同じファイルに書いちゃうことはあるが。

461:デフォルトの名無しさん
09/10/02 20:06:12
いじわるしないで教えてやれよw

462:デフォルトの名無しさん
09/10/02 20:24:42
何かプログラムしようと思うんだけど何も思いつかない

463:デフォルトの名無しさん
09/10/02 20:42:39
教えてあげないよ

     _,∩_         _,∩_           _,∩_
    (_____)ゝ、     (_____)    y     (_____)
    / :: :: :: ヽ 〉     /-‐:: ::‐-ヽ /       / :: :: :: ヽ
   _./ (・ )ll(・ ) ∨     _/  0) i! 0) ∨      _/ ( ・)i!(・ ) ゙、_
 // :: :: ∈ゝ :: ::ヽ   // ::  ‐-‐ :: ヽ    //  :: ー一 :: ヽ\
. ゝ/:: :: ::  :: :: ::ヽ  ゝ/ :: ::  ::  :: :: ヽ   ゝ/ :: ::  ::  :: :: ヽく
   ̄ ̄ | ̄ ̄ | ̄ ̄     ̄ ̄ | ̄ ̄ | ̄ ̄     ̄ ̄ | ̄ ̄ | ̄ ̄
       |     |             |     |             |     |
    ⊂!     !つ        シ!     !つ        ⊂!     !つ

ジャン♪

464:デフォルトの名無しさん
09/10/02 20:46:36
>>458
だから、APIが読めなければC#にもできないだろw
基本は同じなんだからさ

こんにちはの意味がわかれば、HELLOをどのタイミングで言えばいいかわかるだろ?
それと一緒だ

465:デフォルトの名無しさん
09/10/02 21:07:18
下手な例えだなw


466:デフォルトの名無しさん
09/10/02 21:13:24
>>433
>「復号化」ではないのでリアルで使うと恥じをかくことになると忠告しておこう
DESCryptoServiceProvider.CreateDecryptor メソッド
指定したキー (Key) および初期化ベクタ (IV) を使用して、対称 DES (Data Encryption Standard) 復号化オブジェクトを作成します。

セキュリティ関係用語じゃなくてMicrosoft用語ですだ。

467:デフォルトの名無しさん
09/10/02 21:27:52
>>440
だから、原理的にはって言ってるじゃないか。
どう実装されてるか分からないから、適当に復号化するように実装されてないとは
言い切れない。
ドキュメント斜め読みしても見つからない。
一個かそこら試したとしても不安が残る。
時間は待ってくれない。

だからどっちに転んでも、まあ動くだろうって対応をした。って話。



ところで関係無いんだが、これ実はExcelVBAで利用したと言ったら信じる?

468:450
09/10/02 23:48:40
解決したっぽいです。
レスくれた方ありがとうございました。

private delegate int EnumerateChildWindowsCallback(IntPtr hWnd, int lParam);

[DllImport("user32.dll")]
private static extern bool EnumChildWindows(IntPtr hwndParent, EnumerateChildWindowsCallback lpEnumFunc, int lParam);

public int EnumerateChildWindows(IntPtr hWnd, int lParam)
{
 return 1;
}

public void main(IntPtr hWnd)
{
 EnumChildWindows(hWnd, new EnumerateChildWindowsCallback(EnumerateChildWindows), 0);
}

469:デフォルトの名無しさん
09/10/03 00:51:50
>>467
別に対応がおかしいとは言ってないよ。
実際復号されることもエラーになることもあるから。

>でないとTripleDESが不可能のはずだから。
これがおかしいと言ってるだけ。


470:デフォルトの名無しさん
09/10/03 01:43:39
タラオ「トリプルですぅ~」

471:デフォルトの名無しさん
09/10/03 03:51:23
>>460
安心したw
今書いているクラスは入れ子になっているものを数えたら30個にもなっててほんの少し焦った。
まぁ、チョロっと必要な定数叩き込むときは1ファイルに2つぐらい書いちゃうけど大丈夫だね。

472:デフォルトの名無しさん
09/10/03 07:07:02
>>469
TripleDESは、
暗号文 = 鍵3でDES暗号化(鍵2でDES復号化(鍵1でDES暗号化(平文)))
という仕様だから、DESはある鍵で暗号化したものを別の鍵で復号化できないと
実現不可能のはずだと考えたんだが、間違ってるのか?

473:デフォルトの名無しさん
09/10/03 08:21:22
しつけえ

474:デフォルトの名無しさん
09/10/03 08:29:56
いちおう書いておこう。

暗号アルゴリズム単体と、
~Providerとかを使っての処理は
「違う」って言ってる。

DESとか3DESとかの暗号アルゴリズム単体では
ブロックサイズのデータとキーを与えたらブロックサイズの結果を出す単なる関数。
だからキーが違おうが何だろうが処理できる。

でも~Providerとかを使っての処理は、暗号化のモードとかIVとかパディングを含めた処理
特にパディングがあるから、違うキーで処理したら処理自体に躓いてエラーになる場合が多い。


475:デフォルトの名無しさん
09/10/03 08:49:58
>>460
わざわざ「Javaかよw」って書いてるんだから
例外クラス・enum・数行しかないクラスであっても、例外なくファイルに分けなければいけない ってのを皮肉ってるんだと思った。

476:デフォルトの名無しさん
09/10/03 11:59:12
>>475
俺が無知なだけ・・・。
C#やってるけど今まで本なんて一回も読んだことないし、基礎知識なさすぎ。
最初なんてIfしらなかったせいでgotoで何もかもやってたこともあったしw
すっきりしました
ありがとb

477:デフォルトの名無しさん
09/10/03 12:02:44
本とか言う前に、マニュアル読めよ・・・。

478:デフォルトの名無しさん
09/10/03 12:14:29
いや、ホントの基礎はやっぱり何か入門本でやった方がいいよ。
まあチュートリアルとか、あとトレーニングとかオンラインで無料でできるやつもあるから
そんなのでもいいけど。
いきなりマニュアルはきついだろう。


479:デフォルトの名無しさん
09/10/03 12:21:42
まあそこらの家電製品や普通のアプリと違って
「第一章:Hello worldを表示しよう!」
なんてのはマニュアルにないからなw

480:デフォルトの名無しさん
09/10/03 12:54:14
URLリンク(msdn.microsoft.com)

> C# プログラマーズ リファレンス
> Hello World のチュートリアル
>
> このチュートリアルでは、C# 言語による Hello World プログラムのいくつかの記述方法について説明します。

481:デフォルトの名無しさん
09/10/03 13:10:52
オイ俺のコピペ脳、まで読んだ。

482:デフォルトの名無しさん
09/10/03 16:10:02
foreachを逆の順番で回すことはできませんか?
ま、forを使えばいいんだけど・・・

483:デフォルトの名無しさん
09/10/03 16:16:07
出来るわけがない

484:デフォルトの名無しさん
09/10/03 16:16:28
.Reverse()

485:デフォルトの名無しさん
09/10/03 16:35:14
Reverseにしました

486:デフォルトの名無しさん
09/10/03 16:40:27
Reverseは一度内部で最後まで列挙されて、そのバッファから吐き出されてるに過ぎないってことに注意。
但しIListを実装しているものは直接コピーするので、列挙のコストはかからない。

487:デフォルトの名無しさん
09/10/03 16:41:12
ネットワークドライブへの再接続をする方法を教えてください

環境
PC A OS vista x64 sp2
PC B OS xp sp3
AはBのフォルダをネットワークドライブ(Zドライブ)に接続している
ネットワークドライブ(Zドライブ)は起動時に自動的に再接続される。

続く~

488:デフォルトの名無しさん
09/10/03 16:42:50
ケース1
Aのみ起動している状況で、
string[] drives = Directory.GetLogicalDrives();
をやると、drivesの中にZドライブが含まれない。

ケース2
Aを起動してからBを起動しても
drivesの中にZが入ってこない。

ケース3
Bを先に起動してからAを起動すると、
drivesの中にZが入ってくる。

ケース1 2のどちらでも、エクスプローラーではZドライブアイコンに×が重なって表示されます。
×になっているZドライブをダブルクリックすると、正常にドライブにアクセスでき、
その後は
string[] drives = Directory.GetLogicalDrives();
でdrivesの中にZドライブが入ってくる。

このエクスプローラーをダブルクリックするという作業を、なんとか代替できないでしょうか。

やったこと
DriveInfo di = new DriveInfo("Z");
string[] drives = Directory.GetLogicalDrives();
失敗

string[] test = System.IO.Directory.GetFileSystemEntries("z:\\");
string[] drives = Directory.GetLogicalDrives();
例外で強制終了
存在しないドライブの一覧を取得しようとしたのが問題っぽい。

どなたかお願いします。

489:デフォルトの名無しさん
09/10/03 16:46:31
標準ライブラリじゃ無理のはず
Win32APIのWNetAddConnection2で再接続

490:デフォルトの名無しさん
09/10/03 16:49:55
>>489
情報ありがとうございます。
win32apiは使ったことないですが何とかやってみます。

491:450
09/10/03 18:47:55
Form1からForm2を表示したとき、
位置をForm1のLocationプロパティを参照して決めたいのですが、
参照の仕方を教えてください。

492:デフォルトの名無しさん
09/10/03 18:50:30
考え方が間違ってる
Form1がForm2を表示する際に
var form2 = new Form2();
form2.Location = (this.Locationを基準に決めた位置);
form2.Show();
のようにする

493:デフォルトの名無しさん
09/10/03 19:15:30
>>492
おおお!
ありがとうございます!

まったく思いつかなかったです。

494:デフォルトの名無しさん
09/10/03 19:19:43
this.BackColor = System.Drawing.Color.Blue;

直接16進で指定は出来ないのでしょうか?


495:デフォルトの名無しさん
09/10/03 19:20:13
Thread thread = new Thread(ThreadTask);
thread.Start();
でスレッドを起動するとき、引数はどう渡せばいいんでしょう?


496:デフォルトの名無しさん
09/10/03 19:24:51
>>495
URLリンク(msdn.microsoft.com)

497:デフォルトの名無しさん
09/10/03 19:25:22
Color.FromArgb

Colorのリファレンスくらい見たらどうかと思う

498:デフォルトの名無しさん
09/10/03 19:26:45
>>493
いやいやw

普通は(少なくともOOP的には)、別のFormの位置を参照して自分の表示位置を決定して表示する機能を
Form2自身が実装するようにすべき。

その方が分かりやすいでしょ?

ケースバイケースだけど、フツーは>>492みたいのは悪い例。

499:デフォルトの名無しさん
09/10/03 19:36:49
余計な依存ができるだろ
もっとちゃんとした枠組みを作ってそういうことを実現するならいいけど
安易に他のフォームを参照しちゃうようなやり方は良くない

500:デフォルトの名無しさん
09/10/03 19:41:03
>>497
ども、まだヘルプ入れてないんです。始めて二日目。
ありがとう、できました。

501:デフォルトの名無しさん
09/10/03 19:49:21
は? >>500

502:デフォルトの名無しさん
09/10/03 19:59:21
IntelliSenseからそれっぽい名前探し当てるとかできないのかなー。

503:デフォルトの名無しさん
09/10/03 20:01:58
>>499
Locationは"Form1"で実装されてるメンバじゃない。
意味分かる?

依存なんかできないよ。
例えば、

void ShowAtLeft(Form referredForm)

のようにするだけ。

504:デフォルトの名無しさん
09/10/03 20:01:58
Thread thread = new Thread(ThreadTask);
thread.Start(引数);
としたところ、

'System.Threading.Thread.Thread(System.Threading.ParameterizedThreadStart)' に最も適しているオーバーロード メソッドには無効な引数がいくつか含まれています。
引数 '1': 'メソッド グループ' から 'System.Threading.ParameterizedThreadStart' に変換できません。
ってことなんですけど…。


505:デフォルトの名無しさん
09/10/03 20:08:38
ThreadTaskの方が引数受け取る気無いとか言わないだろうな

506:デフォルトの名無しさん
09/10/03 20:12:22
private void ThreadTask(string 引数){}
としてます。


507:デフォルトの名無しさん
09/10/03 20:16:39
ParameterizedThreadStartの引数の型に合わせんとダメ

508:デフォルトの名無しさん
09/10/03 20:29:12
private void ThreadTask(object 引数){}
ってことですか?
それだと、
引数 '1': 'object' から 'string' に変換できません。
なんですが、objectからstringに変換すればオーケーなんですか。
どうやるんだろ。


509:デフォルトの名無しさん
09/10/03 21:06:32
いらいら


510:デフォルトの名無しさん
09/10/03 21:10:08
お前には無理だからあきらめろ。

511:デフォルトの名無しさん
09/10/03 21:19:00
VC# 2008ならこれでいいよ。
new Thread(() => ThreadTask(実引数));

512:デフォルトの名無しさん
09/10/04 00:20:08
できました。感謝です。


513:デフォルトの名無しさん
09/10/04 00:22:56
どういたしまして

514:デフォルトの名無しさん
09/10/04 00:24:48
こちらこそ

515:デフォルトの名無しさん
09/10/04 01:32:50
スレッドでファイルをカウントして、
現在の状況をtextboxに表示しようとしています。

int i;
foreach(string file in files)
{
textBox.text = file + i;
i++;
}

これで「InvalidOperationExceptionはハンドルされませんでした。
有効ではないスレッド間の操作:
コントロールが作成されたスレッド以外のスレッドからコントロール
'textBox' がアクセスされました。」とエラー。
textBoxのプロパティをGUIでModifiers Publicにしても
おなじエラーなんですけど、
コントロールを作成したスレッドをPublicにするのは、
GUIの設定だけじゃだめなんですか?

516:デフォルトの名無しさん
09/10/04 01:33:52
Invoke 使え。

517:デフォルトの名無しさん
09/10/04 09:27:56
過去に同様の質問を見たことがありますが…
レンタルサーバーからインストールできるよう自作アプリケーションをアップしましたが、
.NET Framework の インストールに30分程度の時間が要してしまいます。

(1)
インストールするコンポーネント:
・Windowsインストーラー3.1
・.NET Framework Client Profile
の2つにしています。

(2)
クライアント専用Frameworkサブセットにチェックを入れています。

.Net Frameworkが入っていないXPなどのPCからインストールをしようとすると、
30分程度の時間を要してしまいます。

早くするためのテクニックはないでしょうか。
CDなどのメディアで配布したほうが良いのでしょうか。

教えてください。よろしくお願いします。

518:デフォルトの名無しさん
09/10/04 10:24:50
PictureBoxの画像をマウスドラッグで移動させてるのですがおかしな現象に悩んでます
シングルスレッドで移動させているときはマウスのピクセル移動量と画像の移動量が一致します

しかし、マルチスレッドで移動させるとマウスのスピードに指数比例してすごい勢いで画像が流れます

親スレッドでMouseMoveイベントごとに現在位置のグローバル変数を移動
スレッド呼び出し
グローバル変数に従って画面を書き換え

こんな流れになっていてスレッド呼び出しされた側ではグローバル変数を参照しているだけで
位置情報を書き換える処理はしていないです
スレッドが呼ばれている間の位置移動とか特に意識していません

まあ絶対どっかでミスしてんですが、思い当たる原因のヒントでもいただけたらと・・・

519:デフォルトの名無しさん
09/10/04 10:26:02
Client Profile 使ってなくて想像で悪いけど、
.NET Framework 3.5 Client Profile の数々の仕様って修正されてる?

その中の
・XP sp2以上でないと、結局3.5sp1をフルインストールされる
・他のバージョンの.Netがあると、結局3.5sp1をフルインストールされる
のどっちかという話はないか?

他にも
・インストールしたXPは、これをアンインストールしないとVistaにアップグレードできない
・インストールしたPCには、古いバージョンの.Netをインストールできない
・インストールされていない Oracle データ プロバイダが使用可能であると表示される
とかリリースノートで豪快に仕様扱いなんだなぁ。すげーぜ、さすがはアメリカンw

520:デフォルトの名無しさん
09/10/04 10:26:34
デバッグしろよ

521:デフォルトの名無しさん
09/10/04 11:12:27
クライアントプロファイルは正直使いもんにならん。


522:デフォルトの名無しさん
09/10/04 11:16:24
>>518
スレッドの呼び出し?だけ消したら正常になるの?
一体そのスレッドで何やってんだ?
あとスレッドの呼び出し?って何時やってんの?
まさかマウスが動く度じゃないよね?
スレッド側の処理は一瞬で終わるもの?それともしばらく動き続けるもの?

523:デフォルトの名無しさん
09/10/04 11:26:24
BindingSource bs = new BindingSource();

private void button1_Click(object sender, EventArgs e)
{
List<testclass> testlist = new List<testclass>();
testlist.Add(new testclass { A = "A1", B = "B1" });
testlist.Add(new testclass { A = "A2", B = "B2" });

bs.DataSource = testlist;
dataGridView1.DataSource = bs;

bindingSource1.DataSource = testlist;   ←ここに違うList<>をセットするだけでDataGridViewの中身を切り替えたい
//dataGridView2.DataSource = bindingSource1; ←ここはデザイン時にセットしてある
}

class testclass
{
public string A { get; set; }
public string B { get; set; }
}

上記のdataGridView1は期待通り表示されるのですが
dataGridView2は何も表示されません。
dataGridView2のようにデザイン時にDataGridViewのDataSourceにBindingSourceを
指定した場合はBindingSourceのDataSourceをセット(切り替える)した後に
何かしなければならないんでしょうか?

524:デフォルトの名無しさん
09/10/04 11:40:13
>>523に追加
以下のdataGridView1と同じ動作をdataGridView2にさせたいのですが・・

BindingSource bs = new BindingSource();
List<testclass> testlist = new List<testclass>();
List<testclass> testlist2 = new List<testclass>();

private void button1_Click(object sender, EventArgs e)
{
bs.DataSource = testlist;
dataGridView1.DataSource = bs;

bindingSource1.DataSource = testlist;
//dataGridView2.DataSource = bindingSource1;
}
private void button2_Click(object sender, EventArgs e)
{
bs.DataSource = testlist2;
dataGridView1.DataSource = bs;

bindingSource1.DataSource = testlist2;
}
private void Form1_Load(object sender, EventArgs e)
{
testlist.Add(new testclass { A = "A1", B = "B1" });
testlist.Add(new testclass { A = "A2", B = "B2" });

testlist2.Add(new testclass { A = "a1", B = "d1" });
testlist2.Add(new testclass { A = "a2", B = "d2" });
}
以下略

525:デフォルトの名無しさん
09/10/04 12:12:45
>>519
ありがとうございます。
.NET3.5sp1を入れてはいますが、結局使用はしていません。
.NET3.5のみを配布したら早くなるでしょうか…。


526:デフォルトの名無しさん
09/10/04 12:14:50
>>522
今は暫定的にマウスが動くたびになってます
最終的には移動量が一定量を超えたとき呼び出すつもりです
そのスレッドでは移動量をグローバル変数から取得してそれに応じた小さなファイルを読み込んでメインスレッドのInvcke呼び出し
メインスレッドのハンドラでダブルバッファに書き込んで、移動分だけ画像をシフトしてます

527:デフォルトの名無しさん
09/10/04 12:18:29
自分のアプリでクラスライブラリ(.dll)作って一緒に配布すると
そのライブラリを別のアプリケーションで勝手に使っちゃえると思うんだけど
それを防ぐ方法はないのかな?

528:デフォルトの名無しさん
09/10/04 12:20:36
>>527
ない。

529:デフォルトの名無しさん
09/10/04 12:21:41
>>527
ロード元のアセンブリをチェックすればいいだけだろう

530:デフォルトの名無しさん
09/10/04 13:01:15
>>529
そうか、そうですよね。
調べます。

531:デフォルトの名無しさん
09/10/04 14:17:34
>>529
の方法を簡単に説明してくれ

532:デフォルトの名無しさん
09/10/04 14:19:44
アプリ中のオブジェクトを(型指定して)列挙するにはどうしたいいんでしょうか?

533:デフォルトの名無しさん
09/10/04 14:35:27
>>532
なんでそんなことしたいんだ?

534:デフォルトの名無しさん
09/10/04 17:55:02
>>532
さては他人の作ったソフトウェアのメソッド叩きたいとか考えてるな!
やめとけw

535:デフォルトの名無しさん
09/10/04 18:12:38
恐ろしいことを平気でやってのけてこそ初心者!

536:デフォルトの名無しさん
09/10/04 19:05:37
設定ファイルを読み込むのはメインのFormのコンストラクタ内でするのか、
Loadイベントのハンドラで行うのかどちらがいいのでしょう。

537:デフォルトの名無しさん
09/10/04 19:06:28
C++でCLRのアンマネージインターフェイスを叩く必要があった気がする

538:デフォルトの名無しさん
09/10/04 19:10:33
>>536
内容による。

539:デフォルトの名無しさん
09/10/04 19:10:46
>>532
リフレクションでやってみれば?

540:デフォルトの名無しさん
09/10/04 19:11:38
バグを見つけて臍をかむのがオチなんだよなぁ。
マニュアルの System.Reflection 名前空間見るとか、「リフレクション C#」ググるとか。

単に見たいだけなら一番簡単なのは、VSで参照してオブジェクトブラウザで覗く。

541:デフォルトの名無しさん
09/10/04 19:19:48
>>538
ウィンドウのレイアウトから、オプションダイアログで設定するようなものまであります。

542:デフォルトの名無しさん
09/10/04 19:24:04
リフレクションではオブジェクトそのものは見られないよ
MSがソース公開してるCLRプロファイラやWPFプロファイラは部分的にC++使ってた

543:デフォルトの名無しさん
09/10/04 19:27:32
>>541
Formに関する設定ならばLoadだろうね。
逆にコンストラクタできちんと動く?

544:デフォルトの名無しさん
09/10/04 19:47:32
>>525氏の話だけど、
みんなは配布用アプリを作る時は、インストールに時間がかからないようにどのような工夫をしているの?

545:デフォルトの名無しさん
09/10/04 19:48:16
>>543
現状は問題なくできるのですが、、何か陥りやすい問題とかあるんでしょうか。
コンストラクタのInitializeComponentの後にファイルを読み込んでいます。

546:デフォルトの名無しさん
09/10/04 19:55:03
>>544
最初の一回だけだから気にしてない。

547:デフォルトの名無しさん
09/10/04 20:14:58
>>545
俺も聞きたいねえ。
コンストラクタでやったらまずい処理って思いつかない。

まあFormに限らず、クラスのコンストラクタでイベントを生成するような処理を書いて
嵌ったことは過去に何度かある。

コンストラクタ呼び出し中に発火されたイベントは、事実上誰も拾えないからね。

548:デフォルトの名無しさん
09/10/04 20:53:17
>>546
.net3.5を使用しているアプリを配布しようとしたら、
プレインストールされていないPCは、30分とかかかかるのかい?


549:デフォルトの名無しさん
09/10/04 20:55:13
>>548
回線速度とスペック次第じゃね?

550:デフォルトの名無しさん
09/10/04 20:55:27
かかかか

551:デフォルトの名無しさん
09/10/04 21:01:28
>配布
んなものは、システム要件。
インストールさせようなんてのはお節介。
と思ってる。

552:デフォルトの名無しさん
09/10/04 22:08:41
>>545
なら問題ないんじゃない?
C#やりたてのころに痛い目にあったことが1回だけあったけど、何かはど忘れしちゃった。
明日まで覚えていたら会社のSVN覗いてみるわ。


553:デフォルトの名無しさん
09/10/04 22:26:39
コンストラクタはインスタンスの初期化
LoadはFormの読込み
Shownは表示後

ちゃんと役割があるんだからそれぞれに書いた方がいいと思う

554:デフォルトの名無しさん
09/10/04 22:33:17
LoadはVBの名残みたいなもん

555:デフォルトの名無しさん
09/10/04 22:38:56
そんなことはない
FormがShowされるときにすべき処理はLoadに書くべき
コンストラクタはあくまでインスタンスの初期化処理だけのほうがいい

556:デフォルトの名無しさん
09/10/04 22:51:23
>>553-555
正直、どれもよくわからん俺様ロジックにしか聞こえない。
そんなことはない、というなら聞くが、じゃあ結局>>536の質問には何と答えるんの?

っていうか、そういう意味論にこだわるなら、設定値を読み込んで適用するような処理は
InitializecComponentsの後が一番適切に思えるが。

557:デフォルトの名無しさん
09/10/04 23:00:30
> 正直、どれもよくわからん俺様ロジックにしか聞こえない。

イベントドリブン全否定?
俺様ロジックの俺様というのはC#開発者のこと言ってるんだよな?

558:デフォルトの名無しさん
09/10/04 23:17:49
>>557
日本語読める?
だからね、一般論として、コードは意味的に適切なタイミングで
実行されるように書くべき、というのはその通りだけども、
じゃあ設定を読み込んで反映するのに適切なタイミングっていつだっての。

そんなもの、答えなんかないだろう。
「設定を読み込んで反映すべきタイミング」の意味を与えられたイベントなんて存在しないのだから。
イベントの意味なんかにこだわりすぎると、結局そんな処理なんかどこにも書くべきでない、
って結論にならざるをえない。

559:デフォルトの名無しさん
09/10/04 23:37:07
>>558
あなたの言ってることの方がよっぽど俺様ロジックに聞こえるけど
コンストラクタはインスタンスが生成される瞬間に実行され、
インスタンスの初期化のための引数を渡す機能を持っている
コンストラクタが一つなら、その設定やらに渡す引数も一緒に渡してやれば良いけど
そんなやり方推奨する人どのくらいいるだろうね

560:デフォルトの名無しさん
09/10/04 23:42:15
public Form1() : this(null)とか使おうよ

561:デフォルトの名無しさん
09/10/05 00:08:53
>>560
ごめん。どっかいっててくれるかい?

562:デフォルトの名無しさん
09/10/05 00:30:17














563:デフォルトの名無しさん
09/10/05 00:30:38
Formを継承して「設定を読み込んで反映すべきタイミングのイベント」を追加する

564:デフォルトの名無しさん
09/10/05 00:35:18
そう言うようなことは普通にやるけど、「どのタイミングが最適か」って答えは出ないんだよね。

565:デフォルトの名無しさん
09/10/05 01:03:08
>>559
結局どうすべきだと言いたいの?

というかね、コンストラクタが多重定義したい場合で、
かつどのコンストラクタにも共通する処理がある場合は、
どのコンストラクタからも特定の一つの別のコンストラクタを呼ぶようにするか、
共通部分をメソッドに括り出して呼ぶようにするでしょ。

それを忘れたらどうするのかって?
それはただの「バグ」であって、そんなケースを槍玉に挙げてなんの意味があるのよ。

566:デフォルトの名無しさん
09/10/05 01:04:10
横からその問題だけに絞って考えると、感覚的にはファイル
アクセスなら Load かなぁ。
設定ファイルなら…んー、コンストラクタでもぎりぎりアリか。


567:デフォルトの名無しさん
09/10/05 02:42:08
俺ならそもそもFormのインスタンス生成前に読んじゃうかなあ
多重起動チェック→設定読む→Application.Runみたいな流れ
設定にもよるけど

568:デフォルトの名無しさん
09/10/05 10:09:37
まあ、ハンドル云々というのでなければコンストラクタでいいと思う。

569:デフォルトの名無しさん
09/10/05 14:23:18
「List<string> s 」に入ってる文字をlistboxに表示したいです。

listBox1.Items.Add(s);

とすると(コレクション)と表示されてしまいます。


570:デフォルトの名無しさん
09/10/05 14:30:21
・AddRangeする
・DataSourceに設定する

571:デフォルトの名無しさん
09/10/05 15:16:32
下記で出来ました。
string[] ss = new string[s.Count];
for (i = 0; i < s.Count; i++)
{
ss[i] = files[i];
}
listBox1.Items.AddRange(ss);

一度で出来ないのですね。
ありがとうございました。

572:デフォルトの名無しさん
09/10/05 15:23:57
AddRange使って一発でやりたいならToArray使えばいいじゃない

573:デフォルトの名無しさん
09/10/05 15:26:07
あとDataSourceなら
listBox1.DataSource = s;
だけだし。

574:デフォルトの名無しさん
09/10/05 20:13:19
自分の実力が足りないだけなのに言語のせいにされたらたまらんわ。

575:デフォルトの名無しさん
09/10/05 20:35:38
おまえらどんだけ被害妄想wwww


576:デフォルトの名無しさん
09/10/05 20:57:24
ディスプレイから女の子を救い出すプログラムをC#で移植してます。
C#では無理なんでしょうか。VBではうまくいったんですけど・・・

577:デフォルトの名無しさん
09/10/05 21:02:52
どこが動かないのか詳しく。質問が大雑把過ぎて問題がわからない。

578:デフォルトの名無しさん
09/10/05 21:10:59
美少女ゲームの彼女をリア

579:デフォルトの名無しさん
09/10/05 21:22:21
では将軍様、そのディスプレイから女の子を追い出してください

580:デフォルトの名無しさん
09/10/05 21:26:51
全財産はたいてもいいから俺によこせ

581:デフォルトの名無しさん
09/10/05 21:32:41
WinXP Pro SP3, VS2008 sp1, .net 3.5 sp1での質問です。
言語はC#を利用しており、COMコンポーネントの開発を行っています。

下記のような簡単なクラスを作成し、RegSvr32.exeを実行したところ、下記のようなエラーが発生しました。
このようなエラーが発生した場合の対処法と原因について教えていただけないでしょうか?
よろしくお願いいたします。

------作成したクラス-------
using System;
using System.Runtime.InteropServices;
using System.Text;
namespace Test
{
[ClassInterface(ClassInterfaceType.None)]
[ProgId("Test.Test")]
[Guid("00BB6C80-C01D-4D64-A66B-F5D847480B09")]
public class Test
{
public string Test(string s, int m, int n)
{
return "abc";
}
}
}
---------------------------
------[[エラー]]-----------
.\Test.dll は読み込まれましたが、DllRegisterServer エントリ ポイントが見つかりませんでした。
このファイルが登録されていない可能性があります。


582:デフォルトの名無しさん
09/10/05 21:36:30
.NETのアセンブリの場合regsvr32じゃなくてregasm使う

583:デフォルトの名無しさん
09/10/05 22:04:48
Tlbexp.exe

584:デフォルトの名無しさん
09/10/06 17:03:58
プロセスの一覧で、引数を知るにはどうしたらよいですか?
Notepadを複数起動していて、a.txtとb.txtを開いているときに、a.txtのほうのNotepadのプロセスを取得して終了したいです。
System.Diagnostics.Process[] ps = System.Diagnostics.Process.GetProcessesByName("Notepad");
で引数なしなら取得できます。
System.Diagnostics.Process[] ps = System.Diagnostics.Process.GetProcesses();
で、プロセスの一覧はできます。
デバッグでどちらを見ても、ファイル名が見当たらないのです。
探し方が悪いのかもしれません。
ご指摘お願いします。


585:デフォルトの名無しさん
09/10/06 17:12:54
WMI使ってWin32_ProcessのCommandLineプロパティ取得するのが手っ取り早い
けどファイルを開くで開いた場合を気にしなくて良いの?

586:デフォルトの名無しさん
09/10/06 17:19:14
WebRequest/WebResponse って最初に呼び出すときに結構時間がかかります?
数秒~数十秒くらい

587:デフォルトの名無しさん
09/10/06 17:20:22
Win32_ProcessのCommandLineプロパティで、
"C:\WINDOWS\system32\NOTEPAD.EXE" C:\a.txt
"C:\WINDOWS\system32\NOTEPAD.EXE" C:\b.txt
は取得できました。
これを終了するのって、どうするんですか?
それぞれのプロセスの個別の取得方法がわからないです。
NOTEPADのプロセスは取得できるけど、それだとaとbを区別できないし。

ファイルを開くで開く場合は、とりあえずいまは関係なしです。


588:デフォルトの名無しさん
09/10/06 17:24:57
>>587
強制終了させるなら、目的の引数を持ってるWin32_ProcessのTerminateメソッドでいい
内容変更時に保存ダイアログが欲しいなら、Win32_ProcessのProcessIdを使ってProcess.GetProcessByIdしてCloseMainWindow

589:デフォルトの名無しさん
09/10/06 19:35:56
>>588
なんとなくできたっぽいです。
ありがとうございました。


590:デフォルトの名無しさん
09/10/06 22:42:55
>>586
URLリンク(kakikukekou.blog83.fc2.com)

591:デフォルトの名無しさん
09/10/06 22:47:32
>>586
WPADやなんやでネットワークの応答速度によって時間が掛かる可能性はあるね

592:デフォルトの名無しさん
09/10/06 23:37:29
>>586
数十秒もかからないけど 5秒ぐらいはかかってるかな

593:デフォルトの名無しさん
09/10/07 08:58:18
非同期処理ってマルチスレッドってことなんでしょうか?

594:デフォルトの名無しさん
09/10/07 09:07:37
基本的にはそう
スレッドじゃなくてプロセスだったりするかも知れないが
メッセージ使った擬似非同期とかな

595:デフォルトの名無しさん
09/10/07 09:42:23
ありがとうございます

596:デフォルトの名無しさん
09/10/07 12:11:48
文字列中の
\x28 などのエスケープ文字(?)を ( などに変換するのは
それぞれのエスケープ文字について一つ一つ string.replace などで置き換えるしかないのでしょうか?

597:デフォルトの名無しさん
09/10/07 12:34:47
ソース上の文字列リテラルを置換したいのか、実行時に変換したいのか
まあString.Replaceってとこみると実行時の変換なんだろうけど
エスケープの方法なんて言語次第だから特にライブラリには存在してない
Regex.ReplaceでMatchEvaluator使うのが楽だろうねー

598:デフォルトの名無しさん
09/10/07 13:10:36
string[] files = Directory.GetFiles(@"C:\Documents and Settings\username\Local Settings\Temporary Internet Files\", "*.jpg");
で空なのはどうしたら取得できますか?


599:デフォルトの名無しさん
09/10/07 15:06:24
>>598
実際そこにファイルがないから

600:デフォルトの名無しさん
09/10/07 15:11:55
どこにあるんですか?
調べたら、
その下に、Content.IE5フォルダがあるらしいので、SearchOption.AllDirectories
としても見つけられませんでした。

601:デフォルトの名無しさん
09/10/07 15:42:13
エスパーさんお願いします

602:デフォルトの名無しさん
09/10/07 15:44:11
そこには無いんだよ

603:デフォルトの名無しさん
09/10/07 16:04:13
隠しフォルダの中にある隠しフォルダを探したいってことでしょ

Content.IE5の中には、さらにランダムな名前の隠しフォルダがたくさんあって、
ネットから取得したファイルの本体はそのランダムなフォルダの中に分散して格納してある。
何がどこにあるかはindex.datだったかに書いてある。

604:デフォルトの名無しさん
09/10/07 16:09:26
delphi
s string;
SetLength(s, 64);

c#
string s;
サイズを指定するにはどうするんでしょうか?

605:デフォルトの名無しさん
09/10/07 16:12:06
サイズを指定する必要はないんじゃね?

606:デフォルトの名無しさん
09/10/07 16:13:58
Stringは変更できないのでそういうことはできません。
そもそも変更不可なので長さを伸ばすのは意味がありません。StringBuilderなどを使います。
長さを縮めるというか部分を切り出した新しい文字列を作るのはString.SubstringやString.Removeで可能です。

607:デフォルトの名無しさん
09/10/07 16:16:19
base64とかで必要なんです。

608:デフォルトの名無しさん
09/10/07 16:20:22
StringBuilder使えばいいじゃない

609:デフォルトの名無しさん
09/10/07 16:21:06
つーかencodeing気にしなくちゃならんし、byte[]じゃだめなのか

610:デフォルトの名無しさん
09/10/07 16:21:44
何が必要なのよ?

611:604
09/10/07 16:23:20
㌧。やりたいことはStringBuilderで出来そうです。
ありがとうございました。

612:デフォルトの名無しさん
09/10/07 16:24:09
base64は.NETの標準機能でサポートされてるけど

613:デフォルトの名無しさん
09/10/07 16:53:28
URLリンク(www.atmarkit.co.jp)

ここのソース貼り付けて実行したらWPFだとちゃんと動くけどSilverlightだと動かない
んですけどなぜなんです?


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