ふらっと C#,C♯,C#(初心者用) Part141

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/12/15(土) 10:46:07.45ID:Wu4Fx0bU
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
2019/03/20(水) 14:24:23.91ID:ZZcTomnN
>>90
IPアドレスは何に使うんだ…。
変わる上に被ることもあるのに。
2019/03/20(水) 14:43:00.12ID:4fAbiRjS
>>91
なるほど!そーいう手もありますね!
ツール自体はネットがつながっている事前提なので
そこはユーザにとってもサーバにしても心配していません。

>>92
IP偽装も簡単にされてしまうので
確かにあまり意味をなさないですね。
2019/03/20(水) 14:48:01.78ID:ZZcTomnN
>>93
偽装はともかく、正規ユーザーが不正判定され易いのは問題だよ。
2019/03/20(水) 14:58:40.20ID:/jX7WF9n
不正対策のために正規利用者が不利益を被ることは極力避けるべき
大抵が開発者の自己満足
ちょっとした手順が必要になるだけでも使い勝手は極端に下がる
ましてや誤って不正利用認定なんかされた日にはもう2度と関わりたくないと思う
さらにwebサーバーの常時保守と認証周りでのトラブルのカスタマーサポートとかまで考えたら本当に必要な工数なのかも疑わしい
そこまでする必要があるレベルのプロダクトならいちいちこんなところで質問なんて投げないだろうしね
2019/03/20(水) 15:04:53.44ID:4fAbiRjS
>>94 >>95
うーん、、、
WEBサーバが確かに攻撃されたらアプリ使えなくなるな〜。

いろいろ考えます。
2019/03/20(水) 17:10:46.92ID:/jX7WF9n
鯖への攻撃まで考慮しなきゃいけないくらいでかいソフトなの?
どんだけ高価なもん作ってるのか知らんけどパス付きzip程度じゃあかんの?
2019/03/20(水) 17:17:15.36ID:4fAbiRjS
>>97
世の中には悪い奴がいてWEBサーバ攻撃してくるヤツもいるんですよ
zipだと解凍してコピーして横流しされそう。
まぁ、ごく一部でしょうけどね。
2019/03/20(水) 17:17:40.52ID:lRuTUQCz
もうC#の話じゃないよな
2019/03/20(水) 17:25:55.06ID:4fAbiRjS
不正コピー対策は必須ですよ
2019/03/20(水) 17:33:20.02ID:ZZcTomnN
>>98
インストール時にだけWeb経由で認証して、認証データはローカルで暗号化して格納しとけば良い。
認証データの暗号化はProtectedDataクラスを使うのが簡単かつ安全。
2019/03/20(水) 17:34:45.92ID:lRuTUQCz
自分の作ったソフト売りたいって話なら言語は関係ない
パッケージソフトなら不正コピーの心配必要だけどユーザー登録型のライセンス販売なら普通はサポート見込んで買うからそんな心配するのがおかしい
2019/03/20(水) 17:45:20.84ID:4fAbiRjS
>ユーザー登録型のライセンス販売
1か月1000円で販売予定
2019/03/20(水) 18:31:09.68ID:/jX7WF9n
悪いやつがいるかいないかなんて話してないんだけど伝わらんな
悪いやつに対処するコストと悪いことされたときの被害額が見合うかって話だ
実被害なんてほぼ出ないのに無駄に開発コストかける意味は?
売れて実被害が出てから対策したって十分だよ
2019/03/20(水) 18:42:13.33ID:qInZcA4b
この知識レベルだとライセンスの前にセキュリティが不安になる
2019/03/20(水) 18:45:55.97ID:/jX7WF9n
初心者用で質問する人が月額モデルでしかも1000円も取るのか
そもそも月額モデルなら毎月の引き落としどうすんの?
クレカは?全部自前で用意すんの?
せめてvectorとか使ってシェアウェアにしときな
有料ソフトがいかに売れないかを知る良い体験できるよ
2019/03/20(水) 21:28:40.21ID:pSND/w6U
SDカードって確かこっそりCPRM対応だと思ったけど、
あれをドングル的に流用できたりしないかなとちょっと思ったがどうだろう

CPRMの仕組みを理解してないので的外れかもしれんがw
2019/03/20(水) 21:39:22.32ID:F2Rf/YlT
データ整形について質問です。
Dictionary< string, object > に属性名、属性値が格納されています。

Key:Value
開催日:2019/3/20
場所:東京
1名前:太郎
1誕生日:2000/1/1
1年齢:19
2名前:花子
2誕生日:1998/2/14
2備考:魚アレルギー

これをDetail型(開催日,場所,名前,誕生日,年齢,備考)の配列かListに変換したいです。
1,2,...がとても不格好で整形しづらいのですが、変更が許されません。
この数字は多くても6個です。また、数字によっては該当の属性名がないものもあります。

なにかよい方法はないでしょうか。
2019/03/20(水) 22:12:29.79ID:4fAbiRjS
>>106
むっちゃ便利やねん
2019/03/20(水) 22:30:16.54ID:pSND/w6U
>>108
こんなので出来ない?
検証してないので知らんけど
public class Detail
{
  public static Detail RetrieveFromDictionay(Dictionary<string, object> dic, int index)
  {
    var d = new Detail();
    foreach (PropertyInfo info in typeof(Detail).GetProperties(BindingFlags.Public | BindingFlags.Instance))
    {
      var key = $"{index}{info.Name}";
      object obj;
      if (dic.TryGetValue(key, out obj))
        if (obj.GetType() == info.PropertyType) info.SetValue(d, obj);
    }
    return d;
  }
  public DateTime 開催日 { get; set; }
  public string 場所 { get; set; }
  public string 名前 { get; set; }
  public DateTime 誕生日 { get; set; }
  public int 年齢 { get; set; }
  public string 備考 { get; set; }
}
2019/03/20(水) 22:30:19.68ID:C7TIImgv
>>108
全keyを走査しながら1個1個処理していけばいいだけに見えるけどそれじゃだめ?
2019/03/20(水) 22:39:16.99ID:Bg9D9rdv
UWPで作れば色々面倒なことはMSが面倒見てくれるけどな
あの範囲で問題ないプログラム限定では有るが
2019/03/21(木) 10:46:12.53ID:WMeBK6gL
>>110
できました。ありがとうございます。
勉強になりました。

ちなみにプロパティ名が英語の場合、もう一つ日本語と英語名が対になったDictionaryを定義して、そこから参照する形がいいでしょうか。
2019/03/21(木) 22:45:29.76ID:vrM85+ig
Adobe製品の開発言語は、逆アセンブルされない為にC++で開発してるの?
2019/03/22(金) 00:28:45.55ID:QnQyasxD
C#でArrayListのSortを実行すると
昇順で並び替えられています。

これをDESC(降順)で行うにはどうすればよいですか?


LINQとやらを使った方が確実かな〜。
2019/03/22(金) 00:47:13.07ID:pVVdiXqm
Sort()した後でReverse()すればいいよ
ArrayListだとSortだけで逆順にするにはIComparer書く必要があってだるいし
というか今時ArrayListなんて使ってないでList<T>使おう
2019/03/22(金) 00:48:26.04ID:QnQyasxD
>>116
サンクス!そーいうのがあったんだね。
(長らく現場から離れていてC#はコボラーみたいな感じになってます)
2019/03/26(火) 13:13:53.47ID:DPMd1MEr
VBAでごにょごにょやった方が効率いいね。
2019/03/26(火) 18:39:16.11ID:DPMd1MEr
VBAには、#region #endregion 的な機能はありますか?
コードが長くなってしまって縮小したいです。
2019/03/26(火) 20:36:10.97ID:A7GEbRVd
たぶんないと思うけどVBAスレで聞いた方がいいね
2019/03/26(火) 21:09:29.22ID:DPMd1MEr
ないのか
2019/03/29(金) 18:21:05.18ID:ukrtQ6PV
VS2017で

前のブックマークへ移動するショートカットコマンドですが

Control + K → P

はもう使えなくなったのでしょうか?


Control + B → P は使えます。
ただ、「K」はVS2010では普通に使えていたはずなのですが、、、
2019/03/29(金) 18:30:25.09ID:yqow3AID
>>122
Visual Studio 2017 Part6
https://mevius.5ch.net/test/read.cgi/tech/1528645068/
2019/03/31(日) 01:56:40.68ID:RIl4YBWE
例えばセッターのみが非publicなプロパティーがあるとして、
セッターにアクセスできるスコープからのみ見えるXMLコメントを
書くみたいなことって可能だったっけ?
2019/04/05(金) 16:23:35.92ID:q6NWzxZh
IEを自動起動して、スクレイピングのプログラムを作っています。
スクレイピングに詳しい人教えてください。

ページ内にliが複数あるため、getElementByTagNameでliを指定すると
全部の要素を走査してしまい、時間が結構かかっています。

そこで上位ブロックの divのidが[id_koregahosii]になっている
liの要素を取得するといったコードを書きたいのですが
よい方法はありますでしょうか?


<div id="id_aaa"><li>あいうえお</li></div>
<div id="id_bbb"><li>かきくけこ</li></div>
・・・複数(1000以上)・・・
<div id="id_koregahosii"><li>このliを取得した</li></div>

mshtml_ec = ie.Document.getElementsByTagName("li");
foreach (mshtml.IHTMLElement i_ele in mshtml_ec)
{
//取得したデータを変数にセット
}
2019/04/05(金) 16:53:09.70ID:x8OJz+Ud
.Document,getElementByIdしてからそのIHTMLElement2に対してgetElementsByTagNameすればいいんじゃね
2019/04/05(金) 17:31:16.88ID:q6NWzxZh
>>126
ありがとうございます!
試してみます!
2019/04/06(土) 23:59:31.30ID:8OPSxgse
DataGridViewで特定列を除いて
編集させたくないので以下コードを書きました。

dgv_test.AllowUserToAddRows = false;
dgv_test.AllowUserToDeleteRows = false;
dgv_test.ReadOnly= true;


ただし、その中のCheckBox列だけは
チェックのON/OFFを出来る様にしたいです。

これを実現するにはどういうコードをかけば良いのでしょうか?
2019/04/07(日) 00:20:04.80ID:J7v3B2LO
地道に全セルをなめてReadOnlyを設定して
実現できました。
2019/04/07(日) 01:32:05.92ID:J7v3B2LO
助けてくださいm(_)m

DataGridViewの2列目(インデックスは1)がチェックボックスです。
画面上でチェックを入れ「実行」ボタンを押した時に
その行にチェックが入っているかを判定しようとしていますが
うまくできません。。。どう判定したらいいのでしょうか?


エラー
ハンドルされていない例外
System.InvalidCasException:'指定されたキャストは有効ではありません。'

if ((bool)dgv_test[1, i_row].Value == true )  ← ここでエラーが発生
{
Debug.WriteLine("checkあり");
}
else
{
Debug.WriteLine("checkなし");
}
131デフォルトの名無しさん
垢版 |
2019/04/07(日) 02:00:48.99ID:vK2HJm7v
>>130
boolではなくbool?でキャスト
2019/04/07(日) 04:01:48.39ID:mKsxK2JJ
>>125-126
Ruby, Nokogiri, Selenium WebDriver では、

doc = Nokogiri::HTML( driver.page_source )

element = doc.at_css '[id="id_koregahosii"] > li'
puts element.text
#=> このliを取得した

CSS Selector では、[id="id_koregahosii"] > li。
id 属性が"id_koregahosii" である要素の、直下のli 要素。
> は直下を表す

doc.at_css は、最初に見つかった、1つの要素で、
doc.css なら、配列(複数要素)が返ってくるように使い分けるので、要注意!

jQuery では、0・1つの要素の場合でも、常に配列が返るので、間違える事がない!

最初に、jQuery などで、CSS Selector を学ぶ必要がある。
それよりも複雑な指定は、XPath を使う
2019/04/07(日) 09:43:37.49ID:J7v3B2LO
>>131
bool型にキャストしてます。
でもエラーがでます。
2019/04/07(日) 09:50:53.11ID:e9OeE/L4
>>133
boolとbool?は違う型
null許容型でググろう
2019/04/07(日) 11:40:12.15ID:J7v3B2LO
>>134
すみません。わからないので教えてください。。。。
2019/04/07(日) 11:45:12.82ID:vK2HJm7v
>>135
bool?型と言ってるのになぜbool型にするの?
(bool)のとこを(bool?)って直すだけだぞ
null許容型は、要するに(bool?の場合は)true,false以外にnullも含む(許容する)型
2019/04/07(日) 12:25:53.88ID:hRJe8zJK
using System.Numericsとしているのに
Complex a = 123;とだけ書くと何故か赤い波線が付いてエラーになります
System.Numerics.Complex a = 123;とするとエラーは出ないのですが、省略できないのが気に食わない
2019/04/07(日) 12:35:01.18ID:PRyiq+oO
>>137
VisualStudioのバージョンは?
後、赤線のエラーは何て書いてある?
VS2017だけど、省略してもエラー出ないよ
2019/04/07(日) 12:44:33.68ID:hRJe8zJK
>>138
暗黙的に変換できませんと書いてあります
2019/04/07(日) 13:03:15.10ID:hRJe8zJK
バージョンは2017です
System.NotImplementえdException: 'メソッドまたは操作は実装されていません。'というエラーも出ます
2019/04/07(日) 13:07:44.80ID:8KGRZT5W
その再現する部分だけを書いたプロジェクトをどこかに晒してみたら?
2019/04/07(日) 13:30:29.80ID:hRJe8zJK
全部削除して書き直したら治りました
何度も確認したのでタイプミス等ではないはずですが、何が原因だったのか
お騒がせしました
2019/04/07(日) 14:10:37.33ID:/8+Cw91p
>>130
var o = (bool?)true;
bar b = (bool)o;
これは実行時もエラーは発生しないし、

var o = (bool?)null;
bar b = (bool)o;
これで発生する例外はNullReferenceExceptionみたいだから、たぶん指摘されてるのと別の原因なんだろうなあ。
知らんけど。
2019/04/07(日) 14:24:18.31ID:/8+Cw91p
あー間違えた
var o = (bool?)true;
じゃなくて
object o = (bool?)true;
だね。結論は変わらない
2019/04/07(日) 16:58:28.24ID:aTlDD0vY
>>143
何言いたいのかよくわからないけど>>130に対する回答は>>131であってるよ
DataGridViewのCellの初期値がnullなのが原因なだけだから
null許容型のキャストするか行を作った段階で値を代入するかのどちらかになる
2019/04/07(日) 17:21:54.02ID:kimAJSSB
>>145
分かってよ。
nullをboolにキャストしようとした時発生する例外はNullReferenceExceptionであって
InvalidCasExceptionではないはずだ
2019/04/07(日) 17:31:51.66ID:vK2HJm7v
>>130
失礼。
発生した例外がNullReferenceExceptionではないから、
bool?にキャストすべき所がboolになってるバグの他にもバグがある。

例外はInvalidCasExceptionだから、
DataGridViewの列の定義が間違っていてdgv_test[1, i_row]がDataGridViewCheckBoxCellになっていないか、
初期化時にdgv_test[1, i_row].Valueにbool以外の値を代入していると思われる。
2019/04/07(日) 17:37:12.90ID:AvqFg232
終わった話でマウントしなくていいよ…
149デフォルトの名無しさん
垢版 |
2019/04/08(月) 13:25:57.00ID:mdLXKZZ1
ほんそれ
150デフォルトの名無しさん
垢版 |
2019/04/08(月) 15:30:44.33ID:G4htz/so
Windowsフォームでコントロールのプロパティの
EnableをFalseにすると「若干」色が薄くなるようですが
もっとはっきり薄くできないですかね?
完全に消えるとまずいんだけど
はっきり「今これは使えません」って意思表示したいんだけど
いい方法無ですかね?
2019/04/08(月) 20:13:53.30ID:DkSPe/Rf
>>150
フォーム全体で対応させるのはわからない
コントロール一つならEnabledChangedのイベントで
コントロールに初めから組み込みたいのなら
https://dobon.net/vb/dotnet/control/tbenabledfalse.html
の「自分で描画する」を参考に。やっていることは真逆だけど色を変えればいいだけ
ボタンやラベルなら使用不可を示すのに色だけでなくフォントの打ち消し線の有無で実装したことならある
152デフォルトの名無しさん
垢版 |
2019/04/09(火) 00:07:36.04ID:pirXsPL0
Window上にOpacity薄くしたパネルを全面表示すればいいんじゃないか
2019/04/09(火) 00:09:31.21ID:d/2DcaK3
テンプレに「酔っぱらいはレス禁止」って付け加えておいた方がいいな
2019/04/09(火) 01:05:33.44ID:HBj7RtDK
Checkboxの質問をしたものです。
初期化時にFalseを設定してやったらエラーが出なくなりました。
2019/04/09(火) 08:48:59.17ID:+PEPLDxq
チェックボックスの初期値がない=null
nullからのinvalid castやんけ
2019/04/09(火) 09:42:37.66ID:HBj7RtDK
ぬるキャストしたら金もらえるんか?

by いわま
2019/04/11(木) 00:20:32.43ID:aNdauzQw
なんでList<T>がraw型のCollection継承してる扱いになってんだ???
2019/04/11(木) 09:42:03.59ID:hzw6xvpZ
ちょっと何言ってるかわかんないです raw型って何
何か読んで疑問に思ったんだったら記述示すなりリンク張るなりして
2019/04/11(木) 21:19:05.19ID:3mGpDoO0
C#で多倍長浮動小数点数演算は出来ますか
多倍長整数を使ってどうにかするしかないんでしょうか
2019/04/11(木) 22:21:18.99ID:/LPE5YMd
>>159
decimalで足らないのなら自分で何とかするしかないな
https://docs.microsoft.com/ja-jp/dotnet/api/system.decimal?view=netframework-4.7.2
2019/04/11(木) 23:11:01.19ID:3mGpDoO0
>>160
自分でなんとかしたいと思います
1000桁とか10000桁とかの計算がしたいので
2019/04/12(金) 18:12:54.78ID:f0sWKcEF
今後、開発作業が増えてEXEのファイルサイズが大きくなっていく事が想定される場合
プロジェクト分けた方がええかな?


インストール型じゃなくてWEBシステムとして作ろうか悩み中
2019/04/12(金) 19:16:33.34ID:wX1hkUx5
「拡張メソッドはトップレベルの静的クラスでしか宣言できない」ということは、
public class Cの内部にprivate enum Eを置いたとき、Eに対して拡張メソッドを追加することは不可能なのでしょうか
いくつかの定数(とメソッド)を持った構造体で代用するしかないですかね
2019/04/12(金) 19:44:50.94ID:eTqArBo4
そこまでobj.method記法に拘る必要も無いだろ…
2019/04/12(金) 19:59:08.90ID:LhXUTlO1
>>162
どうでもいい
開発規模ウン億円とかにならない限り、人間が書いたコードの実行ファイルのサイズなんて全く問題にならない
それはともかく、Webを選べるのなら迷わずWebにすべき
exe配ると後々のメンテは地獄よ
2019/04/12(金) 20:16:15.81ID:f0sWKcEF
>>165
なるほどですね。
どうしてもWEBだと厳しいシステムなんですよね。
(サーバのIPアドレスが固定だとまずい)

cliclonceというのを使えばバージョンアップとか簡単ですか?
2019/04/12(金) 20:43:15.51ID:9e6eDjQn
ClickOnceはシステム管理者がガチギレするらしいので利用しないのが吉
2019/04/12(金) 20:47:48.47ID:Z2Oii3Wj
>>167
なぜ?
2019/04/12(金) 20:48:02.13ID:f0sWKcEF
>>167
なんでや?
2019/04/12(金) 20:49:24.84ID:f0sWKcEF
ClickOnceにするとむっちゃ楽そうだけど
2019/04/12(金) 20:49:43.52ID:f0sWKcEF
クリックワンス

http://www.asahi-net.or.jp/~ef2o-inue/vbnet/sub13_05_010.html
2019/04/12(金) 21:44:20.43ID:SPCc1qER
>>163
仮にenumを入れ子にする点は譲れないとしても(この点も本当は再考した方がいいと個人的には思うけど)
アクセシビティーをpublicにすることは検討していいんじゃないの?

隠蔽したい気持ちは分からんでもないが、少なくともpublicにしたからって何か危険があるわけじゃない。
2019/04/12(金) 22:21:07.52ID:wX1hkUx5
>>172
よく考えたらenumを入れ子で隠す設計をc#は想定してないってことですもんね
大人しく外に出します、ありがとうございました
2019/04/13(土) 00:18:29.71ID:BMo5W632
DataGridViewに詳しい人は教えてください。

DataGridViewの列にチェックボックスの列を設けています。
□がクリックされた時だけではなく、□の属するセル(の予約)が
クリックされても□にチェックが入る様に制御したいのですが
どうすればよいのでしょうか?

何かプロパティで設定するのですか?
2019/04/13(土) 14:39:03.85ID:n7lKOQoj
>>174
CheckBoxのセルのクリックで切り替えたいのなら
例えばCellをReadOnlyにしてCellClickイベントで値を切り替えればできる
2019/04/13(土) 15:19:56.97ID:BMo5W632
>>175
なるほど!
そーいう方法しかないんですね。

てっきり標準で設定出来るプロパティがあるのかと思ってました。
2019/04/13(土) 15:46:55.50ID:n7lKOQoj
>>176
方法の一つをあげただけでプロパティにあるかは知らない
2019/04/13(土) 16:32:46.29ID:BMo5W632
>>177
サンクス!



セレニウムにチャレンジしています。
VSで作成した場合
インストール環境にNugetが入っていないとうごかないのでしょうか?
2019/04/13(土) 17:16:51.48ID:04eDeW4T
>>178
日本語でよろしく
2019/04/13(土) 19:58:49.43ID:1RC1le5n
>>178
アクセス元に迷惑掛けるの目に見えてるから辞めとけ
2019/04/13(土) 20:14:34.97ID:BMo5W632
>>180
スクレイピングの練習やで
サンドバッグになってもらいます。
2019/04/14(日) 21:03:37.66ID:NnSXGzN0
スクレイピングをこれまでIEを操作して行ってきていましたが

セレニウムを使う方がナウいのでしょうか?

コンソール画面が立ち上がって結構うざいんですが
2019/04/15(月) 07:51:42.30ID:T2oRcbP+
>>182
consoleは消すことが出来る
2019/04/15(月) 09:11:14.20ID:M/FIhTOp
>>183
コンソールを消す事はできました。

ただ、問題がありまして
Cromeを使ってログインしないと見えないサイトの中のとあるページを
スクレイピングしようと思っていますが、一度ログインしたのに
もう一度プログラムを実行すると再び画像認証付きのログインページが表示されてしまいます。

Chromeのセレニウムでログインした場合、
ログインセッションは、プログラムを終了すると自動でとじられるのでしょうか?
2019/04/16(火) 02:41:38.00ID:39QxJxCa
セレニウムで画像選択は同実装すればよいのでしょうか?

Windwos APIを使わないと、ダメでしょうか?
2019/04/16(火) 07:50:30.04ID:xFKZ3CM/
ここC#スレだよ?
2019/04/16(火) 09:10:36.33ID:gry//OiE
スクレイプするにはまだ程遠い実力ということだ
2019/04/16(火) 09:47:51.95ID:39QxJxCa
スクレイピングはできる様になりました。

ドラッグするか、その枠をクリックしてファイルを選択するしか
画像の選択が出来ません。
セレニウムでドラッグやファイルの選択はできないですか?
2019/04/16(火) 12:32:55.79ID:5XyUIsTT
スレチ
2019/04/16(火) 12:33:02.58ID:gry//OiE
君には無理。
2019/04/16(火) 15:21:38.40ID:+QEcotOy
スクレイピング(が何かわかって無いけど)はできる様に(なった気持ちに)なりました。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。