!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■関連スレ
C#, C♯, C#相談室 Part95
https://mevius.5ch.net/test/read.cgi/tech/1508168482/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part143
https://mevius.5ch.net/test/read.cgi/tech/1558002486/
■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
ふらっと C#,C♯,C#(初心者用) Part144
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ドコグロ MM2f-DHp5)
2019/07/16(火) 15:36:23.74ID:i1fbuZ/pM674デフォルトの名無しさん (ワッチョイ b188-wC8D)
2019/09/19(木) 12:31:08.07ID:VB98Oc2p0675デフォルトの名無しさん (ワッチョイ 4dde-YXlV)
2019/09/19(木) 13:00:06.50ID:cKzRnh020 >>674
なるほど
地道にやってんすね
やってみた感じ
文字数から行数出した方が楽だったのと
検索しながらは検索文字列に改行コード入ると面倒だったので
@検索文字列のヒットした文字数を出す
A文字数に対する行数を出す
の順でやりました
ありがとう御座いました
なるほど
地道にやってんすね
やってみた感じ
文字数から行数出した方が楽だったのと
検索しながらは検索文字列に改行コード入ると面倒だったので
@検索文字列のヒットした文字数を出す
A文字数に対する行数を出す
の順でやりました
ありがとう御座いました
676デフォルトの名無しさん (アウアウウー Sa85-dxf9)
2019/09/19(木) 14:17:59.08ID:R2S0qhpOa 何言ってるのかよく分からんかったけど、
文字数 ⇒ 一致部分の最初の文字のインデックス
行数 ⇒ 一致部分の行の行番号
ってことかw
数え方の問題があるからだろうけど、Stringには一致箇所の数をカウントする
メソッドは存在しないんだね。
文字数 ⇒ 一致部分の最初の文字のインデックス
行数 ⇒ 一致部分の行の行番号
ってことかw
数え方の問題があるからだろうけど、Stringには一致箇所の数をカウントする
メソッドは存在しないんだね。
677デフォルトの名無しさん (ワッチョイ 11da-7ma+)
2019/09/19(木) 14:45:37.14ID:6IKimtYb0 検索一致箇所までの文字列を切り出して
改行でspritして要素数から行を得るというのはどうかな
折り返しは考慮されないけどね
あとtextboxなら折り返し込みで
文字インデックスから行に変換する
メソッドがあった気がする
改行でspritして要素数から行を得るというのはどうかな
折り返しは考慮されないけどね
あとtextboxなら折り返し込みで
文字インデックスから行に変換する
メソッドがあった気がする
678デフォルトの名無しさん (アウアウウー Sa85-dxf9)
2019/09/19(木) 14:58:17.90ID:R2S0qhpOa 検索される文字列が巨大だった場合Splitはさすがに富豪的過ぎるでしょ。
RegexかString.IndexOfでベタにやった方が
RegexかString.IndexOfでベタにやった方が
679デフォルトの名無しさん (ワッチョイ b188-wC8D)
2019/09/19(木) 15:15:08.89ID:VB98Oc2p0 文字数多いとsplitはパフォーマンス辛い可能性があるね
regexもそれなりに…
パーサー的なものなら頭から逐次処理するのが一番だったりするし
regexもそれなりに…
パーサー的なものなら頭から逐次処理するのが一番だったりするし
680デフォルトの名無しさん (ワッチョイ 11da-7ma+)
2019/09/19(木) 15:41:06.68ID:6IKimtYb0 ググったらreplaceを使ってlengthの差で求める方法があったけど
これも一時的にメモリ上で二重化されるから
巨大なログファイルとかだとあまりいい方法ではないな
IndexOfの検索結果を次の検索開始インデックスにしながら
カウントするのが一番楽で無駄がなさそうだ
これも一時的にメモリ上で二重化されるから
巨大なログファイルとかだとあまりいい方法ではないな
IndexOfの検索結果を次の検索開始インデックスにしながら
カウントするのが一番楽で無駄がなさそうだ
681659 (ワッチョイ 6ed8-U1xq)
2019/09/19(木) 21:16:22.29ID:sYHr9xpc0 自己解決
MTPデバイスへのショートカット(.lnk)をメモ帳で開くと見えるリンク先
(こんなの→"::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\\?\usb#vid_12d1&pid_1031&mi_00#7&22311cc4&0&0000#{6fa27828-a61a-4555-ba33-f28f495d4f31}")
をProcess->Start()にそのまま突っ込んだら、エクスプローラが起動してMTPデバイスを開いてくれました。
ちなみに、テキストの末尾に(〜5d4f31}\内部ストレージ\Android")というようにディレクトリを追加すれば、そのフォルダを開いてくれます。
MTPデバイスへのショートカット(.lnk)をメモ帳で開くと見えるリンク先
(こんなの→"::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\\?\usb#vid_12d1&pid_1031&mi_00#7&22311cc4&0&0000#{6fa27828-a61a-4555-ba33-f28f495d4f31}")
をProcess->Start()にそのまま突っ込んだら、エクスプローラが起動してMTPデバイスを開いてくれました。
ちなみに、テキストの末尾に(〜5d4f31}\内部ストレージ\Android")というようにディレクトリを追加すれば、そのフォルダを開いてくれます。
682デフォルトの名無しさん (ワッチョイ c95f-ACnl)
2019/09/20(金) 00:06:22.05ID:Z+Dr4fZe0 private class Parameter
{
public DateTime setTime { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string address { get; set; }
public int sex { get; set; }
}
↑のParameterのListデータで
setTime,Name,Ageが重複している情報を取得と排除したいんですがループでチェックするのは時間がかかりすぎるので
簡単で早く処理できる方法はないでしょうか?
{
public DateTime setTime { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string address { get; set; }
public int sex { get; set; }
}
↑のParameterのListデータで
setTime,Name,Ageが重複している情報を取得と排除したいんですがループでチェックするのは時間がかかりすぎるので
簡単で早く処理できる方法はないでしょうか?
683デフォルトの名無しさん (ワッチョイ 0279-Ms+D)
2019/09/20(金) 00:15:35.18ID:JBznBYO/0 Parameter.Equals() をオーバーライドして
用意した HashSet<Parameter> foreach で Add() を呼ぶ
用意した HashSet<Parameter> foreach で Add() を呼ぶ
684デフォルトの名無しさん (ワッチョイ 217b-qZEh)
2019/09/20(金) 00:15:52.99ID:MWgaILTA0 >>682
個々の要素参照するんだからループするしか無いんじゃないの
あらかじめどこか他にデータ持っているのならともかく
簡単にというのなら参照したデータをList<T>に入れていけばList<T>.Containsでチェックできる
個々の要素参照するんだからループするしか無いんじゃないの
あらかじめどこか他にデータ持っているのならともかく
簡単にというのなら参照したデータをList<T>に入れていけばList<T>.Containsでチェックできる
685デフォルトの名無しさん (ワッチョイ 0279-Ms+D)
2019/09/20(金) 00:17:07.07ID:JBznBYO/0 なんか色々おかしかった
↓正
Equals() をオーバーライドして
用意した HashSet<Parameter> に対して foreach で Add() すればよい
↓正
Equals() をオーバーライドして
用意した HashSet<Parameter> に対して foreach で Add() すればよい
686デフォルトの名無しさん (アウアウウー Sa85-9Tgq)
2019/09/20(金) 00:20:11.39ID:H/0RNa6Fa >>682
普通のListで「全要素について、別の要素と重複があるか」をチェックしようとしたらO(N^2)になるから
効率よくしたいならHashSetを使うといい
ただEquals()とGetHashCode()を適切に(今回の場合、setTime, Name, Ageだけで決まるように)実装する必要がある
普通のListで「全要素について、別の要素と重複があるか」をチェックしようとしたらO(N^2)になるから
効率よくしたいならHashSetを使うといい
ただEquals()とGetHashCode()を適切に(今回の場合、setTime, Name, Ageだけで決まるように)実装する必要がある
687デフォルトの名無しさん (ワッチョイ 0279-Ms+D)
2019/09/20(金) 00:21:51.81ID:JBznBYO/0688デフォルトの名無しさん (ワッチョイ c95f-ACnl)
2019/09/20(金) 00:32:56.51ID:Z+Dr4fZe0 まだ試してないけどHashSetってことはsetTime, Name, Ageだけのチェックにはならないのかな
setTime, Name, AgeがDBのキーになる予定なので無理そうな気が
setTime, Name, AgeがDBのキーになる予定なので無理そうな気が
689デフォルトの名無しさん (ワッチョイ 5d2c-I4i6)
2019/09/20(金) 00:33:33.46ID:73yDKPmS0 Reference Source で実装みればええやん
GetHashCode と ICompare 指定しなければ Default の Equals の両方やね
GetHashCode と ICompare 指定しなければ Default の Equals の両方やね
690デフォルトの名無しさん (アウアウウー Sa85-9Tgq)
2019/09/20(金) 00:34:05.25ID:H/0RNa6Fa >>687
Microsoft Docs見てきたが明言はされてないのか……ただ
https://docs.microsoft.com/en-us/dotnet/api/system.object.gethashcode ではDictionaryなどで使われるとあって
https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.hashset-1 ではDictionaryのKeyアクセスと同様のハイパフォーマンス集合操作を提供、とあるから
HashSetで扱う型についてもGetHashCode()の実装は必要なはず
Microsoft Docs見てきたが明言はされてないのか……ただ
https://docs.microsoft.com/en-us/dotnet/api/system.object.gethashcode ではDictionaryなどで使われるとあって
https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.hashset-1 ではDictionaryのKeyアクセスと同様のハイパフォーマンス集合操作を提供、とあるから
HashSetで扱う型についてもGetHashCode()の実装は必要なはず
691デフォルトの名無しさん (アウアウウー Sa85-TrZH)
2019/09/20(金) 00:41:13.96ID:WJxc7oYHa >>689
質問の感じから今現在自分で実装したものがあるんでしょ?それを載せたほうが微妙な解釈の違いに対しても最適解が出してもらえそうな気がするけど
質問の感じから今現在自分で実装したものがあるんでしょ?それを載せたほうが微妙な解釈の違いに対しても最適解が出してもらえそうな気がするけど
692デフォルトの名無しさん (ワッチョイ 0279-Ms+D)
2019/09/20(金) 00:57:02.51ID:JBznBYO/0 キーの重複は
GetHashCode() の一致 → Equals()
みたいだな
GetHashCode() は重複しにくいメンバの GetHashCode() で
Equals() で完全一致の判定をすれば大丈夫そう
GetHashCode() の一致 → Equals()
みたいだな
GetHashCode() は重複しにくいメンバの GetHashCode() で
Equals() で完全一致の判定をすれば大丈夫そう
693デフォルトの名無しさん (ワッチョイ c95f-ACnl)
2019/09/20(金) 00:58:18.71ID:Z+Dr4fZe0 あるサイトを参考にしてみたのが
private class Parameter
{
public DateTime setTime { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string address { get; set; }
public int sex { get; set; }
}
private class ParameterDistinct : IEqualityComparer<Parameter>
{
public bool Equals(Parameter i_lhs, Parameter i_rhs)
{
if (i_lhs.setTime == i_rhs.setTime && i_lhs.Name == i_rhs.Name && i_lhs.Age == i_rhs.Age)
{
return true;
}
return false;
}
public int GetHashCode(Parameter i_obj)
{
return i_obj.setTime.GetHashCode() ^ i_obj.Name.GetHashCode() ^ i_obj.Age;
}
}
private class Parameter
{
public DateTime setTime { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string address { get; set; }
public int sex { get; set; }
}
private class ParameterDistinct : IEqualityComparer<Parameter>
{
public bool Equals(Parameter i_lhs, Parameter i_rhs)
{
if (i_lhs.setTime == i_rhs.setTime && i_lhs.Name == i_rhs.Name && i_lhs.Age == i_rhs.Age)
{
return true;
}
return false;
}
public int GetHashCode(Parameter i_obj)
{
return i_obj.setTime.GetHashCode() ^ i_obj.Name.GetHashCode() ^ i_obj.Age;
}
}
694デフォルトの名無しさん (ワッチョイ c95f-ACnl)
2019/09/20(金) 01:02:47.93ID:Z+Dr4fZe0 //データ追加
var ParameterList = new List<Parameter>();
//重複排除
ParameterDistinct qualityComparer = new ParameterDistinct();
IEnumerable<Parameter> ParameterLister = ParameterList.Distinct(qualityComparer);
でやってみたんだけど重複がでたんだけど何かまずいだろうか
参考にしたところはDatetimeは使っていなかったので駄目なのかな
var ParameterList = new List<Parameter>();
//重複排除
ParameterDistinct qualityComparer = new ParameterDistinct();
IEnumerable<Parameter> ParameterLister = ParameterList.Distinct(qualityComparer);
でやってみたんだけど重複がでたんだけど何かまずいだろうか
参考にしたところはDatetimeは使っていなかったので駄目なのかな
695デフォルトの名無しさん (ワッチョイ 5d2c-I4i6)
2019/09/20(金) 01:09:28.14ID:73yDKPmS0 DateTime をつめるときに DateTime.Now とか使ってると ミリ秒で差がでてるかもしれない。
DateTime を == で比較すると 内部的には DateTime.Tick 同士で比較するから
DateTime を == で比較すると 内部的には DateTime.Tick 同士で比較するから
696デフォルトの名無しさん (ワッチョイ c95f-ACnl)
2019/09/20(金) 01:21:43.10ID:Z+Dr4fZe0 なるほどDateTime.Nowは使っているので調べてみます。
ありがとうございました!
ありがとうございました!
697デフォルトの名無しさん (ワッチョイ 0279-McVF)
2019/09/20(金) 01:31:14.65ID:v9n6qqFa0 なんで単なる取得でメモリ使うんだよ
unsafeかなんか付けて昔ながらの方法でやるのが一番速い
unsafeかなんか付けて昔ながらの方法でやるのが一番速い
698デフォルトの名無しさん (ワッチョイ 0279-Ms+D)
2019/09/20(金) 01:35:53.41ID:JBznBYO/0 ライブラリ作ってるわけでもないのにunsafeとか論外なんだが
その上unsafe付けてやることが2重ループでの完全一致検索とかじゃ
どうせHashSetのパフォーマンスに大敗する
その上unsafe付けてやることが2重ループでの完全一致検索とかじゃ
どうせHashSetのパフォーマンスに大敗する
699デフォルトの名無しさん (ワッチョイ 6922-2lm7)
2019/09/20(金) 02:27:15.79ID:pTVI5tHY0 NGID:JBznBYO/0
700デフォルトの名無しさん (ワッチョイ aeda-Ms+D)
2019/09/20(金) 11:53:09.00ID:URFVhEsV0 git使わずに、自宅のデスクトップ環境とノートPCのプロジェクトファイル類を同期させたいです。
現在Onedrive使ってますが、binやobj配下まで同期されるのが残念な感じ。
binやobjの出力先はWPFプロジェクトなら変更できましたが、ASP.NET coreプロジェクトでどう変更するのか不明
VSTSで上記を実現または他の方法あったりしますか?
ちなみに現在はVS pro サブスクリプションに入ってます
現在Onedrive使ってますが、binやobj配下まで同期されるのが残念な感じ。
binやobjの出力先はWPFプロジェクトなら変更できましたが、ASP.NET coreプロジェクトでどう変更するのか不明
VSTSで上記を実現または他の方法あったりしますか?
ちなみに現在はVS pro サブスクリプションに入ってます
701デフォルトの名無しさん (ササクッテロ Sp51-EbW7)
2019/09/20(金) 12:00:15.35ID:Ew/p9Snjp Microsoftの開発ソフト使ってんならOneDrive使えるだろ?
702デフォルトの名無しさん (ササクッテロ Sp51-EbW7)
2019/09/20(金) 12:02:00.53ID:Ew/p9Snjp 最後にcleanすりゃいいだけだから。
もしくは同期ドライブ直接はコンパイルしないとかな。
もしくは同期ドライブ直接はコンパイルしないとかな。
703デフォルトの名無しさん (スッップ Sd22-wC8D)
2019/09/20(金) 12:02:42.34ID:bfuJBtmYd svnを使う
onedrive以外の場所で開発してonedriveフォルダに必要なファイルを同期ツールとかでローカルコピーするようにする
なんでonedriveはokでgitがngなのかがわからんと提示しづらい
onedrive以外の場所で開発してonedriveフォルダに必要なファイルを同期ツールとかでローカルコピーするようにする
なんでonedriveはokでgitがngなのかがわからんと提示しづらい
704デフォルトの名無しさん (アウアウウー Sa85-dxf9)
2019/09/20(金) 12:48:37.25ID:uLmjcKMSa OneDriveって特定のフォルダだけ同期しない設定にできないのか
6,7年前にオンラインストレージが流行った時には
タダで大容量で高機能のがいっぱいあったのになんだか退化してるよねw
6,7年前にオンラインストレージが流行った時には
タダで大容量で高機能のがいっぱいあったのになんだか退化してるよねw
705デフォルトの名無しさん (ワッチョイ 4605-Mu6I)
2019/09/20(金) 12:56:56.83ID:uH7l3KIr0 labelの文字列の一部を太文字にしたり色を変えたりといった表現をしたいのですが
何か良い方法はないでしょうか?
コントロールではなくメインプログラムのほうで操作できるようにしたいです
labelと同じ見た目ならなんでもよいです
textboxの様な感じではなくlabelのような感じが目標です
何か良い方法はないでしょうか?
コントロールではなくメインプログラムのほうで操作できるようにしたいです
labelと同じ見た目ならなんでもよいです
textboxの様な感じではなくlabelのような感じが目標です
706デフォルトの名無しさん (ワッチョイ fe7c-plfC)
2019/09/20(金) 13:13:16.41ID:WW0nVoDA0 のような感じと言われてもどういうのがNGでどういうのがOKなのかよく分からんが
手軽なのはRichTextBoxを使うことで
そうでなければPaintイベントで全部自前描画ということになる
手軽なのはRichTextBoxを使うことで
そうでなければPaintイベントで全部自前描画ということになる
707デフォルトの名無しさん (スププ Sd22-J2vi)
2019/09/20(金) 14:28:02.26ID:9RWO75b+d >>700
ちと面倒だけど、ブランチとか使えるのが便利だから、サーバ立てるまでOneDriveのフォルダ上にgitのリポジトリ作ってた事がある。
OneDrive内の任意のフォルダの中でgit init --bareするだけ。
したら、そのフォルダをremoteとして登録出来る。
あとは任意のタイミングでpush/pullするだけ。
作業フォルダをOneDrive内に置いて自動的に同期もやったけど、objとかが共有される問題よりも、同時に開いて悲惨なことになる事があったので、今はしてない。
(競合したら「もとのファイル名-端末名」ってファイルが大量にできる)
ちと面倒だけど、ブランチとか使えるのが便利だから、サーバ立てるまでOneDriveのフォルダ上にgitのリポジトリ作ってた事がある。
OneDrive内の任意のフォルダの中でgit init --bareするだけ。
したら、そのフォルダをremoteとして登録出来る。
あとは任意のタイミングでpush/pullするだけ。
作業フォルダをOneDrive内に置いて自動的に同期もやったけど、objとかが共有される問題よりも、同時に開いて悲惨なことになる事があったので、今はしてない。
(競合したら「もとのファイル名-端末名」ってファイルが大量にできる)
708デフォルトの名無しさん (ワッチョイ b188-wC8D)
2019/09/20(金) 15:01:20.41ID:riKFjdTV0 ああ、確かにリポジトリをonedriveに入れるのが一番スマートかも
昔dropboxにsvnリポジトリ作ってたことあるわ
昔dropboxにsvnリポジトリ作ってたことあるわ
709デフォルトの名無しさん (ワッチョイ 6990-jgJV)
2019/09/20(金) 17:01:09.25ID:9F0x+J+E0 メモリ消費は税のようなもの
しょとくだけに
消費だけに
しょとくだけに
消費だけに
710デフォルトの名無しさん (ワッチョイ a207-vIUH)
2019/09/20(金) 19:34:13.48ID:dvP1e2Mn0 環境はWindows formアプリです。
TableLayoutPanel と DataGridView の使い分け方がわかりません。
datasource property の有無だけ?
TableLayoutPanel と DataGridView の使い分け方がわかりません。
datasource property の有無だけ?
711デフォルトの名無しさん (ワッチョイ 6e7b-25Vu)
2019/09/20(金) 19:53:22.57ID:+tHFIfxx0 >>705
自分で描画するのはメソッド作るのも指定するのもめんどくさいよ
https://dobon.net/vb/dotnet/graphics/measurestring.html#section1
>>706の言う通りRichTextBoxをBorderStyle.Noneにして背景色を合わせた方が楽じゃないかな
どうしても文字以外を透過させたいとかならともかく
>>710
HTMLのテーブルとExcelの表が同じに見えるのならそうかもね
自分で描画するのはメソッド作るのも指定するのもめんどくさいよ
https://dobon.net/vb/dotnet/graphics/measurestring.html#section1
>>706の言う通りRichTextBoxをBorderStyle.Noneにして背景色を合わせた方が楽じゃないかな
どうしても文字以外を透過させたいとかならともかく
>>710
HTMLのテーブルとExcelの表が同じに見えるのならそうかもね
712デフォルトの名無しさん (ワッチョイ c245-Iqd1)
2019/09/21(土) 10:00:25.29ID:DmWWMvK20 コンソールアプリが作れればいいやと思ってpaizaでシコシコ勉強してますが他にどんなことすればいいですか?
目標は外部のファイルを読み込んでコンバートするアプリを作ることです。
目標は外部のファイルを読み込んでコンバートするアプリを作ることです。
713デフォルトの名無しさん (ワッチョイ 0279-Ms+D)
2019/09/21(土) 10:08:45.30ID:ZhDsxJHf0 外部のファイルを読み込んでコンバートするアプリを作ればよいのでは?
そんなに難しくないよ
何をどうコンバートするかにはよるかもしれないけど
そんなに難しくないよ
何をどうコンバートするかにはよるかもしれないけど
714デフォルトの名無しさん (アウアウエー Sa0a-o9zd)
2019/09/21(土) 11:05:31.91ID:wLZyePcca プログラミング未経験者です
すいません、ちょっと趣旨から外れるかもしれませんが質問です
電気(強電)、計測(コンビナートとかのプラント計装)の知識ってC#で活かせますか?
C#の求人や書籍を検索すると、電気回路の制御ソフトとか計測器制御とかがヒットするので気になって質問させていただきました
すいません、ちょっと趣旨から外れるかもしれませんが質問です
電気(強電)、計測(コンビナートとかのプラント計装)の知識ってC#で活かせますか?
C#の求人や書籍を検索すると、電気回路の制御ソフトとか計測器制御とかがヒットするので気になって質問させていただきました
715デフォルトの名無しさん (ワッチョイ c245-Iqd1)
2019/09/21(土) 11:05:33.11ID:DmWWMvK20 SQLもどき文をパース?して出力したいです
716デフォルトの名無しさん (アウアウウー Sa85-TrZH)
2019/09/21(土) 11:42:35.85ID:uzyGV4kra >>714
FAの制御系だったら測定器やPLCとの通信がメインになるからそれなりに知識あったほうがいいとは思うよ
FAの制御系だったら測定器やPLCとの通信がメインになるからそれなりに知識あったほうがいいとは思うよ
717デフォルトの名無しさん (アウアウエー Sa0a-o9zd)
2019/09/21(土) 12:00:01.02ID:wLZyePcca >>716
ありがとうございますm(_ _)m
ありがとうございますm(_ _)m
718デフォルトの名無しさん (ワッチョイ fd17-Ms+D)
2019/09/21(土) 13:30:42.97ID:ox/L2PXG0719デフォルトの名無しさん (ドコグロ MM89-+KEk)
2019/09/21(土) 13:39:06.70ID:cHmpI1M9M720デフォルトの名無しさん (ワッチョイ 7901-QRiv)
2019/09/21(土) 14:11:59.87ID:gZFDeRYs0 オライリーのlex & yacc がsqlのパースの
サンプルだったけど
C#は対応していないかと
サンプルだったけど
C#は対応していないかと
721デフォルトの名無しさん (ワッチョイ ae2d-Z796)
2019/09/21(土) 14:57:58.99ID:8edEcM0R0 すまんが、スレッドを指定して実行ってできないもんなの?
指定できればロックが必要な箇所が減っていい気がするんだけど・・・・どうなんだろう
指定できればロックが必要な箇所が減っていい気がするんだけど・・・・どうなんだろう
722デフォルトの名無しさん (ワッチョイ 7901-QRiv)
2019/09/21(土) 15:03:52.53ID:gZFDeRYs0 スレッド起動しないかWaitしておけば、
良いんじゃね
良いんじゃね
723デフォルトの名無しさん (アウアウウー Sa85-9Tgq)
2019/09/21(土) 15:21:35.32ID:Ef6g+Zfma724デフォルトの名無しさん (ワッチョイ 1124-JE5y)
2019/09/21(土) 15:59:40.26ID:3kDOCDXv0 Dllimortで呼び出す関数の引数にはジェネリックは使えないのでしょうか?
725デフォルトの名無しさん (ワッチョイ 4d63-WGWF)
2019/09/21(土) 17:32:33.11ID:CRAyGleP0 使えない
726デフォルトの名無しさん (アウアウウー Sa85-dxf9)
2019/09/21(土) 17:41:38.79ID:dMKiDHPTa727デフォルトの名無しさん (アウアウウー Sa85-+KEk)
2019/09/21(土) 17:50:18.96ID:GoVsp8loa >>726
.NETのジェネリックは実行時に特殊化されるから、技術的にはそんなに無茶な話ではないよ
.NETのジェネリックは実行時に特殊化されるから、技術的にはそんなに無茶な話ではないよ
728デフォルトの名無しさん (ワッチョイ 4d0c-Ms+D)
2019/09/21(土) 17:57:47.91ID:rw4WtgZd0 まあどのみち今のところできないから、いんぽ関数自体はIntPtrで受け取って
Marshal.PtrToStructureとかでごにょごにょするジェネリック関数でラップする感じでやるしかないね
SystemParametersInfoとかでそういう欲求があること自体はわかる
Marshal.PtrToStructureとかでごにょごにょするジェネリック関数でラップする感じでやるしかないね
SystemParametersInfoとかでそういう欲求があること自体はわかる
729デフォルトの名無しさん (ワッチョイ fd17-Ms+D)
2019/09/21(土) 17:59:11.73ID:ox/L2PXG0 >>727
それじゃ質問者に回答してやってくれ
それじゃ質問者に回答してやってくれ
730デフォルトの名無しさん (アウアウウー Sa85-+KEk)
2019/09/21(土) 18:12:58.46ID:GoVsp8loa731デフォルトの名無しさん (アウアウウー Sa85-dxf9)
2019/09/21(土) 18:32:15.65ID:dMKiDHPTa 十分突飛だと思いますけどね。
これ、アンマネージドに限らない。
マネージドだろうが、他のアセンブリで既に定義されてる
非ジェネリックなstaticメソッドをジェネリック化したいと言ってるのと同じ。
だから、呼ばれた側は何すりゃいいんだよw
これ、アンマネージドに限らない。
マネージドだろうが、他のアセンブリで既に定義されてる
非ジェネリックなstaticメソッドをジェネリック化したいと言ってるのと同じ。
だから、呼ばれた側は何すりゃいいんだよw
732デフォルトの名無しさん (アウアウウー Sa85-+KEk)
2019/09/21(土) 18:43:55.34ID:GoVsp8loa >>731
CのAPIだと、サイズが同一の異なる型を一緒に扱ったり、条件に応じてポインタの指す型の解釈を変えたりとか珍しくないでしょ
CのAPIだと、サイズが同一の異なる型を一緒に扱ったり、条件に応じてポインタの指す型の解釈を変えたりとか珍しくないでしょ
733デフォルトの名無しさん (アウアウウー Sa85-dxf9)
2019/09/21(土) 18:44:55.69ID:dMKiDHPTa734デフォルトの名無しさん (ワッチョイ 1124-JE5y)
2019/09/21(土) 18:46:58.39ID:3kDOCDXv0 >>726
具体的にはLPVOID引数で自己責任ながら参照型からref、outやintなどの値渡しまで色々な型のオーバーロードを作って実際にちゃんと機能しています
なので一々オーバーロードとそのラップだけで30行ほど使ってしまってる現状が無駄に思えてどうにか方法ないかなと
具体的にはLPVOID引数で自己責任ながら参照型からref、outやintなどの値渡しまで色々な型のオーバーロードを作って実際にちゃんと機能しています
なので一々オーバーロードとそのラップだけで30行ほど使ってしまってる現状が無駄に思えてどうにか方法ないかなと
735デフォルトの名無しさん (ワッチョイ 4d0c-Ms+D)
2019/09/21(土) 19:46:47.84ID:rw4WtgZd0 一例としてはこんな感じ
APIの想定される構造体がBlittableのみならマーシャリング不要なので
unmanaged制約にしてアドレス渡しの方が効率は良い
public static T GetSystemParametersInfo<T>(SPI uiAction, uint uiParam, SPIF fWinIni) where T : struct {
T value;
var buffer = Marshal.AllocCoTaskMem(Marshal.SizeOf<T>());
SystemParametersInfo(uiAction, uiParam, buffer, fWinIni);
value = Marshal.PtrToStructure<T>(buffer);
Marshal.FreeCoTaskMem(buffer);
return value;
}
まあぶっちゃけお行儀的にはオーバーロードだらだら並べる方が正解ではあるんだけどねw
APIの想定される構造体がBlittableのみならマーシャリング不要なので
unmanaged制約にしてアドレス渡しの方が効率は良い
public static T GetSystemParametersInfo<T>(SPI uiAction, uint uiParam, SPIF fWinIni) where T : struct {
T value;
var buffer = Marshal.AllocCoTaskMem(Marshal.SizeOf<T>());
SystemParametersInfo(uiAction, uiParam, buffer, fWinIni);
value = Marshal.PtrToStructure<T>(buffer);
Marshal.FreeCoTaskMem(buffer);
return value;
}
まあぶっちゃけお行儀的にはオーバーロードだらだら並べる方が正解ではあるんだけどねw
736デフォルトの名無しさん (ワッチョイ a207-vIUH)
2019/09/21(土) 19:58:38.68ID:A1p2bytl0 c# で必殺技みたいなメソッドがあったのですが思い出せません。どなたかご存知ないでしょうか?
737デフォルトの名無しさん (ワッチョイ 4563-tKbs)
2019/09/21(土) 20:03:15.85ID:y68BphyG0 >>736
リフレクション?
リフレクション?
738デフォルトの名無しさん (ワッチョイ 6922-2lm7)
2019/09/21(土) 22:34:09.60ID:rnFOOH9a0 >>736
privateメソッドを外部から無理矢理呼び出すやつ?
privateメソッドを外部から無理矢理呼び出すやつ?
739デフォルトの名無しさん (アウアウイー Sa11-kReW)
2019/09/21(土) 22:42:59.80ID:70YMyRx+a リフレクションならDynamicInvoke()がなんともかっこいいメソッド名
>>736のはおそらくはデストラクタあたりを想定してるんじゃないかと思うけど
>>736のはおそらくはデストラクタあたりを想定してるんじゃないかと思うけど
740デフォルトの名無しさん (アウアウウー Sa85-+KEk)
2019/09/21(土) 23:13:56.71ID:GoVsp8loa DangerousAddRefもなかなか
741デフォルトの名無しさん (ワッチョイ 5963-cEvk)
2019/09/22(日) 01:11:49.71ID:YKAr5fZO0 >>736
オーバーライド!!
オーバーライド!!
742デフォルトの名無しさん (ブーイモ MMf6-/3ZE)
2019/09/22(日) 01:26:33.02ID:01VTDUEXM オーバーロード!!
743デフォルトの名無しさん (スププ Sd22-2lm7)
2019/09/22(日) 01:39:55.72ID:V8FjsYeid >>736
ラムダ式!
ラムダ式!
744デフォルトの名無しさん (ワッチョイ c245-Iqd1)
2019/09/22(日) 07:51:48.39ID:Wx+hr3d10745デフォルトの名無しさん (ワッチョイ fd17-Ms+D)
2019/09/22(日) 08:33:40.66ID:6LYYKR960 1) githubで"sql parser"と検索
2) C#で絞り込む
3) 上から順に試す
4) 好みのが見つかったら改造を試みる
少なくとも1から作るよりは圧倒的に楽だし勉強にもなるよ
2) C#で絞り込む
3) 上から順に試す
4) 好みのが見つかったら改造を試みる
少なくとも1から作るよりは圧倒的に楽だし勉強にもなるよ
746デフォルトの名無しさん (ワッチョイ 829f-cF+R)
2019/09/22(日) 09:28:54.26ID:p/RNYxc40747デフォルトの名無しさん (アウアウウー Sa85-dxf9)
2019/09/22(日) 12:11:14.62ID:PittLpUUa748デフォルトの名無しさん (アウアウウー Sa85-dxf9)
2019/09/22(日) 12:16:38.76ID:PittLpUUa 少なくともC#のジェネリックはstringとbyte[]を透過的に扱ったり、
longをint2つと透過的に扱ったりするための仕組みじゃありませんwww
だからそういうのは共用体やオーバーロードを使うんだってw
longをint2つと透過的に扱ったりするための仕組みじゃありませんwww
だからそういうのは共用体やオーバーロードを使うんだってw
749デフォルトの名無しさん (ラクッペ MMc1-WGWF)
2019/09/22(日) 12:28:14.42ID:GskCdwYSM 端的に答えとけばいいんだよ
余計な講釈を垂れるな
余計な講釈を垂れるな
750デフォルトの名無しさん (ワッチョイ 02e0-jgJV)
2019/09/22(日) 22:36:43.63ID:584djEVu0 BitmapをBitmapDataにしたいのですが、使用されたパラメータが有効ではありませんと言われてしまいます。
ファイルから読み込んだbitmapは変換できるのですが、このようにコード上で作ったbitmapはダメです。
何がいけないのでしょうか?
Bitmap trimBmp = baseBmp.Clone(rect, baseBmp.PixelFormat);
BitmapData bitData = trimBmp.LockBits(rect, ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
ファイルから読み込んだbitmapは変換できるのですが、このようにコード上で作ったbitmapはダメです。
何がいけないのでしょうか?
Bitmap trimBmp = baseBmp.Clone(rect, baseBmp.PixelFormat);
BitmapData bitData = trimBmp.LockBits(rect, ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
751デフォルトの名無しさん (ワッチョイ 822c-9Tgq)
2019/09/22(日) 22:44:27.94ID:6/LwH+kT0 rectで切り出した後、その切り出した後のビットマップから
さらにrectで一部分のロックしようとしてるけど大丈夫? 全面じゃない?
さらにrectで一部分のロックしようとしてるけど大丈夫? 全面じゃない?
752デフォルトの名無しさん (ワッチョイ 02e0-jgJV)
2019/09/22(日) 22:53:39.23ID:584djEVu0 >>751
baseBMPからrectで切り抜いてますが、trimBMPにとってはrectは全面だと思うのですがダメなのですかね?
でも
Bitmap bmp = new Bitmap(100,100)
みたいな素画像でもやっぱりLockBitsできないです
baseBMPからrectで切り抜いてますが、trimBMPにとってはrectは全面だと思うのですがダメなのですかね?
でも
Bitmap bmp = new Bitmap(100,100)
みたいな素画像でもやっぱりLockBitsできないです
753デフォルトの名無しさん (ワッチョイ 6e7b-25Vu)
2019/09/22(日) 23:53:45.92ID:yl5BH+I+0 >>752
>trimBMPにとってはrectは全面
ではなくbaseBmpのrectの範囲って自分で指定しているよね
BitmapData bitData = trimBmp.LockBits(new Rectangle(0, 0, trimBmp.Width, trimBmp.Height), ImageLockMode.ReadOnly, trimBmp.PixelFormat);
>Bitmap bmp = new Bitmap(100,100)
>みたいな素画像でもやっぱりLockBitsできないです
できる。そっちもちゃんと引数の指定してみて
>trimBMPにとってはrectは全面
ではなくbaseBmpのrectの範囲って自分で指定しているよね
BitmapData bitData = trimBmp.LockBits(new Rectangle(0, 0, trimBmp.Width, trimBmp.Height), ImageLockMode.ReadOnly, trimBmp.PixelFormat);
>Bitmap bmp = new Bitmap(100,100)
>みたいな素画像でもやっぱりLockBitsできないです
できる。そっちもちゃんと引数の指定してみて
754デフォルトの名無しさん (ワッチョイ a207-vIUH)
2019/09/23(月) 01:34:07.15ID:CAyWI0VB0 private Point CalcPopupLoction(Form launcher, Form popupForm) {}
ボタン押したときに上部に表示する モーダルな popup フォーム の位置を計算するメソッドを書きました。
ボタンが左の方にあると、親フォームの左枠をはみ出さないように、popupForm は左揃えで表示。
真ん中へんにあると中央揃え、右端ならボタンとpopupForm を右揃えで表示する感じです。
1つ目の引数の良い名前が思い付きません。
主にボタンを想定してる引数です。
launcher (発射台)はどうもしっくりきません。
parent や baseForm はなんかおかしいのでやめました。
ボタン押したときに上部に表示する モーダルな popup フォーム の位置を計算するメソッドを書きました。
ボタンが左の方にあると、親フォームの左枠をはみ出さないように、popupForm は左揃えで表示。
真ん中へんにあると中央揃え、右端ならボタンとpopupForm を右揃えで表示する感じです。
1つ目の引数の良い名前が思い付きません。
主にボタンを想定してる引数です。
launcher (発射台)はどうもしっくりきません。
parent や baseForm はなんかおかしいのでやめました。
755デフォルトの名無しさん (アウアウウー Sa85-dxf9)
2019/09/23(月) 03:14:26.31ID:QdBzCxoka756デフォルトの名無しさん (アウアウウー Sa85-dxf9)
2019/09/23(月) 03:28:32.57ID:QdBzCxoka あー、右に揃える場合もあるのね。
じゃあボタン持ってるFormに
void ShowModalPopup(Form popup)
みたいなメソッドを持たせればいい
じゃあボタン持ってるFormに
void ShowModalPopup(Form popup)
みたいなメソッドを持たせればいい
757デフォルトの名無しさん (ワッチョイ 3d5f-tKbs)
2019/09/23(月) 03:42:05.85ID:ltbH9/U50 こういう使い回しが効きそうなのはいちいちフォームに実装しないで拡張メソッドにでもした方が
758デフォルトの名無しさん (アウアウウー Sa85-dxf9)
2019/09/23(月) 03:56:41.99ID:QdBzCxoka 本当はボタン持ってる方のFormに
interface IDialogOwner:IWin32Window
{
HorizontalAlignment DialigHAlignment { get; }
Rectangle Rectangle { get; }
}
みたいなのをかぶせて、Popupする方のFormでShowDialogをオーバーロードして
void ShowDialog(IDialogOwner owner)
みたいにするのがいいのかも。
酔っぱらってるんでよく分からなくなってきたw
interface IDialogOwner:IWin32Window
{
HorizontalAlignment DialigHAlignment { get; }
Rectangle Rectangle { get; }
}
みたいなのをかぶせて、Popupする方のFormでShowDialogをオーバーロードして
void ShowDialog(IDialogOwner owner)
みたいにするのがいいのかも。
酔っぱらってるんでよく分からなくなってきたw
759デフォルトの名無しさん (ワッチョイ a211-2BIS)
2019/09/23(月) 08:49:12.84ID:l2jPGLgc0 C#でawaitに対応していないメソッドをawaitで非同期実行できるようにする方法を教えてください.
以下のようにしてもActionが実行されませんでした.
private async static void SomeHandler()
{
Console.Write("Burn");
await new Task(new Action(() =>{
Console.Write("[Start]");
Thread.Sleep(2000);
Console.Write("[Completed]");
}));
Console.Write("End");
}
以下のようにしてもActionが実行されませんでした.
private async static void SomeHandler()
{
Console.Write("Burn");
await new Task(new Action(() =>{
Console.Write("[Start]");
Thread.Sleep(2000);
Console.Write("[Completed]");
}));
Console.Write("End");
}
760デフォルトの名無しさん (ワッチョイ 1152-Ms+D)
2019/09/23(月) 08:58:35.82ID:ZRlL2jPD0761デフォルトの名無しさん (アウウィフ FF85-9GzD)
2019/09/23(月) 12:17:14.67ID:3qdqqJ07F bitmapinfo とか
dibsection とか
bitmapinfoheader とか
勉強してみたら
dibsection とか
bitmapinfoheader とか
勉強してみたら
762デフォルトの名無しさん (スフッ Sd22-J2vi)
2019/09/23(月) 14:47:11.75ID:vpc5pW+6d >>759
TaskCompletionSourceだっけ?うろ覚えですまんが、jsのPromiseオブジェクト的に使える。
TaskCompletionSourceだっけ?うろ覚えですまんが、jsのPromiseオブジェクト的に使える。
763デフォルトの名無しさん (ワッチョイ 5190-I/5H)
2019/09/23(月) 15:20:09.58ID:LbTjUCX60 taskをstartしてないだけだから...
764デフォルトの名無しさん (ワッチョイ c135-2BIS)
2019/09/23(月) 15:46:49.67ID:s6/Kehza0 >>763
ありがとうございます!
ありがとうございます!
765デフォルトの名無しさん (スププ Sd22-2lm7)
2019/09/23(月) 18:09:27.70ID:7f5aVpAAd どういたしまして!
766デフォルトの名無しさん (ワッチョイ 117b-PY7j)
2019/09/23(月) 19:11:24.16ID:24/7TZbh0 ID:QdBzCxoka
何の話してんのこの人
>>754
変数名が思いつかないとかはこのスレじゃなく
クラス名・変数名に迷ったら書き込むスレ。Part28 [無断転載禁止]©2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1494147712/
何の話してんのこの人
>>754
変数名が思いつかないとかはこのスレじゃなく
クラス名・変数名に迷ったら書き込むスレ。Part28 [無断転載禁止]©2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1494147712/
767デフォルトの名無しさん (アウアウウー Sa85-dxf9)
2019/09/23(月) 22:40:56.88ID:6ZQTgZjHa768デフォルトの名無しさん (ワッチョイ a207-vIUH)
2019/09/23(月) 22:48:38.96ID:CAyWI0VB0769デフォルトの名無しさん (ワッチョイ a207-vIUH)
2019/09/23(月) 23:35:14.83ID:CAyWI0VB0 >>754
private Point CalcPopupLoction(Form launcher, Form popupForm) {}
上記は下部のボタンの位置に応じて、大きさのことなるpopupForm の表示位置を計算するメソッド
exportButton_Click 内で、
ShowDialog(); で表示する popupForm に戻り値を設定
https://i.imgur.com/ggjo4td.jpg
private Point CalcPopupLoction(Form launcher, Form popupForm) {}
上記は下部のボタンの位置に応じて、大きさのことなるpopupForm の表示位置を計算するメソッド
exportButton_Click 内で、
ShowDialog(); で表示する popupForm に戻り値を設定
https://i.imgur.com/ggjo4td.jpg
770デフォルトの名無しさん (ワッチョイ 0279-McVF)
2019/09/24(火) 00:01:07.45ID:OEzHH54a0 >>754
・Loctionて何
・ボタンの置いてあるオーナーウィンドウと対象のボタンを引数に取った方がいいと思う
・計算だけなら全部Rectangleでいいんじゃないの
Rectangle CalcPopupLocation(Rectangle Owner, Rectangle TargetButton, Rectangle Popup)
・Loctionて何
・ボタンの置いてあるオーナーウィンドウと対象のボタンを引数に取った方がいいと思う
・計算だけなら全部Rectangleでいいんじゃないの
Rectangle CalcPopupLocation(Rectangle Owner, Rectangle TargetButton, Rectangle Popup)
771デフォルトの名無しさん (アウアウウー Sa85-dxf9)
2019/09/24(火) 00:03:53.21ID:ftn8dtDua >>769
だからさ、そのメソッドをどこに書くおつもり?
ポップアップを左右どちらに寄せるべきかを知ってるのは特定のFormだけのはずなのに
その例のllauncherの型がFormってのは変じゃないか?
そもそも何で「左右どちらに寄せるべきかを知ってる」奴のメソッドとして実装しないの?
それなら引数で渡す必要ないと思うんだけど。
だからさ、そのメソッドをどこに書くおつもり?
ポップアップを左右どちらに寄せるべきかを知ってるのは特定のFormだけのはずなのに
その例のllauncherの型がFormってのは変じゃないか?
そもそも何で「左右どちらに寄せるべきかを知ってる」奴のメソッドとして実装しないの?
それなら引数で渡す必要ないと思うんだけど。
772デフォルトの名無しさん (アウアウウー Sa85-dxf9)
2019/09/24(火) 00:09:30.85ID:ftn8dtDua773デフォルトの名無しさん (ワッチョイ a207-vIUH)
2019/09/24(火) 11:39:03.69ID:vbZsX/Wo0 書き込みは、人を憎んでコードを憎まずのこころで行いましょう。
たとえクソコードであっても悪いのは書いた人だけです。
コードやプログラミング言語に罪は一切ありません。
コードの悪口はやめましょう。
クソコードの修正と言わず、リファクタリングといえばいいのです。
大量殺人犯や c# プログラマーの醜い心はリファクタリング不可能ですが、コードのリファクタリングはカンタンですよ。
https://www.google.co.jp/amp/s/anond.hatelabo.jp/touch/20180319181104%3fmode=amp
たとえクソコードであっても悪いのは書いた人だけです。
コードやプログラミング言語に罪は一切ありません。
コードの悪口はやめましょう。
クソコードの修正と言わず、リファクタリングといえばいいのです。
大量殺人犯や c# プログラマーの醜い心はリファクタリング不可能ですが、コードのリファクタリングはカンタンですよ。
https://www.google.co.jp/amp/s/anond.hatelabo.jp/touch/20180319181104%3fmode=amp
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 日経平均の下落率3%超す、財政懸念で長期金利上昇 ★2 [お断り★]
- 【実況】博衣こよりのえちえち歌枠🧪
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 高市早苗「支持者の理解を得られないので台湾発言を撤回できない」 [931948549]
- 外務省局長、よくわからないまま帰国へ [834922174]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
- 【雑談】暇人集会所part18
