Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: Visual Basic
Expertise: Beginner
Mar 2, 1997

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 Long
Dim CTime As Long
Dim iTemp As Long
Dim iLong As Long
Dim j As Integer
ReplayIndex = 0
BaseData = 1000000000

Do 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
    Loop
End 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).
DevX Pro
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date