テキスト広告:Amazon Primeday

火曜日, 6月 23, 2020

[VB.NET]マイグレーションの実行で「タイプ初期化子が例外をスローしました。」のエラーになる。

▼質問
VB2005からVB2012にマイグレーションしてコンパイルが通ったのに
初期実行時に下記のエラーが発生してデバックが途中で停止してしまうんだ。

「XXXXXXのタイプ初期化子が例外をスローしました。」

次の対応をすれば問題なく動くようにはなったが・・・。
①「対象のCPU」の対応方法
 ソリューションのプロパティ→「コンパイル」→「対象のCPU」→「x86」を選択する。
②「32ビットの優先」の対応方法
 ソリューションのプロパティ「コンパイル」→「32ビットの優先」にチェックを入れる。

▼回答
将来の事を考えたらどのような対応をしたらよいのか?!

32ビットから64ビット対応にできるか調査して対応するのが良さそうだ。

変数のサイズぐらいは、再度チェックする必要だけはありそうだ。。。。

月曜日, 7月 08, 2019

[Windows]GCCとMAKEファイル実行環境構築方法

1.GCC実行環境

■コンパイラ
MinGW "Minimalist GNU for Windows"
■公式サイト
http://www.mingw.org/

①インストール
・MinGWから[mingw-get-setup.exe]をダウンロードします。
・ダウンロードしたEXEをクリックして[Install]→[Continue]の
 順でクリックします。
・[MinGW Installation Manager]から下記の項目を右クリック
 して[Mark for Installation]を選択します。

 mingw32-base-bin
 mingw32-gcc-g++-bin

・ツールバーから下記の順にクリックしてインストールは終了です。

 [Installtion]→[Apply Changes]→[Apply]→[Close]

②PATHの設定
・システムの詳細設定の環境設定から[Path]に下記パスを設定します。

 C:\MinGW\bin

②GCCの確認
・コマンドプロンプトから[gcc -v]と入力します。
・下記の内容が表示されればインストール完了です。

 ~いろんな情報~
 gcc version x.x.x (MinGW.org GCC-x.x.x-x)

2.MAKE実行環境

■パッケージ名
GnuWin32 GNU Make 3.81 "Make for Windows"
■公式サイト
http://gnuwin32.sourceforge.net/
■ダウンロードサイト
http://gnuwin32.sourceforge.net/packages/make.htm

①インストール
・公式サイトからインストーラを下記の手順で[make-3.81.exe]をダウンロードします。

 [Download Packages]→[Make]→[Complete package, except sources Setup]

・ダウンロードしたEXEをクリックして対話ウィンドウに従いセットアップします。

②PATHの設定
・システムの詳細設定の環境設定から[Path]に下記パスを設定します。

 C:\Program Files (x86)\GnuWin32\bin

③MAKEの確認
・コマンドプロンプトから[make -v]と入力します。
・下記の内容が表示されればインストール完了です。

 GNU Make x.xx
 ~いろんな情報~
 This program built for i386-pc-mingw32

日曜日, 6月 09, 2019

[ORACLE]管理対象ドライバODP.NET(ManagedDataAccess)の移行方法

・管理対象ドライバODP.NET(ManagedDataAccess)の移行方法

 1.移行に関する概要

  これまでODP.NETのドライバには、Oracle.DataAccess.dll(管理対象外ドライバ)を使用して
 きましたが、Oracle 12cから導入されたクライアントソフトの設定が不要のODP.NET管理対象
 ドライバがあります。
 このドライバは、クライアント等にInstant ClientやODACを登録する必要がないことが特徴です。
 Oracle.ManagedDataAccess.dllを同梱してConfigファイルを構成するだけでOracle Database
 に接続可能となります。

 2.システム要件

 ・32ビットOS:Windows 7、Windows Server 2008、Windows 8
 ・64ビットOS:Windows 7、Windows Server 2008、Windows 8、Windows Server 2012
 ・Oracle Database 10gリリース2以降のデータベースにアクセスするアプリケーション
 ・Microsoft .NET Framework 4.0以降を対象フレームワークにするアプリケーション
  ・詳細は下記サイトを参照ください。
  https://docs.oracle.com/cd/E57425_01/121/ODPNT/InstallSystemRequirements.htm

 3.クラス・デリゲートサポート比較

 ・Oracle.DataAccess.*とOracle.ManagedDataAccess.*のサポート状況は下記サイト
 を参考にしてください。
  https://docs.oracle.com/cd/E57425_01/121/ODPNT/intro003.htm#BHCFHCAF

 3.参考サイト

 ・Oracle Data Provider for .NET開発者ガイド 12c リリース1 (12.1)
  https://docs.oracle.com/cd/E57425_01/121/ODPNT/toc.htm

 3.移行方法

 ①.NETプロジェクトの参照設定を「Oracle.DataAccess.dll」から
 「Oracle.ManagedDataAccess.dll」に変更します。

 ②ネームスペース参照を変更します。
  C#:using ディレクティブ、VB:Imports ステートメント
    // C#
    using Oracle.ManagedDataAccess.Client;
    using Oracle.ManagedDataAccess.Types;

    ' VB
    Imports Oracle.ManagedDataAccess.Client
    Imports Oracle.ManagedDataAccess.Types

  ③アプリケーション構成ファイル「app.config」にドライバ情報を記述します。
  tnsnames.oraをexeファイルと同じフォルダに置くことでも実現できます。

  下記の例は、対象フレームワーク「Microsoft .NET Framework 4.0」
  Oracle.ManagedDataAccessドライバのバージョンが「4.121」です。

    <configSections>
    <section name="oracle.manageddataaccess.client"
      type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
    </configSections>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
    </startup>
    <system.data>
        <DbProviderFactories>
            <remove invariant="Oracle.ManagedDataAccess.Client"/>
            <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver"
                type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
        </DbProviderFactories>
    </system.data>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <publisherPolicy apply="no"/>
                <assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral"/>
                <bindingRedirect oldVersion="4.121.0.0 - 4.65535.65535.65535" newVersion="4.121.2.0"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
    <oracle.manageddataaccess.client>
    <version number="*">
      <dataSources>
        <dataSource alias="ネットサービス名(TNS名)" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ホスト名 or IPアドレス)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=サービス名))) " />
      </dataSources>
    </version>
    </oracle.manageddataaccess.client>

日曜日, 9月 06, 2015

[C#]DLLからApp.configのAppSettingsの内容が読み込めない

▼質問
DLLでApp.configを作成してAppSettingsにAddを追加したけど

その内容が読み込めないだけど・・・何でだ!

▼回答
次のようにすれば読むことができるよ!!

System.Configuration.Configuration config = System.Configuration.ConfigurationManager.OpenExeConfiguration(this.GetType().Module.Name);
string value = System.Configuration.ConfigurationManager.AppSettings["key"];

■関連サイト

月曜日, 3月 09, 2015

[C#]namespaceの上にコメント書くと「warning CS1587: XML コメントが有効な言語要素の中にありません。」の警告が・・・

▼質問
namespaceの上にコメント(<summary>)書くと

「warning CS1587: XML コメントが有効な言語要素の中にありません。」

の警告がでる。

▼回答
簡単な方法は、NamespaceDocクラスを作成することだ!

するとNamespaceのXmlドキュメントコメントが作成できる。

namespace 名前空間
{
    /// <summary> 概要</summary>
    /// <remarks>解説</remarks>
    [System.Runtime.CompilerServices.CompilerGeneratedAttribute]
    internal class NamespaceDoc
    {
    }

}

木曜日, 5月 10, 2012

[Java]IE8で改行したラベル・ボタン(HTMLテキスト使用したもの)が消える


▼質問
アプレット(JApplet)で作成した画面なんだけど・・・。
IE6で正常だった改行したラベル・ボタン(HTMLテキスト使用したもの)がIE8で表示すると
消える時(ブラウザのリロード等・・・)があるんだ!どうしてそうなるか教えてくれ!!

例:
JLabel label1 = new JLabel( "<HTML><FONT><P ALIGN=CENTER>改 行<BR>ラベル</P></FONT></HTML>" );

▼回答
根本的解決ではないがバグ報告で回避方法が載っているから参考にしてくれ!

Bug ID: 7001786 JLabel does not display html text after browser refresh

Bug ID: 6993691 JEditorPane throws NullPointerException when reloaded

アプレットのinit()とstart()に次のコードを入れてみてくれ!!

new javax.swing.text.html.parser.ParserDelegator();

それでは、健闘を祈る(笑

・・・。

■関連サイト
JButtonの改行したラベルがリロードで消える

金曜日, 12月 09, 2011

[Eclipse]Eclipseのホバー(ポップアップ説明表示)の日本語化

▼質問
EclipseでJavaAPIなどにカーソルを置いた時にでるポップアップして表示する解説表示(ホバー)を
日本語したいのだがどうすればできるのか教えてくれ!

▼回答
1.Java関連の日本語APIドキュメントを入手する。
http://download.java.net/jdk/jdk-api-localizations/jdk-api-ja/builds/latest/zip/jdk-6-doc-ja-ea.zip
jdk-6u21-docs-ja.zip2.MergeDocを入手して日本語版のzipを作成する。
http://mergedoc.sourceforge.jp/#mergedoc.html
3.Eclipseの[ウィンドウ]→[設定]→[Java]→[インストール済みのJRE]の設定を変更する。

■関連サイト
【Java 5版MergeDocでEclipse 3.2のホバーを日本語化 - @IT】
【jdk-6-doc-ja.zip がダウンロードできない~~。って人のために - 雑想空間】

木曜日, 3月 10, 2011

[VB.NET]APIのFindWindowをフレームワーク(.NET Framework)に変更するには?

▼質問
VB.NETでWin32APIのFindWindowを次の様にコーディングしているんだが・・・。



Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Integer

Public Function GetWindowName(ByVal WindowName As String) As String

Try

If (FindWindow(vbNullString, WindowName) <> 0) Then
Return WindowName
End If

Catch ex As Exception

End Try

Return Nothing
End Function



これを.NET Frameworkに変更するには、どうしたらよいか教えてくれ!

▼回答
.NET FrameworkにあるProcessクラスを使えば実現できるよ!

参考にそのコードを次に示しておくよ!!


Public Function GetWindowName(ByVal WindowName As String, ByVal ProcessesName As String) As String

Try

Dim localByName As Process() = Process.GetProcessesByName(ProcessesName)

For i As Integer = 0 To localByName.Length - 1
If (localByName(i).MainWindowTitle.ToUpper = WindowName.ToUpper) Then
Return WindowName
End If
Next i

Catch ex As Exception

End Try

Return Nothing
End Function

金曜日, 2月 18, 2011

[ORACLE]VBで9iと10gの混在はできない。

▼質問
VBで作った9iで動いているoo4o接続のアプリケーション環境に

10gで動いているアプリケーションを入れようとしたんだが

うまく動かないんだ。

どうしたら良いか教えてくれ!

▼回答
oo4oは、クライアントに複数のバージョンをインストールできても

混在して使うことはできないんだ。

だから、アプリケーション側がoo4o接続のバージョンを統一する

必要があるんだ。

(oo4oを1つのクライアントに複数バージョンインストールすることは
出来ませんので、新規に新たなOracle Clientをインストールする場合に、
既にインストールされているoo4oを削除する必要があります。)


■参考サイト
OTN Japan - 意外と簡単!? .NETでOracle:スマートクライアント編

既存バージョンからのアップグレード注意点

oo4oは、一台のクライアントに対して、一つのORACLE_HOMEのみ対応します。すなわち、
1台で使用できるバージョンは1つのみで複数バージョンは使用できません。
また、Oracle Database 10gからは、新たなORACLE_HOMEにoo4oをインストールすると、
レジストリが書き換えられ、それ以前にインストールされたoo4oバージョンは使用できません
のでご注意ください。

注意:Oracle Database 10gより前のoo4oのバージョンを導入する際には、一度既存のoo4oを
削除した上で、再度インストールすることが必要になります。

再コンパイルが必要な場合

アーリー・バインディングを使用している場合のコードは以下のようになります。

Dim OraSession As New OraSessionClass
Dim OraDatabase As OraDatabase
Set OraDatabase = OraSession.OpenDatabase("orcl", _
 "scott/tiger", dbOption.ORADB_DEFAULT) <アーリー・バインディングを使用した場合のコード>

参照設定を行わずにoo4oを使用している場合(レイト・バインディング)のコードは以下のようになります。

Dim OraSession As Object       ''セッション・オブジェクト
Dim OraDatabase As Object      ''データベース・オブジェクト
Set OraSession = CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase = OraSession.OpenDatabase("orcl", "scott/tiger", 0&)<参照設定を行わずにoo4oを使用しているコード(レイト・バインディング)>

レイト・バインディングを使用してコンパイルされたモジュールは、再コンパイルせずに動作可能ですが、
確実に移行作業を行うために、再コンパイルしていただくことを推奨しております。



oracle9iとoracle10gのクライアントの併用について - Yahoo!知恵袋

日曜日, 1月 23, 2011

[VBA]ScrollAreaで「アプリケーション定義またはオブジェクト定義のエラーです。」のエラーがでる

▼質問
ScrollAreaのバックアップを取ってそれを戻すときに次のエラーが出る。



Dim strScrollArea As String

With Worksheets("Sheet1")
strScrollArea = .ScrollArea
.ScrollArea = ""
'次の処理でエラーが出る
.ScrollArea = strScrollArea
End With



「アプリケーション定義またはオブジェクト定義のエラーです。」

どうしてなんだ。

▼回答
理由は、A1形式の時しか使えないからなんだ。

だから、次の様にA1形式にしてからバックアップを取って戻す必要があるんだ。



Dim strScrollArea As String
Dim lngStyle As Long

With Worksheets("Sheet1")
lngStyle = Application.ReferenceStyle
Application.ReferenceStyle = xlA1
strScrollArea = .ScrollArea
.ScrollArea = ""
'処理
.ScrollArea = strScrollArea
Application.ReferenceStyle = lngStyle
End With



注意として、前回の形式が変わらない様にApplication.ReferenceStyleの

バックアップも必要だね!

木曜日, 12月 16, 2010

[VB.NET]ファイル名に使用できない文字チェック(GetInvalidFileNameChars)

▼質問
VB.NETのメソッドでファイル名に使用できない文字を簡単に

チェックできるメソッドってないの?

▼回答
直接チェックできるメソッドはないけど次のメソッドを使えば

ファイル名に使用できない文字を簡単に取得できるよ。

System.IO.Path.GetInvalidFileNameChars

このメソッドを使ったチェック関数を作ったから

次のコードを参考にしてくれ!



Public Function IsInvalidFileNameChars(ByVal fileName As String) As Boolean

Try
For Each invalidChar As Char In System.IO.Path.GetInvalidFileNameChars
If (fileName.IndexOf(invalidChar) > -1) Then
Return True
End If
Next
Catch ex As Exception
End Try

Return False
End Function



■参考サイト
20.ファイル名に使用できない文字を含んでいるかチェックする < ファイル操作 Tips メニュー < C# 2005 Tips HOME < HIRO's.NET

月曜日, 10月 18, 2010

Jet EngineのキャッシュとDBEngine.Idle dbRefreshCache

Jet Engineのキャッシュとその制御

非同期(トランザクションなし)の場合、実際に書き込み動作が始まるのは、[1] Write Cacheが、レジストリのMaxBufferSizeに指定したサイズを超えたとき、もしくは、[2] 最後の書込み動作以降にFlushTransactionTimeoutに設定された時間が経過したときであり、このうちどちらか短い方の条件が成立したときになります。

マルチユーザー環境などで、書き込み遅延が発生しては困るときには、同期書き込みを利用します。同期書き込みを行なうには、BeginTrans ~ CommitTransという、明示的なトランザクションを利用します。CommitTransを実行すると、遅延なしにディスクに書き込みが行なわれます。トランザクションは、DAOではWorkspaceの、ADOではConnectionのメソッドです。

gridview の更新が出来ない。

ACC2000: DBEngine.Idle dbRefreshCache の最新の情報に更新がないイミディエイト

日曜日, 9月 26, 2010

[VB.NET]Browsable(False)ではプロパティウィンドウから「GenerateMember」「Locked」「Modifiers」が非表示にできない

▼質問
BrowsableAttributeクラスの属性を使ってユーザーコントロールのプロパティを

[プロパティ]ウィンドウから非表示にしたいんだ。

だけど、次のプロパティは非表示にできなかったんだ。

「GenerateMember」「Locked」「Modifiers」

良い方法があったら教えてくれ!

▼回答
次のコードを使うと実現できるから参考にしてくれ!!



Imports System.ComponentModel.Design
Imports System.ComponentModel

<Designer(GetType(SampleDesigner), GetType(IDesigner))> _
Public Class UserControl1

End Class
Public Class SampleDesigner
Inherits System.Windows.Forms.Design.ParentControlDesigner

Private _unneededProperties As String() = {"GenerateMember", "Locked", "Modifiers"}
Protected Overrides Sub PostFilterProperties(ByVal properties As IDictionary)
For Each prop As String In _unneededProperties
properties.Remove(prop)
MyBase.PostFilterProperties(properties)
Next
End Sub

End Class

土曜日, 9月 25, 2010

[VB.NET]ユーザーコントロール(UserControl)のコントロール追加(コンテナ化)

▼質問
VB6からVB.NETに移行している作業で

独自のユーザーコントロール(UserControl)を作成したんだが

そのコントロールがデザイン時にコントロールを追加しようとしても

親子関係(コンテナ化)が結べないんだ。

VB6では、「ControlContainer」プロパティを設定すると

ユーザーコントロールがコンテナ化する事ができたと思うんだけど・・・。

VB.NETではどうするか教えてくれ!


▼回答
DesignerAttributeクラスの属性を使って実現することができるんだ。

そのコードを次に示しておくから参考にしてくれ!



Imports System.ComponentModel.Design
Imports System.ComponentModel

<Designer("System.Windows.Forms.Design.ParentControlDesigner, System.Design", GetType(IDesigner))> _
Public Class UserControl

End Class



■参考サイト
ユーザーコントロールにコントロールを追加するには - Insider .NET会議室
ユーザーコントロールのコンテナ - BIGLOBEなんでも相談室
VB 6.0 ユーザーのための VB .NET 移行ガイド - 標準コントロール

月曜日, 9月 20, 2010

[VB.NET]プロパティウィンドウの非表示・インテリセンス(IntelliSense)の非表示ができない

▼質問
ユーザーコントロールで次のことしていた時に

・プロパティウィンドウ非表示
・インテリセンス(IntelliSense)非表示

ツールチップに次のメッセージが出てコードが書けないんだ。

「キーワードは、識別子として有効ではありません。」

どうしたらよいか教えてくれ!

▼回答
予約済みのキーワードは、[]角括弧で囲えばいいんだ。



Private _Default As Object = Nothing
<Browsable(False), EditorBrowsable(EditorBrowsableState.Never)> _
Public Property [Default]() As Object
Get
Return _Default
End Get
Set(ByVal value As Object)
_Default = value
End Set
End Property





<EditorBrowsable(EditorBrowsableState.Never)> _
Public Shadows [Select]()