ふらっとC#,C♯,C#(初心者用) Part45at TECH
ふらっとC#,C♯,C#(初心者用) Part45 - 暇つぶし2ch159:デフォルトの名無しさん
09/10/18 19:12:02
>>158
「この型は、マルチスレッド読み取り操作に対して安全です。すべての書き込み操作の同期をとる必要があります。」
ロックしたら問題無いと思っていたけど、駄目?

160:デフォルトの名無しさん
09/10/18 19:12:43
>>158
フォームのコントロールはフォームのスレッドでしかアクセスできないから。invokeが必要。


161:デフォルトの名無しさん
09/10/18 19:15:55
>>159
ダメ。
DataSetの変更はバインディングによってコントロールに通知されるけど、
特に同期化しない普通のイベントによる通知なので
DataSetを変更したスレッドと同じスレッドでイベント発生・コントロール書き換えが行われてしまう。

162:デフォルトの名無しさん
09/10/18 19:23:43
>>161
> 特に同期化しない普通のイベントによる通知なので
> DataSetを変更したスレッドと同じスレッドでイベント発生・コントロール書き換えが行われてしまう。
あー、そうか。
やばそうですね。

163:デフォルトの名無しさん
09/10/18 19:36:19
>>155

そのままマネージヒープのアドレスを渡すとGCで死ぬから,
マーシャラが自動的にアンマネージヒープにコピーを作ってるからだったかな
そういう使い方をするデータははじめから自分でアンマネージヒープに確保しておくのが普通だと思う

164:デフォルトの名無しさん
09/10/18 19:56:02
その場合MarshalAsでStructだか使えばできたと思うけど

165:デフォルトの名無しさん
09/10/18 20:05:15
アンマネージコードからマネージヒープを直接触らせるにはGCHandleを割り当てて固定するしかないはず

166:デフォルトの名無しさん
09/10/18 20:08:07
MSDNの「コピーと固定」って記事にマーシャリング時のヒープが図解されてるよ

167:デフォルトの名無しさん
09/10/18 21:52:28
なんかデバッグフォルダに見慣れないファイルが5っほどある。
コンパイルしたらリリースフォルダにも同じファイルがある。
TempPEなんてフォルダまである。

hoge.pdb
hoge.Form1.resources
hoge.Properties.Resources.resources
hoge.csproj.GenerateResource.Cache
hoge.csproj.FileListAbsolute.txt

今までこんなの出来なかったのに何故?

168:167
09/10/18 21:53:27
あ、pdbファイルまで書いてしまった。
これは無しです。

169:デフォルトの名無しさん
09/10/18 22:05:18
\obj\のほう見てないか?

170:デフォルトの名無しさん
09/10/18 22:13:15
>>169
その通りでした
まさかそんな落とし穴があったとは・・・
穴があったら入りたいですw

171:小学生
09/10/18 22:17:37
おっさん、バイナリすらわからないのか?

172:中学生
09/10/18 22:48:26
>>171
お前もわかってないんだから黙ってろガキ
おっさんと同レベル

173:小学生
09/10/18 22:51:01
おれは将来天才プログラマーになる
人類初の人工知能を開発してやる
まずはイカの神経細胞を研究してだな

174:デフォルトの名無しさん
09/10/18 23:08:41
       ____
     /⌒  ⌒\ ホジホジ
   /( ●)  (●)\
  /::::::⌒(__人__)⌒::::: \  < へーがんばってね
  |    mj |ー'´      |
  \  〈__ノ       /
    ノ  ノ

175:デフォルトの名無しさん
09/10/18 23:12:14
タコがイカの研究とな?

176:デフォルトの名無しさん
09/10/18 23:16:24
晩飯のイカ天がめっちゃ旨かった。

177:155
09/10/18 23:37:29
>>163
やはりGCによる管理が原因でしたか。
結局アンマネージにコピーしてるならせっかくの参照渡しがあまり意味ないですね。
せっかくのc#なのにアンマネージコードを使うのもなんなので、
他の方法にします。ありがとうございました。

178:デフォルトの名無しさん
09/10/19 00:44:09
>>155のような使い方って結構多いのかな?
俺はそういう参照私の使い方をしたことがないんだ

179:デフォルトの名無しさん
09/10/19 01:49:10
>>155,178
C#からC/C++のDLLの外部関数を呼び出すのはかなり下準備が必要なので、
ゼロから書き上げるより実績のある他のコードをコピペしていじったほうがいいよ。
WinAPIなら色々と見つかる。

180:デフォルトの名無しさん
09/10/19 01:50:06
じゃあどういう参照渡しの使い方をしたんだ?

181:デフォルトの名無しさん
09/10/19 02:21:39
非同期の処理が絡むようならコールバック関数を使う。
それができないならC++/CLIでラッパーを作る。

182:デフォルトの名無しさん
09/10/19 09:08:05
.Netはxml関連のライブラリ増えすぎて一体どれを使うべきなのかわからない。
xmlファイルとして生成するときはXmlTextWriterからなのかXDocumentから吐きだすのか・・・

どうしたらいいんだぜ?

183:デフォルトの名無しさん
09/10/19 09:14:27
イカの神経細胞を研究するために
イカの飼育を世界で初めて成功させた日本人がいるね

184:デフォルトの名無しさん
09/10/19 09:33:32
>>182
別に何使っても良いけどな つか「すぎ」って言うほど多くはないと思うけど
まず一旦DOMを作るかどうかでXmlDocument/XDocumentかXmlWriterかに分かれる
DOMを作るかどうかは仕様次第
あとXmlDocumentとXDocumentは大体同じもんだから.NET 3.5以降を使って良いならXDocument
それからXmlTextWriterは属性ついてないけどObsolete扱いなので使うならXmlWriterね

185:デフォルトの名無しさん
09/10/19 10:13:03
>>184
すごい勉強になるわ、
無意識のうちにXDoc使ってるから、まぁこのまま続けても問題はないかな。


186:小学生
09/10/19 10:27:53
どう考えてもライブラリ多すぎるよな
いらないものどんどん削除していけよ・・・

187:デフォルトの名無しさん
09/10/19 10:29:23
Assemblyあたりの「依存のため~」は全部削除してほしいw
ごちゃごちゃしてる

188:デフォルトの名無しさん
09/10/19 10:48:20
一旦追加されたらよほどアレゲな評価が定着しない限りは
削除されないのが標準ライブラリの宿命。

それでも、標準で使えるライブラリが使えなさ過ぎるC/C++よりは遥かにマシ。
Javaと比べたら……どうなのよ?

189:小学生
09/10/19 10:58:52
>>188
そういうものの考え方って退化っていうらしいよ。おっさんw

190:小学生
09/10/19 11:02:17
vistaはうんこだけど、win95よりはマシだな
って考え方する奴は時代についていけてない証拠
満足しちゃったら終わりなのよw

191:デフォルトの名無しさん
09/10/19 11:13:57
よそでやれ

192:デフォルトの名無しさん
09/10/19 11:16:46
よそでやりました

193:小学生
09/10/19 11:21:18
昔はスイッチをカチカチとオンオフしながプログラミングしてたけど
今はすごく便利だなー

懐古おっさんは解雇されろw

194:デフォルトの名無しさん
09/10/19 11:24:50
へんな粘着君が居ついてしまったな。

195:デフォルトの名無しさん
09/10/19 12:10:23
>"懐古"おっさんは"解雇"されろw
最後に「w」付けてるせいで悲壮感が倍増している。なんとハイレベルな親父ギャグか…。

196:デフォルトの名無しさん
09/10/19 13:59:42
コントロールクラスを継承したクラスライブラリを作ってるんですが
そのクラスがプラグインを実装することになって
メニュー項目にプラグイン選択・設定メニューも追加したくなったとします

メニューを管理するのはParentのFormなので、Formクラスでライブラリに
作り直せば簡単なんですが可搬性に問題が出そうです

そこでコントロールクラスのコンストラクタにFormクラスのメニューの参照を渡して
そこにメニューを追加する仕様にしようかと考えてます

コントロールのコンストラクタにメニューの参照を渡すのってあんまり見たこと
ないんですが、おかしくないでしょうか?

197:小学生
09/10/19 14:18:53
>メニューを管理するのはParentのFormなので、Formクラスでライブラリに
>作り直せば簡単なんですが可搬性に問題が出そうです
なんで?

普通にメニュー作ればいいやん?

198:デフォルトの名無しさん
09/10/19 14:48:23
>>196
フォームのメニューはアプリごとに全然異なる部分だからなぁ。だから普通は毎回作り直す。
そこを標準化して、逆にアプリ側の仕様が縛られるのはちょっと勘弁。
プラグインを管理する機能があって、それをメニューに反映したいというなら後付で入れられる形を考えるか。

純粋なプラグイン管理サブシステムを構築した上で、
そいつに追加したい先のフォームのメニューの親メニューの参照を渡してあげる感じがいいんじゃないかな。

199:デフォルトの名無しさん
09/10/19 15:10:53
>>198
なるほど、とりあえずはプラグインが利用するのはコントロールクラスのプロパティやイベントだけだと思うので
後付で追加したい先のフォームのメニューの参照を渡すようにして、
メニューの追加をプラグインにそれぞれやらせるようにしたいと思います

200:デフォルトの名無しさん
09/10/19 17:01:46
うまくいったけどメニューが文字化けする・・・

201:デフォルトの名無しさん
09/10/19 17:06:45
それってさぁ
プラグインが既存のメニュー削除できちゃったりしないの?

202:小学生
09/10/19 17:18:16
俺をしかとするなよおっさん共

203:デフォルトの名無しさん
09/10/19 17:38:00
>>201
できませんよ、プラグイン用の枝のMenuItemの参照渡してるだけだしaddを公開してるだけだから

204:デフォルトの名無しさん
09/10/19 17:49:43
花札で10点札の鹿が後ろを向いていることから
そっぽ向く、無視することを「鹿十(しかとお)」と言うようになった
ヤクザの言葉なのであまり使わない方がいい

205:デフォルトの名無しさん
09/10/19 17:51:25
なぜ文字化けするのかな・・・
しかも参照渡す前のメイン処理のメインメニューは同じやりかたで化けてないのに

206:幼稚園児
09/10/19 18:14:31
>>205
おじちゃんもうあきらめたらぁ?

207:デフォルトの名無しさん
09/10/19 18:15:25
文字化け解消

デバッグ環境の方に原因があった

208:デフォルトの名無しさん
09/10/19 18:16:39
中学生でもこんなアホな煽り方しない
マジでキチガイなんだろうな

209:胎児
09/10/19 18:16:40


210:デフォルトの名無しさん
09/10/19 18:26:57
c#やって見たけど挫折した馬鹿だろきっと

211:デフォルトの名無しさん
09/10/19 19:16:26
>>204 紅葉は10月だから

212:デフォルトの名無しさん
09/10/19 19:34:04
URLリンク(msdn.microsoft.com)
ここの暗号化なんですけど意図的に復号キーを変えると勝手に
パスワードの判定をしてくれるんですが、仕組みを教えて。

213:デフォルトの名無しさん
09/10/19 19:38:05
パスワードの判定って何?

それはそれとして、そのサンプル間違ってる部分があるから注意な
暗号化した後のバイト配列をEncodingで文字列化しちゃってるところ

214:デフォルトの名無しさん
09/10/19 19:50:30
暗号化するときに
for (int i = 0; i < Key.Length; i++) Key[i] = (byte)i;
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(Key, IV), CryptoStreamMode.Write);

復号する時は
for (int i = 0; i < Key.Length; i++) Key[i] = (byte)(i+5);
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(Key, IV), CryptoStreamMode.Write);

CryptographicException はバンドルされませんでした。ってエラーが出ます。


215:デフォルトの名無しさん
09/10/19 20:52:52
その鍵で計算中にそれ以上復号を続けられないような変な状態になったんだろう
必ず例外が投げられるってもんでもないよ

216:214
09/10/19 21:50:16
ども、内部でエラーが出るだけなんですね。
try catchで切り抜けます。

217:デフォルトの名無しさん
09/10/20 04:23:28
Xeno091017 正式版
URLリンク(koreawatcher.at.infoseek.co.jp)
・正式版として最初のリリース。
・Jane終了時の挙動のみ091015試作品から変更された。
────────────
予告どおり、正式版をリリースしました。×ボタンのツールチップ
ヒントに関して、真魚のソースを参考にして修正を試みました。
JaneNidaの開発は事実上終了です。2chの仕様変更などで
対応するかもしれません。

218:デフォルトの名無しさん
09/10/20 08:54:27
>>217
カエレ

219:デフォルトの名無しさん
09/10/20 09:02:41
>>217
プッ

220:デフォルトの名無しさん
09/10/20 09:14:33
>>217
なんぞこれ

221:デフォルトの名無しさん
09/10/20 09:42:20
いまならWPFでやった方が食いついたかもしれないのに、なぜこんなことをしたんだ。

222:デフォルトの名無しさん
09/10/20 10:00:10
プログラマご用達の2chブラウザ教えて

223:デフォルトの名無しさん
09/10/20 10:03:33
twintail2

224:デフォルトの名無しさん
09/10/20 10:05:46
プログラム書く人は2chを見るより、開発チームのブログを見てニヤニヤしてる方が楽しいことを知っています。

225:デフォルトの名無しさん
09/10/20 10:06:57
xyzzyの2ch-mode

226:デフォルトの名無しさん
09/10/20 10:07:56
>>223
それってC#で作られてるんだよね
製作者のプログラミングスキルってどんなもん?

227:デフォルトの名無しさん
09/10/20 10:11:47
>>226
女子大生になに期待してるの?
専スレで作者と一緒に機能拡張を考えたりデバッグしたりするのが楽しいんじゃないか

228:デフォルトの名無しさん
09/10/20 10:31:09
>>227
え?あの作者って女なの?

229:デフォルトの名無しさん
09/10/20 10:33:52
おれもツインテールにしよっと

230:デフォルトの名無しさん
09/10/20 10:54:17
.NET Frameworkの目玉機能の一つであるマルチコア最適化された並列処理技術の名称が
Parallel から Twintail に変更されますた。

231:幼稚園児
09/10/20 11:45:36
よーし、オラもツインテール改造して専ブラ作ってみるかな

232:デフォルトの名無しさん
09/10/20 12:55:14
俺もツインテールに乗り換え決定

233:タブブラウザ製作者
09/10/20 13:04:20
ツリービューのノードをドラッグして他のノードの上にドロップして親子の関係にしたいんだけど
実際にどうすればいいんでしょうか?

234:デフォルトの名無しさん
09/10/20 14:17:53
え!? VisualStudio2010って有料なの?

235:デフォルトの名無しさん
09/10/20 14:18:57
Express はでるよ。
でも Standard はなくなるようだからホビープログラマにはきついかもしれんね。

236:デフォルトの名無しさん
09/10/20 14:32:43
そろそろM$も動き出したなww
これからがっぽり稼ぐ作戦だろうなw

237:デフォルトの名無しさん
09/10/20 14:37:28
またアンチMS様か

238:デフォルトの名無しさん
09/10/20 14:57:38
おれはトロンで生き残る

239:デフォルトの名無しさん
09/10/20 15:04:33
下記をループで1~5Visible = falseにするのはどうすればいいでしょう
単純すぎて答えが返ってこないです^^;
いやマジでなぞです
ググってるんですが

lblNo1.Visible = false;


lblNo(Index).Visible = false;< とかやってみたんですけどね

240:デフォルトの名無しさん
09/10/20 15:11:50
事前に配列に入れとけば

241:デフォルトの名無しさん
09/10/20 15:18:50
twintailのソース見てみたけど・・・/(^o^)\

242:デフォルトの名無しさん
09/10/20 15:23:18
ラベルですから
その上で、配列ですか?・・・
思いつかない
でもかんがえてみる・・・
アリ

TextBoxにも言えるんですけどね

243:デフォルトの名無しさん
09/10/20 15:24:22
for (int i = i; i < 5; i++)
{
 string labelName = "lblNo" + i.ToString();
 this.controls[labelname].Visible = true;
}

244:デフォルトの名無しさん
09/10/20 15:27:51
table パネルとかのコントロールに入っている場合は
tablepanel 野中でさらに指定せなあかん。


ところで、toolStripContainer って一度フォームに貼っちゃうと
削除できないのかな?
さっきどうやって削除していいかわからなかったからフォームごといったん消しちゃったんだけど
なんか勘違いしてるのかな?

245:デフォルトの名無しさん
09/10/20 15:32:10
野中

246:デフォルトの名無しさん
09/10/20 15:34:41
>>244

オブジェクトの一覧選ぶコンボで該当選ぶとデザイナで選択されるから DEL 押して削除とか?

247:デフォルトの名無しさん
09/10/20 15:39:48
>>246
あぁ、うん。ごめん、それでいけた。
ヒントさんくす。

さっきもそれで懸想として消せなかったんだけど
選択がコントロール全体じゃなくて
コントロール内のコントロール選択した状態で削除しようとしてたからだ。
自分の不注意…。
前もこれで悩んだような記憶が…

248:デフォルトの名無しさん
09/10/20 15:39:51
>>243with244thk

for (int i = 1; i < 6; i++)
{
string labelName = "lblNo" + i.ToString();
this.Controls[labelName].Visible = false;
}

微修正しましたありがとです

249:デフォルトの名無しさん
09/10/20 15:41:10
ちっ、修正しやがったのか

250:デフォルトの名無しさん
09/10/20 16:26:31
>>247
普通にデザイナで選択出来るし
コンテキストメニュー → [選択] → [toolStripContainer1]

他にはドキュメントアウトラインでもいける


251:デフォルトの名無しさん
09/10/20 16:51:11
タブコントロールのページ名の部分が通常上になってますけど
アプリによっては左側面にあったりするものもあるんですが
それはどうやったらできますか?

252:デフォルトの名無しさん
09/10/20 17:22:12
調子に乗って質問です

ポーカゲームとか作るとき
カードをクラス化するとすると
5つのインスタンス作るんですか?

マジ5個のインスタンスに初期値つっこむのめんどいのですが・・・

253:デフォルトの名無しさん
09/10/20 17:57:01
TreeViewの状態を保存したいんだけどいい方法ないですか?

254:デフォルトの名無しさん
09/10/20 17:58:54
コンストラクタで初期化したら?

てか、そんなんに義務など無いんだから
嫌なら手続き的に書けば?
よっぽどめんどいと思うけど

255:デフォルトの名無しさん
09/10/20 18:02:38
>>251
URLリンク(msdn.microsoft.com)

256:デフォルトの名無しさん
09/10/20 18:02:39
>>253
CEREAL

257:デフォルトの名無しさん
09/10/20 18:11:11
>>252
5つのインスタンスが必要なら5つ初期化する必要があるのは当たり前。
普通は面倒なことなどない。それが面倒だということは、おかしな事をしてる

設計に関するヒントを挙げると、カードはクラス化する必要ない。
flags付きの列挙型でスート4種、ランク1~13、ジョーカーを作成。(空状態もあるといいかも)
あと、スート、ランクのマスクとか、エイリアス(Ace=One)とかを用意すればいいか。

258:デフォルトの名無しさん
09/10/20 18:35:40
MSDN変わったね。ライトウェイト表示が軽快でいい感じ

259:デフォルトの名無しさん
09/10/20 18:40:41
OS Windows2000 SP4
CPU AMD-450MHz
メモリ 184MB
ツインテールの作者ってマジでこんなスペックで開発してんの?
かなりもっさりじゃね?

260:デフォルトの名無しさん
09/10/20 18:42:47
ツインテ作者女子高生説ってまじかよ!へこむわ

261:デフォルトの名無しさん
09/10/20 18:42:55
3万あればモニタ+OS+P4の環境が揃えられるのに、どんだけ貧乏なの?

262:デフォルトの名無しさん
09/10/20 18:51:29
スート=カードのマーク・・・

私のC#にはFlagsAttributeなどない!
てゆうかすでに高度すぎてついていけない・・
でもありがとう


263:デフォルトの名無しさん
09/10/20 18:58:42
こんなんです
MyCard Card1 = new MyCard(rnd.Next(1, 13), rnd.Next(1, 4));
MyCard Card2 = new MyCard(rnd.Next(1, 13), rnd.Next(1, 4));
MyCard Card3 = new MyCard(rnd.Next(1, 13), rnd.Next(1, 4));

lblNo1.Text = Card1.myno.ToString();
lblNo2.Text = Card2.myno.ToString();
lblNo3.Text = Card3.myno.ToString();



lblMark1.Text = Card1.mymark.ToString();

lblMark2.Text = Card2.mymark.ToString();

lblMark3.Text = Card3.mymark.ToString();

ださいでしょ
なんとかならんのか

264:デフォルトの名無しさん
09/10/20 19:05:11
カードはフリップとかさせたり縦置き横置きしたりすること考えると
クラス化した方が汎用性あると思うけどなぁ。

265:デフォルトの名無しさん
09/10/20 19:07:36
そもそもトランプカードは52枚+ジョーカーで総枚数は固定というのが大きなポイントなのだから
普通はランダムで生成しちゃいかんもんだと思うが

266:デフォルトの名無しさん
09/10/20 19:10:23
生成してからランダムに並べ替えて使うんだよ普通は

267:263
09/10/20 19:19:48
クラスもこんな感じに2行ぐらいで出来ないかなと
出来ないと5行書くんですよ


for (int i = 1; i < 6; i++)
{
string labelName = "lblNo" + i.ToString();
this.Controls[labelName].Visible = false;
}

想像だけど7並べのPGつくると大変なことになりそう


268:デフォルトの名無しさん
09/10/20 19:22:52
KeyDownの判定をForm上で行おうとしてるんだけど、Formにボタンとか貼り付けると判定がされなくなってしまう
ボタンが無いときはちゃんと判定されるのに・・・どういうことなの?

269:デフォルトの名無しさん
09/10/20 19:40:04
>>264
表示の時はそれでいいが
内部もそれだと、アルゴリズム生成するときに処理がもたつく

270:デフォルトの名無しさん
09/10/20 20:02:55
CardPileとかのクラス作ればいいんじゃないの?


271:デフォルトの名無しさん
09/10/20 20:17:35
C#からケータイのデコメを送信できるライブラリってないでしょうか?
キャリアの違いを吸収してくれるものがあるとありがたいです。
もちろん有料でもよいです。
無ければソケットで実装しようと思います。

272:デフォルトの名無しさん
09/10/20 20:49:27
>>268
KeyPreview

273:デフォルトの名無しさん
09/10/20 20:58:24
>>272
ありがとうございます!

274:デフォルトの名無しさん
09/10/20 21:12:10
実行されることのないゴミメソッドを見つける方法はありますか?

275:デフォルトの名無しさん
09/10/20 21:18:50
FxCopでinternalまではチェック可
publicクラスのpublic/protectedメンバについてはアセンブリ外から呼ばれる可能性があるので一般には無理

276:デフォルトの名無しさん
09/10/20 21:26:41
>>263
もうなんか激しく WPF の ItemsControl でも使ってろって
感じがする。

277:263
09/10/20 21:29:07
だが断る

278:デフォルトの名無しさん
09/10/20 21:42:29
カードをコントロールとして扱うこと自体ダサい
ゲームならコントロール使わず全部自分で描くでしょ

279:263
09/10/20 21:52:45
初心者板ですし・・・
そんな腕はない!


280:デフォルトの名無しさん
09/10/20 22:10:25
なんかのサンプルでもカードにピクチャコントロール使ってた気がする
ブラックジャックだっけかな

281:デフォルトの名無しさん
09/10/20 22:11:26
WPFなんかでカードゲームフレームワーク作ったら面白そうだな
うまく設計したらかなり共通化できそう

282:デフォルトの名無しさん
09/10/20 22:12:28
>>277
使えば楽にできるよって意味で薦めたのに。

Card の見え方(Item)のテンプレート書いて ItemsSource に
MyCard とやらのコレクションぶち込むだけなのに。


283:263
09/10/20 22:16:52
WPF覚える余裕がない済まぬ
Randomって一瞬で処理されるから
Randomでカード作ってもみな同じカードになるような・・・
さらに作りこみます


284:デフォルトの名無しさん
09/10/20 22:24:29
>>283
もうちょっと人のレスの内容をゆっくり読み込みなさいw
>>265-266とか

285:デフォルトの名無しさん
09/10/20 22:47:43
今更なんだが、

URLリンク(msdn.microsoft.com)
Windows スタート キット > カード ゲーム スタート キット

286:デフォルトの名無しさん
09/10/20 22:51:00
2ちゃんねる用ブラウザ「twintail」Part25
スレリンク(software板)

ここ荒らしてるのおまえらだろw

287:デフォルトの名無しさん
09/10/20 22:54:51
そんなところ行かない

288:263
09/10/20 23:07:59
>>そもそもトランプカードは52枚+ジョーカーで総枚数は固定というのが大きなポイントなのだから
>>普通はランダムで生成しちゃいかんもんだと思うが

それは、取りあえずランダムで値をとってから数字とマーク(ハートとかのマーク)を
比較して同じじゃなきゃOK同じならもう一回やればいいと言う意味かと思っていたけど
いまランダムで同じ値が出てる現象の事を予知してたのかなと

>>生成してからランダムに並べ替えて使うんだよ普通は

意味がちょっと分かりませぬ
当方の理解力のなさによるものですが
生成してからランダムに・・・・??
どういうことでしょうか
教えてくださいませんか?すいません

289:デフォルトの名無しさん
09/10/20 23:08:36
頭悪すぎワロタっw

290:デフォルトの名無しさん
09/10/20 23:08:37
>>263
君に一番向いているのは、カードをユーザーコントロールとして
実装することなんじゃないかと思う。

それならお望みどおり描画はラベル等のに丸投げできるし、
ユーザーコントロールに"MyCard"を引数にとって表示に反映するメソッドを書けば、
「ださい」問題も解消できるでしょ。

291:デフォルトの名無しさん
09/10/20 23:21:07
>>288
あのさ、ランダムにやったら同じカード出て当たり前だろ
面倒だけど、ちゃんとカードの定義を作ってだな
それをランダムに配れよ

てか、おまえはまず、オセロ作れ
2色なら文句ないだろ
多分それさえもできなさそうだけど

292:デフォルトの名無しさん
09/10/20 23:26:36
重複のない乱数を作るには

とかググれ

293:デフォルトの名無しさん
09/10/20 23:32:51
まず綺麗にならべる、これが初期状態
入れ替えるところを乱数で2箇所決め、そこのカードを入れ替える
これを好きなだけ、十分混ざるまで繰り返す
もしくは頭から順番に、乱数で決めたどこかと入れ替えるを全カード行う

294:デフォルトの名無しさん
09/10/20 23:32:54
>>285
おおー、これだ
シンプルなゲームならWinFormsでポトペタ出来るんだな、ってちょっと感心した覚えがある

295:253
09/10/20 23:37:44
>>256
すいません、もうっちょっとだけ詳しく教えてください
ぐぐってもよくわからなかった

やりたいのはIEのお気に入りをタイトルとURLで保存したいのです
それとノードの構造と同じような保存用データも必要と思うんだけど
そっちはどのように作ればいいんでしょうか?

IEPageNodeクラスにLISTを作ってそこにIEPageNodeのインスタンスを追加していくというのを
考えているんだけど、もっとよい方法ありますか?

296:デフォルトの名無しさん
09/10/20 23:52:46
一言。カードをシャッフルするプログラムを作ってみ。

と 291 とか 293 は言えばいいのに。と思った。

297:263
09/10/20 23:54:44
らじゃ
皆さんありがとう

298:デフォルトの名無しさん
09/10/20 23:54:45
簡単なのは重複のない乱数を与えてソートだな
シャッフル式の方が教科書的だけど

299:デフォルトの名無しさん
09/10/21 00:17:31
重複ありでも充分に値の幅が広けりゃ実用的だよね。
ソートでのシャッフル。

300:デフォルトの名無しさん
09/10/21 00:40:54
LINQ使えば簡単だな

public static IEnumerable<TSource> Shuffle<TSource>(this IEnumerable<TSource> source) {
  var r = new Random();
  return source.OrderBy(x => r.NextDouble());
}

301:デフォルトの名無しさん
09/10/21 00:45:27
>>300
Orderbyに与えるデリゲートは一要素につき一回しか実行されないのは保証されるの?

302:デフォルトの名無しさん
09/10/21 03:52:47
プログラミング チャレンジ スクエア
URLリンク(www.microsoft.com)

自分が作りたいものに近いのを参考にしてやるといいかも
いろんな解説サイト見てても、実際どう使うかがわからないから
頭に入ってこない。やっぱり作りながら覚えるのがいいね

303:デフォルトの名無しさん
09/10/21 08:13:28
IComparableを実装して文字列でSort()すると
同じ文字列なのに順番が入れ替わるのは何で?そう言う物なの?

304:デフォルトの名無しさん
09/10/21 08:27:15
>>303
コンテナに複数の同じ文字列を入れているのか、違う文字列をそれぞれ入れてsort後に順番が変わってるのか、
話が全然変わってくるじゃないか。
お前、このスレの住民がお前の実装を分かってるエスパーだとでも思っているのか?

305:デフォルトの名無しさん
09/10/21 08:28:25
ArrayやListのソートはクイックソートだからアルゴリズム上の仕様です
安定なソートを自作するか, LINQのOrderByを使いましょう

306:デフォルトの名無しさん
09/10/21 08:31:19
安定じゃないソートアルゴリズムで同じキーの順番かわるのが嫌な場合は
サブキーでシリアルナンバーとかを使うとかがよくある回避方法だな。

307:デフォルトの名無しさん
09/10/21 08:31:20
>>301
逆に聞きたい。
こんな大雑把な指定しかしてないのに、なんでそんな細かいことが保証されると考えるんだ?
実際に試してみたほうが早いんじゃね。

308:デフォルトの名無しさん
09/10/21 08:33:02
>>305>>306
ありがとーやっぱそうか

309:デフォルトの名無しさん
09/10/21 08:33:50
>>307
試すより仕様書あたる方をすすめろよ脳筋



310:デフォルトの名無しさん
09/10/21 11:34:02
>>283
それはランダムの使い方自体を間違ってる。


311:デフォルトの名無しさん
09/10/21 11:34:51
しかし2.0では安定ソートが使えないのは悲しい。


312:デフォルトの名無しさん
09/10/21 12:02:04
Randomを毎回newするのはどうかしてるな

313:デフォルトの名無しさん
09/10/21 13:08:22
なんで、.suoにPCユーザー名の情報書き込んでるの?
気軽にソース配布できないんだが

314:デフォルトの名無しさん
09/10/21 13:18:02
suo配る必要はないとは言わないがまあそんなには困らんだろ

315:デフォルトの名無しさん
09/10/21 13:18:46
配布用のユーザー作れば解決

316:デフォルトの名無しさん
09/10/21 13:18:58
>>312
この間違いってなぜかやたら見かける

317:デフォルトの名無しさん
09/10/21 13:55:28
C言語のころだけど、rand()を毎回100回ループで回してから使ってる奴見たことあるぞ。
その方がよりばらけた数値が出るような気がするからとかいってたw
サイコロ振るわけじゃないんだから・・・

318:デフォルトの名無しさん
09/10/21 14:19:18
カードゲームの解説サイトあった

C#で始めるプログラミング---目次 - 1週間で学ぶIT基礎の基礎:ITpro
URLリンク(itpro.nikkeibp.co.jp)

319:デフォルトの名無しさん
09/10/21 15:24:10
C#2005EEってもうDLできないの?
2008があるからiso削除してしまった

320:デフォルトの名無しさん
09/10/21 15:35:24
どっかにあるけどゲ製の人ならXNAのバージョンをだなw

321:319
09/10/21 15:39:37
>>320
あれwバレた?w
ありがとう解決しました

322:デフォルトの名無しさん
09/10/21 17:42:57
>>301
URLリンク(msdn.microsoft.com)
こんな資料しか見つからなかった。開発時点での資料なのは確かだが、現在の位置付けは分からん
ただ、実装自体はこの資料の通りになっているようだ

323:デフォルトの名無しさん
09/10/21 18:37:41
ポインタ使わなければ出来ないプログラムって何かあります?

324:デフォルトの名無しさん
09/10/21 18:39:20
別に無いな

325:デフォルトの名無しさん
09/10/21 18:43:32
パフォーマンスを気にしなければ、特にない

326:デフォルトの名無しさん
09/10/21 18:52:29
ポインタって何?

327:デフォルトの名無しさん
09/10/21 19:03:46
マウスポインタ

328:デフォルトの名無しさん
09/10/21 19:23:19
ファミコン全盛時代はドラクエ1みたいなもの作れただけで
感動したけど、今のゲームって個人で作れるレベルじゃないしな
今の人ってプログラミングしてて感動したりするのかな?

329:デフォルトの名無しさん
09/10/21 19:43:35
そりゃすると思うけど。


330:デフォルトの名無しさん
09/10/21 20:00:40
オレは今日、半日でテトリスが作れて感動した!

331:デフォルトの名無しさん
09/10/21 20:08:55
別にアプリケーションはゲームだけじゃないしな

332:デフォルトの名無しさん
09/10/21 20:27:00
ゲームじゃないソフトってほとんどvectorであるしな
今更斬新なものってなかなかないような
せいぜい、最新OS対応させるぐらいだろうけど

あの頃はプログラミング楽しかったなー

>>330
後学のためにソース公開してよ。無理なら実行ファイルだけでもいいから

333:デフォルトの名無しさん
09/10/21 20:27:20
namespace TestP
{
 public partial class Form1 : Form
 {
  static public Bitmap[] Picmap = new Bitmap[128]; ←ここ
  public Form1()
  {
   InitializeComponent();
  }
  なんたらかんたら
 }
}
この場合どこで Dispose(); するの?

334:デフォルトの名無しさん
09/10/21 20:32:39
いらなくなったとき
判断できないなら放置するしかないが

335:デフォルトの名無しさん
09/10/21 20:53:36
これってusingつかえんかったかな?

336:デフォルトの名無しさん
09/10/21 20:56:17
>>㌧
放置することにします。


337:デフォルトの名無しさん
09/10/21 20:56:33
つかえねえよw

338:デフォルトの名無しさん
09/10/21 20:57:36
レス番わすれた>>334

339:デフォルトの名無しさん
09/10/21 20:58:41
ショボンとなった

340:デフォルトの名無しさん
09/10/21 21:02:23
最近初めてプログラムの本を買って読んでるんだけど、C#エッセンシャルズ2版がなんかしっくりくる。
本の分厚さも2センチいないで持ちやすい!
でも、.Net 2.0とか古そうだしできれば3.5のを読みたい。

何か2センチ以内で.Net3.0~を対象としていて大体のことを網羅している本ってない?

341:デフォルトの名無しさん
09/10/21 21:07:21
.NET 3.0/3.5は2.0への機能追加なので、2.0の知識がそのまま使える。
というわけで、古いとか心配しなくても大丈夫。まずはその本で基礎を固めるのがいいと思うよ。

342:デフォルトの名無しさん
09/10/21 21:13:45
プログラム経験は4年!
C,C++,C#,VB,Javaは大方勘でかける!
だがいまだにオブジェクト指向のこと聞かれても答えられない!
意味もわからない!

うふう、うふふふふふふっ

343:デフォルトの名無しさん
09/10/21 21:29:48
>>333
次にいつ使うか分からないけど、生成コストが高いので残しときたい。でも、メモリ使用量が多いので開放したい。
こんな時の妥協案に、"弱い参照(System.WeakReference)で保持してGCの対象にする"なんて方法もある。

多用する類の物ではないけど、使いどころによっては効果的。

344:デフォルトの名無しさん
09/10/21 21:35:05
>static public Bitmap[] Picmap = new Bitmap[128]; ←ここ
生成したのは配列だけで、Bitmapは生成されてないとか言う落ちだったりして


345:デフォルトの名無しさん
09/10/21 21:38:39
ありそうなのが怖い

346:デフォルトの名無しさん
09/10/21 21:39:22
WeakReferenceは結構すぐ解放されちゃうからそういう意図のキャッシュには使いづらいよ
static Dictionary<WeakReference, Bitmap>みたいにキャッシュのキーとして使ったりすることが多い

347:デフォルトの名無しさん
09/10/21 21:41:07
あれ?IDisposableだからってGCに任せちゃ駄目なんじゃなかった?

348:デフォルトの名無しさん
09/10/21 21:45:16
リークという意味では別にGC任せでも構わん
早くリソースを回収したいからDisposeを使うだけ

349:デフォルトの名無しさん
09/10/21 21:51:18
ファイナライザくらい実装してるだろ。

350:デフォルトの名無しさん
09/10/21 21:52:22
using(static public Bitmap[] Picmap = new Bitmap[128])
{
}

351:335
09/10/21 21:58:55
>>350
は俺じゃないよ、しらねーよ

352:デフォルトの名無しさん
09/10/21 23:12:01
//myclassクラス宣言
public myclass[] mc = new myclass[10];

これってクラスの配列みたいなんですけどC#でこれが普通なんですか
入門書には出てない書き方なんで・・・・

353:デフォルトの名無しさん
09/10/21 23:13:22
>>332
URLリンク(www.nicovideo.jp)
ほれ、テトリス

354:デフォルトの名無しさん
09/10/21 23:18:11
>>352
new myclass[10]のところ?
これは 「myclassのインスタンスを格納する要素数10の空の配列を作る」 という意味
最も基本的な配列の作り方なのでほんとにその本に出てないなら今すぐ焼き捨てるべき

355:デフォルトの名無しさん
09/10/21 23:18:19
>>352
入門書にはどう書いてあったの?

356:デフォルトの名無しさん
09/10/21 23:42:18
>>354
>>355
ネットみていたら
//myclassクラス宣言
public myclass[] mc = new myclass[10];
って書いてあったんですけど んこれって配列じゃね?
int []a = new int[100];
あった配列だな・・・
class宣言は
myclass mc = new myclass();
丸括弧だよ!!
じゃあなんだ これは、public myclass[] mc = new myclass[10];意味は何となくわかるけど
みたことないぞ
ググって例がみてもあまりないなあ
よし聞いてみよーとという展開です

357:デフォルトの名無しさん
09/10/21 23:46:36
配列のインスタンス化とクラスのインスタンス化を区別しろよ

358:デフォルトの名無しさん
09/10/21 23:48:38
int[] → intのインスタンスの配列
string[] → stringのインスタンスの配列
myclass[] → ○の△の□
わかるでしょ?これだけのこと

359:デフォルトの名無しさん
09/10/21 23:50:04
>>353
過去にタイムスリップして作ったのか?
すごいじゃないな

360:デフォルトの名無しさん
09/10/21 23:56:46
>>357
>>358
おっしゃる通りです
mc[1]~mc[10]のインスタンスができたー
でもやってみないと半信半疑ですね
両名さんありがとうです

361:デフォルトの名無しさん
09/10/22 00:00:47
>>353
音切ってたから
イキナリフリーズかと思ってみてた
休みの日見るからとっておいてくださいねって
あんた一時間って天才か

362:デフォルトの名無しさん
09/10/22 00:10:43
オブジェクト参照がオブジェクト インスタンスに設定されていません。
lbl.Text = mc[1].myno.ToString();
と思ったら落ちた
明日に続く

363:デフォルトの名無しさん
09/10/22 00:10:58
30歳ぐらいになったらプログラミング作業速度って落ちるのかな?

364:デフォルトの名無しさん
09/10/22 00:23:48
落ちない。むしろ上昇する。

365:デフォルトの名無しさん
09/10/22 00:25:02
>>363
普通はそれはないよw
年齢をいい訳にしてる人は、本当は若いときから単に無能だっただけ。

366:デフォルトの名無しさん
09/10/22 00:25:07
そんなに頭使わないから平気じゃない?
経験もある程度重要な分野だし。
脳の老化は始まってるだろうけど
その歳から影響を受けるのって数学者とか特殊な人たちでしょ

367:363
09/10/22 00:28:11
安心しました
30なんですが、プログラミングを趣味でやろうと思ってて
今から覚えられるか不安だったけどがんばってみます

368:デフォルトの名無しさん
09/10/22 00:31:22
30から趣味で始めるなんて随分と奇特な人もいるもんだな
まあプログラムに定年はないし、やる気と能力さえあればおじいちゃんでも小学生でも出来るからな

369:デフォルトの名無しさん
09/10/22 00:33:30
マ板へ誘導
URLリンク(pc11.2ch.net)


370:330
09/10/22 00:45:25
>>353
実はその動画に触発されて作ったw

といっても実際に書いたコードはIronPythonで、
C#ですでに構築している自作のゲームエンジン上で動かしている。
(IronPythonでゲームが実装できるような仕組みにしている)

ソースコードは公開できない。スマン。

371:デフォルトの名無しさん
09/10/22 00:51:54
この1時間の人はすごいよな
俺、IDEないとバグ出まくる気がする

372:363
09/10/22 00:58:58
win3.1のころはって言ってるからまだ20代かな

MS-DOSのころにQuick CやHigh Cコンパイラとか当時やってた

373:デフォルトの名無しさん
09/10/22 01:11:33
結局、同じものをいろんな処理系で何度も構築するのが一番勉強になるからなぁ。
1回目より2回目、2回目より3回目、
確実に無駄が減ってくる。

374:デフォルトの名無しさん
09/10/22 01:31:02
でも1年もやってないとその知識が0に戻ってしまうんだけど・・・
またオブジェクト指向はなんたるかを覚え直し

375:デフォルトの名無しさん
09/10/22 01:35:41
それはないわ

376:デフォルトの名無しさん
09/10/22 01:40:31
そりゃわかったつもりになってるだけだからだ
要するに元から知識0


377:デフォルトの名無しさん
09/10/22 01:40:54
分かったような分からないようなって言ってるいる奴は間違いなく分かってない

378:デフォルトの名無しさん
09/10/22 06:22:31
「身につく」とか「理解する」ものであって、覚えるものではないし。

379:デフォルトの名無しさん
09/10/22 07:51:27
結構腰を据えて勉強しないとわからんのもあるよね。
とりあえず組んでみるだけだとわかった気になっておわること多い。

380:デフォルトの名無しさん
09/10/22 09:28:33
オブジェクト指向を全く知らない頃にCでオブジェクト指向のプログラムを
苦労して作ってたから、オブジェクト指向という概念と
それをサポートする言語を知ったとき感動したっていうか
最初からこっちでやればよかったって思ったよ。

381:デフォルトの名無しさん
09/10/22 09:32:11
言語は新しいものに限るって見知らぬ老人が言ってた

382:デフォルトの名無しさん
09/10/22 09:55:26
CopyFromScreenで、デスクトップの画面をキャプチャーできるじゃん。
これって自分自身のフォームもキャプチャされるけど、
自分自身はキャプチャされない方法ってあるの?


383:デフォルトの名無しさん
09/10/22 10:01:29
自分自身を非表示にすれば良いんじゃね

384:デフォルトの名無しさん
09/10/22 11:31:34
表示されてる場合、その裏側に何が書かれてるのかは誰も知らないからな

385:デフォルトの名無しさん
09/10/22 11:58:20
誕生日を入力すると、その人の現在の年齢を表示するプログラムを作っています。
DateTime birthday;として誕生日を格納して、現在の日付との差分をTimeSpan ts;に代入するところまではできました。
ただtsは時間の差を最大で日付単位でしか得られないので困っています。

単純に ts.Days / 365とするとうるう年などの関係で年齢がずれることがあります。

なにかうまくやる方法はないでしょうか

386:デフォルトの名無しさん
09/10/22 12:03:25
>>385
君はググったことがあるかい?

387:デフォルトの名無しさん
09/10/22 12:43:37
ないから聞いているんです

388:デフォルトの名無しさん
09/10/22 12:49:11
まず年を計算して月日が前か後かで判断すればいいだけじゃね?

389:デフォルトの名無しさん
09/10/22 12:51:38
>>387
宿題ご苦労さん
でも自分で調べてみるくらいしような
いつも誰かが教えてくれるわけじゃないぞ

URLリンク(s.luna.tv) %E5%B9%B4%E9%BD%A2%E3%80%80%E8%A8%88%E7%AE%97

ここの一番上でも見てろカス

390:デフォルトの名無しさん
09/10/22 12:52:31
ミスったw
URLリンク(www.google.co.jp)

391:デフォルトの名無しさん
09/10/22 13:03:52
初歩的な質問ですいません

あるファイルがロックされているかどうかを調べる方法が分かりません
ロックされていなければ同名で上書きさせたいのですが
上書き失敗したら無視のループ、書き込めたらbreakで対処しています
上書きを実行する前にロックされているかどうかを調べたいのですが
良い方法はありませんでしょうか?

環境は windows xp、visualstudio10b、言語は.NET c#です

392:デフォルトの名無しさん
09/10/22 13:09:57
事前チェックじゃなくてtry-catchでやる

393:デフォルトの名無しさん
09/10/22 13:14:59
387は誰か知りませんが、バカのふりして煽って楽しいかな

>>388
やっぱそういう方法でチマチマするしかないんですね、どうもです。
VBのDateDiffみたいに汎用の方法があるのかと思ったんですが・・・


394:デフォルトの名無しさん
09/10/22 13:17:40
>>393
時刻サイトからまんまパクる

395:デフォルトの名無しさん
09/10/22 13:27:03
DateDiffって年齢計算に使えたっけ

396:デフォルトの名無しさん
09/10/22 13:29:56
VBのDateDiffを使いたいのならC#からでも使えるけど、そういうことじゃないんだろうな

397:391
09/10/22 13:31:51
>392
レス有り難うございます、、ただ、try-catchだと、ロックされてない時に上書きが実行されてしまいます
説明不足でした、最低1度ロックされ、そのロックが解除された事を確認した上で
上書き実行したいので、ロックされているかどうかを監視したいのです
監視ループでFile.Openを試みるのも考えたのですが、もっとスマートに
ファイルの状態を返す様な物は無いのかと思い、質問した次第です




398:デフォルトの名無しさん
09/10/22 13:35:20
>最低1度ロックされ、そのロックが解除された事を確認した上で
>上書き実行したいので

確認したときアンロックだったとしても
実行するまでにロックされたらどうすんだろ

399:デフォルトの名無しさん
09/10/22 13:35:42
>>397
追記オープンでいいのでは?

400:391
09/10/22 13:50:43
アンロックされているかどうかは確認しません

ロックされているかどうかだけを確認して
ロックされていれば、過去にロックされたというフラグを立てます
フラグが立っている状態なら、ロックされてるか確認はせず、上書き実行を試みます
その時に再ロックされていても書き込めないだけで
上書きが成功すればフラグを下ろし、またロックされたかどうかをチェック開始する感じです

この一連の流れで「ロックされているかどうか」をチェックする方法が分からないんですorz

401:デフォルトの名無しさん
09/10/22 13:52:56
ふ~ん

402:デフォルトの名無しさん
09/10/22 14:01:09
汎用的なクラスを作って、別のプロジェクトを作った時に利用しようと思っても
どのプロジェクトでそのクラスを作ったかわからなくなり、また新しく作ったりするんですが
そうならないように汎用的なクラスをまとめておきたいんですけどどうすればいいでしょうか?

403:391
09/10/22 14:02:21
現状こんな感じなんですが・・・

Boolean bgmfilelock = false;

private void Timer_Tick(object sender, EventArgs e) {
 // ファイルが開けるか確認する
 try {
  File.Open("aaa.txt", FileMode.Open, FileAccess.Read);
 // 開けなかったらフラグを立てる
 } catch( System.IO.IOException ){
  bgmfilelock = true;
 }

 // 過去に一度でもファイルが開けなくなったら(ロックされた事があれば)
 if( bgmfilelock ){
  // ファイルの上書きを試みる
  try {
   File.Copy("aaa.txt", "bbb.txt", true);
   bgmfilelock = false;
  } catch( System.IO.IOException ) {
  }
 }
}

一度ロックがかからないと上書きされない、という動作は達成してるんですが
チェックの為だけにOpenはどうかなぁと思って、もっと単純に出来ない物かと
ファイルの状態を知る方法は無いんでしょうか?

404:デフォルトの名無しさん
09/10/22 14:04:48
ファイルロックにも色々あるけどな

405:デフォルトの名無しさん
09/10/22 14:06:49
>>404
だからなんだよカスw

406:デフォルトの名無しさん
09/10/22 14:11:20
何がしたいんだかわかんね

407:406
09/10/22 14:13:13
「一度ロックがかからないと上書きされないという動作」
をしたいんです

408:391
09/10/22 14:14:17
↑の391です、すいません

409:デフォルトの名無しさん
09/10/22 14:17:13
その場合

・ロック確認
・別プロセスがロック
・別プロセスがアンロック
・ロック確認

こういった時にロックかかったか検出できなくない

410:デフォルトの名無しさん
09/10/22 14:17:34
というよりもっと上位のレベルの「何がしたいのか」を説明したほうがいいような・・・
なんかもっと良い解決法がありそうな気がするそれ

411:391
09/10/22 14:28:48
はい、では具体的に書きます

定期的に別プロセスで再生されるmp3ファイルが有るのですが
このままでは同じ曲を延々とループしてしまいます。

そこでタイマー1のイベントで10秒毎に、別のmp3を同名で上書きさせています
ただ、常に上書きではどんどん曲が変わってしまうので
タイマー2により最低3分しないとタイマー1が作動しないようにし
3分経ったら、タイマー2を停止させて、タイマー1を作動、10秒毎に上書きに挑戦し
書き込み成功したらタイマー1を停止し、タイマー2を作動させています

その仕組みを「上書きされて3分以上経ち、かつ最低1回再生されたら、別の曲を上書き」
にしたいんです、再生している間はファイルがロックされますので
ロックされたかどうかを検知すればいいかなと


412:391
09/10/22 14:34:54
そのmp3は、10秒以上絶対に再生されるので
10秒毎にファイルがロックされているかどうかを検知し
一度ロックがかかったら、それ以降は上書きを試み続け
ロックが解放され次第上書きして、成功したら3分待つ

とすれば3分後でも、一度も再生されていない場合は上書きされないので
やはり、ロックされているかどうかのチェックは必要だと思うんですが

413:デフォルトの名無しさん
09/10/22 14:44:06
他アプリで再生中かどうかを検出したいって事?

414:391
09/10/22 14:50:20
>413
そうですね
ただプレイヤーによっては再生中にバッファを作ったりして、ロックしない物もあるので
その場合は3分以上経っていれば直ちに上書きしたいので再生中かどうかと言うより
上書きできる状態かどうか、を検出したいんです


415:デフォルトの名無しさん
09/10/22 14:51:44
再生してるソフトを改造すれば

416:デフォルトの名無しさん
09/10/22 14:53:48
プレイヤーによってロックしない物もあるということは、、、
プレイヤーによってループ再生中ずっとロックしっぱなしものもある?

417:デフォルトの名無しさん
09/10/22 14:54:21
なるほど
これのことか・・・

URLリンク(msdn.microsoft.com)

418:デフォルトの名無しさん
09/10/22 14:57:16
ある

419:デフォルトの名無しさん
09/10/22 15:00:02
>>417
違うんじゃないか?

420:391
09/10/22 15:02:38
>415
他の人が作ったプレイヤーを改造するほど技術がありません^^;

>416
ロックしっぱなしは有りますが、その場合同じ曲が何度も再生されるのは仕方ないと思ってます
「定期的に再生される」と書きましたが「再生されない時間」も有るため
そのタイミングで曲の変更を行っています

>417
そんなに難しい事じゃないです^^;;;
ロックしているプロセスが何であれ構いません、秀丸で排他制御させてmp3を開いてても同じです
単純にファイルがロックされているかどうかを知りたいだけなんですが・・・

421:デフォルトの名無しさん
09/10/22 15:04:47
だからその確認には実際に開いてみるのが一番手っ取り早いっていってるじゃんか

422:デフォルトの名無しさん
09/10/22 15:08:45
そのプレイヤーはそのMP3ファイルが無いとどうなる?


423:デフォルトの名無しさん
09/10/22 15:15:00
System.IO.FileMode.Appendで開く

424:391
09/10/22 15:33:49
私の知らない File.Status() みたいな物がもしかしたらあって
ファイルのロック状態を取得する方法があればと思って聞いたんですが
やっぱり、>403で書いた様な方法しか無いと言うことですね

みなさん有り難うございました><


425:デフォルトの名無しさん
09/10/22 15:42:57
>>424
その手続きが面倒でも、クラスにしてしまえば利用する分には楽じゃん?

426:デフォルトの名無しさん
09/10/22 20:52:26
>>402
クラスライブラリを作る
そこまでするほどでもないようなくだらないものは共有しないでコピーした方がいい

427:デフォルトの名無しさん
09/10/22 21:04:03
ここの住人には心病んでるやつもいたんだな

428:デフォルトの名無しさん
09/10/22 21:24:19
自己紹介乙

429:402
09/10/22 21:25:18
>>426
忘れ去られてるかと思いました。ありがとうございます。
そのやり方だとやっぱりどこに何があるか忘れてしまうし
DLLにするほどでもないし
ファイルをどこかのフォルダにまとめてコピーして使うという感じがいいのかな?
みなさんはどうしてるのか気になります

430:デフォルトの名無しさん
09/10/22 21:28:18
>>429
>そのやり方だとやっぱりどこに何があるか忘れてしまうし
もうどういうやり方にしてもダメだろそれ・・・

431:デフォルトの名無しさん
09/10/22 21:29:07
もう全部コードスニペットにしちゃえよ

432:デフォルトの名無しさん
09/10/22 21:35:01
プログラミング以前に日常生活に支障が出てそうだな

433:デフォルトの名無しさん
09/10/22 21:53:13
コード管理でググると色々なやり方があるみたいね。
ファイルをフォルダに纏めといて・・・ってやり方してる人もいた。


434:デフォルトの名無しさん
09/10/23 02:42:31
俺は逐一DLL化してしまうかなぁ、、、
この前なんてウィンドウのアイコンをとってリストでイメージ返すだけのDLLなんてのも作ってた。

プログラム的にはよろしくないってのも承知の上で

435:デフォルトの名無しさん
09/10/23 08:44:12
オナニーは良くない

436:デフォルトの名無しさん
09/10/23 09:14:06
俺は結構プロジェクトを使いまわすかな

管理はVSS使ってる

ひとまずDLLにするのは本当にデバッグが終わってもう修正の必要がない時だけにしてる
(配布しなければいけない時もあるのでバグ覚悟で配布するときもあるけど)

DLLにしちゃうと使いまわしてバグが出た時にめんどくさいんだよ・・・

437:デフォルトの名無しさん
09/10/23 10:10:20
DLLを野放図に作成するのは賛成できないなぁ。
やはり基本どおり、ある程度再利用可能な形に使いやすくまとめた形でエクスポートすべきだと思う。
(エクスポートという用語自体が古臭い用語だというのはさておいてだ)

438:デフォルトの名無しさん
09/10/23 11:23:29
ListViewコントロールでスクロールバーをスクロールさせるメソッドかプロパティって
EnsureVisibleしか無いの?

439:デフォルトの名無しさん
09/10/23 11:56:26
TopItemもあるよ

440:デフォルトの名無しさん
09/10/23 12:36:04
webBrowser1のDocumentCompletedの中で
InvokeMember("click");などして更新した際の読み込み完了は、
どう取得すればよいでしょうか?

Whileで完了待ち以外でお願い致します。

441:デフォルトの名無しさん
09/10/23 12:45:49
>>439
ありがとー やっぱこの当たりしか無いのか・・・結構不便だな・・・
システム全体のマウススクロール量が3行だけど自アプリ内だけスクロール量を1行にしたくてアレコレ調べていたんだけど
VC++MFCならCListCtrl::Scroll()で簡単にできるんだけど.NETのListViewだと簡単な方法が見つからない・・・
結局WM_MOUSEWHEELをハンドリング→スクロール位置を特定するために→TopItem取得→
→ListViewの各行の高さを取得してリストの表示可能行数を計算→EnsureVisibleで無理矢理スクロール
もしくはMFCのListCtrlをCOMコンポーネントにして貼り付けるやり方しかないのかな・・・面倒臭すぎるわ・・・

442:デフォルトの名無しさん
09/10/23 12:52:05
> 自アプリ内だけスクロール量を1行にしたくて
これだけなら別に大した計算もEnsureVisibleも必要なくTopItemだけで十分だと思うけど

443:デフォルトの名無しさん
09/10/23 12:54:19
>>442
どうやってやるの?
自分も最初はそう思っていたけどイザやってみると簡単にはできなかったよ

444:デフォルトの名無しさん
09/10/23 12:57:02
>>442
あ、ごめん簡単に出来るわ
TopItemって取得だけじゃなくて設定も出来るのかすまん

445:デフォルトの名無しさん
09/10/23 13:03:08
ちなみにWndProcのオーバーライドも不要
MouseWheelイベントの引数MouseEventArgsはHandledMouseEventArgsにキャストできて、
このHandledをtrueに設定すればデフォルトの動作を無効化できる

446:デフォルトの名無しさん
09/10/23 13:07:15
>>445
ありがとう へーこんなんもあるんだね
ずっとVC++やっていて最近C#始めたからこの当たりの勝手がよく分からなかったんで勉強になったわー

447:デフォルトの名無しさん
09/10/23 17:26:23
質問よろしいでしょうか?
ファイルの起動を監視して起動したファイルのデータ(名前やパスなど)を取得する方法がわかりません
よろしくお願い致します

448:デフォルトの名無しさん
09/10/23 18:07:49
Processクラスあたりのじゃだめなのかな?

449:デフォルトの名無しさん
09/10/23 19:26:25
監視する専用のクラスがあったな
忘れたけど

450:デフォルトの名無しさん
09/10/23 20:32:26
>>436
リンクしている使い回しロジックではバグらないとでもいうのか・・・
分離しとけばアセンブリをコピーすれば済むのに、リンクしなきゃならんだろが。

451:デフォルトの名無しさん
09/10/23 20:50:53
じゃあ結局ソースコードはどう管理すればいいの?
どこにどのソースあるか忘れるから資産が増えないんだけど

452:デフォルトの名無しさん
09/10/23 20:52:55
たとえば、IO関連なんて毎回書いてて面倒
バイナリで書き込むにはどうするんだっけ?って毎回ヘルプみて
JISで読み書きするにはどうするだっけ?とか

てか、一行でファイル書き込みできるようにしてくれよな

453:デフォルトの名無しさん
09/10/23 20:53:07
資産が四散

454:デフォルトの名無しさん
09/10/23 20:55:29
フォルダにコード片つっこんどいて grep する
これで充分

455:デフォルトの名無しさん
09/10/23 20:56:25
そういうものの成れの果てがphpじゃないか

456:デフォルトの名無しさん
09/10/23 21:12:44
>>452
System.IO.Fileに結構その手のメソッドが用意されてるけどな

457:デフォルトの名無しさん
09/10/23 21:16:10
URLリンク(dobon.net)
このサイトがあれば何もいらない

458:デフォルトの名無しさん
09/10/23 21:33:45
StreamWriterでもさ、List<string>とかの場合
何度もStreamWriterを呼び出してインスタンス作らせるって無駄があるから
List<string>を引数として書き込めるメソッドを作るわけよ
そういう入出力クラスを毎回書くのが面倒

459:デフォルトの名無しさん
09/10/23 21:37:38
>>457
この人は今さら何を言ってるの?

460:デフォルトの名無しさん
09/10/23 22:59:26
>>458
>>456 じゃないけどだからそれなら File.WriteAllLines が
あるだろ
それか、string が各々行じゃないなら String.Concat ->
WriteAllText か

一行だろこれ。

461:デフォルトの名無しさん
09/10/23 23:02:43
>>460
それ2008からあるの?
知らなかったわw

462:デフォルトの名無しさん
09/10/23 23:06:50
2005(.NET 2.0)からあるわい

463:デフォルトの名無しさん
09/10/23 23:12:58
2008C# で作った dll を 2003C# で作ったプログラムから使えるって本当ですか?

464:デフォルトの名無しさん
09/10/23 23:14:37
2001のころの参考書見ながらだからずっと古いやり方してたわww
やっぱ参考書は旬のモノを買わないとだめだなw

465:デフォルトの名無しさん
09/10/23 23:16:50
たまにヘルプでも眺めるのもいいもんだよ

466:デフォルトの名無しさん
09/10/23 23:19:07
>>464
それ Generics すらないんじゃないか?
はっきりいってその古さだとたぶんゴミ知識だぞ現状。
ごくごく基本的なことは別として。

467:デフォルトの名無しさん
09/10/23 23:35:29
Genericsもないよw
たまたまここで知ったから使ってたけど

C#300の技って奴だけど、その知識が焼きついててそればかり使ってたな
というか、ライブラリ多すぎだよ

468:デフォルトの名無しさん
09/10/23 23:39:29
無知をライブラリの多さにせいにしたかw

469:デフォルトの名無しさん
09/10/23 23:41:26
>>467
別にライブラリやイディオムを全部覚える必要は無いんだよ。
必要に応じて使い方が分かればそれで済むこと。

―まあ、だからJavaやC#はネットでググってサンプルコードを
コピペするだけの作業、なんて揶揄されたりするんだがな。

オレは別にそれが悪いとは思わない。それで最短の時間で開発が進められるなら。

470:デフォルトの名無しさん
09/10/23 23:48:08
いや、確かに情弱だけどさ
サイトもFile.WriteAllLines使ってなくて、2003の頃のサンプルだし
まあそりゃ10年近く経ったら言語も進化するよね

というか、新しいクラスってどうやって見つけてるの?

471:デフォルトの名無しさん
09/10/24 00:11:11
Visual Studio 2005で.NET3.0って使えないの?
使えるようにする裏技とか無いの?

472:デフォルトの名無しさん
09/10/24 00:12:52
ない

473:デフォルトの名無しさん
09/10/24 00:15:02
3.0のdll参照したら使えるよ
もちろんWPFデザイナなどが使えるわけではないけど

474:デフォルトの名無しさん
09/10/24 00:15:54
マジで?やってみる

475:デフォルトの名無しさん
09/10/24 00:19:30
WPF用のプラグインが出てなかった?
今もダウンロードできるかどうかは知らないけど。

476:デフォルトの名無しさん
09/10/24 00:21:04
ない

477:デフォルトの名無しさん
09/10/24 00:21:55
あれは未完成で使い物にならん
あんなゴミ使うくらいなら2008Expressを使った方が遥かにいい

478:デフォルトの名無しさん
09/10/24 00:34:06
でももうちょっとでVS2010が出るから今2008を買う気にはなれない

479:デフォルトの名無しさん
09/10/24 00:38:13
MSDNだから只で手に入るお
待ち遠しいお

480:デフォルトの名無しさん
09/10/24 00:38:27
買わなけりゃいい

481:デフォルトの名無しさん
09/10/24 00:42:55
EEだしな

482:デフォルトの名無しさん
09/10/24 00:54:14
EEでどこまでがんばれるかな。
フリーソフト作家として問題なくやってけるだろうか

483:デフォルトの名無しさん
09/10/24 01:02:25
EEってどんな制限があるの?
知っているのは
開発環境用のプラグイン、MFC、ATLが使用不可。64bit版非対応、モバイル開発不可くらい。あと何か致命的に困ることって何かある?

484:デフォルトの名無しさん
09/10/24 01:03:00
うん

485:デフォルトの名無しさん
09/10/24 01:14:05
- セットアッププロジェクトが作れない。
- アイコンライブラリが付属しない。

でもメニューやツールバーの標準アイテムにアイコンが入ってるのは謎。
あれライセンス的にどうなってるのか

486:デフォルトの名無しさん
09/10/24 01:22:07
知り合いの学生に頼み込んでDreamSpark入ってもらえば

487:デフォルトの名無しさん
09/10/24 01:35:13
UMLもないね

488:デフォルトの名無しさん
09/10/24 01:38:59
2008 って .NET 4.0 使えるようになると思う?
SP3 はあるのか?

489:デフォルトの名無しさん
09/10/24 02:03:15
今のところ情報は出てないっぽいんで、ないと思っていた方が後でガッカリしなくて済むぞ

490:デフォルトの名無しさん
09/10/24 02:08:02
MSとしても特にメリットは無さそうだし

491:デフォルトの名無しさん
09/10/24 05:21:49
>>483
ここはC#のスレだからMFC/ATL関係ないし64bit版も問題ない

492:デフォルトの名無しさん
09/10/24 07:11:08
>>459
HPを紹介してくれた
親切な人です
DB関係でいいHPありませんか

493:デフォルトの名無しさん
09/10/24 08:33:33
EEってVSSも使えないよね、たしか。
個人でやる場合はSVNとか使うから別にいいけど。

494:デフォルトの名無しさん
09/10/24 08:57:26
いまどき、VSS使ってるとこなんてろくなとこじゃない。 MSでさえ使ってないわけだし。

495:デフォルトの名無しさん
09/10/24 09:21:23
>>494
じゃあMSは何を使ってソース管理してるんだ?

496:デフォルトの名無しさん
09/10/24 09:24:05
VSS

497:デフォルトの名無しさん
09/10/24 09:34:02
なんだ>>494は正しいじゃないか

498:デフォルトの名無しさん
09/10/24 09:35:15
Windows7ってxml読めないんですか?
せっかく.NETで作ったのにxmlファイルが読めないらしいです…

499:デフォルトの名無しさん
09/10/24 09:35:17
Microsoft Dave Probert 氏の Windows Kernel に関する講演会

[質問] では、Visual SourceSafe などは使っていないのか?

Visual SourceSafe は使わない。あれはビギナー (初心者) 向けのソフトだ。

URLリンク(d.hatena.ne.jp)


500:デフォルトの名無しさん
09/10/24 10:26:41
>>498
意味不明

501:デフォルトの名無しさん
09/10/24 12:23:31
>>500
XmlSerializerでオブジェクトをxmlファイルに保存したものが
Windows7だと読み込めないみたいなんですよねえ


502:デフォルトの名無しさん
09/10/24 12:27:54
>>501
らしいとか、みたいとか、なんだ。
そんないいかげんな言葉じゃなくて実際に試してくれ。
実際に試せば原因だって分かるだろ。
例えばmsxmlは複数のバージョンがあるから、.NETが古いバージョンのものを参照していれば読めなくなることだってあるだろうさ。

503:デフォルトの名無しさん
09/10/24 12:36:41
>>501
おまえのそのOS、5元の奴じゃね?
普通にシリアライズしたもの読み書き出来るんですけど
64bitでも

504:デフォルトの名無しさん
09/10/24 12:41:27
スレ違い。Windows 7 スレいけば?

505:デフォルトの名無しさん
09/10/24 12:43:30
え?スレ違いかな?

506:デフォルトの名無しさん
09/10/24 12:53:28
全然スレ違いじゃない。

507:デフォルトの名無しさん
09/10/24 12:56:04
やり方が悪いんだろ。コードも示さずに文句言うなハゲ

508:デフォルトの名無しさん
09/10/24 13:00:31
やった
バージョンアップ案件で金が取れる!

509:デフォルトの名無しさん
09/10/24 13:14:21
Win7だと.NET1.0と1.1は完全に動かなくなるんだよね?

510:デフォルトの名無しさん
09/10/24 13:19:28
マジ?

511:デフォルトの名無しさん
09/10/24 13:22:30
黒歴史だから消えてくれた方がありがたい

512:デフォルトの名無しさん
09/10/24 13:32:22
Win7のXPモードでも.やっぱNET1.1はサポートされないの?

513:デフォルトの名無しさん
09/10/24 13:37:22
MSDNっていつから変わったんだ?
スクリプトフリー表示さいこうじゃまいか

514:デフォルトの名無しさん
09/10/24 13:53:09
以前の軽量版と同じじゃね?

515:デフォルトの名無しさん
09/10/24 16:06:47
Windows Mobile エミュレータ使ってるんですが、コンパイルした実行ファイルは自動的に発行されますが
プラグインなどはどうやってエミュレータ内に発行すればいいんでしょうか?
エミュレータの中のディレクトリやファイルって本体のイメージファイルの中にあるみたいで
テストのたびに共有フォルダからエミュレータ内のファイルエクスプローラーでコピーすればできるんですが・・・
VSの機能ではやれないでしょうか?

516:デフォルトの名無しさん
09/10/24 16:38:48
C#は2001のころの知識って
何がしたいんだよw

517:デフォルトの名無しさん
09/10/24 17:00:46
>>502
7環境が無いからユーザーの意見を聞いただけ。
試してくれって言ったって環境が無いんだからしょうがないじゃん。
環境が無い事を責めないで…。
.NETは一応2.0でビルドしてるんだけど、XmlSerializerメソッド使ってるんだけど古いからだめとかあるのかな。
ていうかせっかく.NETなのにそんなんじゃだめじゃんねー。

518:デフォルトの名無しさん
09/10/24 17:10:29
>>517
まあ別に>>502が責めてるようにも客観的には思えないけどね。

ちなみに、Windows7はMSが評価用のを提供してるから、
君にその気さえあれば試すことはできる。

VMwareとかVirtualPC使えばPCやHDDを新調する必要もないしね。
(もっともPen4マシンとかだと正直重くて辛いけど)

519:デフォルトの名無しさん
09/10/24 17:16:40
>>509
.NET1.1の扱いはVistaと同じではないかと。
インストールは問題なくできる。
64bit版は提供されてない。64bitOSでは32bitモードでのみ動作。
ただし、VS2003は未サポートなのでVSでの開発は別の環境が必要。

520:デフォルトの名無しさん
09/10/24 19:57:37
C#でif,else if での3つ以上の入れ子は可能ですか?

521:デフォルトの名無しさん
09/10/24 20:08:26
やってみて駄目だったらまたおいで

522:デフォルトの名無しさん
09/10/24 20:08:56
>>520
そりゃあ、
if (b1) {
.....
} else if (b2) {
.....
} else if (b3) {
.....
}
っていう書き方は
if (b1) {
.....
} else {
if (b2) {
.....
} else {
if (b3) {
.....
}
}
}
の{}ブロックを省略してるだけだから、いくらでも。

523:デフォルトの名無しさん
09/10/24 20:11:07
エラーでてもパソコンが壊れるわけじゃないんだから、とりあえずやってみればいいと思う

524:デフォルトの名無しさん
09/10/24 20:32:37
10万回の入れ子は大丈夫でした。100万回でこんなの出ました。
fatal error CS1647: ''
        の付近でコンパイルするには、式が長すぎるか、または複雑すぎます。

525:デフォルトの名無しさん
09/10/24 20:35:07
でっていう

526:デフォルトの名無しさん
09/10/24 20:37:23
コンパイラの制限なのかCLRの制限なのかどっちなんだろう

527:デフォルトの名無しさん
09/10/24 20:40:20
どっちでもいい。

528:デフォルトの名無しさん
09/10/24 20:46:53
以前人工知能を開発しようとしたものだが
実装されている機能は
自分でメソッドやフィールドを作成
自分でファイル入出力
自分を継承した子供を生み繁殖

これで人としての機能はほとんど与えたはずなんだが
「こんにちは」と言っても反応してくれない
ずっとセックスと繁殖ばかり繰り返してる
困ったものだ

529:デフォルトの名無しさん
09/10/24 20:54:05
>>528
興味あるからソース公開しろ。

530:デフォルトの名無しさん
09/10/24 21:00:58
TreeViewコントロールを使用しています。
あるノードがすでに展開されているかどうかを調べ、まだ展開されていなければ展開して選択し、既に展開されていたら選択だけをするようにできたらと思っていますが、どうすれば既に展開されているかを調べることができるでしょうか?

531:デフォルトの名無しさん
09/10/24 21:03:36
TreeNodeのプロパティくらい見てるか?
見てないなら見てみろ

532:デフォルトの名無しさん
09/10/24 22:03:10
>>531
すみません。プロパティを見ました。ありがとうございます。
選択されていてかつ、画面に表示されているかどうかを把握することはできますでしょうか。
もし、展開はされていますがノード数が多くて画面の外に隠れている場合(スクロールバーを異動させてはじめて見える場合)、
TreeViewの先頭に持っていきたいと思っていますが、それは可能でしょうか?

533:デフォルトの名無しさん
09/10/24 22:06:01
>>532
ですが、失礼な文章になってしまっていました。すみません。
ご回答、よろしくお願い申し上げます。

534:デフォルトの名無しさん
09/10/24 22:07:43
可能
TreeViewとTreeNodeのプロパティを見ろ

535:デフォルトの名無しさん
09/10/24 22:08:28
>>532
ノードは開始位置のx、yの座標を持っているんじゃなかったかな。
ただし隠れていたらその座標がどうなっているか分からない…。
また、あるノードをTreeViewの先頭に持っていく方法はあるのかな。
一度全部畳んでエクスパンドするしかない…?

536:デフォルトの名無しさん
09/10/24 22:09:42
画面に見えているか隠れているか分かるもんなの?

537:デフォルトの名無しさん
09/10/24 22:10:58
どっちも用意されてる

538:デフォルトの名無しさん
09/10/24 22:21:13
EnsureVisibleがあるけど、指定のノードを先頭行に確実に持っていくことはできたっけ?

539:デフォルトの名無しさん
09/10/24 22:26:50
確実には無理だけどな、一番下のノードはどうやっても先頭には持って行けない

540:デフォルトの名無しさん
09/10/24 22:58:56
例えば5行目に見えているノードを1行目に持っていくこともできたらいいのになぁ。

541:デフォルトの名無しさん
09/10/24 23:23:58
静的クラスの自動実装プロパティを初期化する方法って存在しないの?

542:デフォルトの名無しさん
09/10/24 23:24:50
>>541
オーバーライド

543:デフォルトの名無しさん
09/10/24 23:28:44
>>541
静的コンストラクタ

544:デフォルトの名無しさん
09/10/24 23:31:00
>>543
探し求めていたのはまさにこれでした!ありがとう!

545:デフォルトの名無しさん
09/10/24 23:31:09
>>542
静的クラスの意味を考えてみろ。オーバーラードじゃだめだろ。JK

初期化を行う静的メソッドを用意して呼んであげたらどう?
思いっきりC言語っぽくなるが、それもまたアリの方向で。

546:デフォルトの名無しさん
09/10/24 23:33:36
ぼくはオーバーワーク^^

547:デフォルトの名無しさん
09/10/24 23:34:09
ツマンネ

548:デフォルトの名無しさん
09/10/24 23:35:03
検索機能を付けたいと思い、
テキストボックスのテキストチェンジドイベントを使用したのだけど、
例えば「アキヤマ」と検索ボックスに入力してEnter確定したとき、
「アキヤマ」でテキストチェンジドイベントが起きるだけではなく、
「アキヤ」
「アキ」
「ア」
の4回テキストテェンジドイベントが発生しているようなんだ。
この事態を回避するには、どんな手段がありますか?

549:デフォルトの名無しさん
09/10/24 23:39:03
>>548
Enterを押した時だけイベント起せばいいんじゃないのか?

550:デフォルトの名無しさん
09/10/24 23:41:31
入力の度に判定してるなら、確定したときだけ判定するようにすればいい

551:デフォルトの名無しさん
09/10/24 23:55:00
なんかプログラマに向かない人の発想臭いよなあ・・・

552:デフォルトの名無しさん
09/10/24 23:58:07
MSDNくらい読めよw

553:デフォルトの名無しさん
09/10/25 00:08:38
いっそ incremental search にしちゃえ。

554:デフォルトの名無しさん
09/10/25 00:15:03
俺もそう思った。
回避するんじゃなく補完機能を付ける方に変えれば?

555:デフォルトの名無しさん
09/10/25 00:48:06
いまXMLの暗号化を触っているんだけど、ここで使われているキーは「RijndaelManaged key = null;」とされていて、
自分で決められたbitを指定しないとエラーとなってしまう。
ここで、ある量のbitを吐くメソッドを適当に作ってキーを生成しているんだけど、もっと効率のいい方法ないかな?
本当は効率とかどうでもよくって、ある共通キーを作成するためのライブラリが.Netにあればなと思ってるんだけど、
そんなおしいものってある?

556:デフォルトの名無しさん
09/10/25 01:06:51
RijndaelManaged.GenerateKey()

557:デフォルトの名無しさん
09/10/25 01:08:45
共通鍵暗号技術の基礎を理解していないと思われる
マスターシークレットの生成は暗号の強度を決定する極めて重要な事項ですよ
>>555の鍵は速攻で破られるので絶対に駄目です
堅牢な乱数が欲しいならハードウェアの乱数器を導入すべき
安全性が低下しても良くてお手軽にやりたいならSystem.Security.Cryptography.RNGCryptoServiceProvider.GetBytes()を使う

558:デフォルトの名無しさん
09/10/25 01:17:32
共通キーというのは、ネットワーク外のデータ交換でファイルの認証に使うものだと思っているんですが、まずそこが間違っているのでしょうか?
やりたいことはネットワークを使う認証ではなく、単にデータのやり取りを行うとき、「このデータはここから発行したんだよー」
という文字データを暗号化して偽装されないためにするためです。
あのでアプリケーション内や、リアルタイムで認証などではなく、ある決められた文字で暗号複合したいなぁと考えています。

とりあえずちゃんと調べてきます。
ごめんなさい・・・

559:デフォルトの名無しさん
09/10/25 01:24:44
>>550
IME変換を確定する時のEnterって検出できるの?

560:デフォルトの名無しさん
09/10/25 01:32:12
>>559
しょーがねーなまったく

private void comboBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if(e.KeyChar == '\r')
{

}
}

561:デフォルトの名無しさん
09/10/25 03:06:48
URLを日本語にする為にUTF-8からShift-jisに変換したいのですが良い方法はありますか?
検索したところ、まずbyteに変換してShift-jisに戻すと書いてあったのですが文字化けしてしまいます

562:デフォルトの名無しさん
09/10/25 03:17:04
>>561
Encoding(952)

563:デフォルトの名無しさん
09/10/25 03:53:26
staticクラスのフィールド変数も初期化しないと使えないのでしょうか?

564:デフォルトの名無しさん
09/10/25 04:00:50
>>563
というか、初期値が入っている。

オブジェクト型ならnullもしくはデフォルトコンストラクタの結果だし、
整数値なら0だし、bool型ならfalseだ。

それ以外の値を臨むなら変更してやる必要がある。

565:563
09/10/25 04:16:53
>>564
なるほど
うまく言えないんですが
オブジェクト型の場合、nullのままだとそのオブジェクトのプロパティなどは使えないんでしょうか?
つまり戻り値が常にnullだったりするのかな?

566:デフォルトの名無しさん
09/10/25 05:02:25
あ?

567:デフォルトの名無しさん
09/10/25 05:56:39
>>562
それも試したのですが、変な漢字(中国語?)が混ざってしまい正常なファイル名を出力できません
もしかして一回文字化けした文字は直らないのでしょうか?

568:デフォルトの名無しさん
09/10/25 07:37:05
>>565
System.NullReferenceException

569:デフォルトの名無しさん
09/10/25 07:44:59
>>567
どこに原因があるか掴みづらいので
URLがどこから来たのかも含めて流れ図にしてくんない

570:デフォルトの名無しさん
09/10/25 09:05:50
テキストファイルを一行ずつ配列に入れるにはどうすればいいんですか?

571:デフォルトの名無しさん
09/10/25 09:07:54
File.ReadAllLines

572:デフォルトの名無しさん
09/10/25 09:36:48
テキストファイルを一行づつコンボボックスに値として取り込むなら
配列使うのが最善ですかね?


573:デフォルトの名無しさん
09/10/25 09:37:33
最善かは知らんが通常はそれで良いんじゃない

574:デフォルトの名無しさん
09/10/25 09:59:52
どうしても自作ソフトを組むとタスクマネージャで見たメモリ使用量が
20mとか30mとかになってしまいます
WMPのような再生するソフトでも、実際に見てみると7m程度しか使ってないのに
同じようなソフトでもこんなに変わるものなのですか?

575:デフォルトの名無しさん
09/10/25 10:10:27
同じって、、、.NET同士で比べたら?

576:デフォルトの名無しさん
09/10/25 10:20:06
.NET同士だとそう変わらないのは知ってます
ですから、その理由が知りたいのです。
どんな技術が使われているのでしょう?

577:デフォルトの名無しさん
09/10/25 10:25:06
.Net Fxのライブラリ群をメモリにマップするから使用量が多く見えてるだけだろ

578:デフォルトの名無しさん
09/10/25 10:30:19
Treeviewで、「東京本社\\神奈川営業所\\山田花子\\車種A」
というノードがすでに追加されているとします。
今、ノードが全て折り畳まれている状態で、
上記のパスを直接指定してノードをエクスパンドする方法はありますでしょうか?
今は、ノード名を1つ1つ検索した上で展開しているのですが、
パスがすでに分かっている場合は、ダイレクトに展開できたらと思っています。
よろしくお願いします。

579:デフォルトの名無しさん
09/10/25 10:34:37
TreeViewにおけるパスは一般的に一意性があるモンじゃないからなー そういうのは用意しづらい

580:デフォルトの名無しさん
09/10/25 10:41:10
この「同じようなソフト」の意味がわからん。

581:デフォルトの名無しさん
09/10/25 10:43:09
ワーキングセットだけ見ててもしょうがないぞ。

582:デフォルトの名無しさん
09/10/25 10:45:02
>>579
なるほど…ありがとうございます。
同じパスが併存する可能性もありますものね。

583:デフォルトの名無しさん
09/10/25 10:52:43
ソリューションに複数プロジェクトを登録して
プロジェクト同士が相互に参照するような設定はできないと思うんですが
その場合は参照が必要なプロジェクトに小分けして相互参照を回避するのが常道でしょうか?

584:デフォルトの名無しさん
09/10/25 10:56:53
うちの環境で試したけど
WindowsMediaPlayer COMコンポーネントを介して動画を再生したら、本物のWMPで同じ動画を再生するよりメモリ使用量は少なかったよ。
たぶん無駄なデータを保持しているとかそんな落ちでしょ

585:デフォルトの名無しさん
09/10/25 11:00:35
XP以前とVista以降でタスクマネージャの既定の表示項目が違うというのもポイント

586:デフォルトの名無しさん
09/10/25 11:01:03
ファイルをサーバ上に用意して、
起動ごとにそのファイルを取得、
,ごとにリストボックスに表示させることは出来ますか


587:デフォルトの名無しさん
09/10/25 11:02:21
簡単ですね
「ネットワーク繋がってないです」みたいなオチが無ければ

588:デフォルトの名無しさん
09/10/25 11:04:04
>>562
932だろ、このあわてんぼうw

589:デフォルトの名無しさん
09/10/25 11:04:54
取得までは出来るんですが、
それをどうやって,で分けて持つかが分からないです
参考になるサイトとか無いですか?

590:デフォルトの名無しさん
09/10/25 11:05:15
>>583
いや相互に参照出来るけど

591:デフォルトの名無しさん
09/10/25 11:07:13
>>590
ええw

参照設定で追加できませんってエラーが出るのはどういう場合でしょうか?
お願いします!お願いします!

592:デフォルトの名無しさん
09/10/25 11:08:08
>>589
Stringクラスのstaticメソッドを探してみろ

593:デフォルトの名無しさん
09/10/25 11:10:20
>>589
Googleに「C# 文字列 分割」って入力するといっぱい出てくるよ
目の前の箱は万能な箱

594:デフォルトの名無しさん
09/10/25 11:10:52
お前を消す方法ってググっても出てきません

595:デフォルトの名無しさん
09/10/25 11:13:10
>>591
いやどうやっても上手くいくんだが
むしろそのエラーの出し方が分からんw

596:デフォルトの名無しさん
09/10/25 11:15:03
昨日からの質問で恐縮ですが…
A店
 Bさん
 Cさん
 …
 Zさん
というノードが作成されているとして、
Zさんのノードを検索した時、ZさんのノードがTreeViewの下端に表示されてしまいます。
これは、Aさん~Yさんの兄弟ノードが25行あるために、下端までおいやられているからだと思いますが、
Zさんのノードを一番に上に表示させるには、
プロパティに座標などを指定する必要があるのでしょうか。
または別の方法があるのでしょうか。
A~Zさんには子ノードはありません。
よろしくお願いします(>_<)。

597:デフォルトの名無しさん
09/10/25 11:19:12
>>583
循環参照はできないので、ツリー構造を取るのが基本。

598:デフォルトの名無しさん
09/10/25 11:22:27
>>595
>>583 じゃないけど、出来ないよ?
プロジェクト間の循環参照のことでしょ。
こういうメッセージが出る。
「'A'への参照を追加できませんでした。このプロジェクトを参照として追加すると循環する参照関係を生じます。」

というわけで、>>583 は自分の言うとおり、中身の整理をした方がいい。

599:デフォルトの名無しさん
09/10/25 11:23:02
ああプロジェクトの依存関係の参照のことを言っていたのか
そりゃ出来ないわ

600:デフォルトの名無しさん
09/10/25 11:31:54
>>596
兄弟ノード間の順番を変えたいの?

601:デフォルトの名無しさん
09/10/25 11:33:27
100kくらいのテキストをStringで宣言してるんですが
これ関係無いの?

602:583
09/10/25 11:37:45
ありがとうございました

すぐとりかかります

603:デフォルトの名無しさん
09/10/25 11:47:14
>>601
長いテキストはテキストファイルに保存してリソースにしたほうがいいと思う

604:デフォルトの名無しさん
09/10/25 11:49:31
('A')ア"ア"ア"-

605:デフォルトの名無しさん
09/10/25 12:01:33
>>600
お返事ありがとうございます。
順番は変えずに、Zさんのノードを先頭位置に表示させたいんです。
(検索でヒットしたノードを常にTreeviewコントロールの先頭行に表示させたいと思っています。)
どうすればいいでしょうか…。

606:デフォルトの名無しさん
09/10/25 12:07:54
つってもA店の下に他の店が無かったらZはどうやっても最下段にしか表示できんが

607:デフォルトの名無しさん
09/10/25 12:26:29
>>606
ありがとうございます。
その下にB店、C店が続きます。
EnsureVisibleで表示する以外に、もっと細かく表示位置を指定できたらと思っています。

608:デフォルトの名無しさん
09/10/25 12:37:27
>>607
まあ、例えば店の名前の前に整数値でIDを振ってみるとか。
でも、ツリービューは最善のUIじゃないかもしれないよ。

リストボックス+ボタン×3、せいぜい検索用のコンボボックスをつける程度の
UIのほうが一般的じゃないかな。

609:デフォルトの名無しさん
09/10/25 12:37:47
だからプロパティ確認しろっていわれてんだろ

610:デフォルトの名無しさん
09/10/25 12:55:24
確認したけど、先頭にあるかどうかを示すプロパティはないみたいなんです。


611:デフォルトの名無しさん
09/10/25 12:59:16
あきらめろよ。

612:デフォルトの名無しさん
09/10/25 13:07:18
>>611
冷たいこと言わないで。

613:583
09/10/25 13:30:55
すみません
プロジェクトをいじってるうちに
定義済みの型 'System.Object' は定義、またはインポートされていません
こんなエラーが出るようになってしまいました
参照設定もusingもsystemを入れてありますし、エラーにコードの場所が示されません
これはどうしたらいいでしょうか?

614:デフォルトの名無しさん
09/10/25 13:36:38
>>613
プロジェクトのプロパティのビルドの詳細設定に、「mscorlib.dll を参照しない」
とうのがあるだろう、チェック入ってたらはずせ。

615:デフォルトの名無しさん
09/10/25 13:36:48
作り直せよ

616:デフォルトの名無しさん
09/10/25 14:00:15
配列を返す場合は
private string[] aaa()
{
return
}

617:デフォルトの名無しさん
09/10/25 14:02:23
切れてるぞオオオオおお

618:583
09/10/25 14:17:12
>>614
サンクス!!参照設定いじってるうちにmscorlibへの参照が消えてました! 助かりました

619:デフォルトの名無しさん
09/10/25 14:33:52
問題

1.LinQとは何か?一行で答えよ

2.WPFとは何か?1行で答えよ

620:デフォルトの名無しさん
09/10/25 14:35:16
ググレカス

621:デフォルトの名無しさん
09/10/25 14:35:48
>>619
死ねハゲ

622:デフォルトの名無しさん
09/10/25 14:56:16
宿題スレにでもいけばいいのに

623:デフォルトの名無しさん
09/10/25 15:15:16
今までhoge.exeと同一ディレクトリにXMLで書いたhoge.configを置いていたけど
3.5になってから下記エラーでて設定ファイルを読み込むことも書き込むことも出来なくなってた。
hoge.configを別の名前にするとちゃんと読み書きできる。
なじぇ?

[System.Configuration.ConfigurationErrorsException] = {"構成システムを初期化できませんでした。"}

InnerException = {"構成ファイル hoge.config には、ルート <configuration> タグが含まれません。
(D:\\Visual Studio\\Projects\\hoge\\bin\\Debug\\hoge.config line 2)"}

624:デフォルトの名無しさん
09/10/25 15:40:31
exe.configはもともとプログラムから書き換える類のものではないから。
はじめから使い方が間違っている。

625:デフォルトの名無しさん
09/10/25 17:42:18
>>624
すいません、hoge.configであってhoge.exe.configとは書いてないのですが

626:デフォルトの名無しさん
09/10/25 17:45:10
めでたしめでたし

627:デフォルトの名無しさん
09/10/25 17:55:32
解決してないがな

628:デフォルトの名無しさん
09/10/25 17:58:35
>>625
インストール後に設定を切り替えるようなことをするのは、
ユーザー構成ファイルを使えばいい。

629:デフォルトの名無しさん
09/10/25 17:59:20
>>625
そのつもりがなくても、VSがhoge.exe.configと同じ扱いをしてるから
そういうエラーが出てるってことなんじゃないの。

630:デフォルトの名無しさん
09/10/25 19:04:06
>>629
ありがとうございました。

631:デフォルトの名無しさん
09/10/25 20:11:08
ネット上から、,で区切られているサーバ一覧を格納したファイル
(aサーバ,bサーバ,cサーバ,....)から、
配列Aを作り、コンボボックスに一覧として追加する。
コンボボックスから、aサーバが選ばれたら、
ネット上からaServer.txtを取得して表示・・・という事がしたいのですが、
どうやってAサーバが選ばれたら、aServerを取得するという処理を行うかで悩んでます

SelectedIndexで0Server.txt、1Server.txtを取得すればいいのかと思われますが、
そうするとサーバ側の管理が面倒になってきます。
また、コンボボックスのサーバ名は2バイト文字も使うため、
サーバ側でaサーバ.txt、cサーバ.txtのようにすればいいのだと思いますが、
サーバ側は1バイト文字しか扱いたくありません。

こんな場合だと、皆さんはどうコーディングするのでしょう?

632:デフォルトの名無しさん
09/10/25 20:14:53
いやサーバをServerに置換するだけじゃないのか

633:デフォルトの名無しさん
09/10/25 20:24:34
>>631
サーバって書いてあるからURLかと思ったら、ただのファイル名なのか。

配列Aをただのstring配列じゃなくて、クラスなり構造体の配列にするとか
サーバ名が一意な設計ならDictionary使ってもいいし

634:デフォルトの名無しさん
09/10/25 20:26:34
String.Replace

635:デフォルトの名無しさん
09/10/25 20:34:17
>>631
サーバ名とサーバのファイル名との関連はどう付けてるの?

プログラム側で決めてしまって良いなら、サーバ名とファイル名(パス)の
対応表をプログラム内か、設定ファイルにでも作っといてそれと照合するようにするけど。
ファイルならこんな感じ?
0,aサーバ,aServer.txt
1,bサーバ,bServer.txt

可能なら、「サーバ一覧を格納したファイル」の書式の変更をお願いして
上のような情報もそのファイルに持たせちゃうかな。

636:デフォルトの名無しさん
09/10/25 20:40:38
>>635
そのように関連付けしたかったのですが、
配列変換の方法が,で区切って取得するという方法なので、
「サーバ一覧を格納したファイル」から関連付けするのが出来ません。
やはり、この取得方法を変えないと駄目ですかね。。

637:デフォルトの名無しさん
09/10/25 20:45:31
二重に区切ればいいようなだけの気もするがな

A\tB,C\tD,E\tF

638:デフォルトの名無しさん
09/10/25 21:03:42
どんだけセンスないんだ
最近のプログラマは

639:デフォルトの名無しさん
09/10/25 21:06:06
仕様にないコード書くなやって言われるうちに頭が固くなったのだ

640:デフォルトの名無しさん
09/10/25 21:12:45
この程度の低級処理ならセンスより技術だと思う

641:デフォルトの名無しさん
09/10/25 21:16:32
細かい実装なんて他に影響が出なければどうでもいい

642:デフォルトの名無しさん
09/10/25 21:19:27
初心者スレだし、こういう質問があってもいいと思うけどな。

643:小学生
09/10/25 21:19:45
ここだけみて最近のプログラマ全体をわかった気になってんじゃねーよ

644:デフォルトの名無しさん
09/10/25 21:30:33
メモリリークって何ですか?

645:デフォルトの名無しさん
09/10/25 21:30:40
アルゴリズムを考え出すのってやっぱり論理ですか?
たとえば1から10までの整数から(重複ありで)3つ取り出して四則演算を2回だけ使って合計が10になるものをすべてだそうとします。
このとき、論理的に出そうとするならば、演算は(+,+)、(+,-)、(+,*)…などと考えて、数字も(+,+)の場合の数字は(1,1,1)から順次調べていく方法しかないんですかね?
それともこれとは別の直感的なひらめきで計算量をぐんと減らす手段とかも思いつけるものですか?

646:デフォルトの名無しさん
09/10/25 21:31:07
なんだと、このおかちめんこ

647:デフォルトの名無しさん
09/10/25 21:37:25
総当たりでやるのは、全然論理的じゃないと思うんだが。

1~10で、四則演算二回だとすると、終わりの一回はかなり限定的になるだろ?
たとえば、+ の場合。x + {1...10} = 10 でいえば、10種類な訳。
そう考えると、一回目の演算で {0...9} になるのを探せばいいってことになる。

そう考えると、だいぶ楽じゃね?

648:デフォルトの名無しさん
09/10/25 21:44:09
>>647
詳しく

649:デフォルトの名無しさん
09/10/25 21:44:14
シリアル化ができないエラーが出るんですが
どこにエラーがあるのかさっぱりわからないorz
シリアル化っていくら読んでもよく理解できないんですが、
保存なんかするつもりもないし、そんなコード書いた覚えもないのに・・
もしかしてVSが勝手に何かをやってるんですか?・・・

650:デフォルトの名無しさん
09/10/25 21:44:22
>>647
なるほど、そうすれば確かに入らない場合を除いて計算するのでだいぶ計算量は減りますね。
というと、端的に言えばアルゴリズムの改善というのは必要ない部分を削っていって組むプログラミングのことと考えていいのですか?

651:デフォルトの名無しさん
09/10/25 21:46:20
整数2個と演算子1個で、結果の整数1個が得られる
結果とある整数と演算子1個で整数10が得られるようなある整数が範囲内に存在するか、とやればループが3→2に減る

整数存在判定めどいけど

652:デフォルトの名無しさん
09/10/25 21:48:22
たまに妙な所からブレークスルー入るけど
基本は詰め詰めだろう

653:デフォルトの名無しさん
09/10/25 21:54:39
アルゴリズムなんて寝て起きたらひらめく物だと思ってる俺

654:デフォルトの名無しさん
09/10/25 21:56:31
>>651
でもそれだと、たとえば10÷3は整数でないですが10÷3×3が10になるっていうことがありえてしまいます


655:デフォルトの名無しさん
09/10/25 21:59:59
O(n^2)のことばかり考える

656:デフォルトの名無しさん
09/10/25 21:59:59
>>654
例外処理として書いておけばいい

657:デフォルトの名無しさん
09/10/25 22:04:16
>>656
例外処理をしたら帰って処理が複雑な気がするぞw
/3*3とか/3*6とかたくさんあるだろjk

658:デフォルトの名無しさん
09/10/25 22:04:52
女子高生がどうしたって?

659:デフォルトの名無しさん
09/10/25 22:05:47
>>654
何を言いたいのかイマイチ分からん
10/3*3が9になって欲しいのか10になって欲しいのかそれとも9.9999...か

たとえば(10/3)*3が10になって欲しいのなら、
分数型を定義すればいいだけでは。


C#一切関係ないなあ・・・

660:デフォルトの名無しさん
09/10/25 22:06:22
そうですか、みなさんいろいろ意見出していただいて参考になりました
納得いった部分やそうでない部分もありましたがこれからもいろいろ考えていきたいと思います
ありがとうございました
遅寝は体に悪いので寝ますおやすみなさい

661:デフォルトの名無しさん
09/10/25 22:08:26
小学生?

662:デフォルトの名無しさん
09/10/25 22:14:48
>>659
すいません、要はアルゴリズムの最適化を行う手順みたいなものがあるのかなということだったんです。
すべてに通用するようなことで…。
一般的な総当りを考えてそこからひつようのなさそうな部分を削っていくことがアルゴリズムの最適化になるのかそこが疑問だったのです。
今日のレスではそのような考え方に近いものをみなさんおっしゃるのでそういうことなのかなと考えたのです。

でも、なにかまったく違った角度から捕らえる何か(ひらめきのようなもの)がアルゴリズムの最適化になるのかわからないのです。

>>654>>651さんのアルゴリズムの考え方でちょっとそれはまずいのではと思ったので端的に思いついたことを書きました。




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