public byte[] DecodeArray64(string sInput) { if (m_bytReverseIndex[47] != 63) { Initialize64(); } byte[] bytInput = null; byte[] bytWorkspace = null; byte[] bytResult = null; long lInputCounter = 0; long lWorkspaceCounter = 0; string innerString = Strings.Replace(sInput, Constants.vbCrLf, ""); string outerString = Strings.Replace(innerString, "=", ""); bytInput = UTF8Encoding.UTF8.GetBytes(outerString); bytWorkspace = new byte[(Information.UBound(bytInput) * 2) + 1]; lWorkspaceCounter = Information.LBound(bytWorkspace); for (lInputCounter = Information.LBound(bytInput); lInputCounter <= Information.UBound(bytInput); lInputCounter++) { bytInput[lInputCounter] = m_bytReverseIndex[bytInput[lInputCounter]]; } for (lInputCounter = Information.LBound(bytInput); lInputCounter <= (Information.UBound(bytInput) - ((Information.UBound(bytInput) % 8) + 8)); lInputCounter += 8) { bytWorkspace[lWorkspaceCounter] = (bytInput[lInputCounter] * k_bytShift2) + (bytInput[lInputCounter + 2] / k_bytShift4); bytWorkspace[lWorkspaceCounter + 1] = ((bytInput[lInputCounter + 2] & k_bytMask2) * k_bytShift4) + (bytInput[lInputCounter + 4] / k_bytShift2); bytWorkspace[lWorkspaceCounter + 2] = ((bytInput[lInputCounter + 4] & k_bytMask1) * k_bytShift6) + bytInput[lInputCounter + 6]; lWorkspaceCounter = lWorkspaceCounter + 3; } switch ((Information.UBound(bytInput) % 8)) { case 3: bytWorkspace[lWorkspaceCounter] = (bytInput[lInputCounter] * k_bytShift2) + (bytInput[lInputCounter + 2] / k_bytShift4); break; case 5: bytWorkspace[lWorkspaceCounter] = (bytInput[lInputCounter] * k_bytShift2) + (bytInput[lInputCounter + 2] / k_bytShift4); bytWorkspace[lWorkspaceCounter + 1] = ((bytInput[lInputCounter + 2] & k_bytMask2) * k_bytShift4) + (bytInput[lInputCounter + 4] / k_bytShift2); lWorkspaceCounter = lWorkspaceCounter + 1; break; case 7: bytWorkspace[lWorkspaceCounter] = (bytInput[lInputCounter] * k_bytShift2) + (bytInput[lInputCounter + 2] / k_bytShift4); bytWorkspace[lWorkspaceCounter + 1] = ((bytInput[lInputCounter + 2] & k_bytMask2) * k_bytShift4) + (bytInput[lInputCounter + 4] / k_bytShift2); bytWorkspace[lWorkspaceCounter + 2] = ((bytInput[lInputCounter + 4] & k_bytMask1) * k_bytShift6) + bytInput[lInputCounter + 6]; lWorkspaceCounter = lWorkspaceCounter + 2; break; } bytResult = new byte[lWorkspaceCounter + 1]; if (Information.LBound(bytWorkspace) == 0) { lWorkspaceCounter = lWorkspaceCounter + 1; } CopyMemory(VarPtr.VarPtr(bytResult[Information.LBound(bytResult)]), VarPtr.VarPtr(bytWorkspace[Information.LBound(bytWorkspace)]), lWorkspaceCounter); return(bytResult); }
//Return the address of the low bound of the passed table array private static int Subclass_AddrMsgTbl(ref int[] aMsgTbl) { int functionReturnValue = 0; // ERROR: Not supported in C#: OnErrorStatement //The table may not be dimensioned yet so we need protection //UPGRADE_ISSUE: VarPtr function is not supported. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="367764E5-F3F8-4E43-AC3E-7FE0B5E074E2"' functionReturnValue = VarPtr.VarPtr(aMsgTbl[1]); //Get the address of the first element of the passed message table // ERROR: Not supported in C#: OnErrorStatement return(functionReturnValue); //Switch off error protection }
private static string TrimNull(ref string startstr) { //UPGRADE_ISSUE: VarPtr.VarPtr function is not supported. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="367764E5-F3F8-4E43-AC3E-7FE0B5E074E2"' return(Strings.Left(startstr, lstrlen(VarPtr.VarPtr(startstr)))); }
private static bool MatchSpec(ref string sFile, ref string sSpec) { //UPGRADE_ISSUE: VarPtr.VarPtr function is not supported. Click for more: 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="367764E5-F3F8-4E43-AC3E-7FE0B5E074E2"' return(PathMatchSpec(VarPtr.VarPtr(sFile), VarPtr.VarPtr(sSpec))); }
public string EncodeArray64(ref byte[] bytInput) { string functionReturnValue = null; // ERROR: Not supported in C#: OnErrorStatement if (m_bytReverseIndex[47] != 63) { Initialize64(); } byte[] bytWorkspace = null; byte[] bytResult = null; byte[] bytCrLf = new byte[4]; long lCounter = 0; long lWorkspaceCounter = 0; long lLineCounter = 0; long lCompleteLines = 0; long lBytesRemaining = 0; long lpWorkSpace = 0; long lpResult = 0; long lpCrLf = 0; if (Information.UBound(bytInput) < 1024) { bytWorkspace = new byte[(Information.LBound(bytInput) + 4096) + 1]; } else { bytWorkspace = new byte[(Information.UBound(bytInput) * 4) + 1]; } lWorkspaceCounter = Information.LBound(bytWorkspace); for (lCounter = Information.LBound(bytInput); lCounter <= (Information.UBound(bytInput) - ((Information.UBound(bytInput) % 3) + 3)); lCounter += 3) { bytWorkspace[lWorkspaceCounter] = m_bytIndex[(bytInput[lCounter] / k_bytShift2)]; bytWorkspace[lWorkspaceCounter + 2] = m_bytIndex[((bytInput[lCounter] & k_bytMask1) * k_bytShift4) + ((bytInput[lCounter + 1]) / k_bytShift4)]; bytWorkspace[lWorkspaceCounter + 4] = m_bytIndex[((bytInput[lCounter + 1] & k_bytMask2) * k_bytShift2) + (bytInput[lCounter + 2] / k_bytShift6)]; bytWorkspace[lWorkspaceCounter + 6] = m_bytIndex[bytInput[lCounter + 2] & k_bytMask3]; lWorkspaceCounter = lWorkspaceCounter + 8; } switch ((Information.UBound(bytInput) % 3)) { case 0: bytWorkspace[lWorkspaceCounter] = m_bytIndex[(bytInput[lCounter] / k_bytShift2)]; bytWorkspace[lWorkspaceCounter + 2] = m_bytIndex[(bytInput[lCounter] & k_bytMask1) * k_bytShift4]; bytWorkspace[lWorkspaceCounter + 4] = k_bytEqualSign; bytWorkspace[lWorkspaceCounter + 6] = k_bytEqualSign; break; case 1: bytWorkspace[lWorkspaceCounter] = m_bytIndex[(bytInput[lCounter] / k_bytShift2)]; bytWorkspace[lWorkspaceCounter + 2] = m_bytIndex[((bytInput[lCounter] & k_bytMask1) * k_bytShift4) + ((bytInput[lCounter + 1]) / k_bytShift4)]; bytWorkspace[lWorkspaceCounter + 4] = m_bytIndex[(bytInput[lCounter + 1] & k_bytMask2) * k_bytShift2]; bytWorkspace[lWorkspaceCounter + 6] = k_bytEqualSign; break; case 2: bytWorkspace[lWorkspaceCounter] = m_bytIndex[(bytInput[lCounter] / k_bytShift2)]; bytWorkspace[lWorkspaceCounter + 2] = m_bytIndex[((bytInput[lCounter] & k_bytMask1) * k_bytShift4) + ((bytInput[lCounter + 1]) / k_bytShift4)]; bytWorkspace[lWorkspaceCounter + 4] = m_bytIndex[((bytInput[lCounter + 1] & k_bytMask2) * k_bytShift2) + ((bytInput[lCounter + 2]) / k_bytShift6)]; bytWorkspace[lWorkspaceCounter + 6] = m_bytIndex[bytInput[lCounter + 2] & k_bytMask3]; break; } lWorkspaceCounter = lWorkspaceCounter + 8; if (lWorkspaceCounter <= k_lMaxBytesPerLine) { functionReturnValue = Strings.Left(bytWorkspace.ToString(), Strings.InStr(1, bytWorkspace.ToString(), "") - 1); } else { bytCrLf[0] = 13; bytCrLf[1] = 0; bytCrLf[2] = 10; bytCrLf[3] = 0; bytResult = new byte[Information.UBound(bytWorkspace) + 1]; lpWorkSpace = VarPtr.VarPtr(bytWorkspace[Information.LBound(bytWorkspace)]); lpResult = VarPtr.VarPtr(bytResult[Information.LBound(bytResult)]); lpCrLf = VarPtr.VarPtr(bytCrLf[Information.LBound(bytCrLf)]); lCompleteLines = Conversion.Fix(lWorkspaceCounter / k_lMaxBytesPerLine); for (lLineCounter = 0; lLineCounter <= lCompleteLines; lLineCounter++) { CopyMemory(lpResult, lpWorkSpace, k_lMaxBytesPerLine); lpWorkSpace = lpWorkSpace + k_lMaxBytesPerLine; lpResult = lpResult + k_lMaxBytesPerLine; CopyMemory(lpResult, lpCrLf, 4L); lpResult = lpResult + 4L; } lBytesRemaining = lWorkspaceCounter - (lCompleteLines * k_lMaxBytesPerLine); if (lBytesRemaining > 0) { CopyMemory(lpResult, lpWorkSpace, lBytesRemaining); } functionReturnValue = Strings.Left(bytResult.ToString(), Strings.InStr(1, bytResult.ToString(), "") - 1); } return(functionReturnValue); ErrorHandler: bytResult = null; functionReturnValue = bytResult.ToString(); return(functionReturnValue); }