C♯相談室 Part17
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん♯
NGNG(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。
過去スレは>>2-5あたり。
関連リンク
http://onigiri.s3.xrea.com:8080/csharp/index.php?%5B%5B%A5%EA%A5%F3%A5%AF%5D%5D
ソース置き場.NET
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1003826049&rm=10
0154デフォルトの名無しさん
NGNG一般論だけど、自分で作ったものじゃないものを勝手に Dispose しちゃダメ。
キミが作った Graphics を、誰かのコードに「ここに描いてね」ってことで渡したら、
勝手に Dispose されたりしたら嫌でしょ。
0155デフォルトの名無しさん
NGNG0156デフォルトの名無しさん
NGNGアメリカならドキュメントに消しちゃ駄目と書いてなかったといってMSを訴えられるかもしれないがここは日本です.
0157デフォルトの名無しさん
NGNGSetRegion
0158デフォルトの名無しさん
NGNGちなみにHSPではフォントの大きさをドット数に比例した論理サイズで指定してあります。
0159デフォルトの名無しさん
NGNG他人の漢字で関数を書くという奴を見て激しく憤慨していたのですが、
こんどは自分が、最近数学的なライブラリーを作っていて激しくギリシャ文字を使いたい衝動に駆られます
使ってもいいですか(汗
世界中がマルチバイト対応の時代がこないかな……
そんなことを思った人挙手(^^)/
0160デフォルトの名無しさん
NGNG他人を激しく憤慨させるつもりがあるなら書けば?
0161デフォルトの名無しさん
NGNG0162デフォルトの名無しさん
NGNG通常の関数であれば問題なく呼べているのですが,コールバックを受け取る方法
がわかりません.
コールバックはどのように受けとればよいんでしょうか?
0163デフォルトの名無しさん
NGNGGraphics.FillRectangleで代用?
>>162
そのコールバック関数と返値・仮引数を同じにしたデリゲート。
0164デフォルトの名無しさん
NGNG今はDrawRectangleでwidthとheightを1にして代用していますが、
かなり大量に描画する予定なので出来ればもっと簡単に処理出来るものはないかと思ったのですが・・・
0165最凶VB厨房
NGNG0166デフォルトの名無しさん
NGNGWin32APIのSetPixel関数かな。
どのみちあんまり「簡単に」とは行かないような気がするけど。
Bitmapオブジェクトが取得できるならBitmap.SetPixelがベストだけれど。
0167デフォルトの名無しさん
NGNGprivate void timer1_Tick(object sender, System.EventArgs e)
{
string s = text1.text; // <- constにしたい。
// これ以降sを変更したくない。
おねがいします。
0168デフォルトの名無しさん
NGNGPathAddBackslash()
PathRemoveBackslash()
に相当するものはありますか?
0169デフォルトの名無しさん
NGNGたぶん無いと思うけど、それくらいすぐ実装できそうだな。
0171デフォルトの名無しさん
NGNGreadonlyじゃね?
…と思ったらローカル変数に使えなかったスマン。
0172デフォルトの名無しさん
NGNGprivate void timer1_Tick(object sender, System.EventArgs e)
{
string s = text1.text; // <- constにしたい。
// これ以降sを変更したくない。
if(s != text1.text){
MessageBox.Show("変更するなつってんだろゴルァ!!!!!!!!");
}
}
0173デフォルトの名無しさん
NGNGtext1.textを変更しただけなのに文句言うなよ。
0174デフォルトの名無しさん
NGNGprivate void button1_Click(object sender, System.EventArgs e)
{
Monitor.Enter(bitmap);
//テキトーなビットマップをロック
textBox1.Text = "適当に";
}
のイベントを起こした後、
Monitor.Exitを実行していないのに
private button2_Click(object sender, System.EventArgs e)
{
Monitor.Enter(bitmap);
//同じビットマップでロックを取得
textBox1.Text = "これは表示されないはずなのに";
}
↑これが実行されてしまいます。
スレッドとイベントなら同期が取れるのですが・・・。
0175デフォルトの名無しさん
NGNG同一スレッドでEnterしてるからじゃない?
0176デフォルトの名無しさん
NGNGありがとうございます。
MSDN読んでもピンとこなかったで助かりました。
0177デフォルトの名無しさん
NGNGMonitor も良いけど、
っていうか過去に Monitor つかえみたいなこと書いた気がするけど、C# なら
Monitor.Enter(obj)
try { ... }
finally { Monitor.Exit(obj); }
の簡易文法であるところの
lock(obj) { ... } も便利ですよ。
0178デフォルトの名無しさん
NGNGブロックにできるのであれば普通lock使うけどね。
しかし一番の問題は、>>174がMonitorの用途を誤解しているようだと言う事…
まあ理解したんならいいんだけどね。
0179デフォルトの名無しさん
NGNGこの流れで質問だけど、単純に『パス』って言った場合、最後に \ は付くの付かないの?
0180デフォルトの名無しさん
NGNG何かよい方法はないでしょうか
FontDialog
Show何タラプロパティ
Allow何タラプロパティ
すべて試してみたのですがだめでした。
0181デフォルトの名無しさん
NGNG質問の意味はよくわからんが、とりあえずPathクラスの各メソッドが返す文字列にバックスラッシュはつかんな。
0182デフォルトの名無しさん
NGNGGDIとGDI+では表示が異なるので仕様
0183デフォルトの名無しさん
NGNGtry{}
catch{}
finally{}
}
とリリースモードで実行するとfinally節が実行されません。
しかし
int i= 0;
while(i < 1)
とやると(iの値は変化しないので事実上無限ループ)
リリースモードでも問題なくfinally節が実行されます。
なぜwhile(true)だとfinallyが実行されないんでしょうか?
0184デフォルトの名無しさん
NGNGoptimizer が『while の中には実行しなければならないものは無い』と判断して
丸ごと消してしまったのでは?
0185デフォルトの名無しさん
NGNGfinally節が実行されないことをどうやって確かめたの?
0186デフォルトの名無しさん
NGNGそれはVisualStudioの設定なんでしょうか?
>>185
実際にはfinally節にMessageBoxを仕掛けて確かめました。
SharpDevelopだと同様のことをやってもちゃんとfinallyが実行されるので
やはりVisualStudioのリリースモードが何かをやってれるのだと思うのですが
0187デフォルトの名無しさん
NGNGMessageBox 仕掛けてるのに無視ってのは optimize されたにしてもマズいよなぁ。
# もしかして optimizer の bug ?
0188デフォルトの名無しさん
NGNGVC++6.0のときだけれど、同じようなのありますよ.
アセンブラで見てもコードがない.
デバッグだとある。最適化全部消して解決しました.
Optimiseなんて信用してません.
0189デフォルトの名無しさん
NGNGどうでもいい。
0190デフォルトの名無しさん
NGNGやっぱり仕様なんですかね・・・
割り切ることにします。
情報ありがとうございました。
0191デフォルトの名無しさん
NGNG具体的にどんなコードなの?
ILDASMで見てもやっぱりfinally句はなくなってる?
0192デフォルトの名無しさん
NGNGコンパイルってどっちも結局CSCでやってんでしょ?
0193デフォルトの名無しさん
NGNG何に活用するものなのでしょうか?
0194デフォルトの名無しさん
NGNGObject.GetHashCodeのヘルプをみれ。
0195デフォルトの名無しさん
NGNGくっついてるコンパイルオプションの問題じゃね?
0196デフォルトの名無しさん
NGNG一つしかないような気がするしね…
例えばSharpDevelopがリリースビルドでも最適化を有効にしてないとかなら
分かるけど、そんなことはないような気がするし…
0197デフォルトの名無しさん
NGNG0198デフォルトの名無しさん
NGNG基本的にない。
0199デフォルトの名無しさん
NGNG自己解凍実行形式の圧縮ファイルを作れば
0200デフォルトの名無しさん
NGNG0201デフォルトの名無しさん
NGNG0202デフォルトの名無しさん
NGNG他のプログラムからは参照させないようにしたいんだけど、できますか??
0203デフォルトの名無しさん
NGNGできるかしらんが駄目?
0204デフォルトの名無しさん
NGNGまあ分割だろうが圧縮だろうが暗号化だろうが技術的には可能だけど、
C#でやることじゃあない気がするな。
0205デフォルトの名無しさん
NGNG全く同じ関数名の関数を持つ,2つのクラスがあります.
これらを利用するコードはある条件をみて,
その2つのクラスのどちらの関数を利用できるかを判断したいと思っています.
例えば ClassTestNo1, ClassTestNo2 とあり,
それらの中でそれぞれ MethodTest という関数が定義されている時に,
それを呼び出すコード は
ClassTest.MethodTest();
のように呼び出したいのです.で,なんらかの条件による判断で,
ClassTest が ClassTestNo1 なのか ClassTestNo2 なのかは
動的に決定したい,という事が行ないたいです.ただし,
ClassTestNo1, ClassTestNo2 は Static で定義されているので,
利用する前に条件を見て,new すればいい,という事はできません.
なにかアドバイスを頂けないでしょうか?
0206デフォルトの名無しさん
NGNG設計をやり直す。
てのはともかくとして、動的に判断する以上利用者側が判断用のboolをもってるんだろう?
ClassTest.MethodTest(bool)
にすればいいんでないの?
0207デフォルトの名無しさん
NGNG僕も最近それに近い事をしているので、どぞ
こんな雰囲気のコードでいけると思います。
object hoge = new ... ;
if( hoge.GetType().GetMethod( "MethodTest" ) == null )
{
ClassTestNo1();
}
else
{
ClassTestNo2();
}
とか、こんな感じ
GetMethod の戻り値オブジェクトにイカしたメソッドがいっぱいあります。
0208デフォルトの名無しさん
NGNGん、205の用件とちょっとズレてる気がする
これは MethodTsetがあるかどうかで、呼び出す関数を決めてますが、
適当に変えてください、肝はGetMethod()なので、これでも十分と思ので。
0209デフォルトの名無しさん
NGNGうーん、うーむむGetMethodが肝なのか…?
0210デフォルトの名無しさん
NGNGこれでOK?
if (ClassTest is ClassTestNo1)
{
}
マーカーインターフェースを利用する際によくやる手だけれども。
0211デフォルトの名無しさん
NGNGClassTestからアクセスできる形で条件に合わせてデリゲートでも作っとくか、
呼び出された時点で条件判断して呼び出すメソッド変えたらいいんじゃないの?
2種類しかないなら、まあ後者のやり方でもいいかな。
デリゲート使う方が柔軟ではあるけど。
0212デフォルトの名無しさん
NGNGinterface IClassTest { void MethodTest(); }
class ClassTestNo1 : IClassTest { 略 }
class ClassTestNo2 : IClassTest { 略 }
class ClassTest{
public static IClassTest classTest;
public static void MethodTest(){
classTest.MethodTest();
}
}
//呼び出し側
ClassTest.classTest = new ClassTestNo1();
ClassTest.MethodTest();
ClassTest.classTest = new ClassTestNo2();
ClassTest.MethodTest();
0213デフォルトの名無しさん
NGNGchar c;
if ( (c <= 'a' & c >= 'z') == (c <= 'A' && c >= 'Z') )
{
処理;
}
みたいな感じで切り分けられましたが、C#の場合はどうすればいいんでしょうか?
正規表現を使うしかないんでしょうか。。
0214デフォルトの名無しさん
NGNGcharにキャストしてやるとか。
0216デフォルトの名無しさん
NGNGお前はヘルプというものを読んだことがあるか?
char.IsLetter(c);
0217デフォルトの名無しさん
NGNGてかcharにキャストって出来ないと思うが…
charでは取得できてるんじゃないの?
その場合は、char.IsLetterとかでできんかいな?
あとどうでもいいが、>>213の条件はいったいなんだ?
ちなみにCでも普通は文字コードを直接条件に書くようなことはしない。
0218デフォルトの名無しさん
NGNG.NETはUnicodeだということを忘れずに。
Char.IsLetterは、例えばギリシャ文字のアルファベットもtrueを返す。
0219デフォルトの名無しさん
NGNG書いてるうちに進んでた…
0220デフォルトの名無しさん
NGNG> if ( (c <= 'a' & c >= 'z') == (c <= 'A' && c >= 'Z') )
これどういう意味よ?
0221デフォルトの名無しさん
NGNG0222デフォルトの名無しさん
NGNGごめん、確かに
俺一生懸命この条件の真の意図を考えてたよ
0223デフォルトの名無しさん
NGNG0224デフォルトの名無しさん
NGNGカレントディレクトリ、EXEのあるフォルダ
どっち?
それともアプリケーションベース?
0225デフォルトの名無しさん
NGNGです。
0226デフォルトの名無しさん
NGNGおれも、実はすっごいひねくれてる条件で、
正しく動くのかと検証しかけたんだが…
> (c <= 'a' & c >= 'z')
&は誤植としてもこの時点でありえね〜って結論になった…
0227デフォルトの名無しさん
NGNG0228デフォルトの名無しさん
NGNG加工せんでも直接取れるプロパティもあったかも、ちょっと失念。
0229デフォルトの名無しさん
NGNG0230デフォルトの名無しさん
NGNG有難うございます。
0231過去の自分
NGNG.NET Frameworkがインストールできなくなったら
MSサポート技術情報英語版824643
http://support.microsoft.com/default.aspx?scid=kb;EN-US;824643
0232デフォルトの名無しさん
NGNGそれがどのようなプログラミングで再現されているのか知りたいのですが方法はありますか?
たとえばJavaでいえば
jPanel1.addComponent(jTextField1);
jTextField1.setText("abcdef");
こんな感じの奴です。
おそらくInitializeComponent();あたりが怪しいと思うのですが・・・
0233デフォルトの名無しさん
NGNGInitializeComponent() のなかにある。
何が分からない?
0234デフォルトの名無しさん
NGNG.NET2003のソースエディタでは非表示になっていたから分かりませんでした。
今、別のテキストエディタで見たらちゃんと記載されてました。
0235デフォルトの名無しさん
NGNG0236デフォルトの名無しさん
NGNG0237デフォルトの名無しさん
NGNG自己紹介板のリンク張った方が良いですか?
0238デフォルトの名無しさん
NGNG天然丸出しの文章だね、プッ
0239デフォルトの名無しさん
NGNGWhidbeyは2005年半ばになるらしいけれど、それまでは待ちたくない...
どこかのサイトで.NET1.1でもC#用としてだけならGenerics使えるコンパイラがあるとかいてあったようなきもしましたが.
0240デフォルトの名無しさん
NGNGTextBox.AppendText( text + "\n") で良いんだよな?
何で表示されないんだろ?
0241デフォルトの名無しさん
NGNG\r\nにしたらどうなる?
0242240
NGNGLine にはちゃんと別の行として反映されてる
けど表示がサパーリ
追加しても何も表示されないか、同じ行に書かれる
TextBox って、BeginUpdate みたいな機能ないよなぁ
なんでだろ
0243デフォルトの名無しさん
NGNG0245デフォルトの名無しさん
NGNG0246デフォルトの名無しさん
NGNGMultiLine は true
false でも変わらなかったが
0247デフォルトの名無しさん
NGNG0248デフォルトの名無しさん
NGNGでできたんだけど
0249デフォルトの名無しさん
NGNG0250デフォルトの名無しさん
NGNG0251240
NGNGなんだったんだ一体?
0252デフォルトの名無しさん
NGNGバグの犠牲者
■ このスレッドは過去ログ倉庫に格納されています