14/04/05 22:08:28.72 l3iN8hNI
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問。
質問者自身なんだか意味がよく分からない質問。
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められることがあります、ご了承下さい。
なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっとVisual C#,C♯,C#(初心者用) Part110
スレリンク(tech板)
■関連スレ
C#, C♯, C#相談室 Part82
スレリンク(tech板)
■コード貼るなら↓使ってください
URLリンク(ideone.com)
2:デフォルトの名無しさん
14/04/05 22:25:28.14 dnqr6Oke
>>1乙
3:デフォルトの名無しさん
14/04/05 22:57:18.91 HfzhZYKB
>>1
おつ!
4:デフォルトの名無しさん
14/04/05 23:00:41.23 4PQFLBxx
>>1おっさん
5:前971
14/04/05 23:34:54.89 fZTxo1xf
OnBeforeNavigateで調べたんですがBeforeNavigateはNET1.1ではあるようなんですがC#2010では見つかりませんでした
URLリンク(vsug.jp)
これはVC#2005みたいですが、VC#2010でもNavigatingイベントを使うんですか?
あと基底コンストラクタに渡す引数がないのに明示的に:base()を使う必要ってあるんですか?
6:デフォルトの名無しさん
14/04/05 23:47:54.72 dnqr6Oke
BeforeNavigateは別のクラスAxWebBrowser使うときの話
うん
別にない
7:デフォルトの名無しさん
14/04/05 23:52:08.44 dnqr6Oke
あ、そこに書いてるようにNavigatingで必要な情報足りないなら
やっぱりDWebBrowserEvents2::BeforeNavigate2とか使う必要があるよ
8:デフォルトの名無しさん
14/04/06 12:13:20.73 B8PUb7p+
Visualはもうないんだから外せよ
9:デフォルトの名無しさん
14/04/07 17:50:25.12 6uHQfqYj
フォームが非アクティブになった時に、フォームとその子コントロールの明度を一括で下げたいんですがどうすればいいのでしょうか
10:デフォルトの名無しさん
14/04/07 17:59:07.70 3UJhq+PE
WinFormにそんなシャレオツ機能は存在しない
フォームのクライアント領域内ならともかくタイトルバーとかはシステム側の領域だし
FormをDisableにすれば一部の彩度は下がるけどな
11:デフォルトの名無しさん
14/04/07 20:53:56.62 wKuIb640
シャレオツw
12:デフォルトの名無しさん
14/04/07 23:51:01.19 6uHQfqYj
>>10
透明度下げることで対処しようと思います
ありがとうございました
13:デフォルトの名無しさん
14/04/08 22:15:26.21 cT60U4kI
Form上にコントロールを1000個程度配置してスクロールさせると、フリーズします。
WindowsXP, 7 ではスムーズに動いていたのが、Windows8.1にした途端起き始めました。
1000個というのはPictureBoxなのですが、これをButtonに変更して1000個表示するだけの
テスト用アプリを作ってもやはり発生します。
グラボのドライバを最新にしたり、システムのプロパティの視覚効果などを変更してみても
改善されません。
これが自分のPCの固有の問題か、Win8.1に共通の現象かを切り分ける方法ってありますか?
1000個も配置するという設計がおかしいのでしょうが…
14:デフォルトの名無しさん
14/04/08 22:19:41.79 fmWss6Bj
1000個も配置するのが問題
15:デフォルトの名無しさん
14/04/08 22:58:41.96 cT60U4kI
やっぱりそうですよね
16:デフォルトの名無しさん
14/04/09 01:42:52.07 Ks/JGiSE
わらた
17:デフォルトの名無しさん
14/04/09 01:56:19.82 SM981zJv
>>13 試しに動作確認してしんぜよう。ソース送レ
18:デフォルトの名無しさん
14/04/09 02:40:54.14 4evLHR2U
>>17
普通にフォームのプロジェクト作成して、ロードイベントに以下を書いて、
private void Form1_Load(object sender, EventArgs e)
{
for (int i = 0; i < 1000; i++)
{
Button btn = new Button();
btn.Top = i * 24;
this.Controls.Add(btn);
}
}
それからForm1のAutoScrollをtrueにしただけなのですが…。
19:デフォルトの名無しさん
14/04/09 10:40:06.97 +JqWH5tw
>>13
安直だが、FrameWorkを両方4.5で動かしてみるとか
20:デフォルトの名無しさん
14/04/09 15:41:18.28 fBP+BGwa
重くしないとハードが売れない
21:デフォルトの名無しさん
14/04/10 12:20:18.64 HRaWKIoy
WPFならハンドル食わないらしいから試してみれば?
22:デフォルトの名無しさん
14/04/10 15:04:18.17 nYklgNp5
コンボボックスの値を変更したら、もう一つのコンボボックスと値を交換しようとしているのですが、途中からおかしくなります。
参照している値を間違えてしまっているのでしょうか?よろしくお願いします。
ComboBox[] comBox = new ComboBox[2];
private void Form1_Load(object sender, EventArgs e){
comBox[0] = comboBox1;
comBox[1] = comboBox2;
for (int i = 0; i < 2; i++)
comBox[i].DropDownClosed += new EventHandler(comBox_DropDownClosed);
for (int i = 0; i < 2; i++){
comBox[0].Items.Add(i);
comBox[1].Items.Add(i);
}
comBox[0].SelectedIndex = 0;
comBox[1].SelectedIndex = 1;
}
private void comBox_DropDownClosed(object sender, EventArgs e){
int index = -1;
for (int i = 0; i < comBox.Length; i++)
if (comBox[i].Equals(sender) == true){
index = i;
break;
}
int intSel = Convert.ToInt32(comBox[index].SelectedText); // 選択していた番号
int intDest = Convert.ToInt32(comBox[index].SelectedItem); // 変更先
comBox[intDest].Text = comBox[intSel].Text; // 入れ替える
}
23:デフォルトの名無しさん
14/04/10 19:53:41.63 b/gE/MKY
>>21
VirtualizingStackPanelとか使えば、そもそも1000個もいらないんだけどな。
24:デフォルトの名無しさん
14/04/10 20:45:40.51 mP4FkQtt
ナニコレ
WPF?
25:デフォルトの名無しさん
14/04/11 09:09:51.97 +5PGJ+FS
VSのC#です。
26:デフォルトの名無しさん
14/04/12 13:36:56.16 QXbrFFBS
C#で音声認識を扱いたいんですがどれをどう使えばいいのかさっぱりわかりません
おすすめの方法があれば教えて下さい
27:デフォルトの名無しさん
14/04/12 16:51:06.63 K9bTN6Ty
>>26
無料のやつは、認識率悪くて使い物にならんよ。
本気でやりたいなら、
100万とかする業務用のソフト買いな。
28:デフォルトの名無しさん
14/04/12 17:41:14.47 9BhBrkhV
プログラマなら認識率がどれくらいか見当つくよな
IMEの誤変換なんて可愛いもの
そもそも一体何に使いたいのか
29:デフォルトの名無しさん
14/04/12 19:14:54.67 kHAj/7de
>>26
キーワードだけ教えてやる。
2文字目はSだ。
30:デフォルトの名無しさん
14/04/12 19:24:50.54 gqk0H39S
GoogleのAPIを叩く
31:デフォルトの名無しさん
14/04/12 19:53:09.57 kaC5V1Cc
日本版エシュロン。
32:デフォルトの名無しさん
14/04/12 20:35:38.46 rzyqPrtx
モサドに技術供与受けろや
33:デフォルトの名無しさん
14/04/12 22:10:52.95 NOz3Q708
Microsoft Speech Platform
34:デフォルトの名無しさん
14/04/13 05:51:21.92 VrI+9WRO
Microsoft Bob
ネーミングのセンスがさすがマイクロさんやな
35:デフォルトの名無しさん
14/04/13 06:17:44.86 qYmwgSBw
Robert!
Bob: Oh! That's me
Robert の別称
36:デフォルトの名無しさん
14/04/13 11:13:57.20 PYHY3KdE
「C#」は当初かなり違和感のある名前だったけどすっかり浸透しちゃったな
天下のMSがこの名前で出してコケたら大恥だった
D(笑)
37:デフォルトの名無しさん
14/04/13 11:40:41.79 Ughvqkdn
Microsoftはいつもネーミングが糞
comも.netも検索しにく過ぎ
38:デフォルトの名無しさん
14/04/13 19:53:33.31 x/KLDcUY
2009年にもなってGoとか名前をつけるどこぞに比べれば…まあどんぐりの背比べだな
39:デフォルトの名無しさん
14/04/13 22:03:26.85 JRCCH/EO
>>37
VB6の検索しにくさはガチ
40:デフォルトの名無しさん
14/04/13 22:14:24.92 Ughvqkdn
>>39
vb6はそもそも情報自体が少ないからね
さらにvb.netのせいで探しにくくなった
41:デフォルトの名無しさん
14/04/14 03:59:00.92 7M5WCkF4
練習として複数のPictureBoxに、高速で複数の画像を入れ替えまくってみたんですが
private void button1_Click(object sender, EventArgs e)
{
Thread t = new Thread(new ThreadStart(loop));
t.Start();
}
void loop(){
for (int i = 0; i < 1000; i++)
{
pictureBox1.Image = mybmp[i % 3];
pictureBox2.Image = mybmp[(i + 1) % 3];
pictureBox3.Image = mybmp[(i + 2) % 3];
Thread.Sleep(50);
}
}
ときどき下のようなエラーが出ます。
これは、単純にPictureBoxの描画処理が終わらないまま次の描画を始めようとしたためでしょうか?
同一スレッド内の問題だからか、PictureBoxをlockしてみても改善しません。
実際この通りの動作をさせるわけではないですが、高速で画像を更新することはあると思うのでこのままだと気持ち悪い・・・。
>型 'System.InvalidOperationException' のハンドルされていない例外が System.Drawing.dll で発生しました
>追加情報:オブジェクトは現在他の場所で使用されています。
42:デフォルトの名無しさん
14/04/14 04:40:22.32 CBNE2ubH
threadからFormをいじろうとするとそうなるんじゃなかったか?
URLリンク(kawakawa2000.jugem.jp)
こんなんだったかな
43:デフォルトの名無しさん
14/04/14 05:56:06.53 +kBgZJjN
回答: UIスレッド以外からコントロールに触んなボケェ
44:デフォルトの名無しさん
14/04/14 13:35:26.08 Rj6AhJf8
delegateで描画させた方がいいね
後はとりあえずPallarel.forでコントロール別に分けた方がマルチスレッドになって
タスクマネージャでCPU利用率見た時にとりあえず嬉しいw
45:41
14/04/14 13:39:40.86 7M5WCkF4
ありがとう、デリゲートとinvokeってここで使うのか。
ついでに、サンプルプログラムを見ているとthisが何を指しているかよくわからないことがあるんだけど
thisが何を指すか調べる方法ってあります?
46:デフォルトの名無しさん
14/04/14 13:42:19.94 CBNE2ubH
thisはその関数が走っている時の関数自身じゃないの?
classへの参照のようにも見えるけど、スレッド動いてるとスレッド自身になるよね
47:デフォルトの名無しさん
14/04/14 13:44:54.89 CBNE2ubH
例えばボタンの文字列をスレッドから書き換える
private void button1_Click(object sender, EventArgs e)
{
Thread t = new Thread(new ThreadStart(loop));
t.Start();
}
void loop()
{
//for (int i = 0; i < 1000; i++)
//{
// button1.Text = "new text";
// Thread.Sleep(50);
//}
SetText("New Text");
}
private delegate void SetTextCallback(string msg);
private void SetText(string msg)
{
if (button1.InvokeRequired)
{
Invoke((MethodInvoker)(()=> {
button1.Text = msg; // "Hello, world";
}));
return;
}
// 以下本来の処理
button1.Text = msg;
}
}
48:デフォルトの名無しさん
14/04/14 13:47:28.80 CBNE2ubH
あ、もちろん参照先のページにも書いてあったと思うけど、UIはスレッドセーフじゃないので
マルチスレッドで動かしても、勝手にMutex掛かるよ
49:デフォルトの名無しさん
14/04/14 14:32:41.71 7M5WCkF4
えーと、thisについてよくわからないのは・・・
例えば>>47のInvokeってthisが省略されてますよね?
この場合、thisはFormを指してるのでいいのかな・・・というのを確認する方法ってあるかなと。
慣れると自明に思えるのかもしれませんが、まだ戸惑うことが多いので確認方法があるとうれしいのです。
50:デフォルトの名無しさん
14/04/14 14:33:20.46 +kBgZJjN
>>48
>thisはその関数が走っている時の関数自身じゃないの?
>classへの参照のようにも見えるけど、スレッド動いてるとスレッド自身になるよね
初心者は答えなくていいよ。マジで。
51:デフォルトの名無しさん
14/04/14 14:35:58.41 +kBgZJjN
>>49
クラスメソッド内のthisはそのクラスのインスタンスを指してるんだよ。
52:デフォルトの名無しさん
14/04/14 17:30:10.70 CBNE2ubH
初心者が間違った答えをしてもいいじゃん
お前みたいなでかいツラされて不快になるよりマシ
53:41
14/04/14 17:31:10.51 7M5WCkF4
ありがとう、重ねて質問失礼します。
Invokeを利用することでエラーは回避できました。
ですが、スレッド実行中にフォームを閉じるとエラーが起こるようになりました。
this.IsHandleCreatedやthis.IsDisposedでフォームの存在を確かめてからInvokeを実行させようとしてみたのですがうまくいきません。
どのように回避したらいいのでしょうか。
下は、>>41のloop()内にInvokeを反映させたものです。
ループ実行中にフォームを閉じると、
>追加情報:破棄されたオブジェクトにアクセスできません。
のエラーが出ます。
for (int i = 0; i < 1000; i++)
{
if(this.IsDisposed)break;
this.Invoke((MethodInvoker)delegate()
{
pictureBox1.Image = mybmp[i % 3];
pictureBox2.Image = mybmp[(i + 1) % 3];
pictureBox3.Image = mybmp[(i + 2) % 3];
});
Thread.Sleep(50);
}
54:41
14/04/14 17:40:58.42 7M5WCkF4
むしろ、スレッド実行中にフォームを閉じさせない、
あるいはフォームのデコンストラクタでスレッド実行を停止するのが正しい方向性なのかな?
55:デフォルトの名無しさん
14/04/14 17:59:22.80 GRbiX2xU
>>54
スレッド実行を停止させるとデッドロックするな
56:デフォルトの名無しさん
14/04/14 18:58:37.52 +mkYAk9j
スレッドは理解があやふやな奴が使うとバグ発生機になるな
57:デフォルトの名無しさん
14/04/14 19:41:21.08 GRbiX2xU
>>56
ガチで1次元(時間軸)上のスパゲッティコードが出来上がるw
今回の例でもInvokeの仕組み、WindowsのGUIモデル(少々)、volatile、ロックあたり押さえといて欲しい
58:デフォルトの名無しさん
14/04/14 21:11:44.44 xiJSquwx
Windows7 api codepack使って音楽ファイルのタグ拾っていたんだが、
謎のAccess Violationが発生して3日悩んだが
なんとなく32bitでコンパイルしたら治りやがった
59:デフォルトの名無しさん
14/04/15 09:10:47.46 eg/wih/V
x86にしてみるとか最適化を外してみると、謎の不具合が解消されることが稀に良くある
60:デフォルトの名無しさん
14/04/15 09:14:04.10 iSGwDvUA
>初心者が間違った答えをしてもいいじゃん
>お前みたいなでかいツラされて不快になるよりマシ
これは酷い
61:デフォルトの名無しさん
14/04/15 09:52:27.96 b3iAuu/a
モヒカンが聞いたら大変なことになるな
62:デフォルトの名無しさん
14/04/16 09:14:38.36 Wy9kGQMK
WORDの文章にフォームやコントロールを画像として張り付けたいのですが、何か良い方法はありますでしょうか?
URLリンク(support.microsoft.com)
このサイトを参考に作成したのですが、画像の作成や貼り付けはありません。
URLリンク(msdn.microsoft.com)
msdnになりますと、画像ファイルの読み込みのみあります。
コントロールを一度画像ファイルに保存してから読み込めば良いのでしょうが、
それでは毎回画像ファイルを作成する必要があり、あまりスマートでは無いので
直接画像としてコントロールを張り付け出来るような方法がありましたら、よろしくお願いします。
63:デフォルトの名無しさん
14/04/16 09:39:36.36 8awiXMyd
クリップボード経由とか
docxならOpen XML SDK使うとかで埋め込めるだろうけどまずフォーマット理解するところからになるな
64:デフォルトの名無しさん
14/04/16 09:59:48.79 jh5A/a7z
Word文書じゃないけど
using( Bitmap bmp = new Bitmap( this.Width, this.Height ) )
{
this.DrawToBitmap( bmp, new Rectangle( Point.Empty, this.Size ) );
Clipboard.SetDataObject( bmp );
RichTextBox rb = new RichTextBox();
rb.Paste();
rb.SaveFile( @"C:\Users\hoge\Desktop\test.doc" );
}
とか。位置指定とか考えだすと面倒くさくて死ぬるな
65:デフォルトの名無しさん
14/04/16 10:04:25.73 jh5A/a7z
>>62
つか
URLリンク(msdn.microsoft.com)
のリンク先見てにSelectionオブジェクトを取得してPasteすればクリップボード経由で挿入できるな
66:デフォルトの名無しさん
14/04/16 11:45:22.88 wJUsRdtr
>>59
「良く」なのか「稀」なのかはっきりせい!
と、突っ込むところまでが遠足
67:デフォルトの名無しさん
14/04/16 12:10:13.15 Wy9kGQMK
>>63-65
クリップボード経由で出来ました、ありがとうございます。
68:デフォルトの名無しさん
14/04/16 18:41:47.03 o1DhIOoD
VisualC#2010ですが
Form1.cs[デザイン]でフォームのサイズを設定してその数値を
プロパティのSystem.Drawing.Sizeに入れても数値がズレるのは何故なのでしょうか。
ClientSizeをSystem.Drawing.Sizeにバインドしています。
69:デフォルトの名無しさん
14/04/16 18:57:54.81 RT2B6Kf1
>>68
日本語でおk
70:デフォルトの名無しさん
14/04/16 19:23:09.06 4/4/+OZx
ListBoxにマイコンピュータの一覧を表示させる方法ありませんか?
71:デフォルトの名無しさん
14/04/16 19:40:31.94 fX4bKwvJ
あります
72:デフォルトの名無しさん
14/04/16 19:50:27.85 o1DhIOoD
>>69
フォームデザインの画面でフォームのサイズを調節してそのサイズの数値を
アプリケーション設定項目に入力してもフォームのサイズが同じにならないのです
アプリケーション設定項目のサイズの数値とフォームデザイン画面のプロパティのサイズの数値が一致せず、
片方をいじると片方の数値が変化してしまいます
73:デフォルトの名無しさん
14/04/16 19:56:12.90 yQi7dKzk
言わんとしてることは分かるが
ClientSizeってミソなんだろ
デザイナに表示されてるのは非クライアント領域も含んでると
74:デフォルトの名無しさん
14/04/16 20:10:32.77 s5kasKNy
それもあるが>>72はそもそもアプリケーション設定が何なのか分かってないとしか
75:デフォルトの名無しさん
14/04/16 20:40:31.81 jh5A/a7z
>>72
Form.SizeとClient.Sizeの違いとか
76:デフォルトの名無しさん
14/04/16 20:41:11.58 jh5A/a7z
既出だったなごめんなさい
77:デフォルトの名無しさん
14/04/16 22:27:57.36 +VUax7lD
マイコンピュータの一覧って事はマイコンピュータが複数あると
いう謎環境なのか
78:デフォルトの名無しさん
14/04/16 23:02:59.71 4/4/+OZx
分かる人いなさそうだね残念
79:デフォルトの名無しさん
14/04/16 23:07:45.45 +VhpgL3Y
ドライブの一覧とは違う情報を取りたいの?
それならたぶん、API叩かないといけない
80:デフォルトの名無しさん
14/04/16 23:17:51.65 4/4/+OZx
>>79
散々ググった結果ShellAPIを使えば出来るんじゃないかなというのは分かったんだけど
難しくて何かいい方法あったりしないかなと思って質問したんだよね
自分で試行錯誤してみますありがとう
81:デフォルトの名無しさん
14/04/17 00:30:58.60 yVkbU7bN
WMIでいけないか?
82:デフォルトの名無しさん
14/04/17 10:16:41.51 3ZJR1sBx
ここみるよろし
URLリンク(msdn.microsoft.com)
SHGetKnownFolderItemでマイコンピューターを表現するIShellItem取得
↓
IShellItem.BindToHandlerでそのIShellFolderを取得
↓
IShellFolder.EnumObjectsでIEnumIDList取得して、IEnumIDListで内容を列挙
83:デフォルトの名無しさん
14/04/17 10:52:57.28 s16FfDLr
NumericUpDownでHexaDecimal=trueにして
小文字のアルファベットを入力中にタイマーなどでその値を取得すると
小文字が大文字に変換されます。
そこまでは良いのですが、同時にカーソルがいちばん左に移動してしまいます。
するとabcdと打ったつもりが、DCBAとなってしまいます。
小文字が大文字に変換されたときにカーソルを移動しないようにするには
どうすれば良いですか?
何かをオーバーライドすれば良いのでしょうか?
84:デフォルトの名無しさん
14/04/17 11:23:17.40 CRM5LnHb
助けてください。
弥○なんかの販売管理ソフトで、伝票入力画面の下部にあるリスト部分って
入力すると自動的に(しかも複数テキストボックス&複数行)追加されますが、
ああいう動作を実現するにはどのコントロールを使えばいいんですか?
85:デフォルトの名無しさん
14/04/17 11:25:43.70 CRM5LnHb
>>84 の言語書き忘れました。C#です。
86:デフォルトの名無しさん
14/04/17 11:25:58.93 gmrG8BhO
標準コントロールには存在しない
87:デフォルトの名無しさん
14/04/17 11:31:42.82 CRM5LnHb
FlowLayoutPanelとかTableLayoutPanelを駆使して、
その中にTextBox配置して、みたいな感じで方向性はあってますかね?
この方法をやろうとして数時間躓いてます。
88:デフォルトの名無しさん
14/04/17 11:44:30.79 CRM5LnHb
>>86
自己解決というか、レスをもらったことで少し理解しました。
こういうのを実現するライブラリが販売されてたんですね。
導入を検討しようと思います。
ありがとうございました。
89:デフォルトの名無しさん
14/04/17 12:09:39.88 cV35zYaX
>>81-82
ありがとう参考にします
90:デフォルトの名無しさん
14/04/17 13:07:07.79 umXeCPzC
>>87
複数テキストボックスをユーザーコントロールにまとめてやればFlowLayout案でも簡単だと思う
91:デフォルトの名無しさん
14/04/17 13:27:22.33 TvKM2fdI
>>84
Visual Basic Power PacksのDataRepeater コントロールはどうだろう
92:デフォルトの名無しさん
14/04/17 19:52:18.24 WDbWaLnY
//コマンドラインを配列で取得する
string[] cmds;
cmds = System.Environment.GetCommandLineArgs();
URLリンク(dobon.net)
フォームとコマンドプロンプトの両方で使えるようにしたいのですが、
フォームは正常に動作して、コマンドプロンプトの時で容量もほとんど使わないのにメモリ不足って出るのは、下のが原因と考えて良いのでしょうか?
大容量の RAM が搭載されていると、メモリ不足を示すエラー メッセージが表示される
URLリンク(support.microsoft.com)
93:デフォルトの名無しさん
14/04/17 20:14:05.96 3ZJR1sBx
Windows2000以降のコマンドプロンプトの話なら関係ないだろ
他の部分にバグがあるんだろ
ミニマムコードで試してみそ
94:デフォルトの名無しさん
14/04/17 20:51:33.80 BiFRjuqF
URLリンク(www.nicovideo.jp)
この動画を落としたswfファイルをフォームに貼り付けた
Shockwave Flash Objectで再生できないのはなぜなのでしょうか?
コードはこんな感じです。
axShockwaveFlash1.LoadMovie(0, @"f:\test.swf");
axShockwaveFlash1.Play();
95:デフォルトの名無しさん
14/04/17 21:09:02.94 WDbWaLnY
>>93
ありがとう。
System.IO.Path.GetDirectoryName(strCmd[0]);
で、コマンドプロンプトだとフォルダ名が取得出来無かったから、C:\に書き込もうとしてエラーになってた。
96:デフォルトの名無しさん
14/04/17 21:20:50.59 umXeCPzC
それがなぜメモリ不足になるんだ?
97:デフォルトの名無しさん
14/04/17 21:36:04.77 WDbWaLnY
最初に中の処理だけ外したらメモリ不足ってエラーが出たから、これだと思い込んでた・・・。
あとはコントロール配列にしてたくらいだけど、
イベントの追加とかはコマンドプロンプトでは関係ないからメモリ不足の表示って出る物かな?
98:デフォルトの名無しさん
14/04/17 21:44:36.61 N1Srpcxj
まず、エラーってなんのこと?
例外がでるんなら、どの位置ででてるかわかるだろ
99:デフォルトの名無しさん
14/04/18 06:55:54.45 gGWuEQS3
なぜメモリ不足になる、で思い出したが、Image.FromFileで
ファイルのイメージ形式が有効ではありません。
または
GDI+ はファイルのピクセル形式をサポートしません。
の場合、OutOfMemoryExceptionが発生する
ってのも意味不明
URLリンク(msdn.microsoft.com)
100:デフォルトの名無しさん
14/04/18 07:23:17.77 xhIZwZfQ
それはGDI+がE_OUTOFMEMORY返してくるから
101:デフォルトの名無しさん
14/04/18 07:54:35.47 gGWuEQS3
誤解させてすまん
根っこが意味不明なだけでそれは知ってる
102:デフォルトの名無しさん
14/04/18 08:18:16.94 5ZSBe340
そりゃメッセージの通りでGDI+で読み込めない形式のファイルを読もうとしたんだろ
WPFのImaging APIを試してみては
103:デフォルトの名無しさん
14/04/18 09:34:42.55 2myBQDOJ
>>90
ありがとうございます。
実は、なんとかFlowLayoutで実現できちゃいました。かなりめんどくさかったですが。
でもユーザーコントロールって知らなかったので、一つ賢くなりました。
たしかにこれを使った方が簡単そうな気がします。
試してみますね。
104:デフォルトの名無しさん
14/04/18 13:52:00.58 VeXCOOSA
>>99
イメージサイズの算出に関わる部分のヘッダが壊れてて異常値を返すんじゃね
105:デフォルトの名無しさん
14/04/18 16:32:12.19 OieI8ueO
モニタの最大解像度が変わると、フォームのサイズはそのままでコントロールのサイズだけ変わってしまいます。
AutoScaleはFalse、AnchorはTop,Leftになっているのですが、
他に止める為に確認するところはありますでしょうか?
106:デフォルトの名無しさん
14/04/18 18:20:17.89 nOqcQsid
>>105
言ってる事がよくわからんがAnchorをTop left Right Bottomにしてみ
107:デフォルトの名無しさん
14/04/18 19:19:21.02 VWFZLBWt
今のモニタって最大解像度を変更できるのか
なにそれECOモード?w
冗談はさておき、何言ってるか分からないからコード晒してくれ
108:デフォルトの名無しさん
14/04/18 20:20:03.91 xLsMteBI
DPIのことかな
109:デフォルトの名無しさん
14/04/18 20:20:30.41 RJoHb8Nd
DPIの話かな?
110:デフォルトの名無しさん
14/04/19 08:56:53.25 F+1f3Ibj
なんで未だにUI単位系mmにしないんだろう?
111:デフォルトの名無しさん
14/04/19 12:44:18.87 wssCKxB6
そりゃ物理的なDPIが違っても同じ表示にするためだろ
40型FHDと24型FHDとかな
112:デフォルトの名無しさん
14/04/19 13:16:35.70 F+1f3Ibj
DPmmって言いにくいから。
はい、次の方~
113:デフォルトの名無しさん
14/04/19 14:45:37.73 FZlACFeu
下のような配列とListを用意して
var sourceList = new string[] { "a", "a", "b", "c", "a", "b", "c" };
var outList = new List<string[]>();
sourceList の文字列"a"と"b"だけを
下のような感じでoutList に格納したいです。
{ "a", "a", "b", "a", "b" }
for文で地道に検索すれば実現できるのですが、
配列のデータが大きくなると、
配列のインデックスを0から全て突き合わせるので、
結構遅くなっていきます。
何かスマートなやり方はあるでしょうか?
114:デフォルトの名無しさん
14/04/19 14:56:23.05 nSzj8sir
for文使って要素の方がstring[]?
どうせArray.Resizeとか乱射してるんじゃないの?
115:デフォルトの名無しさん
14/04/19 15:16:43.12 wssCKxB6
パフォーマンス問題でサンプルコード貼らないのはなんなの?
一度たりともコーディングでミスしたことがない人なの?
116:デフォルトの名無しさん
14/04/19 15:19:34.36 FN+T31Li
今時のPCで速度が問題になるような処理だと思いにくいし、ベタにやる以上に効率的な
処理があるとも思えんよな。
強いて言えば、(ほとんどありえないシナリオだけど)文字列の比較を参照の比較で
代替して問題がなければかなり効率があがるような気が
117:デフォルトの名無しさん
14/04/19 15:49:38.35 CsG29AJe
>>116
string.Intern使ってやってみたよ
aからzの繰り返し、5000万件のstring[]から、aとbをList<string>へ抽出
配列からリストを作る部分で、Intern250ms、ベタなのは800ms
Internは配列作るのが遅く全体ではベタの方が速かった
ちなみにインターンプールの解放タイミングよく分からないから勧められない
パラレルも試したが(Listの同期のせいで?)2000ms
118:デフォルトの名無しさん
14/04/19 16:45:21.85 eQm7EaOg
並列化処理の手段がいくつもあって理解が追いつきません。
A new Thread( new ThreadStart()):基本的な並列化
B ThreadPool.QueueUserWorkItem():スレッドプールを利用した並列化
C Task.Factory.StartNew():スレッドプールを利用した並列化
D Parallel.Invoke():スレッドプールを利用した並列化。引数としてメソッドを複数入れられる
A以外は常にバックグラウンドスレッド?
どの方法でもAutoResetEventでの待機・再開は利用できるが、A以外ではabort()での強制停止ができず、CancellationTokeを使う必要がある。
以上の理解で合っていますか?
他にも気を付けるべき特徴があれば教えてください。
119:デフォルトの名無しさん
14/04/19 16:48:21.98 nSzj8sir
タスクはUIスレッドでも動かせる
120:デフォルトの名無しさん
14/04/19 16:50:43.65 mBoNBXfe
>>118
その中ではっきり並列化を目的としてるのはInvokeだけだ
他は並列化にも使えるというだけ
特にTaskはParallelの対極に位置するもので、並列化というより非同期処理に使う
121:デフォルトの名無しさん
14/04/19 17:05:43.85 mBoNBXfe
Parallelは呼び出し元をブロックして枝分かれして全部終わったら合流して再開するという
典型的な並列処理のパターン(いわゆるfork-join)に特化してる。
Taskはタスクベースプログラミングといって、ひとまとまりの手続きを纏めて非同期に実行していくパターンで、スレッドを使うとは限らない。
あとの2つは低レベルな制御を必要とする場合以外は必要ない(自分でこういう枠組みを作るときとか)
122:デフォルトの名無しさん
14/04/19 17:08:03.94 wssCKxB6
abortを忘れろ
使うなと書いてあるだろ
123:デフォルトの名無しさん
14/04/19 17:14:46.82 z8Jb6CLl
誰に言ってるんだよこの命令口調バカw
頭おかしいんじゃねえの本当
124:デフォルトの名無しさん
14/04/19 18:29:26.35 2PY1bkDd
>>113
これまさに、LINQの出番じゃね?望むパフォーマンスが出るかわからないけど。
125:デフォルトの名無しさん
14/04/19 18:35:31.19 eQm7EaOg
基本はTaskとParallelでいいんですね。
>>122
MSDNでSuspendやResumeは非推奨でしたが、abortもそうなのですか?
あくまで非常停止として使うべきで、基本はスレッド内で終了させた方がいいというようなことは見かけましたが。
126:デフォルトの名無しさん
14/04/19 19:17:41.81 WYLdWJWU
普通に考えて強制終了にリスクがないはずがないし、外部から終了させることが可能なスレッドを
あえて強制終了する意味があるはずがないと思うんだけど...
abortなんて、稀にデッドロックするバグがあるアンマネージドなライブラリの関数を
呼び出す時以外に使ったことないよ俺は。
127:デフォルトの名無しさん
14/04/19 19:35:06.62 GVfgk0hH
小保方貼子ファンクラブ
スレリンク(actress板)
128:デフォルトの名無しさん
14/04/19 19:40:06.51 lky2D+JG
>>124
普通はLINQ使うかな。データ数が多いならベタに書くが
URLリンク(ideone.com)
129:デフォルトの名無しさん
14/04/19 21:28:01.14 +cER51WV
>>123
死ねよ
130:デフォルトの名無しさん
14/04/19 21:28:45.04 +cER51WV
パフォーマンス求めてLINQを使うわけじゃないっしょ
131:デフォルトの名無しさん
14/04/19 22:26:39.08 F+1f3Ibj
>>129香典くれ
132:デフォルトの名無しさん
14/04/19 22:44:30.17 mBoNBXfe
もしサンプル通り一文字だけなんだったらcharにすれば爆速よ
一文字でなく最大でも数文字程度なら固定長で一つのchar配列に全部並べてもいい
メモリアクセスの効率が大幅に改善される
ビチクソ汚いから本当に本当に速度が必要な場合の最終手段な
133:デフォルトの名無しさん
14/04/20 15:52:05.98 uC0F2C8m
>>116,117,124,128,132
おいみんな>>113をよく見ろ
>>114は気付いていたみたいだが、outListの型はList<string[]>だぞ
どうやら、みんなの考えた方法では113の要求している仕様に合っていないみたいだw
134:デフォルトの名無しさん
14/04/20 16:01:27.98 ylaqUWX4
何をどうよく見ろなのかさっぱり分かりませんがw
135:デフォルトの名無しさん
14/04/20 16:29:48.16 zk/lLqrY
>>118なんですが、
Threadを利用した場合は、スレッドの状態の確認としてThreadStateが利用できました。
Taskを利用した場合は、独自に変数を設定してスレッドの状態を確認するのでしょうか?
スレッドが起動中かどうかを示す変数、スレッドが終了したかどうかを示す変数など。
136:デフォルトの名無しさん
14/04/20 17:17:05.16 ow3IcQU9
Threadなんか気にせずにTaskのプロパティを確認するべきだし、
どうしてもThreadの状態を知りたいならThread.CurrentThreadを見ればいい
137:デフォルトの名無しさん
14/04/20 19:42:31.74 zk/lLqrY
ThreadStatusと同じようにTaskStatusがあるんですね。
どうもありがとうございました。
138:デフォルトの名無しさん
14/04/21 17:28:24.12 ymTJYPUR
VS2013でOpenCVをやろうと思って
URLリンク(whoopsidaisies.hatenablog.com)
ここを参考にしてこのように書いて(写して)コンパイルはできたのですが
URLリンク(ideone.com)
var img = OpenCV.Net.CV.LoadImage(@"C:\test\test.jpg", OpenCV.Net.LoadImageFlags.AnyColor);
の所で以下のような例外が出ました
型 'System.TypeInitializationException' の初回例外が OpenCV.Net.dll で発生しました
追加情報:'OpenCV.Net.Native.NativeMethods' のタイプ初期化子が例外をスローしました。
画像はC:\test\test.jpgにあります
どうすればいいですか?
139:デフォルトの名無しさん
14/04/21 17:33:38.20 y0NArLUJ
opencvのdllがみつからないんだろ
140:デフォルトの名無しさん
14/04/21 17:40:48.58 usiNmkk/
>2013/12/15にOpenCvSharpにも使いやすいNuGetパッケージが公開された.この記事で紹介するOpenCV.NetよりもOpenCvSharpのほうがおすすめ
冒頭でOpenCvSharpを勧めてるのに、なんでOpenCV.Netを使ってるのか
141:デフォルトの名無しさん
14/04/21 19:11:53.17 S3aB0oZF
NuGetとかいうケッタイなものは使いたくないのです
142:デフォルトの名無しさん
14/04/21 19:52:37.79 KEGmYWwQ
エビナゲットって最近見ないな
143:デフォルトの名無しさん
14/04/21 22:23:30.19 oS0xRoz1
プロジェクトやソリューションを管理するためのライブラリってありますか?
ExcelみたいにVSのプログラムを作りたいんですが
144:デフォルトの名無しさん
14/04/21 23:11:54.98 d3T4wTxV
今のVSはCOMインターフェイスが廃止されたからExcelのオートメーションと同じことはできない
VSの拡張機能として作れば同じようなことはできるが、VSのプロジェクトってMSBuildに入力するための単なるXMLファイルなのでわざわざVSを動かすまでもない
MSBuildのスキーマだけ持ってきてそれに従ってXMLを吐くのは簡単だし
必要ならMSBuildのAPIも使える
145:デフォルトの名無しさん
14/04/21 23:24:42.06 d3T4wTxV
念のため言っておくがcsprojはxlsxみたいな複雑怪奇なフォーマットとは訳が違うぞ
自分でテキストエディタで開いて見てみるのが早いが、ごくシンプルで普通なファイルだ
テンプレートを用意しといて必要なものだけ動的に突っ込む形にすれば簡単に作れる
146:デフォルトの名無しさん
14/04/22 13:05:37.13 HFvXP4YQ
コンボボックスに似たコントロールで右の部分が▼でなく
□で中に...と書いてあるコントロールの名前は何でしょうか?
147:デフォルトの名無しさん
14/04/22 13:10:05.49 XBfi1btF
単にテキストボックスとボタン組み合わせてるだけじゃないの?
148:デフォルトの名無しさん
14/04/22 14:40:38.90 UaMCQHcx
単にテキストボックスとボタン組み合わせてるだけだな
149:デフォルトの名無しさん
14/04/22 14:50:16.86 gNtRiMca
決め付けはよくない
150:デフォルトの名無しさん
14/04/22 18:02:04.37 UE2PHjX0
>>146
どんなやつよ。
ちょっと想像がつかないからコモンコントロールじゃないっぽいが
具体例がほしいな
151:デフォルトの名無しさん
14/04/22 19:26:39.75 kADKmax/
>>150
わからないとか冗談だろ
ファイル名テキストボックスとファイルダイアログ表示ボタンをくっ付けたやつだろjk
152:デフォルトの名無しさん
14/04/22 23:22:54.33 kRq+wL8H
いまVB.netでプログラミングしてるのですが
C#に移行するとどんなメリットがありますか?
153:デフォルトの名無しさん
14/04/22 23:27:01.60 COSeIpGW
アンセーフなコードが書ける
どんどん差がなくなってきてる
最近は真面目にそれぐらいしか差がない
154:デフォルトの名無しさん
14/04/22 23:28:38.63 w4l4IAka
Roslynの登場でさらに差は縮まる
C#,VB.NETの両方読めるようにしとくと情報が見つけやすい
155:デフォルトの名無しさん
14/04/22 23:30:33.98 qzRdlrJo
>>152
C#でプログラミングする必要はないが、C#が読めるようになると世界が広がる
C#が読めれば数々のオープンソースプロジェクトのソースが読めるしJavaも読める
また、一般にWebに転がってるC#の情報はVBより品質が高い
C#に無い機能は即ちVBでも使ってはいけない機能なので、それが分かっていれば実際使うのがVBだとしても高品質なコードが書けるようになる
156:デフォルトの名無しさん
14/04/22 23:33:58.18 kADKmax/
VB.NetはデフォだとVB6時代の悪しき慣習を引き継いでいるからなぁ
フォームのシングルトンインスタンスにクラス名でアクセス出来るのとかまだあるんだっけ?
157:デフォルトの名無しさん
14/04/22 23:34:08.54 kRq+wL8H
ありがとん
158:デフォルトの名無しさん
14/04/22 23:34:09.41 COSeIpGW
大事なことを忘れていた
情報検索がしやすいメリットは大きいね
下手くそなコード書く人が少ないのも助かる
159:デフォルトの名無しさん
14/04/22 23:35:12.43 kRq+wL8H
とりあえずVBと併せてC#もやってみます
160:デフォルトの名無しさん
14/04/23 00:41:08.86 3zL5Y6EA
>>152
結局出来ることはほとんど違わないけど、VBのラムダ式とかジェネリックとか
AddressOf...とかの冗長さにイラっとしてるならそれから解放される。
あと、このスレでもそうだけどVBに偏見持ってる人は少なくないから、
メンタル的にはその辺も大きいねw
161:デフォルトの名無しさん
14/04/23 00:45:47.04 JkkhAF2N
っていうか、コード書いてみて初めて分かる細かい違いは実は結構あるけど、
移行っていうほど大げさなもんじゃない。
VBが普通に書けるなら1週間でC#もスラスラ書けるようになるはず。
162:デフォルトの名無しさん
14/04/23 01:02:34.08 Jwmg0nMc
>>160
偏見じゃなくて公式だ
MS自身がが先陣切ってVBerを馬鹿にしてるからなあ
163:デフォルトの名無しさん
14/04/23 01:14:29.84 moWamiRQ
>>162
公式だから偏見じゃないとはちょっと…
自分もVBからC#に移ったが、情報やサンプルの多さは本当に助かってる
職場ではVBA使うからたまに混乱するが
164:デフォルトの名無しさん
14/04/23 01:57:22.43 oEVDmUMc
>>160
偏見ってたとえば?
165:デフォルトの名無しさん
14/04/23 03:45:53.21 L+2rWq+F
>>164
MS自身がが先陣切ってVBerを馬鹿にしてる とか
166:デフォルトの名無しさん
14/04/23 07:03:44.22 aQjOrdcV
VB.NETは数値計算とか例外処理で旧VBの仕様を引きずっているのでILが汚い
機能が同等だとしてもあえて選ぶ意味は無い
167:デフォルトの名無しさん
14/04/23 07:27:58.18 B15hE1J5
決裁権持ってる奴はいまだにBASIC(とPHP)は学習コストが低いと思ってるから
あるいは元VBerで信仰心があったり
公平な選択なんて有り得ないんですよ
例えそれが自分の首を締めても
168:デフォルトの名無しさん
14/04/23 08:23:37.10 x9LZX8vX
別にできることはたいして変わらないんだから、好きな方使えばええやんか
169:デフォルトの名無しさん
14/04/23 08:38:33.73 Wz2QSiNm
VB使ってると自分の将来が不安になる
170:デフォルトの名無しさん
14/04/23 09:30:35.84 oEVDmUMc
VBはStrConv使える
171:デフォルトの名無しさん
14/04/23 10:12:07.52 8Svp1K2C
偏見持ってるのは一般人も同じじゃね?
VBで作るって言うと遅くなるとかバカにされるけど、C#で作るって言うと安心するとか尊敬される
知らない人ほど「Basicって名前は遅くてCって名前は速い」と思ってるから性質が悪い
172:デフォルトの名無しさん
14/04/23 12:43:00.67 To415BTT
VC#で新しくプロジェクト作ったりしたら
static void Main(string[] args)
{
}
見たいになってるけど、デフォルトで
static void Main(string[] args) {
}
こうするように出来ますか?
173:デフォルトの名無しさん
14/04/23 12:54:41.59 Wav400Iz
VSのメニューの「ツール」→「オプション」→「テキストエディター」→「C#」→「書式設定」→「改行」
少なくともうちのExpressちゃんだと
174:デフォルトの名無しさん
14/04/23 13:02:10.40 To415BTT
>>173
ありがとうございます
175:デフォルトの名無しさん
14/04/23 13:14:45.44 HlzGISme
C#でつくられたDLLを使うときにVBだと
outのやつとかうまく行かない時ある
176:デフォルトの名無しさん
14/04/23 17:00:14.97 gE6F061n
VBで作られたDLLをC#から呼ぶとき
インデックスつきプロパティとかどうすんだろ
177:デフォルトの名無しさん
14/04/23 18:38:59.62 hEaBYDdC
VB.NetがC#より打鍵量が多いのも、コンパイル後のサイズが大きいのも、
パフォーマンスがC#より悪いのも、ヘルパーメソッド由来の妙なバグがあるのも全部事実であって偏見ではない
178:デフォルトの名無しさん
14/04/23 20:26:11.53 TDgs+IDt
VB の癌は Module
MS にはとっとと切り捨てて欲しい
>>176
get_プロパティ名(インデックス)、set_プロパティ名(インデックス, セット値) でいける
179:デフォルトの名無しさん
14/04/23 22:13:30.39 Wvay+xfF
>>170
VBのメリット、これしか見つからないな。
180:デフォルトの名無しさん
14/04/23 22:17:47.88 9b5aah45
まあStrings.StrConvメソッドはC#からでも使えるんだけどな
181:デフォルトの名無しさん
14/04/23 22:38:48.86 aQjOrdcV
Microsoft.VisualBasic.dllだとFileLogTraceListenerを一番よく使う
182:デフォルトの名無しさん
14/04/23 23:05:07.94 gnPWMjpt
>>179
そんなことはないと思うが、2008の頃からは何を書くにもとにかく冗長という
欠点ばかりが目立つようになってしまった。
183:デフォルトの名無しさん
14/04/23 23:30:13.86 aQjOrdcV
昔からReadOnly PropertyとかAddHandler, AddressOfとかDirectCastとかそんな感じだったでしょ
リフレクション多用するライブラリが増えてきて表面化しただけじゃないの
自動実装プロパティもC#にしかない時期だし
184:デフォルトの名無しさん
14/04/23 23:30:18.44 O6CdnXOc
allocconsole だな
185:デフォルトの名無しさん
14/04/23 23:32:30.95 Jwmg0nMc
>>182
2008からはVBチームがVB嫌いのヘジたんの傘下に入ったからね
186:デフォルトの名無しさん
14/04/23 23:59:59.59 20pXoq+z
>>170
バグ生産機を使うなバカ
187:デフォルトの名無しさん
14/04/24 01:31:15.85 ql05jL4b
>>186
すまん軽率だった
これ見て使ってしまう奴が居ないとも限らんしな
188:デフォルトの名無しさん
14/04/24 20:30:02.51 4wdRys5m
MessageBoxIconに自分の用意したbitmapを表示させるにはどうしたらいいですか?
189:デフォルトの名無しさん
14/04/24 20:44:58.88 YxnFmXEY
無理
それっぽいフォームを自分で作る
文字列を描画したときのサイズを計算してフォームの大きさ変えたりとか楽しいぞ
さあ作れ
190:デフォルトの名無しさん
14/04/24 20:58:57.16 nZNRS/HT
無理ってことはないと思うけど自作した方が早いね。
そうでなくてもOS標準のはモーダルにしか出来ないしいろいろ使いづらい。
191:デフォルトの名無しさん
14/04/24 21:15:44.44 DE2OqBZn
カーソルがピタット止まって気持ち悪い
192:デフォルトの名無しさん
14/04/24 21:20:16.41 DE2OqBZn
誤爆った
public struct A{
public static string str;
public struct B{
public static string str_b1;
public static string str_b2;
}
public class Class{
public string c_str;
}
public static Class C = new C();
public static Class[] D = new D[2]{
new D(),
new D()
};
}
こんな構造体があるとして
A.B.str_b1;
A.B.str_b2;
A.C.c.str;
A.D[0].c_str;
A.D[1].c_str;
foreach的な感じで値取得ってできない?
193:デフォルトの名無しさん
14/04/24 21:20:46.50 YxnFmXEY
>>190
無理ってことはないと思うならやってみろよハゲ
ちなみにあれMessageBox APIを呼んでるだけなんすよヅルムケが
194:デフォルトの名無しさん
14/04/24 21:35:37.91 FFtq7Y66
>>193
正直、お前さんみたいな馬鹿丸出しな奴は相手にしたくない人種なんだが。
恐らくこれと同じ手法でいける。
URLリンク(msdn.microsoft.com)
195:デフォルトの名無しさん
14/04/24 21:37:47.16 YxnFmXEY
>>192
それらの静的フィールドをyield return で返すIEnumerable<strign>なプロパティを書けばできるけど
意味があるかどうかはおいといて
つかそれ構造体の意味なくね?
196:デフォルトの名無しさん
14/04/24 21:41:48.71 YxnFmXEY
>>194
すこしは自分でコード書いてみたら?
同じ手法でいけるって……全然試してないでしょあなた
197:デフォルトの名無しさん
14/04/24 21:43:57.76 vQpzgEp0
>>192
foreach使うための、インターフェースの実装はわかりますよね?
あとは、イテレータ使えばできるはずです。
198:デフォルトの名無しさん
14/04/24 21:49:14.36 VsJIW2Qh
>>196
馬鹿だろお前。
だったらてめえでやれ馬鹿。
199:デフォルトの名無しさん
14/04/24 22:02:34.00 dPj9fjlZ
メッセージボックスもウインドウだから、フックかければ改造はできる。
ただ、意味はないからやらないだけだ
200:デフォルトの名無しさん
14/04/25 15:25:09.99 IiOsF4m2
昔はC#からEXCEL呼ぶのがとてつもなく面倒だったから、VB使う余地があったんだけどね
201:デフォルトの名無しさん
14/04/25 20:53:42.84 1OgLRHsj
>>200
オートメーションは今でもVBの方が向いてるよ。
Option Strict Offの唯一の見せ場といってもいいぐらい
202:デフォルトの名無しさん
14/04/25 20:59:41.66 H8Us4HAR
>>201
つdynamic
203:デフォルトの名無しさん
14/04/25 21:05:02.54 OpA3+M3d
dynamicとオプション引数でもう完全に遜色なくなったねー
204:デフォルトの名無しさん
14/04/25 21:10:59.66 H8Us4HAR
あとrefパラメータへの値渡しな
205:デフォルトの名無しさん
14/04/25 21:18:49.00 E6t4nrBH
>>202-203
いや、例えばRange.Valueをdoube[,]として出し入れする、なんて芸当はVBしかできない。
206:デフォルトの名無しさん
14/04/25 21:27:17.50 BeYqZeZk
それエラーチェックをサボってるだけでは
207:デフォルトの名無しさん
14/04/25 22:19:49.65 +sbVSSo6
激しくどうでも良いことだけど、Excel形式で出力するライブラリは沢山あるのに
Word形式で出力できるライブラリが殆ど無いのが納得いかない。
208:デフォルトの名無しさん
14/04/25 22:32:43.08 v98LkHcr
2とか知らないけど発売してるの
209:デフォルトの名無しさん
14/04/25 23:05:26.63 K/dO+JDF
そろそろ初心者から脱出したいんですけど、どういうアプリを作ればいいでしょうか?
連番画像ダウンローダー、目覚ましなどは作りましたが、次に作るものが思い浮かばないです・・・
210:デフォルトの名無しさん
14/04/25 23:15:10.41 BeYqZeZk
IQueryable
211:デフォルトの名無しさん
14/04/26 01:10:31.85 L7zgrAvH
C#って何が出来れば上級者なの?
212:デフォルトの名無しさん
14/04/26 01:12:25.53 EJb9DXTR
作りたい物をきちんと作れるなら
213:デフォルトの名無しさん
14/04/26 01:41:03.89 fIjhv7f7
>>209
擬似ウイルス
214:デフォルトの名無しさん
14/04/26 07:48:18.18 tBhXDM1B
足し算する計算機を作った
俺はもうC#上級者
215:デフォルトの名無しさん
14/04/26 09:57:25.18 6xIFFq9Q
>>209
画像レタッチソフト
216:デフォルトの名無しさん
14/04/26 12:06:32.30 we+cBXG7
>>209
マクロにC#を使える軽量高機能テキストエディタ
217:デフォルトの名無しさん
14/04/26 12:39:09.88 4Y2pKqPs
/// <summary>
/// 指定したmdbファイルに対してSQLを実行します。
/// </summary>
/// <param name="sql">実行するSQL文です</param>
/// <param name="dataSource">mdbファイルの絶対パス</param>
/// <returns>0:正常終了 1:dataSource未設定 2:SQL文がない -1:システムエラー</returns>
こういうコメントを、関数仕様書のようにまとめる事ができる
お勧めツールはありますでしょうか?
218:デフォルトの名無しさん
14/04/26 12:51:59.56 Qdi0GyvQ
以下、たかがサンプルに対する本筋から逸れたどうでもいい突っ込みをどうぞ↓
219:デフォルトの名無しさん
14/04/26 13:04:22.85 EJb9DXTR
>>218
1つの関数にopenからsql実行まで全部いれないでもうちょっと別けろよ
220:デフォルトの名無しさん
14/04/26 13:14:14.44 yjIemKHI
Sandcastle
221:デフォルトの名無しさん
14/04/26 13:26:01.94 Fm5sej5/
returnsの書き方に違和感
222:デフォルトの名無しさん
14/04/26 13:49:19.87 4Y2pKqPs
>>219
openからsql実行まで一連の処理を一つの関数にまとめていると
何か不都合が出てくるのでしょうか?
なるほど、という不都合が。
223:デフォルトの名無しさん
14/04/26 15:32:06.24 rj2lEW1Q
エラーなら例外使うべきだな
224:デフォルトの名無しさん
14/04/26 15:36:25.19 Qdi0GyvQ
どうですか?
笑えないほど予告通りですね
225:デフォルトの名無しさん
14/04/26 15:38:21.79 ZzzaXJVH
むしろチミが召喚したという
226:デフォルトの名無しさん
14/04/26 16:28:10.91 we+cBXG7
>>220で答え出てた
>>222
File.ReadXXXなんかもあるし、これで全部賄おうって話じゃなけりゃ問題ないでしょう
それより処理結果をintで返すのは誰に教わったの?そいつぶん殴ったらいいよ
処理結果なんて誰も見ない
SQLがnullだった場合?呼び出す側はこれnullかも・・・って思いつつ呼び出さないよな、だったら事前チェックするから
想定してないのにnullって言われてもどうしようもない
だから対処できるメソッドまで例外を投げるんだよ、回復とか通知とか出来るところまで
ArgumentNullExceptionを投げるようにして、例外説明用のタグもあるからそれ使おうか
227:デフォルトの名無しさん
14/04/26 16:32:22.76 lFCRVMF1
SQL実行しといて行数すら返さないってINSERT専用なの?
228:デフォルトの名無しさん
14/04/26 16:42:25.86 Cr6T5VXg
おしっこも出るよ(´・_・`)
229:デフォルトの名無しさん
14/04/26 17:17:16.99 Gwme6n+H
>>226
>処理結果なんて誰も見ない
それを言うなら、呼び出したメソッドが例外投げるなんて「誰も想定しない」
とも言えるわけでどっちもどっちだと思うよ。
むしろエラーコード方式の方が、そのメソッドではエラーが発生しうることをコード上で
明示できる分優れているとすら言える。
ただ>>217はエラーコードに今時マジックナンバーを使ってる点は問題。
そこはenumか例外オブジェクトを返すようにした方がいいと思う。
230:デフォルトの名無しさん
14/04/26 17:36:23.19 19vcZYji
C#に限った話ではないのかもしれないけど
静的ではないクラスの中に定義したメソッドは
そのクラスのインスタンスを作成するたびに メモリ上に展開されるの?
だとしたら
主にデータを保持するために使うクラスには出来る限りメソッドを定義しないようにして
メソッドはそれを提供する専用のクラスに分割して書いたほうが良いの?
インスタンスの量が増えてくるとメモリの使用量が気にならないかなぁ・・・と
まぁC#でメモリの使用量なんて気にしても仕方ないのかもしれませんがよろしくお願いします.
231:デフォルトの名無しさん
14/04/26 17:40:40.90 9En+Yllw
ポインタしかもたんだろ
232:デフォルトの名無しさん
14/04/26 17:41:26.63 lFCRVMF1
んなわけないだろ
233:デフォルトの名無しさん
14/04/26 18:00:36.35 oIIaUmxU
OOP言語(というか実行環境か)でインスタンスごとに独立した実行コードが
割り当てられるような間抜けな実装してるものなんてあるのか?
誰が考えてもありえない話としか思えないが
234:デフォルトの名無しさん
14/04/26 18:04:16.55 Qdi0GyvQ
vtableでくぐれ
235:デフォルトの名無しさん
14/04/26 18:14:29.64 lFCRVMF1
CLRではメソッドテーブルだ
236:デフォルトの名無しさん
14/04/26 18:26:31.95 NVDEc6dD
>>217
ためしにDoxygen
237:デフォルトの名無しさん
14/04/26 20:31:07.43 +q1cG7mf
>>229
例外オブジェクトを返す?本気?
238:デフォルトの名無しさん
14/04/26 20:34:09.18 GZ073aKT
C#でTwitterクライアントを作りたくて検索したんですが情報が古かったりして出来ません
オススメや参考にしたサイト等あれば教えてください、お願いします
239:デフォルトの名無しさん
14/04/26 20:37:36.64 lFCRVMF1
そのライブラリーはIDが64ビット化したのに対応してないんじゃない?
240:デフォルトの名無しさん
14/04/26 20:42:52.62 7/lzVZ3W
>>237
例外オブジェクトの存在価値が投げられること、ただそれだけだ思ってるのならただの固定観念。
241:デフォルトの名無しさん
14/04/26 21:15:39.82 lFCRVMF1
投げないならExceptionより軽量高速で誤解を招かない選択肢が一杯ある
242:デフォルトの名無しさん
14/04/26 21:21:36.37 iOeXFZ4R
中学生か。
そういう批判のための批判なら要らない。
軽量かどうか、誤解を招くかどうか、どちらもそれが例外オブジェクトかどうかとは無関係。
243:デフォルトの名無しさん
14/04/26 21:26:28.10 lFCRVMF1
あえて使う理由は何?と聞いてるんだけど
244:デフォルトの名無しさん
14/04/26 21:31:09.99 L2eR/wTD
あえて例外オブジェクトを使えなんてどこに書いてある。
俺はマジックナンバーではなくenumか例外オブジェクトを返せと書いた。
要するにただ「使える」と言ってるだけだ。
2chで言ってもしょうがないが本当中学生じみた幼稚な奴だな。
245:デフォルトの名無しさん
14/04/26 21:39:05.02 sw3OTzY3
例外オブジェクトを戻値にする場合って呼び出し側でどうやってハンドリングするの?
Go言語みたいにするの?
246:デフォルトの名無しさん
14/04/26 21:43:07.54 lFCRVMF1
>>244
じゃあ聞くけどマジックナンバーと比較して例外を使うのの何が優れてると思ってるの?
型検査になるから列挙型のように選択肢も絞れないし、動作もマジックナンバーより遅いし
基本エラーを表す型しかないから成功のステータスを細分化できないんだけど
エラーメッセージが付加できる点ぐらいしかメリットがないと思うよ
247:デフォルトの名無しさん
14/04/26 21:49:55.75 yjIemKHI
おとなしく例外を投げろよ
SQLの実行が100%成功するわけないことぐらい誰でもわかるだろ
248:デフォルトの名無しさん
14/04/26 21:53:17.85 UjMxSJz5
エラーコードは戻り側で無視したらそこでおしまい
例外ならば(例外を食ったりしなければ)普通最上位までまき戻る
あと例外を階層的にクラスで扱えばいろいろ便利だね URLリンク(ideone.com)
C++、Java でも例外をとりいれているし、
エラーコードなんて過去の遺物じゃないかな
249:デフォルトの名無しさん
14/04/26 21:58:49.85 Qdi0GyvQ
ここまで燃えるとは予想外ワロタ
250:デフォルトの名無しさん
14/04/26 22:09:27.96 2szqXR0/
>>248
よくある議論だけど、最初から言ってるように、戻り値(エラーコード)ではなく
例外機構を使ったからって、呼び出し側がエラーを想定しなかった場合のリスクに違いはない。
上位まで戻るって、意図的にそうした場合は別として、そうでない場合に
想定されてない例外に対して適切な回復処理なんか出来るわけないでしょ。
251:デフォルトの名無しさん
14/04/26 22:19:49.67 2szqXR0/
突っ込まれる前に言っとくけど、例外を投げることの利点はプログラムを
強制終了させるパワーを持っていることで、だから回復不可能なエラー発生時には
積極的に例外を投げる意味があるけど、それ以外の場合は本来別に例外を投げることに
固執する意味なんてたいしてないんだよね。
むしろエラーコード方式だと他の値が返せなくなるからという程度の理由しかない。
252:デフォルトの名無しさん
14/04/26 22:31:03.25 yjIemKHI
詳しいエラーメッセージをのせられない
追加情報をのせられない
おきた場所のスタックトレースが取得できない
InnerExceptionみたいのができない
エラーの発生しうるメソッドを実行するたびに戻り値を確認する必要がある
回復可能なエラーで失敗を想定しないと停止されないので、そのまま適切でない処理が続行される危険がある
とか
253:デフォルトの名無しさん
14/04/26 22:52:46.46 lFCRVMF1
実行エンジンや他人のライブラリが例外を投げてくる可能性は消えないので例外処理をしないという選択肢がありえない
両方やりたいならお好きにどうぞ
254:デフォルトの名無しさん
14/04/26 23:03:12.36 +q1cG7mf
>>251
その理屈から引数nullとシステムエラー(なんだよそれ)をエラーコードで良いと判断したの?
システムエラーが返された時どうしたらいいの?
俺なら無視しちゃうな
255:デフォルトの名無しさん
14/04/27 00:00:20.60 miy+8Evc
共通関数って、最初に引数チェックしてダメだったら例外投げるよな
引数例外もしくはContractsとか使って
256:デフォルトの名無しさん
14/04/27 00:08:02.95 dy7wqSER
どうでもいいけどHttpWebRequestで404の時とかにWebException投げるのやめて欲しい
もともとネットにつながらないとかホストが見つからないという時だけ投げて欲しい
257:デフォルトの名無しさん
14/04/27 03:24:50.79 oLsNKogN
>>250
想定しないエラーについては上位に投げる(キャッチしない)のがC#の基本的なエラー処理の考え方だぞ
例外投げるのは意図的に捕捉しない限り勝手に上位に伝播する
自分で処理できるエラーだけ捕捉するのはエラーコードでもいいが、それ以外を上位に投げるのにエラーコードは不向きだ
258:デフォルトの名無しさん
14/04/27 10:37:42.14 /A+wJ+qi
★質問したいこと
「default(T)」は値なの?型なの?
(下記のコードがうまくいかない理由は?)
★状況
public class Range<T> where T : IComparable<T>
{
public T Begin { get; set; }
public T End { get; set; }
public bool Contains(T t)
{
return (Begin == default(T) || Begin.CompareTo(t) <= 0)
&& (End == default(T) || 0 < t.CompareTo(End));
}
}
Begin == defualt(T)のとこで「演算子 '==' を 'T' と 'T' 型のオペランドに適用することはできません。」
とか、表示されます。
T d = default(T);とか書いてみて、もちろんエラーは出ない。
さらに、if( Begin == d ) {...}とか書いてみると、 上記のエラー。
259:258
14/04/27 10:39:06.66 /A+wJ+qi
>>258
あれっ!HTMLエンコードしすぎちゃった!
260:デフォルトの名無しさん
14/04/27 10:58:40.25 jKbi43u9
>>217
URLリンク(blogs.msdn.com)
Visual Studio に同梱してもいいと思うんだが。
261:デフォルトの名無しさん
14/04/27 11:05:42.81 PjLFHi1Y
>>258
IComparableでも==は使えない
262:デフォルトの名無しさん
14/04/27 11:22:51.99 LKRXtHDC
Equals使えばいいんじゃねえの
263:デフォルトの名無しさん
14/04/27 12:03:22.28 LKRXtHDC
default(T)がnullだった時に落ちないようにしなきゃいけないとすると
静的メソッドの
object.Equals(object, object) っていうのが使えるのかな
でもdefault(T)との比較は値型のときの動作が怪しいよな
264:デフォルトの名無しさん
14/04/27 12:13:25.13 Yz145qkP
EqualityComparer<T>.Defaultとかそういうのがあって
265:258
14/04/27 12:48:31.67 /A+wJ+qi
>>261-264
とりあえずこうしてみます。
>>263案で。
みんなありがとう。
public class Range<T> where T : IComparable<T>
{
public T Begin { get; set; }
public T End { get; set; }
public bool Contains(T t)
{
return (object.Equals(Begin, default(T)) || Begin.CompareTo(t) <= 0)
&& (object.Equals(End, default(T)) || 0 < t.CompareTo(End));
}
}
266:デフォルトの名無しさん
14/04/27 13:36:23.26 miy+8Evc
Contains の実装間違ってるっぽいが大丈夫?
後、default(値型)は、値型の初期値(≒0)になるよ
267:デフォルトの名無しさん
14/04/27 21:38:52.33 Q9kXtU28
Tでもnullとの==比較だけはできるんだけど
Tが値型の場合は常にfalseになる
268:デフォルトの名無しさん
14/04/27 21:44:11.91 LKRXtHDC
マジで?!
初めて知った・・・
269:デフォルトの名無しさん
14/05/01 08:05:57.00 fMEOKfxX
Actionめちゃくちゃ便利じゃないか
古い情報のデリゲートを使ったり、イベント使ったりして
途中でわけがわからなくなってたがこれ使ってすんげーシンプルにかけるようになった
270:デフォルトの名無しさん
14/05/01 09:52:55.43 tJSAUBZt
ActionとかFuncとかは単なる作り付けのデリゲート
便利なのはラムダ式
271:デフォルトの名無しさん
14/05/01 16:02:15.95 fMEOKfxX
今気づいたけどID出るようになってるね
これでキチガイが暴れなくなったね
272:デフォルトの名無しさん
14/05/01 16:10:50.88 HVeqsQe1
∧∧
ヽ(・ω・)/ ズコー
\(.\ ノ
、ハ,,、  ̄
 ̄
273:デフォルトの名無しさん
14/05/01 16:53:11.58 BD8IvZOZ
C#のLinqでは、Like句は使えないのでしょうか?
下のようなVB.NETプログラムをC#で書きたいのですが、
Likeは無いと怒られます。
Dim filter As String = "*マ*"
'データソースの作成
Dim animals = New String() {"ライオン", "ウマ", "ポチ"}
'LINQで処理を定義
Dim results = From animal In animals Where animal Like filter
274:デフォルトの名無しさん
14/05/01 16:57:52.59 uhEglYyp
うん、使えない
275:デフォルトの名無しさん
14/05/01 17:01:22.57 uhEglYyp
あ、Like演算自体はMicrosoft.VisualBasic.CompilerServices.LikeOperator.LikeStringメソッドで実現できるよ
クエリの句として使えないだけで
276:デフォルトの名無しさん
14/05/01 17:12:26.68 BD8IvZOZ
そうなんですか
残念
クエリ式は、VB.NETの方が優れてる気がしますね
277:デフォルトの名無しさん
14/05/01 17:16:43.77 uhEglYyp
よく考えたらLikeはクエリ式とは関係ないただのVBの演算子だった
まあクエリ式なんてついでに乗っけてみた程度だからどうでもいいよ
278:デフォルトの名無しさん
14/05/01 17:19:01.49 Hl+E0h9B
クエリ式見るだけで吐き気がする
どうしてドットで繋がないんだ
可読性下がるだけだろ
279:デフォルトの名無しさん
14/05/01 17:27:43.28 BD8IvZOZ
ちなみに、>>273と同等のコードは、
C#だと、どのように書けるでしょうか?
書くことが出来ないとは
思えないのですが。。。
280:デフォルトの名無しさん
14/05/01 17:29:47.35 HVeqsQe1
VBやってろよ
気を揉まなくて済むぞ
281:デフォルトの名無しさん
14/05/01 17:31:14.67 uhEglYyp
var results = animals.Where(animal => LikeOperator.LikeString(animal, filter));
var results = from animal in animals where LikeOperator.LikeString(animal, filter);
どっちでも好きに
282:デフォルトの名無しさん
14/05/01 17:32:05.24 uhEglYyp
ってそういえばselect必須だったっけ
var results = from animal in animals where LikeOperator.LikeString(animal, filter) select animal;
283:デフォルトの名無しさん
14/05/01 17:34:59.06 Hl+E0h9B
>>279
var results = animals.Where(animal => Regex.IsMatch(animal, ".*マ.*"));
こんな感じ?
これだと正規表現がすごく遅そうでやばそうかな
284:デフォルトの名無しさん
14/05/01 18:01:32.04 BD8IvZOZ
>>282
ご回答ありがとうございます。
ただ、下記のようなコードを書いたのですが、
「動的な式のコンパイルに必要な1つ以上の型が見つかりません。」
と怒られてしまいます。
using Microsoft.VisualBasic.CompilerServices;
string filter = "*マ*";
dynamic animals = new string[] {"ライオン","ウマ","ポチ"};
var results = from animal in animals where LikeOperator.LikeString(animal, filter) select animal;
素人質問で恐縮ですが、
どの辺がいけないのでしょうか?
よろしくお願いします。
285:デフォルトの名無しさん
14/05/01 18:03:34.36 uhEglYyp
なんでdynamicなんだよ
286:デフォルトの名無しさん
14/05/01 18:04:42.61 HVeqsQe1
だから言ったのに
287:デフォルトの名無しさん
14/05/01 18:06:08.51 Hl+E0h9B
ダイナミック
ダイクマー
288:デフォルトの名無しさん
14/05/01 18:49:10.15 BD8IvZOZ
>なんでdynamicなんだよ
あっ、本当だ。
失礼しました。
ただ、下記のようなコードを書くと、
全ての要素がヒットしてしまいました。
var filter = "*マ*";
var animals = new string[] {"ライオン","ウマ","ポチ"};
var results = from animal in animals where LikeOperator.LikeString(animal, filter, Microsoft.VisualBasic.CompareMethod.Binary) select animal;
なかなか難しいなと思いました。
289:デフォルトの名無しさん
14/05/01 19:58:52.39 R3+I0L0F
死ねと思いました
290:デフォルトの名無しさん
14/05/01 20:04:27.43 JPPdbDCn
コードままでウマしかヒットしなかったけど釣りか?
291:デフォルトの名無しさん
14/05/02 00:24:04.56 Z8O9F4B6
すみません、クイックウォッチのソースを見ていました
結果ビューを見たら、ちゃんとウマだけヒットしていました
C#を始めて3日目の超初心者なので、
初歩的な間違いをしておりました
このデータを、どう配列に取り込もうか考え中ですが、
それくらいなら自力解決できると思います
ご教授ありがとうございました
292:デフォルトの名無しさん
14/05/02 00:35:51.86 Z8O9F4B6
クエリ式って、エクセルからオブジェクトを一気に取り込んで
あいまい検索する時とか、凄く便利そうですが、
メジャーじゃないんでしょうか?
エクセルVBAの構文が見難かったので、
C#でやる方法を色々調べている時に、
便利そうだと思ったのですが、
情報がほとんど無かったので。。。
293:デフォルトの名無しさん
14/05/02 00:48:05.73 tBX44kWl
メジャーじゃないですね
294:デフォルトの名無しさん
14/05/02 02:41:15.92 5msgSlqj
今時エクセル絡ませるのはマイナーの部類ですね
295:デフォルトの名無しさん
14/05/02 02:42:06.91 5msgSlqj
データベースに桐を使ってるレベルです
296:デフォルトの名無しさん
14/05/02 10:52:35.09 ht5JWCls
マイナーかどうかはおいといて、結局 C# 経由で VBA のメソッドを使うことにならん? それ。
297:デフォルトの名無しさん
14/05/02 12:13:38.02 4eRBcMfb
Like相当なら
StartsWith()、EndsWith()、Contains() でいいべ
298:デフォルトの名無しさん
14/05/02 16:54:12.21 dSQl/o1w
Visual C# 2013
.NET Framework 4.5
数値と文字列の組を、数値の降順で表示したいのですが
↓より簡単な方法はないでしょうか
URLリンク(ideone.com)
数値の重複はあり、重複した数値のソート順は問いません
299:デフォルトの名無しさん
14/05/02 17:01:30.08 ntw0y3bI
組なんだったら一つのクラスにまとめればいいじゃん
300:デフォルトの名無しさん
14/05/02 18:05:33.78 hJb5Y+9v
var DayMon =new List<Tuple<int,string>>{Tuple.Create(31,"Jan"),Tuple.Create(28,"Feb"),.....}.OrderBy(t=>t.Item1);
foreach(var dm in DayMon)
{
Console.WriteLine("{0} {1}", dm.Item1,dm.Item2);
}
301:デフォルトの名無しさん
14/05/02 18:10:50.51 dSQl/o1w
クラスを作るという方法も考えたんですが、もっとお手軽にできないかと
URLリンク(ideone.com)
↑ちょっとKeyValuePairが長いですが、これで行こうかと思います
>>300
ちょっと検討してみます
302:デフォルトの名無しさん
14/05/02 18:37:49.20 dSQl/o1w
>>300
ideoneではコンパイルできませんでしたが、VC#2013では結果が正しく表示されました
URLリンク(ideone.com)
OrderByは使えなかったのでSortで代用しています
タプルもKeyValuePairも似たような感じですが、若干ソースが見やすくなったかと
ありがとうございました
303:デフォルトの名無しさん
14/05/02 21:16:13.38 lNHwVscw
OrderByは拡張メソッドでUsing System.Linqが無いと使えない
private void Form1_Load(object sender, EventArgs e)
{
var lst = CreateList(new { Id = 0, Name = "" });
lst.Add(new { Id = 31, Name = "Jan" });
lst.Add(new { Id = 28, Name = "Feb" });
lst.Add(new { Id = 31, Name = "Mar" });
lst.Add(new { Id = 30, Name = "Apr" });
foreach (var item in lst.OrderBy(t => t.Id))
{
Console.WriteLine("{0}{1}", item.Id, item.Name);
}
}
private List<T> CreateList<T>(T val)
{
return new List<T>();
}
304:デフォルトの名無しさん
14/05/02 23:44:12.05 FeJk+PKM
>>298
enum
305:デフォルトの名無しさん
14/05/02 23:59:39.01 0wxqsA8J
多少工夫が必要だがDictionaryの初期化子って手も
306:デフォルトの名無しさん
14/05/03 00:03:57.75 KZJ62BJo
>>302
コードが短ければいいってものじゃないと思うけど
>>300みたいなのってパッと見てわかりやすいとは思わないわ
あまりにも抽象的過ぎて
これもさ、例えばlistを別のクラス、プロジェクトで利用したいってなったとき
t.Item1の見た目でどんな意味の値が入っているかわからないじゃない?
一つのメソッド内でしか使わない使い捨てならいいけどさ
public class Month
{
public int Name{get;set;}
public int Days{get;set;}
}
foreach (var mon in months)
{
Console.WriteLine("日数:{0} 月:{1}", mon.Days, mon.Name);
}
コードは長くなるけど、このほうがわかりやすいでしょ?
307:デフォルトの名無しさん
14/05/03 00:17:35.06 KZJ62BJo
>>303
これもさ、例えば曜日などのメンバーを追加したり、メソッドを追加したくなったらどうすんのって話
全部書き換えなきゃいけなくなる
308:デフォルトの名無しさん
14/05/03 00:20:14.92 JUyABsGs
自然に実装するのが一番だね
309:デフォルトの名無しさん
14/05/03 00:29:10.18 KZJ62BJo
暦なんて普遍的なものなんだから十分クラスとしてあってもよいもの
年によって月の日数も変化するし、曜日もほしくなる
カレンダークラスというのがほしくなるかもしれない
容易に拡張すると予測されるようなものを、
その場しのぎで柔軟性のないコードで実現したとしても
わかりやすい、使いやすいにはならないと思う
310:デフォルトの名無しさん
14/05/03 00:44:39.43 axBvBMhe
何か講釈してるけどDateTimeFormatInfoとかCalendarとか知らないのかな
311:デフォルトの名無しさん
14/05/03 01:11:56.28 KHkxCjGP
こういう人には関わらない方が良い
312:デフォルトの名無しさん
14/05/03 02:25:42.67 /0tPcitL
pngをicoに変換するソフト作ってみたくて調べてたら
ToIcon名前空間ってのを見つけたんだけど、こいつのマニュアルがいくら探しても出てきません
どこかに載ってるページとかありませんか?
313:デフォルトの名無しさん
14/05/03 02:40:53.67 zB11sd0u
どこでToIconてのを見つけたんだ?
314:デフォルトの名無しさん
14/05/03 02:55:54.29 /0tPcitL
VisualStudioの候補で出てきた
315:デフォルトの名無しさん
14/05/03 06:04:12.62 XhsVJdhh
ぐぐる様で出てこないということは存在しないということ
画像ファイルを読み込んでIconオブジェクト作成して
Icon.Saveで作れないこともないけど、単一サイズしか作れないし色数も変になるから
実質的には自分で書かないと
316:298
14/05/03 12:32:42.87 0tTnhsBI
いろいろご意見ありがとうございます
URLリンク(ideone.com)
整理した結果、汎用方式で行こうと思います
>>303
動かしてみて参考にさせていただきました
>>306
単純に表示する順序を入れ替えたいだけなので、一つのメソッド内でしか使わない使い捨てです
317:デフォルトの名無しさん
14/05/03 13:32:06.08 O1mw8o44
>>316
2度とくん中洲
318:デフォルトの名無しさん
14/05/03 14:12:12.94 7V85CoD7
>>278
何もわかってないんだな
319:デフォルトの名無しさん
14/05/03 23:11:16.87 RQXoEmML
パラメータ化クエリをトランザクション処理したいのですが、上手く動きません。
何が悪いのか、超が付く初心者なので、とんと見当がつかず。。。
ご指摘のほど、よろしくお願いします。
var cmdList = new List<OleDbCommand>();
OleDbCommand command = new OleDbCommand();
var plam1 = new System.Data.OleDb.OleDbParameter("@param", System.Data.OleDb.OleDbType.Integer);
plam1.Value = "2535";
command.Parameters.Add(plam1);
cmdList.Add(command);
command = new OleDbCommand();
var plam2 = new System.Data.OleDb.OleDbParameter("@param", System.Data.OleDb.OleDbType.Integer);
plam2.Value = "2539";
command.Parameters.Add(plam2);
cmdList.Add(command);
using (var cn = new OleDbConnection())
{
cn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\test.accdb";
cn.Open();
OleDbTransaction transaction = cn.BeginTransaction(IsolationLevel.ReadCommitted);
try
{
foreach (OleDbCommand cmdSet in cmdList)
{
cmdSet.Connection = cn;
cmdSet.CommandText = "DELETE FROM t_家計簿 WHERE [No] = ?";
cmdSet.ExecuteNonQuery();
}
transaction.Commit();
}
}
320:デフォルトの名無しさん
14/05/04 00:10:55.38 QUU6NeMv
とりあえずコマンドのTransactionが未設定じゃないかな
321:デフォルトの名無しさん
14/05/04 00:27:31.63 I+QWjdQ8
まず普通にSQL通すとこからやって、パラメタとトランザクションは
別々に試して両方できてから合わせては?
322:デフォルトの名無しさん
14/05/04 00:52:37.14 WZQbe0KN
>とりあえずコマンドのTransactionが未設定じゃないかな
調べてみたら、まさにその通りでした。
初心者らしい、初歩的なミスでお恥ずかしい。
ありがとうございました。
323:デフォルトの名無しさん
14/05/04 08:07:19.84 zFJPqZSx
.Net4.5から追加されたSystem.IO.Compression.ZipArchive
クラスについてご教授下さい。
URLリンク(smdn.jp)
↑サイトなどを参考にさせて頂いて
ファイルやディレクトリの圧縮・展開等ができることは確認しました。
この時、例えば大きなファイルを圧縮するような場合
プログレスバーを表示させたりする事も考えられますが
圧縮や展開の進捗を得る方法というのはありますでしょうか?
フリーのライブラリなどでは可能なものもありますが
あくまで、このクラスを使用する前提の場合
どういった方法が考えられますでしょうか。
よろしくお願い致します。
324:デフォルトの名無しさん
14/05/04 08:16:33.82 izVfMrBs
Stream使って読み書きするんだからそこで適当に通知すればいいだろ
325:デフォルトの名無しさん
14/05/04 08:20:35.08 zFJPqZSx
ありがとうございます。
FileStreamクラスで似たような事をした事があったので
もしかしたら可能かとは思ったのですが
なにぶん初心者サンデープログラマなもので
うまい事できずにいました。
可能だというお墨付きを頂けたので
もうちょい頑張ってみます。助かりました。
326:デフォルトの名無しさん
14/05/04 09:24:10.11 zFJPqZSx
元ストリームのLengthプロパティを取得して、それに対してReadByte・WriteByteメソッド
で書き込む度に進捗を報告するようにできました。助言いただけたおかげです。
ありがとうございます。またよろしくお願いします。
327:デフォルトの名無しさん
14/05/04 10:48:12.54 IPFrsn/P
どういたまして
328:デフォルトの名無しさん
14/05/04 10:58:36.66 y/VTbq9Y
ローカル変数に属性ってつけられない感じ?
329:デフォルトの名無しさん
14/05/04 11:05:12.18 izVfMrBs
うん
というか付けてどうするんだ
330:デフォルトの名無しさん
14/05/04 13:23:29.95 MX2IhFCN
闇属性 外部から不可視になる
331:デフォルトの名無しさん
14/05/04 13:48:25.06 8U+RhpvH
水属性 参照型は値型に、値型は参照型になる
332:デフォルトの名無しさん
14/05/04 16:04:29.40 c3Q0rGbO
ヘンタイ属性 お前ら
333:デフォルトの名無しさん
14/05/04 17:04:07.99 mi+P20vl
なんかキモい流れ
334:デフォルトの名無しさん
14/05/07 11:01:32.36 xSUe5qhE
中ニ病でも.NETがしたい
335:デフォルトの名無しさん
14/05/07 11:25:59.65 6XNtQ4R5
>>207
Excelはやたらとあるのに、Word関係の情報少ないよな・・・
同じ感覚で文章出力出来るかと思って安易に受けたら、ちょっとしたことでもえらく苦労した記憶が
336:デフォルトの名無しさん
14/05/07 22:51:07.44 unuMLq/O
まともな文書になると普通はお好みのスクリプトとTeX使うからね
オフィスなんか使うバカに情報発信はできないからドキュメントが少ないのは仕方が無いよ
337:デフォルトの名無しさん
14/05/08 02:36:28.02 CO6CxSEW
(´・∀・`)ヘー それでそれで?
338:デフォルトの名無しさん
14/05/08 04:15:33.16 prlxKI3U
エクセラとかワールドとかコンマネッツとか
ここは難しいインターネッツですね
339:デフォルトの名無しさん
14/05/08 06:47:52.33 m/3Cotp7
c#Nativeのデスクトップアプリ作れるやつは
いつ頃出るんでしょうか?
340:デフォルトの名無しさん
14/05/08 06:54:20.47 0Ta/ZJrX
我々が生きているうちに拝むことはないでしょう
341:デフォルトの名無しさん
14/05/08 07:08:15.84 m/3Cotp7
>>340
それは確かですか?
c#Native出たら使いづらいc++やめてc#一本で
行きたいんですが。
342:デフォルトの名無しさん
14/05/08 07:59:05.22 FbSc8Swp
>>335
まあ、文章の処理ならテキストでやるし、出力の一部変えたいだけなら差し込み印刷あるし、ちゃんとした組版やるには力不足で色々面倒だし...
昔、Word に入力されてる表を Excel に転記したいと言う依頼で一寸触ったきりだな ⇒ Word VBA
343:デフォルトの名無しさん
14/05/08 08:43:59.98 NviPB3le
.NETの入ってないWindowsはもう無いしWin8ストアアプリなら.NETはネイティブ扱い
もう完全にネイティブだよ
344:デフォルトの名無しさん
14/05/08 19:51:14.67 XvpxJEVk
> .NETの入ってないWindowsはもう無いしWin8ストアアプリなら.NETはネイティブ扱い
> もう完全にネイティブだよ
何言ってんのか全然わからん
誰か訳してくれ
345:デフォルトの名無しさん
14/05/08 19:54:17.27 OiZYTZUA
ランタイムが不要なバイナリはネイティブだ!
って言いたいんだろ。何言ってるのか全然分からんなw
346:デフォルトの名無しさん
14/05/08 20:35:36.17 7Gl9qGxi
ネイティブの定義が曖昧
347:デフォルトの名無しさん
14/05/08 21:26:01.92 wftUG4Xi
OSがサポートしてればネイティブ
ランタイムが必要ならネイティブじゃない
348:デフォルトの名無しさん
14/05/08 21:36:58.45 7Gl9qGxi
msvcrが動的リンクだとネイティブじゃないと
349:デフォルトの名無しさん
14/05/08 21:58:55.52 wftUG4Xi
その通り
350:デフォルトの名無しさん
14/05/08 22:08:47.73 OiZYTZUA
マジにそう思ってそうだな
351:デフォルトの名無しさん
14/05/08 22:23:42.93 01rpyJ3E
IEでサポートされてるからJSもネイティブ
352:デフォルトの名無しさん
14/05/08 22:44:22.12 dPnVK8av
ネイティブインディアン
353:デフォルトの名無しさん
14/05/08 22:50:08.44 dmrdHCKV
世界一周してインドに着いたぞ
土人が居るぜ?きっとインド人だ
残念アメリカ大陸でした
じゃぁネイティブインディアンだね
インド人もびっくり
354:デフォルトの名無しさん
14/05/08 23:35:24.92 wftUG4Xi
ネイティブと否ネイティブの違いなんかないよ
突き詰めれば全てネイティブな命令で動いてるからね
355:デフォルトの名無しさん
14/05/08 23:45:03.13 XvpxJEVk
>>354
コーヒー吹いたw
356:デフォルトの名無しさん
14/05/08 23:54:04.43 unkGA5W+
>>347
OSがサポートするってのとランタイムが必要ってのは排他的な概念なのか?
357:デフォルトの名無しさん
14/05/09 00:24:22.85 uV5nbiP8
ターゲットをWindows7以降と考えると
標準インストールの3.5はもはやOSの一部
システムDLLに依存するかGACのDLLに依存するかの違いでしかない
358:デフォルトの名無しさん
14/05/09 00:28:44.62 iw87ytFg
> ターゲットをWindows7以降と考えると
> 標準インストールの3.5はもはやOSの一部
だから何で無理やり仮定するんだよ
MSの努力を無駄にするなw
.NET自体ネイティブじゃないのにランタイム云々言われても
URLリンク(blogs.msdn.com)
しかしネイティブな命令ってどんな命令なんだ?
気になって寝られない
359:デフォルトの名無しさん
14/05/09 00:46:12.13 buRKsp6U
二進数の事だよ
360:デフォルトの名無しさん
14/05/09 00:56:59.62 uV5nbiP8
ああ、Vistaってまだサポート残ってたんだな
ngenサービス起動で実質ネイテイブってことでOK?
>>347
VCのってmsvcrtに依存してるやつ多くね?
あと2008 Redestribute入れろってよく怒られる
ネィテイブ信奉者には
CDとかUSBに書き込んで起動でOS介さずに
動くプログラムを作ってもらいたい。
USB売ってファミコンみたいなビジネスできないかな
361:デフォルトの名無しさん
14/05/09 01:21:56.66 JQaGUgSW
Microsoft .NET Nativeとか出てくるんだから、今の .NET はネイティブじゃないんじゃないの。
362:デフォルトの名無しさん
14/05/09 06:09:37.34 O/hcGSXl
OSがサポートしてればネイティブ論法なら.batはどうなるの
363:デフォルトの名無しさん
14/05/09 06:43:01.93 4zx449Wa
ネイティブってことだろうな
VCでビルドしたもんはほとんどが非ネイティブw
364:デフォルトの名無しさん
14/05/09 07:17:50.07 cCUVEC+A
ランタイムを介さないで、CPUのインストラクションコードで、OSのAPI直接呼び出して実行されるプログラムをネイティブと呼ぶなら、そんなカテゴリは無意味になりつつある。
まず、CPUの速度向上で、ランタイムのオーパーヘッドが問題になることが、無くなった。
ガベージコレクションのように、ライブラリのリンクより、ランタイムで実行した方が効率のいいサービスが一般化している。
OSの低レベルなAPIはランタイムでラップしないと、セキュリティホールが発生しやすいし対応しにくい。
近年は、ブログラムやシステムの複雑化や肥大化が進んでいるから、実行効率より保守性や移植性を優先すべきになった。
つまり、デスクトップ環境においては、ネイティブなコードに拘る意味が無い時代になったんじゃないかな。少しさみしいけど。
365:デフォルトの名無しさん
14/05/09 07:33:46.00 4zx449Wa
>>364
.NETのことも.NET nativeのことも、なんもわかってないなw
366:デフォルトの名無しさん
14/05/09 07:37:23.14 k6RX7FOd
スマホアプリ作りの世界だと
ネイティブ=プラットフォーム依存
非ネイティブ=プラットフォーム非依存
で括られることが多いみたいだね
だからAndroidのJavaモドキはネイティブでUnityのC#は非ネイティブ
367:デフォルトの名無しさん
14/05/09 07:38:44.53 yGvDvFNw
変な希望を捨ててC++使ってればいいんだよ
368:デフォルトの名無しさん
14/05/09 08:29:16.28 giBvEpb/
C++11や14の機能みておもしろくなったなーとは思う
けど、どうせ使うのはC#かと思って手が出せないな
369:デフォルトの名無しさん
14/05/09 12:04:13.73 HTr67Xym
そこでまさかのC++/CLI
370:デフォルトの名無しさん
14/05/09 13:15:40.54 YiLzwXxL
それだけはないわ
371:デフォルトの名無しさん
14/05/09 14:49:24.40 Mr0Sp7Ii
nativeを土着と訳せば >>366 で問題ない
372:デフォルトの名無しさん
14/05/09 19:43:03.89 k6RX7FOd
つまりC#はエイリアンか
373:デフォルトの名無しさん
14/05/09 19:56:12.53 NDcf6f8g
>>366
darvik(VM)上で動くコードをネイティブって言う人見たことないぞ。
>非ネイティブ=プラットフォーム非依存
こんなこと言う人はもっと見たことない。
374:デフォルトの名無しさん
14/05/09 20:18:57.37 v/oaYztB
C#マシンみたいなの作ればええんか?
375:デフォルトの名無しさん
14/05/09 20:22:28.06 7rX/IBWU
AndroidででネイティブっていうとNDKだね
376:デフォルトの名無しさん
14/05/09 21:01:57.37 iw87ytFg
仮に.NETがネイティブだったとしてなんかいいことあるのか
主張自体の意味が分からん
377:デフォルトの名無しさん
14/05/09 21:05:29.92 E9SfM4pV
ネイティブだと時間かけてコンパイルできるから
最適化がカリカリに効いて超早くなるらしいね
378:デフォルトの名無しさん
14/05/09 21:19:32.89 4zx449Wa
難読化が不要になるかもしれない
anycpu向けにネイティブも含むって形のビルドだと不要にならないが
379:デフォルトの名無しさん
14/05/09 22:19:04.91 aGSQbVG9
ネイティブっていうのはもともとのとか生まれたところのとかいう意味だったはず
つまりWindows上でビルドされたアプリケーションはすべてネイティブなのだ!!!
380:デフォルトの名無しさん
14/05/09 23:03:28.43 WJR4c6c3
ΩΩΩ<な、なんだってー!!
381:デフォルトの名無しさん
14/05/09 23:47:40.08 YiLzwXxL
まあ、JIT でコンパイルされたコードとか悩ましいものもあるからなぁ
382:デフォルトの名無しさん
14/05/10 07:43:33.83 rYs4anx5
>>377
ngenは起動時間短縮も含めてかなり高度なAOT最適化がかかるよ
経験があれば感覚的に分かってるもんだが、
ネイティブのコンパイルって時間かけたからってそんなに速くなるもんじゃない
コンパイル時間ってほとんどIOだしな
383:デフォルトの名無しさん
14/05/10 13:47:56.20 m/AO6ufT
実際はおそらくいまだに実現してないと思うけど、.NETが出たときネイティブコンパイルに対する
JITの利点として挙げられたのが「実行環境のCPUの命令セットに対応した最適化が可能になる」
だったのを知らない奴がいるねw
384:デフォルトの名無しさん
14/05/10 14:35:11.11 Om1HfajV
いきなりそんなちんけな知識披露してどうしたいんだ? (w
385:デフォルトの名無しさん
14/05/10 17:29:27.79 libkbDSO
その調子で UCSD p-System を褒め称えてんくれたまえ
386:デフォルトの名無しさん
14/05/10 23:34:14.22 JsdyMFBf
C++14なんて出来たのか
学生で暇だったから11まではなんとか着いて行ったが
仕事で.NETに毒されてもう勉強する気にはなれんなぁ
387:デフォルトの名無しさん
14/05/10 23:44:30.25 +eAN56dx
>>383
そのx86系向け以外の実装がなかなか出てきてくれないのがなー
Xamarinくらいだっけ?実用的なの
388:デフォルトの名無しさん
14/05/10 23:49:21.32 smOEHBq/
IA64とかARM(CF、WP、RT)とかあるだろ
389:デフォルトの名無しさん
14/05/11 01:27:29.19 U/KhMBzc
>>387
いや元々は必ずしもそんな大風呂敷な話じゃないよ。
というのはx86って一口に言っても最大公約数的な部分以外の命令は共通じゃない。
390:デフォルトの名無しさん
14/05/14 00:47:16.22 K0yI8GQ1
C#でブラウザを操作しようとしていますがエラーが出てしまいます。
WebBrowserコントロールではなくIEを直接操作したいです。
以下コードを実行したところエラーが出てしまいました。
IEを直接操作する場合には、 getElementById("***"); の
コードを使う事は出来ないのでしょうか?
≪コード≫
SHDocVw.InternetExplorer ie = new SHDocVw.InternetExplorer();
mshtml.IHTMLElementCollection mshtml_ec;
mshtml_ec = ie.Document.getElementById("id_test"); ←ここでエラー
≪エラー ≫
型 'mshtml.HTMLDivElementClass' の COM オブジェクトを
インターフェイス型 'mshtml.IHTMLElementCollection' にキャストできません。
IID '{3050F21F-98B5-11CF-BB82-00AA00BDCE0B}' が指定されたインターフェイスの
COM コンポーネント上での QueryInterface 呼び出しのときに次のエラーが発生したため、
この操作に失敗しました: インターフェイスがサポートされていません
(HRESULT からの例外:0x80004002 (E_NOINTERFACE))。
391:デフォルトの名無しさん
14/05/14 00:49:50.84 emzrQeCt
mshtml.HTMLDivElementClass div = ie.Document.getElementById("id_test");
392:デフォルトの名無しさん
14/05/14 01:05:18.64 4vw7qdQU
イメージ的にはこれしてるからエラーになる
int element;
int[] collection;
collection = element; ←エラー
collection[0] = element; ←エラーではない(初期化されてないのは気にするな
393:デフォルトの名無しさん
14/05/14 03:12:41.94 bi1kolXx
>>391 >>392
mshtml.HTMLDivElementClass div = ie.Document.getElementById("id_test");
~~~~~~~~~~~~~~~~~~~~~~
このコードに置き換えたところ
Interop type 'mshtml.HTMLDivElementClass' cannot be embedded.
Use the applicable interface instead.
というエラーが出てしまいます。どうやら HTMLDivElementClass 自体が
認識されていない様ですが皆さんの環境では普通にビルド通るのでしょうか?
394:デフォルトの名無しさん
14/05/14 04:00:10.69 k2UyUu49
>>393
id_testは<div>なのか?
getElementByIdが返してるもの良く確認してみろよ
395:デフォルトの名無しさん
14/05/14 08:38:22.58 ICklhj5Y
IHTMLDivElement辺りのインターフェイス使えば
396:デフォルトの名無しさん
14/05/14 12:08:24.76 lHqltGg+
TからSomeClass<T>に変換するジェネリックなimplicit operatorを作るには
どのように書けば良いですか?
397:デフォルトの名無しさん
14/05/14 12:16:58.20 ICklhj5Y
SomeClass<T>にそのまま書けば良いんじゃない? とりあえず4.5なら通った
398:デフォルトの名無しさん
14/05/14 12:18:55.70 0F7NlhK7
>>394 >>395
mshtml.HTMLDivElementClass div;
//Interop type 'mshtml.HTMLDivElementClass' cannot be embedded. Use the applicable interface instead
そもそもこの定義をするだけでエラーが出てしまいます。
399:デフォルトの名無しさん
14/05/14 12:41:44.92 lHqltGg+
すいません、ミニマムコードを簡略化しすぎました。
SomeClass1を継承したSomeClass2<T>があって、
Tから変換されたSomeClass2<T>をSomeClass1として返すoperatorが
ほしいです。
400:393
14/05/14 13:05:07.85 0F7NlhK7
どなたか >>398 のエラーを解決してくださいm(-_-)m
401:デフォルトの名無しさん
14/05/14 13:10:20.17 4vw7qdQU
>>400
URLリンク(social.msdn.microsoft.com)
402:393
14/05/14 15:53:27.07 0F7NlhK7
>>401
結局、InternetExploreを直接操作する場合には
ie.Document.Getelementbyid();
使えないってことですか?
403:デフォルトの名無しさん
14/05/14 15:58:33.20 ICklhj5Y
>>402
>>395
HTMLDivElementでもいいけど
404:デフォルトの名無しさん
14/05/14 16:00:14.37 4vw7qdQU
使えるって。エラー原因も書いてあるじゃん
405:デフォルトの名無しさん
14/05/14 22:19:20.87 hc7I7FLC
>>403 >>404 ありがとうございます。出来ました!
406:デフォルトの名無しさん
14/05/15 08:23:27.55 yeWrapbB
横からだけど、あれってどういうときに埋め込みCOMを使えないの?
なんとなくクラスじゃなくてインターフェイスにしたら行けたような記憶はあるんだけど
具体的にはどういう仕組なんですか
407:デフォルトの名無しさん
14/05/16 01:13:32.52 i/xGMuQU
指定したIDの取得が出来たかどうかを判定する為に
以下コードを記述したのですがエラーになってしまいます。
この場合、どういう風に記述すれば良いのでしょうか?
【コード】
SHDocVw.InternetExplorer ie = new SHDocVw.InternetExplorer();
if (ie.Document.getElementById("WS2m") != System.DBNull) ← エラー
【エラー】
'System.DBNull' is a 'type', which is not valid in the given context
408:デフォルトの名無しさん
14/05/16 01:31:59.80 tdv/NjoT
is
409:デフォルトの名無しさん
14/05/16 04:25:55.78 iWose0vD
なぜでこれで大丈夫だと思ったのか逆に聞きたい
410:デフォルトの名無しさん
14/05/16 09:26:59.63 z9IT6DkQ
if (ie.Document.getElementById("WS2m") != null)
じゃないの?
411:デフォルトの名無しさん
14/05/16 09:32:42.61 WHbqzO3I
>>407
DBNullと比較したいならDBNull.Valueだろ
なんでDBNullが出てきたか知らないけど。
キミが書いたコードは値と型を比較してるからコンパイルできないのね
412:デフォルトの名無しさん
14/05/16 11:11:03.95 qpQIOLBV
IEを自動巡回するプログラムでメモリリークする場合の対処法ありますか?
MSが配布している「Windows Server 2003 Resource Kit Tools」というツールの中に含まれている「empty.exe」を実行するように組み込んだのですが、
2~3時間起動させておくとメモリがとんでもないことになっています。
何か対策あれば教えてください。
413:デフォルトの名無しさん
14/05/16 13:33:39.95 VAV/Ywcf
empty.exeでぐぐると頭悪そうなブログが大量に引っかかるな
あなたIEのオートメーションで質問してる人でしょ?
COMオブジェクトを適切にMarshal.ReleaseComObjectしてないとそうなると思うよ
414:デフォルトの名無しさん
14/05/16 13:44:57.44 wDpDXYS0
定期的にプログラム再起動させたらいいw
415:デフォルトの名無しさん
14/05/16 14:28:13.57 WW/l1jAv
ほう、こんなツールがあったのか
しかしこれをメモリ開放ツールと宣伝するのはいかがなものか
416:デフォルトの名無しさん
14/05/16 14:36:51.56 dX1r0FTl
>>410 >>411
if (ie.Document.getElementById("hoge") != DBNull.Value) ・・・(X)
{
// ie.Document.getElementById("hoge") 指定IDの取得が出来た場合の処理
ブロック:A
}
else
{
// ie.Document.getElementById("hoge") 指定IDの取得が出来なかった場合の処理
ブロック:B
}
上記の様にコードを修正しました。
すると、指定したIDの取得が出来た場合には(X)の部分で次のエラー
メッセージが表示されます。
演算子 '!=' を 'mshtml.HTMLDivElementClass' と
'System.DBNull' 型のオペランドに適用することはできません
出来なかった場合には、エラーはDBNull.Valueで正常に判定され
ブロック:Bに入ります。
以上を踏まえどういうコードを書けばIDが取得出来た場合、出来なかった場合とを
きっちりと判定する事が出来ますでしょうか?
417:416
14/05/16 15:21:57.53 dX1r0FTl
どうしても解決出来ません。
何とかお教えください。
418:デフォルトの名無しさん
14/05/16 15:27:29.07 VAV/Ywcf
DBNullなんてどこから出てきたの?
nullと比較しろって>>410が書いてるけどそれは確かめたの?
きちんと基本から勉強したほうがいいよ
IEとかじゃなくてC#の文法からさ
419:デフォルトの名無しさん
14/05/16 15:28:40.77 VAV/Ywcf
一度変数に受けたらどうよ。。
var element = ie.Document.getElementById("hoge");
if( element != null )
{
...
}
else
{
...
}
420:デフォルトの名無しさん
14/05/16 15:36:36.90 +9XdxNxU
! DBNull.Value.Equals(...)
421:デフォルトの名無しさん
14/05/16 15:38:49.49 3SEf4bpg
>>419
スクレイピングとかでぐぐれば