C♯相談室 Part15

このエントリーをはてなブックマークに追加
1名無しさん♯

(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。


過去スレは>>2-5あたり。

関連リンク
http://onigiri.s3.xrea.com:8080/csharp/index.php?%5B%5B%A5%EA%A5%F3%A5%AF%5D%5D
2名無しさん♯:04/04/27 20:54
3デフォルトの名無しさん:04/04/27 21:06
∩( ・ω・)∩ ばんじゃーい
       ヽ|/
     / ̄ ̄ ̄`ヽ
    /         ヽ
   /  ノ'' ll ''ヽ ノ( |  
   | (●) (●)⌒ .|  
   |  / ̄⌒ ̄ヽ   |  
   |  | .l~ ̄~ヽ |   |
   |  ヽ|  u/ノ   |
   |   | /| |     |
      // | | ))
     U  .U >>3
5
>>3
(*´ー`)σ)ω・) プニ
あるメソッドから返される変数なのですが、セットされていない場合があります。
nullのまま変数を操作使用とするとNullReferenceExceptionがスローされてしまうので、
操作する前に変数がセットされているかどうか確認できるでしょうか?
>>7
if (hoge == null)
   return;
じゃまずいのかね。
9デフォルトの名無しさん:04/04/30 01:03
ぬるぽ
>>9
ガッ
.NET Framework的には
ぬるり
だよな。
127:04/04/30 01:21
>>8
申し訳ないです。返されるのは変数ではなくて配列でした。
一応、
if(test.sakusha == null) { ~~~~} /* sakushaが返ってくる配列 */
と記述はしているのですが、この行でNullReferenceExceptionがスローされてしまいます。
ぬる
>>12
>  if(test.sakusha == null) { ~~~~} /* sakushaが返ってくる配列 */

そりゃsakusha==nullのときにsakushaを参照すりゃNullReferenceだわな。
157:04/04/30 02:40
>>14
確かにその通りですよね……。
このような場合、そもそもsakushaが存在するかどのように確認したらよいのでしょうか>
~~~~ってなんだよ。
そこでsakusha使ってんじゃないの?って>>14が言ってるんだが。

まさかtestがnullとかイワンだろうな?
ド素人は恥ずかしがらずにソース見せた方が、解決もして追加情報ももらえるかもよ。
疑問点が既に恥ずかしいので、ソースがそれ以上恥ずかしいなんてことはあり得ない。
>>12
それどう見てもtestがnullだろう。
197:04/04/30 15:37
ソース自体は、
Information test = new GetInformation(config);
Console.WriteLine(test.sakusha);
Console.WriteLine(test.id);
と言った非常に簡単なものです。

Console.WriteLine(test.sakusha);の部分を
if(test.sakusha == null) { /* ここは空* / }
にしてもエラーが発生してしまいます。

test.idには値が入っているのでtest自体がnullということはないと思います。
sakushaがセットされてないときは例外をおこなさないようにしたいのですが。
207:04/04/30 16:02
すみません。
Console.WriteLine(test.sakusha);

Console.WriteLine(test.sakusha[0]);
の間違いです
で、そのGetInformationとやらの定義は?

//Informationを継承したGetInformationクラスとはまた美しくないネーミング
プロパティなのかフィールドなのか、アクセス就職誌も出てないし。
もせのタグ取得も初心者には長い道のりなんだなぁ
>>19
testがnullじゃないなら、sakushaのget{}の中でNULL参照してると思うが。
public変数だったらNullReferenceはありえないし。
ランタイムのフォントのファイナライザから例外が出るんだけど。。。

Windowsアプリでプロジェクトつくって、ボタンを配置。ボタンのイベントハンドラに

AppDomain domain = AppDomain.CreateDomain("2nd domain");
domain.ExecuteAssembly(Application.ExecutablePath);

と書く。(ここで同期呼び出しになるのは承知。)

実行して、ボタンを押すと、フォームが二つ出てくる。
新しいフォーム、最初からあった古いフォームの順に閉じると、例外が出る。


皆さんのとこはどう??
26デフォルトの名無しさん:04/04/30 21:15
はい、どうもー。

C#のいかした本を教えてもらいたいわけなんですけれども
どなたかご教授ねがえませんか?

当方は、
Cobol(8年) VB(3年) java(入門本卒業)
レベルです。あ、Cはほんのりわかります。

よろしゅっしゅー。
コボラーのサンプルが採取されました

●いじる
○いじめる
○解雇する
30デフォルトの名無しさん:04/04/30 21:35
まったくの初心者です。よろしくおながいします。

using System;

namespace ConsoleApplication1
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
Console.WriteLine("Hello World C#");
}
}
}

を打ち込んで実行したものはいいものの、
コンソールがちょっと文字を表示しただけで消えてしまいます。
CやC++ならエンターや閉じるボタンを押せば消えるのですが、
C#の場合はこれをどのように解決したらいいのですか?
3130:04/04/30 21:36
vc#.net2003環境です。
どうすればCLSに依存しない、Win32ネイティブのC#アプリを作ることが出来るのですか?
>>30
Mainの最後の行にブレークポイントを置いて、F5で実行。
>>32
>  どうすればCLSに依存しない、Win32ネイティブのC#アプリを作ることが出来るのですか?

以前DLL関連の疑問をひたすらぐぐってた時に、どっかの海外の会社の製品を見かけた。
必要なManagedのDLLを全部パッケージングしてネイティブな実行ファイルを書き出すって奴。
どこなメーカーかも値段も覚えてないけどな。
>>34
C#の優れた言語仕様を.NET Frameworkに依存せず簡単にWin32APIプログラミングで使えないものかと思いましたが、
どうやら簡単ではないようですね。ありがとうございました。
いずれにせよC#の利点の相当の部分は.NET Frameworkに依るところであると思うのだが。
3730:04/04/30 21:48
ブレークポイントとはbreakのことですか?
ってことはfor文とかでループをつくるんですかね。

無知でスマソ
今日、図書館で本を借りようと思ったら休館だったので
参考書が全くなくてC#の基本がまったくわかりません。

>>36さん

そうは思うのですが、少し古い(P3@600MHz/MEM128MBあたり)マシンではメモリ使用量が多すぎて大変なんですね。
>>37
C#だけでやるなら最後に
System.Console.Read();
てかいとけば良し。

ブレークポイントは……ヘルプ読めと。
デバッグの基本。
>>39
解決しました。
ありがとう
>>20
ばかやろー
sakusha==null なのに sakusha[0] にアクセスしたらエラーになるのは当たり前だろウンコー
つまり、ぬるぽですね
ばかやろー。
>Console.WriteLine(test.sakusha);の部分を
>if(test.sakusha == null) { /* ここは空* / }
>にしてもエラーが発生してしまいます。
>sakushaがセットされてないときは例外をおこなさないようにしたいのですが。
か。
俺的予想。
Information test = new GetInformation(config);
if(test.sakusha == null) { /* ここは空* / }
Console.WriteLine(test.id);
    :
sakusha[0] = "hoge"; // 全然関係ないところで参照してる


さっさとエラーメッセージ貼れ。それと行番号に対応するソースを貼れ。
初心者の癖に何をもったいぶってんだか。
VSでプロパティを編集するときのように、
リストビューの右項目がドロップダウンするコンポありますか?
PropertyGrid
46sage:04/05/01 18:09
ウェブアプリのテストを自動化したいのですが
C#にはjavaでいうhttpunitみたいなものありますでしょうか?
どなたか教えて下さい。
>>46
NUnitAspはどうよ?
48デフォルトの名無しさん:04/05/01 20:25
前スレでお聞きしたのですが、
解決に至らなかったのでもう一度お聞かせ下さい。
DataTable内にAutoIncrementプロパティをtrueに設定している列があります。
(仮にIDNOとする)
このDataTableをClearしてもう一度Fillすると
IDNO列に自動で割り当てられる値がどんどん増えていってしまい困っています。
再読込する毎に1から振り直したいのです。
どうすればいいでしょうか?
よろしくお願いします。
49sage:04/05/01 21:49
>>47
アドバイスありがとうございます。
NUnitAspについて詳しく調査してみます。
>>42
ガッ
参照について質問です。
C++で
int i;
int &r = i;
とやってたことをC#でやるにはどうしたらいいでしょうか。
条件によって異なる変数を扱いたいのですが。
>>51
質問が曖昧すぎると思うのだが。
流れがないことにはどうにも。
メソッドの引数に構造体の参照、ってならrefだけど。
5351:04/05/02 22:23
>>52
書いてあるとおり、そのまんまです。
参照というよりむしろポインタですね。
メソッドでの参照渡しではありません。同じブロック内で。
unsafeではない通常のコードで、ポインタ的扱いができないかなと。
変数 p で、状況によって i と j の異なる変数を指す、みたいな。
クラスでラップすればいいのでわ。
C++と違って参照はなんぼでも差し替え効くし。
>>53
状況によって最後に i に代入するか j に代入するか切り替えるのでは駄目なの?
56デフォルトの名無しさん:04/05/03 10:46
C#で作ったクラスをnamespace単位でDLL化したいのですが可能でしょうか?
originalというnamespaceに以下の4つのクラス

original.drow
original.print
priginal.write
original.run

があるとして、それをoriginal.dllとして
1つのファイルに保存したいのですが、やり方がわかりません。
>>56
その4つのクラスが書かれてるcsファイルをまとめて/target:libraryでコンパイルするだけだけど。
csc /target:library /out:original.dll draw.cs print.cs write.cs run.cs
どうでもいいがどうみてもoriginalがクラスでその4つのメソッドって名前だな。
class drow {public void do();}
class print {public void do();}
class write {public void do();}
class run {public void do();}
です。
あー、interface抽出してー。
writeだけnamespace priginalか。
>>61
drowもツッコもうぜ
>>54
>C++と違って参照はなんぼでも差し替え効くし。
よくわかりません。詳説いただければ助かります。
ラッパークラスを作るとかそこまでやらなくても、
言語の仕様に含まれていそうに考えていたんですが。

>>55
その手間を省きたかったりします。
>>63
条件によって参照先の変数を書き換えるC++コード例を示してくれないか?
6551=63:04/05/03 20:07
>>64
>>53
とゆー流れっす。
今まで必要になったことないということは今後必要になることもまず滅多にないだろうし
わざわざそんなことに頭悩ますよりは一旦普通のintに移して後で戻すな。
私なら。
>>65
良くわからんなあ。
ま、どちらにしろポインタが不可能なんだから、
似非ポインタである参照も不可能だろうな。
>>62
drowは合ってるから突っ込まなかったんだよ。
ぐあ。drawね。draw……(´・ω・`)すまん>>62
前スレ埋めようぜ(`・ω・´)
>>57
ありがとです。少し勉強不足でした。
どうでもいいがMSDNはやや上級者用って感じの文体っぽくて俺には理解しにくい
読みにくいのは単に直訳調(というか直訳そのもの)だからだと思う。
直訳ではあるがヘタに意訳するよりミスが少ないな。過去に叩かれた誤訳は多々あるが。

かく言う漏れはずっとUS版MSDNに張り付いてるけどな
C++のWin32に挫折してC#を勉強してみたが、
あまりにも習得しやすいので驚いた
76デフォルトの名無しさん:04/05/04 03:41
質問です。
MFCで作成したCWndから派生させたウインドウを
WindowsFormに貼り付けることは可能でしょうか?
厳しいとオモフ
MFCでActiveXコントロール作れたっけ?
7992:04/05/04 12:32
>>94
派生元をCWndからCOleControlに変えれば簡単にできそうです。
ありがとうございます。

ちなみに、カスタムコントロールを.NET上で作成する場合
FormのOnPainをオーバーライドして引数内のGraphics
オブジェクトを使って描画するってのが一般的なやり方ですか?
試験的にポートスキャナを実装したいんですが
GUI部分は置いておいて
ネットワーク部分はどんなクラスを使ったらいいか
見当もつきません。どなたかお知恵を!
>>80
マルチかえれ
8265:04/05/05 01:08
>>66
考え方の相違をひしひしと感じる1行半ですねえ。
結局2行目後半の方法しかなさそうでがっくりきてますが。

>>67
ないですか。そうですか。
参照やポインタ、まねごとでいいから同様の機能を
備えておいてほしかった。

ともかく、ご回答いただいた方々、ありがとうございました。
83デフォルトの名無しさん:04/05/05 01:59
どうしてもやりたかったらポインタ使えってことだろ…
意味があるのかは知らんが。
>82
いっそのこと、何でも参照が取れるPerlで(ry
85デフォルトの名無しさん:04/05/05 09:30
C#ってポインタあるの?
>>85
あるよ。
見えないけどな
個人と個人の考え方の違いではなく、
ManagedとUnmanagedの考え方の違いに見えるね。
.NETへ移行する際に捨てるべき過去の経験は多い。
パラダイムシフトってやつか。
>87
なるほどね。
もうC#以外ではプログラミングする気が起こらない趣味グラマですが・・・
C#の言語仕様にない、ということは要らない、ということだろう。
withを入れなかったのはどうか分からないけど。
>>89
withの必然性はないからね。
withなんていらないけど、テンプレートは早く使いたい。
VS2006くらいまでマテネーヨ
VS2005(Whidbey/for Yukon)には C# 2.0がクるでしょう。
9489:04/05/05 22:21
プロパティの初期化の時などはwithがあれば、と思うときもあります。
C#の言語設計者を信じるか・・・
多次元配列(ジャグでない)で、
列数、つまり一行の要素数はGetLength()で得られるとして、
行数はLength / GetLength()で求めるしかない?
結構わずらわしいんだが……。
Rankなんてなんのためにあるのかわからない。
96デフォルトの名無しさん:04/05/06 00:35
GetLengthの引数は何のために…?
9795:04/05/06 01:08
>>96
そおゆうことだったか。
ありがとう、どうやら動的な、ダイナミックな勘違いをしていたみたいだ。
対象の文字が特殊文字か通常のアルファベットや数値かどうかを
調べる方法ってあるんでしょうか?
正規表現
>>51
何がしたいのか分からないけど、場面毎によりエレガントな
手法が用意されている可能性が高い。ポインタがない分ね。
だからどういう場面か知るために、具体的なコードが求められてるのに、
>>53みたいな抽象的な回答では話にならない。

>>51は、どこに行ってもCOBOLの手法で押し通すコボラーと
同じ愚を犯している気がする。
サードーパーティ製メニューやツールバーがDLLで再配布可能で、
本体EXEとともに、普通にZIP圧縮で配布しています。
インストーラなどナシのフリーソフトです。
初心者が雑誌CD-ROM掲載でこのソフトを入手し、同CD-ROMで.NETインスコしました。

さて、再配布したDLLは本体EXE以上に大きく、
その初心者に、毎回JITで重いソフトだなぁとか思われたくないので、
ネイティブイメージをキャッシュしておけたらいいと思っています。
ngenはコマンドラインなので初心者向けではありません。
本体の初回起動時に自動でバージョンチェック等してngen相当の動作をしたいのですが、
うまくやっている方がいたら教えてください。
Mono beta1のC#実装はどんなもんですか
>>103
なんでStatus見ねえの?
ドキュメント書いても読んでもらえなきゃ書く意味ねえな。
FILETIME構造体から時刻を得るにはWin32API使うんでしょうか。
DateTime構造体とか見たけどよくわからんのです。Win32APIでないとしたら、1600/01/01で初期化して
AddMillisecondsでFILETIMEの中身を足すという方法くらいしか思いつきません。
もうちっと楽なうまい方法はないもんでしょうか。
>>105
DateTime.FromFileTime
avicap32.dllでビデオキャプチャの初期化をしたいのですが
どのように、書いていったらいいのかわかりません。
素人同然な私に教えてください。
>>107
ttp://homepage1.nifty.com/MADIA/vb/vb_bbs/200401_04010125.html
で理解できないならまだ手を出すべきでは無いかも。

>>105
ちなみにFILETIME構造体は自前で用意しなくても
System.Runtime.InteropServices.FILETIME
が用意されてる。あんまり意味無いけど。
>>108

ありがとうございます。
とりあいず、そのページ見て勉強してきます
110105:04/05/08 00:36
利用するAPIがFILETIME構造体で時刻をよこしてくるので、どうしたものかと考えてるんですが・・・。
いちお>108のSystem.Runtime.InteropServices名前空間にあることは分かっています。
FILETIMEの中身を何とかして64ビット整数値に合成してDateTime.FromFileTimeに渡したほうがいいのだろうか
>>110
なんとかするってほどのことか?
DateTime.FromFileTime(((long)fileTime.dwHighDateTime << 32) + (uint)fileTime.dwLowDateTime)
ってだけだが。

//ところでなんでこの構造体の各フィールドはintに設定されてるんだろう……?
112デフォルトの名無しさん:04/05/08 03:03
何回か書き込んだのですが、
未だに解決の糸口すら見つからないので再度お聞かせ下さい。、
DataTable内にAutoIncrementプロパティをtrueに設定している列があります。
(仮にIDNOとする)
このDataTableをClearしてもう一度Fillすると
IDNO列に自動で割り当てられる値がどんどん増えていってしまい困っています。
再読込する毎に1から振り直したいのです。
どうすればいいでしょうか?
よろしくお願いします。
ラベルなどに文字列を表示する際に、
一部だけ文字色を変更することって出来ますか?

たとえば「テストです」とラベルに表示させたときに
【テスト】という文字列を赤で【です】を黒に。みたいな。

ご存知の方よろしくお願いします。
>>112
AutoIncrementは一意の数字をつけるために使うので、
その数字にあんまり意味は無い。
どうしても思い通りの番号を振りたかったら自分で振ればいいんでない?
115win2000 + sdk v1.1:04/05/08 11:54
SoapFormatterを使ってFontをシリアライズすると、
デシリアライズするときに例外が飛んでうまくいかないのですが
どうすればいいのでしょう?

using System.IO;
using System.Drawing;
using System.Runtime.Serialization.Formatters.Soap;

class App {
static void Main() {
SoapFormatter formatter = new SoapFormatter();
Font font = new Font("Arial", 8);

FileStream fs = new FileStream("test.xml", FileMode.Create);
formatter.Serialize(fs, font);
fs.Close();

fs = new FileStream("test.xml", FileMode.Open);
font = (Font) formatter.Deserialize(fs);
fs.Close();
}
}
116最凶VB厨房:04/05/08 12:03
プロパティでラッピング・・・
117最凶VB厨房:04/05/08 12:07
コード読んでなかったわw逝って来るわ
>>115
仕様かバグらしい。
FontConverterを使うといいよ
>111
シフトという便利なのがありましたね。VB6から移行したばかりなもんで、dwHighDateTimeを
2^32倍するには・・・とか考えてました。コードまで示していただき、感謝します。
2^32は0x100000000だけどな。
121115:04/05/08 13:00
>>116-118
アドバイスありがとうございます。
名前、サイズ、スタイルあたりをばらしてシリアライズすることにします。
UNIXタイムスタンプをDateTime型に変換しようと思っています。

// hoge: UNIXタイムスタンプ
fuga = (new DateTime(1970, 1, 1)).AddSeconds( hoge );

これだと、時間にずれが生じます。
1083942000(2004/05/08 00:00:00 のUNIXタイムスタンプ) -> hoge
fuga -> 2004/05/07 15:00:00

どのように変更すればよろしいでしょうか?
>>122
>  1083942000(2004/05/08 00:00:00 のUNIXタイムスタンプ) -> hoge
が1970/1/1 0:00:00 UTCから 2004/05/08 0:00:00 UTC+0900 までの時間になってるよ。
>>123
ありがとうございます。
UTC と JST の違いに気づきませんでした。
今考えれば、時間のずれの差をみればわかりますね。
fuga = ((new DateTime(1970, 1, 1)).ToLocalTime()).AddSeconds( hoge );
126112:04/05/08 16:40
>>114
なるほど、そうなんですか。
手動で振ることにします。
とりあえずCommandTextは
SELECT 0,〜FROM TBL
としてFill時にDataTableに0を入れておいて
直後に書き換えることにします。
ありがとうございました〜。
127デフォルトの名無しさん:04/05/08 19:25
C#で、音量を調節したいと思っています。
winmm.dllを使えばいいところまでは分かったのですが
VBのサンプルコードばかりでいまひとつ分かりません。
ご存知の方教えていただけませんでしょうか。
VBのサンプルコードがあれば十分じゃないの?
C#で書き直せばいいだけだ。
>>113
1つのラベルに複数色使うのは無理だろう。
PictureBoxあるいはFormにイメージとして描くか、RichTextBox使うか。
130113:04/05/09 01:26
>>129
回答ありがとうございます。
何とか他の方法を探してみます。
ありがとうございました。
publicだけどIDEのプロパティグリッドには表示させたくないっていうことは出来ますか?
>>131
System.ComponentModel.BrowsableAttribute


プロパティグリッド使うならSystem.ComponentModel名前空間のクラスに
一通り目を通しておいたほうがいい。
133デフォルトの名無しさん:04/05/09 10:02
ボタンやラベルを追加したときに
フォントプロパティが最初から
「ms pゴシック、14ポイント」
に設定されているようにする方法ってありますでしょうか。
再帰関数使うぐらいしか思いつかん。
135ぷぷぷっ:04/05/09 11:18
Assembly.LoadFromについてちょいと教えて著。
a.exeからAssembly.LoadFromをつかってb.dllを呼び出すんだけど、
呼び出したときにa.exeのformはhideしておいてb.dllがcloseしたときに、
自動的にa.exeもcloseするなんてことできるっすか?
136デフォルトの名無しさん:04/05/09 15:57
>>133
クラスを派生させて、それぞれ設定しとけば?
137107:04/05/09 21:03
えっと、なんとかビデオを取り込んで表示させることができたのですが
逆に取り込みを中止させるようするにはどうしたらいいのでしょうか?
コマンドラインからビルドしているのですが、resxがうまく埋められません。
/res でファイルを指定すると、サイズは増えるのですが、
起動するとリソースが埋め込まれていないと叱られます。
どうやるんですか?
>>138
リソース取得部分のコードを見てみないことには何とも。
クラスとコ構造体の違いについての質問なのですが
作成した構造体やクラスの変数を
ArrayList lit=new ArrayList();
Hoge hoge=new Hoge();//自作したクラスまたは構造体
for(int i=0;i<1000;i++)
{
list.add(hoge);
}

としたときのメモリ消費量は値方の構造体の方が多いのでしょうか?
>>140
メモリサイズには影響ないんじゃなかったっけ?
まぁManagedでメモリサイズを一々気にするな。

クラスと構造体の差は、
作成・運用にかかるコスト(速度)
参照型か値型か
継承できるか
あたりが大きなポイントかな。
142140:04/05/10 07:08
>>141
構造体を変更したいときにrefで渡せないなどの場合を除いては
構造体で問題ないならオーバーヘッドの少ない構造体にしたほうがいいってことですか?
143最凶VB厨房:04/05/10 07:14
この場合クラスでは?
>>142
構造体の方が必ずしもオーバーヘッドが小さいと決まった訳じゃない。
例えばメンバが50ほどあるオブジェクトをa = bする場合
クラスの方は参照をコピーするだけで済むから圧倒的に早いしな。

大体の場合、
単純なオブジェクトは構造体
複雑な場合・継承する必要がある場合はクラス
と使い分けるのが基本。
あ〜、それ以前に140のコードじゃclassとstructで意味が変わるな。
146最凶VB厨房:04/05/10 07:22
あっw
classだとインスタンスは1個で
structはクローン大量発生ってとこか。
147最凶VB厨房:04/05/10 07:24
ん?理解がぁゃιぃ。やばい>俺
148最凶VB厨房:04/05/10 07:41
ArrayListに渡す時にstructだとクローン発生。
んでクローンがボクシング。
逆もあるのでやっぱりstructだと遅くなる。

はずw
出かけよっと
.NETのWindows API呼び出しを支援するツールがフリーで公開
http://itpro.nikkeibp.co.jp/free/NT/NEWS/20040510/4/
150デフォルトの名無しさん:04/05/10 16:08
Windows Forms の ListView で columnsHeader に表示される文字列を
中央寄せ(TextAlign = Center) にしたいのですが,
何か方法があれば教えてください.

columnHeader.TextAlign = Center とすると,ヘッダだけではなく
Item の文字列も中央寄せになってしまうし,一番最初の列は
Left 以外に変更できないようなのですが.

よろしくお願いします.
>>150
ListViewでは無理な希ガス
DBのデータをDataGridを使って表示したいんだけど
Accessのリンクテーブルみたいに最初の数行だけを取得(フェッチ)することってできないのかな?
スクロールに合わせて次の数行を取得、みたいなことなんだけど・・・

153デフォルトの名無しさん:04/05/10 23:30
>>152
MSDNでクエリ結果のページングって項目みてみ。
>>153
ページングか
これってページの管理だけができるのかと思ってたよ
「全部で20ページあって、15ページ目を表示する」みたいな使い方。
ちょっと見てみる。サンクス。
ん〜、初心者的質問で恐縮ですが・・・
たとえばFormにTextBoxをDock.Fillにして配置してます。
で、その辺のテキストファイルをそのTextBoxにドラッグして表示させるにはどうしたらいいのでしょうか?
とりあえず外からのドラッグ通知を知る方法が分からないので、それさえ分かればなんとか・・・
んっと、ついでにもう一つ質問です。
えと、例えばPenとかBrushとかGraphicsとかのDisposeメソッドが付いてる奴は
GCに任せるよりも使い終わったら明示的にDisposeを呼んだ方がいいのでしょうか?
質問ばっかりですいません。
>>155-156
色々参考になるサイト
ttp://ukamen.hp.infoseek.co.jp/

GCはメモリしか面倒見てくれない。
Disposeはそれ以外のリソースを明示的に破棄するためのメソッド。
ttp://www.users.gr.jp/ml/archive/list.aspx?name=cs&no=2500
の「げに奥深きはGCかな」の一連の流れが参考になる。
158デフォルトの名無しさん:04/05/11 14:26
Windows Forms の DateTimePicker で, Enterキーの押下で,
年,月,日へフォーカスを移動する方法があれば教えてください.
年,月,日へは左右カーソルでしか移動できないのでしょうか?
159デフォルトの名無しさん:04/05/11 17:10
すまんいまだによくわかってないんだが,多重継承ないと不便でないのか?
自分はC++でシリアライズ機能をもつウィンドウとかを作ったりするんだが,インターフェースだと派生クラスでかく必要が出てくるよね.
多重継承できると,クラス宣言だけで出来て非常に簡便なんだがどうなんでしょう?
160デフォルトの名無しさん:04/05/11 21:37
入門者向けの、おすすめの書籍を教えて。
テクニック集みたいなのじゃなくて、文法を分かりやすく説明してくれるような本。

いままで、Javaを半年ほどやっただけです。
161デフォルトの名無しさん:04/05/11 22:24
VS.NETで、ユーザーコントロールや自作コントロール使ってたら、
急にデザイナで表示されなくなったりするようになることがあるんだけど、
こんな経験している人って他にもいます?
162最凶VB厨房:04/05/11 22:42
kokoniimasu
163161:04/05/12 00:19
おお、自分だけじゃなかったか。

どうやらデザイン時にフォームに貼り付けたり、デザイナを開いたりする時に、
コントロールのコンストラクタやLoadイベントが発生しているみたいですね。
そこでエラー発生したりすると、デザイナがエライことになってしまうみたい。
とほほ・・・
>159
そこはhas-a使って委譲。まぁ、呼び出しメソッド書く手間はちょろっと要るけど。

多重継承即ち悪かと言われると漏れには分からん。まぁとりあえずC#に多重継承が
ないことは動かしようがないんで、郷に入れば郷に従うってことで。
>>160
Java半年やって、それなりに理解できてるんだったら、別にどれ買っても
いいんでない?Java半年やって、全然身についてないんだったら、どれ
買っても無駄なような気もするが。
というか、Java 半年やってるんだったら、ネットで「C# Java 比較」と検索するのが一番手っ取り早くない?
167デフォルトの名無しさん:04/05/12 21:21
高橋 麻奈 シリーズの やさしいJava ってわかりやすかったので
そういう感じの、入門者定番の書籍ってないかなぁと思ったのですが。

やっぱりC#って、CやC++からの乗り換えの人が多いから、そういう親切な本って少ないんですかね。
俺はC#->C++->C->JAVA->C#って感じに流れていったけど
(JAVAまではお遊びレベル。どの言語にするか落ち着かなかったので。)
俺は独習C#が分かりやすかったな。
C#の本じゃないけど、+オブジェクト指向開発講座ってのと結城著のデザインパターン入門が俺には良かった。
コンソールアプリ作りながらOOを勉強してからFormアプリに行くのが近道と俺は思うぞ。
大学受験の時、あんまり勉強しなかったけど、
参考書は毎日のように探しに行ったな。
MFCでPreTranslateMessageの戻り値にtrueを返して
メッセージの流れをそこで止めたのと同じことは、
どうすれば実現できますか。
mainForm1にオーバーライドしたWndProcの、
Messageのプロパティを全て変更してみましたがうまくいきません。
171デフォルトの名無しさん:04/05/13 00:22
VS.NET 2003 英語版でC#のスタンドアロンアプリを作ってるんですが、
System.Web に
AspNetHostingPermission
AspNetHostingPermissionAttribute
の2つのsealedクラスしかなく、HttpUtilityなどがないため、途方にくれています。
(Object Browserで System.Web で検索した結果)

実際、using System.Web; しても、エディタでHttp... と打っても補完してくれません。

何が悪いんだろう?? 英語版だから??
>>171
参照設定でSystem.Web.DLLを追加してやれば?
関連して独り言
参照設定でSystem.Web.DLL追加したら「using System.Web; を追加しますか?」とかなんとか、
using System.Web; と書いたら自動でSystem.Web.DLL参照設定追加
してほしいと今まで何度も思った。
174171:04/05/13 03:06
でけました。ありがとうございました。

「System.Web 見つからない」とかで必死にグーぐるしたら、@ITの会議室にも
同じ質問があった。。。
175デフォルトの名無しさん:04/05/13 03:44
>>173
無茶。
>>170
IMessageFilterを実装して、Application.AddMessageFilterで登録。
177デフォルトの名無しさん:04/05/13 07:48
>>167
そのレベルで考えるなら、JAVAを学習したあとC#をあえて学習しなおす必要はないと思う。
それより、チュートリアルの方が役に立つと。
178デフォルトの名無しさん:04/05/13 20:02
ListView にいくつか項目を追加して表示します.
項目が多い時はスクロールバーで上下に動かして内容を見る事になります.

このような時,ユーザーの操作ではなく,コードによって,
ある条件に該当する ListView の項目を選択状態としているの
ですが,アイテム自体は選択状態となるのですが,スクロールが
自動でされないので,選択しているアイテムを探すには
ユーザーがスクロールバーで選択されているアイテムをみつけるしか
ありません.

選択されたアイテムが表示できるように,スクロールバーの値を
動かしたいのですが,何か方法はありますでしょうか?
>>178
ListView.EnsureVisible(int index)
180178 :04/05/13 20:38
>> 179
できました.ありがとうございます.
Disposeもデストラクタもないけど要らなくなったオブジェクトは、
GCの対象にしたいのですが、
要らなくなったことということをどうやって書くんですか?
>>181
……GCをきちんと理解してるかね?

>  Disposeもデストラクタもないけど要らなくなったオブジェクトは、
>  GCの対象にしたいのですが、

デストラクタは明示的に呼ぶもんじゃないぞ。
明示的に破棄したいならnullを代入しとく。
183デフォルトの名無しさん:04/05/13 22:07
>>182
明示的に「GCの対象」にしたいならとかの方がいいかもね。
# 破棄という言葉を勘違いする人が多いので
0xなどで始まる16進数のstringをint32に変換する方法を教えてください。
string s = "0xFFFF";
int i = Hoge(s);
みたいな。
>>184
Convert.ToInt32(string value, int fromBase)
//あ、これ0xつけてても問題ないんだ。
MDI子フォームを親フォームの中で最大化させると
勝手にコントロールボックスついてしまうんですが、
なくすことって出来ないんでしょうか

VB6とかVB.Netならできるのに
187184:04/05/13 23:59
ありがとうございました
188170:04/05/14 00:56
>>176
いけました。ありがとうございます。
189た〜:04/05/14 14:14
教えて頂きたいことがあります。
環境:WinXP VisialC# SQLServer

現在、検索処理を作成中で、
VisualC#からSQLサーバのデータを取得するために

///ソース抜粋 Start
system.Data.SqlClient.SqlCommand commandOtherFields = new System.Data.SqlClient.SqlCommand(sb.ToString(), conn);
System.Data.SqlClient.SqlDataReader readerOtherFields = commandOtherFields.ExecuteReader();

while(readerOtherFields.Read())
{
al.Add (readerOtherFields.GetString(0)) ;
}

readerOtherFields.Close();
commandOtherFields.Dispose();

///ソース抜粋 End

と、このような感じでデータを取得しにいっているのですが、
ExecuteReaderが行われている段階(つまり途中で)
で、検索をキャンセルしたい場合は
このSQLConnection自体を切断してかまわないのでしょうか?
それともExecuteReaderのように同期ではなく非同期に
データを読むやり方があるのでしょうか?

説明がうまくないのでわかりにくいかもしれませんが
よろしくお願いいたします。
>>189
マルチポスト ハケン(・∀・)
まるぽぐらいで騒ぐか
>>191
ガ・・・
ガッ
193デフォルトの名無しさん:04/05/15 08:58
>>189
なんで、検索をキャンセルしないといけないの?
WHEREできっちり該当を絞れば検索なんてすぐ終わるんじゃない?
>>189
ExecuteReader()の実行が、人間にキャンセルできるくらいに遅いということですか?
それDBアクセス側を見直したほうが良いとおもわれますが・・・
195デフォルトの名無しさん:04/05/15 12:14
「らっぴんぐ」

ってなんですか?
分かりやすく教えて欲しいです。
>>196
下らんこと書くな。ぼけ
ほらよ。
http://www.asahi-kasei.co.jp/saran/products/saran_h/saran_h.html
Caps/Num/Kana Lockの状態はどうすれば取得できますか。
199デフォルトの名無しさん:04/05/15 16:07
C#これは買っとけ!って本ありますか?
レベルはK&R一回読んだレベルです。
憂鬱なも一回読みました。
200デフォルトの名無しさん:04/05/15 16:08
あと、独習javaも一回よみました。
重い腰を上げてC#を始めようと、入門書を買いに行ったんです。
売り場にはC#の棚もあって、数はそれなりにあってんだけど、
昔、C言語を勉強したときに読んでいた林晴比古のものがあったんで、それを選びました。
4000円。

さっき、さっそく読もうと手に取ったら
「新 Visual C++.NET」って書いてあるわけですよ。

C++.NET

俺はこのままC++.NETを始めるべきでしょうか?

ちなみに内容は読みやすそうでした。
買った本でどの言語を始めるかを決めるとは、男の中の男ですな。
>>201
C-OBOLの本でなかったことに感謝し、C++を勉強すべし
重い腰を上げて入門書を買ったにもかかわらず、切替は軽やかだなw
まあマジレスすれば、C#の方が言語の習得に使う時間は少なくて済む。四千円分以上。
仕事にしようと言うんでない限りC#のほうが良かろう。
206201:04/05/15 18:02
前書きを読んでみると
・VC++.NETの学習には労力がかかる
・異質な世界の「業界語」

とか書かれちゃってますw
なのでC#をメインで、C++は怖いもの見たさで流し読みすることにしました。

>>202-205
助言ありがとう。
動くだけのプログラム開発ならC#はかなり簡単だが、
.NET内部の不透明さや複雑さのせいで、
より速いコードを書こうとか考えると難しくなる。
機械の動きを理解できれば最終的には低レベル言語がよろしい。
FormにオーバーライドしたProcessKeyPreviewって、
なぜかComboBoxにフォーカスがあるときは呼ばれないね。
また、呼ばれるコントロールでもキーによっては
falseを返してもtrueと同じになる。
ex. Delキーはt/fで区別されるのに、BSキーはされない。
209199-200:04/05/15 19:28
だれかアドバイスください。おなかいたい。
>>209
参考書は胃薬でも精神安定剤でもない。
>>209
「C#によるプログラミングWindows」でもかっとけー。
ちょっと高いけどその価値はあるから。
212デフォルトの名無しさん:04/05/15 21:24
>>209
Helpにもウェブページにも参考書をはるかに凌ぐ情報があるぞ。
しかも、入門レベルから高度なものまで!!
なぜ、利用しない?
>>212
だね。
オレ、一冊も持ってない。
書店に行ってもしっくりくる本がない。
オレ的に不要な超入門的なものは日本語でもたくさんあるのに、欲しい本は英語版ばかり。
良い本は翻訳して欲しいなー。
214208:04/05/15 23:01
後半は誤解だった。すまね。ComboBoxのは事実。
>>212-213
>>209はプログラムが書きたいわけじゃなくて、C#の本を読みたがってるんだから
教えてあげなよ。
216デフォルトの名無しさん:04/05/16 06:59
>>215
そうねぇ。じゃ。
標準C#.NETプログラミング(1)と(2)が良いかな。
でもね。本って目的によっても、好みによっても選択肢が違うから
売れてる本を知りたいならAmazonで調べてみたら。
JAVAがわかるなら、実際に何か作ってみて「?」なところはHELPへGO!!
217209:04/05/16 08:50
どうも。

とりあえず@ITの改訂版C#入門でもやってみようと思います。
本はとりあえずあきらめました。
218デフォルトの名無しさん:04/05/16 10:50
こんにちは。
Windowsフォームを表示する際に画面の中央に表示させたいのですが、
どうもうまくいきません。いろいろ試行錯誤したソースが以下です。
なにがおかしいのでしょうか。記述はFormのInitializeComponent関数の
後ろにしています。

Rectangle tempRectangle1 = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea;
Rectangle tempRectangle2 = this.Bounds;

this.label2.Text = System.Convert.ToString(tempRectangle1.Width)
+ "," + System.Convert.ToString(tempRectangle1.Height);
this.label3.Text = System.Convert.ToString(tempRectangle2.Width)
+ "," + System.Convert.ToString(tempRectangle2.Height);
//this.label2.Text = System.Convert.ToString(System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Width);
//this.label3.Text = System.Convert.ToString(System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height);
//this.DesktopLocation.X = (tempRectangle.Width - tempRectangle2.Width) / 2;
//this.DesktopLocation.Y = (tempRectangle.Height - tempRectangle2.Height) / 2;
//this.label2.Text = this.DesktopLocation.ToString();
//this.DesktopLocation = new Point((tempRectangle1.Width - tempRectangle2.Width) / 2, (tempRectangle1.Height - tempRectangle2.Height) / 2);
//this.label3.Text = this.DesktopLocation.ToString();
//this.Location = new Point((tempRectangle1.Width - tempRectangle2.Width) / 2, (tempRectangle1.Height - tempRectangle2.Height) / 2);
this.Text = "Hello,World";
this.Top = (tempRectangle1.Width - tempRectangle2.Width) / 2;
this.Left = (tempRectangle1.Height - tempRectangle2.Height) / 2;
どうおかしい?
これだと何処に表示されてんの?
220デフォルトの名無しさん:04/05/16 11:17
>>219
不定です。
>>218
this.StartPosition = FormStartPosition.CenterScreen; だけでいいじゃん。
>>218の問題は>>221で正解だろうけれど、
FormのコンストラクタでLocation変えても指定した位置に出なくて俺も悩んだ。

Loadの中でも出なかったっけ?
223デフォルトの名無しさん:04/05/16 15:40
C#2003を使用しています。
したいことは、ボタンを押すとピクチャーボックス内に線を引き、その画像を
保存することをしたいのですが、
「'System.NullReferenceException' のハンドルされていない例外が 040516.exe で発生しました。
追加情報 : オブジェクト参照がオブジェクト インスタンスに設定されていません。」
というメッセージがで前にすすみません。
よいアドバイスを頂けませんか。

private void button1_Click(object sender, System.EventArgs e)
{
Graphics g = this.pictureBox1.CreateGraphics();
Pen myPen = new Pen(Color.LightGreen);
g.DrawLine(myPen,100,100,200,200);
pictureBox1.Image.Save(@"d:/testZ.bmp", System.Drawing.Imaging.ImageFormat.Bmp);
}
Imageがnullなんでは?
225デフォルトの名無しさん:04/05/16 16:39
下のような感じにしましたら
エラーはでなくなったのだけど、線が保存できません。

pictureBox1.Image = Image.FromFile("d:/st1.bmp");

Graphics g = this.pictureBox1.CreateGraphics();
Pen myPen = new Pen(Color.LightGreen);
g.DrawLine(myPen,100,100,200,200);

pictureBox1.Image.Save(@"d:/testZ.bmp", System.Drawing.Imaging.ImageFormat.Bmp);
new Bitmap() して
bmp.Save() かなんかすればいいんでは?
Graphics g = this.pictureBox1.CreateGraphics();

Graphics g = Graphics.FromImage(pictureBox1.Image);
でどうかな
228218:04/05/16 17:31
>>221
ありがとうございました。できました。

>>222
無理なんですか、今までどうにかやろうと格闘していました。
丸一日無駄だったのか(笑)
すいませんが、C#でC++のlistやvectorみたいなのってありますか?
とりあえず可変長の配列が欲しいと思ったのですが
>>229
System.Collections名前空間を調べれ
231デフォルトの名無しさん:04/05/16 17:42
>>227
ありがとうございます。
>>230
うおお、たくさんある!
ありがとうございました
233デフォルトの名無しさん:04/05/16 18:40
すいませんがもう一つお願いします

メニューバーにあるような、ファイル(F) の(F)みたいなのをつくりたいのですが
ShortCutの項目ではAlt+Fで割り当てられませんでした
これはどこで割り当てるのですか?
>>233
"ファイル(&F)"
>>234
できました
ありがとうございました
236デフォルトの名無しさん:04/05/16 19:12
C#でRs232通信したいんだけど、どうしたら言いのでしょう。
238デフォルトの名無しさん:04/05/16 19:53
>237
 ありがとう。
239デフォルトの名無しさん:04/05/16 19:54
ListViewを使っているのですが、
ある列だけ非表示にすることってできませんか?
ListViewはデータを持っているけど、非表示にしてユーザに見せたくないのです
よろしくお願いします
>>239
非表示にするっていうか、ColumnHeaderのWidthをゼロにするとか。
見せないListViewって存在価値あるの??
ListViewItemのTagプロパティに見せたくないデータをいれとけば?
>>241
あるよー。
244デフォルトの名無しさん:04/05/16 21:24
>>239
そういうのって結局、テーブルでデータを持って、表示はそのうちの一部の列にすればいいと思うが。
>>240
ColumnHeaderのWidthを0にしてもマウスで触られると見えちゃった気がするんだけど。
違ったかな…
246239:04/05/17 04:14
Tagにいれておくことでなんとかできました
Tagって何のためにあるのかよく解っていませんが
とりあえずこれでやってみたいと思います
>>246
ヘルプを見れば何となく分かるけど、
要はそのコントロールに関連の深いデータを入れるプロパティ。
ま、都合良く好きなものを入れられるプロパティとおもっといて間違いじゃない。
ListViewを使っているのですが、ウインドウのサイズ変更をしたときに
ちらつきが激しいのですが、何か対処法はありませんか?
他のアプリケーション動かしてみるとまったくちらつきが発生してないので
これはどうやってるんだろう…
250デフォルトの名無しさん:04/05/17 21:21
Microsoft Win32 と Microsoft .NET Framework API との対応
http://www.microsoft.com/japan/msdn/net/general/win32map.asp#win32map_performancemonitoringfunctions

ここきれいにまとめてあって便利


ところで、http://www.google.com/intl/ja/sitesearch/bsd.gif
と入力したら
http://www.google.com/intl/ja/sitesearch/ と
bsd.gif に文字列を分けてくれる関数ってないですか?
>>250
取り敢えず思いつくのはSystem.IO.Pathクラスの各メソッド
>>251
サンクス

public class systemio_path {
public static void Main(string [] args){
string files;
files=Path.GetFileName(
args[0]);
Console.WriteLine(files);
}
}
>>250
System.Uri クラスあたりはどうよ?
>>253
正直いまいち。と言うか果てしなく使いにくい。
基本的にHost部分とそれ以外(とクエリ部分)、にしか分けてくれないから。
255デフォルトの名無しさん:04/05/18 00:42
C#にてC言語で書かれたDLLを使うときに
char **型とFILE *型をどう扱えばいいのか分かりません
char **型はsting[]として扱いたいのですが可能でしょうか?
またFILE *はどうやって扱えばよいのでしょうか?
スクロールをキャンセルする方法って何かないでしょうか?

Rtfコードをリッチテキストにぶっこむと、キャレットの移動によるスクロールで
がっくんがっくんになるんで、それを防ぎたいんですが、今の所手詰まりです。

C#(.NET WinApp)でプロジェクトを公開するときに、例えばForm1.csとClass1.csがあって、
Form1.csのソースだけ公開してClass1.csのソースは非公開にすることって可能ですか?
プロジェクトはコンパイル可能で、且つEXEファイル単体で動作できるという条件で。

Class1をDLL化する方法は試したんですが、これだと実行ファイル配布時に
EXEファイルと一緒にDLLファイルも渡さなきゃならないんで条件に合わないんです。
そもそもDLLってそういうものですけど・・・(´∀`;)

C#で実現するとなると、Calss1.dllをリソースとしてForm1.exeに埋め込んで、
初回実行時にDLLファイルを吐き出すような力技しかないですか?
>>258
うん、できない。
まあ.NET Frameworkの設計思想的にDLLを推奨してるようだし。
ストリームからAssemblyをLoadFromできたらいいんだけどねぇ。
261258:04/05/18 04:33
>>259
ありがd。
EXEからDLL吐き出す方法を試してみます。
もしかしたら例外拾わなきゃ駄目かなー。今日一日実験。

>>260
画像リソースみたいに実行ファイルも内包参照できれば
何かと利用価値あるんですけどね。
262255:04/05/18 08:49
>>256
ありがとうございました
何とか解決しそうです
propertyGridのリストで、プロパティ名にカッコなど使えない文字があるので、
なにかよい解決法はありませんか?
たとえば属性で変更できるとか。
264デフォルトの名無しさん:04/05/18 18:19
no pno
0       0
1  0     ├- 1 
2  1     │  ├ 2 
3  1     │  └ 3
4  3     │    ├ 4
5  3     │    └ 5
6  0     └- 6
7  6       ├ 7
8  6       └ 8

Visual Studio 2003 C# です
TreeView の扱いに関して教えてください。
上記の左のようなデータから,右にあるようにツリーを作成したい
のですが,コードがうまく書けません。
pno は どの no にぶらさがるか,というデータを持っています。
どなたかアドバイスくださいませんでしょうか?
>>264
なにがわからないのかさっぱりわからない。

まるまるコードを教えてほしいの?
266デフォルトの名無しさん:04/05/18 18:28
著作権法違反ほう助の疑いで逮捕されたWinny開発者の47氏の為にTシャツを作って応援しましょう。
まずは以下の投票所でこれを着て応援したいというデザインを投票してください。
締め切りは5/19日、皆さんの協力よろしくお願いします

投票所
http://f40.aaacafe.ne.jp/~nytshirt/
投票の前にここを読め
http://f40.aaacafe.ne.jp/~nytshirt/readme.html
まずは予選です。良識をもって投票しましょう。

------------------------------------------------------------------------------
267264 :04/05/18 18:41
>> 265
すみません。どうコーディングすべきかわからないんです。
自分なりに書いてみたんですが,意図したようにツリーがうまく展開されなくて。
まるまるコードを頂けると参考にできてありがたいです…。

>>264
public struct Data
{
  public int No;
  public int PNo;
    
  public Data(int no, int pno)
  {
    No = no;
    PNo = pno;
  }
}

TreeView treeView = new TreeView();      
Hashtable table = new Hashtable();
      
Data[] dataArray = new Data[] {
  new Data(0, -1), new Data(1, 0), new Data(2, 1), new Data(3, 1),
  new Data(4, 3), new Data(5, 3), new Data(6, 0), new Data(7, 6), new Data(8, 6)};
foreach (Data data in dataArray)
{
  TreeNode node = new TreeNode(data.No.ToString());
  table[data.No] = node;

  if (data.PNo == -1)
  {
    treeView.Nodes.Add(node);
  }
  else {
    TreeNode parent = (TreeNode)table[data.PNo];
    parent.Nodes.Add(node);
  }
}
>>267
フォームデザイナでTreeViewのNodesプロパティをセットしろ。
そこから生成されたコードを見ろ。
>>264
treeViewの使い方として間違っているような肝。

もしnoとpnoが常に変化して、その都度treeViewを更新するというなら、
treeViewは使わずに自分でそういうクラスをk作った方がいいよ。
もし最初にnoとpnoからtreeViewを形成して、以後はtreeViewだけで
管理するなら、何も悩まずnodeを追加していけばいいだけだし。

思いつきで書いたけど、リカーシブコールとかどう?
 void treemain()
 {
  ツリー初期化&親ノード作成
  int f = no_MAX;  // =9
  int i = 0;
  treesub(i, f);
 }

 void treesub(int i, int f)
 {
  for(int j=0; j<f; j++){
   if(pno[j] == i){
    子ノード作成
    treesub(j, f);
  }
 }
272264 :04/05/18 19:57
皆様,ありがとうございます。
今日一日ずっと悩んでいた事が,みなさまのおかけで解決する事が
できました。本当に感謝しています。ありがとうございました。
しかし,返事の速さにびっくりしました。
だってやることないんだもん
仮想リストビューってなくなったの?
Improving .NET Application Performance and Scalability
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/scalenet.asp

チェックリストも付いててかなり良さげ。
>>268なぜにstruct…
>>276
どして?いくない?
278255:04/05/18 21:30
C言語のFILE構造体を手書きでC#に書き直し
msvcrt.dllのfopen関数を使ってファイルを開こうとしたのですが
どうにもうまくいきません。
fopenで開いた後
FILE*型の引数を持つ、ファイルに出力する関数に渡すと
'System.Runtime.InteropServices.SEHException' のハンドルされていない例外が ConsoleTest.exe で発生しました。
となります

fopenは
[DllImport("msvcrt.dll")]
[return:MarshalAs(UnmanagedType.Struct)]
public static extern FILE fopen([MarshalAs(UnmanagedType.LPStr)]string file,[MarshalAs(UnmanagedType.LPStr)]string mode);
として使ってます。
……なぜC#を使っていてfopenなんだろう?
>>278
fopenの返値は FILE* だから、FILEではなくIntPtrでもいいんでない?
CreateFile()でも驚くけどfopen()はありえないんじゃないか?
移植だとしても、Framework使って作ったほうが後々楽だと思う。
というか(移植だとすればだが)そんな移植になんの意味があるんだろう。
ごめん、C製のDLLを使う時なのか。意図は解った。
[StructLayout(LayoutKind.Sequential)]
public struct SCROLLINFO
{
public int cbSize;
public int fMask;
public int nMin;
public int nMax;
public int nPage;
public int nPos;
public int nTrackPos;
}
[DllImport("user32.dll")]
public static extern int GetScrollInfo(IntPtr hWnd,int n,[MarshalAs(UnmanagedType.Struct)] ref SCROLLINFO lpScrollInfo);

API.GetScrollInfo(hWnd,API.SB_VERT ,ref si);

どうやってもDLLへ渡した構造体に値が入らないんですが、どこが間違ってるんでしょう?
>>283
合ってそうな気もするが・・・。
MarshalAsAttributeが余計とか。
>>283
SCROLLINFOをclassに、
GetScrollInfoの第3引数を SCROLLINFO lpScrollInfo に(属性もrefもつけない)、
でどうよ?
>>283
>この関数を呼び出す前に、SCROLLINFO 構造体の
>cbSize メンバで sizeof(SCROLLINFO) を指定し、
>fMask メンバで、スクロールバーのパラメータのうち取得するべきパラメータを指定してください。
はできてる?

//手元で実験したら構造体・API関数定義部分そのままで取得できたよ。
287255:04/05/18 23:59
FILE*をIntPtrにしてみたところめでたく成功いたしました!!
>>280 どうもありがとうございます!
ちなみにわざわざこういうことをしたのは>>282のとおり、
C製DLLの関数を呼び出したかっただけです
Frameworkでファイルを作る方法は知っています、
っていうか、最近C#ばっかりでCをやっていなかったので
ポインタやらに久しぶりに面と向かうと、なんとも扱いづらくて困ってしまいました
やっぱり使わないと錆びるもんですね
288283 :04/05/19 00:17

出来ました。
vbは全然分からんのですが、そこからのAPI使用によく出てきてるのを見つけてそれを参考にしました。

>この関数を呼び出す前に、SCROLLINFO 構造体の
>cbSize メンバで sizeof(SCROLLINFO) を指定し、

この辺の情報みて気づきました。
最初に読んでて知ってたはずなのに、度忘れしてました。

si.cbSize = sizeof(SCROLLINFO);
si.fMask = API.SIF_POS;
API.GetScrollInfo(hWnd,API.SB_VERT,ref si);

ありがとうございました。
StreamReaderでファイルからReadLine使って一行ずつ読み込む
プログラムを書いてるのですが、ロードにものすごい時間がかかります
(3、4秒くらい)

ファイルが2万行あるのでファイルサイズが大きいとは思うのですが
こんなものなのでしょうか?
それとも何か注意する点とかあるんですか?
>>289
そりゃどんなコード書いてるかによるでしょ。
読んだデータを処理する部分が遅いのか、
それともハードスペックの問題なのか。
StreamReader sr;
string buf;

for (int i = 0; (buf = sr.ReadLine()) != nul; i++) {
  /* string配列に格納 */
}

これだけのプログラムです
C++で書くと一瞬なのでスペックの問題ではないと思います
>>291
string使わずに、StringBuilderかArrayList使ってみれ。
>>292
わかりました。これから出かけるので帰ってきたらやってみます。
ありがとうございました。
文字列の動的配列ならSystem.Collections.Specialized.StringCollection。

StreamReader sr = new StreamReader("hoge", Encoding.Default);
StringCollection col = new StringCollection();
string buf;
while ((buf = sr.ReadLine()) != null)
   col.Add(buf);
で18万行ほどを読み込んだら、キャッシュなしで0.8秒、二回目からは0.3秒ほどだったよ?
>>291
あ、よくみたらそりゃ遅くなって当たり前じゃん!!

「(buf = sr.ReadLine()) 」が遅くなる原因じゃね?
C#のstringは内容書き換えるたびに再生成されるから、
何度も書き換えてるうちにどんどん遅くなるよ。

bufだけでもStringBuilderに汁!
読み込むテキストも加工して書き換えるならstring[]はやめるべき。
296295:04/05/19 07:26
>>292が申しておりました。
>>295
>  「(buf = sr.ReadLine()) 」が遅くなる原因じゃね?
>  C#のstringは内容書き換えるたびに再生成されるから、
>  何度も書き換えてるうちにどんどん遅くなるよ。

そんなことないよ。
   
>  bufだけでもStringBuilderに汁!

bufをStringBuilderにしちゃ駄目。
意味無いどころかどう実装させるかすらわからん。
文字列丸々入れ替えるだけならstringbuilderよりもstringの方が速いね。
299デフォルトの名無しさん:04/05/19 09:10
StringBuilder buf=newStringBuilder()

while (((buf.Append(sr.ReadLine()).ToString())!=null)
{
//処理

//最後にbufをクリア

}

こんな感じか?遅そうだが、、
>>299
>  while (((buf.Append(sr.ReadLine()).ToString())!=null)
無理。buf.ToString()がnullにならない。空行と区別がつかなくなっちゃう。

> //最後にbufをクリア
StringBuilderにClearメソッドがない以上newし直すことになるのかな……。
//Removeするよりかはnewし直した方がましだろうし。
二重起動したときに、引数をすでに起動している側に渡す方法はありませんか?

具体的には、再生ソフトにファイルパスを渡したときに、すでに起動されている場合は
そのファイルを再生リストに追加したく思っています。

302301:04/05/19 10:19
前スレで既出でした。申し訳ない。
>>300
StringBuilderクラス、Lengthプロパティを0に設定すればClearと同じ効用だったような。
>>303
Lengthの解説は
現在の長さ未満の長さを指定した場合は、このインスタンスが指定した長さまでに切り捨てられます。
指定した長さが現在の長さを超える場合は、このインスタンスの文字列値の末尾に空白が埋め込まれます。
指定した長さが現在の容量を超える場合は、 Capacity が指定した長さに設定されます。

とのことなのでClearできそうですね。でも
if((text=sr.ReadLine())!=null)
に問題があれば多くの例で使われることも無いと思うのでこれでいいのかも。
なんか今回の件では使えなくても、後々応用できそうな話だな。メモしとこ。
MCIを使わずにCDトレイのオープンってできますか?
>>306
ボタンをぽちっとな。
>>307
それで開かないからトレイオープンだけのアプリを作ろうとしてるんですが…。
エクスプローラーの右クリックで「取り出し」やっても開かない。

今はCD取り出すためだけにライティングソフト起動してます。
>>308
ものすごい自分専用アプリだな、笑った。
針を差し込んで強制排出できないの?
311308:04/05/19 23:39
XP起動直後は普通にポチっとなで取り出せますが、
2、3日使いっぱなしだといつの間にか取り出し効かなくなるんですよ。
何かのアプリかサービスが悪さしてるようですが、特定できていません。
不要プロセス全部止めても駄目でした。

ただ、ライティングソフトだと問題なく取り出しできるので、それと同じように
直接Openコマンド発行できればいいなと思いまして・・・。

似たようなアプリ見つけたんですが、NT専用らしくてXPじゃ動きませんでした。
ttp://www.vector.co.jp/soft/winnt/util/se020223.html
CPPで書け。CDMのソースから該当部分だけコピペして完成。
>>312
WMPの取り出しでも出てこないので、winmm系の取り出し方法だと駄目っぽいです。
ライティングソフトが掴んでるのでは?
>>314
ライティングソフトを起動しなくても、いつの間にか
取り出しできなくなってるのでライティングソフトは白です。

ググってみてもMCI使った取出ししか引っかからない… orz
画像プレビューつきファイルオープンダイアログが欲しいのですが、
標準のダイアログボックスにコントロールを追加する方法がわかりません。
良いサンプルなどを知りませんか?
>>291
  /* string配列に格納 */
ここでいったい何をやってたんだ?

あと、盲目的に string は遅いからStringBuilderに変えろってのはやめれ…
>277
別に駄目とはいわんが、使い方から言って普通classにするべきと思われる。
ってか、あえてstructにしている理由が分からない。
319デフォルトの名無しさん:04/05/20 03:28
mp3プレイヤー作ろうと思うのですが
ファイルの音声フォーマットとか再生時間を読み込むクラスは
BASEクラスライブラリにはないんでしょうか?
エクスプローラーの”表示->列の選択”で
これらの情報はひきだせるので何とかなりそうなんですが
>>319
音声のサポートは.NET Framework次バージョンから。
元々マルチメディアはDirectXで、と言うのが方針だったわけだしねー。
MP3PlayerならManagedDirectXを使えば?
簡単な実装も複雑な実装もどんとこいだよ。
321318 :04/05/20 03:53
>>別に駄目とはいわんが、使い方から言って普通classにするべきと思われる。
ぎゃあ、↑書いたけど、ちょっとプログラムを読み違えていた気がする…
>>321
大丈夫です、勘違いしてる馬鹿はあなただけですので。
.NETコロコロと仕様変更で思い切ったソフトが作れない
324デフォルトの名無しさん:04/05/20 09:57
思い切ったソフトつくってからいえやヴォケ
仕様変更といえば

.NETのv1.2
C# v2

ってそれぞれいつ製品版がでるの?
.NETv1.2はロングホーンで
C# v2はいつ?
>>325
>  .NETv1.2はロングホーンで
>  C# v2はいつ?
C#の次バージョンは.NET Frameworkの次バージョンと同時。
ジェネリクスをフレームワークがサポートできるようになる。

//.NETの仕様変更で困るようなソフトってそう作らないような気がするけど。
//当面は別に旧バージョンでも良いわけだし。
1.0→1.1体験しなかった?
>>327
去年の夏からプログラム始めたもので。
>>327
>  1.0→1.1体験しなかった?
.config書くから。
仕様変更って、まさか過去に作ったやつはリビルドしなきゃ動かなくなるの?
そういうのはPHPだけにしてくれ・・・。
>>330
リビルドしなくても動く。つられんな。
1.0でビルドしたDLLを1.1のEXEで使えるの?
たとえば1.0のenum引数をセットするのに1.1の同名enumは渡せるんだろうかと。
FolderBrowserDialogってv1.1しかつかえないらしいじゃん
v1.0って相当糞だったんだな
FolderBrowserDialogぐらい自分で作れって事じゃね?(w
CompactFrameworkのダイアログなんてMyDocumentにしかアクセスできないし
あってないようなものだぞ。もちろんFolderBrowserDialogなんて存在しない。
335316:04/05/20 11:52
ダイアログの話題から関連で話が戻ってこないかなぁと期待
コントロール関連のサンプルなら、
まずcodeprojectへ逝くのがいいと思うよ。
つまり自分で作れと言うことだな。
>>335
javaのswingのにアクセサリみたいにできないかってこと?
コモンダイアログでファイル開くときに、そのダイアログの下半分などに、
私は画像やテキストのプレビューをつけたいと思っていますが、
他にも、テキストエディタで文字コードを指定しているものもあるし、
保存時は拡張子だけでなく保存形式もコンボボックスで選ぶアプリも存在します。
それで、codeprojectあたりも見たのですが、
そもそもコモンダイアログをいじったサンプルがないといった現状です。
>>339
>そもそもコモンダイアログをいじったサンプルがないといった現状です。
デコンパイラでOpenFileDialog見てみるとか。
>>339
コモンダイアログを弄ったサンプル。
ロシア語だが。
ttp://www.gotdotnet.ru/LearnDotNet/NETFramework/578.aspx
C#しかやったことがないんだろうなぁ
クラスの状態をファイル化しておきたいんだけど、
SoapFormatterとXmlSerializer使うのとどっちが一般的なんだろう。

soapでできるファイルはごちゃごちゃしてるし、
アプリ間で受け渡しする訳じゃなきゃ、XmlSerialのほがいいのかな。
>>343
シリアライズならむしろBinaryFormatterじゃない?
XMLにこだわるならXmlSerializerだろうけど。
>>344
そか。
テキストファイルを手で直接編集できる最終手段を用意しておきたいし、
XMLでいくよ。
さんくす
次期開発でC#かDelphiのどちらにするか検討中です。
C#はまだ買ってないのですがいろいろ調べたんですけど
入力項目移動をタブじゃなくてエンターでしたいのですけど
2ch関連スレでもググっても見つからないのです。
もしかしてC#はエンターで項目移動は無理なのでしょうか?
Delphiだと、
SelectNext(ActiveControl,true,true);
ってするといけるんですが・・・
>>346
できる
GetNextControl
348318:04/05/20 18:32
>>345
XML シリアライズでクラスの状態を保存する場合は、
パブリックなフィールドとプロパティしか保存できないので
注意がいるよん。
.NET Framework SDKを入れてC♯の練習に
タブブラウザでも作ってみようと思ったのですが、
IEのコンポーネントを利用する方法がよく分かりません。
VisualStudio上から参照設定をするという説明はよく書かれているのですが、
それと同じことをSDKで行う手順はないのでしょうか?
>>349
Windows フォームで ActiveX コントロールをホストする
http://ja.gotdotnet.com/quickstart/winforms/doc/WinFormsAxHosting.aspx

これをしたら後は同じだから、下の19回から見てがんば。

GotDotNet Japan Student コラム 「はじめの一歩」
http://www.gotdotnet.com/japan/student/column/firststep/

351デフォルトの名無しさん:04/05/20 19:54
先生!日本語ファイル(sjis:crlf sjis:LF)から読み込んだ文字列が
フォームのtxtboxに文字化けしてかけません!

using (StreamReader sr = new StreamReader(file))
{
String line;
uint i=0;
while ((line = sr.ReadLine()) != null)
{
//txtbox1.Text= txtbox1.Text+line.TrimEnd(null);
// txtbox1.AppendText(line+"\r\n");
txtbox1.Text= txtbox1.Text+line;
}
}
System.IO.StreamReader(@"hoge.txt", System.Text.Encoding.GetEncoding(932));

"932"のところを希望の文字コードに汁。
>>351
StreamReaderのデフォがUTF-8だから。
システムの言語が日本語ならEncoding.DefaultでShift_jisになったり
355351:04/05/20 21:09
>>352
>>353
>>354

サンクスでつ
JapaneseCalendarのDefaultEraが 0 返すのってバグ??
>347
> できる
> GetNextControl
おお! 出来ますか!
情報ありがとうございます!
358349:04/05/21 04:04
>>350
こういう説明が欲しかったんですよ。これで何とかなりそうです。
頑張って2chブラウザでも作り上げます。
359351:04/05/21 05:25
2chブラウザって結構複雑だからな
まぁC#でも無理じゃないが
-----------------------------
top.htmlをパース
subject.txt一覧をツリー表示
ツリーをリンク付け
3ペイン
subjext.txtのダウンロード->リンクづけ
datのダウンロード
gzip展開
datのパース(htmlのパース)
差分所得処理
履歴の作成
ログ整理
書き込み->cokie処理->書き込みログ
●の対応か
ID,レスのポップアップ,あぼーん機能
検索
スレしぼりこみ
dat落ち
色設定
proxy
タブ
HEADポップアップ
画像処理
-------------------
こんなもんか

C♯製のtwintail2は
軽いかわりにメモリをめちゃめちゃ食う。300Mぐらい消費した。
あれは画像を一気にダウンロードしたからかもしれんが
360デフォルトの名無しさん:04/05/21 08:19
ちょっと質問でつ
ListViewで、AllowColumnReorderをtrueにして列の順番を入れ替えれるようにした時に、
ColumnHeaderCollectionからColumnHeaderを表示されてる並び順で取る方法あるんすかね?
VB6ではPositionつープロパティがあって、表示位置番号が取れるとか聞いたんだけど、
.NETでそんなプロパティなくて・・・

何かユーザが列情報を記憶させてくれとか言い出しちゃって。。。(´・ω・`)

361デフォルトの名無しさん:04/05/21 09:08
>>359
twintailとかget2chで●対応できてないのは何か理由があったような、、
どっちでも使えるDLLをC#のみで作ったら神かも
>>360
P/Invokeを使うしかないと思われ。

  const int LVM_FIRST = 0x1000;
  const int LVM_GETCOLUMNORDERARRAY = LVM_FIRST + 59;

  [DllImport("user32")]
  static extern IntPtr SendMessage(IntPtr hWnd, int msg, int wParam, int[] lParam);

取り出すときはこんな感じ。

  int count = listView1.Items.Count;
  int[] pos = new int[count];
  SendMessage(listView1.Handle, LVM_GETCOLUMNORDERARRAY, count, pos);

で、配列 pos に列の表示位置が入ってるはず。
363362:04/05/21 09:41
間違えた。

× int count = listView1.Items.Count;
○ int count = listView1.Columns.Count;
C#のクリスタルレポートでこんなこと可能ですか?
例えば領収証への印刷なんかで
印刷時:普通に印刷
プレビュー:領収証の画像イメージと印刷を合成して見る
365デフォルトの名無しさん:04/05/21 14:26
皆さん上位・下位ワードの抽出ってどうやってますか?
>>365
BitConverter使うとか?
>>365
textBox1〜3とbutton1を配置して、

private void button1_Click(object sender, System.EventArgs e) {
 int d = Convert.ToInt32(textBox1.Text, 16);
 int x = d & 65535;
 int y = d / 65536;
 textBox2.Text = Convert.ToString(x, 16);
 textBox3.Text = Convert.ToString(y, 16);
}

質問の読み違いだったらスマン。
ビットシフトが一番直感的だな。
>>368はこんな感じ?

d = 0x5555aaaa;
x = d >> 16;
y = d & 0xffff;
パフォーマンスの高いプログラムの書き方を勉強したいんだが、
参考になるサイトや書籍は何か無い?

JAVAやPerlならたくさん引っかかるんだがなぁ…
>>370
厳密な少数演算が必要でなければ、float使わずにintの百倍や千倍で済ませるとか。
x = 123.45; → int x = 12345;

演算も式と結果がパターン化されているなら、その都度演算せずに配列で持ってしまうとか。

アセンブラもかじっておいた方が役に立つとは思う。
例えばさっきのワード分離なんかも、もし関数が用意されてたとしてもそれを使うよりは
単純にANDとビットシフトを使った方が速いしコードも短いんじゃないか?という推測はできる。


…なようなことは、ゲームプログラム系のサイトでよく見かける。
ビジュアルスタジオの「+??のオーバーロード」なんてのも気にしてるといいかも。
オーバーロードが増えればそれだけたらい回しが増えて速度に影響出る。
>>370
.NET Framework Home: Improving .NET Application Performance and Scalability
http://msdn.microsoft.com/netframework/default.aspx?pull=/library/en-us/dnpag/html/scalenet.asp
.NET Framework のランタイム テクノロジに関するパフォーマンス上の注意事項
http://www.microsoft.com/japan/msdn/net/general/dotnetperftechs.asp
.NET アプリケーションのパフォーマンス関連のヒントとトリック
http://www.microsoft.com/japan/msdn/net/general/dotnetperftips.asp
Visual C# Home: Calling Code Dynamically (Working with C#)
http://msdn.microsoft.com/vcsharp/default.aspx?pull=/library/en-us/dncscol/html/csharp02172004.asp
Performance Quiz #1 (of a series?)
http://blogs.msdn.com/ricom/archive/2004/03/12/88715.aspx
http://blogs.msdn.com/ricom/category/2050.aspx
The Code Project - Iteration Performance in .NET - C# Programming
http://www.codeproject.com/csharp/iter_perf.asp
374351:04/05/21 20:48
>>370
CLIの仕様書読んで
仮想アセンブラでゴリゴリ書いとけ
>>371
オーバーロードはコンパイル時に解決されるんだけど…
>>375
JITでも差はないものなの?
メソッド呼び出しがどの程度インライン化されるか、かな?
オススメのリファレンス本ってありますか?
初心者で凄く困ってるんです。
ちなみに、チェックリストボックスの項目の
すべてのチェックを一度(1行の文で)に
消す事って出来ますか?
リストボックスの選択は一度に消せたので
同じように、チェックリストボックスでも
出来るかなって探してるんですが・・・

ご存知の方、教えてください。お願い致します。
>>378
一行で消すとかそういう本質的でないことにこだわってると
なかなかプログラミング上達しないぞ。
本や入門サイトに関しては、どれが合ってるはひとそれぞれだからな。
手当たり次第に見て、自分のレベルと知りたい内容に合致したのを選ぶしかない。
if節などで、&と&&の違いが分かりません。
まったく同じように動作して見えますが?
ならそのまま使ってろ
>>381
&はビット演算子、&&は論理演算子
boolに対して使う限りは同じ結果が得られるように見える。
論理演算子は短絡的評価が起きる。
なんでbooleanにビット演算子が使えるんだろう…
>>384
Cからの伝統。
というか、ヘルプで演算子のオーバーロードの項目見てみ。
&& は直接オーバーロードすることは出来ないけど、
true 演算子と & をオーバーロードすることで && も使用可能。
a && b は !a ? a : (a & b)
a || b は a ? a : (a | b)
という扱い。
387378:04/05/22 14:51
>>379

返答どうもー。
そうっすね。視野広げて頑張りまつ。

>>380
いろいろみてみまつ。ありがd。
388378:04/05/22 14:51
ageてしまった・・・スマソ・・・。
>>385
そういや、Javaもこの伝統を引き継いでたな。
こういうのは引き継がなくていいと思うのだが。
アプリ起動時に作ったビットマップを、アプリ終了まで使い回すので、
フォームのデストラクタで解放するのが妥当だと思いますが、
ここでアプリは終了なのでビットマップ解放するコードを削除していいのかな?
それともアプリ終了後もリソース持ちっぱなしですか?
boolは真なら1、偽なら0っていう表現を継承してるんだろ。
>>391
>  boolは真なら1、偽なら0っていう表現を継承してるんだろ。
真と偽をboolという型にして、while(1){}とかの表現を禁止した以上、
もう false=0 true!=0 という概念とその派生部分はいらんのではないか、と。
テキストボックスとかの1行サイズって取得する方法ってありますか?
例えばカレットのある行に線を引こうと思ったとき、GetCaretでカレットの位置が分かっても
文のちょうど下の位置がわからない。と。

何か知る術ってないでしょうか?
すいません、文字列から数値を取り出したいんですがどうすればいいんでしょうか?

string array = "01214";
char moji = array[2]; 

Console.WriteLine(moji);

とかで取り出した、文字"2"を数値に変換したいのです。
int moji = (int)array[2];とかは無理?
intの後にドット(.)を撃ってみると幸せになれるかも。
>>393
TextBox.Font.Heightが一行の行数になる

……んだけど。
.NETFrameworkもキャレットにもうちょっと気を遣って欲しかったなぁ。
>396
一行の行数ってなんだよう。
一行の高さ、ね。
>>397
ありがとう、助かりました。
399394:04/05/22 21:13
ありがとうございます。

char型はint.Parseで変換できないようなので、
int number = int.Parse("0" + array[2])

無理やり文字列にしてから、変換させました。
いや、Int32.Parse('1'.ToString())が自然なんだけど。
>>394
string s = "12345";
int d = int.Parse(s.Substring(2,1));
402デフォルトの名無しさん:04/05/22 22:04
C#.NETで、1つのプロジェクトに、2つのファイルがあって、それぞれ1つずつのMain()メソッドを持っています。
この状況で、エントリポイントを指定するにはどうしたらいいですか?
コマンドラインから指定する方法はわかるんですが、VS.NET上から指定する方法がわかりません。
>>402
何がしたいのかわからんけど、スタートアップオブジェクトとかは?
>>403
プロジェクトのプロパティな。
405デフォルトの名無しさん:04/05/22 22:13
>>403-404
出来ました!!ありがとうございます!!
PDFLib で PDF が生成できるように、
Word や Excel のファイルを生成することができる
ライブラリ等はないでしょうか?
# Perl/PHP なら Excel のみですが
# Spreadsheet::WriteExcel がありましたが。
COM呼び出しつかうんじゃないの
Perlとかはそうだったよ
新しくクラスを作る場合「public void 〜」や「praivate string 〜」の使い分けがうまくいかないわけで、エラー起きまくりです。
voidは返すものがないから代入、privateに関数を作った場合はreturnで返すって考えであってますよね??
ぜんぜnちがう
>>408
間違ってる。
>>408
publicに対応するものがprivate、voidに対応するものがstring。
だからprivate void 〜もあればpublic string 〜もあり得る。
OpentypeフォントのUnicode外の文字を表示したいのですが
方法がわかりません。
Unicode外の文字はグリフIDで表すことができるのですが、
グリフIDをあたえて、文字を表示することはできるのでしょうか?
414デフォルトの名無しさん:04/05/23 09:14
配列で要素を挿入したり削除したりすることはできますか?
id[0]=0;
id[1]=1;
 ↓
id[0]=0;
id[1]=3;
id[2]=1;  みたいな感じに
>>414
可変配列にはArrayListを。

既存の配列でそういう作業が必要な場合は、
新しい配列を作ってforで代入するか、
ArrayListのArrayList(ICollection)コンストラクタ、Insertメソッド、ToArrayメソッドを使うか。
System.Messaging名前空間を使いたいんですけど、
そんなものねえよ、と言われます。
System以下にMで始まるものすらない……。
C# Standardにはないとか? 一応、フルインストールしました。
>>416
System.Messaging.dllを参照に追加。

結構デフォルトでは参照されないDLL多いよ。
>>408
クラス以前に関数の基礎を勉強汁。

他のクラスに見せたくないのはpraivate。
見せてもいいのはpublic。

値を返さないのはvoid。
返すのはその型に合わせてintやstringやboolなど。


>>416
MSの解説をよく嫁。

「System.Messaging.DLL へのプロジェクト参照が必要なことに
 注意してください。 Visual Studio .NET でこの参照を追加するには、
 [参照] を右クリックして、 [参照の追加] をクリックします。 」
419416:04/05/23 10:51
>>417-418
参照に追加が必要だったとは。知りませんでした。
ありがとうございます。
>>376
JITもコンパイルじゃん。
一発目だけ。
421406:04/05/23 15:40
>>407,412
ありがとうございます。調べてみます。
>>420
JIT時に解決されるとでも?
>>422
オーバーロードとオーバーライドを混同してない?
コンパイル時にオーバーロードを解決できない理由が思いつかないんだけど。
実際は知らないけど、JIT以前に、ILになった時点で解決されてそうな気がする。
424422:04/05/23 21:54
>>423
や、同じことを言うつもりで書いたんだけど、
>>420が「書いた」意味をよく分かってないだけなきがしてきた。
http://www.microsoft.com/downloads/details.aspx?FamilyId=9B3A2CA6-3647-4070-9F41-A333C6B9181D&displaylang=en
ここから.NET Framework SDK Version 1.1をダウンロードしてインストールしたんですが、csc.exeが入っていません。
名前変更でもあったのでしょうか?
>>425
まずC:\WINDOWS\Microsoft.NET\Framework\v1.1.4322ってフォルダは存在する?
存在したら中身はどうなってる?
>>426さん
ありました。Program Filesのほうばかり見ていてこっちにあるとは思いませんでした。
パス通したらうまくいきました。どうもありがとうございます。
428デフォルトの名無しさん:04/05/23 23:57
PictureBoxのGraphicsオブジェクトを使ってPictureBoxに描画し、
描画したイメージを保存するためにPictureBoxのImageプロパティのSaveメソッドを呼び出すと、
エラーが出てしまいます
どうやって保存すればいいんでしょうか?
429デフォルトの名無しさん:04/05/24 00:12
ToolBarの背景色ってどうやってかえればいいですか?
ToolBar.BackColorを設定しても変わりません・・・。
>>426
しっかし、なんでこんなフォルダに入っているんだろうね。
キーボードの矢印キーってどうやって差し止めるんですか?
KeyPressは文字系以外は駄目だし、他のKey系イベントってキャンセル行為できませんよね?

裁判所に差し押さえを申し立てれば何とかなるかと…
433375,420:04/05/24 01:57
>>424
オレがなに?
>>430
再頒布パッケージにも csc.exe が入っているからだと思われ。
435424:04/05/24 02:53
>>433
>JITもコンパイルじゃん。
>一発目だけ。
ごめん、これ書いた意味というか理由が良く分からんかったんだ…
436デフォルトの名無しさん:04/05/24 03:57
HTMLで以下のように書かれて得られるページのソースを取得する方法はありますか?

<form action="http://www.jra.go.jp/JRADB/accessS" method="POST" target="_blank">
<input type="HIDDEN" name="CNAME" value="W01PS_D3/xW01">
<input type="HIDDEN" name="xW01" value="052004030211">
<input type="SUBMIT" value="結果">
</form>
>>428
使い方間違ってるんじゃないの?
Image img1 = pictureBox1.Image;
img1.Save(@"hoge.png" ,System.Drawing.Imaging.ImageFormat.Png);

>>429
@IT会議室で返事もらえなかったのか。

>>431
何をしてるときに止めたいのかがわからんぞ。

>>436
POSTでデータ発行したいのならまずはWebの仕組みから勉強しろ。
ググれば簡単に見つかる。つか、そういうことに使うな。糞が。
使うやつは便利だろうが、相手の鯖にしてみりゃ迷惑なだけだ。
グローバル変数はどこに書けばいいんですか?
どこにでも。
どこにかいてもメンバなんですが
初心者はウザイですよね。
しかしあまり目次的なところにリンクされても、初心者には探せません。
だからこそウザイですよね。
ですからどうぞ放置してください。
ウザイと思わない方、どうやったらいいか教えてください。
>>442は偽物です
別に初心者だからうざいとか言うことはないが、
438のような質問をする人はやはり一からC#的オブジェクト指向を勉強すべきだとは思うな。
445デフォルトの名無しさん:04/05/24 17:22
GDIを使って画像サイズを変更して、PictureBoxに表示するのを作ったんですが、
その表示されている画像を保存しようとすると、
もとの画像サイズに戻されて保存されてしまうのですが、
どうすればいいですか?
445が提示する少ない情報から考えると、こんな感じ。

案1.PictureBoxに任意のサイズに変換した画像を展開しておく。
案2.保存する時に、PictureBoxにある画像から任意のサイズに変換する。
>>445
ググればすぐ見つかるだろ?
検索ワードが絞り込めなくて探しにくい内容ならともかく、
こんな1分もかからずに見つけられることを聞くな。

これくらい探す力がないなら、プログラムやる前に
検索のノウハウを先に勉強した方がいいぞ。
ここはテクニカルな相談をするところであって、
検索代行屋じゃないんだから。

「C# 画像 拡大 縮小 保存」
TABキーの押下だけがどうやっても取得できません。
KeyDown + KeyPreview、IsInputKey、ProcessKeyPreviewと試して、
他のキーはフォーム上でもコントロール上でも問題なく
イベントハンドラが呼ばれますが、TABだけ無反応。
TabIndexやTabStopの値は関係ありませんよね。

MSDNによると、KeyDownを文字以外のキーに反応させるには、
各コントロールにIsInputKeyをオーバーライドする必要があるとのことですが、
できないものもあります。
というか、TAB以外の非文字キーはIsInputKeyなしで動作するんですが。
449ェ口ィY:04/05/24 20:11
PNG形式の画像ファイルを作成したいのですが、
Bitmap.Save(...)で画像を保存すると、
圧縮率が低いような気がします。

簡単に圧縮率を上げる方法があったら
知りたいのですが。
あるいは、独自にpngの圧縮ライブラリを
拾ってくるしかないのでしょうか。
>>449
試してないけどSystem.Drawing.Imaging.EncoderParameterのQualityいじってもダメかい?
>>450
> 試してないけどSystem.Drawing.Imaging.EncoderParameterのQualityいじってもダメかい?

このクラスの対象はjpeg/tiffのみだったはず。
初心者なんですが、モデルとビュー(&コントロール)を分けて作るとするじゃないですか?
で、今のとこモデルにアクセスするためのメインモデルみたいなのを作って基本的にそれ経由で他のモデルとアクセスしてるんですが
これってどうなんでしょう?個々のクラスがアクセスする個々のモデルのインスタンスを持たせてした方がいいんでしょうか?
GUI関係の本とか探してもコントロールの使い方ばっかりで、オブジェクト指向の本は問題領域に関する事ばっかりでGUIと絡めてる本が見つからなくて。
JAVAの本とかサイトでもいいんですが、この辺りのテクニックについてのサイトとか合ったら教えて欲しいです。
う〜、教えて君ですがよろしくです。
> 基本的にそれ経由で

保守管理を考えると結局のとこそこに落ち着くと思う
ハンドルでもIDでもいいけど結局「それ経由」ってことは同じ
(ハンドルやIDは生存・有効期間があいまいになりやすいから注意な)

モデル内の生ポインタを渡すのは、ほとんどの場合でイケてない

デザパタオタクが絡んできたら
プロクシでファサードなパターンですよとか言っとけばOK

よっぽど単純な構成ならまた話は別だけど、
だったら悩むこともないよな。

> この辺りのテクニックについてのサイト

俺も知らん。
助言させていただくとすれば、MVCはGUIアプリのためだけにあるんじゃないよ、
ってことぐらいかなあ。
>>453
ふむふむ・・・まずハンドルやIDが今一分かってないけどなるほど。
モデル内の生ポインタ(C#なら参照の事だよね?)なんだけど、たとえばあるクラスのコレクションがあったとして
それをメインモデル(ファサードみたいなものか)が持ってるとして、それのデータを使ってGUIのリストに出すとかする時は
参照を渡してGUIの方で中身を取得するよりもメインモデルからインデックスでコレクションの要素を取れるメソッドを使って取ったほうがいいって事かな?
それかコピーしてコレクションを返すとかかな・・・
なんにしろ、オブジェクト指向って最初は投げ出したけど少し分かってきたらかなり面白いね〜
俺も人の質問に答えれるよう色々と精進しよっと!
HttpWebRequestを使ってファイルの取得を行おうとしているのですが、
Accept-Encodingのヘッダを追加してリクエストを送ろうとしても
Accept-Encodingだけ抜け落ちます。
If-None-Matchなどは全く同じように追加しても問題なく送信されています。
Accept-Encodingを送るにはどうすりゃいいのでしょうか?

こんな感じ。
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://pc5.2ch.net/tech/subject.txt");
req.Headers.Add("Accept-Encoding", "gzip");
HttpWebResponse res = (HttpWebResponse)req.GetResponse();

送信する直前にHeadersの中身を確認してもAccept-Encoding:gzipは存在します。
でも、実際のリクエストのヘッダには無いのです。

無理ならHttpWebRequestを窓から投げ捨ててSocketで書き直します…
>>455
手元でやったらちゃんと有効だったよ?
457454:04/05/25 01:12
>>456
Outpostがヘッダを削ってました…
これで先に進めそうです。
458457:04/05/25 01:13
間違った、455でした。
勝手にresxファイルを作られて、ファイルサイズが増えて困ってます。
特にリソースは使ってないので、作らせないようにするにはどうしますか?
>>459
普通は作られない。
作らせるようなことしてるだけじゃないの?
VSですが、System.Windows.Formsのクラスを継承すると勝手に作られます。
フォームなどはコンポーネントを配置したりプロパティをいじるたびにどんどん肥大します。
cscでコンパイルした場合と比べたファイルサイズが大きくなります。
かといって削除するとビルド出来なくなります。
>>461
ならcscでコンパイルすれば?

ちなみにresxファイルは問答無用でリソースとして追加って訳じゃないよ。
下はresxファイル2つ、合計約15kほどのを含むプロジェクトで試した結果だ。
cscでresx含めずコンパイル>32k
VSでビルド >36k
cscで2つのresxを/resしてコンパイル>48k

大した増加でもあるまい。

//この増加をどうこう言うのなら.NET Frameworkに向いてないと思う。
>>463
なにが変わったん?
>>464
Nullable types
Property accessor accessibility 他細々
WSE絡みでこんなのも。

BizTalk Server 2004 WSE Adapter Technology Preview
ttp://blogs.msdn.com/scottwoo/archive/2004/05/24/140500.aspx
>>465
さすがにこなれてるだけあって、Javaのように大幅には変わらんな。
Nullable Typesって何のことかと思ったら int? n = null; ってやつか。
470459 461:04/05/25 09:53
つまり勝手に作らせないという解決方法はない、または知らないということですよね。
2005期待して待つことにします。
>>470
SDKのみでやってれば勝手に作られるなんてことないよ。
お勧め。
>>459-462
単にLocalizableプロパティがTrueになってるだけのような気がする。
逆にcscからresx指定してツールバーにアイコン読ませるのに四苦八苦してるが未だできない。
474264 :04/05/25 15:32
条件付きコンパイル定数で TRACE が付いていると,
実行時のレスポンスに影響って出るのでしょうか?

Visual Studio 2.3 の Relese 構成でも TRACE は付いているのですが
これは外したほうが動作上のメリットは大きいですか?
>>474
もう少し脳みそ使おうよ。
首の上にあるのは、知識を詰め込むだけの入れ物か?

TRACEが何をやっているのかを考えれば、おのずと答えは見えてくるだろうに。
476474:04/05/25 16:06
>>475
TRACE 定数を定義しないと, Trace クラスのメソッドはコンパイルされない
って事だと思うのですが,やはり TRACE がないほうがレスポンスは
あがるのでしょうか? Trace クラスは使用していないのですが.

おのずと見えてこねぇー,うわぁん.orz
最近、「俺は知ってるが何か?」的なレス多いね。
ストレス?
>>476
まぁ>>477みたいに言われてるのにまだ続けるのもなんなんだけどさ。

・Traceクラスは使用していない
・TRACE定数を定義しないとTraceクラスのメソッドはコンパイルされない

の二点が分かっていて、

・TRACE定数の定義の有無により動作上の違いが出るかどうか

は、さすがに明らかだと思うんだが…
Nullable Types略して「ぬるぷ」。
やっぱりわざわざ質問スレに答えに来る人ってそういう
>>473
VS.NETやC#Builder使えば簡単じゃないか?
>>478
違いが出るの?
>482
そこまで心配ならなぜバイナリを解析しない? まだMSILの段階なんだからなんとかなるだろ。
漏れはマンドクセからやらんが。
自分でベンチマークしてみれ。
もう、それしか解決方法は無い。質問者を満足させるには。
、NET frameworkが提供している中で
一番高分解能なタイマを教えてください
>>486
>  >>485
>  QueryPerformanceCounter かな。
>  ttp://www.microsoft.com/japan/msdn/mobility/prodtechinfo/devtools/netcf/FAQ/default.asp

問題は485が「.NET Frameworkが提供している中で」と限定したことだな。
>>483
心配なんかしてないでしょ。出るか出ないか聞いてるだけで。ぐだぐだ引っ張るようなことじゃないと思うけど。
そうだな。ぐだぐだ引っ張ることじゃねぇな。こんなところで訊くような事でもないが。

・Traceクラスを使用している場合
 -> TRACE定数の有無により動作上の差が出る可能性がある
・Traceクラスを使用していない場合
 -> TRACE定数の有無に関わらず動作上の差は発生しない

これでいいか?
ファイル名を変更する事って出来ませんか?
>>490
File.Move, Directory.Move, FileInfo.MoveTo, DirectoryInfo.MoveToの各メソッドを
移動先ファイル・ディレクトリ名をPath.GetDirectoryNameで得られる部分を同じにして実行。
おおう
Thxっス
他人に認められたくて必死な様が共感できると思った
494デフォルトの名無しさん:04/05/26 16:44
Ado.net使ってるのですが、100行以上の列が作成できないってのは
まじっすか?
おい等が使ってる環境が2002だからなのですかね?
>>494
現象としては報告されてる。
http://www.dotnet247.com/247reference/msgs/22/113552.aspx

2003で直ったのかは知らん。
何故スレタイはC#じゃなくてC♯なんですか?
#をスレタイに入れると消えるから。

それで「Cでネイティブアプリが作れたら最強じゃん」とかいうぱっと見意味不明なスレもあった。
>>497
サンクスコ

C#でスレタイ探しても見つからない訳だ(´・ω・`)ショボーン
>>494
VS.NET 2003なら、直ってる。
.NETのバグってどこかで一覧出来ないの?
2005で修正される予定のバグとかも。
users.gr.jpのMLで変なのが沸いているけど、
以前別のMLでも見かけた気がする。

と思ったら、1年以上前に同じところに沸いていたのか。
もっと別のとこにも沸いていなかったかしらん…?
>>501
http://www.lifecity.jp/pipermail/cpulife/2002-July/000594.html
どうやったらこんな Subject になるんだよ・・・
>502
多分醒剣ブレイラウザーを持ってるんだ、彼は。
オンドゥル(ry
メザコ語でぐぐれ。
TechEd 2004: A whiteboard with Anders (DEVC11)
http://www.theserverside.net/news/thread.tss?thread_id=26209
アプリケーションのメイン動作にXMLは絡まないけど、
XMLのデータも読み込めるという仕様なのですが、
本体EXE単品配布と、XML読み込み部DLL化と、どっちにすればいいか迷っています。
デバッグの容易さを考えると単品EXEにしたいのですが、
DLLに分離することで起動時のオーバーヘッドが減るならそうしたいです。
また、そうであれば、現在は分離したいDLL一個で、体感速度もよく分かりませんが、
将来的にはDLLいくつも分離して起動時高速化を考えています。
素人考えですが、こういった手法で速くなりますか?
>>507
そこまで考えることができてて、
なんで自分でテストをしてみようという気を起こさないのか。
世も末だな。
>>507
>DLLに分離することで起動時のオーバーヘッドが減るならそうしたいです。
減るの?
ああ、DLLを明示的リンクするってことか。↑は忘れてくれ。
長年C/C++を経て今C#お勉強中ですが、
似てるのに細部が違ったりとちょっと戸惑い気味。
C/C++、C# で同時期にコーディングすると混乱しそう。
やってる人どんな感じ?同じような道たどった人アドバイスお願い。
プロパティ/インデクサ/インターフェースいいねー。C++でも追加してくれ。
デリゲートは関数へのポインタと思っていいのかいな?<-俺こんなレベル。
512511:04/05/29 18:11
あ。俺エンジン部分はこれまで作ってきたC++のライブラリをCでラップして
dllでexportして、C#からコールして使いたいと思ってます。<--ここまではできた。
tcl/tk 的にC#を使いたいんだけどそれじゃ志が低い?
>>511
1週間くらい前にはじめた。
VB6とJavaとC++を混ぜた感じで分かりやすいと思った。
>>511
フックの関係でWin32と.NETを同時に使うことがあったけれど、
結構、混乱しないんじゃないかね。

むしろずっとどっちか片方だけやってると
いざもう一方でやるときに逆に混乱したかな。
C++でthisのあとにドットでメンバを使おうとしたりとか。

>>513
混ぜた感じどころかそれぞれのいいとこ取りのような。
515511:04/05/29 21:18
>結構、混乱しないんじゃないかね。
そんなもんスか?

>C++でthisのあとにドットでメンバを使おうとしたりとか。
これ間違いなくやってしまいそう。まだC#はまともなコード書いてないのでC#の
癖は出てないけど。

クラス継承とか見てるとなんかもうC++触るのやめたくなってくるような・・・
やっぱもう古いんだなぁ。純粋仮想関数の宣言見てると見てるとなんか虚しくなってきた。
C++のよさは実行速度、機能としてはtemplateとasm埋め込めるぐらい?
516デフォルトの名無しさん:04/05/29 21:19
netstatのように現在 ESTABLISHED状態になってる
リモートホストを列挙する機能は
BASEクラスライブラリにはないでしょうか?
VC++/VC# 使ってコーディング作業してるんで、
VC++ 使ってて「this. まで打ったのにインテリセンス働かねー」とか言うことが多々。
他は構造体/クラスの後の ; 忘れがかなり多い。
↑もう C# にどっぷりつかっちゃってて。
518デフォルトの名無しさん:04/05/29 21:35
this.ってうつのめんどくさい。
me.とか.だけにしてほしかった・・・
【国際】「資源独占の恐れ」日中境界海域にガス採掘施設、欧米企業も参加−中国★4
http://news13.2ch.net/test/read.cgi/newsplus/1085826910/

【中国】(資源独占の恐れ!) 日中境界海域に施設(日本は調査予定なし)★2 [05/28]
http://news17.2ch.net/test/read.cgi/news4plus/1085792271/

中国が尖閣諸島周辺の国境付近で資源採掘を開始ししだしました
ガス採掘施設となってますが、それだけではなく

ここにはなんと、 「世界2位の規模を誇る原油」 が眠っています

そしてほとんど日本の領土側に眠っている資源が
ジュースのストローで吸い上げられるように中国に持っていかれます。

 こっから採掘吸い上げ全部中国へ
       ‖
       ‖|   
       ■|■■■■■■■■石油■■■■■■■■■■
       ■|■■■■■■■■■■■■■■■■■■■■
中国領土← | →日本領土

これがあれば日本は強力な資源大国になれます。
今の不況や失業など一気に吹っ飛ば、安全なバブルが到来します
この暴挙をみすみす許している日本政府と外務省、
国家の一大事であるにもかかわらず一切放送しないマスコミ
今声を上げないと、この国は終わるかもしれません。
>>518
いや、this くらいのタイピングなら体が覚えるから this と me は大差ないと思う。
タイピングに使う指が同じ文字が並んでるならともかく、this は全部違う指だし。
521511:04/05/29 22:31
>VC++/VC# 使ってコーディング作業してるんで、
今でもC++使うのはやっぱり過去の資産の有効利用ってことですか?それともC#では
実行速度に問題あるとか?

僕の場合は、これまでWindowsプログラマじゃなかったもんで、別プラットホーム上で
作ったエンジン部分のC++ソースにはできるだけ手をつけたくなかったことと、
Wn32やMFC使ったアプリ作りは難しくて面倒で、生産性がとっても低くなりそうに
思えたので、とりあえずWindowsに依存するややこしい部分を簡単に作るためにC#に
手を出したんですけど。
>>511
人と一緒に作業するときには自分の趣味だけで言語選べないし。
523511:04/05/29 23:10
確かに。
でもそのプロジェクト立ち上げるときにグループ内で言語の得失考えて選択するでしょ。
クライアントから言語指定までされる場合は別ですが。
C#でもテンプレートが使えるといいのにな。
>>524
もう少しの辛抱だ。

Generics に限らず、C# 2.0 の新機能早く使いてぇ。
static クラスとかイテレータとか匿名メソッドとか。
C#を使っててC++に戻って出来なくなることつったら、
・アロー演算子(->)が打てなくなる
・構造体およびクラス宣言のセミコロンが打てなくなる
・スコープ解決演算子(::)が打てなくなる
くらいかな。
まぁアロー演算子だけはなんともならん…
ただそれ以外ではそう混乱したことはない気がする。
書き方が違うだけで基本的にやってることは同じだしなぁ。
やってることは同じでも、リスト構造なんか書いてるとC/C++のときと混同しない?
*thisと同じ話なんだけどさ。なんでC/C++がこんな書き方するのか不思議に思えてくるよ。
2.0は機能が増えるのか・・・
複雑で豊富な機能はD言語に任せてC#はVBとJavaのreplaceだけでもいいんだけどな。
ところがVBからもJavaからも移行してこないというワナ
確かに移行するとしたらC++からが一番多いかもしれない。
え、そうなの?じゃDelphiからは?
それだと改宗にあたるから厳しい
>>532
教祖は変わってないぞ。
>>533
Del厨はそんなこと知らないと思われ
>>534
ΣΣ(゚д゚lll)
>>534
結構悲しい生き物なのなDel厨って。
つうか、普通しらんな。
最近C♯を使うようになったんですが、新しくインスタンスを生成する時に使用する「new」の使い方がイマイチです。
例えば
Date dt = new Date();
などとした時に、()内に引数を入れる時と入れない時がありますよね?
引数を入れるのは、引数の数が分かっているときに入れるってことですか?
配列を使うときは ArrayList ary = new ArrayList(s.length); とかってやりますよね?
ただ単にインスタンスを生成したい時は()内は何も入れなくていいんですか??
初心者ですみませんが、詳しい方アドバイスをよろしくお願いします。
>>538
キーワードは「コンストラクタ」と「オーバーロード」の二つだ。
実はメソッド呼び出しと変わらなかったりするぞ。
改宗って?Delphiは宗教なのか?
教祖は
Kahn?
>最近C♯を使うようになったんですが、新しくインスタンスを生成する時に使用する「new」の使い方がイマイチです。
今一って、全部引数なしじゃないといやってこと?
それとも意味の同じ引数しかゆるせんとか?
まあ、>>539の書き込みを参考にしてくれ。
542デフォルトの名無しさん:04/05/30 20:25
今、DOSのアプリケーションをシェルで実行して、
その出力をファイルにリダイレクトしようとしています。
環境はVS.NET 2003を使用しています。

System.Diagnostics.Process Exec2 = System.Diagnostics.Process.Start(exePath,arg);
Exec2.WaitForExit();

exePathにはDOSアプリの実行パスが入っています。
argには引数が入っています。

引数の最後に " > output.txt"として
リダイレクトしようととしたのですが、
プログラム自体が実行されません・・・
リダイレクトなしなら実行できます。

出力を得るにはどうしたらよいのでしょうか?
よろしくお願いいたします。

>>542
Process p = new Process();
p.StartupInfo.FileName = exePath;
p.StartupInfo.Arguments = arg;
p.StartupInfo.UseShellExecute = false;
p.StartupInfo.RedirectStandardOutput = true;
p.Start();
StreamWriter sw = new StreamWriter("output.txt");
sw.Write(p.StandardOutput.ReadToEnd());
sw.Close();
544デフォルトの名無しさん:04/05/30 23:06
>>543
ありがとうございます!できました。

Process p = new Process();
p.StartInfo.FileName = exePath;
p.StartInfo.Arguments = arg;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.Start();
StreamWriter sw = new StreamWriter("output.txt");
sw.Write(p.StandardOutput.ReadToEnd());
sw.Close();

StartupInfoはStartInfoと誤りだったので
今後のためにかわりに訂正しておきます。
ほんとうにありがとうございました!
temporary problem
accessing database.

自作ソフトでメールを受信してみるとサーバーから上記のようなエラーが
帰ってきます。原因は何なんでしょうか?
それとメールは、ヤフーの無料のものです
知るか
547349:04/05/31 00:45
>359
そこそこ動くようになってきたので晒してみます。
http://y74.net/co/so/No_0834.zip
まだ書き込みはできません…

WebBrowserObjectの制御がまだよくわかってない…
日本語ドキュメントが欲しくなる…

aximp c:\WINDOWS\system32\shdocvw.dll
とやったときSHDocVw.dllとAxSHDocVw.dllができたのですが、
いろんなサンプルなどを見るとファイル名は
AxInterop.SHDocVw.dllとInterop.SHDocVw.dll
になっています。
中身は同じようなのですが、なんでファイル名が違うのでしょうか?

MSHTML.TLBについて同じ事をやると
namespaceがMSHTMLになりました。
いろんなサンプルソースとか、twintail付属のmshtml.dllを見ると
namespaceは小文字でmshtmlとなっているみたいなのですが、
なんで違ってしまったのでしょうか?
元のmshtml.dllのバージョンでも違ってるのでしょうか?
これは、他の環境でも同じように動くのか心配になります。

>361
既に、認証鯖の方が対応したっぽい。
twintailが対応するのは時間の問題の様子。
言語はC#でなくてもかまいませんが、
XLS(MS-Excel)のファイルをプレーンなタブ区切りテキストファイルへと変換させることは可能ですか?
可能
どのようにして可能かヒントを頂けないでしょうか!?
>>550
http://www.google.com/search?num=50&lr=lang_ja&q=C%23+Excel
これと
"オブジェクト ブラウザ"
で、がんばれ。
>>550
COM
VSTO
OleDbConnection
306572 - [HOW TO] ASP.NET、ADO.NET、および Visual C# .NET を使用して Excel データをクエリし、表示する方法
http://support.microsoft.com/default.aspx?scid=kb;ja;306572
サードパーティのライブラリ
553デフォルトの名無しさん:04/05/31 15:27
VBで unload me はC#ではどうやるの?
コントロールのボタンを押した時、Form_Closeingをして
アプリケーションを終了したいのだけど。
>>553
>  VBで unload me はC#ではどうやるの?
>  コントロールのボタンを押した時、Form_Closeingをして
>  アプリケーションを終了したいのだけど。

フォームを閉じたいならClose()メソッドを呼べば良かろう。
555デフォルトの名無しさん:04/05/31 15:42
でも
public class Form1 : System.Windows.Forms.Form
何だけど
 Form1.Close()ってメソードがないんですけど。
>>555
ああうんそうだと思ったよオブジェクト指向を理解してなさそうだって。

Form1.Close()なんて書いたらstaticメソッドを意味するに決まってるじゃないか。
Form1内で書くなら自分自身を閉じるならthis.Close();だ。

だがしかししばらくコンソールアプリでオブジェクト指向の勉強をすることを勧めるぞ。
557デフォルトの名無しさん:04/05/31 16:23
何? しかしthis.name をプリントすると "Form1"なのに
確かにthis.close()はできる。
 staticの違いですか? ありがと。

 
558デフォルトの名無しさん:04/05/31 16:31
CのプログラムをC#で評価したいのですが、
#define P_h80 0x20
これをC#ではどう書いたらのでしょう

>>558
C/C++的なマクロはC#ではサポートされない。バグの温床だったから。

でも
> #define P_h80 0x20  
なら定数にしてやればいいよな。
アプリ終了ならApplication.Exit();じゃないのか?
>>557
Form1はクラスだけど、インスタンスじゃないから。

public class Form1 : System.Windows.Forms.Form

の場合、Form1ってのは、 System.Windows.Forms.Formを継承した
パブリックなクラスなのね。だもんでForm1から幾つもインスタンスを生成
出来る訳よ。

ときに、main()関数に

Application.Run(new Form1());

って書いてるでそ。Form1の新しいインスタンスを生成してる訳だ。
試しに、Application.Run(Form1());でコンパイルしてみそ。こけるから。

で、フォームを閉じるのは、生成されたインスタンスに対して行わなきゃ
ならんので、Form1内に書くのであれば、

×Form1.Close();
○this.Close();

となると。
553はVB6しか使ってなかったのだろうけど、VB6もちゃんと理解できてない。
VB6だとフォームとしてForm1を作成すると暗黙的にグローバル変数のForm1も作成される。
変数としてForm1を使用しようとしたら暗黙的にLoadされてしまう。

C#では暗黙的にForm1が宣言されているなんでことは無い。
563550:04/05/31 18:36
>>551-552
サンクスコ!
だからアプリケーションを終了したいのなら、面倒なことせずに
Application.Exit();
だろうよ。

終了せずにフォームだけ閉じたいのなら
this.Close();
だけどな。
>>564
Application.Exit()だとForm.ClosedやForm.Closingが発生しないからちょっと注意が必要だし。
>>565
俺もそう思う。
>>565
俺はそうは思わない。
>>567
俺もそう思う。
俺はどうでもいい
そうは思わないってことは注意する必要はないってことか、そうか
あの〜、突然ですが、VSTi作ってるひといませんか?
.NETでやる作業ではないな
574557:04/06/01 08:40
>561
 ありがとう。いやー、よくわかりました。メチャすっきりしました。
 
 Form1 aForm = new Form1();
Application.Run(aForm);
  と書き換えると
Form1の中で aForm.close()なんて書き方をしちゃいけない(できない)わけですね。

>5xx
Application.Exit();
ではなんかマズイようです。Main()の終了までトレースできますが、
終了後、エディターに戻ってきません。
 
 Applicationはこのシステムの常駐インスタンスなんですかねー。
 Form1というクラスでグローバルのインスタンスを直接呼び出すのはよくないかも?
>>574
相変わらず頓珍漢だなオイ。

>Form1 aForm = new Form1();
>Application.Run(aForm);
> と書き換えると
>Form1の中で aForm.close()なんて書き方をしちゃいけない(できない)わけですね。

クラスとインスタンスの違いを理解してないのがバレバレ。

>Applicationはこのシステムの常駐インスタンスなんですかねー。
>Form1というクラスでグローバルのインスタンスを直接呼び出すのはよくないかも?

ApplicationはWindowsメッセージを処理するための静的(=static)なメソッドなどを集めたクラス。インスタンスなんか無い。
C#としてグローバルな変数もオブジェクトも存在しない。確かにstaticはそれに近い働きもあるが。
576554:04/06/01 10:08
クラスが型でインスタンスが実体。
Applicationは実体ではないだろうか?
 なぜなら実体のないものは実行でけない。Applicationは実行できる。
もしApplicationが継承できたり、インスタンスを作れるとすれば
それはクラスでもある。
 では何なのだ。結論としては、今ちょっとわからない。

>>576
Applicationはクラスである。
しかし、publicなコンストラクタがない=インスタンスを作れないクラスである。
ちなみに継承もsealedで禁止されている(重要ではないが)。

さて、staticという概念がC#に存在する(別にC#に限ったことではないが)。
通常のメソッドやプロパティはクラスのインスタンスの中に存在するが、
staticなメソッドやプロパティはクラスそのものに存在する。
だからインスタンスを一つも作らなくとも扱えるし、逆にインスタンスを幾つ作っても一つしか扱えない。

プログラムのエントリポイントとなるMainメソッドはその典型だ。
プログラムを起動する際、初め「オブジェクトインスタンスは存在しない」。
オブジェクトが存在しないのにMainメソッドが呼び出せるのは、
Mainメソッドはstaticで定義されているためである。
あー、
>  しかし、publicなコンストラクタがない=インスタンスを作れないクラスである。
これはなんか激しく誤解を招く表現だった。というか間違ってる表現だ。
この部分は無し。
579たすけて!!!:04/06/01 10:55
誰か問題といてくれますか??今なんですけど。
テスト中でせっぱつまってます
580デフォルトの名無しさん:04/06/01 11:01
>>579
大学か?
おまえの所属する機関名を晒して、
とりあえず問題をうpしろ。
最近は学校でC#の演習なんてのもあるのか。
582デフォルトの名無しさん:04/06/01 11:09
いい時代になったな。大学でC#か。でもいろんな言語をまわりまわってからC#の方が、よりありがたみがわかっていいと思うんだけどなぁ。
583たすけて!!!:04/06/01 11:12
大学なんですけど、どうやってここに問題貼ればいいですか??何もわからなくてすいません。。。
584たすけて!!!:04/06/01 11:13
問題

1. 整数型配列 data 内の, data[0] から data[n-1] までの総和を返す関数 int sum(int data[], int n) を作れ.

2. 整数型配列 data 内の data[0] から data[n-1] までの値の中で,最大の値を返す関数 int max(int data[], int n) を作れ.

3. 整数型配列 data 内の data[0] から data[n-1] までの中で,2番目に大きな値をもつ要素の添字を返す関数 int secondBiggestIndex(int data[], int n) を作れ.

ただし,同じ値の要素が複数個ある場合には,添字の順序で早い方の要素の値がより大きいと見なす.このことにより,2番目の大きい要素,というものが一意的に定まる.次の具体例を参照のこと(2番目に大きいと見なされる要素を赤くしている).
{1, 2, 3, 2, 3, 3}   (三つある3は 3 > 3 > 3 と見なされる)
{1, 3, 2, 1, 2, 1}   (二つある2は 2 > 2 と見なされる)

そして,作った関数を用いて次の計算をして,その結果を求めよ.
これです。。。
585たすけて!!!:04/06/01 11:14
続きです。

#include <stdio.h>
#include <stdlib.h>
#define N 1000

main()
{
int i, s, m, sbi;

int data[N];
srand(1);
for (i = 0; i < N; i++) {
data[i] = rand() % 1000;
}
s = sum(data, N);
m = max(data, N);
sbi = secondBiggestIndex(data, N);
printf("%d %d %d\n", s, m, sbi);
}

答案は,課題提出システムにある 小テスト へメッセージとして提出.
答案には,関数定義と計算結果とを書くこと.
Cじゃねえかドアホ
587デフォルトの名無しさん:04/06/01 11:17
ここはC#相談室だとわかってやっているのか?
それは C だろ。
588デフォルトの名無しさん:04/06/01 11:18
つか他力本願って好きじゃない。まぁやってやれない事は無いが・・・。
あとどれぐらいの時間だい?
スレ違いもさることながら、
その問題のどこがわからないのかがわからない。
590デフォルトの名無しさん:04/06/01 11:21
int sum(int data[], int n)
{
  int i;
  int sum = 0;
  for(i=0; i<n; i++) {
    sum += data[i];
  }
return (sum);
}

とりあえずsum関数。
591デフォルトの名無しさん:04/06/01 11:22
楽勝だな。
592デフォルトの名無しさん:04/06/01 11:23
脳内で解けるな。
593たすけて!!!:04/06/01 11:24
すいません。わかってなくて、、、。
プログラムの作り方自体がわからないです。
11:40分までなんですが、、。
壮大なネタだな。w
595デフォルトの名無しさん:04/06/01 11:27
max関数はこんな感じでいいか?

int max(int data[], int n)
{
  int i;
  int max = 0;
  for(i=0; i<n; i++) {
   if(max < data[i]) {
     max = data[i];
   }
  }
  return (max);
}
596デフォルトの名無しさん:04/06/01 11:28
>>593
コンパイルの仕方がわからないのか?
それともC言語がわからないのか?

なんなんだおまえは?
597デフォルトの名無しさん:04/06/01 11:29
さっきから関数を作っているのは無駄なのかそうでないのか、どっちなんだ?
598たすけて!!!:04/06/01 11:29
c言語がわからない。。です。
System.Math使って答えてあげようか?
600たすけて!!!:04/06/01 11:34
590,595ありがとうございます。
大丈夫だと思います。
               _, ‐ ' ゙ ゙̄ヽ,
  。 ゚,        , '゙          )
    。     ,ノ!,'         ◎/
  ゚ ゚,,.. --─- ノ゙!,/            ,'                  _
  て   ゙̄'i;  ノ゙!,!゙         ゙i, ノ               ∋oノハヽo∈_,.   ' ‐ .,_
  てて 。 ゙'゙ ,!V         ,゙゙ :,   。            ( ´・`) ^~         ゙)
 !.  ,゙      !!.,i         ノ゙,  .'.,   。            )⌒ヾ_.       ,.. ‐'゙
   .|      ! !_!_     ,'゙  i.,_ ゙,              .,_ノ .^フb'-'=y-‐ ' ゙
 i i |.       ! .!_!    ,゙   ゜ ゙!i,'              !゙k,\(
   .!.       i .i'i   ,゙                   ,べ,ヘへべ,_
 i  .i.      ゙, ',   !       。            Y(   〉 ヾ\
  ! i ',      '!,',   !,        。           〉 ヘ       ゞ\
 ヘ  ' ,      ' ,   ',                   (     ゝ Y   〉
    ヘ \.      \  ' ,        。゜        .ゝ 〉       ゞへ
 \ へ   \.       \,. ゙' ,      。 ゜。 。 ゜    「゙Y   く /   へ入
  へ  \ \        ゙ ' ‐゙ '_‐:,_   ゚)\ノヽ  _,, 〆、 ゝ゜ 。゚ヘ く  ヘ 〉、
     へ    ' .,          '! !  ゚ノ)\)\λ  \\\))\ル))\「    〉入
          へ   ' , へ ノ(ノ( '.,_' ノ )\λ )\ ) ) .) ) )) \∠~く  へ べ\
602デフォルトの名無しさん:04/06/01 11:39
int secondBiggestIndex(int data[], int n)
{
  int i=0;
  int sbi = 0;
  int sec = 0;
  int max = max(data, n);
sec = max;
  do {
   
   if(max > data[i] && data[i] > sec) {
     sec = data[i];
     sbi = i;
   }

   i++;
  } while(i<n);
  return (max);
}
それほどまで分からない状態で、しかもC#との区別もつかないで、
テストに合格して人に認められるなんてうらやましい。
何しに学校はいったのか知らないけど、ずいぶん得な人生だな。
604デフォルトの名無しさん:04/06/01 11:40
ちょっとギリギリだのぉ。
間に合うか。

>>585のプログラムの下に、
今書いた3つの関数を貼り付けろ。

んで、

>>585のmain()の前の行に

int sum(int data[], int n);
int max(int data[], int n);
int secondBiggestIndex(int data[], int n);

を追加な。で、コンパイル&実行。
605たすけて!!!:04/06/01 11:42
604本当にありがとうございます。
606デフォルトの名無しさん:04/06/01 11:42
あ、間違えたw
index値の優先度があったんだ。考慮してねぇや・・・。













ま、いいか。どうせネタだろうし。
607デフォルトの名無しさん:04/06/01 11:45
これがネタじゃなかったら、たすけて君をどうやって苛めてやろうか。
&nbsp失敗したとことか、そうやって書くものだと思いこんでコピペ
近年まれに見る盛り上がりだったな。
610デフォルトの名無しさん:04/06/01 11:51
たすけて君さぁ、助けてやったんだ。
今回のテストの準備不足に対する反省文と感謝の気持ちを
400字にまとめて貼り付けろや。

それから、さっきの問題に追加で、
4.中間値を返す関数int mean(int data[], int n) を作成せよ。
これ宿題な。やっとけよ。おまえこの程度の問題がさっぱりじゃ駄目だ。
就職で絶対苦労するタイプだ。現4年、大手IT企業内定のオレが言うんだから間違いない。
611デフォルトの名無しさん:04/06/01 11:52
ネタでも楽しめたよ。さて飯でも食いに行くか。
なんか凄い盛り上がっていたみたいだね。
613デフォルトの名無しさん:04/06/01 12:48
>559
> #define P_h80 0x20
>なら定数にしてやればいいよな。

では 
#define BIT(n) (1<<n)
はC#ではどうします?
そのくらいなら開いてやれ。
それなりに複雑なら関数作れ。
むしろCの逐語訳でC#のコードを書くな。
615デフォルトの名無しさん:04/06/01 13:21
Cしか受け付けない環境ってのはありますから、
CをC#の便利な環境ででシュミレーションするのは意味があるんです。
 実際今まではVBでシュミレーションして、うまく行ったら、Cに
書き換えて、マイコンに移す。なんて作業をやってましたから。
 でもやっぱり、関数にするしか方法ないですか?
なんのためにMC++あると思ってんだ
617デフォルトの名無しさん
> 大手IT企業内定のオレ
( ´,_ゝ`)プッ