Apparent Performance Problems

Question:
Could you tell me why this takes a 150MHz Pentium with 64MB of RAM just to run fast enough to catch MCI time output?

 Private Sub Rply_Timer_Run()Dim ReplayTime As LongDim CTime As LongDim iTemp As LongDim iLong As LongDim j As IntegerReplayIndex = 0BaseData = 1000000000Do While Rply = True    ReplayTime = SaveData(ReplayIndex).CDTime_Data            iLong = frmCD2.MMControl1.Position        iTemp = iLong And &HFF00  &H100        CDTime = iTemp / 10        CTime = CStr(iTemp) / 10                frmCD2.lblCDTime.Caption = Format(CTime / 100, "0.000")        frmCD2.lblCDTime.Refresh                    If (ReplayTime >= CDTime And ReplayTime <= (CDTime + 10)) Then                  OutData = SaveData(ReplayIndex).In_Out_Data                ReplayIndex = ReplayIndex + 1                              OutputData = OutData - BaseData                          OutputDataA = (CLng(OutputData) 10000)          OutputDataB = (CLng(OutputData  1000)) - (CLng(OutputDataA * 1000))          OutputDataC = (CLng(OutputData)) -OutputDataA * 1000000) + CLng(OutputDataB * 1000))                                OutputDataA1 = CStr(OutputDataA)                OutputDataB1 = CStr(OutputDataB)                OutputDataC1 = CStr(OutputDataC)                            PCDioOutPortA1 (OutputDataA1)                PCDioOutPortB1 (OutputDataB1)                PCDioOutPortC1 (OutputDataC1)                 j = j + 1            Else                j = j + 1            End If                        If j = 100 Then                DoEvents                j = 0            End If    LoopEnd Sub

Any help would be very much appreciated. (Version: Version 4.0 Professional)

Answer:
The kernel of the solution is that sixteen is 2 to the fourth power. Each position in the hex string can be translated into four binary digits to create the final result. To do this, you need to create a lookup table of the following structure and data;

 cHex  cBin    0   0000    1   0001    2   0010    3   0011    4   0100    5   0101    6   0110    7   0111    8   1000    9   1001    A   1010    B   1011    C   1100    D   1101    E   1110    F   1111 

Now, you can take the hex result that comes from the BINARY keyword and decode it using the lookup table, stacking your result with the least significant bit on the right (backwards).

Share the Post:
Share on facebook
Share on twitter
Share on linkedin

Overview

Recent Articles: