ふらっとC♯(Part5)
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
少しずつC#プログラマを名乗るものが現れました。みなさん一緒に勉強しましょう。
前スレッドはこちら
http://pc2.2ch.net/test/read.cgi/tech/1059028988/l50 (Part4)
http://pc2.2ch.net/test/read.cgi/tech/1047210828/l50 (Part3)
http://pc2.2ch.net/test/read.cgi/tech/1035895873/l50 (Part2)
http://pc2.2ch.net/test/read.cgi/tech/1023766485/l50
0655デフォルトの名無しさん
NGNG0656デフォルトの名無しさん
NGNGと思ったら負けですか?
0658デフォルトの名無しさん
NGNGReadLineで処理してるんじゃない?
だったら、ReadToEndで読んでみては?
FileStream fs = new FileStream("ファイルのパス",FileMode.Open);
StreamReader sr = new StreamReader(fs);
textBox1.Text = sr.ReadToEnd();
ところでVC#.Net2005っていつ発売なの?
はやく.Net Freamwork2.0を使ってみたい・・・
0659デフォルトの名無しさん
NGNG早くて来夏だろうねぇ。
環境があるなら、β1を試してみたら?
十分に正式版に向けて準備ができると思うけど。
それに、今ならAvalonのPreviewも出てて、楽しいと思うし。
0660デフォルトの名無しさん
NGNG0661デフォルトの名無しさん
NGNGthis.Hide();
this.ShowInTaskbar = true;
と言う状態にしたいのですが何か方法があるのでしょうか?
0662デフォルトの名無しさん
NGNGそれで良いんじゃないのか?
0663661
NGNGいや、やってみたら分かるけど
this.Hide();
とすると
this.ShowInTaskbarを弄っても反映されないみたい
Locationをどっか遠くに設定するしかないのかな?
0664デフォルトの名無しさん
NGNGじゃいかんの?
0666デフォルトの名無しさん
NGNGマクロとテンプレート使ってトリッキーなことしてたのでそれをC#で実現する方法がわからなくて困ってます。
0667デフォルトの名無しさん
NGNG0668デフォルトの名無しさん
NGNG0669デフォルトの名無しさん
NGNG0670デフォルトの名無しさん
NGNG0671デフォルトの名無しさん
NGNGへたに型とかみなくていいから、単にテンプレート変数を
自分の書いた文字で置き換わってコンパイルされるだけでいい。
そっちのがいろいろ使い道ある。
0672デフォルトの名無しさん
NGNG単純置換は止めてくれ。C++ の如くアセンブリが肥大化する。
0673デフォルトの名無しさん
NGNGむしろC++見たいなので、単純置換でないものがいいな、
もし型の置き換えだけであれば、テンプレートよりもメタクラスの実装の方が何倍も綺麗でいいと思うし。
てか、なんでメタクラスは実装されないんだろう……シクシクシク
0674デフォルトの名無しさん
NGNGメタクラスはクラスのクラスだっけか
smalltalk やった事無いから分からん
0675デフォルトの名無しさん
NGNGとどのつまり型を入れることのできる変数。
Metaclass a = int ;
a b ;
は
int b ;
たとえばこんな感じ
void Func( Metaclass T , int hoge , ... )
{
}
template 全くいらない
0676デフォルトの名無しさん
NGNG0677デフォルトの名無しさん
NGNGType
0678デフォルトの名無しさん
NGNGそれは何かが違う C++ でいえば typedef と type_info 型ぐらい違うな
0679デフォルトの名無しさん
NGNG0680デフォルトの名無しさん
NGNG0681デフォルトの名無しさん
NGNG当方で探しても見つかりませんでした。
0682デフォルトの名無しさん
NGNGそれはこれのこと?
ttp://bandodalua.lua.inf.puc-rio.br/luanet/
0683デフォルトの名無しさん
NGNG> So what about executing Lua script in .NET applications?
> This should not be a major problem, just the matter of writing a managed C++ wrapper.
0684デフォルトの名無しさん
NGNG(.NETとか関係なけりゃクラスすらないような)を、C#で
使用する方法は無いのでしょうか
なんとなくムリかなとは思うのですが、あまりに基本な
ためかどこのFAQを読んでもハッキリした答えがなくて
モヤモヤしてます。C/C++で作られた資産を移植しようと
すると、やはり手作業が入るものでしょうか
ズバッと斬ってやって下さい orz
0685デフォルトの名無しさん
NGNG例えばWin32API呼出もC用ライブラリの呼出と考えられる。
関数のエントリポイント、値渡し参照渡し、相互の型の対応などを考える必要はあるが、基本はこんな感じ。
[System.Runtime.Interopservices.DllImport("user32.dll")]
public static extern uint SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
詳しくはヘルプを見るべし。
ms-help://MS.VSCC/MS.MSDNVS.1041/cpguide/html/cpconconsumingunmanageddllfunctions.htm
0686デフォルトの名無しさん
NGNGDLLなら>>685の言うようにP/Invokeで利用可能。
そうでないなら、COMやDLLにするかManaged C++でラッパを書いて利用する。
漏れはP/InvokeメンドクサイのでCOMコンポーネント経由でやったりするのが好きなんだけど、
Windows XP以外ではインストーラが必須になるので嫌う向きもあるみたい。
0687デフォルトの名無しさん
NGNGおおーすげー便利そう・・・
C#2.0に欲しいなぁ
メタクラスで指定した型の戻り値が欲しい時はどうするの?
object Fanc( Metaclass T, int hoge, ...)
{
}
ならちとイヤーな感じw
0688デフォルトの名無しさん
NGNGリフレクションのシンタックスシュガーか・・
どんなときに便利なの?
0689デフォルトの名無しさん
NGNGそれって実行時にすっ飛ぶんだよね
えらーしょりしにくくね?
0690デフォルトの名無しさん
NGNGC#の設計思想と全然合わないな。異物を混ぜるなって感じ。
0691デフォルトの名無しさん
NGNG悪くはないと思うけど、T 型を返すときはどうすんの?
0692デフォルトの名無しさん
NGNGてっきりC++のコードが使えないと思ってたので
助かりました。安心してC#を勉強できそうです。
さっそくDLL作成のほうに手をつけてみます。
0693デフォルトの名無しさん
NGNGType で reflection って面倒だから、シンタックスシュガーには意味あるんじゃない?
でもテンプレートの代わりにはならないような気が・・・
template <class T> T Max(T a, T b) なんてのから、型推論で T を導出してくれて
こそのテンプレートだし。若干 C++ マンセー入っちゃってるけど。
0694デフォルトの名無しさん
NGNG>>692
ポインタもWindowsのハンドルもIntPtr型だ。
0695デフォルトの名無しさん
NGNG>>692
コールバックも書けるから安心してください(MSDN参照)。
0696デフォルトの名無しさん
NGNGシンタックスシュガーではないと思われ
0697デフォルトの名無しさん
NGNGboostとか見てると良く分かるけれど、戻り値が型推というのはバクダンになりやすいので、使わないというのは有りかと思います。
この形式ではやるとしたら構造体かなにかで型と実体のペアを作って返すしかないですね。
>>690
C#の設計思想など知りませんが、少なくともよりオブジェクト指向的ではあろうかと……
0698デフォルトの名無しさん
NGNGいや、シンタックスシュガーだと思うよ。だって、
・変数宣言ができる
・メソッド等のInvokeが普通の書き方でできる
っていう、純粋に記法の追加でしかないし。
即値を渡せばコンパイル時に型を決定して最適化はできるだろうけど・・
関係ないけど全然Metaclassじゃなくて単にClassだよね。
>>697
型推論はともかく、T Max(T a, T b) 程度が書けないのでは記述能力不足・・・
0699デフォルトの名無しさん
NGNGリフレクションをシンタックスシュガーということにしてしまうと、全てがシンタックスシュガーになってしまわないか?
それは何か違う気がするんだが・・・
0700デフォルトの名無しさん
NGNGリフレクションをシンタックスシュガーだと言っているのではなく、
>>675の「Metaclass」なるものは単なるリフレクションのシンタックスシュガーに過ぎない
と言ってるだけ。
Type T; があったとき、 T a = new T() なんて書けるとリフレクション使うときには便利、
それには同意する。
0701デフォルトの名無しさん
NGNG0702デフォルトの名無しさん
NGNGだから一体何をどう捕らえられているのかサッパリわかんない。
ケチらないでもう少し言いたいことを書いてよ。
0703デフォルトの名無しさん
NGNGちょっと勘違いがあるかも、リフレクション機能を対象にしたシンタックスシュガーってのは変だと思うわけ。
リフレクションは基本的にこれがありとなると、もはや何でもありになってしまう。
何でもありな物をシンタックスシュガーだと主張するなら言語機能の全てがシンタックスシュガーということになってしまうが、
これは常識的なシンタックスシュガーの概念とは違うと思う。
シンタックスシュガーは元々定義があいまいなので、主観で貴方がそう思うというならそういう事としかいいようがないと思います。
0704デフォルトの名無しさん
NGNGよくわかった。漏れが>>715をシンタックスシュガーだと思ったのは、現行のTypeとの違いが
局所的な記法の違いだけだってとこから。
主観だけど構文が違うだけで機能が同じなら、それはやはりシンタックスシュガーだと思う。
C++のテンプレートが型推論機構のおかげで普通のチューリングマシンとしての機能を完備していて、
単なるマクロの便利な記法を脱却しているのと比べてしまうからそう思うのかもしれないけど。
0705デフォルトの名無しさん
NGNG0706デフォルトの名無しさん
NGNG分からないときにはとりあえずぐぐって下さいな
http://www.google.com/search?num=50&hl=ja&lr=lang_ja&safe=off&ie=SJIS&oe=SJIS&q=%82%C4%82%A2%82%A4%82%A9%83V%83%93%83%5E%83b%83N%83X%83V%83%85%83K%81%5B%82%C1%82%C4%89%BD%82%C5%82%B7%82%A9%81B
0707デフォルトの名無しさん
NGNGシンタックスペッパーもあるのですか?
0708デフォルトの名無しさん
NGNGぐぐった可能性を微塵も考慮しないあたりがステキ。
>>707
正露丸糖衣があるなら正露丸塩衣もあるのですか?
0709デフォルトの名無しさん
NGNG0710デフォルトの名無しさん
NGNGC#に対するIDEみたいなもの。
0711692
NGNGありがとうございます(T−T
間違いなくつっかえると思われます¢(。。;)
なお勉強はぼつぼつ進行しつつあり、予言の的中は
15日以降にスケジュールされております。
0713デフォルトの名無しさん
NGNGC#でボタンをクリックすると指定したpdfファイルを印刷するような
プログラムを作成することはできますか?
どうすればいいでしょうか?なにかヒントをお教えください。
0714デフォルトの名無しさん
NGNG0715デフォルトの名無しさん
NGNG・"C:\Program Files\Adobe\Acrobat 6.0\Reader\AcroRd32.exe" /p /h "%1"
0716713
NGNGありがとうございました。
おかげで印刷することができました。
複数枚を、印刷したい時や、ページを指定して印刷するときは
どのようにすればいいでしょうか?よろしくおねがいします。
0717デフォルトの名無しさん
NGNG0718デフォルトの名無しさん
NGNG馬鹿ハケーン
0719デフォルトの名無しさん
NGNG0720デフォルトの名無しさん
NGNGttp://www.google.com/search?num=100&hl=ja&lr=lang_ja&oe=utf8&q=C%23+%E3%81%94%E3%81%BF%E7%AE%B1
0721719
NGNG0722デフォルトの名無しさん
NGNG実行中のスレッドが勝手にGCされちゃうことってあるの?
void Start()
{
Thread thread = new Thread(new ThreadStart(new MyThread()));
thread.Run(); // 作りっぱなし
}
0723デフォルトの名無しさん
NGNGないから安心したまい。
実行環境が内部でスレッドを管理するので、参照は実は存在するから。
スレッドが行うメソッドが終了したらGCの対象になる。
細かい話だが、StartされないThreadオブジェクトは参照が無くなればGCの対象だが、
WeakReferenceでのみ参照を持っている状態でもGCの対象にならなくなるようだ。
0724デフォルトの名無しさん
NGNGそのためGC対象から外すよう明示的に指示してやるのが良いそうだ
GC.KeepAlive(mutex);
ってな感じで
0725デフォルトの名無しさん
NGNGそれはひょっとしたらSocketがListenした時にMutexが解放されてしまうと言うバグかな。
そうだとしたらGC.KeepAliveも無意味だよ。
そもそもGCの問題じゃないし。
.NET1.0はSP3では解決されてる。.NET2.0(のベータ)は初めから問題なし。
.NET1.1ではSP1でも未解決な、ちょっと頭の痛い問題だ。
TCPチャネルを使ったリモーティングですら解放されてしまうし。
0726デフォルトの名無しさん
NGNGスレッドが終了する時に自動的にそのスレッドが所有するMutexを解放するって話。
0727デフォルトの名無しさん
NGNG0728デフォルトの名無しさん
NGNG0729デフォルトの名無しさん
NGNGhttp://dobon.net/vb/dotnet/process/checkprevinstance.html
> ローカル変数として宣言したMutexを使った場合、うまく行かないことがあるようです(これに従い、
> ここで紹介しているサンプルも修正しました)。静的フィールドを使えば解決されますが、それ以外
> では、GC.KeepAliveメソッドを使用すれば解決できるようです。エントリポイントで二重起動を
> チェックする例を次に示します
0730デフォルトの名無しさん
NGNGでもローカル変数のMutexをGC.KeepAliveしてもやっぱりSocketがListenすると解放される……。
0731デフォルトの名無しさん
NGNGWindowsアプリでローカルにあるHtmlファイルを表示することって出来るのでしょうか?
0732デフォルトの名無しさん
NGNG0733デフォルトの名無しさん
NGNG0734731
NGNGキーワードを元に検索して参考になりそうなHPを見つけました。
これから頑張って作ってみます。
0735デフォルトの名無しさん
NGNG0736デフォルトの名無しさん
NGNG0737デフォルトの名無しさん
NGNGoffice2005の入ってる人は.netも入っていて
C#アプリも配布できるのだと。
0738デフォルトの名無しさん
NGNG…って、C#とは限らないか。
0739デフォルトの名無しさん
NGNGsingleton を変形し、同じキーで作成しようとしたら、以前作成したオブジェクトを返す
ただし、そのオブジェクトは GC に回収されるようにしたい
WeakReference を Hashtable 内に押し込むのが正解?
WeakReferenceTable オブジェクトとかって無いの?
0740デフォルトの名無しさん
NGNGぐぐったのですが、ほとんど見あたりません・・・
0741デフォルトの名無しさん
NGNG慣れればそう複雑でも無い事が分かるから(奥は深そうだけど)、取りあえず自分で実際に試す事だね。
ttp://d.hatena.ne.jp/N0MURA/20040108
VB.NETだけど、こことか。
0742デフォルトの名無しさん
NGNGありがとうございます、試してきます〜
0743デフォルトの名無しさん
NGNG本は丸ごと一冊リモーティングの本があったよね
お試しとかでなく実用として遣うなら買うことお勧め。時間の短縮分で元が取れると思う。
0744デフォルトの名無しさん
NGNG以下のようなメソッドがあると仮定します。
メソッド {
if (略) {
bool a
result1 = true;
}
if (略) {
bool result2;
result2 = true;
}
if (result1 == true || result2 == true) {
(終了);
}
}
result1 とresult2 がtrueになったときに
一番下の(終了)という部分を実行したいのですが、
ビルドをすると「未割り当てのローカル変数が参照されました。」と
表示されエラーになってしまいますが、何が原因なのでしょうか。
よろしくおねがいします。
0745デフォルトの名無しさん
NGNG0746デフォルトの名無しさん
NGNGC++とかのは見かけるんだけど
0747デフォルトの名無しさん
NGNGドットネットのすてっぷカウント♪
ttp://www.vector.co.jp/soft/win95/prog/se327186.html
とかどうだろう。
0748yuuteen
NGNG初めて書き込ませて頂きます。
C#のSystem.Diagnostics.Process.GetProcessesプロシージャが
Windows2000では失敗すると、下記のサイトにあるのですが、
http://support.microsoft.com/kb/823642/ja#kb3
何故、なのでしょうか?
それと、どうやったら、失敗しないのでしょうか?
誰か、助けて!!
0749デフォルトの名無しさん
NGNGパフォーマンスカウンタに関する問題が原因だったような。
書いてあるように HotFix を入手するか、違う方法を考えればよし。
特に、二重起動防止をやりたいのなら、これじゃなくて、Mutex を
使うほうがいいよ。
0751yuuteen
NGNGありがとうございます。
確かにおっしゃる通りで、HotFixを入手する手も考えたのですが
そもそも、根本的に二重起動チェックの方法が悪いのではというところで 悩んでいました。
ちなみに、バッチの二重起動チェックなのですが...。
下記がMutexを使用した場合のソースなのですが こんな感じなのでしょうか?
また、"MyName"は他の文字列と置換え可能だと、サンプルを見る限り
書いてあったのですが、バッチの二重起動チェックの場合、何をここに
記述しなくてはいけないのですか?
二重起動チェック処理は共通関数化して行う予定です。 ご教授下さい。
///////////////////////////////////////////////////////////////////////////
bool exit = false;
System.Threading.Mutex m = new System.Threading.Mutex(false, "MyName");
if (m.WaitOne(0, false) == false)
{
//すでに起動していると判断する
m.close();
exit = true;
}
else
{
exit = flse;
}
//アプリケーションが終わるまでmへの参照を維持するようにする
GC.KeepAlive(m);
}
///////////////////////////////////////////////////////////////////////////
0752デフォルトの名無しさん
NGNG>GC.KeepAlive(m);
GC.KeepAliveはそういう仕様ではありません。
こんなクラスを使えば良いでしょう。
class Hoge {
System.Threading.Mutex _m;
boole _is_ok;
public Hoge(string id)
{
_m = new System.Threading.Mutex(false, id);
_is_ok = _m.WaitOne(0, false);
}
public ~Hoge()
{
_m.Close();
}
public bool IsOK { get { return _is_ok; } }
}
使い方
class YourApp {
Hoge _hoge = new Hoge("YourAppName"); // メンバ変数等、アプリが終了するまで残る変数に入れること。
public void Main()
{
if ( !_hoge.IsOK ) return;
...
}
}
0753デフォルトの名無しさん
NGNGよく動いてる仕組みもわからず使う気になりますね
全部を詳細に把握しろとは言いませんが。
0754デフォルトの名無しさん
NGNGjavac 〜.javaみたく扱いたいんで。
■ このスレッドは過去ログ倉庫に格納されています