X



VB.NET質問スレ(Part44)
■ このスレッドは過去ログ倉庫に格納されています
0134デフォルトの名無しさん
垢版 |
2018/11/30(金) 23:37:28.55ID:aHvjCfZ2
>To enable tile view, your application must call the Application.EnableVisualStyles method.
らしいけど、ちゃんと呼んでるのか?
アプリケーションフレームワーク有効だとその辺勝手にやってくれてたはず
0136デフォルトの名無しさん
垢版 |
2018/12/01(土) 18:09:06.36ID:KZz1rFV5
自動テストって業務アプリでもつくっておけよ。ww
そんなの死んでも作らんわ。
0137デフォルトの名無しさん
垢版 |
2018/12/03(月) 02:07:02.91ID:CiT4luJ/
そこまでならシステムバグかも。言ってるだろ保存時のエラーを拾ってる可能性が高いって。
私も経験していて、すべて同じコードをそっくり新規プロジェクト作成してコピペすると
バグの再現率は皆無。早めに移動させたほうがいいよ。

3年前には、バックグランドのIsBusyが毎度Falseで戻るというバグ。
この時も新規プロジェクトにコードをコピペしたら直った。
0138102
垢版 |
2018/12/03(月) 08:39:16.52ID:SG+JG4dk
だから、新規でミニマムコード書いてみて再現するんだって。

VS2013+VB.NET+.NET4でWindowsForms新規プロジェクト作成して、

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
Me.ListView1.Columns.Add("1")
Me.ListView1.Columns.Add("2")
Me.ListView1.Columns.Add("3")
Me.ListView1.Columns.Add("4")
Me.ListView1.View = View.Tile

For i As Integer = 0 To 9
Dim lvi As ListViewItem = New ListViewItem(String.Format("item{0}", i))
lvi.SubItems.Add(String.Format("SubItem1_{0}", i))
lvi.SubItems.Add(String.Format("SubItem2_{0}", i))
lvi.SubItems.Add(String.Format("SubItem3_{0}", i))
Me.ListView1.Items.Add(lvi)
Next

End Sub

とでも書いておけば、プロジェクトのプロパティの「アプリケーションフレームワークを有効にする」の
チェック有無でViewがTileになったりならなかったりするんだって。
0139102
垢版 |
2018/12/03(月) 10:29:50.33ID:SG+JG4dk
その後の検証で、VS2017+.NET4や.NET4.7.1などではアプリケーションフレームワークを無効にしていても
Application.EnableVisualStyles()を呼んでおけば大丈夫でした。
以上
0140102
垢版 |
2018/12/03(月) 10:44:29.67ID:SG+JG4dk
VS2013のVB.NETでアプリケーションフレームワークを有効にしない場合、コードで
Application.EnableVisualStyles()を実行していてもVisualStyleが適用されない部分が発生する
(中途半端に適用されてしまう)ことがわかりました。

アプリケーションフレームワークを無効にして Sub Main() から起動していたものを
アプリケーションフレームワークを有効にして ApplicationEvents で処理するように変更することで
今回の件は対応できました。

さようなら。
0141デフォルトの名無しさん
垢版 |
2018/12/03(月) 13:28:55.92ID:iyo7d7NK
Formを表示するだけなのにvirustotalで調べると
Endgame malicious (moderate confidence)
Trapmine malicious.moderate.ml.score
↑の2つが必ず検出される・・・
0142デフォルトの名無しさん
垢版 |
2018/12/06(木) 20:59:58.22ID:6nIp7B/v
VB2010のBackgroundworkerで質問です

Backgroundworker1(BW1)とBackgroundworker2(BW2)を用意しておいて、
メインスレッドからBW1を走らせ、BW1からさらにBW2を走らせるようにして
BW2で処理した結果をどうにかしてBW1に渡したいんですが、どうすれば
安全にできるでしょうか?
(BW1の中から更にBW2を起動できるのは確認済みです)

パッと思いついたのは

1. あらかじめグローバル変数を1つ用意
2. BW2の処理が終わったら計算結果をCompletedイベントで1のグローバル変数に書き込む
3. 次にBW1を起動する時に1のグローバル変数の内容を引数として渡す

というものですが、これだとBW1が起動するタイミングでしかデータを渡せないので
できればBW1の処理の途中でBW2の計算結果を取得できればと思ってます
0143デフォルトの名無しさん
垢版 |
2018/12/06(木) 23:02:53.80ID:A0CG4R0v
>>142
クラスを定義して BW1 で New して BW2 の起動時に渡せばいい。

BW2 では e.Argument をクラスにキャストしてプロパティや
フィールドを書き換えれば BW1 側で参照できる。

BW2 の終了を BW1 側でどうやって知るかというと
クラスに完了フラグを入れたり、待機するなら
AutoResetEvent など入れておく。
0144デフォルトの名無しさん
垢版 |
2018/12/07(金) 07:03:19.31ID:3nrqnizA
>>143
ありがとうございます

クラスやインスタンスについてはよく理解できてないんですが

・BW1とBW2の間で受け渡ししたい情報をプロパティとして持つクラスを作成

・BW1の中でそのクラスのインスタンスを作ってBW2に渡したい値をプロパティにセットし、
それを引数としてBW2を起動させる

・BW2側で計算が終わったらCompletedイベント内部でプロパティやフィールドを書き換える

って感じなのでしょうか?
BW2にデータを渡すのは何となく分かる気がするんですが、BW1からBW2の結果を
参照できる理屈がよくわからなくなってきました
0145デフォルトの名無しさん
垢版 |
2018/12/07(金) 07:40:39.74ID:kROUwqzj
俺はスレッドの同期には
 スレッド1でMonitor.Waitでオブジェクトを待機
 スレッド2で計算完了後渡したいデータをキューに入れる→Monitor.Pluse
 スレッド1でWaitが解けたらキューを取得
 以後ループ
ってやってる
0146デフォルトの名無しさん
垢版 |
2018/12/07(金) 08:29:06.85ID:2afnIVVG
>>144
VS2010ならTaskあるだろ
順番にコールバックで処理を繋いでいくだけだ
BackgroundWorkerは忘れていい

>>145
そのパターンはWaitHandleを使いなさい
0149デフォルトの名無しさん
垢版 |
2018/12/07(金) 16:42:40.67ID:a9TgYpl9
Dim p As New Ping()
Dim pr As PingReply = p.Send(ip, 2000)
If pr.Status = IPStatus.Success Then

ハードウエアに添付されてる特定のアプリをインストールした直後に
上記を実行すると、無限に p.Send(ip, 2000)で止まったままになるらしく。
強制的に抜け出す方法があれば教えてください。
特定アプリを削除すると正常に動きます。
0150デフォルトの名無しさん
垢版 |
2018/12/07(金) 18:24:22.52ID:8lt4nerT
>>149
それ、本当にPing.Sendがタイムアウトしないのかちゃんと確認した?
勘違いでしょ

本当にそんなバグがあればだれか問題にしてるはずだと思うけど
ググってみたがまったく見つからない
0153デフォルトの名無しさん
垢版 |
2018/12/07(金) 19:52:03.02ID:cSzYN2du
>>149-150
クラッキング防止のため、ping には応答を返さないサーバーもある。
それで、クラッカーは、ずっと待たされるから、防止になる

タイムアウトするしかない
0156デフォルトの名無しさん
垢版 |
2018/12/08(土) 22:06:24.24ID:45hw1cdo
>>149 だが、遅くなってすみません。
確かに、どんなことがあってもタイムアウトかエラーで止まるとかあるはず。
今回は、どうにも納得できないのはある。
現状は、プライベートIPに向けてPingしてるからなんともいえないけど。

Pingを外して作り直してみますね。

     いろいろと、ありがとうございました。
      参考になったことを感謝!
0158デフォルトの名無しさん
垢版 |
2018/12/08(土) 22:50:58.82ID:RUYrEQD/
むしろ基本は非同期ファーストでよほどの理由がなければ同期にはしないのが現代の.NETプログラミングの常識だろう
まあVBerにそれを強制すると大惨事だろうけど
0160デフォルトの名無しさん
垢版 |
2018/12/08(土) 23:34:16.79ID:RUYrEQD/
UWPだろうとWinFormsだろうとUIスレッドを長時間ブロックしたらフリーズするのは一緒や
0161デフォルトの名無しさん
垢版 |
2018/12/09(日) 08:33:34.68ID:rvgDVfN9
>>160
まぁ、そりゃそうだが何でもかんでも非同期処理にするのはどうかと思うぞ。
非同期って別スレッドだからスレッドの罠を分かってないヤツが実装すると危険だよ。

スキルの無いヤツほど難しい実装をやりたがる。
単純明快な実装で簡単にできるものまで。
0162デフォルトの名無しさん
垢版 |
2018/12/09(日) 09:27:52.83ID:QJ+QHutH
>>161
ほとんどの非同期処理は別スレッドではない
システムに依頼したIOの完了を現在のコンテキストのままでやるか、
完了を待って元のスレッドへコールバックするかの違いでしかない(デフォルトでは)
長い処理の完了を待つ必要がある(でもイベントベースの非同期は面倒だからコードはシーケンシャルに書きたい)ときに
利用側が待機用スレッドを作る必要がないので、従来のBackgroundWorkerや生Threadよりずっと安全だ
0163デフォルトの名無しさん
垢版 |
2018/12/09(日) 15:37:28.92ID:mC11Jcgj
>>157
そうですね
リアルタイムの物理シミュレーションで、物理演算スレッドとは別に裏で走らせたい
重いと予想される処理があるので非同期でないと具合が悪いです(しかもその
別処理での計算結果を物理演算スレッドで使う)
物理演算スレッドと同じスレッドでその別処理を走らせると別処理の結果が出るまで
物理演算スレッドが先に進まなくて全体のパフォーマンスが悪化するんで、何とか
別処理は物理演算スレッドから更に分離してマルチスレッドにしたいと考えています

以前はメインスレッドで物理演算スレッドを実行していたせいで描画がかなり遅くなって
Backgroundworkerを使って物理演算スレッドを分離したという経緯があるので、そこに
別処理を組み込むのもBackgroundworkerでやれたら・・・と考えていました
0165デフォルトの名無しさん
垢版 |
2018/12/09(日) 19:48:39.49ID:QJ+QHutH
>>164
TaskCompletionSource使えばスレッドを使わないTaskも作れるよ
というか.NET標準の非同期IOはだいたいそう
0166デフォルトの名無しさん
垢版 |
2018/12/09(日) 19:54:44.04ID:QJ+QHutH
なお、Taskがスレッドを使ってようがいまいが、それを使う側が意識する必要はない
デフォルトでは、処理の終了後に元と同じスレッドに処理が戻ってくるからね
0168デフォルトの名無しさん
垢版 |
2018/12/09(日) 20:09:03.43ID:rvgDVfN9
>>166
非同期の中は相変わらずスレッドだし、スレッドの仕組みが分からない人が安易に使うべきじゃない。
スレッドプログラミングモデルは不完全だよ。
0170デフォルトの名無しさん
垢版 |
2018/12/09(日) 20:25:21.69ID:QJ+QHutH
>>168
安易もクソも、長時間かかる処理をUIをブロックすることなく、かつ手書きステートマシンによる大きな生産性可読性もなく記述しようと思えば、
別スレッドで同期処理するかTask使うしかないでしょ
で前者に比べれば後者のほうがまだ安全だと言ってるの
あっ、VBプロの伝家の宝刀DoEventsがあったかw
0171デフォルトの名無しさん
垢版 |
2018/12/09(日) 20:40:58.46ID:rvgDVfN9
>>170
スレッド絡みの罠を知った上で使うのは問題ないけどねぇ。
async/awaitって非同期が簡潔に書けるし超便利だし。

馬鹿が見様見真似で仕組みも分からずに安易に使うのは許せん。
0172デフォルトの名無しさん
垢版 |
2019/01/10(木) 17:37:32.49ID:92qiHI93
.NET CoreとしてVB.NET使った事例増えてるんかね?
これで増えないとVB.NETもヤバい
0175デフォルトの名無しさん
垢版 |
2019/01/12(土) 19:37:47.15ID:f5l6WgiO
UWPでdll使いたいんだけど、
Byval hogehoge as string だとエラー出ちゃうね。

試しに Byrefにすると通るんだけど、これバグかな?
文字列を受け取るのではなくて、送りたいからこれだと動かないんだけど。
0176デフォルトの名無しさん
垢版 |
2019/01/19(土) 16:46:40.40ID:SwmccsG2
コンパイラエラー 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
0177デフォルトの名無しさん
垢版 |
2019/01/19(土) 18:28:37.99ID:wiNfQeeu
>本当にありがとうございます!!!!!!!!!!!!
>キモヲタ万歳!!!!!!キモヲタ役に立つ!!!!!!!!

この質問者は、荒らしだから、無視しろ!
0178デフォルトの名無しさん
垢版 |
2019/01/22(火) 11:08:00.90ID:MNWEiKG9
むかしのVisual Basic6とかVisual C++6を今からインストールしても
今インストールしてる最新の.NET環境に影響はありませんか?
0180デフォルトの名無しさん
垢版 |
2019/01/22(火) 18:44:56.82ID:MNWEiKG9
>>179
そうざますか。
どなたかくわしいひといらっしゃいませんか?
0181デフォルトの名無しさん
垢版 |
2019/01/22(火) 21:45:30.75ID:omWGXlHy
くわしいけど何か?
0182デフォルトの名無しさん
垢版 |
2019/01/22(火) 21:49:21.31ID:8mJXdjen
>>181
Visual Basic6とかVisual C++6を今からインストールしても
最新の.NET環境に影響はありませんか?
0183デフォルトの名無しさん
垢版 |
2019/01/22(火) 22:25:56.22ID:dU5LcznM
>>182
VS.NETは、バージョンの順番に入れないと上手く動かなかったりするけど
vb6, vc6は大丈夫だろ?

それ以前にWin10へのインストールはやったことがないなあ
俺なら仮装環境へWinXpを入れて使うか
0185デフォルトの名無しさん
垢版 |
2019/01/22(火) 23:33:46.55ID:R4R8JbvY
騙しながらとは?
こういうあいまいな言葉いやだな。
コンピュータ業界の人ならはっきりとしたいものです。
前の会社で「サーバがコケた」とよく言ってた人を思い出した。
サーバに足はないんだからコケないだろ。
0186デフォルトの名無しさん
垢版 |
2019/01/23(水) 09:44:49.58ID:94ZvYw52
>>185
確かに鯖には足は無いね。
鯖は転けない。

プログラミングと言うものはコンピュータとユーザを如何に騙すかに掛かっている。
0187デフォルトの名無しさん
垢版 |
2019/01/23(水) 11:55:45.33ID:FAv1PkTN
vb6でコンパイルしたexeは騙し欺し動くけど
開発環境そのものを入れるのは何か問題あった希ガス
0192デフォルトの名無しさん
垢版 |
2019/02/03(日) 09:46:16.79ID:hzttK4k1
>>191
え、そうやって古いゴミvb6システムを騙しながら保守するんだぜ。
MSがvb6に引導を渡してくれたら客先も諦めて移行するんだけどね。
0196デフォルトの名無しさん
垢版 |
2019/02/05(火) 22:36:03.07ID:EuMjYSra
え?Microsoft製品って動作保証されてるの?
知らなかったなあ。.NET Frameworkって何か起きた時にはMicrosoftが補償してくれるんだ。
UWPなんかコンパイラのバグばかりだけど、これって金銭的補償とかしてくれるの?
そもそも業務でVB6使うよりも、Windows10使うほうが色々リスク高いと思うけど。
0198デフォルトの名無しさん
垢版 |
2019/02/06(水) 02:13:01.38ID:wO/VNrzd
今からでもいいので20年前に出たVB6のバージョンアップ版を出したほうがいいと思う
0202デフォルトの名無しさん
垢版 |
2019/02/06(水) 12:43:36.87ID:yK0c/OTQ
>>197
win10のサポート?
具体的にどんなサポート受けられるの?

今までの経験だと、どんな不具合報告しても、なに言っても改善されないのがマイクロソフトだけど。興味あるな。
0204デフォルトの名無しさん
垢版 |
2019/02/06(水) 12:48:32.65ID:yK0c/OTQ
>>198
最新版のVB6のIDE用パッチは2016に出てるよ。ぐぐっても古い記事しか出てこないから充ててない人多いよね。

サポート期限ガーとか言ってる奴に限ってvisual studio2008とか使い続けてるんだよな。もうサポート期限切れてるのに。
0208デフォルトの名無しさん
垢版 |
2019/02/06(水) 12:59:46.34ID:yK0c/OTQ
ちなみにVC6を未だに現役で使い続けてるところ沢山あるけど、そこにツッコミ入れる人は少ないんだよな。
コンパイラとしても古いけど、やはり枯れて実績が積まれて使い慣れてるから、なかなか手放せない。
VB6も同じだと思うよ。
0209デフォルトの名無しさん
垢版 |
2019/02/06(水) 13:00:09.38ID:259i/glJ
日本マイクロソフトは営業所みたいなもんだから。
製品作ってる技術者なんかいない。
0210デフォルトの名無しさん
垢版 |
2019/02/06(水) 13:13:25.78ID:wygak7fd
>>207
日本MSだよ
VSのサポートインシデントを使って
MSがバグと認めたらインシデントは消費しない
0211デフォルトの名無しさん
垢版 |
2019/02/06(水) 17:56:47.94ID:yK0c/OTQ
>>201
C#も同じだけど、ソースコードばらまくようなものだもん。ILspyみたいなフリーで高機能なのあるんだもん。
変数を分かりにくくする程度の難読化なんて俺から言わせれば無意味。

VB6はネイティブコンパイルできるから、ソースの可逆性がVCと同じくらい難易度高くなる。現にVCの難読化ソフトがないのはそーゆうこと。
0213デフォルトの名無しさん
垢版 |
2019/02/06(水) 18:50:07.27ID:yK0c/OTQ
>>212
分かってないな。
VB.netの文法や関数、クラスを変えることはできない。
外部dllなどを参照している場合、それを誤魔化すことはできない。
従って手間は掛かるけど、難読化なんて簡単に破れる。
なんか、最近だと一部のソースをC++の外部DLLに置き換えてしまう難読化ソフトがあるみたいだけど、本末転倒だと思うよ。
0215デフォルトの名無しさん
垢版 |
2019/02/07(木) 12:10:48.57ID:/tmgbETq
ActiveX DLLをファイル名だけでActivater.CreateInstanceする方法無いでしょうか?
前ブログで見たことあったと思うんですが
見つからなくて。
0218デフォルトの名無しさん
垢版 |
2019/02/18(月) 23:09:48.26ID:izV4xJWd
難読化だって? 先日、大企業のシステムアプリの不具合を報告したら、
「作成した担当者が辞めてしまって・・修正できません。」とか言うからね。
これって、他人のコードが読めないって言われてるのと同じだろ?
可読性wwww
0224デフォルトの名無しさん
垢版 |
2019/03/01(金) 13:59:48.75ID:WP+oH8uz
    / ̄ ̄ ̄ ̄\   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   (  人____)<   じゃ、10億円で
   |./  ー◎-◎-)  \______________
   (6     (_ _) )    カタカタカタ
   | .∴ ノ  3 ノ  ______
    ゝ       ノ  .|  | ̄ ̄\ \
   /       \__|  |    | ̄ ̄|
  /  \___      |  |    |__|
  | \      |つ    |__|__/ /
  /     ̄ ̄  | ̄ ̄ ̄ ̄|  〔 ̄ ̄〕
 |       | ̄
0228デフォルトの名無しさん
垢版 |
2019/03/03(日) 09:00:13.95ID:dbXXzJ29
Accessで作った方が速いと言われてしまうのですが、実際どうなんでしょうか
0231デフォルトの名無しさん
垢版 |
2019/03/10(日) 00:53:07.03ID:Xug5O2kK
バイナリファイルを編集したいのですが、内容が書き換わりません。
どこが駄目なのでしょうか?

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
0232デフォルトの名無しさん
垢版 |
2019/03/10(日) 01:14:12.25ID:EyJHBQRt
書き換わらないというか末尾に追記されてるよね?
Readした時点で一番最後ポイントしてるからそこでWriteしたら当然末尾に書かれるぞ
Position変更するかSeekするかしないと
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況