ふらっとC#,C♯,C#( ..
[2ch|▼Menu]
256:sage
09/06/08 22:45:24
>>239
なるほど。
たしかにArrayのインデックスは0からで、
0(つまり1行目)ではなくて2行目から処理してますね。
それはそれでありがとうございますです。

しかし、やはりファイル更新の監視はうまくいかず、
該当するtmp.txtを2回更新すると、2回目には、例外が発生します。
別のプロセスで使用されているため、
プロセスはファイルtmp.txtにアクセスできません。
だそうです。


257:sage
09/06/08 22:46:50
>>242
YES。
ドラッグ&ドロップして、プロパティで、
NotifyFilterをLastWriteにしました。
いまの全コードはこれだけです。

public Form1()
{
InitializeComponent();

this.fileSystemWatcher1.Filter = "tmp.txt";
this.fileSystemWatcher1.NotifyFilter = System.IO.NotifyFilters.LastWrite;
this.fileSystemWatcher1.Path = "C:\\";
}

private void fileSystemWatcher1_Changed(object sender, System.IO.FileSystemEventArgs e)
{
//MessageBox.Show("changed");
string[] lines = System.IO.File.ReadAllLines(file, Encoding.GetEncoding("Shift_JIS"));
label1.Text = lines[1];
label2.Text = lines[2];
label3.Text = lines[3];
label4.Text = lines[4];
label5.Text = lines[5];
}


258:デフォルトの名無しさん
09/06/08 22:47:14
>>256
その例外が言ってる通りじゃないか。
ほかのプロセスが掴んでたらファイルが開けないことがある。

259:デフォルトの名無しさん
09/06/08 22:51:04
>>255
勉強する必要はないかと、当の本人に聞くなり、問題のブツで試してみればいい。
組み込み用のハードディスクに突然の電源断に耐えられるように設計された、書き込みバッファの無いHDが
そういう問題があって、スレッド使って対処したという苦労話は聞いたことがある、ただ.NETが取り扱うハードウェアというと、
通常のWindowsかモパイルCE系だと思われるが、そんなハードディスクなど聞いたことが無いね、
だからといって無いとは言いきれないので、問題のブツで確かめてみるしかないのでは。

260:sage
09/06/08 22:57:14
>>258
なるほど。
System.threading.Thread.Sleep(1000);
でとりあえず解決しました。
サンクスです。


261:デフォルトの名無しさん
09/06/08 23:09:11
すいません
C#で簡単なアニメーションさせたいので
bmp等の画像描画処理について詳しく書かれているサイトってわかりますか?
初心者なのでできるだけ詳しく書かれているところがいいんです。
よろしくお願いします。

262:デフォルトの名無しさん
09/06/08 23:14:29
他のクラスからprivateなメソッドを無理やり使う方法を教えてください

263:デフォルトの名無しさん
09/06/08 23:15:13
>>262
リフレクション

264:デフォルトの名無しさん
09/06/08 23:25:18
>>263
サンプルコードありますか?

265:デフォルトの名無しさん
09/06/08 23:28:08
いくらでもあるよ

266:デフォルトの名無しさん
09/06/08 23:28:28
くり返しのところをforで書き換えてみたところ、
2回目の表示で、1回目の表示が消えないのです。
どこかでdisposeとかする必要があるのでしょうか?

Label[] label;

private void fileSystemWatcher1_Changed(object sender, System.IO.FileSystemEventArgs e){
System.Threading.Thread.Sleep(1000);
string[] lines = System.IO.File.ReadAllLines(file, Encoding.GetEncoding("Shift_JIS"));

label = new Label[5];
for (int i = 0; i < 5; i++){
this.label[i] = new System.Windows.Forms.Label();
this.label[i].AutoSize = true;
this.label[i].BackColor = System.Drawing.Color.Transparent;
this.label[i].Font = new System.Drawing.Font("メイリオ", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(128)));
this.label[i].Location = new System.Drawing.Point(23, 35 + i * 60);
this.label[i].Name = "label[i]";
this.label[i].Size = new System.Drawing.Size(62, 24);
this.label[i].Text = lines[i];
this.Controls.Add(this.label[i]);
}
}


267:デフォルトの名無しさん
09/06/08 23:28:52
取りあえず、ヒントもらったらググる位しようや

268:デフォルトの名無しさん
09/06/08 23:31:08
このスレには優しい人とそうでない人がいます。

269:デフォルトの名無しさん
09/06/08 23:31:20
>>264
何勝手に乗ってきてるわけ?

270:デフォルトの名無しさん
09/06/08 23:31:57
んなもん当たり前だろ

271:デフォルトの名無しさん
09/06/08 23:32:19
MSDN にもあるし、いろんなところにあるよ。

Reflection とか MethodInfo とかで探してみ。

272:デフォルトの名無しさん
09/06/08 23:32:47
ありがとう。

273:デフォルトの名無しさん
09/06/08 23:37:32
どんどんラベルを追加してるだけのような。

274:デフォルトの名無しさん
09/06/08 23:44:33
C#にはVBのWithに相当する機能はありますか?

クラス1.プロパティ1 = x;
クラス1.プロパティ2 = y;

というのを

With クラス1
  .プロパティ1 = x;
  .プロパティ2 = y;
End With

みたいに書いて入力の手間を省きたいのですが。
Withを使うとVBの場合は実行速度も少し上がるそうですが。

275:デフォルトの名無しさん
09/06/08 23:46:33
ありません。

276:デフォルトの名無しさん
09/06/08 23:46:40
>>248
ありがとうございます。やってみます!

277:デフォルトの名無しさん
09/06/08 23:54:22
>>274
インタプリタなら速くなるのは分かるがVB.NETでも速くなるのかな。
速くなるならC#でも深いところにあるクラスは一度ローカル変数に代入してからのほうが速い?

278:デフォルトの名無しさん
09/06/08 23:55:31
>>241
「そのクラスにアクセスするより前に一度だけ実行される」ことが
保障されているだけじゃなかったか?

>>274
全く同じ機能はない
初期化時限定のオブジェクト初期化子くらい

279:デフォルトの名無しさん
09/06/08 23:57:22
つーか、With って .NET ではシンタックスシュガーじゃなかった?

280:デフォルトの名無しさん
09/06/09 00:00:08
>>278
> 「そのクラスにアクセスするより前に一度だけ実行される」ことが
> 保障されている
規格上はそうなってた気がする。
実際は、たいてい直前。

281:デフォルトの名無しさん
09/06/09 00:11:39
>>277
多分JITコンパイルで最適化されるんじゃないかなその程度

282:デフォルトの名無しさん
09/06/09 00:35:09
ないんですか。残念です。
この程度なら、プリプロセッサあたりで処理してくれてもいいと思うのは私だけでしょうか。
コントロールの初期設定とか、同じ名前空間やクラス名がずらっと並んでるのを見ると、
もうちょっと楽にコーディングできる手段があってもよさそうに思うのですが。

283:デフォルトの名無しさん
09/06/09 00:42:23
インテリセンスがあるからコーディングの手間はさして変わらん。
コードが汚くなるからwithを採用しない言語は多い。


284:デフォルトの名無しさん
09/06/09 00:47:33
>>282
初期設定なら似たような事はできる
var tmp = new Hoge() { A = 10 , B = 30 };
A,B はHogeのプロパティーまたは変数

285:デフォルトの名無しさん
09/06/09 00:54:53
VBにあってC#に無い寂しい機能はLINQToXmlのXMLリテラルかな。
これがあったら、withどころか究極のデータセッティングができるんだけれど……

286:デフォルトの名無しさん
09/06/09 00:57:10
>>284
なるほど、そういう書き方もできるんですね。勉強になります。

287:デフォルトの名無しさん
09/06/09 01:00:41
>>277
そうみたいだよ。
URLリンク(www.atmarkit.co.jp)

288:デフォルトの名無しさん
09/06/09 01:06:22
>URLリンク(www.atmarkit.co.jp)
なるほどね、C#ならスコープ使えって事か
{
var a = hoge.member;
a.Prop1 = 10;
a.Prop2 = 10;
}

289:デフォルトの名無しさん
09/06/09 01:13:13
>>287
確かに、オブジェクトをいちいち作ってやれば同じことになりますね。
withほど簡略化はできませんが、多少は楽が出来そうです。
コード的にもメリットがあるみたいですし。

290:デフォルトの名無しさん
09/06/09 01:13:41
リンク先のような場合、
ds.Tables("Customers").Rows
がそれなりに処理重そうだから無意識に一度ローカルに代入してるな。

ただ >>288 のような軽いメンバアクセスはそのまま見ちゃってるなぁ。

291:デフォルトの名無しさん
09/06/09 01:21:50
イベントで this.xxxでアクセスするより senderをcastするほうがいいってことか。

292:デフォルトの名無しさん
09/06/09 01:25:30
キャストの方がコスト高いだろ

293:デフォルトの名無しさん
09/06/09 01:27:45
ますますはまってます。
label = new Label[5];
for (int i = 0; i < 5; i++)
{
this.label[i] = new System.Windows.Forms.Label();
this.label[i].Dispose();
}
for (int i = 0; i < 5; i++)
{
this.label[i] = new System.Windows.Forms.Label();
//this.label[i].Dispose();
//this.label[i].Text.Remove(1);
this.label[i].AutoSize = true;
this.label[i].BackColor = System.Drawing.Color.Transparent;
this.label[i].Font = new System.Drawing.Font("メイリオ", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(128)));
this.label[i].Location = new System.Drawing.Point(23, 35 + i * 60);
this.label[i].Name = "label[i]";
this.label[i].Size = new System.Drawing.Size(62, 24);
//this.label[i].Text = "";
this.label[i].Text = lines[i];
//this.label[i].Text = this.label[i].Text.Replace(this.label[i].Text,lines[i]);
this.Controls.Add(this.label[i]);
}




294:デフォルトの名無しさん
09/06/09 01:50:33
拡張プロパティってどう書くの?

295:デフォルトの名無しさん
09/06/09 01:55:27
書けない

296:デフォルトの名無しさん
09/06/09 02:14:52
ファック!ファック!ファック!!

297:デフォルトの名無しさん
09/06/09 03:09:25
クラスつくるとき
class testint{
private int a;
}

ってやって
testint test=new testint()
なんで
testint test
だけで実装できないんだ。わざわざ無駄な手間かけさせる意味は?
あと、なんでtestint()の最後、何もない括弧をつけなきゃいけんのだ。

298:デフォルトの名無しさん
09/06/09 03:17:10
>>297
CかC++から来た人?もしそうなら、
クラスは常にポインタ型(のようなもの、ポインタ演算はない)。newしなければnullが入っている。
という短い文章で分かってほしい。

testint test=new testint()と打つのは、Visual Studioとか入力支援が良くできたところで書けば案外大した手間でない。
クラス名を2度書くのが嫌ならvarがある、ローカル変数限定だけど。
()が要るのはなぜ?というのは俺も思うところだけど。

299:デフォルトの名無しさん
09/06/09 03:24:51
コンストラクタだから。引数のないメソッドの()も省力しないだろ。

300:298
09/06/09 03:27:50
>>299
ありがとう、納得した。

C++はnew hogeで通るし、引数があっても括弧を省略できる場合のある
VBとか使っていたからそこまで考えが及ばなかった。

301:デフォルトの名無しさん
09/06/09 03:41:29
>>298

c++を見てみました。
c++なら
class testint{
private:
int kazu;
}

testint test;
test.kazu=10;

これでいいのか・・・
newとかいうのはオブジェクト指向で必ずしも必須というわけじゃないんだね。
コンストラクタも自動的に呼び出されるのか。
c#とはずいぶん違うんだね。初心者にはc++のがいいのかな

302:デフォルトの名無しさん
09/06/09 03:44:14
c++のnewはヒープに作る場合

303:デフォルトの名無しさん
09/06/09 06:52:25
c#のnewはどこのメモリを使うん?

304:デフォルトの名無しさん
09/06/09 06:57:08
字は読めても話の流れが読めない人って誰?

305:デフォルトの名無しさん
09/06/09 08:46:14
>>303
C++ は new の有無でスタックはヒープかわかれるけど、
C# は class か struct かで分かれる。
class なら new したのはヒープに、
struct なら new は単なるコンストラクタ呼び出し、スタックに取られる。

struct でもわざわざ new しないと行けない理由は、
その方が構文解析が楽(後々他の構文追加しやすい)とか、
初期化し忘れを防ぐためにわざわざ面倒な構文にしてあるとか、
class とそろえるとか、そういう理由だと思う。


306:デフォルトの名無しさん
09/06/09 10:11:50
struct は new してもいいがしなくても構わないぞ、ただし全メンバーをセットしてからでしか使えないが
struct の new は引数無しなら、全フィールドに0入れるよという指示で、それ以外なら指定の定型初期化を処理するという事ではなかろうかと。
最近は default というキーワードができて、二重機能っぽくなってるいけれど、これはジェネリックの都合かなと。

307:デフォルトの名無しさん
09/06/09 10:16:51
それと、Cでいう所の自動変数を宣言する場所で構造体を宣言すると、スタックに乗りそうな予感がするものだが
たとえば
void Test()
{
int tmp;
Action a = () => { tmp = 3 ; };
}
このtmpは、スタックに取られているとはどうにも思えない
内部的には勝手JITの勝手というのが実態かと。

308:デフォルトの名無しさん
09/06/09 10:23:10
HttpWebRequestクラスでリクエストヘッダーを読み取ったりするとき
UserAgentとかkeep-aliveプロパティは取得できるのですが
(<HttpWebRequest.UserAgent>プロパティ,<HttpWeqRequest.KeepAlive>プロパティ)

Host,Accept-Language,Accept-Encoding,Accept-Charsetプロパティが読み取れません。

読み取り方をよろしくお願いします。また、ヘッダー情報を編集してリクエストストリーム
に流せるかどうかも教えていただきたいです。

309:デフォルトの名無しさん
09/06/09 10:34:54
Console.WriteLine( string.Format( "{0,4:f2}", 10.0 ) );
Console.WriteLine( string.Format( "{0,4:f2}", -10.0 ) );

こんな感じで作った文字列の桁を揃えたいんだけど、うまくいきません。
上の例だと

10.00
-10.00

となります。
マイナスの符号があるときになんとかしたいんだけど、
うまいことやる方法はあります?

310:デフォルトの名無しさん
09/06/09 10:51:23
>>308
Requestでヘッダを「読み取る」必要があるのかどうかって話はあるが
直接プロパティになってないヘッダはHeadersプロパティから取得設定できる

311:デフォルトの名無しさん
09/06/09 11:09:11
>>309
セクション区切り記号「;」を使ったカスタム書式指定かね
{0,5: 0.00;-0.00}
ところで小数点以下2桁有効だとフィールド幅4は意味がないと思うけど

312:デフォルトの名無しさん
09/06/09 11:12:44
>>307
それはラムダ式(クロージャ)が影響している。
() => { } を内包するクラスが暗黙に作られてそのメンバにtmpがあるはず。

313:デフォルトの名無しさん
09/06/09 11:17:12
>>311
ごめん実はそのあたりよくわからなくてテキトーに書いてました
もっと詳細を言うと、x,y,zを持つポイントクラスがあって

始点:( x1, y1, z1 )
終点:( x2, y2, z2 )

みたいな感じで小数点以下3桁で計6桁ぐらいで書き出したいときの
桁揃えという話でした。詳しく書かなくて申し訳ない。


314:デフォルトの名無しさん
09/06/09 11:33:00
>>310
回答ありがとうございます。

Webスクレイピングをやっていて、リクエストしてもうまく次のページに行かないんです。
Postされるべきデータ(トランザクショントークンとキーワード)はバッチリだと思うのですが。。
(Firebugを使って手動で動かしたときのリクエストヘッダーやPOSTしたデータの中身が
確認できる)

ヘッダー情報のリファラーが監視されてるみたいでそれについては確認できたのですが、
それでもうまく行きません。もちろんクッキーについてはクッキーコンテナをリクエストに
かませてますし、他に思いつくのが他のヘッダー情報も監視されているかもということです。

そこで自作プログラムのリクエストのヘッダー情報とFirebugで手動で動かしたときに
確認できるヘッダー情報を見比べて、必要あらば修正してリクエストに流そうと思ったわけです。

310さんの言うとおりに

List<string> list = new .........

for(int i =0;i < req.Headers.Count; i ++)
list.add(req.Headers[i];

で取得してみたのですが一行しか取得できないんですけど。。書き方が違うんですかねぇ(^ ^ ;
長文スマンです。

315:デフォルトの名無しさん
09/06/09 11:42:03
とりあえずHttpWeb「Response」だよな?

316:デフォルトの名無しさん
09/06/09 11:48:48
>>315  げ、ひょっとして自分のリクエストのヘッダーを確認するのって
HttpWebRequestからはできないんっすか。。???
ちょっとレスから拾ってみたいと思います。。。

317:デフォルトの名無しさん
09/06/09 11:58:38
事情は了解
それってデバッガでステップ実行すればよくね?
あとは別のパケットモニタアプリ使うか

318:デフォルトの名無しさん
09/06/09 11:59:09
WireSharkか何かでパケットキャプチャして本当にブラウザと同じリクエスト飛んでるか調べたら?
その方が手っ取り早い気がする。

319:デフォルトの名無しさん
09/06/09 11:59:38
リロードしてなかった。すまぬ。

320:デフォルトの名無しさん
09/06/09 12:06:44
>> 318
WireSharkは友人にも進められて検討してるのですが、
修正の必要が出てきたときにどうやって書き込めばいいのでしょうか?
コードサンプルがあるとありがたいっす。

321:デフォルトの名無しさん
09/06/09 12:14:49
HttpWebRequest req //略
req.Headers.Add(HttpRequestHeader.AcceptEncoding,"gzip");

// req.Headers[HttpRequestHeader.AcceptEncoding] = "gzip"; も可

何が困ってるのかイマイチ伝わんね。

322:デフォルトの名無しさん
09/06/09 12:47:50
321>>
文章力なくてすみません。。
321さんが書いて下さったみたいなコードサンプルがようするに欲しかったんです^^;
レスありがとうございます。

323:デフォルトの名無しさん
09/06/09 12:55:26
ええええええええええええええええええええええええええええええええええええええええええええええええ

324:デフォルトの名無しさん
09/06/09 13:07:11
うるさい

325:デフォルトの名無しさん
09/06/09 13:23:19
321>
あの〜、やってみたんですけど
req.Headers.Add(HttpRequest.Header.Host, "HostName");
って書くと'Host' ヘッダーを直接変更することはできません。
って出ちゃうんですけど。Hostの書き換えは無理??

326:デフォルトの名無しさん
09/06/09 13:25:42
>>325
お前死ぬの?死にたいの?叩き殺されたいの?

URLリンク(msdn.microsoft.com)(VS.80).aspx

解説
Headers コレクションは、要求に関連付けられているプロトコル ヘッダーを格納します。
Headers コレクションには格納されず、システム、プロパティ、またはメソッドのいずれかで設定される HTTP ヘッダーの一覧を次の表に示します。

Host システムにより現在のホスト情報に設定されます。

327:デフォルトの名無しさん
09/06/09 13:29:58
いいよ
1から10まで聞かないとできない奴は排除したれ

328:デフォルトの名無しさん
09/06/09 13:36:29
>>1

329:デフォルトの名無しさん
09/06/09 14:29:34
public はクラスの外からのアクセスを許可し、private は許可しないみたいですが
それならpublicだけでよくないですか?

330:デフォルトの名無しさん
09/06/09 14:34:04
人間はミスする生き物なので、触れて欲しくない要素は外部に公開しないようにしております。

全員が全員ドキュメントをキチンと読んで、万に一つのミスも犯さないようなパーフェクト人間であれば全てpublicでも良いでしょうね。

331:デフォルトの名無しさん
09/06/09 14:47:30
時そばで、勘定中にカウンタを外部から書き換えられちゃったから
1文ごまかされちゃったんだよね。

332:デフォルトの名無しさん
09/06/09 14:51:35
>>330-331
レス感謝です。

333:デフォルトの名無しさん
09/06/09 14:55:55
>>331
感心したわ。

334:デフォルトの名無しさん
09/06/09 19:16:49
C# 2008で質問です。

非表示のフォームにDataGridViewを貼り付けてあります。
ここにReadXMLでデータを読み込んで、DataGridViewからデータを取り出そうとしたら
どのセルも空白のままでした。

一度でもフォームを表示すれば、そのタイミングで実際の読み込み動作が行わて
セルにデータが入るのですが、
非表示のままでデータをDataGridViewに反映させる方法を教えてください。

335:デフォルトの名無しさん
09/06/09 19:26:21
DataSet使おうよ…

336:デフォルトの名無しさん
09/06/10 03:18:40
VCEEでPen p=new Pen()をつくって
Form1にg.drawline(p,0,0,100,100)とかやったら
書けるんだけど、
画面切り替えたら消えちゃうんだけど消えないようにするにはどうやるの?

337:デフォルトの名無しさん
09/06/10 03:22:15
また描く
もしくは,なんかDoubleBufferみたいなプロパティがあればtrueに

338:デフォルトの名無しさん
09/06/10 03:22:59
Paintイベントで描く

339:デフォルトの名無しさん
09/06/10 03:26:06
>>337
なんか他にも設定する必要ありそ
URLリンク(www.google.com)

340:デフォルトの名無しさん
09/06/10 09:25:21
ソリューションエクスプローラー

ソリューション’game’(1プロジェクト)
└game
 ├ソースフェイル
 │├hello.cpp
 │└helo2cpp
 ├ヘッダーファイル
 └リソースファイル

となっています。

helllo.cpp

#include <stdio.h>
int main(void)
{
printf("こんにちは!\n");
return 0;
}

341:340の続き
09/06/10 09:26:03
helllo2.cpp

#include <stdio.h>
int main(void)
{
int a,b,c;
a=1;
b=2;
c=a+b;
printf("a+b=%d\n",c);
return 0;
}

とプログラムを書いたのですが、デバッグするとエラーが出ます。
main(void)が2つあるとプログラムが正常に作動しないんでしょうか?


342:デフォルトの名無しさん
09/06/10 09:31:01
スレ違い
どっかで聞き直すならエラーぐらい書けよ

343:デフォルトの名無しさん
09/06/10 09:32:34
mainは一つでなければなりません。

344:デフォルトの名無しさん
09/06/10 10:07:46
>>343
そうですか。よくわからないけど研究してみます。

345:デフォルトの名無しさん
09/06/10 10:28:53
C++の基礎を一通り勉強してみて、やっぱりC#にしようか悩んでるのですが・・・

作りたいアプリはあるウェブサイトの更新をするアプリです。
HTMLフォームのユーザビリティに嫌気がさしてきたもので。
スクリプト言語ですがPHPとかActionScriptとかJavascriptを仕事で使ってます。
JAVAもできます。

条件としては
1、オブジェクト指向でプログラミングできること。
2、なるべくwindowsに色々インストールしなくても使えること。
3、今後も役に立ちそうな言語であること

C#って.NETフレームワークが必須なんですよね?

C#って.NETフレームワークがインストールしてあったら、
他に何かランタイム無しで動くのですか?

2はインストーラーを作ればそれほど気にすることはないって聞いたけど
そういうもんでしょうか?


346:デフォルトの名無しさん
09/06/10 10:45:56
.NET2.0ターゲットならたいがいランタイムは入ってるからそんなに気にしなくていいよ
少なくともJavaよりは嫌われない

347:デフォルトの名無しさん
09/06/10 10:51:00
ClickOnceインストーラを使うのであれば、依存関係は勝手に作ってくれるしランタイムも言語別の細かいところも自動。
自分が何か手をいれる必要はないので意識はしなくてもいいし、自分はした事が無い。

348:デフォルトの名無しさん
09/06/10 10:54:11
Silverlight使えば?
Webの知識活かせるしクロスプラットフォームだしランタイム超小さいよ

349:デフォルトの名無しさん
09/06/10 10:58:17
347に追加、C++からというならひょっとすると、C/C++コードとの相互運用を入れているかもしれないが、これが入っている時はClickOnceが使えないので注意。
一般のインストーラを使って全部手動でやるきる必要がある。

それとClickOnceインストーラというのは、今はそう呼ばれていないかもしれない、プロジェクトのプロパティーの発行タブで設定して作れるインストーラの事。

350:デフォルトの名無しさん
09/06/10 12:56:24
>>345
まあHTMLフォームの代わりに使いたいと言ってるんだから、
ネイティブコードのモジュールを使いたいなんてことはそうそうないだろ。
.NETはメジャーな画像形式なら最初から扱えるし。
普通にC#でフォーム作って必要な機能を用意すればいいんじゃないかな。

ClickOnceええよ。
イメージとしてはサーバーに置かれているソフトを
ブラウザのローカルキャッシュにコピーして、そこで起動する感じ。

自作のフリーソフトをzip版とClickOnce版と両方提供してるけど、
ClickOnceならVSからリリースするだけで、zipをアップロードする必要もないし。

351:デフォルトの名無しさん
09/06/10 20:14:19
>>349
> 347に追加、C++からというならひょっとすると、C/C++コードとの相互運用を入れているかもしれないが、これが入っている時はClickOnceが使えないので注意。
> 一般のインストーラを使って全部手動でやるきる必要がある。

ダウト。やりようによってはできる。


352:デフォルトの名無しさん
09/06/10 21:36:43
>>351
実行時に別のインストーラ起動するって奴だろ、ClickOnceのHowToに書かれていたのでやってみたが
凄いめんどくさいぞ、それにそれをすると自動更新は役立たずになるし

353:デフォルトの名無しさん
09/06/10 21:44:10
MSのサイトにも書かれていたが、ClickOnceインストーラとmsiインストーラの使い分けの基準として
.NETの範囲で収まっているかどうかという所がポイントだと思われる
無理をしてClickOnceを使うよりはmsiの方がシンプルになるケースは少なくない。

354:デフォルトの名無しさん
09/06/10 21:44:43
Google Chrome でも使ってるけどな。>ClickOnce

355:デフォルトの名無しさん
09/06/10 21:48:53
ClickOnceはお手軽インストーラではあるけれども万能インストーラではないからな

356:デフォルトの名無しさん
09/06/10 21:49:37
>>351
違うだろ。C/C++ コードとの相互運用って、P/Invoke とかだろ?
別に ClickOnce アプリでも、P/Invoke やら COM Interop やらできるわけだが。

357:デフォルトの名無しさん
09/06/10 22:26:05
ClickOnceってサイトに来てもらえなくなるんじゃないの?
有料ソフトならいいけど

358:デフォルトの名無しさん
09/06/10 23:18:33
>>357
どういう意味だ?

359:デフォルトの名無しさん
09/06/10 23:31:00
C#を勉強しだして業務アプリは大体こなせるようになりました
趣味でTelnetクライアントやFTPクライアントを作ってみたいのですが、
何か参考になる書籍やサイトがあったら教えてください
RFCは勉強中です

360:デフォルトの名無しさん
09/06/10 23:42:08
RFCがまともなんでないかい
Telnetのネゴシエーションプロセスとか全く無いのとか
FTPはpassive対応してなかったりcontrolとdataの二本が必ずセットになってたりする

361:デフォルトの名無しさん
09/06/11 00:00:30
C#勉強しようと思ってるんですけど、とりあえずTurbo C#とか
入れればいいんでしょうか?
とりあえずサンプルとかをコピペして動くことを確認したいです。
作ろうとしてるものとか目標とかは今のとこありません。

あとお金も無いんですけど、
なんか購入する必要ってあるんですか?



362:デフォルトの名無しさん
09/06/11 00:03:19
妙なこだわりがないならVisual C# 2008 Express Editionにしておけ

買う物は特に必要なし

363:デフォルトの名無しさん
09/06/11 00:03:34
>>361
C#する前に仕事しろ

364:デフォルトの名無しさん
09/06/11 00:03:48
>>361
VC# Express入れればいい

365:デフォルトの名無しさん
09/06/11 00:26:12
Formを回転させたいのですがヒント下さい。
WPFだとあるかな?と思ったけど、ぐぐってもそれらしい情報が見つかりません。
#DirectXの範疇になるのでしょうか?

366:デフォルトの名無しさん
09/06/11 00:26:13
ツールボックスにあるポインターってなんすか?

367:デフォルトの名無しさん
09/06/11 00:30:06
ポインターとはポインターです、糞して寝てください

368:デフォルトの名無しさん
09/06/11 00:34:21
>>362
>>364
ありがとうございます!調べてみます!
>>363
仕事はしてます!契約がなくて社内ニート中ですけど!

369:デフォルトの名無しさん
09/06/11 00:41:21
どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッドなのに厳しいっすね

370:デフォルトの名無しさん
09/06/11 00:41:59
質問したいんじゃなくて喧嘩うってんだろw

371:デフォルトの名無しさん
09/06/11 00:42:27
つまり、金を貰いつつ社内でC#のお勉強か!羨ましい限りだな。

>>365
WPFならコントロールの回転はできるが、ウィンドウ自体の回転はできなかったと思う。

372:デフォルトの名無しさん
09/06/11 00:44:50
何で教えてくれないのか不思議で仕方ないっす

373:デフォルトの名無しさん
09/06/11 00:47:16
リアルでぶんなぐられないように十分注意することだ

374:デフォルトの名無しさん
09/06/11 02:14:06
VisualC#2008で質問があります。
おなじ画像をくり返し表示するのに、ツールボックスを使わず配列にしてみました。

namespace WindowsFormsApplication1{
public partial class Form1 : Form{
private System.Windows.Forms.PictureBox[] pictureBox;
public Form1(){
InitializeComponent();

string photo = @"C:\photo.jpg";
for (int i = 1; i < 5; i++){
this.pictureBox[i] = new System.Windows.Forms.PictureBox();
((System.ComponentModel.ISupportInitialize)(this.pictureBox[i])).BeginInit();
this.pictureBox[i].Location = new System.Drawing.Point(12, 22 + i * 200);
this.pictureBox[i].Name = "pictureBox[i]";
this.pictureBox[i].Size = new System.Drawing.Size(300, 200);
this.pictureBox[i].Image = Bitmap.FromFile(photo);
this.Controls.Add(this.pictureBox[i]);
}
}
}
}

で、コンパイルは通るのですが、エラーになります。
NullReferenceExceptionはハンドルされませんでした。
オブジェクト参照がオブジェクトインスタンスに設定されていません。
ってことなのですが、なにがNullになっているんでしょう?
なんかポカミスしている気がするんだけど…。


375:デフォルトの名無しさん
09/06/11 02:15:58
private System.Windows.Forms.PictureBox[] pictureBox;
がnull

376:デフォルトの名無しさん
09/06/11 02:16:34
デバッガで追っかけてけばすぐわかるよ
「自動変数」タブな

377:デフォルトの名無しさん
09/06/11 02:31:59
pictureBoxは何で初期化してないの?

378:デフォルトの名無しさん
09/06/11 02:39:30
早速サンキューです。
すばやっ。
助かります。
pictureBox = new PictureBox[5];
を追加して、無事表示できました。

ところで何度見ても、自動変数タブがないんですけど、…。
左から、ローカル、ウォッチ、呼び出し履歴、イミディエイトウィンドウ、出力。
どこに消えたかご存じないですよね?


379:デフォルトの名無しさん
09/06/11 02:45:49
ブレイク中のメニューのデバッグ>ウィンドウにあるはずだが

380:デフォルトの名無しさん
09/06/11 02:54:13
>for (int i = 1; i < 5; i++)
ここは大丈夫?
pictureBoxは0から4までの5つの要素のうち
1から4までの4つを使うことになるわけだけど

381:デフォルトの名無しさん
09/06/11 04:03:24
文字列の配列をstirng(羅列string, string, string, ...)に変換するにはどうすればいいですか?

382:デフォルトの名無しさん
09/06/11 04:30:00
日本語でおk
区切り文字を挿んで文字列を連結したいって事なら、string.Join

383:デフォルトの名無しさん
09/06/11 09:02:29
private void button1_click(object sender,Eventargs e)
の()の中のobject sender,Eventargs e
って何ですか

384:デフォルトの名無しさん
09/06/11 09:07:17
senderにはイベントを発生させたオブジェクト
eには必要に応じてイベントに関する情報
が入ってる

385:デフォルトの名無しさん
09/06/11 09:07:52
イベント送信者とイベント引数

386:デフォルトの名無しさん
09/06/11 09:34:27
しーぷっしゃー

387:デフォルトの名無しさん
09/06/11 09:44:18
らめぇ

388:デフォルトの名無しさん
09/06/11 11:25:10
あざっす

389:デフォルトの名無しさん
09/06/11 12:44:30
テキスト(たとえばtextBox)と画像(たとえばpictureBox)をまとめて扱う(表示とか移動とか削除とか)にはどうしたらよいですか?
ボタンなら、ボタンの背景(BackgroundImageプロパティ)にjpgファイルを指定できるので、表示するときに一度に表示できます。
textBoxのプロパティを見ても、背景のイメージを設定できないみたいなので…

390:デフォルトの名無しさん
09/06/11 12:46:52
ユーザーコントロール作ってまとめたら?

391:デフォルトの名無しさん
09/06/11 12:53:40
文字列の後ろを透けさせて背景画像を表示するのは無理
TextBoxそのものを自作するかWPFへどうぞ

392:デフォルトの名無しさん
09/06/11 13:48:09
>>390
サンクス。ユーザーコントロールというのはまだ作ったことがないので、勉強がてらやってみます。
>>391
サンクス。やっぱり。
でもまあ今回は、背景が単色なので、なんとかFormベースでやってみます。
TextBoxそのものの自作って、ユーザーコントロールってことですよね?
ところでWPFで、ここみたいにフランクに質問できるとこってないですか?

393:デフォルトの名無しさん
09/06/11 13:57:14
質問があります。
サムネイルベースのファイラーみたいなものを考えています。
サムネイルをウィンドウ内でドラッグ&ドロップして配置を移動したいです。
その場合、ドラッグ&ドロップの処理で必要なことは…。
・コントロール(pictureBoxとか)をドラッグ可能にする。
・フォームでドロップを受け付けるようにする。
かと思います。

フォームでドロップを受け付けるのは、
・AllowDropプロパティをTrueにする。
・Form1_DragEnterのイベントハンドラを作る。

でよいかと思うのですが、
Q1 コントロールをドラッグ可能にするには、なにをすればいいんでしょう?
コントロールを移動すると、コントロール同士が重なることがあります。
そのとき、
Q2 単純に重ねて表示したいときには、イベントハンドラはForm1_DrogEnterだけでいいんですか?


394:デフォルトの名無しさん
09/06/11 14:07:54
Control.DoDragDrop使え

395:デフォルトの名無しさん
09/06/11 14:16:26
>>392
>TextBoxそのものの自作
ユーザーコントロールじゃなくてControlから直接派生するカスタムコントロール
描画も入力も全部自前で書くガチ自作

396:デフォルトの名無しさん
09/06/11 15:12:59
継承ってのは機能の追加しかできないの?

たとえば
myclass1が10個の変数と3個の関数を持ってるとして
それを引き継いだmyclass2は
7個の変数と4個の関数を持ってるとか
できない?

397:デフォルトの名無しさん
09/06/11 15:13:24
myclass2をmyclass1として扱いたい場合どうするんだ

398:デフォルトの名無しさん
09/06/11 15:16:31
object思考の基礎をやり直したほうがいいんじゃないか?
myclass1やmyclass2をちゃんとobjectとして切り出せてないからややこしくなる。

399:デフォルトの名無しさん
09/06/11 15:22:34
>>396
そういう場合はclass1とclass2から共通な部分を取り出して新たな基底クラスを作るのがデフォ


class1 - class2

↓こうする

baseclass - class1
       |_class2


基底クラスのメソッドやフィールドを消せたりら、上位クラスへのキャストができないのだわ
FileStreamをStreamにキャストしたりとかね

400:デフォルトの名無しさん
09/06/11 15:55:18
Office2007が入ってるとTextBoxRendererやVisualStyleRendererのTextBoxが標準のルックスじゃなくなるんだけどどうすればフォームに配置しているTextBoxと同じ用に描けるの?
Application.EnableVisualStyles()をコメントアウトってのはナシで。
この際Win32APIでもなんでもいいから教えて。


401:デフォルトの名無しさん
09/06/11 18:51:26
画像の移動の件です。
「Control.DoDragDrop」でぐぐって、
解説サイト見ながらプログラムを作ってみたんですが、
完全にどつぼにはまってます。
どっかにプロジェクトをアップロードしたら、このスレで添削してもらえますか?


402:デフォルトの名無しさん
09/06/11 18:54:01
ListViewじゃダメなの?

403:デフォルトの名無しさん
09/06/11 19:05:01
ListViewだと、表形式での表示になると思います。
エクスプローラでいうところの表示-縮小版のような形で操作したいのです。


404:デフォルトの名無しさん
09/06/11 22:02:37
C#で他のプロセスのコマンドライン引数を取得したいのですが、
なにか方法ありますか?
たとえばWordのプロセスが開いているファイルのPath+FileNameを取得したい。

405:デフォルトの名無しさん
09/06/11 22:11:41
>>404
URLリンク(d.hatena.ne.jp)

406:デフォルトの名無しさん
09/06/11 22:13:11
>>405
 ありがとう!

407:デフォルトの名無しさん
09/06/11 22:24:33
WMIでWin32_Process使うのが一番楽な希ガス

408:デフォルトの名無しさん
09/06/12 09:58:49
>>399
それがいい場合もあるが、まずそれというのはおすすめ出来ない。


409:デフォルトの名無しさん
09/06/12 10:15:09
そういうことになるから継承は良くない

410:デフォルトの名無しさん
09/06/12 11:05:24
他のアプリケーションのIMEの状態を取得したいのですが、
なにか良い方法ありませんか?
すでにC#ではないと思いますが。。。

411:デフォルトの名無しさん
09/06/12 11:10:54
よくわかんないけどプロセスにアタッチしてImmなんちゃら関数で取れないかな

412:デフォルトの名無しさん
09/06/12 12:51:20
LAN内の別のマシン(実行マシン)で実行中の実行ファイル(exe)をバージョンアップするときに、開発マシンからコピーして上書きしたいのですが、実行中なのでロックされていてできません。
ロックせずに実行する実行ファイルを作ることってできるんでしょうか?
あるいは、開発マシンからkillするのでもよいのですが、そんなことってできましたっけ?
あまりC#とは関係ないかも…。


413:デフォルトの名無しさん
09/06/12 13:16:10
>>412
できない。Unixだと上書きだけならできるが(再起動はもちろん必要)

で、基本常に実行し、必要なときに落としたりできるのがWindowsのサービスの仕組み。利用しない手はない。
リモートデスクトップで直接終了作業する手はどうだ?

414:デフォルトの名無しさん
09/06/12 13:32:18
なるほど。そこでリモートデスクトップですね。
なるほど〜。
サンクス。
いまも別のマシンが別の階の別の部屋にあって、デバッグしながらいったりきたりで、いい運動になってました。


415:デフォルトの名無しさん
09/06/12 13:35:05
>>405
これって、C++(?)のコードですよね?
C#のコードor dll or exeはないですか?

416:デフォルトの名無しさん
09/06/12 13:37:33
かまわずWMIというかSystem.Management.Instrumentation使えばいい

417:デフォルトの名無しさん
09/06/12 14:05:49
Instrumentationいらないだろ

418:417
09/06/12 14:12:12
using System.Management;

ManagementClass m = new ManagementClass("Win32_Process");

foreach (ManagementObject o in m.GetInstances()) {
object c = o["CommandLine"];
if (c is string) {
Console.WriteLine((string)c);
}
}

こんなもんだろ。何か異議ある?

419:デフォルトの名無しさん
09/06/12 14:34:46
>>415
C#の相互運用機能を使ってC#に書き換えればいいじゃん
>>405にC++でしか実現できない点は1つもないよ

それができいなら、おとなしくWMI使っとけ

420:デフォルトの名無しさん
09/06/12 16:30:48
>>418
ぜんぜん異議なし。
>>419
は〜い。おとなしく使ってます。

それはそれとして、相互運用機能なんてので、C++のコードをC#に書き換えられるんですか?
知らなかった…。
それって簡単?


421:デフォルトの名無しさん
09/06/12 16:41:16
>>405のコード読めるならそんなに難しくはない
そうでないなら諦めろ

422:デフォルトの名無しさん
09/06/12 18:17:03
>>411
アタッチについて少し調べたんですが、
スレッドのアタッチは出来そうだけど、プロセス?(たとえばWordなど)に
アタッチって出来ます?

423:デフォルトの名無しさん
09/06/12 19:16:40
サンプルコードを読んでいたら、以下のような記述が出てきたんですけれど、
コンストラクタを呼んで、 { } で括って最後に;って何なのでしょうか?
コンストラクタの内容に追記しているんでしょうか?
匿名関数とか記法の名前が分かればググれるんですけれど、
何と呼ばれる記述法何でしょうか?

public ActionResult Create(int customerId)
{
 AddressViewData addressViewData = new AddressViewData()
 {
  CustomerId = customerId
 };
 return View(addressViewData);
}

424:デフォルトの名無しさん
09/06/12 19:24:32
勘でググってたらあったー
オブジェクト初期化子ですかね。

425:デフォルトの名無しさん
09/06/12 19:27:47
うん

426:デフォルトの名無しさん
09/06/12 19:33:03
>>423
確かに、これはものすごい気持ちの悪い書き方だな。
ぱっと見ではなぜnew AddressViewData()のところにセミコロンがないのかが分からないし、
ブレースのあとでセミコロンがあるのかが分からない。

オレならまず間違いなく
new AddressViewData() {
...
};
にするだろうな。

427:デフォルトの名無しさん
09/06/12 19:36:58
趣味の自慢か?

428:デフォルトの名無しさん
09/06/12 19:49:07
そういう宗教論争はこっちで頼むわ。
スレリンク(tech板)

429:デフォルトの名無しさん
09/06/12 21:07:07
Form2 frm2 = new Form2
とかやって、新しいフォーム作成したら
Form2.csができちゃって
Form1.csで作ったpublic変数とかが使えなくなっちゃうんだけど
どうやったらForm1.csとForm2.csの変数や文字列を合体できる??

430:デフォルトの名無しさん
09/06/12 21:08:53
引数にして渡せ

431:デフォルトの名無しさん
09/06/12 21:09:20
Form1.cs.Concat("Form2.cs")

432:デフォルトの名無しさん
09/06/12 21:52:51
変数と文字列を同じ次元で語るなよ

433:デフォルトの名無しさん
09/06/12 22:11:28
>>429
> Form2 frm2 = new Form2
> とかやって、新しいフォーム作成したら
> Form2.csができちゃって

面白い。新しいリフレクションだなw

434:デフォルトの名無しさん
09/06/12 22:46:29
>>429
まじめに勉強してこなかったツケがそれだよっ!

435:デフォルトの名無しさん
09/06/12 23:01:33
しばらくRubyやってて久々にOffice用のCOM参照DLL作ることになったんだけど
インスタンスの作り方すら忘れてる俺涙目w

436:デフォルトの名無しさん
09/06/12 23:26:08
日記帳

437:デフォルトの名無しさん
09/06/12 23:47:00
overrideって何のためにあるの?

438:デフォルトの名無しさん
09/06/12 23:50:00
>>437
明示しないとオーバーライドできなくするため。
オーバーライドするつもりなかったのにうっかりやっちゃったとかになると、
結構発見しずらいバグになる。

439:デフォルトの名無しさん
09/06/12 23:53:17
どうしてoverrideという概念があるかというレベルに見えるが

440:デフォルトの名無しさん
09/06/12 23:55:41
継承はバグの温床だからな、安全装置は沢山あった方がいい

441:デフォルトの名無しさん
09/06/13 00:04:42
現在のオブジェクト指向に関する理解から考えれば、overrideは要らない
仮想テーブルは自前でも作れる、ただ面倒臭いから言語の機能としてあれば便利だというレベルになっている。
また言語仕様で作られる仮想テーブルは書き換える事はできないが、そのような操作が必要になったら結局自前で作るわけだが、
それはStrategyパターンと呼ばれるデザインパターンでパターン化されている。

442:デフォルトの名無しさん
09/06/13 00:23:56
>>441
これ
> 現在のオブジェクト指向に関する理解
と、これ
> 仮想テーブル

って、全然領域違う言葉だよね?
何で混ざってるの?

443:デフォルトの名無しさん
09/06/13 01:13:12
使う人間が完璧なら不要
実際Javaなんかで問題が出たから付けるようにしてるんだよ
そのJavaですらoverrideを明示的に付けるようになった

444:デフォルトの名無しさん
09/06/13 02:59:00
多数の変数を一気に同じ値にすることできねーの?

int a;
int b;
int c;
〜〜
int z;

a=2;
b=2;
とかじゃんく
a,b,c,d,e=2;
みたいな感じで。

445:デフォルトの名無しさん
09/06/13 03:04:23
>>444
カンマじゃなくて、イコールでつないでご覧。

446:デフォルトの名無しさん
09/06/13 04:30:26
File.WriteAllText(@"C:\Test.txt", "テスト書込。", sjisEnc);
この、C\Test.textの前にある@マークは何の役割でしょうか?

447:デフォルトの名無しさん
09/06/13 04:31:37
@があると\でエスケープしない
"C:\\Test.txt"とすべきところを@"C:\Test.txt"で済ます

448:デフォルトの名無しさん
09/06/13 04:34:31
>>447
ありがとう

449:デフォルトの名無しさん
09/06/13 10:19:43
>>442
>どうしてoverrideという概念があるかというレベルに見えるが
に対しての見解なので

450:デフォルトの名無しさん
09/06/13 10:43:36
>>441
ん、んーん?


451:デフォルトの名無しさん
09/06/13 10:59:33
overrideがないと、関数名を考えるのが面倒じゃん
MyFunction( )
MyFunction_int(int n)
MyFunction_intint(int n, m)
MyFunction_intstr(int n, string t)
とか、どんどん増える

452:デフォルトの名無しさん
09/06/13 11:00:19
overloadと勘違いして奴がいる模様。

453:デフォルトの名無しさん
09/06/13 12:06:15
overloadと勘違いして奴がいる模様。

454:デフォルトの名無しさん
09/06/13 12:13:18
c#の入門用ページ、
どこもコンソールアプリケーションのことしか書いてないんだけど
WIndowsプログラムのこと書いたページで良いとこない?

455:デフォルトの名無しさん
09/06/13 12:16:23
>>454
言語自体の入門ページだと、そりゃそんなもんだろ。
Windows Forms とか WPF でググりなおした方がいいんでは。

あと、コンソールアプリで入門記事書いてるページでも、
1ページくらいは GUI に記事さいてないか?

456:デフォルトの名無しさん
09/06/13 12:18:02
そりゃ、C#の入門であって、.NETでGUIプログラミングをするための入門では
ないから、仕方ないのでは?
前者はもう充分だから、後者に移りたいというのが質問の趣旨?
それとも、前者も後者もいっしょくたにしたいという話?

いっしょくたはおすすめできないぞ。

457:デフォルトの名無しさん
09/06/13 12:29:13
GUIプログラミング=IDEの使い方だし、めんどくさいだろ?作るの。

458:デフォルトの名無しさん
09/06/13 12:38:46
俺はClass personから継承してtaroをつくるとかどうでもいいことじゃなくて
たとえばだが
Form1のx=200,y=300のドットの色を取得して
画面を塗りつぶすとか
そういうことやりたいんだが

コンソールアプリじゃそういうことわからん。
IDEつくるのめんどくさいのか;;

459:デフォルトの名無しさん
09/06/13 12:42:42
>>458
どうでもいいけど
> Class personから継承してtaroをつくる
これは気持ち悪い
taroっていう種族がいるのか…?

460:デフォルトの名無しさん
09/06/13 12:44:53
>>458
class Taro キモすww

それは置いといて、
そういう話の場合、「入門」じゃなくて「サンプル」でググって、
説明読むんじゃなくてコード読む方がオススメ。

461:デフォルトの名無しさん
09/06/13 12:46:01
別に居ても居なくてもどうでも良いな
3年を継承して山田を作るのに山田って組があるのか?とか
マジでどうでも良い


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4689日前に更新/222 KB
担当:undef