前スレの終盤が最も有意義でしたな。
C言語でお勧めのコンパイラーを教えてください。
C言語の質問スレッドで聞いてください
9 :
デフォルトの名無しさん :03/05/03 02:52
>9 専用スレまで立ってるのに何を今更。
>>1 あ、関連リンクというのに載ってるのね
しらんかったスマソ…
>>10 専用スレに気づかなかった…。
逝ってきます。
16 :
デフォルトの名無しさん :03/05/05 09:11
XPの制限ユーザでデバッグ使えるようになる方法ってありますか?
sagee
>>16 Debugger Usersのグループに入ってないとダメ
20 :
デフォルトの名無しさん :03/05/05 09:21
>>19 どうやって入ればいいんでしょうか?教えてくんでスマソ
>>20 管理ツール-コンピュータの管理-ローカル ユーザーとグループ
Home Editionだったらnet userコマンド
>>21 サンクス
ネットで調べたけど、ようわからん。。。
Homeです。
>>24 「個人向け」→Personal (訳しすぎ)
26 :
デフォルトの名無しさん :03/05/06 18:59
30 :
デフォルトの名無しさん :03/05/08 22:12
これ上下セットで欲しい人いる? ,,,..-‐‐‐-..,,, /::::::::::::::::::::::::ヽ _,..-‐‐-..,,, l::;;-‐‐-:;;::::::::::::ヽ//-‐,,__ /:::::::::::::::::::::ヽ l:l ヽ:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ヽ ヽ /,ヘ~-ー'´⌒⌒``ヽ:::::::::;-'^~~^'‐;;:l ~ヽ/ 彡:三::三:三:三::三:ミ:U::ヽミ .ll / _,,;;ィ t;;;;,,, :::U:::ヽ ,.ノ / シ ,ィェァ') (.yェュ、 ミ:::::::l'^~ . ‐/-,, ''''''. | | '''''' |:::::::l l ~^''ヽ (r、 ,n) / .|::::::l '''l^^~~~ .、___二___., -‐‐‐--l- ヽ、 ,,,, | |||!|||i||!| | ~^'‐..,,_/ / (:::::} | | |ll ll !!.| | ,,,, イ~''' l: ~~ | |!! ||ll| || | {:::::) ::l . l: | |! | l ~~ l l、 ヽ`ニニ'ノ ,l> /^‐-,,____,,,、ゝ '""'ノ....,,,,,,,__,,,.--ヽ ~‐‐'~ ^'‐‐~
1.1 SDKはカンフェレンス中にリリース?
34 :
デフォルトの名無しさん :03/05/10 22:00
ここでC#に勤しんでる人に質問です。 C#は仕事で必要なのでしょうか? それとも趣味ですか? C#を取り入れてるところってあるんですかね・・・。
37 :
デフォルトの名無しさん :03/05/11 01:03
public class MainClass { static void Main(string[] args) { float f = float.NaN; if(f == float.NaN) { Console.WriteLine("nan"); } else { Console.WriteLine(f); } } } 実行結果 NaN (非数値) なんでnanって表示されないですか
>>37 if(f.Equals(float.NaN)) で試してみれ
できました、で終わらせるネタじゃないような・・・
NaNは特別ということで。
____ /∵∴∵∴\ /∵∴∵∴∵∴\ /∵∴// \| |∵/ (・) (・) | (6 つ | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ | ___ | < メモリ使用量が多すぎます。何とかして下さい \ \_/ / \_________ \_____/
51 :
デフォルトの名無しさん :03/05/16 22:01
おーい。今週もSDK出なかったぞー。
C# で、Javaの JNI並にお手軽にネイティブコードと 連携することは可能でしょうか?
JNIってお手軽か? C#にはJ/Direct譲りのPInvokeがある
>>52 ネイティブ → .NETで利用は楽。
.NET → ネイティブで利用はあまり手軽でない。
JNIがお手軽だとしたら、.NETだとチョーお気楽極楽。
再頒布用ランタイムだけでnmake使えるようにできないかな・・・(´・ω・`)
58 :
デフォルトの名無しさん :03/05/17 20:26
>>58 ……………デジャヴ?
どこかで見たような気が……
>>60 いや、サンプルの中にDLLが入ってる。
...って使っていいんだよね?
>>50 相変わらずBulk LoadはCOM経由ですか・・・。
>46 嘘付け、ユーザ全員にメモリ配布してたら幾らかかる事やら… あんまし使われてないからそんなにかからない という突っ込みは無しの方向で
65 :
デフォルトの名無しさん :03/05/20 21:18
今日、VC#.NETを買って、 さっそくインストールしようと思ったんですが、 Disc1入れてインストーラ起動 ↓ コンポーネントアップデートCDに入れ替え の段階で「インストールコンポーネントを読み込んでいます。この処理は1~2分かかる場合があります」 というウィンドウが出たまま先に進みません 3時間放置して見ましたが進みませんでした。 OSはWinXPHomeです どなたか解決法ご教授願います
Homeにはインストールできません。 終了
>>66 んなこたーない。ASP.NETが使えないけどインストールはできる。
68 :
デフォルトの名無しさん :03/05/20 21:27
C#.NETでMSDEを利用したプログラムを作りたいんですが、 調べたところ、サーバーエクスプローラーから接続し、 情報が見ることができるようなんですが、 「サーバー」という項目がありません。 「データ接続」はあるんですけど、 もしやvisual studioと比べて、 このあたりの機能に制限があるんでしょうか?
>>65 うちもインストールしたとき同じ症状になったんだけど、
アンチウイルス切ったらインストールできた。
もし参考になれば
>69 相手はマルチだ。
71 :
デフォルトの名無しさん :03/05/20 21:32
>>69 ありがとう
徹底的に他のプログラム切ってからチャレンジしてみまつ
C#でビューアーを作っていて、 ビューアーにスキャナで読み込む機能をつけようと思ったのですが、 そのやり方が分かりません。 C#でスキャナを使うにはどのようにすればいいのでしょうか。
native & interop.
74 :
デフォルトの名無しさん :03/05/20 22:24
Excel VBAから、C#のメソッドに自作クラスの 配列の渡し方を知ってたら教えて欲しい・・ Microsoftのドキュメントは一通り読んだけど、 例が少ないからよくわからんのよ・・
75 :
デフォルトの名無しさん :03/05/20 22:25
C#と.NET Frameworkのライブラリは、双方で独立した仕様と考えていいのでしょうか? つまり、どちらかがなければその技術が成り立たない関係ではない、ということで問題ないですか?
>>75 C#がなくても.NET Frameworkは成り立つ。CILを出力する言語が他にいくらでもあるから。
.NET FrameworkがなくてもC#は成り立つ。C#が依存してるのはミニマルなCLIの方。
やや詭弁。
79 :
デフォルトの名無しさん :03/05/20 22:52
てことは、C#と.NET Frameworkは、C++とMFCの関係みたいなもの?
>>75 C#の仕様にライブラリがどこまで依存して入り込んでるのか知りたくて。
80 :
デフォルトの名無しさん :03/05/20 23:02
>>78 戻り値で自作クラスってのはできたけど一方通行なんでしょうか。
もし、この辺りのことに詳しいページ・本なぞあったら
紹介してもらえないでしょうか。
81 :
デフォルトの名無しさん :03/05/20 23:06
>>78 そうそう、そういえばタイプライブラリにexportした型というのは
「COMで扱える型」に含まれないのでしょうか。
C++とMFCって関係は微妙じゃない? 参照設定全く無し、でAPI呼べたっけ?
>>74 むー。VBScriptから配列を渡して.NET側でobject[]で受けると、
なぜかstringの配列で渡ってきますね。
VBScriptでオブジェクト単体を渡してやれば、
ちゃんと.NET側はカスタム型で渡ってくるのですが・・・。
84 :
デフォルトの名無しさん :03/05/21 01:53
>>83 VBAでやると、コンパイルエラーになって
配列が渡せないのです・・
他に似た例で困ってるのがArrayListの中に自作クラスをAddして
C#側でGetEnumeratorすると、stringクラスになってたり・・
できないならできない、と書いてある文書でもあればまだ
救われるのですが・・おかしな動きにしか見えなくて・・(泣
>>85 お手数おかけします。
今環境がないので、明日再度試験してみます。
あと、IEnumVARIANTってVBAで
どうやったらつかえるんだろうという疑問もあります。
C#側で IEnumerator を戻り値としたとき、
メソッド || プロパティ(get) の前に
[return: MarshalAsAttribute(UnmanagedType.Interface)]を
書くと、オブジェクトブラウザで見たときには同じ
IEnumVARIANTであるにも関わらずVBAで扱えるように
なります(MoveNextとか呼べる)
長くなりました。すみません。
普段Windowsプログラム書かないもので知識不足な面が
ありますが、どなたかご存じでしたらご教授下さい。
>>86 MoveNextはIEnumeratorのメンバーでもありますぞ。
>>86 For Each ~ Next でイテレートする
情報ありがとうございます。
>>87 はい。IEnumerator.MoveNext() は存じております。
「でも」と言われますと、他にもこのメソッドを持つクラスが
ありますか?
>>88 Dim hoge
For hoge In IEnumVARIANTObject
Next
というようなことになるという意味でしょうか?
IEnumVARIANTは Next などのプロパティ(メソッド?)を
持っているようですが、どのように使うのか分かっていません。
調べてみます。
>>85 http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1003826049&res=64&fi=no arr(0) = obj1 → Set arr(0) = obj1
arr(1) = obj2 → Set arr(1) = obj2
とすることにより、配列でもいけそうです(VBAで動きました)。
但し、自分のところのプログラムはまだ動いてないんですが(^^;;
あと、ArrayListで躓いていた原因として、このプログラムで言うと
Dim obj1 のところが Dim obj1 As TestObject
(タイプライブラリを読み込んでいるのでコンパイルも通ります)
としていたことのようです。
このプログラムでも現にそうしてみると、C#側でArrayListに
stringが入っている状態(
>>84 で書いていることです)に
なりました。
どうも普段Javaとかが主なものでVariantって抵抗あるんですよね。^^;
重ね重ねお礼申し上げます。
90 :
デフォルトの名無しさん :03/05/23 07:16
>>89 こういう感じで。
Dim hoge
For Each hoge In IEnumVARIANTObject
hoge.~
Next
>>89 ほんとだ。配列の各要素をSetで指定してやれば行けるね。
VBSはよくわかってないので・・・。(藁
で、今週もSDKが出なかったわけだが
95 :
デフォルトの名無しさん :03/05/24 11:06
96 :
デフォルトの名無しさん :03/05/24 13:37
プロパティの配列版を作りたいのですが、どうやったらいいんでしょう? tmpClass.ppt;とアクセスするのと同様に、 tmpClass.ppt[i];といったコードを書きたいのですが。
>>96 普通にプロパティを配列型にすればいいのでは?
>>97 あ、確かに。条件が間違ってました。
配列のインデックスも受け取って要素別にアクセスしたかったんです。
プロパティとインデクサを足したような。
で、結局インデクサを持つクラスを別に用意して、
そのプロパティを持つことで実装してみようかなと思ってます。
>>93 もしかして、日本語版SDKってのは出ないのかな?
英語版SDK+Language Packっていうつもりなのかなー?
>>99 Visual Studio.NET2003の発売にあわせて出すんじゃないの?
MSDNユーザーはダウンロード出来るんだし。
VB.NETがあればC#はイラネ
>>96 C#はインデックス付きプロパティをサポートしない。
MC++だけ。
105 :
デフォルトの名無しさん :03/05/25 17:31
CodeSmith使ってる人います? いい感じなので、ちょっと仕事でも使ってみようかと思ったのですけど。
>>105 仕事では使ったことないけど、導入してみる価値はあると思うよ。
ただ問題はプロパティ値のセットが手入力なところなんだよねえ。
ファイル名をプロパティにでもして、読む込む部分は自分で書かなきゃならないね。
>>106 なるほど、どうもです。
スクリプト埋め込みとかCodeBehindが使えるので、そこはいくらでも融通が利きそうです。
Excelとの連携なんかも試してみたいですね。
>>103 ??C#でもVB.NETでも作れるけど??
109 :
デフォルトの名無しさん :03/05/27 00:52
C#に限った話ではないが、プロジェクトにクラスを追加した後で、 別のコンポーネントクラスのソースを追加したクラスにまるごと 貼り付け、コンパイルした時点でアイコンがコンポーネントクラス のそれに変化します。 これはソースのどの部分を読み込んで判断しているのでしょうか?
>>109 参照してるアセンブリのタイムスタンプでないの?
111 :
デフォルトの名無しさん :03/05/27 01:12
>>110 いや、dllアセンブリを参照するのではなく、そのdllのコンパイル前の
ソースをまるごと他の空のクラスにコピペした場合のことです。
112 :
動画直リン :03/05/27 01:13
結局やりたいことは、コンポーネントクラスを普通のクラスに 変換する方法が知りたいのです。
>>109 あー、やっと言いたいこと分かった。クラスの継承元じゃないの。
Control、UserControl、Form等でアイコンが変わると。
115 :
デフォルトの名無しさん :03/05/27 01:34
C#で邪魔なdllファイルを生成させないようにするにはどうすればいいでしょうか
>>117 はぁ、そうですか。
ms-help://MS.NETFrameworkSDKv1.1.JA/vblsnet/html/vblrfVBSpec7_6.htm
Formal Parameter Listって意味わかるよね?
C#ではネストクラスとインデクサを使えば作れるね。
出直してきてね。
>>117
>>118 さりげなく日本語版1.1のヘルプを自慢
∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉
122 :
デフォルトの名無しさん :03/05/28 21:39
沈みすぎage
123 :
デフォルトの名無しさん :03/05/29 05:55
TextBoxコントロールで、フォーカスが移ったときに文字列が選択されるようにしたい。 今までVB6では、GotFocusイベントで選択すればよかったが C#ではEnterイベントでもGotFocusイベントでも 一瞬選択されたあとに選択位置がマウスのクリックされた位置 (大体は最後)に移動する、どうやらGotFocusイベントの後に選択イベントがある様子 これを回避するのってTextBoxを利用する限り無理ですか?
Enterイベント⇒GotFocusイベント⇒MouseDownイベント・・・ と続いていくみたいですね 前者2つのイベントでSelectionStartとSelectionLengthを設定しても MouseDownイベントでクリックした場所がSelectionStartになっているみたい。 うーん。
Delphiなら簡単なのにね。
Del厨キタ━━(゚∀゚)━━!!!
127 :
デフォルトの名無しさん :03/05/31 13:36
結局今月はSDKが出なかったわけだが
130 :
デフォルトの名無しさん :03/06/01 10:09
.net framework sdkが「1.0」から「1.0a」に変わってるんですけど。 サイズも160MBから131MBに小さくなってるんですが、もしかしてドキュメントとか削られたりしてます?
>>130 圧縮率の高い圧縮方式に切り替えただけ。
三省堂のWebサービス辞書とかのWSDL読み込んで遊んだりしてるんですけれど、 .NETって実際にどんなXML SOAPが流れてるのか、さっぱり分かりません・・・ XMLとかを見れるローカルプロキシがあれば良いと思うんですけれど、 どんなソフトがメジャーなんでしょうか?
>>135 キタ━━━━(゚∀゚)━━━━ッ!!
まさに,諦めてApacheSOAPやJavaを入れようと思っていた所でした.
どうも有り難うございました.
>>137 スキーマからアクセスするクラスを自動生成・・・程度じゃないよねぇ・・・
>>139 そんな感じのツールですね。
インストール時にツールで使うデータベースを新規に作るので、
捨てマシンで試した方がいいかも。
なんか微妙なツールだな・・・。生成されるソースも複雑で。 これならCodeSmithで作り込む方がいいかも。
142 :
デフォルトの名無しさん :03/06/05 19:20
サイコロの作り方教えて下さい
>>142 プラスチックか何かを立方体に切って・・・
145 :
デフォルトの名無しさん :03/06/06 10:04
.NETわけわからん。くそー
プ
DataGridをWindowに表示する際に以下のような例外が発生してしまいDataGrid が表示されるはずのところに赤い×が表示されます。なにが悪いんでしょうか? さっぱりわかりません。 ************** Exception Text ************** System.NullReferenceException: Object reference not set to an instance of an object. at System.Data.DataRowView.System.ComponentModel.IDataErrorInfo.get_Item(String colName) at System.Windows.Forms.DataGridRelationshipRow.PaintCellContents(Graphics g, Rectangle cellBounds, DataGridColumnStyle column, Brush backBr, Brush foreBrush, Boolean alignToRight) at System.Windows.Forms.DataGridRow.PaintData(Graphics g, Rectangle bounds, Int32 firstVisibleColumn, Int32 columnCount, Boolean alignToRight) at System.Windows.Forms.DataGridRelationshipRow.Paint(Graphics g, Rectangle bounds, Rectangle trueRowBounds, Int32 firstVisibleColumn, Int32 numVisibleColumns, Boolean alignToRight) at System.Windows.Forms.DataGrid.PaintRows(Graphics g, Rectangle& boundingRect) at System.Windows.Forms.DataGrid.PaintGrid(Graphics g, Rectangle gridBounds) at System.Windows.Forms.DataGrid.OnPaint(PaintEventArgs pe) at System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer, Boolean disposeEventArgs) at System.Windows.Forms.Control.WmPaint(Message& m) at System.Windows.Forms.Control.WndProc(Message& m) at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m) at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/
(_フ彡 /←
>>149
152 :
デフォルトの名無しさん :03/06/07 16:30
richTextBox1のカーソルの位置を取得して ListBox1を取得した位置に表示するにはどうしたらいいのかな? ほんと低級ですみませんが教えてください .
153 :
デフォルトの名無しさん :03/06/07 16:30
richTextBox1のカーソルの位置を取得して ListBox1を取得した位置に表示するにはどうしたらいいのかな? ほんと低級ですみませんが教えてください
override と virtual の 2 つの修飾子を、同時に 1 つのメソッドに使えますか? 上位クラスのメソッドをオーバライドし、下位のクラスも存在する可能性を 持たせるには、この 2 つの修飾子が必要になるような気がするのです。
途中からvirtualにするのは激しく変だとオモウ
いや普通のoverrideが希望の動作だと思うよ。
.NET Framework 1.1 SDK日本語版まだぁ?
ただのHello Worldをプロファイルしても非常に興味深い。
セキュリティ関連のコストでほとんどだ。
>>152 ヘルプでメソッド一覧を眺めてみ。希望のもんあるから。
164 :
デフォルトの名無しさん :03/06/08 00:54
すいません初心者です教えていただけませんか? Save();で二度目にセーブするとエラーがでるのですが 使用中と言うことででてしまうのでしょうか? 何かcloseとかで閉じなければいけないのでしょうか? よろしくお願いいたします
上位クラスのメソッドをオーバライドするには、override 修飾子が必要で、 下位クラスにメソッドのオーバライドを許すには、virtuel 修飾子が必要ってことは、 上位クラスのメソッドをオーバライドして、かつ、下位クラスにもメソッドのオーバライドを ゆするには、virtual と override の両方を、1つのメソッドの修飾子として書かなきゃならない、 と言うことで合ってますか? こういう情報は、どこに書いてあるのだろう・・・。 Java の JLS くらい厳密に書いてある言語仕様って、C#には存在しないのかなぁ・・・。
ううむ。override と、virtual は、どっちかしかかけないって書いてあった・・・。 どなたか override しつつ、override されるメソッドの書き方教えてください。
>>154 class Class1 {
virtual void A() {}
}
class Class2 : Class1 {
override void A() {}
}
class Class3 : Class2 {
override void A() {}
}
でいいんじゃないの?
>>168 ちゅうことは、Class2 で宣言されているメソッド A() は、
virtual という修飾子が存在していないにもかかわらず、
仮想メソッドである、ちゅうことかね?
あるいは、Class3 で宣言されているメソッド A() が
オーバライドしているメソッドは、非仮想メソッドである、
(override 修飾子が付けられたメソッドは、非仮想メソッドをもオーバライドすることができる)、
ちゅうことかいな?
あるいはあるいは、
Class3 で宣言されているメソッド A() がオーバライドしているのは、
Class1 で宣言されているメソッド A() である。ってことか。
3つ目のは半分冗談だけど、いったいどれやねん。w
>>169 単純に考えて。
overrideは元のクラスでvirtualのメソッドがあるということ。
元のクラスにvirtualのメソッドが無ければエラーになる。
そうですよね、 > overrideは元のクラスでvirtualのメソッドがあるということ。 virtual は、そのメソッドを仮想メソッドにする修飾子で、 virtual が含まれていないメソッドは、非仮想メソッドですから。 かつ、 override と、 virtual は同時に使えない。 んで、C# では非仮想メソッドのオーバーライドはできない。 ってことは、C#では、あるメソッドのオーバライドの回数は、たった1回に限られる、 言い換えれば、オーバライドされたメソッドはオーバライドできない、 ってことになりませんか?(笑)
Type type = typeof(Class2); MethodInfo method = type.GetMethod("Test"); Console.WriteLine("IsVirtual = " + method.IsVirtual); ちゃんとClass2.Test()もvirtualと出る
>>172 ありがとう。
ってことは、
インスタンス メソッドの宣言に virtual 修飾子が含まれる場合、
そのメソッドは仮想メソッドと言います。virtual 修飾子が存在しない場合、
そのメソッドは非仮想メソッドと言います。
っていう仕様の記述が間違っているか、
>>172 さんの処理系がバグっている、ということですね。
>>173 処理系がどうのって、、、C#.NETでコンパイルしたんだよ。
というか、MSに聞いた方が早いんじゃない?
>>173 何が問題なのかよくわからないんだけれど・・・。
どこかにoverrideできるのは直系の派生クラスに限るなんて記述でもあるわけ?
168のソースで言えばClass3のA()はClass1のA()をoverrideしてるわけだから
仕様通りでしょ?
ヘルプのoverrideん所にちゃんと書いてるよ。 >非仮想メソッドまたは静的メソッドのオーバーライドはできません。 >オーバーライドされる基本メソッドは、仮想メソッド、抽象メソッド、またはオーバーライド メソッドのいずれかである必要があります。
自分はoverrideしたいが派生クラスからはoverrideされたくないってことじゃねぇの? class Class1 { virtual void A() {} } class Class2 : Class1 { override void A() {} // この中に非常に重要で絶対にoverrideしてはいけないコードが書かれている } class Class3 : Class2 { override void A() {} // しかしC#の仕様ではこれを禁止することが出来ない? }
>>177 Class2で sealed override するよろし。
どうでもいいけど、C#はpublicとかinternalとかつけないとデフォルトprivateだよ。
180 :
デフォルトの名無しさん :03/06/10 15:42
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncfhowto/html/HOWTOsenderevent.asp の
private void button1_Click(object sender, System.EventArgs e)
{
string s = "unknown button";
if( sender == button1 )
{
s = "button1";
}
else if( sender == button2 )
{
s = "button2";
}
MessageBox.Show( "You pressed: " + s );
}
を switch におきかえたいのですが、
switch (sender)
{
case button1:
s = "button1";
break;
case button2:
s = "button2":
break;
}
switch (sender) の部分で "整数型の値が必要です。" とエラーになってしまいます。
どうして置きかえられないのかわかりません。アドバイス願えませんか?
>>180 case の式はコンパイル時に決まってなければいけないから
定数か文字列リテラルしか使用出来ない
結果switchの式も数値か文字列しか指定出来ない
shell32.dllを呼び出す方法以外ファイルをゴミ箱に移動させられる メソッドはどこかにありますか?
>>180 変えたいのは s の内容だけ?
なら、キーが Button で値が string の Hashtable でも作れば?
Hashtable table = new Hashtable();
table[button1] = "button1";
table[button2] = "button2";
string s = (string)table[sender];
>>182 そういう Win32 プラットフォーム限定な機能はないと思う。
素直に shell32.dll 呼び出すべし。
構造体のメンバに構造体を入れ、それを ArrayList につっこみたい。 その後、その構造体のメンバの構造体のフィールドに値を設定したいのですが どうもうまくいきません。こんな感じにしたいのですが… どなたか教えてください。 private struct itemA { public int a; public itemB itemb; } private struct itemB { public int abc; public int bcd; } ArrayList arrList = new ArrayList(); arrList.add(itemA); ((itemA)arrList[0]).itemb.abc = 5;
VBAからSystem.Xml.*を使用する方法について どなたかご存じないでしょか・・
189 :
デフォルトの名無しさん :03/06/13 13:50
C# で端数処理 (四捨五入, 切上げ, 切捨て) を行ないたいのですが それらを行なう便利な関数は用意されていますか? それとも、自作? 御存知の方、よろしくおねがいします。
>>188 .NETクラス名でCreateObjectできるよ。
>>189 System.Mathはどうよ?
>190 Set Xml = CreateObject("System.Xml.XmlDocument") 出来ないよ?
>>191 ごめん。regasmされてないから駄目だった。
>>192 この「ごめん」は
・regasmされていない → regasmすればできる
の意味なのか
・regasmされていない = できない
の意味なのか分からないですが、
言葉が足りなかったようで、
.NetのメソッドとSystem.Xml.*クラスを戻り値・引数として
やりとりできるか聞きたかったんですが、、だめっぽいですね。
俺は知らないけど >・regasmされていない → regasmすればできる >の意味なのか 試せば結果でるじゃん。
>>195 C#メソッドから受けるのはregasmしてもできてなく、
CreateObjectは今試せないので・・
ということで。
System.XmlってMSXMLとほとんど同じじゃねぇの? VBAならこっちで十分じゃね?
>>194 regasmがそもそも出来ないね。
つーことで、素直にMSXML使うのが吉。
MSXMLはDOM L1だぜ?いまさらそれでいいの?
>>199 あれ?前に4.0とか出てなかったっけ?
あれもLEVEL1なの?
正確には tlbimp System.Xml.dll /out:hoghoge.dll regasm hogehoge.dll ということになるんだけど・・ 既存のC#DLLがXmlNodeListとかを返すから なんとか互換性がないかと思って実験中・・ MSXMLを使おうとすると、C#側を全部書き換えないと いけないんだよなぁ・・鬱
202 :
デフォルトの名無しさん :03/06/15 15:44
>>202 おー、早速ダウソ。
って日本語版SDKより早かったか。(w
2ちゃんブラウザ・RSS Reader・Profilerと、 どんどん常用してるManagedアプリが増えてますな。ヽ(´ー`)ノ
>>202 ・例のencodingエラーが出なくなった
・HTMLエディタのWYSWYG強化(VS.NETより強力?)
・オブジェクトブラウザが強化
・DBにAccessが使える
・それでいて軽さはそのまま
しかし、日本語入力でカーソル位置がずれるのは相変わらず。残念。
>>206 #Developの初期にもそんなバグがあったような
208 :
デフォルトの名無しさん :03/06/15 21:45
バージョン情報を勝手に取ってきて表示するフォームってないですか?
>>199 いや、一応LEVEL2(の、機能)にも対応してるよ。
なんかインターフェースとかむちゃくちゃだけど。
きっと下位互換性保つ為に名前変えれないんだよ今更。
まあ、今更MSXMLを発展させられるよりframeworkのXMLクラス
発展させてって欲しいのでMSXMLはもう止まってていいけど。
>>209 しかしOffice2003でバージョンアップしたりするんだな。MSXML。
>>210 がーん。ていうことはあのさんざ宣伝してるXML関連の機能は全部MSXML
利用で実現してるのか。
まあ、いきなりOfficeをframeworkで書きなおしてくれなんて無茶な話
か。
せめて2003の次はframeworkで作って欲しい。え?重いから駄目?
DB(SQL2000)上のテーブル内のデータ型がnchar(10)とかで、データが"hoge" って入ってるとして、DataAdapter使ってDataSetにFillするとデータが "hoge______"("_"はスペースの意味)と固定長分スペースで埋めてデータを取得します。 このスペースとりたいんだけどDataAdapterのSelectCommandのクエリ内で RTRIMとかしてやるしか方法はないのでしょうか? 結構たくさん固定長のデータがあるのでうまい方法はないかと...
>212 昔から固定長フィールドはそういうものだよ。 String#Trim()とかは?
>213 なるほど。DataSetに入れてからTrimするってことですよね?
DataReaderかと思った。 DataSet使うこと考えると、SQLでTrimしておいた方が、楽そうだね。
213さんどうもでした。 SQLのクエリで解決してみます。
217 :
デフォルトの名無しさん :03/06/17 00:45
くだスレに挙がってたんだけど、.NETのツールバーってトグルボタンの グループ化できないのね。 レスつけてやろうと思ったけど出来ねーYO!>オレ
218 :
デフォルトの名無しさん :03/06/17 17:28
// ArrayList 定義 private ArrayList m_aryTest = new ArrayList(); // 構造体定義 private struct typeTest { public intvalA; public intvalB; } m_aryTest.Add(_typeTest); とした後で、 ((typeTest)m_aryTest[0]).valB = 123; みたいな事ってできないですか? 代入色の左辺には変数、プロパティ、またはインデクサを指定してください。 とエラーになります。 構造体をアレイリストにつっこんだ後に値を変更するにはどうすればよいのでしょう?
>>219 ボクシング/アンボクシングについて調べてみましたが、
それらを行なう必要があるのは 右辺 ですよね?
object o = (int)valA や int valA = (int)o のように
するのが、ボクシング/アンボクシングで、
値型の変数をボクシングして、参照型オブジェクトして使いたい場合や
その逆って事ですよね?
((typeTest)m_aryTest[0]).valB = (int)123;
試しにのようにやってみましたが、やはりコンパイルエラーが
でてしまいます。
もう少し、アドバイス頂けたらうれしいです。
((typeTest)m_aryTest[0]) これがアンボクシングに見えないということですか?
>>221 参照型の ArrayList を 構造体(値型)への
アンボクシングになるんですね。
実のところ、参照型とか値型とか曖昧なまま、組んでました。
とはいえ、まだ解決できるところまで理解が進んでいませんが(^_^;;
精進します。。。
だからクラスにしろって。
クラスにして、そのクラスを ArrayList に add するのですか? 勉強不足で申しわけない、情けないのですが、 ここで 構造体をクラスにすると、何がどう変わってどういうメリット が出るのかわかりません。 どこか参考にできるような情報、サイトがあれば教えて頂け ないでしょうか?
((typeTest)m_aryTest[0]).valB = 123; ができるようになります
226 :
デフォルトの名無しさん :03/06/18 18:45
それが 値型の構造体と参照型のクラスの違いでもあるわけですか。
227 :
デフォルトの名無しさん :03/06/18 18:47
値型と参照型、どこにメモリがとられるか調べれば答えでると思うけど・・・。
自分で作ったC#のプログラムが遅いので、どこが遅いのかプロファイラで調べたいのですが、 プロファイラの使い方とかを詳しく書いてある「日本語」のページってないですかぁ?
>>230 ありがとです。
>>158 ってC++入れないとコンパイルできないのでちょっと二の足を踏んでました(^^ゞ
232 :
デフォルトの名無しさん :03/06/25 11:41
233 :
デフォルトの名無しさん :03/06/26 04:45
C#やりはじめ listviewでクリックした行、列、データの取り出し方法を教えてください。
>>233 ListViewは列単位でしか選択できないのでは?
とりあえずSelectedIndexChangedイベントとSelectedItemsプロパティでも見れ。
間違えた。 × 列単位 ○ 行単位
237 :
デフォルトの名無しさん :03/06/27 02:03
>234 ありがとうございます。 idx = this.listView1.SelectedItems[0].Index; dtext = this.listView1.Items[idx].SubItems[5].Text;
238 :
デフォルトの名無しさん :03/06/27 02:27
>237 いやあ、バカをしてしまいました。 dtext = this.listView1.SelectedItems[0].SubItems[5].Text;
239 :
デフォルトの名無しさん :03/06/27 03:27
appl.exe.config について ファイル名は固定ですか? たとえば、2つ用意して切り替えるとかできませんか?
>>232 え?とっくに公開していたんじゃなかった?
>>241 そうなの?
redistはかなり前から出てたけど、SDKは見てなかったよ。
これ、VS2003 に含まれている SDK と違うぞ。
248 :
デフォルトの名無しさん :03/07/01 00:23
c#でみかける{0}とか{1}見たいなものは何なんですか?
249 :
デフォルトの名無しさん :03/07/01 00:24
250 :
デフォルトの名無しさん :03/07/01 00:38
ちゃんとこたえてよ
251 :
デフォルトの名無しさん :03/07/01 01:34
OleDbCommandオブジェクトを使用してデータベースを検索する際、 あらかじめCommandTextプロパティにSQL文をセットすると思うのですが、 検索条件をフォームに入力し、指定された条件で検索したいと思っていますが、 やり方がわからなくて困っています。 というのは本来コマンドテキストには SELECT * FROM TABLE_NAME WHERE IDNO=? AND TITLE=? のように予めパラメータとなりえる「?」などを埋め込んでおくようなことを 本で読んだのですが、 これだと、検索条件の個数が毎回変る場合などに対応できなくなります。 if文などでテキストボックスの一つ一つに対して入力されているかを判断し、 sql文を文字列として作成後、コマンドテキストにそのままセット->検索 の流れだと従来とあまり変らないような気もします。 そこで私が知らないだけで動的に検索項目が変る場合でもうまく OleDbCommandオブジェクトとParameterオブジェクトを使用して 検索できるのではないか、と思っています。 どうでしょうか? よろしくお願いします。
254 :
デフォルトの名無しさん :03/07/01 10:11
就職活動でプログラミングはC#やってますっていったら C#って何?って言われました IT企業でも知らないほど知名度低いんですか?
256 :
デフォルトの名無しさん :03/07/01 10:38
>>255 中小企業なんだけど具体的に名前上げるのはどうかとおもうので
DB系の会社でした
257 :
デフォルトの名無しさん :03/07/01 12:37
>>253 コーヒーが2000円でも文句を言わない日本人。(W
(そんなところいくかと思うが)
まあ天皇制にすら文句を言わない日本人だからな。
C#でGenericsはもうつかえるようななったの? 最近発売された開発環境でつかえるの?
260 :
デフォルトの名無しさん :03/07/01 16:16
>>260 そこのページを見ると、UmlDiagramsというのも構築中らしい。期待大。
フォームを閉じた際にexe.configに値を保存するようにしたいんですけど、 いくら調べてもやり方がよく分かりません。 誰か教えて頂けないでしょうか?
265 :
デフォルトの名無しさん :03/07/01 23:40
>>264 ConfigurationSettings は、読み取り用なので、XMLWriter を使って書き込む
ことになるね。
266 :
デフォルトの名無しさん :03/07/02 17:32
VC++6.0とVC++.NET どっちがいいの?
267 :
デフォルトの名無しさん :03/07/02 17:46
C#でSAXできますか?ヘルプに乗ってないのですが。 アドバイスおながいします。
>>267 System.Xml.XmlTextReaderクラス。
ただしイベントドリブンではない。
XmlTextReaderに限定しないで、XmlReaderと言っておいた方がいいか。
>>268-269 ありがとです。
やっぱり、それしかないんですか。。じゃあ、SAX用のイベントハンドラは
自分で設計してXmlTextReaderを継承したクラスからイベントを送出する、
しかないかな。。
271 :
デフォルトの名無しさん :03/07/03 00:48
>>261 GDNのアドバンスト版誰も書き込まないってことは、あそこは厨房しかいないってことですか?
>>271 掲示板テストが一番書き込みが多いのが悲しい。
C言語の資格って何かないですか?就職活動に役立つような。
274 :
デフォルトの名無しさん :03/07/04 08:27
>>273 情報処理技術者試験一連だけじゃねーの
というか激しくスレ違い
275 :
デフォルトの名無しさん :03/07/04 11:28
質問です。 C#にはVBのWith文みたいなのは言語仕様としてありますか?
276 :
デフォルトの名無しさん :03/07/04 11:35
最近はじめたんだけど、ラッパークラスってないの? プリミティブ値にメソッドとかあるらしいんだが・・・。 それよりもさ、JavaのVectorみたいな可変長のリストを持てるクラスはないんでつか? メモリ操作なくなったらクラス使うしかなくて(´・ω・`)ショボーン。
>>278 Javaにも.NETにもArrayListがありますが何か?
>>278 > ラッパークラスってないの?
ないというか、必要ない。intもfloatもすべてオブジェクトだから。
VC#つかってたら自動生成されるコードのインデントが class A { こういうふうじゃん? class A { hogehoge; こういうふうに変えれない?
282 :
デフォルトの名無しさん :03/07/04 13:48
>>280 intやfloatはプリミティブじゃね?
ボクシングを自動的にやるってだけで。
>>281 環境設定でインデント設定やっても駄目?
>>280 >>282 CILのint32やfloat32はプリミティブ。
System.Int32やSystem.Singleがそれらのラッパークラス。
でもラッパー内ではボクシングは使ってないよ。
285 :
デフォルトの名無しさん :03/07/04 14:51
>>286 読んでみたけど、半分くらいしかわからなかった。
もう少し勉強しないとな。
288 :
デフォルトの名無しさん :03/07/04 20:59
>>286 今さら書くような内容でもないな。
まあ、この部分を言い切っただけでも拍手を送りたいが。
> しかし、理想主義者の高尚な成果が、スキルを持たない人々が大風呂敷を
> 広げるための道具として使われていることも悲しい事実である。ビジネス・
> アプリケーションにおいては限定的な効果しか果たせないはずのフレーム
> ワークやコンポーネントという言葉を使用してひともうけを狙う、技術者
> とは呼べないような人々のコミュニティがJavaには多い。
> 玉石混交が世の常とはいえ、一部のJavaコミュニティはひどすぎる。しかも
> なぜかそれらのコミュニティがビジネス上は強い影響力を持っていたりするのだ。
> 実に嘆かわしい話だと思う。
どうせなら、アンチMSというだけでJavaを使ってる馬鹿・オブジェクト指向以外目にもくれないメクラ馬鹿・ オープンソース盲目崇拝馬鹿・クロスプラットフォームを未だに信じてる馬鹿もきちんと指摘してほしかったな。
すいません。 byte[]型の変数Aとbyte[]型の変数Bを結合して、一つのバイト列にしたいんですけど、 そのやり方がよく分かりません。 どなたか教えてくれないでしょうか?
まぁ、理由を 10個集めるために しょーもないことも言ってるけどな。 struct? ポリモーフィズムを犠牲にしてメモリ実行効率を取ったって? ポインタ や unsigned などと同じ C での過ちをまた犯そうということか。 これからの言語は、もっとプログラマに優しくなくちゃだめだよ。 setter/getter に代わるプロパティなどは評価できるけど、 カスタム属性はどうかな? C# は利便性を追求しすぎて 構文の複雑化・ キーワードの増加を招いていると思うな。直列化可能性なんて カスタム属性で指定するより、インターフェイスとして 明示するほうが素直だと思うし。理由のいくつかは無理やりっぽいね。
>>290 コレクションを経由してみては?
byte[] b1 = { 0, 1, 2 };
byte[] b2 = { 3, 4, 5 };
ArrayList list = new ArrayList();
list.AddRange(b1);
list.AddRange(b2);
byte[] b3 = (byte[]) list.ToArray(typeof(byte));
>>291 > 直列化可能性なんて
> カスタム属性で指定するより、インターフェイスとして
> 明示するほうが素直だと思うし。
おいおい。JavaでさえJDK1.5でそのやり方否定してるのに。
>>290 あとは原始的にこんな感じで。
byte[] b1 = { 0, 1, 2 };
byte[] b2 = { 3, 4, 5 };
byte[] b3 = new byte[b1.Length + b2.Length];
Array.Copy(b1, 0, b3, 0, b1.Length);
Array.Copy(b2, 0, b3, b1.Length, b2.Length);
>>292 ,294
わざわざ有難うございます。
とりあえず両方試してみたいと思います。
ありがとうございました。
297 :
デフォルトの名無しさん :03/07/04 23:48
>>295 EJBコンソーシアムの方が当たってると思う。
一時ファイルを出力ディレクトリにコピーできないってエラーが出るんだが、どうゆこと? ヘルプにもないYO!
終了ボタンを作ったんだけど、終了するのってexitとか使うの?
>>299 フォームアプリならApplication.Exit()
>>300 おお!はげしくサンクス!
MSDNがもうちょいみやすかったらC#最高だね。
VMだって聞いたけど、なんでこんなに快適なの?
フォームアプリなら Form.Close(); じゃないかと。
>>302 いえ、アプリの終了ボタンだったんで、300さんのを使いました。
でもモーダルなフォームを追加したんでCloseも使いました。
ところで行番号表示ってどうやるんですか?
エラーが出ても行がわからんから数えるのが面どい。・・・
>>303 メニューのツール → オプション
テキストエディタ → C# → 全般 → 行番号をチェック
>>304 親切にどうもです。
質問厨で申し訳ないんだけど、stringからintへの変換てどうやるんでつか・・・?
int.Parseっぽいすね。すいません。 stringの方ばっか探してました。
Convert.ToInt32()とかもあるよ。
intParaseで上手くいきませんでした。
引数int型のインスタンスにstring strを渡すため、
int.Parse(str)
ってやったんですが、「入力文字列の形式が正しくありません」っていうエラーが。
分かる人いますか?
>>307 アリガ㌧
試してみます。
309 :
デフォルトの名無しさん :03/07/05 01:53
>>310 できました。
comboBox使ってたんだけど、selectedText使ってたのが間違いですた。
selectedItem.ToStringでうまくいった。
また質問があるんだけども、ComboBoxで任意の項目を指定させることはできないの?
312 :
デフォルトの名無しさん :03/07/05 04:31
Formで線を描くにはどうすればいいんでうか? 本もないのでわかりまえん。
>>312 PaintイベントでGraphics.DrawXXX
検索すれ
hhhhhh
yu
30Get
318 :
デフォルトの名無しさん :03/07/05 12:45
初歩的なこともここでよいでしょうか?
ttp://www.atmarkit.co.jp/fdotnet/special/dotnet_sdk/dotnetsdk10.html ↑ここを見て勉強中なんすが、コードを写してコンパイルしてもエラーが出てしまいます。
ライブラリが見つかってないみたいなんですが、そのライブラリの場所もよくわかりません。
実際のdllではなく何か仮想的なもんなんでしょうか?
どうしたらいいのか教えてください・・。
>csc /r:System.DLL /r:System.WinForms.DLL /r:System.Drawing.DLL /r:Microsoft.Win32.InterOp.DLL winform.cs
>Microsoft (R) Visual C# .NET Compiler version 7.00.9466
>for Microsoft (R) .NET Framework version 1.0.3705
>Copyright (C) Microsoft Corporation 2001. All rights reserved.
>
>error CS0006: 'System.WinForms.DLL' メタデータが見つかりませんでした。
>error CS0006: 'Microsoft.Win32.InterOp.DLL' メタデータが見つかりませんでした。
ちなみに上のサイトのこれより前のチャプターのコンソールアプリはコンパイルも実行もできてます。
>>318 記事が古く、名前が変わったので
× using System.WinForms;
○ using System.Windows.Forms;
× /r:System.WinForms.DLL
○ /r:System.Windows.Forms.DLL
Microsoft.Win32.InterOp.DLLは不要じゃないかな。
System.Windows.Forms.DLLもなくてもいけたような。
>>320 ありがとうございます。いけました。
>csc /r:System.DLL /r:System.Drawing.DLL winform.cs
これだけでokでした。
vs.net2003にMSDE入れて、サーバーエクスプローラからSQL Server のところを選ぶと、ログインダイアログが出て何を入れても 「プロバイダが見つかりません。正しくインストールされていない可能性があります。」 と出てしまいます。 またデータベースを作成しようとすると 「内部エラーです。データベースを作成しようとしてエラーが発生しましたが、 エラー情報を表示できません。」 と出てしまいます。 コマンドラインでosqlするとつながるのですが、何が原因か分かるでしょうか?
あれ、 >csc winform.cs これでいけた・・・・。
324 :
デフォルトの名無しさん :03/07/05 13:08
今から言語やるならC#かな? 今はみなさんどの言語使ってるの?
>>324 このスレで聞いても答えは決まってるだろ。(w
326 :
デフォルトの名無しさん :03/07/05 13:19
>>324 ですよね。
ついでに質問
初心者同士が共同でプログラミングしたり
自分のソフト晒して評価してもらったりできる
初心者プログラマ育成スレみたいなのないですか?(できればC#で)
×>324 ○>325 ここIDでないんだ・・
>>326 そんな良スレは2ちゃん中探しても見つからない。
329 :
デフォルトの名無しさん :03/07/05 13:56
右上のペケボタン押しても閉じないフォームを作ってしまいました! どうすればいいんでつか?
>>326 ここで晒してもいいんですかね?
VECTORにいきなり出すのもあれなので
客観的にいろいろ評価しりたいし
>>221 です。
どうも質問の仕方が悪かったようでもうちょっと書かせてください。
要は検索条件の個数が不特定の場合、
OleDb.OleDbCommand cmd=new OleDb.OleDbCommand();
cmd.CommandText="SELECT * FROM TABLE_NAME WHERE{ }"
↑の{ }部分になんて書けばいいのかわからずに困っています。
そもそも不可能で、結局動的にSQLのWHERE部分を作成しなくてはならないのでしょうか?
これだとOleDb.OleDbParameterオブジェクトを使って楽に、、という
本で読んだ知識とだいぶ違いとまどっています。
よろしくお願いします。
↑
すみません、
間違えました。
221じゃなくて私は
>>251 です。
335 :
デフォルトの名無しさん :03/07/05 16:14
Formの閉じるボタンの設定ってどうやつんですか・
Panel.Controls.Clear()を実行すると、閉じるボタンが効かなくなりました。 Panelには実行時操作でパネルを追加していってるんですが、 一旦Clearで全部消してから、リストにあるのをもう一度全部表示させてるんです。 Clearをやめて、任意の内部パネルに対してremoveを使っても同じでした。 Application.Exitだと素直に終了できるのですが・・・。 FOrm.Close関係でしょうか? 分かる方いましたらお願いします
あなたにはまだ無理です。
>>336 なおるかわからんが、Panel.Select()とかしてみるとよろし
たしかタブコントロールも似たようなバグがある
>>338 直らなかったです。これってバグなんですか?直らないのかな・・・。
>>337 分かるなら教えてください。
/ ̄ ̄ヽ |__T_i_ |ミ. ・ ・| (6〈 / Jヽ 〉 | Д | < Let's C# !! やで l\__) ____ノ (___ (⌒) / | | | \_/| | | `ノ ~.レ-r┐ ビシッ ////| | | | |。|. | | |ノ__ .| | ト、 |///.| | | | |。|.( ̄ `-Lλ_レ′ |/// T i g e r s ̄`ー--‐′
341 :
デフォルトの名無しさん :03/07/05 21:40
C#でsplitみたいのないんですか? \tで区切られたファイルを読み込みたいんですが。
ヘルプで「split」検索してみろ
>>335 おまえMLでも同じ質問してたろウザイからやめれ
クラスライブラリを紹介した安い本見あたらないんだけど、 存在するんですか? あったら教えてください。 シリーズになってて全部で何万もするのにヘルプを印刷しただけ のようなやつはいりません。 Javaとかならいくらでも見つかるのにな。
>>344 MSDNライブラリでいいんじゃないの?
本じゃ不便だと思うけど。
346 :
デフォルトの名無しさん :03/07/06 01:57
>344 暮らすライブラリはMSDNライブラリで。その他TipsはC#300を買ってて損は無い。
C#とC++ネイティブでベンチマークで速度を比べたホームページとかありませんか? どの程度違うんでしょうか?
348 :
デフォルトの名無しさん :03/07/06 21:28
ジャンルによると思う。 描画はとにかく遅いよなあ。 あと、デカいassemblyとか、読み込み時に時間かかる。 単なるアルゴリズムとかそういうのはあまり体感できてない。
ベンチマークとなるとあまり変わらないかもしれないけど、 ベンチマークなんかよりも体感速度が全然違う。 C#の起動時のもたつき、画面描画・GUI反応のもたつき…。 業務系プログラムでも厳しいよ。今回のプロジェクトは C# で やりたかったけど、補助系ユーティリティのみ C# で、 エンドユーザーが毎日操作する基幹系は VB6 での実装となった。 .NET は Windows2000/XP/2003 で使うべきじゃないよ。 次のウィンドウズで CLR の起動いらずでネイティブと同じように 動くのを期待して、C# とか取り組みはしてるけどね。 「現状のままで使える」と判断して取り組んでるわけじゃない。
描画速度は桁が二つほど違う
>>350 > 業務系プログラムでも厳しいよ。今回のプロジェクトは C# で
> やりたかったけど、補助系ユーティリティのみ C# で、
> エンドユーザーが毎日操作する基幹系は VB6 での実装となった。
VB6より遅い!?
描画速度ってGDI+を使えばC++でもC#でも変わらなくない?
ネイティブって・・・描画系は違うだろ。
あ、誤解の無いようにいえば、通常のエンドユーザアプリの処理でもっとも重いのが描画系かと。 実際、計算をバリバリしなけりゃネイティブコンパイルしても早くなかったし。
現在の二大問題、起動時間と描画の遅さ。 これらを解決するLonghorn、はよ出して。
描画遅いと言ってる人はどんな描画してるの? 描画が必要になることなんてほとんど無いと思うんだけど。
画面に項目を多数表示するだけでも再表示がモタつかねえか?
>>359 別にOwnerDrawとかしなくても遅いと思うんだけど。
MessageBoxレベルのFormとか作るだけでもちょっとモタつくというか。チラつくし。
362 :
デフォルトの名無しさん :03/07/07 00:13
TT
ここはCPU 1GHz未満のプログラマがいるスレですか?
>>364 いや、実際、2年くらい前に大量導入した客に買い換えろって言えないし
ちょっと実験。 int step=1; int size=750; for(j=0; j<size; j+=step) { g.DrawLine(pen, 0, 0, size, j); g.DrawLine(pen, 0, size, size, j); g.DrawLine(pen, 0, j, size, 0); g.DrawLine(pen, 0, j, size, size); } こんな感じの単純なコード。 C,GDI: 20msec(MoveToExとLineToの繰り返し小細工無し) C#,GDI+: 680msec(バラつきがあったので最小値) C#はαチャンネルや線のアンチエイリアスが処理できるから それで遅いのかと思ったら無関係みたい。 ペンを半透明にすると1800msecになってしまった。 アンチエイリアス+半透明だと3800msec。悲惨だ。
>>362 俺の環境は大丈夫なんだけど、使ってくれてるユーザーの環境はついてこないし。
そんなこと言われても困るがな。
ソフトをちょっと交換するだけでいけますよ ハード買い換えよりはお安いですよ などと搾取してるわけですな
>>366 なるほど。参考になった。
ところでVBとの比較は無いかな?
どうせVB代わりにしか使わない香具師の方が多いだろ??
>>366 そんなプログラム誰もやらないでしょ
いるならDirectX使えばいいし
まあ、C++の方が速いに決まってるが
VB6より遅いってのは言い過ぎだろ
リストビューやファイルアクセスはC#の方が早いぞ
起動は少し遅いがな
作業効率を優先するか 実行プログラムの速さを優先するかだよなー しょぼいソフトならC#で十分 C++とC#のスピードの差気になる香具師はC#やらない VBとC#のスピードの差気になる香具師はC#にしとけと
VB6とC#でフォームにコントロールを30個くらい貼ったアプリを 作って、遅いCeleronの400MHzのマシンで試してみたけど、 まあ、見比べたら遅いのがわかるけど、操作に支障が出るほどの 差があるとは思えない。 (起動は明らかに差があるけど)
描画が遅いって話なんだが。 ファイルアクセスとかはVBより速いよ。普通に。
>>373 ちょっとしたフォームを作るだけでも遅いって言ってるやついるじゃん。
遅いのって、中間ファイルをコンパイルする、初回起動だけでしょ?
SharpReaderとか、.NETアプリを常時起動しておけばよい。
ああ、スタートアップにOffice Startup(?だっけ)みたいなのを入れときゃいいのか!
もういいや。 俺はアンチじゃないんだけど。C#製のアプリ公開してるし。 実際遅いんだがなあ。
さっきのC#のコード。GDIを使うようにしたら30msec。 どーしても速度かせぎたいときは面倒でもGDI使えばいいや。
.NETアプリを起動していてもやっぱり起動は遅かった。 ま、最初に起動するやつよりは速いんだけど。
確か前もって中間ファイルをコンパイルしておく技って無かったか? ・・・早くならないという話もあるけど(w
どうでもいいじゃんそんなの この言語が主流になるころにはマシンスペックなんか 4倍ぐらいになってるでしょ
>>382 すでにVBは出荷されてませんが・・・
お陰で洩れのとこじゃ、C#(VB.NETは避けたい)で開発しなきゃならないんですけど。
384 :
デフォルトの名無しさん :03/07/07 03:29
てゆーかさ、C#体験しといてVB6のがいいってやつ意味わかってねーだろ。 求めるものが違うんじゃね? 自分が少数派と認識するべし。
385 :
デフォルトの名無しさん :03/07/07 03:32
>>379 どーしても速度かせぎたいときは面倒でもGDI使えばいいや。
おまえは普段 GDI を使わずに描画してるのかと小一時間
理由もいえないくせにVBが遅いとはよく言うよ。
CLRが遅いのか、GDI+が遅いのか、混同されている気がする。 .NETアプリの起動は確かに遅いけど、Javaの起動と比べたら 許せるレベルかと。
所詮みんな口だけ。好きなものが速くて嫌いなものは遅いと言いたいのさ。
>>388 アンチJavaにも同じことをいってやれ。
>>388 安心したぞ。
VB厨の陰謀だったんだな(w
VBは遅くないよな。 VBで作った馬鹿なアプリが糞遅いことはよくあるが。
まっ。
>>390 のような奴がいる限りまともな議論はできないってった。
>>391 禿同。言語のせいにしている時点でまだまだ。
作り方が悪ければCだってアセンブラだって遅くなる。
>>385 GDI+だす。GDIをラップしてることは承知ですが。
>>394 お前は GDI+ が遅いと思っているのかと小一時間。
>>C,GDI: 20msec(MoveToExとLineToの繰り返し小細工無し)
>>C#,GDI+: 680msec(バラつきがあったので最小値)
比較の仕方が間違ってる。
スタートアップフォームのインスタンスってどうやって取得すればいいでしょう。 別フォームからスタートアップフォームのpublicな関数や、コントロールのプロパティ を参照したいんですが、どうも思いつきません。 頭が固い私にアドバイスをお願いします。 "他のフォーム上の関数からfoo()を呼んだり、treeView1のプロパティにアクセスしたい" public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.TreeView treeView1; private int i; [STAThread] static void Main() { Application.Run(new MainForm()); } // static にすれば呼べるだろうけども、各インスタンスのiを操作したいので public void foo() { i++; } }
Form1 form=new Form() form.foo()
>>398 フォーム同士の関係にもよるけど、使いたい側のフォームのPublic変数に、
スタートアップフォームのインスタンスを入れておくってのが簡単。
>>400 なるほど。
どこかに(Applicationとか)格納されていないかなと思いましたが、とりあえず
教えていただいた方法で参照することができました。
ありがとうございました。
>>396-397 GDI+が遅いんだよ。
C++でもGDI+使えば激遅だから試してみれ。
↑スルーよろ
高級言語でなく高級プログラマがいるスレはここですか?
高級プログラマとはなんですか? 一通りプログラムできるが作業効率が非常に悪い 能無しプログラマの俗語です
GDI+マジ遅え。 Longhornまで待てというのか。
Longhornが出る頃のマシンなら十分な速度で動作しますね。 多分。
MSX-BASICのLine文で大喜びしていたときのことを リアルに思い出させてくれる懐かしいスピードです。
>>409 いくらなんでも・・・。どんなマシン使ってるんだろ。
あ、自分を・・・うぐぅ。
>>408 あの頃のプログラミングが一番楽しかったなー
限界が見えてたからかな?
今の言語は私には難しすぎる
ハードウェアの性能が上がれば問題なくなるだって? んー どっかの言語で 8年くらいそんな話を聞いてるな。 まぁ、こっちは OSが手厚い対応してくれるから大丈夫かな? そのうち、CLR のことをネイティブアプリと呼んで、 Win32 をエミュレーションする Windows が出るのかえ?
> んー どっかの言語で 8年くらいそんな話を聞いてるな。 笑った でもあれは宗教的理由でもって思考停止しているだけだと思う
>>412 どんどん重くなるんだね
M$は一体どこめざしてるの?
プロジェクトX見たけど 日本人が考えたTRONが世界標準のOSになるはずが、 アメリカのスーパー301条で潰されたって見たなー 今の携帯とか炊飯器とか電化製品は全部TRONが入ってるんだって ここにいるひとはみんな知ってるだろうけど TRONが世界標準のOSなってたら日本どうなってたんだろ 年間30兆円の売上あげる会社とかあったのかな? 景気もよかっただろうなー
B.G.を神とする一神教による世界制服。
>日本人が考えたTRONが世界標準のOSになるはずが、 ヲイヲイ、何を見てるんだ。それともNHKがかましたのか?
>>418 世界標準はおれが付け足したんだけど^^;
日本の基準がTRONになり始めたときに経済制裁食らったんだよね
NHKに騙されてる人、ここにもいたか。
424 :
デフォルトの名無しさん :03/07/08 16:24
425 :
デフォルトの名無しさん :03/07/08 18:25
あのさ、クラスAを使うクラスBがあったら まずクラスAをコンパイルしないとだめでしょ? コマンドラインからだとクラスAコンパイルしると、Mainないからエラーになんだよ。 どうすればいいの?
>>425 Exe じゃなくて、DLL とか Module としてコンパイルすればいいんでない?
427 :
デフォルトの名無しさん :03/07/08 18:37
Moduleやってもだめだったよ・・・。
引数に両方指定すれ。
ゲームの勉強をしたいんですが、参考書はなにがいいですか?
ファミ通。
このソフトでウィルスソフトとかHDDフォーマットプログラムとか作ったら 誰が作ったかって特定されますか? 製品番号とかも一緒にコンパイルされるんでしょうか?
さっさと捕まってください
>>424 ボーランドががんばってLinuxでも動くようにしてくれないかな。
434 :
デフォルトの名無しさん :03/07/09 13:05
436 :
デフォルトの名無しさん :03/07/09 22:41
TextBoxのタブ文字サイズってどうやってかえんの?
internalはjavaでいうとこのprivateってことでいいんでつか?
EM_SETTABSTOPS(w
MVPにも2ちゃんねらはいるらしい。
「デフォルトの名無しさん」は共有MVP名ということで
いるでしょ。そりゃ。現においらもそうだし。
>>437 C#のinternalはJavaでいうと、所謂パッケージスコープ。
public とか private とかを全く付けてないのと一緒。
(ちなみに、C#は省略するとprivateになる。)
friendだっけ?
>>444 443に対するレス?
まあ、C++ で friend を使うような場面では、
protected internal とかを付けて解決したりするみたい。
446 :
デフォルトの名無しさん :03/07/11 07:08
↑ FUD
つーか「PR」だし。
451 :
デフォルトの名無しさん :03/07/11 14:23
相談です。 System.Windows.Forms.UserControlでコントロールを作成しています。 MouseDownでCtrlキーが押されているときに処理を行うようにしたいのですがMouseDownにはキーボード情報が無いようでしたので、以下のようにしました。 private bool _ctrlKey; protected override void OnKeyDown(KeyEventArgs e) { base.OnKeyDown(e); _ctrlKey=e.Control; } protected override void OnKeyUp(KeyEventArgs e) { base.OnKeyUp(e); _ctrlKey=e.Control; } protected override void OnMouseDown(MouseEventArgs e) { base.OnMouseDown(e); if ((e.Button==MouseButtons.Left) && _ctrlKey) { //処理 } } これで上手く動いたのですが、「CTRL+ALT+SHIFT」でPCをロックした際に問題が発生しました。ロックを解除後_ctrlKeyフラグがtrueのままなのです。 ロック時KeyDownは発生するようですが、KeyUpが発生しないようです。 この問題を上手く回避する方法はありますでしょうか。 KeyDownイベント以外でキー情報を取得できれば良いのですが、方法がわかりません。 どなたかお教えください。
>>451 ModifierKeysプロパティとか
453 :
デフォルトの名無しさん :03/07/11 17:29
おぉっ 簡単に解決してしまいました! ありがとうございます!! もうひとつキー周りで困っていることがあります。 おなじくUserControlでの処理なのですが、MouseDownでFocus()して フォーカスを受け取り、カーソルキーを押して処理を行いたいのですが、 カーソルキーを押すとボタン等の他のコントロールにフォーカスが移ってしまいます。 カーソルキーで他のコントロールにフォーカスを移さない為にはどうしたら良いのでしょうか? ご教授よろしくお願いいたします。
454 :
デフォルトの名無しさん :03/07/12 01:16
進行状況を表示するのにプログレスバーを使いたいんですけど、 処理をしているスレッドからFormのBeginInvokeを使うと明らかに速度が落ちてます・・・ 我慢するしかないんでしょうか? あと、キャンセル処理の仕方がわかりません・・・ どこかわかりやすいサイト、または本とかありませんか?
Invokeの回数を1回/1secとかに減らす。 キャンセルって何をしてんのか知らないけど、 ThreadならAbortメソッド。 スレッドではThreadAbortExceptionをcatchすりやいいじゃん。
Thread.Abort()って例えばパケットの受信をブロックして待ってる時なんか全然終了できないよ。 なんで独自にキャンセルする処理を入れたほうが確実。 例外を自分で飛ばして処理抜けるのがいいと思うな。
>>455 、
>>456 どうもです。Invokeに関しては回数を減らす方向で行きます。
言われてみれば確かに逐一更新する必要はありませんね。
で、キャンセルなんですが、
現在実行ボタンを押すとスレッドを開始して進行状況をプログレスバーで表示してます。
キャンセルボタンを押すとその処理を中止するようにする場合、
例外を飛ばしたくても処理スレッドにキャンセルの通知方法が思いつきません・・・
Abortでも特に問題ないと思う処理なのでAbortで行こうかと思いますが、
>>456 さんの方法も知りたいです。
>>457 いろんな方法があるので一概には説明できないです。
デザインパターンがあるので興味あるなら調べてみては?
単純なのでは中止フラグを用意してそれを確認して中止処理を開始するとかかな。
私が以前やったのは別スレッドで処理するものまとめてスレッドクラスにする。
スレッドクラスはスレッドの生成、中止、終了の各操作をインターフェイスで持ってる。
スレッドクラスを集約して管理するクラスに問い合わせれば各スレッドクラスの状態が分かるって感じにしたことある。
そのソフトはスレッドの状態自体が重要だったんでね。
__∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
461 :
デフォルトの名無しさん :03/07/15 12:15
あげておこう
クソスレ上げんな
__∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
464 :
デフォルトの名無しさん :03/07/15 21:06
SOAP Messagingがよさげですな。
466 :
デフォルトの名無しさん :03/07/15 22:16
_.. ..‐::´/
_/::::::::::::/
_/:::::::::::::/ ____
,..::::´::::::::::::::::::::: ̄:::::::::::._/
/:::::::::::::::::| ヽ、:::::;::::::::::::/
/:::::::::::::::::::::|´|ヽ |/_:::.::/
_ .. -─':::::::::::::::、::|`' , .!::∠
`'' ‐-.._:::::::;-‐、`(●) (●) |::::`::-、オッス!オラ30代高卒独身PC職!
=ニ二::::::::::::::::|6 \___/、| -──` 将来がやべえ状態だってのに
‐=.二;;;;;`‐t \/ ノ なんだかすっげえワクワクしてきたぞ!
http://pc2.2ch.net/db/
467 :
デフォルトの名無しさん :03/07/15 23:57
System.Macintosh.Formsはまだですか?
468 :
デフォルトの名無しさん :03/07/16 00:44
469 :
デフォルトの名無しさん :03/07/16 02:18
[C# Error] WinForm.cs(388): 変数ではないため、'System.Windows.Forms.Control.Location' の戻り値を変更できません。 ということは、.NETではコントロールの位置を変えることは出来ないのでしょうか??
>>469 Control.Location プロパティのヘルプみました?
位置帰るときはBoundsやLeft,Topを弄ればいい。
もうちょっとヘルプを探してから質問してほしいな。
ヘルプが全文英語で良く分からなかったので質問してみました。 とりあえず、右辺をnew System.Drawing.Point(x, y)とすることで代入できました。
[SoapMethod](・∀・)イイ!
475 :
デフォルトの名無しさん :03/07/16 22:30
477 :
デフォルトの名無しさん :03/07/16 22:48
違います。
言語戦争やめれ。お前らどっちもできるだろ。 意味ないことはやめておけ。
絡んできたのはC++厨(アンチC#厨)みたいだけどな。
>>474 [SoapMethod]って何ですか~?
意図的にソープメッセージ作れるんですか?
481 :
デフォルトの名無しさん :03/07/17 10:26
C言語では void XXX() { return; } と書けていたのが、C#では 「クラス、デリゲート、列挙型、インターフェイス または構造体が必要です。」と コンパイルエラーが出てしまいます。 クラスに入れる必要がないようなメソッドでも、必ずクラス内に書かなきゃ いけないというのがC#の決まりなんでしょうか? また、そうであるとしたら、そのメソッドを呼び出すためには、必ずそのクラスの インスタンスを作成しないといけないということですか? よろしくお願いします。
staticなメソッドならインスタンスは作らなくてもいいよ。
>>482 おお!今試してみたら、たしかにインスタンスなしで呼べました!
でもクラスの中には入れる必要があって、古い記述法っぽくコーディング
したかったら、using を使う必要があるってことですね・・・。
だんだん分かってきますた。ありがとうございます。
484 :
デフォルトの名無しさん :03/07/17 14:52
C#でVB6のFormat関数を使いたいんですが、プロジェクトの参照設定に Microsoft VisualBasic Comptibility Runtimeを入れても、 Microsoft.VisualBasic.Compatibility.VB6・・・までは有効になるけど、 そのあとの関数一覧にFormatが出てきません。 無視して強引に書いても、ビルド時にエラーになってしまいます。 C#でFormatを使うにはどのようにしたらいいんでしょうか?
>>484 VBのFormatが何なのか知らないけど、
感じ的に String.Format のことかいな?
>>485 いや、残念ながらString.Formatとは違うんです。
<書き方>
Microsoft.VisualBasic.Compatibility.VB6.Format(3000, "#,##0")
<結果>
"3,000"
てな感じのメソッドです。
487 :
デフォルトの名無しさん :03/07/17 15:24
>>484 Microsoft.VisualBasic.dll の
Microsoft.VisualBasic.Strings.Format() かな。
>>486 3000.ToString("#,##0");
でもいけるんじゃないかな?
>>487 お察しの通りです。
>>488 キタ━━━━(Д゚(○=(゚∀゚)=○)Д゚)━━━━━!!!
ありがとうございます!できました!
でもなんで、VB.NETだと
Microsoft.VisualBasic.Compatibility.VB6.Format なのに、C#だと
Microsoft.VisualBasic.Strings.Format になるんでしょうね??
納得いかない・・ (´・ω・`)
>>489 おお・・・・
((long)3000).ToString("#,##0")
で、うまくいきました!
いろんなやりかたがあるんですねえ。。
String.Format("{0:#,###}", 3000) String.Format("{0:n}", 3000) とかも
あ、String.Format("{0:#,#}", 3000) でもいいみたい
なにこの言語・・・ (汗だくモナーAA省略)
うう・・・ (´д`;) いろいろ教えていただきましたが、やはり、どれも 「VB6コンパチのFormat関数」とは別モノのようです。すみません。 というのも、VB6のFormatは Microsoft.VisualBasic.Compatibility.VB6.Format("abcd", "@ @ @ @") を実行すると ”a b c d” という結果を返すんですが、みなさんに 教えてもらったやり方だと、"@ @ @ @" になってしまいます (´・ω・`) 数値のカンマ区切りだけならうまくいっていたんですが・・・。 引き続き、C#からVB6のFormat関数を呼び出す方法をご存知のかた、 よろしくお願いします。
>>490 Microsoft.VisualBasic.Compatibility.VB6.Format は、実際には、
Microsoft.VisualBasic.Compatibility.VB6.Support.Format のこと。だから、このように
完全修飾してあげれば呼び出せる。
VBでは、モジュールでの宣言 イコール グローバルな扱いになるから、省略が
可能だと思われ。
ただし、このメソッドはもう2つ引数をとるので、引数の省略形が書けない C# では、
Microsoft.VisualBasic.Compatibility.VB6.SupportFormat(3000, "#,##0") ;
と書くとエラーになる。
#Missing.Value でもだめだね。なんでだろ?
>>495 あんまりきれいじゃないけど、
MessageBox.Show(
Microsoft.VisualBasic.Compatibility.VB6.Support.Format(
"abcd",
"@ @ @ @",
(Microsoft.VisualBasic.FirstDayOfWeek)0,
(Microsoft.VisualBasic.FirstWeekOfYear)0));
で、いけるみたい。
>>496 ,497
(`・ω・´)シャキ-ン
バッチリです! ありがとうございました~。
ちなみに引数の省略ができないのは今知りますた (´∀`;)ウフフフ・・
>>496 どうやら、object じゃなくて、Enum値だから、ってのが理由みたい。
参考になったわん。
500 :
デフォルトの名無しさん :03/07/17 22:51
NumericUpDownについて質問です。 numericUpDown1.Hexadecimal = true; numericUpDown1.Maximum = (decimal)(Math.Pow(2,32)-1); という風にして、7FFFFFFFと入力してから↑キーを押すと 80000000 になります。 80000000と入力してから↑キーを押すと 0 になります。 予想では80000001となるはずなんですが・・・これはなぜなんでしょうか?
それは7FFFFFFFの次が80000000で、 80000000の次が0だからではないでしょうか
502 :
デフォルトの名無しさん :03/07/18 08:20
[C# Error] AssemblyInfo.cs(16): 'System.Reflection.AssemblyCultureAttribute' 属性を作成時にエラーが発生しました -- '実行可能ファイルはローカライズできません。カルチャは常に空でなければなりません。' 実行ファイルをローカライズする方法キボンヌ
>>502 メインアセンブリとサテライトアセンブリの違いについて調べれ。
[AssemblyCulture]を指定するのはサテライトの方だけ。
504 :
デフォルトの名無しさん :03/07/18 19:13
すいません、以前に質問したことがあるのですが、 再度お教えください。 System.Windows.Forms.Control を利用してコントロールを作成していますが、OnKeyDownのイベントで カーソルキー単独の情報を取得できません。 Alt等その他のキーと組み合わせると受け取れます。 なにか良い方法はありますでしょうか。
>>504 前にどっかで見たが忘れた
Controlのメッセージハンドラで何故かカーソルキーイベントを削除してくれちゃってるのが原因だったと思う。
それっぽいメソッドをオーバーライドしれ。
506 :
デフォルトの名無しさん :03/07/18 20:32
>>505 MSの毒に犯された厨がここに一人
そんなツールは使わない
そんなツールは捨てる
508 :
デフォルトの名無しさん :03/07/18 21:11
てゆーか。 MFCとかATLを貶していたOOの先輩方よ。 C#のライブラリっていかがですか?
C#(.NET)>言語の性質上どうしようもない壁>ATL>>>>>>>>>>>>>>>>>>>>>>>>>>>>>MFC
C#のライブラリ(特にGUI)が洗練されているのは確かだよ。 洗練したのは他人だけどな。
511 :
デフォルトの名無しさん :03/07/18 21:45
>>510 ふーん、洗練されているんですかー。
以下釣られてみると、
MFCにしても、WindowsOSにしても、
常に、いつだって、洗練するのは他人なので、
初期OSからばっちりフォーカスだの、
エラーコードが決まっているなんてありえない。
絶対パクリ
513 :
デフォルトの名無しさん :03/07/18 22:55
csvなstringをstring[]に変換するにはどうすればいいですか?
>>513 string csv = "aaa,bbb,ccc";
string[] data = csv.Split(',');
>>501 7FFFFFFFから↑を押し続けると80000000 → 80000001 → 80000002
となりますのでそれはありません。
パクリがどうたら言ってる奴は大抵ガキか社畜。 新規のアイデアなんて世の中にはない。 思いついたことは、大抵世の中で一番最後に思いついたことと思ったほうがよい。 真剣にパクることとその上の工夫+実行力がビジネスでは重要。 つかスレ違いだからもうやめようや。
>>516 > つかスレ違いだからもうやめようや。
つーか再開すんな馬鹿。
518 :
デフォルトの名無しさん :03/07/19 00:21
ちょっと質問なんですが、クラスフィールドをスレッドごとに持つことはできないでしょうか。 具体的には、以下のような基本データ型として16進数を表すクラスHexaをつくりました。 public class Hexa { int dec; public static string Format = "0x{0:X}"; public int Dec { get {return this.dec;} } public override string ToString() { return String.Format(format,this.dec); } } 計算等では内部に格納した10進値を使うのですが、文字として使いたいときもあるので 0x00AF となるようにクラスフィールドFormat を作りました。 16進表記が全スレッドで同じならこれでいいんですが、別のスレッドでは000AFHと表記したい場合に どうしたらいいのか思いつきません。何かいい方法はありませんか?
>>518 質問の意図が激しく意味不明だけど、
無理矢理この例を解決するとしたらコンストラクタでFormatを
定義するとかメソッドやプロパティでFormat指定すりゃ。
>>519 やっぱり意味不明でしたか・・・
もうちょっと説明を。Hexaはintとかと同様のデータクラスのつもりです。
Hexa hexa = new Hexa(12);
String.Format("10進数{0}は16進数{1}}です",hexa.Dec,hexa.ToString());
こういう風にしたとき、
スレッドA:10進数12は16進数0x0Cです
スレッドB:10進数12は16進数00CHです
となってほしいわけです。スレッドAで使用されるHexaのToString()が"00CH"となることはありません。
各インスタンスに渡す方法も考えたんですが、大量に使用するデータ型として扱いたいので
インスタンス属性ではなくクラス属性とすべきだろう、と。
staticと継承について解説ギボンヌ class Animal{ public string nakigoe; } class Cat : Animal{} class Dog : Animal{} このとき、Catについては全てnakigoe="ニャー"; またDogについては全てnakigoe="ワン"; としたいときどうすればいいのでしょうか。 あくまでも、nakigoeはAnimalから継承させたいのですが。
522 :
デフォルトの名無しさん :03/07/19 01:45
>>520 設計がおかしい気がする。
Strutsのソースで似たような事してるので、
Managerみたいな、Factoryみたいな、Contextみたいな。
>>520 まぁ設計がおかしいのは明らかだが、
Thread.CurrentThreadとハッシュテーブル使え
524 :
デフォルトの名無しさん :03/07/19 02:30
int i; for(i=0; i<4; i++) ; でループを抜けた後i=4になることを期待してもいいですか? リファレンスには特に何も記述がないのですが。
>>521 コンストラクタで設定するとか。
class Cat : Animal {
public Cat() {
this.nakigoe = "ニャー";
}
}
527 :
デフォルトの名無しさん :03/07/19 08:42
C#の「&」と「&&」は何が違うのでしょうか? いまのところ全く同じ動作をしています。
Cでも同じだけど、左側がfalseのときに右側を計算するかどうか
ビット毎の論理積はどの演算子を使うの?
>>518 ( ゚д゚)ノ System.ThreadStaticAttribute
>>530 どうもです。意図どおりの仕組みなのでちょっと試してみます。
>>522 ,
>>523 設計がおかしいのはどういうところでしょうか?
文字表記の仕方を管理するクラスを作って、
それにHexaが問い合わせるようにしたほうがいいってことですか?
>>531 出力内容がカルチャやロケールならともかくスレッドによって異なる点がおかしい
関数内部でArrayListに文字列をAddしていって最後にstring[]で返すにはどうすればいいですか? それともArrayListでそのまま返した方がいいですか?
>>533 ArrayList list = new ArrayList();
list.Add("hoge");
string[] s = (string[])list.ToArray(typeof(string));
537 :
デフォルトの名無しさん :03/07/19 17:16
>>536 てすとメソッド無い?
書き込み側めそっど無い?
改行の扱いは?
538 :
デフォルトの名無しさん :03/07/19 17:17
>>536 行に改行が含まれている場合、""の中は改行になってはいけないので、
InputのパラメータはStringじゃなくて、Stream系じゃないとダメですね。
>>537-538 改行は特に考慮してませんが末尾のものは
もしかしたらtrim()が削ってくれるかもしれません(いいかげん)。
ついでに"のエスケープも無しです。
引数をStreamにすると今度はStringが扱えなくなりませんか?
対応する場合はoverloadするしかないですかね。
スレが違うが、やってみた。 public static string[] CsvSplit(string d) {ArrayList l=new ArrayList();bool q=false;int i=0; for(int p=0;p<d.Length;p++){if(d[p]=='"')q=!q; if(!q&&d[p]==','){l.Add(d.Substring(i,p-i));i=p+1;} else if(p+1==d.Length)l.Add(d.Substring(i)); }return(string[])l.ToArray(typeof(string));}
541 :
デフォルトの名無しさん :03/07/19 19:58
>>539 Stringを扱う必要なんてある?
Javaだと、StringReader(Strnig)でストリーム系インスタンス作れるからね。
542 :
デフォルトの名無しさん :03/07/20 02:19
System.Windows.Forms.ButtonはVisual Styleに対応していないんですか? 私の環境ではVisual Styleになってくれませんでした。
543 :
デフォルトの名無しさん :03/07/20 05:38
>>542 Button.FlatStyleプロパティをSystemに。
もちろんmanifestでCommonControl Ver.6の使用を指示しとく必要もあり。
>>543 FlatStyleの指定をそのようにしたら、Visual Styleに対応できました。
ありがとう!
>>542 2003(.NET Framework 1.1)なら、.manifest も不要だよん。
Application.EnableVisualStyles()はバグの温床という話をどこかで聞いたような・・・。
547 :
デフォルトの名無しさん :03/07/20 13:50
>>545 CLIが世界標準でも開発環境は標準じゃないと。。。
548 :
デフォルトの名無しさん :03/07/20 13:57
>>547 今一番触りたく無い言語
C#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>なにか?
>>547 そもそも、System.Windows は標準には含まれてないだろ。
>>548 じゃあ、なんでこのスレ見に来てるんだ?
すいません。間違えました。 s/549/548/
みんな仲良くして!!
555 :
デフォルトの名無しさん :03/07/21 14:54
継承が前提のクラスを継承する場合 class Foo: YourNameSpace.Foo{} なんて名前の付け方って推奨されますか。 class Foo: BaseFoo{} class MyFoo: Foo{} などとやるとBaseやMyを連呼してウザいのです。
556 :
デフォルトの名無しさん :03/07/21 16:25
>>555 意味に従ってつけなされ。
> 継承が前提のクラスを継承する場合
抽象クラスってことか?
Java風にいくならAbstractを前につけるとか。
> class Foo: YourNameSpace.Foo{}
> なんて名前の付け方って推奨されますか。
推奨されないだろ。つうか、同じ名前空間内では継承しねーのかよ。
> class MyFoo: Foo{}
Myを付けて何の意味がある。意味不明だよ。
例えば、架空の事例だが、
Editorクラスを継承して、
TextEditor、BinaryEditorとかを作るとか。
さらにTextEditorを継承してHtmlEditorを作るとかね。
クラスライブラリ内で言えば、SreamクラスとFileStream、MemoryStreamとかあるね。
YOU IS FOOL
558 :
デフォルトの名無しさん :03/07/21 20:17
>>577 You is big fool man
>>558 Don Boxかよ
見てることは見てるだろ。
まあ、底の浅いJava厨は見てないだろうけどな
563 :
デフォルトの名無しさん :03/07/21 23:53
OO馬鹿には何を言っても無駄。 オブジェクトという単位では不足だというのは.NET以前のCOMの頃の議論なのに。
しかしまあ、C#2.0とILXで解決されてる問題をいつまで議論してるんだろう。> @IT
談話室でやれや
>>567 匿名メソッドの型が激しく気になる。
型推論してSplat型になるのか、別の型が作られてしまうのか。
delegateでしょ。推論なんかしてないじゃん。
>>569 > delegate(Splat you, object a)
これだけではdelegateがSplat型だという情報はないでしょ。
> me = delegate(Splat you, object a)
この文脈ではじめて「delegateはSplat型に違いない」となるんじゃないの?
>>570 me = new Splat( delegate( Splat you, object a )...
↑これが省略できる
ってことだよね。
普通のメソッドでもそうできるようにして欲しいもんだ。
572 :
デフォルトの名無しさん :03/07/23 15:32
コメントの組み込みトークンの、 TODO と UNDONE と HACK ってどう使い分けたらいいの? ヘルプをみたりググったりしても、この3つがあることしか 分かりませんでした。 教えて、エロイ人。
TODO・・・・修正・変更等が必要 UNDONE・・・まだやってない、だれかやっとけ HACK・・・・時間が無いからハッキングした、後で見直してきれいに直しとけ かな? UNDONEとTODOの違いがわからんな
Undone やってるけど、まだ終わってない
>>573 やはり単語のイメージから推測するしかないですか・・・ (´ω`;)
自分で考えて使い分ければいいんでしょうけど、公式に
「こう使え!」ってガイドラインがないと落ち着かない気分です。
どうもありがとうございました。
デザパタ本が出ることはその言語の非力さを意味している。 ある言語が十分な柔軟性をもっていればデザインパターンは 存在しなくなる。なぜなら従来パターンと呼ばれていたものを すべてクラスライブラリ化できるからである。
C#はどんどん新しい本が出るね
580 :
デフォルトの名無しさん :03/07/24 02:43
すいません初心者です 開いたファイルの上に上書きはどのようにするのでしょうか? そのまま上書きしますとエラーが出ます よろしくお願いいたします
>>579 そのほとんどがクソだがな。
最近出た本でまともなのはEssensial .NETくらいか。
おまえら参考書は日本のしか見ないの?
>>585 アンチMS厨の典型
どうせ読んでもいないで言ってるのだろうから
ちょっと突っ込むと答えられないだろうな(w
587 :
デフォルトの名無しさん :03/07/24 11:36
コンソールアプリでusing System.Windows.Forms;するとエラーがでますが、 コンソールアプリからは使えないのですか?
CheckBoxをcbとしたときに、後からComboBoxが出てきて困った
>>581 さん
結局出来ないと言うことでしょうか.....................
>>582 さん
出来るのでしょうか?
>>591 すいません初心者なんで
pictureBox1.Image = Image.FromFileで開いて
pictureBox1.Image.Saveで上書きしたいのですが
ぐらいしか思いつかないのですが
>>592 Image.FromFileのかわりにImage.FromStreamを使う
595 :
デフォルトの名無しさん :03/07/24 14:57
596 :
デフォルトの名無しさん :03/07/24 14:57
>>594 ありがとうございます
さすが 試してみます
すいません初心者なんで
生意気な口きいちゃいました
>>594 さんの言ってることが全然分かりません
初心者なもので、もっとやさしくお願いします
Googleでキーワード調べろ馬鹿
>>592 つい最近、全く同じ内容の質問が
ここか、くだすれC#のスレにあった。
>>598 すいません。初心者なんで検索するのが面倒です。
>>599 すいません。初心者なんで探すのが面倒です。
601 :
デフォルトの名無しさん :03/07/24 23:34
Beginnerという英単語にそのような訳があるからなのかどうかは知らないが、
>>1 のような
自称「初心者」は困ったものだ。Beginnerという単語は単に「何かを初めて行い始めたばかりの人」
という意味しか無いと思っている。
日本語における「初心」の真意は何だろうか。
世流能楽の大成者・世阿弥は「初心忘るべからず」という諺を残したが、この諺にこそ「初心」の
真意が込められていると思う。
この「初心」には”何かを初めて行い始めた”という状態を指す意味も勿論含まれているが、
”初めてだからこそ、より上を目指して人並み以上に自己努力・自己研鑚する心意気”という意味も
多分に含められているはずだ。だからこそ「初心忘るべからず」という諺が成立するのである。
>>1 のようにBeginnerであるにも拘わらず、少しでも分からないことがあればすぐ人に聞くような
態度を見せる人は、「初心を持つ人」たる「初心者」と自ら名乗るには到底値しない人なのである。
例えば
>>1 のような人が「初心忘るべからず」という態度を取リ続けたらどうだろう。
本人は遅々として成長せず、周囲にだけは多大な迷惑がかかるはずだ。そのような人間には
「初心者」を名乗る資格はない。「ビギナー」「無為(むい)者」等と名乗るべきである。
もうググッても見つからないので質問します。 CAOで状態を保持する方法を知っていれば誰か教えてください。 よろしくお願いします。
604 :
デフォルトの名無しさん :03/07/25 10:03
スマートクライアントについて教えてください。 System.Windows.Forms.Controlより独自のコントロールを作成、 ツールボックスに登録し、アプリケーションに貼り付けて利用しています。 通常はアプリケーションのBinの中身(exe&dll)をコピーして配布するだけで上手く 動くのですが、IISを利用してスマートクライアントとしようとすると セキュリティポリシーで許可されていない動作として失敗します。 スマートクライアントとしてではなく、LAN内でネットワーク越しに実行しても 同じエラーとなります。 何か設定をすれば動きそうな感じなのですがわかりませんでした。 どなたかご教授ください。 よろしくお願いいたします。
605 :
デフォルトの名無しさん :03/07/25 13:51
すいません、自己解決しました・・ 以前質問したカーソル情報取得の為に ProcessKeyEventArgsをoverrideしていたのが良く無いようでした。 またもやカーソル振り出し・・・ とりあえずスマクラで動いてホッとしました。
ほう。やっと日本発Remotingの本が出るのか。
おいおい、196ページかよ。ほんとの入門本だね。イラネ。
610 :
デフォルトの名無しさん :03/07/26 12:28
>>610 VS2003に付いてるから使ってみたことあるけど、exe起動しなくなったよ。
サイズが減ったと思って一瞬喜んだが、起動しなくちゃ意味ねえ。
612 :
デフォルトの名無しさん :03/07/26 12:50
単純なコードでも起動しなくなった?
検索ダイアログどうやってつくってるの?
615 :
デフォルトの名無しさん :03/07/26 13:42
痴漢ダイアログどう姦ってつくってるの?
パレットにFindDialogってなかったっけ?
617 :
デフォルトの名無しさん :03/07/26 14:16
ないよ
>>613 単純なコードでは出来たけど、意味無いような。
試したexeはunsafeとかCOMとか使ってる。対象外?
619 :
デフォルトの名無しさん :03/07/26 14:34
C♯の限界が垣間見えました
620 :
デフォルトの名無しさん :03/07/26 18:00
VC#.NETを買うつもりですが、それまで、 C#BuilderのFree版やSharpDevelopで C#を試してみようと思っています。 この二つで作った物はVC#.NETで 使用できるんですか? あと、この2つのソフトはVisualシリーズみたいに コード補完機能(?)はついているのですか? どなたか教えていただけませんか?
>>620 C#BuilderはVSのプロジェクトにエクスポートできるし、
VSのプロジェクトの読み込みもできる。
SharpDevelopはそういうツールはあるらしいが最近は疎いのでよくわかんね、スマソ。
コード補完機能はどちらもあり。
SharpDevelop も標準で VSプロジェクトのインポート・エクスポート可能。
安心しました。 VC#を買うまでC#Builderで開発してても そのまま移行できるということですね? あと、補完機能って何まで補完してくれるんですか? 両方とも変数は補完してもらえなかったのですが。
625 :
デフォルトの名無しさん :03/07/26 19:28
626 :
デフォルトの名無しさん :03/07/26 20:47
いまさらな話です。 去年に.NET(2002)買ってしばらく放置してました。 2003にアップグレードするためには、 アップグレード版買うしかないんですか? 10まんくらい払って。 ちなみにMSDN会員ではありません。
Visual Studioが無いと開発できないとか思ってない?
629 :
デフォルトの名無しさん :03/07/26 20:59
>>627 つまり、これから毎年10まんずつ取られるってことでつか?
>>628 やっぱ、アプリケーション作りたいんで。
となるとVisual Studioでしょ?
>>629 Pro 版以上なら、無償でアップグレードできるはずだけど?
MS からメール来てなかった?
Visual Studioがないとコンソールアプリしか作れません。
断言するなよ
634 :
デフォルトの名無しさん :03/07/26 22:24
>>631 ちょっとメールが見当たらないので
事務局にメールしてみまつ。
もう期間過ぎたんじゃねーの?
636 :
デフォルトの名無しさん :03/07/26 23:18
こうやって金を巻き上げるわけだな(^_^)3 フムフム。
javaやってる人って 自分より知識のないやつは馬鹿にした感じで、ほかの言語を一切認めない みたいな人が多いような気がするのですが C#はやってる人たちもやっぱそう?
C# 相談室 Part10(
>>638 ): warning CS7743: 夏坊が発生しました。レスに価値がありません。
>>638 そういうやつもいるし、そうでないやつもいる。
漏れの経験では、複数の言語が使える人ほど、他の言語に寛容だね(当たり前だけど)。
JAVAより優れてる
↑他の言語に寛容でない人
>>638 確かにJava厨の中には多いように感じる。
自分より知識が無い相手というより、自分と意見の合わない相手を見下すことで優位に立ちたがるって感じだが、虎の衣を借りてる感じは否めないな。
本当に出来る奴はちゃんと多言語も認めるので、厨とは同じにみなさないで欲しい。
C#はマイノリティだからまだ他を馬鹿に出来る立場には無いが、シェアが増えれば絶対出てくるだろうな。
ここで雑談してる奴馬鹿だろ?
現在、C#使ってて他の言語に慣用的じゃない奴なんているのか。 殆どが他言語からの流入でこれしか経験してないやつなんて極僅かだと思うが。(2003年7月28日現在)
Del厨
Java Language Conversion Assistant により Visual Studio .NET 2003 を 使用する開発者は、Java 言語アプリケーションをすばやく、低いコストで Visual C# および .NET Framework に変換することができます。変換した アプリケーションは XML Web サービス、および ASP.NET、ADO.NET、 Microsoft Windows フォーム などの .NET 開発プラットフォームを使用して、 拡張することができます。 (July 22, ダウンロード情報)
Java Language Conversion Assistant 2.0 ってVisual C# .NET Standard でも使えますか? VisualStudio .NET2003 じゃなきゃ駄目?
システム要件読みなさいっての。
去年の春.NET2002買って.NET2003がほしくなった
>>626 かつ
>>629 かつ
>>634 でつ
MSからメールがきました。
「アップグレードの申し込み受付はすでに締め切っていますが、
今回のみ特別に申し込み受け付けさせていただきます。」
だそうです。
いや、見直した!
マイクロソフト。
おまえ、そんなやつじゃなかったじゃん・・・
654 :
デフォルトの名無しさん :03/07/29 23:21
変に良心的になると怖いなw
締め切りは単に急がせるだけのものであって。
MSは昔から、「自社ソフトの」デベロッパに対しては、結構優しいよ。
ツールバーを縦にするとボタンのイメージが表示されない。なんでだ?
C#の限界だからだろ。少しは頭の回線繋ごうよ。
Load 時に、 toolBar.ButtonSize = new Size(25,21); と、変えてみると表示された。 Autoでのサイズ計算にバグがあるらしい。
663 :
デフォルトの名無しさん :03/07/30 15:35
>>662 CSharpの限界だろ。ごまかすなってw
よく考えたらやっぱオレの限界ですた。 みなさんすみません。
>>665 偽者ウザい。
国内屈指の切れ者の俺にそんな限界があるはずないだろうが。
少しは頭の回線繋げって言ってるだろ?
>>オーメン お前も偽者じゃねーか。 国内屈指の頭の回線切れまくり野郎が。
自分で読み返してみたら、頭の回線とか意味不明なことを 言い続けてますた。 すみません。もう来ません。
>>668 もう少しそれっぽくしろよ、偽者君。
あ、君の頭は手遅れだから成長なんてできないか。
頭の回線がでるふぁいですた。 スマンコ
>>669 オレの頭も手遅れのような気がしてきますた。
もう来ません。
namespaceに直接ぶら下がるmethodが定義したい今日この頃。 namesapceがclassを継承してたら良かったのに。
限界がまた一つ増えていく。
>namespaceに直接ぶら下がるmethod アホか
677 :
デフォルトの名無しさん :03/07/31 10:47
C#でもAPI使えますけど、宣言がけっこう大変ですよね。 VB6には、間違いも多かったらしいですけど、WIN32API.TXTっていう API利用のための宣言方法を書いたテキストファイルがありましたが、 C#ではそのようなものは用意されていないのでしょうか。 または、代替となるサイトといったものはありますか? ご存知の方、よろしくお願いします。
>>676 stringとかintを操作する自作のユーティリティー関数を
MyNameSpace.MyClass.MyMethodなんて
名前を付けなきゃならないのはやたら冗長でめんどいよ。
C#でWin32API使うくらいなら、ネイティブ専用ので作った方が良いよ
ネームスペースってコード書くときにわかりやすくするだけの仮想的なもので、 ILに落とされるときはクラス名の一部になっちゃってるんじゃないの?
>>679 それはそうだと思うんですけど、たとえばGDI+って、描画系APIと
同じことができてもかなり遅いですよね。
APIを使うことで速くなるかどうかっていうのは試してないんですが、
使わざるを得ない場面ってまだあるんじゃないかと思うんですが。
682 :
デフォルトの名無しさん :03/07/31 11:18
>>677 C#版APIViewer公開してるサイトあるよ
>>682 (・д・)!
そのサイト教えていただけますか?
聞く前にぐぐれ 一発でヒットする
>>678 using するか、vb.net を使いなはれ
688 :
デフォルトの名無しさん :03/07/31 11:48
>>689 キタ━━━━(Д゚(○=(゚∀゚)=○)Д゚)━━━━━!!!
ありがとうございます!
こちらはそのものズバリですね。
早くなるまで我慢汁
おかげさまで無事にAPIのPolygonが呼び出せるように なりましたが、GDI+のDrawPolygonよりもはるかに時間が かかるという予想外の結果になりますた (・ω・) イミナカッタ・・・
へーそーなんだー
>>692 人柱ご苦労様です
あやうく挑戦するところでした(w
垣間見えた限界への挑戦は失敗に終わったか…
696 :
デフォルトの名無しさん :03/08/01 02:50
stringクラスを継承して、MouseDownイベントを追加したいんですが、どうやったらいいですか?
697 :
デフォルトの名無しさん :03/08/01 02:56
麦茶クラスを継承して、一気飲みイベントを追加したいんですが、どうやったらいいですか?
おかしいのは全部が限界君ですのでスルーで。
そもそも破損したDNAの再構築すら出来ないプログラミング言語なんて全て終わってる。
>>699 バスジャックイベントも忘れずに実装してください。
基地外、氏ね
>>694 できれば挑戦してもらえるとうれしいのですがw
POINTの個数によっても結果は違ってくるでしょうしね。
自分はPOINT500個のポリゴンを繰り返し描画する処理で
テストしました。
C#の限界が垣間見えました
>>706 お前(というか、そのコピペ?)、山崎渉並にうざい。
708 :
デフォルトの名無しさん :03/08/01 10:39
[DllImport("wnaspi32.dll")] private extern static void SendASPI32Command(ref SRB_HAInquiry srb); [StructLayout(LayoutKind.Sequential)] struct SRB_HAInquiry { public byte SRB_Cmd; public byte SRB_Status; public byte SRB_HaId; public byte SRB_Flags; public uint SRB_Hdr_Rsvd; public byte HA_Count; public byte HA_SCSI_ID; public byte HA_ManagerId; public byte HA_Identifier; public byte HA_Unique; public ushort HA_Rsvd1; } static void Main() { SRB_HAInquiry asa = new SRB_HAInquiry(); asa.SRB_Cmd=0x00; asa.SRB_HaId=0; SendASPI32Command(ref asa); } }
709 :
デフォルトの名無しさん :03/08/01 10:44
と言うようなASPIコマンドを実行するための物を頑張ってみたのですが HA_Identifierは本来はbyte配列みたいで BYTE HA_Identifier[16]; // ホストアダプタ名称(R) aspi32.hではこのように定義されていました。 ただ、Win32 APIやDLL関数から配列(byte文字列)を受け取る方法がちょっと 分からないんですが何かそういった点に関する事知ってる方居りませんでしょうか?
vc#std \12000買おうかな
>>709 ってことは、DLL の宣言での引数は BYTE* ?
なら、IntPtr に、Marshal.AllocHGlobal() した値を入れてやればいいんでない?
別にグローバルヒープにおいても問題ないだろうし。
712 :
デフォルトの名無しさん :03/08/01 20:17
質問おながいします。 コマンドプロンプトからC#コンパイラを使いたいのですが cscと打っても見つからないと叱られます。 どうすればいいでしょうか?
正しくインストール
スタートメニューの"Visual Studio .NET コマンド プロンプト"を実行する。
>>714 ありがとうございます
できますたーTT
EXCEL操作に関する質問をさせて下さい。 Excel.Application app = new Excel.Application(); でエクセル自体は開けるのですが、指定したファイル名のxlsファイルを 開くのはどうすれば良いのでしょうか? Excel.Workbook book = app.Workbooks.Open("C:\\test.xls"); とかやってみましたが、引数1個のオーバーロードがないと怒られました。 C#に関するヘルプはあまり親切には書いてないようです。 ご存知の方はよろしくお願いします。
>>716 C#と関係ねえよ、そういうの。
VBA関係で調べな。
>>716 COMで省略可能な引数には Type.Missing を渡せばよろし。
>>717 , 718
即答ありがとうございます。
ファイル名の引数の後に Type.Missing でダミーの引数を渡せば
良いということでしょうか、まず試してみます。
適当に引数を複数渡してみましたがうまくいかないようです。 VBAならapp.Workbooks.Open("C:\\test.xls")で開けるようです。 C#で使う場合は何が違うのか…もうちょっと検索してみます。
721 :
名無しさん :03/08/01 23:50
>>720 string path = @"c:\test\hoge.xls";
Process.start(path);
じゃだめ?
722 :
721(再) :03/08/01 23:56
string path = @"c:\test\hoge.xls"; System.Diagnostics.Process.Start(path);
723 :
デフォルトの名無しさん :03/08/02 00:41
ネットや書籍で探したデリゲートのサンプルコードで、 デリゲートが参照する関数のスコープが全てstaticのようなんですが、 これは 「デリゲートは自身が参照するオブジェクトのクラスについては関知しない」 ということでstaticで宣言せよということなのでしょうか? よろしく、ご教示くださいませ。
724 :
デフォルトの名無しさん :03/08/02 00:42
インスタンスが多数生成されるならstaticな方がメモリ節約
こいつのFunc1,Func2をstatic意外にすると動かないんですよ(;-_-) [STAThread] static void Main(string[] args) { Delg a,b,c; a = new Delg(Func1); b = new Delg(Func2); c=a+b+b; CallDel(c,"33333"); Console.ReadLine(); } static void CallDel(Delg d,string str) { int ret = d(str); } static int Func1(string str) { Console.WriteLine("test1:" + str); return str.Length; } static int Func2(string str) { Console.WriteLine("test2:" + str); return str.Length; }
あ、宣言はこれ delegate int Delg(string str);
>>727 そりゃ当然。
非 static メソッドの場合、例えば、
class Sample
{
int Method(string str){ return 0; }
}
・・・
Sample s = new Sample();
Delg a = new Delg(s.Method);
ってしないと駄目。
>>730 同じクラス内なのに何故だろう...?タコですいません。
もう一回リファレンス呼んでみる。
確かに非 static メソッドの場合、別のClass内にメソッドが定義してある。?
あ。基本がまったく分かってなかった。 「デリゲートのインスタンスは、全ての型のオブジェクト のインスタンスメソッドと静的メソッドを参照できる」って書いてあった。 ~~~~~~~~~~~
(^^)
staticの意味が分かってないんだろうな。
735 :
デフォルトの名無しさん :03/08/02 15:05
C#でSWFを再生するにはどうすればいいですか?
どうだろね。
>>735 メディアプレイヤーのActiveXコントロールを使う。
実際はブラウザなわけだが。
VC#2003単体って存在する? VS.NET2003ってエディタの補完機能などがかなり強化されてるそうなので、 VC#買うにしても 2003版が欲しいのですが。。
741 :
デフォルトの名無しさん :03/08/03 17:24
ukamen.hp.infoseek.co.jp/Programming/Interop/index.htm ここを参考にC#でReadProcessMemoryを使いたいのですが [DllImport("kernel32.dll", EntryPoint="ReadProcessMemory")] public static extern BOOL ReadProcessMemory( HANDLE hProcess, // handle to the process LPCVOID lpBaseAddress, // base of memory area LPVOID lpBuffer, // data buffer SIZE_T nSize, // number of bytes to read SIZE_T * lpNumberOfBytesRead // number of bytes read ); こんなふうに書いてみたんですがコンパイルエラーで 引数の型が見つからないと言われてしまいます。 どなたかReadProcessMemoryを使える方法をご教授くだされ
>>741 そのサイトの
>5.プラットフォーム呼び出しのデータ型
>>742 ありがとうございます。かなり近いところにあったんですね。
でもそこを参考にHANDLEだけはvoid*にできたんですが
「unsafeコンテキストでのみポインタを使用できます」
とビルドエラーで怒られます。ヘルプで調べてもunsafeコンテキストなんて
説明されてない…
あと残りの引数(LPCVOIDなど)は表には書かれてなかったので
結局わかりませんでした。
MSDNのリンク先もなにか関係ないページに飛ぶし…
なかなかひとすじなわではいかないですね。
どこだったかなー。C#のサンプルで、マインスイーパの地雷を全部読み取る ってのがあったな。 ということで、キーワードを元に探してみれ。
>>743 IntPtr
>ヘルプで調べてもunsafeコンテキストなんて 説明されてない…
そんなこと無い
>>マインスイーパのメモリリード ありがとうございます! www.codeproject.com/csharp/minememoryreader.asp?print=true ここで見つかりました。 クラスがそのまま使えそうなのでこれを見ながら 精進します
VisualC#.net無いとActiveXコントロール使うの無理ですか?
MenuItemにはOwnerDrawプロパティがあるのにListViewItemにはない。 ListViewの描画を独自のものにしたいんだけど無理ぽ? MFCならできたのになぁ。
>>751 そうなんだよなあ、、、。
直接WndProcでメッセージを受け取るサンプルならあったけど、まんどくさいんで諦めた。
やっぱWndProcか・・・ まんどくせー、けどやってみるよ・・・ サンプルある場所しってるなら教えてほすぃ。
Visual Jに存在の意味はあるのでしょうか?
>>756 過去の Java 資産を .NET Framework 上で活用するため。
FieldInfo からは、GetValue() で値が取れるのに、 EventInfo からシリアライズ用の値を取る方法はないのでしょうか? GetFields()にeventも入ってくるとの説もありますが、 やってみた所、入ってこないようです。
そりゃC♯の限界って奴だぜ。
イベントは、実は単なるリンクリストのポインタなのだ。LightWeightである必 要からそうしてあるのだろうが、その分他と生成消滅のタイミングが違ってしま う。今のところ、宣言したクラス内で直にシリアライズするしか(カスタムでは) 方法はないと思われる。
761 :
デフォルトの名無しさん :03/08/09 16:03
どなたか、VisualStudioのWindowsプロジェクトにて作成されたEXEファイルに、 アイコンを埋め込んで、それを公開する方法をご存知の方はいらっしゃいませんでしょうか? 具体的には、そのEXEファイルのショートカットを作成した時にですね、 そのショートカットの「アイコンの変更」でそのEXEを指定したまま、アイコンを変更できるようにしたいのです。 アイコンをプロジェクトに追加して「埋め込まれたりソース」にしてみたり、 resourceファイルを作ってみたりしたのですが、 方向が全く違っているようで、「下の一覧からアイコンを選択」には1つしか表示されません。 よろしくお願いします。
>>762 了解です。ありがとうございます。
ちょっと.NET Framework SDKのツールをしらみつぶしに調べてみます。
「Visual Studioからは無理」とは、cscでコマンドラインからコンパイル(/win32res:)すれば可能、と言う意味だったんですね。 あと、VisualStudioIDEでEXEファイル自体を開いて、 強引にアイコンリソース追加する、と言う方法も見つけましたが、 厳密名をつけている場合は、当然アウトです。 リリース時はant - cscでコンパイルするようにしてみます。 ありがとうございました。
765 :
デフォルトの名無しさん :03/08/10 14:14
絶対に来ることのないswitchのdefault部に制御が来たら 何かエラーを発生させたいのですが、どんな例外を投げればいいでしょうか。 できればAssertは使いたくないです。
最後の case を default にする
767 :
デフォルトの名無しさん :03/08/10 15:01
"11010"を26に変換するものはありませんか。 1文字ずつ変換していくのは時間がかかりそうなので。
コーディングの時間ですか? その程度書くのにたいした時間はかかりませんよね。 実行時間ですか? 貴方の書くコードは他の人に比べてそれほど遅いのですか?
>>767 Convert.ToInt32("11010", 2)
>>770 ありがとうございます!
Convert.ToInt32にそんなのがあったのは知らなかったもので・・・
773 :
デフォルトの名無しさん :03/08/10 16:59
>>765 switch文でチェックしている内容によるんでは?
例えば、メソッドの引数に値に応じて分岐しているなら、
ArgumentExceptionだろうしさ。
「C#デザインパターン」買うつもりで書店に行ったが getName(), setName()と単なる焼き直し版に萎え萎えでやめた。 Don Boxの本はさすが。
775 :
デフォルトの名無しさん :03/08/10 19:52
これもっと短くなりませんか? string[] s = {}; textBox1.Lines = s;
string[] s; a.Lines = s;
textBox1.Text = "";
textBox1.Clear();
Close;
すべて無に
781 :
デフォルトの名無しさん :03/08/11 02:46
Process.Start()メソッドで他のアプリを起動させるときに画面に表示させないで、 裏で起動するにはどうすればいいのでしょうか? 具体的には、コマンドプロンプトが表示されないようにしたいんです。
785 :
デフォルトの名無しさん :03/08/11 03:46
あるクラスが定義されているソースコードのフルパスを取得する方法はありますか? 取得したいのはソースの存在する開発中のみです。
C#で製作したアプリ同士で配列のやり取りがしたいのですが可能でしょうか?
すみません。質問させてください。
シリアル通信を使ったプログラムを作っています。
MSCOMM32.OCXをコピーしてMSComm コンポーネントの参照設定をしても「クラスを使用する使用許可がありません」
とエラーになります。
Runtime版からコピーしたためでしょうか?
また、過去ログ
http://pc3.2ch.net/tech/kako/1019/10195/1019533942.html の332にMscommとAPI以外にStreamを継承すれば使い勝手がよくなるとのことですが
具体的にどのようにやっていけばよろしいでしょうか?
もしよろしければ、参考になるサイトをお教え願いませんでしょうか?
申し訳ありませんがよろしくお願いします。
789 :
デフォルトの名無しさん :03/08/12 13:13
C#の構文では新規インスタンスの作成で new Form() とカッコを必要としますが何かメリットがあるのでしょうか?
790 :
デフォルトの名無しさん :03/08/12 13:15
>>791 ありがとうございます。
new Form
という構文を認めても別にイイと思ったのですが。。。
>>794 「引数なしのコンストラクタを呼び出す」
ってのが明確になる。
>>795 なるほど!
納得です。ありがとうございます。。。
C#で書いたDLLは他の言語で書いたプログラムから読み込めないのでしょうか? 関数をexportする時などどうすればいいのでしょうか
>>797 .NET Framework 上の言語ならそのまま呼び出せる。
もしくは、COM Interop を利用して、COM が使える言語から呼び出す。
>>799 嫌なら、C でも FORTRAN でも、好きな言語を使いませう。
#800ゲトー
>>798 既にある現状のプログラムにプラグインという形で開発したいのですが
そう言う場合は無理ですか?
>>801 たとえば、Becky のプラグインとかを例にすると、Regular-DLL でないと
だめなわけ。そうなると、関数のエクスポートができない C# では無理。
その場合、MC++ か、COM 呼び出しが使える言語でラッパを書かないとならない
だろうね。
>>801 C#でも関数エキスポートできまっせ。ただし少々ILを操作するけど。
かなーり昔の過去ログに出てた。
Hashtableのキーと値の組を一つ一つ見ていって 値を変更する方法ってありますか? たとえば先にキーと値をいくつか設定しておいて、あとでそれぞれの値を2倍にしたいときとか。 IDictionaryEnumerator使うと変更したときInvalidOperationException投げられますよね
>>805 for (int i = 0; i < hash.Keys.Count; i++)
{
string key = hash.Keys[i];
hash[key] = "hoge";
}
とか
>>805 Hashtableがなんで「ハッシュ」なのか知ってるか?
どうして?どうして?どうしてこんなにDeSerializeが遅いのか? new が遅いのか?それとも、ポインタ参照を再構成するところで、 オブジェクトの数が多いと動かないつくりになっているのか?
ハッシュの意味がねー
3000個 2s 6000個 4s 9000個 7s 12000個 19s 15000個 35s 一万個を超えると指数的に悪化する…
>>811 いや、その数値だとせいぜい2乗か3乗オーダーだろ。
揚げ足取りスマソ。
1~2万個のオブジェクトのDeSerializeでグラフ解決処理が根をあげている としか考えられん。特に変なものを食わせているわけではないのに。ちなみに VC++はその程度ではびくともしない。どうしたものか。
どうやらCSharpの限界のようですね。
>>806 使えませんでした
「error CS0021: 角かっこ [] 付きインデックスを 'System.Collections.ICollection' 型の式に適用することはできません。」
結局応急的にClone()で複製を使ったり。
よく考えたら自分のプログラムにHashtableを使う必要性はあまりありませんでした。
でも任意のキーから値を呼び出せるデータ構造で、要素全てを見ながら要素に変更を加えたいときは
何を使えばいいんでしょう?
>>815 あ、Keysはインデクサ使えなかったのねスマソ
ハッシュドビーフだから
かゆいところに手が届かない。
誰か、高速なBinaryFormatterを作ってくれ。
C#でパソコン作ってます
822 :
デフォルトの名無しさん :03/08/14 10:34
stringのみを保持することを明示したArrayListは宣言できますか? それはgeneric待ちですかね。
ArrayList<string>
ArrayListの派生でStringArray作って インデクサだけ書いてキャストすりゃいいんじゃないの?
>>822 System.Collections.Specialized.StringCollectionクラス
日本語が不自由な人が多いですね
MONOのBinaryFormatterを試してみた。ちょっと遅くなった。が、ちゃんと動くのはすごい。
>>827 今更って感じなんだけど。
その仕様、1年位前から出てるし。
M$ 公式サイト上で日本語になったのはこの文章が初だっけ?
throwsのサポートが抜けとるな。
831 :
デフォルトの名無しさん :03/08/14 22:19
押されたキーに対するキーコードを テキストボックスに表示したいのですが、表示できずに困っています どこが間違っているか or どうすればよいかを教えて頂けると大変助かります 現行のソース private void textBox1_KeyPress( object sender, System.Windows.Forms.KeyEventArgs e) { textBox1.Text = "keycode=" + e.KeyCode; e.Handled = true; }}
e.KeyCode.ToString()
>>832 レスありがとうございます。
ご指摘頂いたように修正してみましたが、変化なしでした。
症状をきちんと書いていませんでした。すいません。
症状:
textBox1でどのキーを押しても、
その文字や数字が表示されるだけで、
keycode= すら表示されません。
よろしくお願いします。
>>833 イベントはちゃんと登録されてんの?
textBox1.KeyPress += KeyEventHandler(textBox1_KeyPress);
KeyPressイベントはKeyPressEventHandler(Args)じゃないの? KeyDownなら、KeyEventHandler(Args)だけど。
>>834 ,
>>835 ありがとうございました。
・イベント登録していなかった。
・KeyPressでなくKeyDownを使うべきだった。
ということで、無事目的を果たすことが出来ました。
本当にありがとうございました。
>KeyPressでなくKeyDownを使うべきだった。 なぜだ。
>837 KeyPressだとKeyCode(プロパティ?メソッド?)が用意されてないようだったので。
うそこけ
KeyPressとKeyDown違いはわかってるか?
841 :
デフォルトの名無しさん :03/08/15 03:53
改行コードが \r のテキストファイルはどうやって読み込むの?
一つの文字列として読み込んでSplitすりゃいいんでないの
エェーStreamReaderの実装をどうにかしてよ
>>841 TextReader の説明を見ると、
「行は、キャリッジ リターン (0x000d)、ライン フィード (0x000a)、
Environment.NewLine 、またはストリーム マーカーが末尾に
付いた文字シーケンスとして定義されています。」
とあるから、そのままでも \r で改行するテキスト読めるはず。
憶測でしゃべんな
StreamReader のドキュメントが糞!! StreamReader.ReadLine なら桶!! でも、StreamReader.ReadToEnd だと駄目だよママン!!
ためしにStreamReader.ReadToEndで\r改行のテキストを読み込んでみた。 普通に\r改行の文字列になった。ま、勝手に\r\nに置き換えられるのは問題だしな。 ……で、850にはこれの何が問題なの?
852 :
デフォルトの名無しさん :03/08/15 19:12
ageeeee
853 :
デフォルトの名無しさん :03/08/17 04:53
Application.UserAppDataPath で取得したパスにデータを置くことを考えていますが 実際に得られるパスは :'C:\Documents and Settings\USERNAME\Application Data\会社名\製品名\1.0.0.2' と末尾のリリース・ビルド番号まで含まれてしまいアプリケーションをリビルドするたびに パスが変わってしまいます。実際にはAppDataPathはどう使うのが現実的なんでしょうか? 文字列処理を加えてバージョン番号をMajor.Minorに切り詰めるか バージョン番号全体を切り捨てるなどとすればよいですか?
855 :
デフォルトの名無しさん :03/08/17 07:39
最近C#はじめたんですがvectorやlistのような後からサイズを拡張できるようなコンテナは何があるでしょうか?
System.Collections
バージョンごとにデータを保持した方がユーザー的にはいいんじゃないの
Stringをintに変換するのどうやんの?
Converter
861 :
デフォルトの名無しさん :03/08/17 13:40
ツールバー用の16x16のビットマップファイルはないのでしょうか? (たとえば保存のフロッピーや検索の双眼鏡など) ローカルのフォルダを検索してもサンプルフォルダの下にいくつかあるだけでした。
>>861 エディションによるのかもしれませんが、
C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Graphics
の下にあります。
864 :
デフォルトの名無しさん :03/08/17 14:46
ArrayListなどライブラリの使い方などを解説した本でいいのはなにでしょうか?
867 :
デフォルトの名無しさん :03/08/17 17:50
C#で、文字列を 全角変換、半角変換、ひらがな変換、カタカナ変換を行いたいのですけど、 どうすればできるでしょうか? Stringクラスにはそれらしきものがないですし。
>>868 どうもありがとうございます、参考になりました。
870 :
デフォルトの名無しさん :03/08/17 19:35
VBのおかげだな
微妙だな Microsoft.VisualBasic は使うべきでないような それにしても中途半端なフレームワークだ
>>871 いきなり何でもかんでも作ろうとするよりは、
既存のリソース使い回しの方がバグは減っていいだろ。
そのうち充実してくるんじゃない?
874 :
デフォルトの名無しさん :03/08/17 21:23
C#ってVB.NETみたいに、Ctrl+スペースキーの入力メンバ表示機能がどこでも効かないのですけど、 VB.NETみたいに何処でも表示できるようにする事はできるでしょうか?
>>874 VB の方知らないんだけど、「どこでも」って?
最初の一文字打ってから Ctrl+スペース押せばいいんじゃないの?
877 :
デフォルトの名無しさん :03/08/17 21:39
>>875 例えばVB.NETだと、MessageBoxを記述している時、
MessageBox.Show("キャプション", "タイトル", ←のコンマを入力した段階で、MessageBoxButtons列挙体が
表示されるんですけど、C#だと表示されないんです。
どこかの設定か何かで表示できるようになるとかがあるのでしょうかね?
誰か知っている人はいるでしょうか?
>>876 自分のはVC#では無理です。(VB.NETならできます)
何か設定とかしましたかね?
C♯はVB.NETのおまえけのようなものなので我慢してください。
>>877 なぜVB.NETでできるのか知らないけど
Showの第三引数には文字列が入る可能性もあるから
自動的にMessageButtonButtonsを表示することができないんじゃないの。
なのでM、Ctrl+SpaceでMessageBoxButtons.OKを補完するしかない。
あらこんなところにC#の限界が。
ワロタ 関係ねぇ
どうやらVB.NETのようにはVC#だと無理みたいですね。 自動メンバ表示を出すのも、何か文字を一文字でも入力していなければCtrl + スペース で表示されない場所が多いですし、表示したとしても、例えばMessageBoxの第3引数だと ボタンを指定しますけど、Ctrl + スペースでのメンバ表示だと、MessageBoxButtons列挙体 以外の全然関係ないメンバまで表示されてしまいますし、これだと完全に憶えていないと 戸惑うような気が・・ それにちゃんと憶えていないと目的のメンバを探すのに時間がかかり ますね。 VB.NETだと、さっきのMessageBoxの第3引数だと、自動メンバ表示の一覧に MessageBoxButtons列挙体しか表示されないから、完全に型名などを憶えて いなくても全然OKですからかなり便利だと思いますし、コードの記述速度も圧倒的に 速く入力できる気がします。 この点を考えると、VC#は嫌がらせにしか思えない所があるかもしれないですね。
うーん、インテリセンスってうざいって思ってる人も多いし、 客層考えてどこまで補完するか言語ごとに変えてるとか。
>>884 逆に文字列型の候補が切り捨てられるのは不便じゃないの?
あるいはmybuttonとかさ。続きはVS.NETスレでやったら。
VB.NETではできないVC#.NETならではのインテリセンスもあるわけで どっちがどうと単純には言えないレベルだけどな。
この不毛な言い争いに勝つと何かいいことがあるの?
人それぞれ好みがあるので、これが絶対みたいな事は言えないですけど、 オプションに設定くらいは用意してくれていても良かったのではと。
好みってVB.NET方式の方が良いに決まってるだろw
どう考えてもC#の方が自然じゃねーかw って言うかVS版行け。
絶対にVB.NETの方がいいよ。 コード入力するのにC#で20秒かかったとしたら、VB.NETなら10秒以下。
>>892 どっちがいいかなんて、人それぞれ
少なくとも自分はC#.NETの方式でも不満はない
てか、すれ違い
>>885 インテリセンスがうざいと思ってる人が多い?
ソースキボンヌ
どちらかといえば少ないと思ってます
>>894 ソースはないだろw
でも一定数いるのは確かだよ。
MONOのソースを改造して、参照解決しないBinaryFormatterを作成。 第一段階では、参照解決の必要のある親オブジェクトのみ通常のSerializeを行い、 第二段階で、作成した単純型BinaryFormatterで残りを復元する、という方式にした。 2万件で1分以上読み込みにかかっていたのが、7~8秒になった。一応成功といえるだろう。
なぜVB.NETを使わないんですか?
899 :
デフォルトの名無しさん :03/08/18 09:22
ビット演算子の使い方がよくわからないのですがどういうときに使うといいんでしょうか?
元々日本語使いだから
INIにデータ保存したいんだけど、手軽に出来ないの?
903 :
デフォルトの名無しさん :03/08/18 13:21
C#は、VB.NETの標準モジュールに記述した変数やメソッドみたいに、クラスに属さない 変数やメソッドを作る事は可能でしょうか?
>>899 ビット操作をするとき。フラグとか。ビットシフトはほとんど使わないね。
>>902 誰からが作ったそういうクラスを探すと吉。
>>903 できません。
905 :
デフォルトの名無しさん :03/08/18 13:36
VB.NET見下してるC#厨がVBのネームスペース使ってるのを見ると笑っちゃうね。 そんなことするなら最初からVB.NET使えよと。 C#よりVB.NETのほうが生産性に優れるってのはもう分かってるだろ?
>>902 HashtableとRegex使えば1日で自作できそう・・・といいつつ自分もまだ作ってない
>>902 .NETなら、INIファイルよりもXMLファイルとしてで読み書きする方がラクチンだよ。
既存のINIファイルを操作しなきゃいけないならしょうがないけど。
>>902 DllImportすれば手軽ではあるが。
>>902 またINIかよ。
XMLSerializerしらべれ。
VBのネームスペースを使うC#厨などいない
914 :
デフォルトの名無しさん :03/08/18 15:19
前置インクリメントと後置インクリメントを区別してオーバーロードできないんですか?
C#ってなんですか
CとかC++とかとはなんか違うんですか 名前にてるけど
>>917 言語の文法が違います。
英語とドイツ語は違うのと同じ。
「おはようございます」と書いても、英語と日本語は書き方が違う。
>>917 つか自分で調べるなり本買うなりすればいいやろ。
興味あんならそれくらいやれ。ないならここで聞かないで沈黙してろ。
920 :
デフォルトの名無しさん :03/08/18 17:01
>>917 C++は
cout << "おはようございます" << endl;
C#は
Console.WriteLine("おはようございます");
>>919 しかしこのスレのスレタイからすれば、スレ違いでも無いと思うが。
あらゆる質問のほとんどは自力で調べればどうにかなるものだろうし。
本買えば大抵の事は解決するしな。
C や C++ プログラマは、基礎となるプラットフォームの機能にアクセスできるパワーを持ち、 高速なソフトウェアの開発が行え、既存のソフトウェアのと統合も可能で、 さらに、必要があれば低レベルのコーディングもできる環境を望んでいます。 このようなことから、Microsoft は C# (「しーしゃーぷ」と読む)と呼ばれる、新しい言語を作成しました。 C# は C++ のパワーと柔軟性を持ち、同時に Visual Basic などの生産性の高さも持ち合わせる言語です。 C# は第一印象としては「Java のぱくり?」と言った感じに見えるのですが、 実際には「Java と C++ と VB のいいところを集めてきたような言語」と言った感じです。 某サイトからコピペしてみた。
これからプログラミング始めるならC#が良い? なんか良い所ばっかりの言語みたいだけど、欠点とか弱点は無いのかな。
>>923 今のところ、遅いってのと、他のプラットフォームでの実用性がない(細々と移植は
進んでるけど)ってのが、欠点らしい欠点かな。
C#遅いのか・・・ 開発に時間はかかってもC++で頑張ったほうが良い物が出来るって事?
Quake II .NETだとネイティブの85%くらいのパフォーマンスらしい。
>>925 いい悪いの基準は、速度だけじゃないから。ゲームだとかパッケージベースのアプリ
だとかを除いて、開発効率のほうが求められることが多いと思うよ。
C++で頑張った方がいいものが出来るってのは否定できない。 やる気があるならそうすればいい。
アセンブラで頑張った方がいいものが出来るってのは否定できない。 やる気があるならそうすればいい。 アフォ?
>>929 確かに、無理やり話を極端にするその姿勢はアフォだね。
C#最強説を垂れ流しているスレはここですか?
そんなことを聞いてるレベルじゃC++でもasmでも大した速度差はでないと思うが
今時アセンブラで何が出来んだよアフォwwwwwww
Application.EnableVisualStyles() って効かないときあるよな?
TabControlのTabSheetなんかは対応してないみたいだね
936 :
デフォルトの名無しさん :03/08/19 01:07
入門者です、質問があります。 Form2からForm1上に存在するTextBox1のTextプロパティにアクセスしたいのですが、 Form1.TextBox1の記述は無理のようです。 どうすればアクセスできるでしょうか?
>>992 そのサイト、前半2段落は M$ の資料和訳しただけだけどな。
その文章書かれた当時は日本語資料なくて、和訳されただけでありがたかったが。
>>936 1. Form1 に TextBox1.Text を書き換えるようなパブリックプロパティを作る。
2. Form2 作成時に Form1 のインスタンスを渡す。
3. Form2 のメソッド内で 1. で定義したプロパティを呼び出す。
>>934 Application.EnableVisualStyles()すると、ToolBarやTreeViewとかでImageListのイメージを表示できない。
オレだけ?
うん
940 :
デフォルトの名無しさん :03/08/19 07:07
// ----- Save部 ----- Stream s = File.Open(Application.ExecutablePath + ".xml", FileMode.OpenOrCreate); SoapFormatter sf = new SoapFormatter(); sf.Serialize(s, Left); // LeftをTopより先にセーブ sf.Serialize(s, Top); s.Close(); // ----- Load部 ----- Stream s = File.Open(Application.ExecutablePath + ".xml", FileMode.OpenOrCreate); SoapFormatter sf = new SoapFormatter(); Top = (int)sf.Deserialize(s); // TopをLeftより先にロード Left = (int)sf.Deserialize(s); s.Close(); こんな感じでやると、Save部で記録したLeftの値がLoad部でTopにロードされてしまいます。 上から順に読み込んでいるようですが、順不同でもLeftの値はLeftに、Topの値はTopにロードするにはどうすればいいのでしょうか?
>>940 同じファイルに上書きしてる。
だいたい、
xx = (int)sf.Deserialize(s);
って同じ内容を2行書いてるのに、TopとLeftに分けるなんてできるわけないじゃん。
>>940 書いた順に読めると思っているのか?
XML勉強すれ。
>>941 xx = (int)sf.Deserialize(s);
の部分は同じ値ではありませんよ。
実際に実行するとSave部で記録された値が順(Left,Topの順)に復元されます。
>同じファイルに上書きしてる。 毎回違うファイルに記録する内容じゃないので。 >書いた順に読めると思っているのか? 実際にそうなったので。 >XML勉強すれ。 何からやればいいのでしょうか? 私がやりたいことはメインフォームの位置をセーブし、次回実行時にロードすることです。
>>944 で、態々書き出しと読み出しで順番を変える意味は?
>>943 順不同でもロードしたいのに (int)sf.Deserialize(s); が同じなら判断できないのは当たり前だと
>>940 は言いたいのだろう。
同じストリームに複数Serializeしたら、同じ順番でしかDeserializeできないんじゃない?
普通XMLを設定ファイルとして(iniファイルみたいに)つかうんなら、1つクラスを作ってそれをSerializeすればいい。
>>945 順序が限られてない方が優れている方法だと思っています。(将来性)
Form1とForm2があり、Form2からForm1のtextBox1を操作したいので以下の処理を記述したのですけど、 f1.textBox1がどうもうまく機能してくれないのでアクセスできません。 どうすればいいでしょか? >Form1 に TextBox1.Text を書き換えるようなパブリックプロパティを作る。 これをしなければどうしてもできないのですかね? Form1側のクラス private void button1_Click(object sender, System.EventArgs e) { Form2 f2 = new Form2(); f2.f1 = this; f2.Show(); } Form2側のクラス public Form1 f1; private void button1_Click(object sender, System.EventArgs e) { MessageBox.Show(f1.textBox1.Text); }
たいしたこと無さそうなことなのに非常に難解ですね。 ここまでのをヒントになんとかしてみます。ありがとうございました。
private void button1_Click(object sender, System.EventArgs e) { Form1 f1 = new Form1(); MessageBox.Show(f1.textBox1.Text); f1.Dispose(); }
できました。 コントロールにオブジェクトの参照範囲を設定があったんですね。 それが既定でPrivateになっていました。Publicに変更すると動きました。
>>951 メンバ変数 textBox1 を public にするのはあんまり良くない。
textBox1.Text を書き換えるようなメソッドもしくはプロパティを書いて、
それを public にしろ。
955 :
デフォルトの名無しさん :03/08/20 18:16
hosyu
>>936 300の技を立ち読みしてみ。Formの相互参照つーのがある。
957 :
デフォルトの名無しさん :03/08/20 23:34
リソースの開放に関して教えて。 IDisposable を実装したクラスを new する回数と、Dispose()が実行される回数が同じなら大丈夫と思っていい? 今 View.Detailsの ListViewで、動的に ColumnHeaderを変える 操作をしてるんだけど、ColumnHeaderが IDisposableなんで心配で心配で昼も眠れません。 たとえば以下のようにやってます。(わかる範囲で省略) //Disposeが通るかどうかをチェックするためのクラス class UserColumnHeader : System.Window.Forms.ColumnHeader で、Dispose() をオーバーライドしておき… //テストコード ListView1.Columns.Add(new UserColumnHeader()); ListView1.Columns.Clear(); ListView1.Columns.Add(new UserColumnHeader()); ListView1.Columns.Add(new UserColumnHeader()); ListView1.Columns.Clear(); ListView1.Columns.Add(new UserColumnHeader()); ListView1.Columns.Add(new UserColumnHeader()); ListView1.Columns.Add(new UserColumnHeader()); を実行すると、アプリケーション終了までに6回オーバーライドしたDispose()が実行されないといけないですか?
>>957 それって ListView が Dispose されたときに
ColumnHeader の Dispose 呼んでくれてる気がする。
959 :
デフォルトの名無しさん :03/08/21 03:05
>>958 ListViewのDispose()では、最後の3つしか開放してくれません。
※Clear()されたColumnHeaderは、すでにListViewの管理外なので
そんなの開放する必要あるのか疑問 GCに任せちゃえばいいんじゃない
) <でぃすぽ
962 :
デフォルトの名無しさん :03/08/21 09:18
>>960 GCではDisposeされないという話をしているんです。
>>963 何のために Finallizer があるの? って話では?
this.Forcus(); これって自分にフォーカスが中るだけで、以前のフォーカスを外してくれないんだね・・・。 バグっぽいけど
>>964 サンプルでは6回ですが、実際は何度 ColumnHeaderを追加・削除するかわかりません。
なので明示的にDisposeさせたいんですが。
967 :
デフォルトの名無しさん :03/08/21 12:42
clear()でdisposeされるんじゃない?
>>969 悪いことは言わん。勝手に解放してくれるから放っておけ。
生意気言う暇があったら逆アセソースでも見ろよ。夏厨かお前?
>>970 その動作は確認してるのか?
そういう考えがメモリリークを生む気がするのだが。
GCだって万能じゃないってことをお忘れなく。
>>971 追加削除繰り返してメモリリークが本当に起こるか確かめてみたら?
対策はそれから考えても遅くないでしょ
>>971 考え?逆アセソースを見るというのは行動だぞ。
確認してるのか?じゃないだろ。お前が確認しろって言われてんだろ。夏厨かお前?
盲目的にM$を信じろと言われてもな
>>970 質問した本人です。
明示的にDisposeしたいという話なんですけど。
>>970 逆アセなんかするのはお前みたいなオタクだけ。
結局、誰も答えられないと。
978 :
デフォルトの名無しさん :03/08/21 19:50
夏厨祭り
979 :
デフォルトの名無しさん :03/08/21 19:59
ソースも公開されてないものの動作を信用しろなんて無理な話。 オプソマンセー
>>975 ColumnHeader[] hoge = new ColumnHeader[] {new UserColumnHeader(), .....};
ListView1.Columns.AddRange(hoge);
ListView1.Columns.Clear();
foreach (ColumnHeader h in hoge)
h.Dispose();
これくらいしか思いつかないが…
>>958 で合ってるじゃん。
無駄に調べてしまった。
>>976 ildasmも知らないお前はJavaでもやってろ。
Java no houga tukai yasui
javapもあるよ
>>981 だから最後に残ったColulmHeaderだけだってば
オープンソースというだけで盲目的にマンセーしてるやつうぜー
>>982 知らないとはいってない。
日本語わからないやつはJavaでもやってろ。
もうJavaなんか相手にしないでよ
生意気言ってごめんなさい、ildasmって何ですか?
993 :
デフォルトの名無しさん :03/08/22 17:40
disposeですることは、メモリ以外のリソースを、明示的に解放しなければならないとき。 なので呼び出されなくても大丈夫。
994 :
デフォルトの名無しさん :03/08/22 17:42
995 :
デフォルトの名無しさん :03/08/22 18:02
記念カキコ v(^-^*)
four
中途半端に埋めないこと
最後まで埋めること
後は任せた
とってみた
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。