NullをReplaceできるのか?〜VB2015

  • 2017.03.08 Wednesday
  • 21:57

 

Null文字("")を文字置換できるのか?

という質問をもらったので、試して見た。

 

つまり、第1引数に""を入れて、第2引数に置換するという感じ。

 

まず、なにも入っていない文字列を置換してみると

 


 

エラー

適当な文字を入れて見ても

 

 

同じエラー

つまり、Replaceの第1引数に Null ("") を入れることはできないようだ。

 

ちなみに、""文字を""以外で置換するのは

 

問題なさそう

 

話ついでに、Nothingを入れて見ると

 

 

違うエラーが出るので、事前に判別が必要だ

 

おまけ、当たり前だけれど、文字を""に置換することは可能

 

 

 

関連記事

Replace関数って・・・

 

HTMLアプリのデバッグができない?〜VS2015 + HTMLアプリケーション

  • 2017.02.07 Tuesday
  • 13:10

 

HTMLの開発はBracketsやAtomなどを使ってゴリゴリ書いているのだが、

 

VBをずっと使い続けている自分としてはVisual Studioで書きたい

 

Visual Studio Codeでも良いのだが、VS自体があるので、

あえてCodeを選択するのも今さらな

 

まぁ前置きはこのくらいにして、VSに入っているWeb系のプロジェクトはいろいろあるが、

 

ちょっとHTMLアプリケーションのプロジェクトで書いてデバッグしようとしたら・・・

 

Web.configファイルでデバッグが無効なため、

このページをデバッグモードで実行できません。

以下のオプションから選択してください。

 

デバッグ実行ができないよと警告

 

そして、ラジオボタンを選択してOKしても、

 

操作を完了できませんでした。

エラーを特定できません。

IIS Express Webサーバーを起動できません。

 

とか立て続けに警告

 

あれ、保存する前は起動できたのに・・・。

(プロジェクトを任意のフォルダに書き出す前はデバッグはできた)

 

Web.configには、debug="true"と書いてあるし、

ネットで調べてもdebug="true"を書くみたいな内容しか出てこない

 

とりあえずデバッグならプロパティの設定も見て見ようと探してみたところ、

どうやら、この辺を直すといいらしい。

 


 

プロジェクトのプロパティを開いて、Webタブを選択

 

ページを指定するにチェックを入れて、直接 index.html と打つか、ページを選択する

※index.htmlを選択した場合、テキストボックスが空になることがあります。

 

これで再度デバッグでようやくデバッグ起動できました。

 

ちなみに、登録しても上のエラーが出る場合は、一度プロジェクトを閉じて、

開き直すとうまくいいくようです。

 

 

関連記事

XAMLデザイナーのデザインビューが表示されない?〜Visual Studio 2015

 

 

ブレークポイントが突然現れる!?位置ズレ?

  • 2017.01.13 Friday
  • 06:25

 

プログラムをゴリゴリ書いて、早速デバッグ!

と思ったら、変なところでブレーク

 

 

!?

 

こんなところにブレークポイントを貼った覚えはないぞ???

 

デバッグを停止すると確かにブレークポイントはない

 

 

とりあえず、クリーンして、リビルド!

 

改善しない・・・

 

 

ネットで調べると、改行コードが混在しているとかで、解決できると書かれている記事もあったので、

調べてみたが、それらしい誤りはなさそう。

 

 

ムムム、お手上げ・・・か?

 

 

そういえば、ブレークポイントを貼り付けた一覧がどこかで見られるはず・・・

と調べてみると、ありました。

 

デバッグ→ウインドウ→ブレークポイント

 

 

この一覧からそれっぽいもの(該当しそうな行)をチェックを入れたり切ったりしながら調べてみる。

 

すると、該当する箇所がありました。

しかもダブルクリックすると、見つかりませんとか出る・・・。

 

ブレークポイントへ移動できません。指定されたパスが見つかりません。

 

 

チェックを外すとブレークが消えるので、明らかにここが原因であると言える。

 

要らないので削除してみたら・・・

 

 

ようやく解決できました。

 

 

ちなみに、今回の大きな原因は、

ファイル名を変更したことにあるようです(図中、ソースファイル名を小文字から大文字に変更)。

 

 

なお、DLLなどで正しく引っかからない場合は、

クリーン→リビルドでだいたいなおるはずです。

 

 

参考

ブレークポイントの使用

 

関連投稿

ブレークポイントは現在の設定ではヒットしません〜ソリューションのデバッグ

 

 

ReportViewが表示されない?〜Visual Studio 2015

  • 2016.08.26 Friday
  • 20:06

 

Visual Studio 2008からアップグレードしたプロジェクトをゴリゴリ修正して、

いよいよ終盤ということで、印刷機能を修正しようとしたら

 

ファイルアセンブリ Microsoft.ReportDesigner Version=9.0.0.0 〜〜〜 またはその依存関係の1つが読み込めませんでした。

見つかったアセンブリのマニフェスト定義はアセンブリに一致しません。

 

となってしまった。

 

参照を見ると、アップグレードしたプロジェクトは9.0.0.0のReportViewが使われており、

2015のReportViewは12.0.0.0なので、バージョンの不一致により正しく表示できないようである。

 

VS2008をアップグレードしたプロジェクト

 

プロジェクト上では12.0.0.0となっている

 

VS2015で新規に作った場合は12.0.0.0が参照されている


 

とりあえず、新規にプロジェクトの参照を確認しながらバージョンを変更してみることに

 

参照の追加から、参照マネージャーを開き、

アセンブリの拡張を選択、Microsoft.ReportViewerを探して、

バージョンの9.0.0.0はすべてチェックを外し、12.0.0.0にチェックを入れ、参照ボタンをクリックして

バージョンの入れ替えが完了するはず。

 

 

ちなみに、Commonというのはこのダイアログにはないので、

もし必要があれば、

 

C:¥Windows¥assembly¥GAC_MSIL¥Microsoft.ReportViewer.Common¥12.0.0.0__89845dcd8080cc91¥Microsoft.ReportViewer.Common.dll

※¥は半角

 

あたりを参照すれば良い

 

 

追記

さて、コンパイルも終わり、クライアントに導入しようとしたら・・・

ランタイムがないというエラーが

 

ああ、すっかり忘れていたということで、

Microsoft Report Viewer 2015 Runtime

を落としてきて入れようとするが・・・

 

 

Microsoft SYstem CLR Types for SQL Server 2014がないからインストールできないよ

という案内が・・・

しかも不親切にURLとかないし・・・。

 

仕方がないのでキーワードで検索したところ、どれを落とすの的な感じに・・・。

 

とりあえず、Microsoft® SQL Server® 2014 SP1 Feature Packと検索されているダウンロードページを開き

※SP1を適用しない場合は、SP1無しの方

 

ダウンロードボタンを押してみると、SQL関連のリストがズラズラと表示される。

 

 

その中から SQLSysClrTypes.msi というのを探し出す。

※OSが64bitならx64 32bitならx86のSQLSysClrTypes.msiにチェックを付ける。

 

ダウンロードしたインストーラのプロパティが「Microsoft SYstem CLR Types for SQL Server 2014」と書かれているので、

問題なさそうだ

 

 

あとは、このランタイムを入れて、ReportViewerランタイムを入れれば動作するはず。

 

あれ?登録できない〜VS2015

  • 2016.02.29 Monday
  • 18:59

自作プログラムを作って、他のパソコンに入れたのだが、
何度やってもタスクバーに登録できない。

何でだろうとグーグル先生に聞いたところ、
次の記事が見つかった。

Windows 7 でタスクバーにピンで留めれないプログラムの名前
Application that won’t Pin to Taskbar in Windows 7

なるほど、制限されている文字があるのか。
プログラム名を変えるか、タスクに止めるのを諦めるかである。


ちなみに、Win8以降のOSは登録できるようになっているので、
Win7とか以前の制限のようだ。
 

新規行に入力すると2行追加される?〜DataTableとAllowUserToAddRows

  • 2016.02.29 Monday
  • 12:51

しばらくぶりのDataGridViewな話題

これまでDataGridViewのプロパティにある、AllowUserToAddRowsをFalseにしていることが多かったので、
これまで気にもしなかったのですが、
(追加は別入力画面で入力→登録ボタンでDataTableにNewRowして追加)

たまたま作っているプログラムで新規追加をAllowUserToAddRowを利用してみることにしたのだが、

DataTableにNewRowしてAddすると・・・
 
newRow = dtTable.NewRow '新規行を作成
newRow(0I) = CObj("bbb"'データ書き込み
Call dtTable.Rows.Add(newRow) 'データテーブルに行を追加
 
DataGridView DataTable AllowUserToAddRows 2行追加されてしまう DataGridView DataTable AllowUserToAddRows 2行追加されてしまう

!?
追加した行に加えて謎の行出現

何となく、AllowUserToAddRowであらかじめ追加されている行とDataTableの行が一致していないために
追加と同時にDataTableでAddした行+AllowUserToAddRowの空欄行が追加されてしまうのではないかと想像される。

解決方法がないかと検索してみたところ、次の記事が見つかった。

DataGridView(バインド)の追加行のCell値をPGから設定した時、DataGridViewに行を追加する方法

これを参考にゴリゴリ書き直してみる
 
If e.RowIndex = Me.NewRowIndex Then '新規行に追加しようとしている
    Dim cmTable As CurrencyManager = BindingContext(dtTable) 'CurrencyManagerを取得
    Call cmTable.EndCurrentEdit() '編集を終了
End If
‌ 
DataGridView(0I, e.RowIndex).Value = "bbb" 'データを追加

これで、謎の行が追加されなくなりました。

関連投稿
DataGridViewのボタンにアイコンを付ける
DataGridView と DataTable と Combobox(コンボボックス)
DataViewのデータ(抽出結果)からDataTableの位置を検索
DataSource(DataTable)を検索する
DataGridViewの固定とエラー
DataGridViewの選択レコードからDataTableのレコードを見つける
DataGridViewが右揃えにならない?〜VB2008
DataViewの検索フィルタ〜VB2008
Comboboxは何を入れるのか?DataGridView編〜VB2008
 

アナライザーエラーって何ライザー?〜VS2015

  • 2016.01.24 Sunday
  • 23:28

VS2015を使い始めて気になるエラーがある。

AD0001 アナライザー 警告
 
AD0001    アナライザー
'Microsoft.CodeAnalysis.VisualBasic.CodeFixes.SimplifyTypeNames.
VisualBasicSimplifyTypeNamesDiagnosticAnalyzer' が
型 'System.ArgumentNullException' の例外をメッセージ '値を Null にすることはできません。
パラメーター名:source' 付きでスローしました。

ネットで調べてみてもこの警告がなんで起こるのかよく分からない

とりあえず、この記事をヒントに、

Visual Studio 2015 Analyzer threw an exception

一からソースを確認して見たところ(自分のソースではApplication.Designer.vbは関係なかった)、
私のソースの場合、PictureBoxを継承したクラスの処理にある、この部分に対しての警告であることが判明した。

アナライザー 警告

Me.Image = Nothingと書いた部分これをコメントアウトすると、
警告が全くなくなった。

もう一度戻すと再び警告復活!
最終的に、Me.と書いた部分に問題があることが分かった。

Image = Nothing ならOK
 
上は継承クラスでしたが、フォーム上にある、例えばPictureBoxに対しても同じエラーが出ます。

Me.PictureBox1.Image = Nothing 'エラーが出る
PictureBox1.Image = Nothing    'エラーがでない


VBAくらいから、自分がどこの誰という書き方をしてきたので、
(特に継承の場合は、MeなのかMyBaseなのか区別したいときなど)

VSのバージョンアップとともに、ちょっとした書き方の違いでアナライザが反応してしまったようだ。

特にVS2008からVS2015に更新し、ソースを書き換えているので、
古いソースをバージョンアップするとこのエラーがこれでもかと出てしまう。

ひー!


とりあえず、コンパイルもできそうだし、例えば上程度の書き方に対する
警告であれば、警告表示を消してしまいたい。


ということで、ソリューションの参照からアナライザーを右クリックして、
アクティブなルールセットを開くを選択

AD0001 アナライザー 警告

ルールセットの中から、例えば今回であればAD0001を探してチェックを外す

AD0001 アナライザー 警告

これで保存して、プロジェクトを再起動すればたぶん警告はなくなる。


この方法は、あくまで警告を出さなくする一時しのぎであるので、できればソースを見直して警告を潰していく方が良いと思う。


ちなみに、VB6までは、set hoge = nothing という書き方(オブジェクトを破棄する)が一般的だったが、
VB.netの世界ではNothingで初期化(破棄)すること自体があまり良い書き方とは言えないので、
(破棄する場合は、DisposeやClose、Clearなどの破棄メソッドでおこなう)
こういったNothing代入は極力控えたいところである。

そういった意味での警告であると受け取ってソースを変更した方が望ましいと思う。

参考
変数に Nothing をセットしてもリソースは解放できません
Nothing (Visual Basic)
第34回 値型と参照型
Nothingの代入は暗黙的な初期化と同じ


追記190126
■解決方法
ソースを見直すことで、解決できそうです。
特に自作のクラス等で初期値、または、初期化でNothingを入れているところがキーになります。
 
あるコントロールクラスに、例えば、
 
Public Property Test() As String()

見たいなプロパティを作って
フォームなどに貼り付けると、そのフォームのdesigner.vbにコントロールが自動生成され、
 
Me.HogehogeCtrl.Test = Nothing

というのも生成される。
これもこの警告の原因となるようだ。

デザイナーの中なので、コメントアウトしたとしても、例えば新たにコントロールを追加したりすると
初期化されてしまう場合がある。
デザイナーで初期化しない、つまり非表示にしてしまうには、

プロパティに、<DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)>を付けて非表示設定してあげれば良いようである。
 
<DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)>
Public Property Test As String()
   

上の場合は配列だったが、
 
Public Property Test() As String

というのも警告の対象で、上のようにDesignerSerializationVisibilityで初期化を回避しても良いし、
 
Public Property Test() As String = ""

とNothing以外で初期化してあげても良い。
とにかく警告の通りNothingによってThrowしているので、何かしら値を入れてあげれば解決できるようだ

プロジェクトを開いた段階では警告がなく、
ソースファイル(ドキュメント)を開いたら警告が表示された・・・、という場合は、
そのソース内に、不具合箇所があります。

なので、ドキュメントを全部閉じて、プロジェクトをいったん閉じ、
再度開き直して、一つずつソースを開いていくと、対象箇所の判別がしやすいです。
(開いても警告が出ないファイルは今回の問題には関係ない)

ちなみに、開いたとたんに警告が出る場合は、
スタートアップフォームに登録されているフォーム自身に対象があると考えられます。
 

 

ファイル直下のフォルダ名(パスではない)を知りたい〜VS2008

  • 2016.01.23 Saturday
  • 16:40

ファイルのパス(フルパス)を知りたいときは、
一番単純にGetDirectoryNameで取得できると思う。
 
Dim myPath As String = IO.Path.GetDirectoryName("C:¥aaa¥bbb¥ccc.txt")


では、ファイル直下のフォルダ名、上で言うところの bbb を取得したいときはどうしたらよいのか。
検索の仕方(キーワード)が悪いのか、出てこないので覚え書き。


例えば、上のmyPathをGetFileNameを使って
 
flParent = IO.Path.GetFileName(myPath)

という方法もあるのだが、あまりいいやり方とは言えない。

ファイルの情報を知りたいときに使うFileInfoを使う方がよい。
 
Dim fiFile As IO.FileInfo = New IO.FileInfo("C:¥aaa¥bbb¥ccc.txt")
Dim flParent As String = fiFile.Directory.Name

fiFileにファイル情報が展開され、その中に、DirectoryというDirectoryInfoクラスのプロパティが同時に作成される。

Directoryプロパティは、自分のフォルダの情報となるので、C:¥aaa¥bbb の情報が入る。

このプロパティのNameプロパティを呼び出してあげることで、
目的の自分直下のフォルダ、ここでは bbb を受け取ることができる。

ちなみに、ドライブ直下でやると、C:¥としてくれる。

同じようにフォルダの直下を知りたいなら、
IO.DirectoryInfo("C:¥aaa¥bbb") して、そのParentプロパティから aaa が取得できる。
なお、ドライブ直下の場合は、ParentはNothingとなる

 

XAMLデザイナーのデザインビューが表示されない?〜Visual Studio 2015

  • 2016.01.21 Thursday
  • 13:00

 

 

アップデートをかける前に、追記161214のエディタの既定値を確認してみてください。

 

 

もしこの方法で正しく開けない場合は、アップデートを行って見てください。

 

 

 

記事はここから>>>>>

 


ちょっとユニバーサルアプリに興味があって
VSでプロジェクトを作ってみたのだが、

確か、WPFをやったときは(VS2008ではあるが)、
デザインとコードのビュアーが分割されて表示さていたはずなのに、分割表示してくれない。

XAMLデザイナー 表示されない

オプション設定を見ても問題はなさそうだし、
XAMLデザイナー 表示されない

ネットで調べてもあまり良さそうな情報はなかったが、
とりあえず、設定のリセットをやってみろというのがあったので、やってみるが効果はなし

参考URL
XAMLデザイナが表示されない件とMicrosoft.VisualStudio.Xamlがロードできない件について


たぶんやらかしたといえば、VS2015のUpdate1を適用したくらいなのだが、
VS2015でXAML(UWP)は初めてなので、その前がどうだったかは不明。

いろいろ考えていたところ、ふとVSの左上のフラグに気づく
普段は無視しているのだが、何かヒントがあるかもと開いてみると、

既存OSのバージョン(Win10 1507)の上でVS2015をUpdate1にしたため、
デザイナーが表示されないのだよと注意書きが書かれていた。

XAMLデザイナー 表示されない

確かに、OSを1511にしていなかったので、アップデートして、

XAMLデザイナー 表示されない

再起動したら、

XAMLデザイナー 表示されない

XAMLのデザインが表示されるようになりました。

OSとVS2015のバージョンが一致していないと表示されないことがあるようです。

 

追記161214

すっかりこの操作を忘れていましたが、

 

対象のxamlファイルを右クリックして、ファイルを開くアプリケーションの選択をクリック

 

 

ダイアログの既定が、自動エディターセレクター(XML)になっているか確認。

もし、これで開いても表示されない場合は、XAMLデザイナーで開いてみて、再度確認。

 

もしデザイナーモードが正しく開けば、もう一度ダイアログを開いて、

正しく開いた項目を選択し、既定値として設定をクリックすれば、問題解決

 

もし、この方法でも開かなければ、上のようにアップデートを行ってみましょう。

 

 

VS2015 Update1がダンマリ?

  • 2016.01.20 Wednesday
  • 21:03

UWPをやってみようかと思ったところ、
この環境じゃプロジェクトが作れないよとエラーが出てしまった。

Microsoft.Netcore.UniversalWindowsPlatform.5.0.0
パッケージのインストールエラー
必要なすべてのパッケージをプロジェクトに追加できませんでした。
次のパッケージ C:¥Program Files¥Microsoft SDKs¥NETCoreSDK からインストールできませんでした。
Microsoft.NETCore.UniversalWindowsPlatform.5.0.0
ソリューションが開いており、保存されていることを確認してしてください。


インストールちゃんとできていないのか?と思いながら、
検索をかけると、どうやらWin10 1511に合わせてVS 2015 Update1が出ているようで、
その中に入っているUWPパッケージを入れて見ることにしたのだが・・・

VS2015 Update1 インストール できない

基本的なプログラムやフレームワークはインストールされたのだが、
オプション項目というところで、1/3とか1/2とか進んだところでダンマリ

半日放置して見てもダメ、セットアップを強制終了したりで再再再再くらいインストールしても、
必ずオプション項目でダンマリではまってしまった。


タスクマネージャを見ながらインストールしてみると、
どうやらオプションをインストールする SecondaryInstallerがダンマリしているようだ。

VS2015 Update1 インストール できない

tempフォルダのインストールログ(dd_vs_professional_〜〜.log)ファイルの中身を見ても、
SecondaryInstaller起動後に応答がなくタイムアウトしたようなログが残っている。
 

i000: MUX:  ExecutePackageBegin PackageId: VSSecondaryInstaller_box
i301: Applying execute package: VSSecondaryInstaller_box, action: Install, path: C:¥ProgramData¥Package Cache¥〜〜〜

〜〜〜略〜〜〜

i000: MUX:  Source confirmed
e000: MUX:  Exception: Info: Exception when connecting secondary installer pipe
e000: MUX:  WARNING: 操作がタイムアウトしました。
e000: MUX:  Stack:    場所 Microsoft.Web.PlatformInstaller.PipeBase.WaitForConnection(TimeSpan timeout)
                      場所 Microsoft.Web.PlatformInstaller.PipeBase.Connect(Process child, Nullable`1 timeout)
                      場所 Microsoft.Devdiv.Bootstrapper.SecondaryInstallerPipe.ConnectBackground(Object state)
 


試しにこのプロセスを無理矢理終了させてみたら、
先へ進むことができ、インストール完了時に警告が出たものの、
インストールを完了することができた。

どのオプションがダメなのかは分からないが、
インストールができていないpython Update1かなとか思ったり・・・
なんだかモヤモヤするが、今のところは通常通り使えるのでいいや。


ちなみに、別PCで試して見たのだが、
そこはやはりダンマリしながらも2時間ほどでアップデートすることができた。

別マシンと上のマシンの違いと言えば、プロキシサーバを通しているかいないかくらいなので、
もしかするとVSインストールにプロキシサーバをあてる必要があるのかもしれない?
(インターネットオプションかnetshコマンドで行けそうだが・・・)


あと、Win7にVS2015を入れて、それからWin10にアップデートすると、
どうもインストーラーが正しく動かず、何度やってもVS2015 1507版からVS2015 Up1にすることができない現象が起こった。

仕方がないので、VS2015 1507をアンインストールして、Up1を再インストールしてようやくUpdateが完了できた。


OSのアップデートとVSのアップデートはうまくかみ合わないところがあるのかもしれない。



追記160127
同じところで悩んでいる投稿があった。

This operation returned because the timeout period expired

やはり、オプションのところでタイムアウトして先が進めないようだ。
プロキシ設定などを見直すように指示があったりしているが、

/layout オプションでオフラインインストールする投稿があったので、試しにやってみた。

ちなみに、すべてダウンロードすると16Gになる。


結論から言うと、せっかく16Gも落としたのに、Webにつなぎに行こうとするのはなぜ?
(おそらく更新があるかチェックしている)

仕方がないので、Visual Studio のインストールにあるコマンドから /noweb というコマンドを打ち込んでみたら
うまくいきそう・・・と思ったが1時間経ってもダメで、
結果として、同じタイムアウトしているログがはき出されていた。

もうちょっといろいろやってみたいが、インストールされているVS自体の構成が壊れているとしか思えない・・・。


追記160129
自分の場合の原因が分かりました。

ドライブがいっぱいささっている。
HDDが6本、USBメモリが1本、PCとリンクするケーブル(USBメモリのような機能がある)2本、仮想ドライブ1本
とか、やたらにドライブ数が多いので、SecondaryInstallerがどのドライブに取得したインストーラを展開したらいいのか迷いに迷っている間に(※)、
vs_professional.exeがSecondaryInstallerが応答なしで死んでしまったと勘違いを起こしてダンマリしてしまったという感じ。

※tempフォルダ内に作られる dd_SecondaryInstaller_decompression_log.txt で確認できます。

とりあえず、USBメモリとかは外して、不要なHDDもオフラインにしたら、スルリとインストールが始まりました。
ちなみに、アンインストールも止まらずにできるようになりました。
 

calendar

S M T W T F S
   1234
567891011
12131415161718
19202122232425
262728293031 
<< March 2017 >>

search this site.

よく使う、検索される投稿

categories

アマゾン

楽天

selected entries

archives

recent comment

recent trackback

profile


※当ブログはリンクフリーですが、 取材や雑誌等で掲載される場合は、事前にお知らせください

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM