home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 1_2002.ISO / Data / Zips / CODE_UPLOAD13588192001.psc / HexEditor / Basic.bas next >
Encoding:
BASIC Source File  |  2001-01-10  |  18.4 KB  |  581 lines

  1. Attribute VB_Name = "Basic"
  2. ' Name              : HexEditor
  3. ' Author            : Michael Werren, mike@werren.com
  4. ' Source            : Visual Basic 6 with SP4
  5. ' Start             : 21.12.2000
  6. ' Last Modification : 9.1.2001
  7.  
  8. Option Explicit
  9. Public Type FileInfo
  10.   Name As String
  11.   Size As Long
  12. End Type
  13.  
  14.  
  15. Public giHexSelPointer As Integer   ' Pointer to the Line in Listbox
  16. Public gbChangedFile As Boolean     ' Pointer to Change Code of File
  17. Public gbChangedField As Boolean    ' Pointer to change code of Fields
  18. Public giOpt00B7 As Integer         ' Pointer to the 00 or B7 Option
  19. Public gsOldValue As String         ' Store the old value of a Hex or Ascii field
  20. Public gtFileInfo As FileInfo       ' Store the information of open file
  21. Public glLastFound As Long
  22. Sub FindNext()
  23.   Dim lsSearchText As String
  24.   Dim liX As Integer
  25.   Dim lbHexSearch As Boolean
  26.   Dim lbMatchCase As Boolean
  27.   
  28.   Const cB7Value = 183
  29.   Const cFindLine = 3
  30.   
  31.   If frmFind.txtSearch.Text <> "" Then
  32.     If frmFind.optFillB7.Value = vbChecked Then
  33.       lsSearchText = ""
  34.       For liX = 1 To Len(frmFind.txtSearch.Text)
  35.         lsSearchText = lsSearchText + Mid(frmFind.txtSearch.Text, liX, 1) + Chr(cB7Value)
  36.       Next liX
  37.       ' Cut the lase B7 Value
  38.       lsSearchText = Left(lsSearchText, Len(lsSearchText) - 1)
  39.     Else
  40.       lsSearchText = frmFind.txtSearch.Text
  41.     End If
  42.     
  43.     ' Hex or ASCII Server
  44.     If frmFind.optSearchIn(0).Value = True Then
  45.       lbHexSearch = False
  46.     Else
  47.       lbHexSearch = True
  48.     End If
  49.     
  50.     If frmFind.optMatchCase.Value = vbChecked Then
  51.       lbMatchCase = True
  52.     Else
  53.       lbMatchCase = False
  54.     End If
  55.     
  56.     ' Set the Start
  57.     If frmMain.LstHexView.ListItems.Count >= frmMain.LstHexView.SelectedItem.Index + 1 Then
  58.       glLastFound = frmMain.LstHexView.SelectedItem.Index + 1
  59.       
  60.       ' Start the search
  61.       If frmFind.optSearchTyp(0).Value = True Then
  62.         ' Simple Search
  63.         glLastFound = SearchText(glLastFound, lsSearchText, lbHexSearch, lbMatchCase, 1)
  64.         If glLastFound = -1 Then
  65.           ' Notfound
  66.           glLastFound = frmMain.LstHexView.SelectedItem.Index
  67.         Else
  68.           ' Found it
  69.           With frmMain.LstHexView.ListItems.Item(glLastFound)
  70.             .EnsureVisible
  71.             .Selected = True
  72.           End With
  73.           glLastFound = glLastFound + 1
  74.         End If
  75.       Else
  76.         ' Extended Search
  77.         glLastFound = SearchText(glLastFound, lsSearchText, lbHexSearch, lbMatchCase, cFindLine)
  78.         If glLastFound = -1 Then
  79.           ' Notfound
  80.           glLastFound = frmMain.LstHexView.SelectedItem.Index
  81.         Else
  82.           ' Found it
  83.           With frmMain.LstHexView.ListItems.Item(glLastFound)
  84.             .EnsureVisible
  85.             .Selected = True
  86.           End With
  87.           glLastFound = glLastFound + 1
  88.           frmFind.Hide
  89.         End If
  90.       End If
  91.     End If
  92.   End If
  93.  
  94. End Sub
  95.  
  96. Function SearchIndex(SearchString) As Long
  97.   Dim itmfound As ListItem
  98.   Set itmfound = frmMain.LstHexView.FindItem(SearchString, lvwText, , lvwPartial)
  99.  
  100.   itmfound.EnsureVisible          ' Scroll ListView to show found ListItem.
  101.   itmfound.Selected = True        ' Select the ListItem.
  102.   SearchIndex = frmMain.LstHexView.SelectedItem.Index
  103.   Set itmfound = Nothing
  104. End Function
  105.  
  106. Sub SetIndex(SearchString)
  107.   Dim itmfound As ListItem
  108.   Set itmfound = frmMain.LstHexView.FindItem(SearchString, lvwText, , lvwPartial)
  109.  
  110.   itmfound.EnsureVisible          ' Scroll ListView to show found ListItem.
  111.   itmfound.Selected = True        ' Select the ListItem.
  112.   frmMain.LstHexView.SetFocus     ' Set the focus to the object
  113.   Set itmfound = Nothing
  114. End Sub
  115.  
  116. Function SearchText(StartLine As Long, SearchString As String, HexMode As Boolean, MatchCase As Boolean, TotSearch As Integer) As Long
  117.   Dim llLineCounter As Long
  118.   Dim llMaxCounter As Long
  119.   Dim lbFound As Boolean
  120.   Dim lsOrgText As String
  121.   Dim liMaxLine As Integer
  122.   
  123.   llMaxCounter = frmMain.LstHexView.ListItems.Count
  124.   llLineCounter = StartLine
  125.   lbFound = False
  126.   
  127.   While (llLineCounter <= llMaxCounter) And Not lbFound
  128.    
  129.     If HexMode Then
  130.       ' Search in Hexline, Subitems(1)
  131.       If TotSearch = 1 Then
  132.         lsOrgText = frmMain.LstHexView.ListItems.Item(llLineCounter).SubItems(1)
  133.       Else
  134.         If llLineCounter + TotSearch > frmMain.LstHexView.ListItems.Count Then
  135.           TotSearch = frmMain.LstHexView.ListItems.Count - frmMain.LstHexView.ListItems.Count - 1
  136.         End If
  137.         lsOrgText = ""
  138.         For liMaxLine = llLineCounter To llLineCounter + TotSearch
  139.           lsOrgText = lsOrgText + frmMain.LstHexView.ListItems.Item(liMaxLine).SubItems(1) + "."
  140.         Next liMaxLine
  141.       End If
  142.       lsOrgText = UCase(lsOrgText)
  143.       SearchString = UCase(SearchString)
  144.       ' Replace the doublespace with .
  145.       While InStr(lsOrgText, "  ") <> 0
  146.         lsOrgText = Trim(Mid(lsOrgText, 1, InStr(lsOrgText, " ") - 1)) + "." + _
  147.                     Trim(Mid(lsOrgText, InStr(lsOrgText, " "), Len(lsOrgText)))
  148.       Wend
  149.       If InStr(lsOrgText, SearchString) <> 0 Then
  150.         ' Found it
  151.         SearchText = llLineCounter
  152.         ' Found it in expanded mode
  153.         If TotSearch <> 1 Then
  154.           SearchText = llLineCounter + InStr(lsOrgText, SearchString) \ 48
  155.         End If
  156.         lbFound = True
  157.       End If
  158.     Else
  159.       ' Search in ASCII, Subitems(2)
  160.       If TotSearch = 1 Then
  161.         lsOrgText = frmMain.LstHexView.ListItems.Item(llLineCounter).SubItems(2)
  162.       Else
  163.         If llLineCounter + TotSearch > frmMain.LstHexView.ListItems.Count Then
  164.           TotSearch = frmMain.LstHexView.ListItems.Count - frmMain.LstHexView.ListItems.Count - 1
  165.         End If
  166.         lsOrgText = ""
  167.         For liMaxLine = llLineCounter To llLineCounter + TotSearch
  168.           lsOrgText = lsOrgText + frmMain.LstHexView.ListItems.Item(liMaxLine).SubItems(2)
  169.         Next liMaxLine
  170.       End If
  171.       If MatchCase Then
  172.         lsOrgText = UCase(lsOrgText)
  173.         SearchString = UCase(SearchString)
  174.       End If
  175.       If InStr(lsOrgText, SearchString) <> 0 Then
  176.         ' Found it
  177.         SearchText = llLineCounter
  178.         ' Found it in expanded mode
  179.         If TotSearch <> 1 Then
  180.           SearchText = llLineCounter + InStr(lsOrgText, SearchString) \ 16
  181.         End If
  182.         lbFound = True
  183.       End If
  184.     End If
  185.     llLineCounter = llLineCounter + 1
  186.   Wend
  187.  
  188.   If Not lbFound Then
  189.     MsgBox "Can not find the String", vbInformation + vbOKOnly, "Search for: " + SearchString
  190.     SearchText = -1
  191.   End If
  192. End Function
  193.  
  194. Sub DispMsg(Text As String)
  195.   frmMain.StatusBar.Panels(1).Text = Text
  196. End Sub
  197.  
  198. Function SpaceFill(Counter As Integer, Char As String) As String
  199.   SpaceFill = String(Counter, Char)
  200. End Function
  201.  
  202. Sub AddHexLine(HexIndex As String, HexText As String, AsciiText As String)
  203.   Dim itmX As ListItem
  204.   
  205.   Set itmX = frmMain.LstHexView.ListItems.Add
  206.   itmX.Text = HexIndex
  207.   itmX.SubItems(1) = HexText
  208.   itmX.SubItems(2) = AsciiText
  209. End Sub
  210.  
  211. Function SaveTranslate() As String
  212.   Dim lsTextLine As String
  213.   Dim lsHexLine As String
  214.   Dim lsHexCode As String
  215.   Dim lsTextSave As String
  216.   Dim liX As Integer
  217.   Dim llX As Long
  218.   Dim llY As Long
  219.   Dim llMax As Long
  220.   Dim liprocentold As Integer
  221.   Dim liprocent As Integer
  222.   
  223.   Const cB7Value = 183
  224.   
  225.   Screen.MousePointer = vbHourglass
  226.   llMax = frmMain.LstHexView.ListItems.Count
  227.   lsTextSave = String(gtFileInfo.Size, Chr(0))
  228.   llY = 1
  229.   
  230.   For llX = 1 To llMax
  231.     ' Replace the doublespace with .
  232.     lsTextLine = frmMain.LstHexView.ListItems.Item(llX).SubItems(1)
  233.     If InStr(lsTextLine, "  ") <> 0 Then
  234.       lsTextLine = Trim(Mid(lsTextLine, 1, InStr(lsTextLine, " ") - 1)) + "." + _
  235.                    Trim(Mid(lsTextLine, InStr(lsTextLine, " "), Len(lsTextLine)))
  236.     End If
  237.     
  238.     lsHexLine = ""
  239.     While InStr(lsTextLine, ".") <> 0
  240.       lsHexCode = Mid(lsTextLine, 1, InStr(lsTextLine, ".") - 1)
  241.       lsHexLine = lsHexLine + Chr(Hex2Dec(lsHexCode))
  242.       lsTextLine = Mid(lsTextLine, InStr(lsTextLine, ".") + 1, Len(lsTextLine))
  243.     Wend
  244.     ' do not forget the last byte
  245.     lsHexCode = Trim(lsTextLine)
  246.     lsHexLine = lsHexLine + Chr(Hex2Dec(lsHexCode))
  247.         
  248.     For liX = 1 To Len(lsHexLine)
  249.       Mid(lsTextSave, llY, 1) = Mid(lsHexLine, liX, 1)
  250.       llY = llY + 1
  251.     Next liX
  252.     
  253.     liprocentold = liprocent
  254.     liprocent = llX * 100 \ llMax
  255.     If liprocent <> liprocentold Then
  256.       frmMain.ProBar.Value = liprocent
  257.     End If
  258.   Next llX
  259.   
  260.   SaveTranslate = lsTextSave
  261.   frmMain.ProBar.Value = 0
  262.   Screen.MousePointer = vbDefault
  263. End Function
  264.  
  265. Sub HexTranslate(TransText As String)
  266.   Dim lsTransText As String
  267.   Dim lsZeichen As String
  268.   Dim lsOrgText As String
  269.   Dim lsHexCode As String
  270.   Dim lsHexLine As String
  271.   Dim lsHexIndex As String
  272.   Dim liHexIndex As Long
  273.   Dim liZeichen As Integer
  274.   Dim liPointer As Integer
  275.   Dim liX As Long
  276.   Dim liprocent As Integer
  277.   Dim liprocentold As Integer
  278.  
  279.   lsTransText = TransText
  280.   
  281.   ' Start Translation
  282.   Screen.MousePointer = vbHourglass
  283.   DispMsg "Translate the file, please wait..."
  284.   liPointer = 1
  285.   liHexIndex = 0
  286.  
  287.   For liX = 1 To Len(lsTransText)
  288.     If liPointer <= 16 Then
  289.       liPointer = liPointer + 1
  290.       lsZeichen = Mid(lsTransText, liX, 1)
  291.       liZeichen = Asc(lsZeichen)
  292.       lsHexCode = Hex(liZeichen)
  293.       
  294.       If Len(lsHexCode) < 2 Then
  295.         lsHexCode = "0" + lsHexCode
  296.       End If
  297.       If liPointer <= 16 Then
  298.         If liPointer <> 9 Then
  299.           lsHexLine = lsHexLine + lsHexCode + "."
  300.         Else
  301.           lsHexLine = lsHexLine + lsHexCode + "  "
  302.         End If
  303.       Else
  304.         lsHexLine = lsHexLine + lsHexCode
  305.         ' Enum the translation in procent
  306.         liprocentold = liprocent
  307.         liprocent = liX * 100 \ Len(lsTransText)
  308.         If liprocent <> liprocentold Then
  309.           frmMain.ProBar.Value = liprocent
  310.         End If
  311.       End If
  312.       If Asc(lsZeichen) = 0 Then
  313.         lsOrgText = lsOrgText + "╖"
  314.       Else
  315.         lsOrgText = lsOrgText + lsZeichen
  316.       End If
  317.       
  318.     Else
  319.       lsHexIndex = SpaceFill(8 - Len(Hex(liHexIndex)), "0") + Hex(liHexIndex)
  320.       AddHexLine lsHexIndex, lsHexLine, lsOrgText
  321.       liPointer = 1
  322.       liHexIndex = liHexIndex + 16
  323.       lsHexLine = ""
  324.       lsOrgText = ""
  325.       liX = liX - 1
  326.     End If
  327.   Next liX
  328.   
  329.   ' Is ther still a recorde to add ?
  330.   If lsHexLine <> "" Then
  331.     If Mid(lsHexLine, Len(lsHexLine), 1) = "." Then
  332.       lsHexLine = Mid(lsHexLine, 1, Len(lsHexLine) - 1)
  333.     End If
  334.     lsHexIndex = SpaceFill(8 - Len(Hex(liHexIndex)), "0") + Hex(liHexIndex)
  335.     AddHexLine lsHexIndex, lsHexLine, lsOrgText
  336.   End If
  337.   DispMsg "View mode"
  338.   frmMain.ProBar.Value = 0
  339.   Screen.MousePointer = vbDefault
  340. End Sub
  341.  
  342. Function Hex2Dec(HexValue As String) As Integer
  343.   Dim lsChar As String
  344.   Dim liHBit As Integer
  345.   Dim liLBit As Integer
  346.   
  347.   ' H Byte
  348.   lsChar = Mid(HexValue, 1, 1)
  349.   Select Case Asc(lsChar)
  350.     Case 48 To 57 '0..9
  351.       liHBit = Val(lsChar) * 16
  352.     Case 65 To 70 'A..F
  353.       liHBit = (((65 - Asc(lsChar)) * -1) + 10) * 16
  354.   End Select
  355.     
  356.   ' L Byte
  357.   lsChar = Mid(HexValue, 2, 1)
  358.   Select Case Asc(lsChar)
  359.     Case 48 To 57 '0..9
  360.       liLBit = Val(lsChar)
  361.     Case 65 To 70 'A..F
  362.       liLBit = (65 - Asc(lsChar)) * -1 + 10
  363.   End Select
  364.   
  365.   Hex2Dec = liHBit + liLBit
  366. End Function
  367.  
  368. Sub LoadHexBlock(LineIndex As Integer, MaxLineIndex As Integer)
  369.   Dim liX As Integer
  370.   Dim liY As Integer
  371.   Dim lsText As String
  372.   Dim liScrollValue As Integer
  373.   Dim liMaxRecord As Integer
  374.   Dim liHexSourcePointer As Integer
  375.   Dim lsHexIndex As String
  376.   Dim lsHexCode As String
  377.   Dim lsAsciiCode As String
  378.     
  379.   Const cMaxRecord = 19 ' 0-19 = 20 Records
  380.   
  381.   ' Reset the HexFields
  382.   For liX = 0 To 319
  383.     With frmMain.txtHex(liX)
  384.       .Text = ""
  385.       .Enabled = False
  386.       .BackColor = &H8000000F
  387.     End With
  388.   Next liX
  389.   
  390.   ' Reset the AsciiFields
  391.   For liX = 0 To cMaxRecord
  392.     With frmMain.txtAscii(liX)
  393.       .Text = ""
  394.       .Enabled = False
  395.       .BackColor = &H8000000F
  396.     End With
  397.   Next liX
  398.   
  399.   ' Load Data records
  400.   If LineIndex < 1 Then LineIndex = 1
  401.   giHexSelPointer = LineIndex
  402.   liScrollValue = LineIndex
  403.   If LineIndex <= cMaxRecord Then
  404.     LineIndex = 1
  405.     liScrollValue = 1
  406.   End If
  407.   
  408.   ' Are the other Hex records ?
  409.     If MaxLineIndex >= giHexSelPointer + cMaxRecord Then
  410.       liMaxRecord = cMaxRecord
  411.     Else
  412.       If MaxLineIndex <= cMaxRecord Then
  413.         giHexSelPointer = 1
  414.         liMaxRecord = MaxLineIndex - 1
  415.       Else
  416.         giHexSelPointer = MaxLineIndex - cMaxRecord
  417.         liMaxRecord = cMaxRecord
  418.       End If
  419.     End If
  420.   
  421.   For liX = 0 To liMaxRecord
  422.     liHexSourcePointer = giHexSelPointer + liX
  423.     lsHexIndex = frmMain.LstHexView.ListItems.Item(liHexSourcePointer).Text
  424.     lsHexCode = frmMain.LstHexView.ListItems.Item(liHexSourcePointer).SubItems(1)
  425.     lsAsciiCode = frmMain.LstHexView.ListItems.Item(liHexSourcePointer).SubItems(2)
  426.     
  427.     ' Replace the doublespace with .
  428.     If InStr(lsHexCode, "  ") <> 0 Then
  429.       lsHexCode = Trim(Mid(lsHexCode, 1, InStr(lsHexCode, " ") - 1)) + "." + _
  430.                   Trim(Mid(lsHexCode, InStr(lsHexCode, " "), Len(lsHexCode)))
  431.     End If
  432.     ' Split the Hexcode an add to the mask
  433.     liY = -1
  434.     Do
  435.       liY = liY + 1
  436.       If InStr(lsHexCode, ".") <> 0 Then
  437.         lsText = Trim(Mid(lsHexCode, 1, InStr(lsHexCode, ".") - 1))
  438.         lsHexCode = Trim(Mid(lsHexCode, InStr(lsHexCode, ".") + 1, Len(lsHexCode)))
  439.       Else
  440.         lsText = Trim(lsHexCode)
  441.         lsHexCode = ""
  442.       End If
  443.       frmMain.txtHex(liX * 16 + liY).Text = lsText
  444.       frmMain.txtHex(liX * 16 + liY).ForeColor = &H80000008
  445.       frmMain.txtHex(liX * 16 + liY).BackColor = &H80000005
  446.       frmMain.txtHex(liX * 16 + liY).Enabled = True
  447.     Loop Until Len(lsHexCode) = 0
  448.     
  449.     ' Add the Index
  450.     With frmMain.txtHexIndex(liX)
  451.       .Text = lsHexIndex
  452.       .ForeColor = &H80000008
  453.     End With
  454.     ' Add the Ascii
  455.     If Len(lsAsciiCode) < 16 Then
  456.       lsAsciiCode = lsAsciiCode + SpaceFill(16 - Len(lsAsciiCode), " ")
  457.     End If
  458.     With frmMain.txtAscii(liX)
  459.       .Text = lsAsciiCode
  460.       .ForeColor = &H80000008
  461.       .BackColor = &H80000005
  462.       .Enabled = True
  463.     End With
  464.   Next liX
  465.   
  466.   ' Show mode
  467.   DispMsg "Editor mode"
  468.   ' initialized the VScrollBar max
  469.   liX = frmMain.LstHexView.ListItems.Count - cMaxRecord
  470.   If liX < 1 Then liX = 1
  471.   frmMain.VScrollEditor.Max = liX
  472.   frmMain.VScrollEditor.Value = giHexSelPointer
  473.   ' set focus to  the first object
  474.   If frmMain.FrameEditor.Visible Then
  475.     frmMain.txtHex(0).SetFocus
  476.   End If
  477. End Sub
  478.  
  479. Sub SetMenu(MenuMode As String)
  480.   If UCase(MenuMode) = "VIEWER" Then
  481.     frmMain.mnuFileLoad.Enabled = True
  482.     frmMain.Toolbar1.Buttons(1).Enabled = True
  483.     frmMain.Toolbar1.Buttons(1).ToolTipText = "Load a file"
  484.     frmMain.mnuFileSave.Enabled = True
  485.     frmMain.Toolbar1.Buttons(2).Enabled = True
  486.     frmMain.Toolbar1.Buttons(2).ToolTipText = "Save a file"
  487.     frmMain.mnuFileOptions.Enabled = True
  488.     frmMain.mnuFileInfo.Enabled = True
  489.     frmMain.mnuFileExit.Enabled = True
  490.     frmMain.Toolbar1.Buttons(12).Enabled = True
  491.     frmMain.Toolbar1.Buttons(12).ToolTipText = "Exit the program"
  492.     
  493.     frmMain.mnuViewerFind.Enabled = True
  494.     frmMain.Toolbar1.Buttons(8).Enabled = True
  495.     frmMain.Toolbar1.Buttons(8).ToolTipText = "Find..."
  496.     If frmFind.txtSearch.Text <> "" Then
  497.       frmMain.mnuViewerNext.Enabled = True
  498.     Else
  499.       frmMain.mnuViewerNext.Enabled = False
  500.     End If
  501.     
  502.     frmMain.mnuEditorEdit.Enabled = True
  503.     frmMain.Toolbar1.Buttons(5).ToolTipText = "Editor mode"
  504.     frmMain.mnuEditorReload.Enabled = False
  505.     frmMain.Toolbar1.Buttons(6).Enabled = False
  506.     frmMain.Toolbar1.Buttons(6).ToolTipText = "This option is turned off in this mode"
  507.     
  508.   ElseIf UCase(MenuMode) = "EDITOR" Then
  509.     frmMain.mnuFileLoad.Enabled = False
  510.     frmMain.Toolbar1.Buttons(1).Enabled = False
  511.     frmMain.Toolbar1.Buttons(1).ToolTipText = "This option is turned off in this mode"
  512.     frmMain.mnuFileSave.Enabled = False
  513.     frmMain.Toolbar1.Buttons(2).Enabled = False
  514.     frmMain.Toolbar1.Buttons(2).ToolTipText = "This option is turned off in this mode"
  515.     frmMain.mnuFileOptions.Enabled = True
  516.     frmMain.mnuFileInfo.Enabled = True
  517.     frmMain.mnuFileExit.Enabled = False
  518.     frmMain.Toolbar1.Buttons(12).Enabled = False
  519.     frmMain.Toolbar1.Buttons(12).ToolTipText = "This option is turned off in this mode"
  520.  
  521.     frmMain.mnuViewerFind.Enabled = False
  522.     frmMain.Toolbar1.Buttons(8).Enabled = False
  523.     frmMain.Toolbar1.Buttons(8).ToolTipText = "This option is turned off in this mode"
  524.     frmMain.mnuViewerNext.Enabled = False
  525.  
  526.     frmMain.mnuEditorEdit.Enabled = True
  527.     frmMain.Toolbar1.Buttons(5).ToolTipText = "Viewer mode"
  528.     frmMain.mnuEditorReload.Enabled = True
  529.     frmMain.Toolbar1.Buttons(6).Enabled = True
  530.     frmMain.Toolbar1.Buttons(6).ToolTipText = "Reload the Frame"
  531.   End If
  532. End Sub
  533.  
  534. Sub SaveBlock(StartPointer As Long)
  535.   Dim llPosition As Long
  536.   Dim liX As Integer
  537.   Dim liY As Integer
  538.   Dim liPosPointer As Integer
  539.   Dim lsHexIndex As String
  540.   Dim lsHex As String
  541.   Dim lsAscii As String
  542.   
  543.   Const cMaxRecord = 19 ' 0-19 = 20 Records
  544.   ' Set the Blockstate
  545.   frmMain.StatusBar.Panels(3).Picture = frmMain.ImgRed.Picture
  546.   
  547.   For liX = 0 To cMaxRecord
  548.     llPosition = StartPointer + liX
  549.     ' Get the Index
  550.     lsHexIndex = frmMain.txtHexIndex(liX).Text
  551.     ' Get the Hex Values and build the String
  552.     lsHex = ""
  553.     For liY = 0 To 15
  554.       liPosPointer = liX * 16 + liY
  555.       If frmMain.txtHex(liPosPointer).Enabled Then
  556.         If liY = 7 Then
  557.           lsHex = lsHex + frmMain.txtHex(liPosPointer).Text + "  "
  558.         Else
  559.           If liY <> 15 Then
  560.             lsHex = lsHex + frmMain.txtHex(liPosPointer).Text + "."
  561.           Else
  562.             lsHex = lsHex + frmMain.txtHex(liPosPointer).Text
  563.           End If
  564.         End If
  565.       End If
  566.     Next liY
  567.     ' Get the Ascii
  568.     lsAscii = frmMain.txtAscii(liX).Text
  569.     If frmMain.txtAscii(liX).Enabled Then
  570.       ' Save the Hex line
  571.       If Mid(lsHex, Len(lsHex), 1) <> "." Then
  572.         frmMain.LstHexView.ListItems(llPosition).SubItems(1) = lsHex
  573.       Else
  574.         frmMain.LstHexView.ListItems(llPosition).SubItems(1) = Left(lsHex, Len(lsHex) - 1)
  575.       End If
  576.       ' Save the Ascii line
  577.       frmMain.LstHexView.ListItems(llPosition).SubItems(2) = lsAscii
  578.     End If
  579.   Next liX
  580. End Sub
  581.