2012-07-23 21 views
-1

我移植一些VBA代碼到C#,並在功能端口一個的開始是行:VBA到C#中:Dim X

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 
+0

您可以發佈更多的原始VBA代碼來幫助我們獲得一些上下文嗎? – Nate 2012-07-23 15:34:09

+2

也許用完整的代碼編輯你的問題。不要把它放在評論 – 2012-07-23 15:36:32

+2

你試過簡單地使用'var'? 如果編譯器仍然抱怨,我會嘗試'對象',如果你沒有運氣那麼'動態',應該肯定能解決這個問題。 – 2012-07-23 15:40:31

回答

1

鑑於原程序員前綴的所有變量與類型指示器(在這種情況下,「S」),它是安全的推斷,這確實是一個字符串。另外,我不確定Dim sCA_PopUp和Dim sCA是否指向相同的變量,而您只是沒有理解這一點,但如果是這樣,從進行的重疊連接中,有進一步的證據表明它應該被解釋爲串。當你將其轉換爲C#時,請改用StringBuilder。

1

似乎ReadValue返回一個字符串;所以C#是

void CheckForPin(...) 
{ 
    string sCA_PopUp = ReadValue(...) 
    if (sCA_PopUp.ToUpper().Contains("PIN PROTECTED")) 
    { 
     WriteValue(...) 
    } 
} 
+1

順便說一句,我同意@Joshua,使用'var'是一個很好的捷徑,但你應該知道你正在玩的類型。 – 2012-07-23 15:47:04