-1

いくつかのVBAコードをC#に移植していますが、移植する関数の1つの最初に次の行があります。

 Dim sCA;

これをC#のように保存する必要があるものを見つける方法はありますか?文字列を引き出す必要がありますが、使用しているライブラリのメソッドは数値を返すため、IndexOf()を使用しようとするとコンパイラが混乱します。設定に使用した関数のパラメータリストを確認すると、次のように表示されます。

ReadValue([DataPoint As String], [intErrorMode As Integer = 0])

C#にはないのでReadValue()、私は今少し立ち往生しています。あなたが私に投げることができるものは何でもありがたいです。

編集:そこで起こった混乱についてお詫びします、ここに完全な機能があります:

Sub CheckForPin(sSTB As String, sPIN As String, iSetTopBoxID As Integer)
Dim sCA_PopUp

sCA_PopUp = ReadValue("Fix32." & SCADA_NAME & "." & sSTB & CStr(iSetTopBoxID) & "_POPUP_CA" & ".F_CV", 1)
If InStr(1, UCase(sCA_PopUp), "PIN PROTECTED") <> 0 Then
    WriteValue sPIN, "Fix32." & SCADA_NAME & "." & sSTB & CStr(iSetTopBoxID) & "_MULTIPLE_CMD" & ".A_CV", 1
End If

Exit Sub
4

2 に答える 2

1

ReadValue が文字列を返しているようです。したがって、C#は

void CheckForPin(...)
{
   string sCA_PopUp = ReadValue(...)
   if (sCA_PopUp.ToUpper().Contains("PIN PROTECTED"))
   {
      WriteValue(...)
   }
}
于 2012-07-23T15:44:23.070 に答える
1

元のプログラマーがすべての変数にタイプ インジケーター (この場合は "s") をプレフィックスとして付けたことを考えると、それが実際に文字列であると推測するのは安全です。また、Dim sCA_PopUp と Dim sCA が同じ変数を参照しているかどうかはわかりませんが、あなたはこれをキャッチできませんでしたが、もしそうなら、進行中の重い連結から、それが a として解釈されるべきであるというさらなる証拠がありますストリング。これを C# に変換する場合は、代わりに StringBuilder を使用してください。

于 2012-07-23T16:56:41.993 に答える