VB.NET質問スレ(Part44)
■ このスレッドは過去ログ倉庫に格納されています
>>149 それ、本当にPing.Sendがタイムアウトしないのかちゃんと確認した? 勘違いでしょ 本当にそんなバグがあればだれか問題にしてるはずだと思うけど ググってみたがまったく見つからない >>148 そいつは返す返すも申し訳無かった ちょっとググったら.net4て出てたもんで >>149-150 クラッキング防止のため、ping には応答を返さないサーバーもある。 それで、クラッカーは、ずっと待たされるから、防止になる タイムアウトするしかない >>146 Taskですか・・・初めて聞きました ちょっとググって使い方を調べてみます >>149 だが、遅くなってすみません。 確かに、どんなことがあってもタイムアウトかエラーで止まるとかあるはず。 今回は、どうにも納得できないのはある。 現状は、プライベートIPに向けてPingしてるからなんともいえないけど。 Pingを外して作り直してみますね。 いろいろと、ありがとうございました。 参考になったことを感謝! >>155 async/awaitだろうけど、その処理は非同期じゃないとできないものなのか? むしろ基本は非同期ファーストでよほどの理由がなければ同期にはしないのが現代の.NETプログラミングの常識だろう まあVBerにそれを強制すると大惨事だろうけど UWPだろうとWinFormsだろうとUIスレッドを長時間ブロックしたらフリーズするのは一緒や >>160 まぁ、そりゃそうだが何でもかんでも非同期処理にするのはどうかと思うぞ。 非同期って別スレッドだからスレッドの罠を分かってないヤツが実装すると危険だよ。 スキルの無いヤツほど難しい実装をやりたがる。 単純明快な実装で簡単にできるものまで。 >>161 ほとんどの非同期処理は別スレッドではない システムに依頼したIOの完了を現在のコンテキストのままでやるか、 完了を待って元のスレッドへコールバックするかの違いでしかない(デフォルトでは) 長い処理の完了を待つ必要がある(でもイベントベースの非同期は面倒だからコードはシーケンシャルに書きたい)ときに 利用側が待機用スレッドを作る必要がないので、従来のBackgroundWorkerや生Threadよりずっと安全だ >>157 そうですね リアルタイムの物理シミュレーションで、物理演算スレッドとは別に裏で走らせたい 重いと予想される処理があるので非同期でないと具合が悪いです(しかもその 別処理での計算結果を物理演算スレッドで使う) 物理演算スレッドと同じスレッドでその別処理を走らせると別処理の結果が出るまで 物理演算スレッドが先に進まなくて全体のパフォーマンスが悪化するんで、何とか 別処理は物理演算スレッドから更に分離してマルチスレッドにしたいと考えています 以前はメインスレッドで物理演算スレッドを実行していたせいで描画がかなり遅くなって Backgroundworkerを使って物理演算スレッドを分離したという経緯があるので、そこに 別処理を組み込むのもBackgroundworkerでやれたら・・・と考えていました >>164 TaskCompletionSource使えばスレッドを使わないTaskも作れるよ というか.NET標準の非同期IOはだいたいそう なお、Taskがスレッドを使ってようがいまいが、それを使う側が意識する必要はない デフォルトでは、処理の終了後に元と同じスレッドに処理が戻ってくるからね >>165 ワーカースレッドを使ってるっぽいけどね。 >>166 非同期の中は相変わらずスレッドだし、スレッドの仕組みが分からない人が安易に使うべきじゃない。 スレッドプログラミングモデルは不完全だよ。 >>168 安易もクソも、長時間かかる処理をUIをブロックすることなく、かつ手書きステートマシンによる大きな生産性可読性もなく記述しようと思えば、 別スレッドで同期処理するかTask使うしかないでしょ で前者に比べれば後者のほうがまだ安全だと言ってるの あっ、VBプロの伝家の宝刀DoEventsがあったかw >>170 スレッド絡みの罠を知った上で使うのは問題ないけどねぇ。 async/awaitって非同期が簡潔に書けるし超便利だし。 馬鹿が見様見真似で仕組みも分からずに安易に使うのは許せん。 .NET CoreとしてVB.NET使った事例増えてるんかね? これで増えないとVB.NETもヤバい VB.NETはあっても良いがVB.NETを使うやつは死滅してくれ UWPでdll使いたいんだけど、 Byval hogehoge as string だとエラー出ちゃうね。 試しに Byrefにすると通るんだけど、これバグかな? 文字列を受け取るのではなくて、送りたいからこれだと動かないんだけど。 コンパイラエラー C2872 あいまいなシンボルです。 コンパイルエラーが解消出来ません。 ご教授下さい。 ■コンパイルエラー内容 error C2872: 'MarketplaceWebServiceProducts' : あいまいなシンボルです ■やりたいこと AmazonのAPI「Marketplace Web Service API (MWS)」のHello world 以下ページの右上 オレンジ色の「Download」ボタンから入手できる 「MWSProducts_2011-10-01_v2017-03-22.dll」の使用 https://developer.amazonservices.jp/doc/products/products/v20111001/cSharp.html ■DLLの使用 Visual Studioの対象プロジェクトのプロパティから、 上記DLLの参照を追加しました ■コーディング using namespace MarketplaceWebServiceProducts;//←ここはコンパイルOK using namespace MarketplaceWebServiceProducts::Mock;//←★ここで上記コンパイルエラー ■ご質問 上位の「MarketplaceWebServiceProducts」が正常なのに、 下位の「Mock」を付けるとあいまいなシンボルになるのはなぜでしょうか。 解決策をご教授ください。(可能であれば実装をご提供ください) ■環境 Visual Studio .Net 4.0 C++/Cli >本当にありがとうございます!!!!!!!!!!!! >キモヲタ万歳!!!!!!キモヲタ役に立つ!!!!!!!! この質問者は、荒らしだから、無視しろ! むかしのVisual Basic6とかVisual C++6を今からインストールしても 今インストールしてる最新の.NET環境に影響はありませんか? >>179 そうざますか。 どなたかくわしいひといらっしゃいませんか? >>181 Visual Basic6とかVisual C++6を今からインストールしても 最新の.NET環境に影響はありませんか? >>182 VS.NETは、バージョンの順番に入れないと上手く動かなかったりするけど vb6, vc6は大丈夫だろ? それ以前にWin10へのインストールはやったことがないなあ 俺なら仮装環境へWinXpを入れて使うか vb6のアプリはWin10でも騙しながらなんとか動くよ 騙しながらとは? こういうあいまいな言葉いやだな。 コンピュータ業界の人ならはっきりとしたいものです。 前の会社で「サーバがコケた」とよく言ってた人を思い出した。 サーバに足はないんだからコケないだろ。 >>185 確かに鯖には足は無いね。 鯖は転けない。 プログラミングと言うものはコンピュータとユーザを如何に騙すかに掛かっている。 vb6でコンパイルしたexeは騙し欺し動くけど 開発環境そのものを入れるのは何か問題あった希ガス >>187 インストール時にエラーが出まくるけど開発出来る程度にはインストールできたはず。 無理やりインストールしたVB6で作ったソフトを仕事で使えるわけない >>191 え、そうやって古いゴミvb6システムを騙しながら保守するんだぜ。 MSがvb6に引導を渡してくれたら客先も諦めて移行するんだけどね。 会社が動作保証できない環境で開発させるのはブラックだけ え?Microsoft製品って動作保証されてるの? 知らなかったなあ。.NET Frameworkって何か起きた時にはMicrosoftが補償してくれるんだ。 UWPなんかコンパイラのバグばかりだけど、これって金銭的補償とかしてくれるの? そもそも業務でVB6使うよりも、Windows10使うほうが色々リスク高いと思うけど。 今からでもいいので20年前に出たVB6のバージョンアップ版を出したほうがいいと思う >>198 VB.NET: アタシのどこがいけなかったの? >>197 win10のサポート? 具体的にどんなサポート受けられるの? 今までの経験だと、どんな不具合報告しても、なに言っても改善されないのがマイクロソフトだけど。興味あるな。 >>202 .netで不具合報告をしたら速攻でパッチ出してくれたが >>198 最新版のVB6のIDE用パッチは2016に出てるよ。ぐぐっても古い記事しか出てこないから充ててない人多いよね。 サポート期限ガーとか言ってる奴に限ってvisual studio2008とか使い続けてるんだよな。もうサポート期限切れてるのに。 >>203 へえー、富士通とかマイクロソフトに近い人なのかな? >>205 不具合が100%再現するコードを送ったら直ぐに直してくれた >>206 へえー、アメリカに直で? 日本マイクロソフト通してたら即なんてあり得ないのは常識。 ちなみにVC6を未だに現役で使い続けてるところ沢山あるけど、そこにツッコミ入れる人は少ないんだよな。 コンパイラとしても古いけど、やはり枯れて実績が積まれて使い慣れてるから、なかなか手放せない。 VB6も同じだと思うよ。 日本マイクロソフトは営業所みたいなもんだから。 製品作ってる技術者なんかいない。 >>207 日本MSだよ VSのサポートインシデントを使って MSがバグと認めたらインシデントは消費しない >>201 C#も同じだけど、ソースコードばらまくようなものだもん。ILspyみたいなフリーで高機能なのあるんだもん。 変数を分かりにくくする程度の難読化なんて俺から言わせれば無意味。 VB6はネイティブコンパイルできるから、ソースの可逆性がVCと同じくらい難易度高くなる。現にVCの難読化ソフトがないのはそーゆうこと。 >>212 分かってないな。 VB.netの文法や関数、クラスを変えることはできない。 外部dllなどを参照している場合、それを誤魔化すことはできない。 従って手間は掛かるけど、難読化なんて簡単に破れる。 なんか、最近だと一部のソースをC++の外部DLLに置き換えてしまう難読化ソフトがあるみたいだけど、本末転倒だと思うよ。 ActiveX DLLをファイル名だけでActivater.CreateInstanceする方法無いでしょうか? 前ブログで見たことあったと思うんですが 見つからなくて。 VB.NETは滅びぬ!何度でも甦るさ! .NET CoreにVisual BasicのFile IOを追加 https://www.infoq.com/jp/news/2019/02/VB-File-IO-Core 難読化だって? 先日、大企業のシステムアプリの不具合を報告したら、 「作成した担当者が辞めてしまって・・修正できません。」とか言うからね。 これって、他人のコードが読めないって言われてるのと同じだろ? 可読性wwww それ往々にして ×修正できません ○修正したくありません だから vb.netはクールだけど使ってるやつはキモイしブサイクでスキルがない / ̄ ̄ ̄ ̄\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( 人____)< じゃ、10億円で |./ ー◎-◎-) \______________ (6 (_ _) ) カタカタカタ | .∴ ノ 3 ノ ______ ゝ ノ .| | ̄ ̄\ \ / \__| | | ̄ ̄| / \___ | | |__| | \ |つ |__|__/ / /  ̄ ̄ | ̄ ̄ ̄ ̄| 〔 ̄ ̄〕 | | ̄ Accessで作った方が速いと言われてしまうのですが、実際どうなんでしょうか >>228 Accessで作った方が速いと言うヤツはAccessの方が早いのだろうけど .netの方が楽だよね >>228 その速いとはすぐに作れるという意味なのか、動作が速いというのかどっちだろう バイナリファイルを編集したいのですが、内容が書き換わりません。 どこが駄目なのでしょうか? Private Sub btnWrite_Click(sender As Object, e As EventArgs) Handles btnWrite.Click Using fs As New System.IO.FileStream(SaveFileName, System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite) Dim ByteArray(fs.Length - 1) As Byte Dim CharParam() As Byte fs.Read(ByteArray, 0, ByteArray.Length) hoge = 100 ReDim CharParam(1) CharParam(0) = hoge Buffer.BlockCopy(BitConverter.GetBytes(CharParam(0)), 0, ByteArray, 75, BitConverter.GetBytes(CharParam(0)).Length) fs.Write(ByteArray, 0, ByteArray.Length) End Using Call btnRead_Click(sender, e) MsgBox("書込完了!!") End Sub 書き換わらないというか末尾に追記されてるよね? Readした時点で一番最後ポイントしてるからそこでWriteしたら当然末尾に書かれるぞ Position変更するかSeekするかしないと >>232 ありがとうございます。上手くいきました。 >>230 >>動作が速い はPCによる 普通は工作作業でしょ >>216 まあ、そうなるわな VBプログラマの受け皿として.NET Coreプロジェクトが有効になる form1にcmbSkill0〜cmbSkill12というcomboBoxを配置してForm_Loadに以下のようなソースを書いたのですが 「オブジェクト参照がオブジェクト インスタンスに設定されていません。」というエラーが出ます。 vb6のコントロール配列のような処理がしたいのですが、何が悪いのでしょうか? ' 表示用の列を設定 For i = 0 To 12 CType(Me.Controls("cmbSkill" & i.ToString), ComboBox).DisplayMember = "items" Next >>236 デザインで貼っても配列にならないからコードで記述 GroupBox(gpb1)の上にComboBoxを貼り付けていたのが原因でした。 以下のように修正したら上手くいきました。お騒がせいたしました。 For i = 0 To 12 CType(Me.gpb1.Controls("cmbSkill" & i.ToString), ComboBox).DisplayMember = "items" Next 同じ値の入るDataTable(コンボボックス用)を12個用意して値を設定したいのですが ループ処理でうまく処理する方法はないでしょうか?宜しくお願いします。 Dim dsskill1_0 As New DataTable Dim dsskill1_1 As New DataTable 〜 Dim dsskill1_12 As New DataTable dsskill1_1.Columns.Add("items", GetType(String)) dsskill1_1.Columns.Add("key", GetType(Integer)) row = dsskill1_1.NewRow row("items") = "なし" row("key") = 0 dsskill1_1.Rows.Add(row) row = dsskill1_1.NewRow row("items") = "LV1" row("key") = 1 dsskill1_1.Rows.Add(row) dsskill1_2.Columns.Add("items", GetType(String)) dsskill1_2.Columns.Add("key", GetType(Integer)) row = dsskill1_2.NewRow row("items") = "なし" row("key") = 0 dsskill1_2.Rows.Add(row) row = dsskill1_2.NewRow row("items") = "LV1" row("key") = 1 dsskill1_2.Rows.Add(row) 同じデータなら同じデータソースを使えば良いだけでは? >>241 同じデータソースを設定したら、comboboxにselectedValueで設定するときに combobox1-12全部同じ値が挿入されちゃいました。 >>242 そうなるんだw >>240 の言うようにコピーでしょ。 DataTableの作成のオーバーヘッドが小さいのなら、その都度作成してデータソースに入れるけど。 comboboxに紐つけるデータソースにdatatableは重すぎる >>240-245 Copy()でいけました。 皆様アドバイスありがとうございました。 For Each c As DataGridViewColumn In .DataGridView1.Columns c.SortMode = DataGridViewColumnSortMode.NotSortable Next このコードをLINQを駆使して1行で書けるのでしょうか? 基本的にLINQは更新系には使わないので CastしてToListしてForEachでできなくもないけど無意味だな >>247 Datagridview1.Columns.Cast<DataGridViewColumn>().ToList().ForEach(f => f.SortMode = DataGridViewColumnSortMode.NotSortable); c# だけど、無理やり過ぎる ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる