Link to home
Start Free TrialLog in
Avatar of luciepaul
luciepaul

asked on

C# Problem convertion from vb6

I try to translate a VB6 proc to c# and can't !! (I'm a C# beginner)
I have troubles with the variables types and the translation from the VB6 "&"  to the C# "||"
Could an expert help me
Here comes the original VB6 code and my "translation"

The original VB6 proc

Private Sub GetStatusBits()

    Dim Digit As Integer
	Dim nSpO2_StatusBit(7) As Integer   'used for DF1 also
	im nSpO2_Status As Integer 'Use for DF1 also
	Dim nStat2 As Integer
    
    'CONVERT SPO2 STATUS BYTE TO BINARY BYTE ARRAY
    For Digit = 7 To 0 Step -1
        If (nSpO2_Status And (2 ^ Digit)) Then
            nSpO2_StatusBit(Digit) = 1
        Else
            nSpO2_StatusBit(Digit) = 0
        End If
        If (nStat2 And (2 ^ Digit)) Then
            nStat2Bit(Digit) = 1
        Else
            nStat2Bit(Digit) = 0
        End If
    Next Digit

End Sub

Open in new window


My C# translation
private void GetStatusBits()
	{
		int Digit = 0;

		//CONVERT SPO2 STATUS BYTE TO BINARY BYTE ARRAY
		for (Digit = 7; Digit >= 0; Digit += -1) 
                {
	        if ((nSpO2_Status )& (Math.Pow(2, Digit))))  
                {
				nSpO2_StatusBit[Digit] = 1;
			    } 
            else 
                {
				nSpO2_StatusBit[Digit] = 0;
			    }
			if ((nStat2 = 0) // & (Math.Pow(2, Digit)))) 
                {
				nStat2Bit[Digit] = 1;
			   }
               else 
                {
				nStat2Bit[Digit] = 0;
			    }
		}
	}

Open in new window

Avatar of kaufmed
kaufmed
Flag of United States of America image

Where is the declaration for nStat2Bit in your original VB6 code?
ASKER CERTIFIED SOLUTION
Avatar of kaufmed
kaufmed
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Hi,
Please explain the error and problems, but what i have conceived is as following:

First of all you have not declared nSpO2_StatusBit in your c# code.
Secondly in VB nSpO2_StatusBit(7) means you have 8 element in array from 0 to 7. On the other hand you have only 7 elements in c# from 0 to 6.

Thanks
Be sure to make the change that IJZ mentioned. Change line 4 to:

int[] nSpO2_StatusBit = new int[8];

Open in new window


I always seem to forget that little detail when translating VB to C#  : )