1

私は Visual Basic を初めて使用しますが、現在取り組んでいるプログラムで問題が発生しています。Sterling ActiveX ライブラリを使用して、Sterling Trader ソフトウェアの簡単なタスク (注文の送信) を行う基本的な機能プログラムを作成しています。私は、機能し、そこから構築できる基本的なものを作ろうとしています。これまでの私のコードは次のとおりです。

Imports SterlingLib

Public Class Form1

Dim WithEvents m_STIEvents As STIEvents

Private Declare Sub GetLocalTime Lib "kernel32" (ByRef lpSystemTime As SYSTEMTIME)

Private Structure SYSTEMTIME

    Dim wYear As Short

    Dim wMonth As Short

    Dim wDayOfWeek As Short
    Dim wDay As Short
    Dim wHour As Short
    Dim wMinute As Short
    Dim wSecond As Short
    Dim wMilliseconds As Short
End Structure

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    m_STIEvents = New STIEvents

End Sub

Private Sub m_STIEvents_OnSTIOrderUpdateMsg(ByVal oSTIOrderUpdateMsg As SterlingLib.STIOrderUpdateMsg) Handles m_STIEvents.OnSTIOrderUpdateMsg

    Dim order As STIOrder
    order = New STIOrder
    Dim storder As structSTIOrder

    storder.bstrAccount = "ACCT7"
    storder.bstrSide = "B"
    storder.bstrSymbol = "CSCO"

    order.Quantity = "500"
    storder.bstrStrPriceType = SterlingLib.STIPriceTypes.ptSTIMkt
    storder.bstrTif = "D"
    storder.bstrDestination = "NYSE"

    Dim theTime As SYSTEMTIME
    GetLocalTime(theTime)

    storder.bstrClOrderId = storder.bstrAccount & theTime.wYear & theTime.wMonth & theTime.wDay & theTime.wHour & theTime.wMinute & theTime.wSecond & theTime.wMilliseconds

    Dim ret As Integer

    ret = order.SubmitOrder



End Sub

Private Function Text1() As Object
    Throw New NotImplementedException
End Function

End Class

このプログラムを実行すると、「アプリケーションで未処理の例外が発生しました。続行をクリックすると、アプリケーションはこのエラーを無視して続行を試みます。終了をクリックすると、アプリケーションはすぐに閉じます。

次のエラーのため、CLSID {5E89F49B-6A12-420F-8570-E510EF1B580A} を持つコンポーネントの COM クラス ファクトリを取得できませんでした: 800700c1."

これはどういう意味ですか?どうすれば修正できますか? デバッグすると、問題が発生している行として「m_STIEvents = New STIEvents」が強調表示されますが、わかりません。

4

2 に答える 2

1

エラー コード 0x800700c1 をリバース エンジニアリングできます。Googleを介していない場合は、設計によるものです。8 はエラーになります。7 はエラーが発生した "施設コード" で、7 は Windows を意味します。これにより、最後の 4 桁が Windows エラー コードになります。0x00c1 = エラー 193。さまざまな方法で検索できますが、その 1 つは、Windows SDK の WinError.h ファイルを調べることです。

//
// MessageId: ERROR_BAD_EXE_FORMAT
//
// MessageText:
//
// %1 is not a valid Win32 application.
//
#define ERROR_BAD_EXE_FORMAT             193L

64 ビット オペレーティング システムで常に生成される種類のエラー コード。64 ビット コードを実行し、従来の 32 ビット ActiveX コンポーネントをロードしようとしています。

これは簡単な修正方法を示唆しています。ソリューション エクスプローラー ウィンドウで EXE プロジェクトを右クリックします。[プロパティ]、[コンパイル] タブ、下にスクロール、[高度なコンパイル オプション] ボタン。ターゲット CPU 設定を「x86」に変更して、VB.NET コードを強制的に 32 ビット モードで実行し、その ActiveX コントロールをロードできるようにします。または、すでに x86 に設定されている場合は、「AnyCPU」に変更して、これが 64 ビット ActiveX コントロールであるという奇妙な可能性に対処します。

それでも問題が解決しない場合、またはその他の問題がある場合は、コンポーネントのベンダーにお問い合わせください。

于 2012-09-13T23:05:39.863 に答える
0

あなたがこの問題を解決したかどうかはわかりません。私がそれを解決した方法は、コンピューターに vb6 をインストールすることでした。私は他のすべての方法を試しましたが、どれもうまくいきませんでした。この API はかなり古いものです。vb6をインストールすると問題が解決しました。また、プログラムを機能させたい場合は、sterling trader pro にログインする必要があります。幸運を。

于 2013-11-13T04:10:02.417 に答える