C#, C♯, C#相談室 Pa ..
357:デフォルトの名無しさん
08/05/23 09:01:20
>>356
出てますね...
ありがとうございます。
358:デフォルトの名無しさん
08/05/23 13:55:25
すみません、初心者的で申し訳ないのですが、質問させてください。
以下のコードを実行すると、クラスAのセッターを使ってAのプライベート変数に2を代入したいにも関わらず
既定値の0が用いられてしまいます。
警告内容は以下の通りです。
「フィールド 'NAME1.A.x' は割り当てられません。常に既定値 0 を使用します。」
また、付随する質問ですが、void func_A( temp ) { x... }をvoid func_A( temp ) { X... }とすればきちんと2がセットされます。
クラス内であるにも関わらずセッターXを用いる必要があるのはなぜでしょうか。
なお、コンパイル環境はVisual C# Express Editon 2008です。
359:KKK
08/05/23 13:56:15
こんにちは。
はじめましてRayです。
私は大学4年生ですが、最近は大学は週に一回くらいしか行かないのですが、
就活の準備など、家にいることが多くなりました。
しかし、斜め向かいに住んでいる茨城という若い夫婦が嫌がらせをしてきます。
@近所をうろAしたり、家の窓から私の部屋を覗いてきて、部屋に「○○の本がある」などと近所のほかのオバサンに報告したり、
A布団たたきでものすごい音で布団をいつまでもたたきます。
(体格がいいオバサンなので、すごい音がします;;)
B私が家にいるのを知っていて近所のオバサンと大きな声で悪口を言ってきます
(「Rayが就職なんかできるわけないじゃない!」など・・)
C茨城(夫)は部屋を覗くだけでなく、夜になると咳払いなどをしていつまでも近所をうろついています。
気持ち悪いので、弁護士や市の職員に相談しましたが、なかA証拠が取れなく、裁判まで持ち込めない状況です。
D車のエンジンをいつまでもかけ、うるさくする。
とにかく精神的にも滅入っていて、解決したいのですが、できない状況です。
ほかの近所のオバサンも私が困っているのを見て喜んでいるみたいです。
なんとかしたいので、誰か相談にのってくださぃ。
アドバイス待ってます。
360:358のつづき
08/05/23 13:56:37
amespace NAME1 {
class A {
// メンバ
private x; ← ここで警告が出る
// メソッド
public void func_A( temp ) { x... }; ← ここでx=0として計算してしまう
// アクセッサ
public X { get; set; }
}}
361:358のつづき
08/05/23 13:57:37
using System;
using System.Collections.Generic;
・
・
・
using NAME1
namespace ConsoleApp {
class Main {
static void Main(string[] args) {
// クラスAを配列としてインスタンス化、xに2をセット
n ;
A[] arrayA_ = new A[ n ];
for ( int i = 0; i < n; i++ ) {
arrayA_[ i ] = new A();
arrayA_[ i ].X = 2;
}
// メソッドの呼び出し
temp;
for ( int i = 0; i < n; i++ ) {
arrayA_[ i ].func_A( temp );
}
}}}
362:デフォルトの名無しさん
08/05/23 13:58:59
>>360 xの型もXの型もgetアクセサの中身もsetアクセサの中身も書け
363:358
08/05/23 14:16:40
private double x;
public double X { get; set; }
です。アクセッサの表記は、.NETのver2かver3でこのように書けるので、それを利用してます。
364:デフォルトの名無しさん
08/05/23 14:27:19
ヘルプなりで「自動実装するプロパティ」調べれ
どうして X が x を知ってる?
365:358
08/05/23 14:49:06
ヘルプを読んだ結果、
>自動実装したプロパティでは、属性は使用できません。
>プロパティのバッキング フィールドで属性を使用する必要がある場合は、通常のプロパティを作成します
に関連がありそうだとは思うのですが、意味がよくわかりません・・・。
366:デフォルトの名無しさん
08/05/23 14:56:54
X プロパティは x に対応しないよ。
367:デフォルトの名無しさん
08/05/23 14:58:31
それだと、
private double _X;
みたいなのが内部で自動生成されて
public double X {
get { return _X; }
set { _X = value; }
}
368:358
08/05/23 15:03:32
つまり、
class{
double x;
double X{get;set;}
}
と書くのは誤りで、
class{
double x{get;set;}
}
と書けばよいということですか?
369:デフォルトの名無しさん
08/05/23 15:37:57
ファイルの読み書き単位でエンコーディングを指定するのではなく、
プログラム全体でエンコーディングをしているする方法はないですか?
370:デフォルトの名無しさん
08/05/23 15:46:03
>>368
private double x;
と
public double X { get; set; }
は別物だよ。
xをプロパティとしたいなら
public double X { get{return x;} set{x=value;} }
自動プロパティを使いたいならprivate double x;は消して
public double X { get; set; }だけにして、Xを変数のように使えばいいよ。
ただその場合はprivateではないけどね。
371:デフォルトの名無しさん
08/05/23 15:59:52
>>369
CreateStreamReaderAsShiftJIS/CreateStreamWriterUTF8メソッドでも用意しとけば?
372:デフォルトの名無しさん
08/05/23 17:04:01
初心者ですが質問させてください。
Webbrowserコンポーネント(Webbrowser1)でgoogleを表示しておいて、
ソフトのTextBox(TextBox1)に検索ワードを入力して、Button(Button1)を押したら、
Webbrowser側に検索ワードが読み込まれて自動で検索するようにしたいんですが、
どのようにすればいいか検討がつきません。
開発環境はVisualstudio2005、言語はC#です。
373:デフォルトの名無しさん
08/05/23 17:07:41
コンポーネントでの表示が必要なの?
httpで通信するってんじゃだめかい?
374:デフォルトの名無しさん
08/05/23 17:10:13
>>372
事前にgoogleを表示しとく意味があるのか?
取り敢えず適当にgoogleで検索して検索結果画面のURL調べれ
あとSystem.Web.HttpUtilityのUrlEncodeとUrlDecode調べれ
375:デフォルトの名無しさん
08/05/23 17:11:44
>>373
webにいろいろと自動入力するシステムを作らないといけなくなりまして。
たとえばブログにあらかじめTextboxに入れておいたIDとパスを入れて自動ログインするとか
そういったものなんですけど、webのフォームに、Textboxから値を入れる方法が知りたくて、
Googleはそのたとえのつもりでした。
http通信?の意味がよくわからないんですが、ソフト内のブラウザ上で表示させる必要はあります。
376:デフォルトの名無しさん
08/05/23 17:13:21
>>374
Googleっていうたとえが悪かったですね。ごめんなさい。
>>375で書いたように、Webサイト上のフォームにソフトのTextBoxで記載したワードを記入するのが目的です。
377:デフォルトの名無しさん
08/05/23 17:27:16
WebRequest を使って WebResponse を取得し、
その内容を反映させては。
378:デフォルトの名無しさん
08/05/23 17:30:01
素直にHTTP POSTしろよ低脳。
こんなの厨房でも出来るぞ
379:デフォルトの名無しさん
08/05/23 17:39:43
>>377
どのメソッドを使えばいいかわからなかったので、ググってみたらできそうです、ありがとうございます。
>>378
HTTP POSTで検索したらそれらしいのがでてきました。ありがとうございます。
380:デフォルトの名無しさん
08/05/23 17:40:12
おい小学生かもしれねえだろうが
381:デフォルトの名無しさん
08/05/23 17:41:46
>>368
おそらくやりたいことは
public double X { get; private set; }
これだけでいいと思われる。
これでXのセッターはprivateになる。
382:デフォルトの名無しさん
08/05/23 17:43:52
>>380
そのとおりです小学校3年生です。
バカな質問してすいませんでした。
383:デフォルトの名無しさん
08/05/23 17:46:22
>>380
小学生に失礼だ
384:デフォルトの名無しさん
08/05/23 17:48:58
>>381
自動プロパティのセッタゲッタの片方だけのプロテクションを帰ることは出来ないよ。
385:デフォルトの名無しさん
08/05/23 17:52:20
>>384
いきなりどうしたの?
俺ができてるからそう書き込んでるんだけど。
386:デフォルトの名無しさん
08/05/23 17:54:35
俺もプロパティはほとんど
public Foo Foo{ get; private set; }
だな
普通のプロパティなんてかったるくて書いてられん
387:デフォルトの名無しさん
08/05/23 17:55:26
>>384
知ったか?
それとも何か他に深い意味があるの?
388:358
08/05/23 18:08:21
うまく書けるようになりました。
ありがとうございました。
389:デフォルトの名無しさん
08/05/23 18:15:11
>>372
まあ、解決したならそれでいいけど、これでいいよ。
private void button1_Click(object sender, EventArgs e)
{
HtmlElement input = webBrowser1.Document.All.GetElementsByName("q")[0];
HtmlElement form = webBrowser1.Document.All.GetElementsByName("f")[0];
input.SetAttribute("Value", textBox1.Text);
form.InvokeMember("submit");
}
>>378
ログイン処理とかだと、ログイン前のセッションクッキー引き回しとか、
JavaScriptによるワンタイムキーの生成とかが必要になると、そのへんは
ブラウザに任せた方がはるかに簡単。
390:デフォルトの名無しさん
08/05/23 18:34:21
便乗だけどオンラインゲームの自動ログインはどうやればいいの?
URLリンク(dobon.net)
ここを参考にしたけどだめみたいなんだ。
たとえば
URLリンク(suddenattack.redbanana.jp)
ここに自動ログインするためにはどうしたらいいのかな?
391:デフォルトの名無しさん
08/05/23 19:21:51
>>389さん、ありがとうございます!
検索してもわからず、困っていたところでした。
("q")と("f")のところにhtmlからそのフォームのnameをもってきたらいいということですか?
やってみます!またできたら報告しますね。
392:デフォルトの名無しさん
08/05/23 19:28:24
Hashtableから値取り出すときにキャストしないでいい方法はない?
面倒くさいんですけどん。
393:デフォルトの名無しさん
08/05/23 19:29:59
VS2005以降ならDictionaryを使う
394:デフォルトの名無しさん
08/05/23 19:31:53
>>393
サンクスです。
こんなのがあったんですね。
395:デフォルトの名無しさん
08/05/23 19:43:16
GenericはC#2.0の最大の目玉じゃないか…
396:デフォルトの名無しさん
08/05/23 20:38:55
>>390
やろうと思えばできる。
IDとパスのINPUTタグのIDを調べ>>389のようにIDとパスを入力し、
こいつらを管轄するフォームでsubmitする。
ヒント:javascriptを実行してからsubmitを行う。
397:デフォルトの名無しさん
08/05/23 20:52:21
windowsアプリなんですが、メインのフォーム内のメソッドで
そのフォームがもってるある型の変数全部の値を一括で変更
する方法はありますか?
おねがいします。
398:デフォルトの名無しさん
08/05/23 20:56:16
リフレクションを使います
399:デフォルトの名無しさん
08/05/23 20:58:34
>>396
javascriptは全然わからないから詰まってます。
submit()を実行すると無限に更新されるみたいなのですが・・・。
htmlソースみるとLoginLeftFormCheck()を呼び出してるみたいなのですが関係ないですかね。
400:390
08/05/23 21:04:58
意味も分からずコピペなんですけど、
public Form1()
{
InitializeComponent();
webBrowser1.Url = new Uri("URLリンク(suddenattack.redbanana.jp)");
}
private void button1_Click(object sender, EventArgs e)
{
HtmlElement id = webBrowser1.Document.All.GetElementsByName("user_id")[0];
HtmlElement pass = webBrowser1.Document.All.GetElementsByName("user_pwd")[0];
id.SetAttribute("Value", "aaaaa");
pass.SetAttribute("Value", "bbbbbb");
}
こんな感じでフォームに文字が入りました。
あとはログインボタン押して、ゲームスタートボタン押すだけなんですが・・・
401:デフォルトの名無しさん
08/05/23 21:05:33
>>396
いやそいつを実行するの。
402:デフォルトの名無しさん
08/05/23 21:06:25
>>400
ログインボタン、エンターキーおしたらいけないの?
403:デフォルトの名無しさん
08/05/23 21:06:26
>>399
JavaScriptもわからないようならC#とか無理だから諦めろ。
なでしこでもやってろ
404:デフォルトの名無しさん
08/05/23 21:06:59
安価ミス
>>396→>>399
405:390
08/05/23 21:11:35
>>401
実行するってことはInvokeMember("LoginLeftFormCheck")ってことですかね?
>>402
フォーム上ならエンターキーでもログインできます。
406:401
08/05/23 21:28:18
すまん。VS2005についているWebBrowserは詳しくないんだ。
COMコンポーネントのMicrosoft Web Browserコントロールと、Microsoft.mshtmlというライブラリでしか
俺はできないんだ。(メソッドやら何やらがわかりやすい。)
Microsoft.mshtmlは.NetFramework1.0にしかついてこんのだ。
で、このMicrosoft.mshtmlを使ったやり方で説明すると、
・・・・・
Dim id As mshtml.HTMLInputElement = doc.getElementById("ID_user_pwd")
id.value = "id"
Dim pwd As mshtml.HTMLInputElement = doc.getElementById("ID_user_pwd")
pwd.value = "password"
doc.parentWindow.execScript("LoginLeftFormCheck()") ' LoginLeftFormCheck()を実行
pwd.form.submit() ' フォームをsubmit(これはInvokeMemberでできるとおもわれ)
これでログインできる。
ゲームのスタートボタンはFlashであるために、プログラム上で操作する方法があるかもしれないが、
俺は残念ながらわからんかった。
まえ、ガンストの自動ログインツールを作成したときは、画面にブラウザを貼り付けて、
ゲームのスタートボタンが確実に見えるサイズに広げて、APIでマウスを操作するプログラムを書くという
逃げ道でやった。
407:デフォルトの名無しさん
08/05/23 21:52:19
Windowsアプリケーション学習用にC#をやろうと思っています。
Microsoft Visual C# 2008 Express EditionをSDKとSQL Serverつきでインストールしました。
しかし何をどう作っていったらいいかわかりません。
プログラム経験はPHPでWebプログラム(こちらは趣味で3年以上やっていて2ch風掲示板ぐらいのものは作れます)、
あとオブジェクト指向の勉強にJavaを少しいじった程度です。
Javaでは簡単なファイル操作から、オブジェクトの継承や例外処理など基本的な勉強しかしていません。
Webプログラムはイメージ的にわかるので、ASP.NETあたりはなんとか理解できると思うのですが、
Windowsアプリケーションとなると右も左もわかりません。
まずは何をやったらいいのでしょうか?
408:デフォルトの名無しさん
08/05/23 21:54:25
何をやりたいの?
409:デフォルトの名無しさん
08/05/23 21:55:56
>>407
スレチこっちで質問しなおせ
スレリンク(tech板)
スレリンク(tech板)
410:407
08/05/23 22:04:58
>>408
とりあえずWebアプリケーションでいうチャットやカウンターのような位置づけなものを作ってみたいです。
(ようするに簡単なものです)
おそらくメモ帳のようなものになるのでしょうか?
ペイントのようなものも作ってみたいですが、メモ帳に比べると難易度はあがりそうですね。
簡単なテーブルゲームなんかも作ってみたいですが、アルゴリズムの勉強はしてないので少し厳しそうです。
>>409
了解です。そちらで質問しなおします。
411:390
08/05/23 22:15:45
>>406
どうもありがとうございます。
webBrowser1.Url = new Uri("javascript:" + Uri.EscapeDataString("LoginLeftFormCheck();"));
で無理やり実行してみたらfalseが返ってきちゃいました。
マウス操作も考えたんですけど、ブラウザやマウスが勝手に動く様が見えちゃいますよね。。
412:397
08/05/23 22:32:25
すいません。リフレクションを使っても取り出せるのは
型情報でインタンスの値は取り出せないのではないでしょうか?
もう少しキーワード教えてください。
413:デフォルトの名無しさん
08/05/23 22:43:15
型情報からフィールド一覧取れるだろ
FieldInfoから値取得できる
414:401
08/05/23 22:51:20
>>406
いや、LoginLeftFormCheckは単に実行するだけでOK。
submitすりゃ、ログインされる。
javascriptは多分InvokeScriptでできない?
マウスは勝手に動くようにみえちゃう。これは仕方ない。
415:デフォルトの名無しさん
08/05/23 23:23:57
>>411
>>409
416:デフォルトの名無しさん
08/05/23 23:34:10
ここはなにを話すスレ?
417:デフォルトの名無しさん
08/05/23 23:36:31
C#プログラマの雑談スレ
418:デフォルトの名無しさん
08/05/23 23:44:16
>>1
>(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。
C#プログラマの雑談スレなんて限定的には書いてないけど?
しかもスレタイは「相談室」だぞ
419:397
08/05/23 23:44:32
FieldInfoのGetValue,SetValueでできました。
ありがとうございます。
420:デフォルトの名無しさん
08/05/23 23:55:28
JRq8rZjk7c
鳥解析4649
421:デフォルトの名無しさん
08/05/24 00:04:49
私怨乙
422:390
08/05/24 01:09:12
>>414
ありがとうございました。
ゲームスタートのFlashもjavascriptを呼んでいましたので直接呼んだら開始できました!
423:デフォルトの名無しさん
08/05/24 01:53:52
>>416
C#、.NET(ただし、C#を使っている前提)に関することで、
主にふらっとだとアレな話題や雑談とかのスレ
と、俺は解釈してる
ここで質問すること自体は悪いとは思わないが、
ふらっとの方がより適切だとも思ってる
424:デフォルトの名無しさん
08/05/24 04:07:26
ふらっとは初心者用だから。
回答者も初心者スレにいなかったら結局このスレに質問しに来るのでは?
たらい回しはいかんよ。
425:デフォルトの名無しさん
08/05/24 04:09:08
俺はふらっとが初心者用でこっちが中級者の集まりだと思っていた。
こっちでの質問はOOPとか言語仕様なりの高度な質問になる感じ
426:デフォルトの名無しさん
08/05/24 04:11:33
>>425
元の趣旨はそうだが実情は逆
427:デフォルトの名無しさん
08/05/24 04:44:53
そんなの主観的なんだからどっちだっていいだろ。
質問者が初心者と自覚した場合ふらっとに行けばいいと思うよ。
ただそれだけ。
428:デフォルトの名無しさん
08/05/24 04:57:34
複数あるのは害でしかない
みんなわかってるはずだ
429:デフォルトの名無しさん
08/05/24 05:05:02
>>424
心配無用。
どうせ皆も両方見てるんでしょ。
430:デフォルトの名無しさん
08/05/24 05:42:36
どっちか削るとしたら明らかに初心者用だよな。
で、もし削ったとしたら初心者隔離スレも欲しくなるよな。
ここまで言えばわかるよな。
431:デフォルトの名無しさん
08/05/24 10:55:50
ぬるぽ
432:デフォルトの名無しさん
08/05/24 12:40:47
>そんなの主観的なんだからどっちだっていいだろ。
>質問者が初心者と自覚した場合ふらっとに行けばいいと思うよ。
えてしてその主観が間違ってるから問題になるんだが。
433:デフォルトの名無しさん
08/05/24 15:28:08
オレが全部答えてやんよ
だからもう喧嘩するな
434:デフォルトの名無しさん
08/05/24 17:44:12
整数5ずつにしたいのですが……うまく言えないのですが、例えば、
96なら95、98なら100、53なら55、42なら40
と言うふうにしたいのですが、どうすればいいでしょうか?
435:デフォルトの名無しさん
08/05/24 17:46:22
C#で自作した外部アプリケーションを呼び出したいのですが、
Process process = new Process() ;
process.StartInfo.FileName = "hoge.exe" ;
process.Start() ;
こんな風に実行することが出来るようなのですが、
外部アプリケーション側に文字列を複数与えたいのです。
その場合呼び出す側と呼び出される側はどのような準備をすればいいのでしょうか?
436:デフォルトの名無しさん
08/05/24 17:49:25
>>434
問題を定義しなおしてから来い。
>>435
Process.Start(hoge.exe,"arbitrary string");
437:デフォルトの名無しさん
08/05/24 17:52:06
俺は>>434の言いたい事がわかったが次にどう書いてくるか楽しみなので伏せておく。
438:デフォルトの名無しさん
08/05/24 17:53:32
>>434
int number;
number = 適当な数値;
if (number % 10 < 4) number = number - (number % 10);
else number = number + 10 - (number % 10);
適当に今思いついたがこんなんで良いか?
439:デフォルトの名無しさん
08/05/24 17:58:08
あ、5ずつか普通に四捨五入してるわこれ
440:435
08/05/24 18:00:09
>>436
文字列を複数渡したいのですが
Process.Startの第二引数はstring[]でもいいのですか?
それと受け取る側はどうすればいいのでしょう?
441:デフォルトの名無しさん
08/05/24 18:01:03
>>438
ありがとうございます。
さっそく導入してみたのですが、これだとただの10ずつになってしまうのですが……。
っと書いていたら439の返事がきました。
ありがとうございます。
こういうのも四捨五入というのですか……。
勉強になりました。
442:デフォルトの名無しさん
08/05/24 18:02:00
>>440
無理。記号を決めてそれを受け取る側で改行と見なすくらいしかない
443:デフォルトの名無しさん
08/05/24 18:02:40
>>438の使って
if (number % 10 < 5) number = number - (number % 10)+5;
else number = number + 10 - (number % 10);
でいいんじゃね?
444:デフォルトの名無しさん
08/05/24 18:02:43
あ、ちょっといじったらできました。
もうちょっとテストして、また報告させていただきます。
本当にありがとうございました。
445:デフォルトの名無しさん
08/05/24 18:04:33
連投失礼します。
>>443
ありがとうございます。
それでいけそうです。
これまたもう少しテストしてきます。
446:デフォルトの名無しさん
08/05/24 18:06:56
こうでしょ。
int mod = x % 5;
x += mod > 2 ? 5 - mod : -mod;
447:デフォルトの名無しさん
08/05/24 18:08:21
>>442
string一つだけなのですか。
受け取る側はどうすればいいですか?
受け取る側はコンソールではなくフォームアプリケーションです。
448:デフォルトの名無しさん
08/05/24 18:17:35
>>447
スペース区切りとかで渡して、
splitで分割するなりすればいいんじゃね?
449:デフォルトの名無しさん
08/05/24 18:19:37
>>446
ありがとうございます。
>>443さんの方法だと、きりのいい数字だとちょっとおかしくなるようでした。
446さんの方法は私程度にはどういう処理をしているのかさっぱりなのですが、
問題なく使えます。
みなさん本当にありがとうございました。
450:435
08/05/24 18:30:42
Environment.CommandLineで受け取るか、
コンソールと変わらずにエントリポイントから受け取ればいいんですね。
451:デフォルトの名無しさん
08/05/24 18:40:20
>>431
AutoNullpoOudaki gattu = new AutoNullpoOudaki();
gattu.Execute();
452:デフォルトの名無しさん
08/05/24 19:11:50
文字列から動的にExpressionTreeやFuncを得ることって出きるん?
URLリンク(ufcpp.net)
ここで書いてあるような子としてみたかったんだが、CodeDom.GetExpressionFromとか見あたらず、いろいろググってもそれらしいのにたどり着けず・・・
CodeDomでFuncを返すメソッドを持つクラスをコンパイルして実行して呼び出せば出来無くないんだけれどもう少しまともな方法で・・・
453:デフォルトの名無しさん
08/05/24 19:31:07
>>452
そのページにある「ソース一式」のところからソース落して、
中身の「MyMath\CodeDom.cs」の中にその GetExpressionFrom の実体がある。
454:デフォルトの名無しさん
08/05/24 19:32:55
ちなみに、そのソースの GetExpressionFrom はまさに、その
「CodeDomでFuncを返すメソッドを持つクラスをコンパイルして実行して呼び出せば」
をやってるだけ。
もう少しまともな方法、確かに欲しいよね。
455:デフォルトの名無しさん
08/05/24 19:47:03
>>453
さんくすこ。
てっきり.NET3.5以降で追加されたのかと思ってた・・・orz
CocoaのようなKVCとかやるためにリフレクションからコード生成→lambdaにしてそれなりに高速にアクセスみたいなことしたかったんだが・・・
場合によって、無理やりコンパイルでlambda変換するようにしようかな・・・
あぁ書いてて思ったが、式ツリー手動でいじくればいいのか。よくわからんがやってみるノシ
456:デフォルトの名無しさん
08/05/24 20:04:19
Compact Frameworkでやっててもこっちで大丈夫ですか?
もし適切なところが他にありましたら誘導お願いします(´・ω・`)
ボタン押したらwavファイルをプログラムに埋め込んで、ボタン押されたらそれを再生させたいんですが、上手く再生されません。
hi.wavが再生させたいファイルです。
private void button1_Click(object sender, EventArgs e)
{
System.Reflection.Assembly a = System.Reflection.Assembly.GetExecutingAssembly();
string file = a.GetName().Name + ".hi.wav";
System.IO.Stream s = a.GetManifestResourceStream(file);
SoundPlayer player = new SoundPlayer(s);
player.Play();
}
サンプルを見ながらこのようなソースを組んで、
プロジェクトのプロパティのリソースのところにhi.wavを追加して、
Persistenceを「.resxに埋め込まれました」に設定しました。
しかし、動かしてみると標準のビープ音しかなりません。
デバッガで見ると、sがnullのままのようで、ファイルを読み込んでいないようです。
埋め込み方が間違ってるんでしょうか・・・。
よろしくお願いします(´・ω・`)
457:デフォルトの名無しさん
08/05/24 20:26:10
>>456
SoundPlayer player = new SoundPlayer("path");
player.PlaySync();
458:デフォルトの名無しさん
08/05/24 20:37:51
メッセージとしてスウェーデン語文字を表示させたいのですが、
なぜか読み込んでくれずにエラーが起きてしまいます
どうしたらよいのでしょうか
459:456
08/05/24 20:42:51
>>457
ありがとうございます。実際にwavファイル置いてパス指定して音を鳴らすことは問題なくできるんですが、
埋め込めたら良いなぁ・・・ってことなんです。
もしかして、埋め込みは無理ってことですか?
460:デフォルトの名無しさん
08/05/24 20:42:50
>>452
これがクエリ式のパーサ持ってたと思う。使い回せるかも。
URLリンク(www.codeplex.com)
使い方は"poorman's linq"でぐぐる。
461:デフォルトの名無しさん
08/05/24 20:45:46
>>458
取りあえずエラーとやらに付随してるメッセージを読み上げるといいよ
462:デフォルトの名無しさん
08/05/24 20:46:10
>>458
OSにスウェーデン語パックを導入しる
463:デフォルトの名無しさん
08/05/24 20:48:49
>>462
今からググってきます。ありがとうございました
464:デフォルトの名無しさん
08/05/24 22:09:12
レベルの低い質問で申し訳ありません。
出力の種類を「クラスライブラリ」としてあるプロジェクトを、スタートアッププロジェクトに設定した他のプロジェクトに参照させるにはどうすればよいのでしょうか。
そのままusingしようとしても「名前空間がない」と言われてしまいます。
465:デフォルトの名無しさん
08/05/24 22:12:54
>>464
ソリューションエクスプローラで参照したいプロジェクトを右クリックして
参照の追加 → プロジェクト
466:デフォルトの名無しさん
08/05/24 22:16:17
>>434
今更だけど、要は「5の倍数への丸め」、もしくは「丸め幅5での丸め」でしょ?
個人的には汎用的なこれを使いたいところ
var y = (int)Math.Round((decimal)x / n) * n;
まあ、整数型に限定してもこんなところじゃないか
var y = (x + (n / 2)) / n * n;
因みに、後者はaway from zeroだが、前者はRound()のmode指定で選択可
対象が整数値で、かつ丸め幅が奇数ならどちらでも同じ
467:デフォルトの名無しさん
08/05/24 22:37:56
>>465
ありがとうございます。
468:デフォルトの名無しさん
08/05/24 22:54:56
>>456
もしかしたら、Compact Frameworkじゃ違うかもしれないけど
多分、その方法はファイルをresxに埋め込まない古いやり方。
wavファイルをプロジェクトに追加して
ビルドアクションを「埋め込まれたリソース」にすれば、
その方法で鳴る筈。
んで、2005以降は、リソースエディタを使ってresxに埋め込んで、
"HI"がリソース名になったとしたら、
System.IO.Stream s = Properties.Resources.HI;
SoundPlayer player = new SoundPlayer(s);
player.Play();
で一応鳴る。
でも、ストリームのWAVEデーターの再生は、
GC絡みで問題があるらしい。
詳しくはこれを。
URLリンク(dobon.net)
469:デフォルトの名無しさん
08/05/24 23:05:15
ブロック崩しを作ったのですが、ボールが宙に浮いているときにスペースキーを押すと、
ボールが画面外に飛び出してしまうのです。どうにかなりませんか?
ちなみにソースはこれ
URLリンク(www.borujoa.org)
470:デフォルトの名無しさん
08/05/24 23:24:40
ソースを解析したうえでデバッグしてくれと。
471:デフォルトの名無しさん
08/05/24 23:27:03
>>469
ソース見て吹いたw
472:デフォルトの名無しさん
08/05/24 23:31:36
>>469
こういうifの書き方好きなの?
473:デフォルトの名無しさん
08/05/24 23:31:59
ってそもそもスレ違いじゃん
474:デフォルトの名無しさん
08/05/24 23:32:51
何でもう消えてるんだよ。ちょっと見てみたかった
475:デフォルトの名無しさん
08/05/24 23:56:20
キャッシュ漁ったら見つけた
476:デフォルトの名無しさん
08/05/24 23:59:51
型に格納できる値の最大値、最小値を返す関数はありますか?
例えば、unsigned intなら0か4294967295を返せる、といったような。
変数の型の範囲を超えるような値が格納されそうになった場合、エラーを出すような関数を作ろうと思っているので。
477:デフォルトの名無しさん
08/05/25 00:03:33
MaxValue/MinValueじゃ足りんのか?
478:デフォルトの名無しさん
08/05/25 00:19:23
そんなの、泣けりゃじぶんで定義して返せよ
479:デフォルトの名無しさん
08/05/25 00:24:16
LL言語のWWW::Mechanize的なのを探してます。
C#や.NET Framework向けのwebスクレイピングライブラリはないですか?
検索してたのですが、なかなか見つからないや・・・
480:デフォルトの名無しさん
08/05/25 00:24:27
スレ違い
481:デフォルトの名無しさん
08/05/25 00:24:56
>>478
いやいや、476はMaxValue/MinValueを知った上でそういう関数が欲しいんじゃなくて、
ただ単に MaxValue/MinValueの存在を知らないだけじゃないかと。
482:デフォルトの名無しさん
08/05/25 00:27:41
関数はまあ見逃すとしてもunsigned intなんて言ってる時点でスレ違いである事に気付こうな
483:デフォルトの名無しさん
08/05/25 00:28:51
>>479
MS は文法のゆるい HTML を機械処理するのはあまり好きじゃないみたい。
HTML2XHTML みたいなものを通して文法の正しい XML にした上で、
XmlReader やら LINQ to XML でアクセスするのがいいかと。
↓でそういうことやってるんだけど、
URLリンク(d.hatena.ne.jp)
HTML2XHTML が微妙臭い。
484:デフォルトの名無しさん
08/05/25 00:29:53
>>482
しっかり読んでなかったw
それはちゃんと、「C# は C/C++ とは違いますよ」誘導してやろうよ。
485:デフォルトの名無しさん
08/05/25 00:52:32
>>477
ありがとうございます。
>>481
その通りです。低レベルすぎてすみません。
>>482
C#ではUInt32って書くんですね。ありがとうございます、勉強になりました。
486:デフォルトの名無しさん
08/05/25 01:45:22
>>483
クッキーとか面倒なところを良きにはからってくれるのはないっぽいですね。
LLと組み合わせるしかないか・・・
GUI楽したいので.NET使いたかったけど、うまくいくかなあ
とりあえうずありがとう。
いろいろ試してみます
487:デフォルトの名無しさん
08/05/25 07:57:54
2005のPropertyGridについて質問
プロパティタブをいくつか追加したりしてるんだが
ボタンに使われる画像の色が PropertyTab.Bitmap で retuen した Format32bppArgb の画像と微妙に違う
見た感じは大体同じなんだが、実際のRGBを調べるとほんの少しずれてたりする
何か色数の制限があるのなら、それに合わせた画像にするんだけど分かる人いる?
488:456
08/05/25 08:59:21
>>468
ありがとうございます。
ビルドアクションを「埋め込まれたリソース」には一応変更していたんですが、鳴りませんでした。
・・・とおもったら、hi.wavが(.resxに埋め込む操作したとき)Resourceフォルダの中に入ったままビルドアクションを変更していたので、
常識的に考えて鳴りませんね。プロジェクトのディレクトリ直下に移して無事鳴りました。
あと、
System.IO.Stream s = Properties.Resources.HI;
SoundPlayer player = new SoundPlayer(s);
player.Play();
も、そのサイトを見つけたときにやってみたんですが、
CompactだとProperties.Resources.hiがstreamじゃなくてbyte[]を返してくるんで使えませんでした。
・・・って思ってたんですが、
byte[] hibyte = Properties.Resources.hi;
MemoryStream s = new MemoryStream(hibyte);
player.PlaySync();
すればすむ話ですねo. . ...rz
昨日の数時間は何だったんだ・・・
1日置くと急に分かったりするもんですね(´・ω・`)
本当にありがとうございました。
489:456
08/05/25 09:03:19
byte[] hibyte = Properties.Resources.hi;
MemoryStream s = new MemoryStream(hibyte);
SoundPlayer player = new SoundPlayer(s);
player.PlaySync();
の誤りです。すいません。
あと、>>456ではPlay()使ってますが、
特に非同期再生が必要なわけではないので、GC絡みのを回避するためにもPlaySync()を使おうと思います。
490:デフォルトの名無しさん
08/05/25 11:27:09
質問です
ネットの初心者向けサイトを見ながらC#をやっていたんですがそろそろきつくなってきました
とくにデリゲートをイベントハンドラとして実装するところと、イテレータがよくわかりません
初心者から中級者にレベルアップするために買うべき本を教えてください
491:デフォルトの名無しさん
08/05/25 14:11:02
C#用のDXライブラリと言うものがあったので早速使ってみたのですが、エラーが出ました。
空のプロジェクトに参照をDLLを追加し、Class.csファイルを作り、メインメソッドに
DxLibrary.DxLib_Init();
と書いただけなのですが、
DLL 'DxLibDll.dll' を読み込めません: 指定されたモジュールが見つかりません。 (HRESULT からの例外: 0x8007007E)
と出てしまいます。
DLLはあらゆる場所に配置して試したのですが、
やはり同じようにエラーがでます。
何か特別な書き方が必要なのでしょうか?
492:デフォルトの名無しさん
08/05/25 14:17:45
DXライブラリの公式サイトで提供されてる方のC#用DXライブラリを使え
使い方も丁寧に書かれてる
493:デフォルトの名無しさん
08/05/25 14:19:29
>>492
ありがとうございます。
いつのまにか出てたのですか!?
なぜエラーが出たのかは未だ不明ですが、早速使ってみたいと思います。
494:デフォルトの名無しさん
08/05/26 15:17:26
質問です。
2つのスレッドでそれぞれフォームを作成し表示します。
このとき、これらフォームの表示順位(重なり)を
コントロールすることは可能でしょうか?
なんか、デバッカ上とSetup後のプログラムで表示順がことなって
メッセージボックスが隠れたりする・・
495:デフォルトの名無しさん
08/05/26 17:06:52
構造体の中で1次元配列メンバを持つには
struct A{
public fixed double b[123];
};
でいけますが、
構造体の中で2次元配列メンバを持たせるために
struct A{
public fixed double b[123][234];
};
などとやってもエラーになります。
構造体の中で2次元配列メンバを持たせることは可能でしょうか?
496:デフォルトの名無しさん
08/05/26 17:10:31
494です。自己レスします。
とりあえず以下HPを参考にし、隠れていたダイアログが表示されるようになりました。(暫定対応ですが・・)
URLリンク(www.atmarkit.co.jp)
端的に言うと、複数のアプリをダブルクリックしたときと同じで、
後から立ち上げた方が優先されて表示される。のと同じみたいです。
お騒がせしました。
497:デフォルトの名無しさん
08/05/26 17:17:20
>>495
fixedである以上は無理
498:デフォルトの名無しさん
08/05/26 18:17:56
質問です。
クラスの配列をインスタンス化するのにforを使って次のようにやってるんですが、
もしもっとスタンダードな方法があったら教えてください。
for文の中でインスタンス化すると、スコープから出ると消えちゃうような感覚がして気持ち悪いんです。
classA{}
A[] a = new A[n]
for(int i = 0; i < n; i++){
a[i] = new A();
}
499:デフォルトの名無しさん
08/05/26 18:20:50
狂っているその感覚を修正する事をお勧めします。
500:デフォルトの名無しさん
08/05/26 18:21:08
それで十分スタンダード
> for文の中でインスタンス化すると、スコープから出ると消えちゃうような感覚がして気持ち悪いんです。
この感覚を何とかしたほうがいい
501:デフォルトの名無しさん
08/05/26 18:23:51
もしかして
A[] a = new A[n] ← classA型の変数を宣言
a[i] = new A(); ← 実際に代入
つまり、for文の中では代入行為しかやってないから消えない、ということですか?
502:デフォルトの名無しさん
08/05/26 18:29:29
GCのアルゴリズムを理解した方がいいよ。
GCってのは「参照できる限りは消えない」
例えばnが1なら、forを抜けても a[0]を参照できるでしょ?
で、参照できるので消えない。
503:デフォルトの名無しさん
08/05/26 18:34:42
了解しました。勉強します。
504:デフォルトの名無しさん
08/05/26 19:18:27
というかスコープを勉強したほうがいいだろ
505:デフォルトの名無しさん
08/05/26 19:20:45
スコープは割と正しく理解出来てるような発言に見えるけど?
506:デフォルトの名無しさん
08/05/26 19:30:39
GCとは全く関係ないだろ。
スコープの話をしてると思うんだが。
507:デフォルトの名無しさん
08/05/26 20:26:57
コンストラクタでフィールドにインスタンスを代入したら不自然か
508:デフォルトの名無しさん
08/05/26 23:14:09
なんでGCが出てきたんだw
509:デフォルトの名無しさん
08/05/26 23:16:05
↑遅れてきたアホ
510:デフォルトの名無しさん
08/05/26 23:36:55
確かにマオは四川省だったから ヤバスwww
511:デフォルトの名無しさん
08/05/26 23:37:37
スマソ、誤爆った
512:デフォルトの名無しさん
08/05/26 23:41:06
newしたものはアクセスできるなら消えない
513:デフォルトの名無しさん
08/05/27 00:18:08
>>505
できてないできてない。
514:デフォルトの名無しさん
08/05/27 00:46:13
.NETのGCはスコープより早く働くことがあるから要注意なんだよね。たとえば
static void Main() {
Hoge hoge = new Hoge();
hoge.Foo(); // hogeが参照されるのはここが最後
// 時間のかかる処理
}
hogeがまだスコープ内にあるにもかかわらず、時間のかかる処理の最中にGCされることがある。
515:デフォルトの名無しさん
08/05/27 00:50:36
↑あほ?wwwwww
516:デフォルトの名無しさん
08/05/27 00:53:20
そんなものに注意は不要
517:デフォルトの名無しさん
08/05/27 01:00:18
URLリンク(dobon.net)
ここの真ん中くらいの「補足:ニュースグループ・・・」あたりにその例が出てる。
KeepALiveを使ってる箇所。
518:デフォルトの名無しさん
08/05/27 01:14:44
これもスコープ終了以前にGCされて落ちる例だね。
「ふらっとC#,C♯,C#(初心者用) Part22」
スレリンク(tech板:850-877番)
>876 名前: 875 [sage] 投稿日: 2008/01/08(火) 00:46:17
>>>850
>あーもしかしてと思ってと思って>>875のコードから
>GC.KeepAlive(func); 抜いたら確かにAccessViolationExceptionおきるね。
>言ってるのはこれのことじゃろか。
>
>P/Invokeにデリゲートを渡す場合、そのデリゲートの寿命管理は.NET側の責任。
>実は元のるびま記事にも書いてある。
>URLリンク(jp.rubyist.net)
519:498
08/05/27 01:56:25
もしかして>>501の理解も間違いだらけなんでしょうか?
もう少し詳しく教えていただけませんか。
520:デフォルトの名無しさん
08/05/27 02:21:58
>>498はGCと関係ないよ。
厳密には関係なくないとしてあえて言うと、
new A[n]したオブジェクトはA[] aの寿命(参照が外れるまで)生きてる。
521:デフォルトの名無しさん
08/05/27 05:51:20
初歩的なことだとうじゃうじゃ煽りレスがついたりするのに
ちょっと難しい質問だとなかったかのようにスルーするお前らワロスw
522:デフォルトの名無しさん
08/05/27 08:25:46
>>521
最近はROM主体だが、お前の発言が一番醜く見える。
そんなに無視されたのがくやしいのか? ちなみにどの質問なのか示してみ。
523:デフォルトの名無しさん
08/05/27 08:56:45
どこが難しいの?直前のネタはフラットでもスルーだろ・・・C#関係ないし
524:デフォルトの名無しさん
08/05/27 09:04:01
>>518
それはスコープが終了するとGCされるから、プログラマの責任でスコープを終了させんな、って話だ。
525:デフォルトの名無しさん
08/05/27 09:12:10
>>522
わざわざROM主体とか前置きしないとレスできないのかよw
526:デフォルトの名無しさん
08/05/27 09:14:26
ROM主体と言うのを何か言い訳に使ってるなら
>>525のレスは理解出来るが、別に言い訳に使ってないじゃん
まあ、無駄な前置きではあるけど
527:デフォルトの名無しさん
08/05/27 09:40:12
>>526
まあ、第三者を装ってるあたりはみっともないな
528:デフォルトの名無しさん
08/05/27 10:23:17
>>524
それはるびまの記事の話だろう。
あのスレの>>875はこんなコード。GC.KeepAliveを抜いたらクラッシュする。
static void Main(string[] args)
{
VALUE state = 0;
Ruby.ruby_init();
const string funcdef =
"def foo\n" +
"s=\"FOO\"+nil\n"+
"end";
Ruby.rb_eval_string_protect(funcdef, ref state);
VALUE hoge = Ruby.rb_intern("hoge");
Ruby.CallbackArg0 func = arg => Ruby.rb_funcall(Ruby.Qnil, hoge, 0, 0);
VALUE result = Ruby.rb_protect(func, Ruby.Qnil, ref state);
GC.KeepAlive(func);
}
529:デフォルトの名無しさん
08/05/27 13:20:13
アンマネージな世界に渡したデリゲートを安全に保持しとくには
アンマネージ側で不要になるまでGC対象にならないようにしとかなきゃならない。
てだけの話?
530:デフォルトの名無しさん
08/05/27 13:41:36
>>529
そういうこと。
他にも、インライン展開されたコンストラクタが完了する前にファイナライザが実行されることすらあるよ。
この場合もアンマネージな世界のハンドルの早すぎる解放であぼんする場合がある。
531:デフォルトの名無しさん
08/05/27 13:44:19
>>529
9割9分そういう理解でOK。>>514もアンマネージなmutexやロックのためのファイルを
開いたままにする場合などに影響が出る。
アンマネージが関係しないケースはまれなのだが、なぜかそのレアケースが、
MSDNに載ってたりする。サンプルソースは2種類あるが最初のほう。
URLリンク(msdn.microsoft.com)(VS.80).aspx
532:デフォルトの名無しさん
08/05/27 14:44:45
非同期ゲリゲートの動きを止めたいときはどうすればいいですか?
533:デフォルトの名無しさん
08/05/27 15:07:42
>>532
フラグやEventを使ってスレッド自身にそうさせるのが基本。
534:デフォルトの名無しさん
08/05/27 16:06:12
関係ない話題を知ったかでひけらかすより質問に的確に答えてあげたら?
535:デフォルトの名無しさん
08/05/27 16:10:55
いったい何の話だ?
536:デフォルトの名無しさん
08/05/27 16:12:20
すっげーすぐにレス来たww
お前が関係ない話してレスが流れたんだろ。
自分で見返せ。
537:535
08/05/27 16:19:20
>>536
えーと、俺はこのスレには初めて書いたものだが
流れがわからんからアンカーつけてくれないか?
どの質問の話かわからないから、答えようが無いわ。
538:デフォルトの名無しさん
08/05/27 16:22:12
>>531
そこのサンプル例1の解説が不正確で、プロパティの取得処理が
時間のかかる処理のためデストラクタが先に動いてしまうと読めるがそれは誤り。
もしそうであれば.NETのGCなんて安心して使えない。
それはデストラクタの使い方に重大な欠陥があるために発生する。
具体的にはExampleクラスのデストラクタで他のクラス、
この場合hashValueが参照を持つArrayクラスの後処理を書いたらいかんということ。
マネージドだけの場合は基本的にKeepAliveのことは考えなくてよい。
539:デフォルトの名無しさん
08/05/27 16:57:12
デストラクタが呼ばれるときには、既にメンバは解放された後なんだっけ?
540:デフォルトの名無しさん
08/05/27 17:11:04
微妙に違う。
ファイナライズメソッドの実行順序には何の保証もないという話。
だと思うけどリンク先見てないから確かなことは分からん。
541:デフォルトの名無しさん
08/05/27 17:11:27
>>539
メンバに参照型を持つ場合でも、オブジェクトとして独立してるので
デストラクタが動くタイミングやメモリが回収されるタイミングは不順。
順番が必要な場合はDispose(true)のパターンを使う。
542:デフォルトの名無しさん
08/05/27 17:13:17
あいや、ずっと前に読んだことあるはずでかすかな記憶によると
解放された後っていうか自分で解放してんじねーかよw
って話だったかも…
543:デフォルトの名無しさん
08/05/27 17:48:04
>>537
半年ROMれ。
544:デフォルトの名無しさん
08/05/27 18:08:24
>>543
それはない
545:デフォルトの名無しさん
08/05/27 19:47:37
一匹キティが沸いてんな・・・フラットじゃないのに
546:デフォルトの名無しさん
08/05/27 21:16:53
フラット!フラット!!
547:デフォルトの名無しさん
08/05/28 00:24:52
質問です。
フォームを2つ使うアプリを作っています。
メニューはメイン側にはありますが、サブ側は何もありません。
で、サブ側にフォーカスがある時に、メイン側のメニューのショートカットを叩いても、
フォーカスがサブ側にあるため、イベントが発動してくれません。
出来ればこのショートカットを共有したいと思っています。
サブ側でもOnKeyDownなんかで同じ関数を呼ぶようにすれば可能といえば可能ですけれど、
あまりにも美しくないなと思ってます。何か上手い方法は無いでしょうか?
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4185日前に更新/244 KB
担当:undef