Avatar billede christian_h Nybegynder
07. juni 2003 - 11:09 Der er 8 kommentarer og
1 løsning

Åbne en Intel hex fil ind i et Array og vise det i MSFelxgrid

Hej Alle.

Jeg vil gerne vide hvordan man åbner en Intel Hex fil ind i et Array og herefter viser det i et MSFlexgrid, jeg ved aldrig hvor stor filen er, så det skal være dynamsik, jeg ved dog hvordan første og sidste linie på filen ser ud uanset størrelsen.

Ydre mere skal det være sådan at det indlæses i Array/flexgrid i dette format. Første og sidste linie skal "bare" indlæses i deres helhed i felt 1

Felt 1    2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18
:10000000 05 C0 18 95 18 95 18 95 18 95 BD C3 CF ED CD BF AF

Nedenstående er en hex fil som den kunne se ud.

Mvh.

Christian_h

:020000020000FC
:1000000005C01895189518951895BDC3CFEDCDBFAF
:100010002C97EDEFE7BBEFEBE8BBEFE7E1BBEEEFD3
:10002000E2BBEBECF3EFFDBDECBDE9B7E068E9BF87
:100030007894EEB5E460EEBDEBE0F6E0E0938C0082
:10004000F0938D00EBE0F6E0E0938E00F0938F00EC
:10005000EBE0F6E0E0939000F0939100EBE0F6E047
:10006000E0939200F0939300EBE0F6E0E0939400CD
:10007000F0939500EBE0F6E0E0939600F0939700A4
:10008000EBE0F6E0E0939800F0939900EBE0F6E007
:10009000E0939A00F0939B00EBE0F6E0E0939C0085
:1000A000F0939D00E89430F8E89431F8E89432F841
:1000B000E89433F8E89434F8E89435F8E89436F89E
:1000C000E89437F8E89440F808D01BD028D183D1C1
:1000D000DED139D298D2F7D2F7CFE0E0F0E0E0936A
:1000E0008A00F0938B00E0918A00F0918B00B19B25
:1000F000FECF3196B199FDCFE0938A00F0938B004B
:10010000089540FC03C053D0AED003C040FE01C0F0
:1001100001D0089540FE0FC080918A0090918B001D
:10012000E0919C00F0919D0031968E179F0708F496
:1001300002C004D002C0909A919A08958091600004
:1001400090916100E0916400F09165008E1B9F0B1F
:10015000E82FF92FE0937400F0937500E09174009C
:10016000E0938300919B12C0909880918300E5E01A
:10017000E3958E1708F409C09198E0916000F09122
:100180006100E0936400F093650010C080918300EB
:10019000E1E0E3958E1708F409C0919AE0916000C0
:1001A000F0916100E0936400F0936500089530FEE3
:1001B0000FC080918A0090918B00E0918C00F091AB
:1001C0008D0031968E179F0708F402C014D012C01C
:1001D00030FC0FC080918A0090918B00E0918C00E0
:1001E000F0918D0031968E179F0708F402C0909809
:1001F00001C0909A08958091600090916100E09113
:100200006200F09163008E1B9F0BE82FF92FE093A3
:100210007200F0937300E0917200E0938200909B73
:1002200011C080918200E1E0E3958E1708F409C0C7
:100230009098E0916000F0916100E0936200F0938B
:10024000630010C080918200E1E0E3958E1708F40E
:1002500009C0909AE0916000F0916100E093620023
:10026000F0936300089531FE0FC080918A00909151
:100270008B00E0918E00F0918F0031968E179F07D2
:1002800008F402C014D012C031FC0FC080918A0063
:1002900090918B00E0918E00F0918F0031968E1737
:1002A0009F0708F402C0919801C0919A0895809127
:1002B000600090916100E0916400F09165008E1BF8
:1002C0009F0BE82FF92FE0937400F0937500E091F5
:1002D0007400E0938300919B11C080918300E1E062
:1002E000E3958E1708F409C09198E0916000F091B1
:1002F0006100E0936400F093650010C0809183007A
:10030000E1E0E3958E1708F409C0919AE09160004E
:10031000F0916100E0936400F0936500089532FE6F
:100320000FC080918A0090918B00E0919000F09135
:10033000910031968E179F0708F402C014D012C0A6
:1003400032FC0FC080918A0090918B00E091900068
:10035000F091910031968E179F0708F402C0929891
:1003600001C0929A08958091600090916100E0919F
:100370006600F09167008E1B9F0BE82FF92FE0932A
:100380007600F0937700E0917600E0938400929BF2
:1003900011C080918400E1E0E3958E1708F409C054
:1003A0009298E0916000F0916100E0936600F09314
:1003B000670010C080918400E1E0E3958E1708F497
:1003C00009C0929AE0916000F0916100E0936600AC
:1003D000F0936700089533FE0FC080918A009091DA
:1003E0008B00E0919200F091930031968E179F0759
:1003F00008F402C014D012C033FC0FC080918A00F0
:1004000090918B00E0919200F091930031968E17BD
:100410009F0708F402C0939801C0939A08958091B1
:10042000600090916100E0916800F09169008E1B7E
:100430009F0BE82FF92FE0937800F0937900E0917B
:100440007800E0938500939B11C080918500E1E0E6
:10045000E3958E1708F409C09398E0916000F0913D
:100460006100E0936800F093690010C080918500FE
:10047000E1E0E3958E1708F409C0939AE0916000DB
:10048000F0916100E0936800F0936900089534FEF4
:100490000FC080918A0090918B00E0919400F091C0
:1004A000950031968E179F0708F402C014D012C031
:1004B00034FC0FC080918A0090918B00E0919400F1
:1004C000F091950031968E179F0708F402C094981A
:1004D00001C0949A08958091600090916100E0912C
:1004E0006A00F0916B008E1B9F0BE82FF92FE093B1
:1004F0007A00F0937B00E0917A00E0938600949B71
:1005000011C080918600E1E0E3958E1708F409C0E0
:100510009498E0916000F0916100E0936A00F0939C
:100520006B0010C080918600E1E0E3958E1708F41F
:1005300009C0949AE0916000F0916100E0936A0034
:10054000F0936B00089535FE0FC080918A00909162
:100550008B00E0919600F091970031968E179F07DF
:1005600008F402C014D012C035FC0FC080918A007C
:1005700090918B00E0919600F091970031968E1744
:100580009F0708F402C0959801C0959A089580913C
:10059000600090916100E0916C00F0916D008E1B05
:1005A0009F0BE82FF92FE0937C00F0937D00E09102
:1005B0007C00E0938700959B15C080917C00909112
:1005C0007D00E1E0F0E031968E179F0708F409C046
:1005D0009598E0916000F0916100E0936C00F093D9
:1005E0006D0010C080918700E1E0E3958E1708F45C
:1005F00009C0959AE0916000F0916100E0936C0071
:10060000F0936D00089536FE0FC080918A0090919E
:100610008B00E0919800F091990031968E179F071A
:1006200008F402C014D012C036FC0FC080918A00BA
:1006300090918B00E0919800F091990031968E177F
:100640009F0708F402C0969801C0969A0895809179
:10065000600090916100E0916E00F0916F008E1B40
:100660009F0BE82FF92FE0937E00F0937F00E0913D
:100670007E00E0938800969B15C080917E0090914B
:100680007F00E1E0F0E031968E179F0708F409C083
:100690009698E0916000F0916100E0936E00F09315
:1006A0006F0010C080918800E1E0E3958E1708F498
:1006B00009C0969AE0916000F0916100E0936E00AD
:1006C000F0936F00089537FE0FC080918A009091DB
:1006D0008B00E0919A00F0919B0031968E179F0756
:1006E00008F402C014D012C037FC0FC080918A00F9
:1006F00090918B00E0919A00F0919B0031968E17BB
:100700009F0708F402C0C09801C0C09A0895809164
:10071000600090916100E0917000F09171008E1B7B
:100720009F0BE82FF92FE0938000F0938100E09178
:100730008000E0938900C09B15C08091800090915B
:100740008100E1E0F0E031968E179F0708F409C0C0
:10075000C098E0916000F0916100E0937000F09328
:10076000710010C080918900E1E0E3958E1708F4D4
:1007700009C0C09AE0916000F0916100E0937000C0
:10078000F093710008955FB6EF93FF93EBECF3EFF6
:10079000FDBDECBDE0916000F09161003196E09309
:0E07A0006000F0936100FF91EF915FBE18952DFFFF
:00000001FF
Avatar billede christian_h Nybegynder
07. juni 2003 - 11:25 #1
Hej igen

Skriver lige felt opdelingen på en anden måde, da det bliver vist forkert, det er vandret, men jeg skriver lige hvad hører til hvad lodret.

  Felt 1    2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18
:10000000 05 C0 18 95 18 95 18 95 18 95 BD C3 CF ED CD BF AF

Linie 2

Felt 1 = :10000000
Felt 2 = 05
Felt 3 = C0
Felt 4 = 18
Felt 5 = 95
Felt 6 = 18
Felt 7 = 95
Felt 8 = 18
Felt 9 = 95
Felt 10 = 18
Felt 11 = 95
Felt 12 = BD
Felt 13 = C3
Felt 14 = CD
Felt 15 = ED
Felt 16 = CD
Felt 17 = BF
Felt 18 = AF

Her er et billede af hvordan det kunne se ud, på billedet vises dog ikke :10 i starten af hver linie, og de sidste XX i slutningen af hver linie, men de skal også vises.

<img src="http://www.twin-rotor.dk/flexgrid.jpg">
Avatar billede sjh Nybegynder
07. juni 2003 - 21:38 #2
Prøv om det ikke vriker

'--------------------------- Form1 ---------------------------
Option Explicit

Private Sub Form_Load()
Dim i As Integer
  With MSFlexGrid1
      .Clear
      .Cols = 18
      .Rows = 1
      .SelectionMode = flexSelectionByRow
      .ColWidth(0) = 900
        For i = 1 To (.Cols - 1)
          .ColWidth(i) = 300
        Next i
  End With
  Call LoadHEX("texthex.txt") '<-- Den file du har dine hex koder i..
 
End Sub

Public Sub LoadHEX(ByVal strPath As String)
Dim i As Long
Dim j As Long
Dim intFree As Integer
Dim NextLine As String
Dim strLine As String
Dim arrLine() As String
intFree = FreeFile

  Open strPath For Input As #intFree
    Do Until EOF(intFree)
      ReDim Preserve arrLine(i) As String
      Line Input #intFree, NextLine
      arrLine(i) = NextLine
      i = i + 1
    Loop
  Close #intFree

  With MSFlexGrid1
      .Clear
        .Rows = i
        For j = 0 To (i - 1)
          strLine = arrLine(j)
          .TextMatrix(j, 0) = Mid(strLine, 1, 9)
          .TextMatrix(j, 1) = Mid(strLine, 10, 2)
          .TextMatrix(j, 2) = Mid(strLine, 12, 2)
          .TextMatrix(j, 3) = Mid(strLine, 14, 2)
          .TextMatrix(j, 4) = Mid(strLine, 16, 2)
          .TextMatrix(j, 5) = Mid(strLine, 18, 2)
          .TextMatrix(j, 6) = Mid(strLine, 20, 2)
          .TextMatrix(j, 7) = Mid(strLine, 22, 2)
          .TextMatrix(j, 8) = Mid(strLine, 24, 2)
          .TextMatrix(j, 9) = Mid(strLine, 26, 2)
          .TextMatrix(j, 10) = Mid(strLine, 28, 2)
          .TextMatrix(j, 11) = Mid(strLine, 30, 2)
          .TextMatrix(j, 12) = Mid(strLine, 32, 2)
          .TextMatrix(j, 13) = Mid(strLine, 34, 2)
          .TextMatrix(j, 14) = Mid(strLine, 36, 2)
          .TextMatrix(j, 15) = Mid(strLine, 38, 2)
          .TextMatrix(j, 16) = Mid(strLine, 40, 2)
          .TextMatrix(j, 17) = Mid(strLine, 42, 2)
        Next j
  End With
End Sub
'--------------------------- Form1 ---------------------------
Avatar billede christian_h Nybegynder
08. juni 2003 - 12:01 #3
Hej Sjh.

Det virker KANON, men kan man lave så hele Første og sidste linie ikke bliver vist i flexgridden ??.
Jeg har et ? mere, jeg vil gerne oprette en ny tråd med flere point hvis nødvendig.
Hvordan gemmer man så hele flexgridden i en ny hex fil ??. (common dialog skal jeg nok selv sætte ind !!.

Mvh.

Christian_h
Avatar billede sjh Nybegynder
08. juni 2003 - 15:00 #4
så skulle det virke...

'--------------------------- Form1 ---------------------------
Option Explicit

Private Sub Command1_Click()
  Call SaveHEX("texthex_ny.txt") '<-- Den file du skal have dine nye hex koder i..
End Sub

Private Sub Form_Load()
Dim i As Integer
  With MSFlexGrid1
      .Clear
      .Cols = 0
      .Rows = 0
      .SelectionMode = flexSelectionByRow
      .Cols = 18
      .ColWidth(0) = 900
        For i = 1 To (.Cols - 1)
          .ColWidth(i) = 300
        Next i
  End With
  Call LoadHEX("texthex.txt") '<-- Den file du har dine hex koder i..
End Sub

Public Sub SaveHEX(ByVal strPath As String)
Dim i As Long
Dim j As Long
Dim strOut As String
Dim intFree As Integer

  With MSFlexGrid1
        For i = 0 To (.Rows - 1)
          For j = 0 To (.Cols - 1)
            strOut = strOut & .TextMatrix(i, j)
          Next j
          strOut = strOut & vbCrLf
        Next i
  End With

  intFree = FreeFile
  Open strPath For Binary Access Write As #intFree
    Put #intFree, , strOut
  Close #intFree
End Sub

Public Sub LoadHEX(ByVal strPath As String)
Dim i As Long
Dim j As Long
Dim intFree As Integer
Dim NextLine As String
Dim strLine As String
Dim arrLine() As String
intFree = FreeFile

  Open strPath For Input As #intFree
    Do Until EOF(intFree)
      Line Input #intFree, NextLine
      If Len(Trim(NextLine)) = 43 Then
        ReDim Preserve arrLine(i) As String
        arrLine(i) = NextLine
        i = i + 1
      End If
    Loop
  Close #intFree

  With MSFlexGrid1
      .Clear
        .Rows = i
        For j = 0 To (i - 1)
          strLine = arrLine(j)
          .TextMatrix(j, 0) = Mid(strLine, 1, 9)
          .TextMatrix(j, 1) = Mid(strLine, 10, 2)
          .TextMatrix(j, 2) = Mid(strLine, 12, 2)
          .TextMatrix(j, 3) = Mid(strLine, 14, 2)
          .TextMatrix(j, 4) = Mid(strLine, 16, 2)
          .TextMatrix(j, 5) = Mid(strLine, 18, 2)
          .TextMatrix(j, 6) = Mid(strLine, 20, 2)
          .TextMatrix(j, 7) = Mid(strLine, 22, 2)
          .TextMatrix(j, 8) = Mid(strLine, 24, 2)
          .TextMatrix(j, 9) = Mid(strLine, 26, 2)
          .TextMatrix(j, 10) = Mid(strLine, 28, 2)
          .TextMatrix(j, 11) = Mid(strLine, 30, 2)
          .TextMatrix(j, 12) = Mid(strLine, 32, 2)
          .TextMatrix(j, 13) = Mid(strLine, 34, 2)
          .TextMatrix(j, 14) = Mid(strLine, 36, 2)
          .TextMatrix(j, 15) = Mid(strLine, 38, 2)
          .TextMatrix(j, 16) = Mid(strLine, 40, 2)
          .TextMatrix(j, 17) = Mid(strLine, 42, 2)
        Next j
  End With
End Sub
'--------------------------- Form1 ---------------------------
Avatar billede christian_h Nybegynder
08. juni 2003 - 15:24 #5
Hej igen.

Hmmm, ja det virker, men når man ikke loader første og sidste linie ind i flexgridden, bliver den selvfølgelig heller ikke gemt, kan man gøre det på den måde at man rent faktisk loader første og sidste linie med i flexgridden, men ikke viser dem på skærmen, så de også bliver gemt med i den nye fil ??.

(Sig til hvis det kræver flere point)

Mvh.

Christian_h
Avatar billede sjh Nybegynder
08. juni 2003 - 15:28 #6
så kan du vel bare bruge:

FileCopy "C:\...\texthex.txt", "C:\...\texthex_ny.txt"
Avatar billede christian_h Nybegynder
08. juni 2003 - 15:32 #7
Det går jo ikke hvis nu der er ændret i et par felter i gridden ?!?!?.
Avatar billede christian_h Nybegynder
09. juni 2003 - 13:56 #8
Hej sjh.

1000 TAK for hjælpen, det kunne godt se udtil at jeg har kvajet mig lidt !!!, man kan ikke bare ændre en celle manuelt i et flexgrid, så det skulle nok have været en Datagrid i stedet for. Jeg giver dig dine point nu, og opretter et nyt ?, med et datagrid i stedet (håber du kan hjælpe her også)

Mvh.

Christian_h
Avatar billede christian_h Nybegynder
21. juni 2003 - 12:04 #9
Hej Sjh.

Jeg har lidt problemer med den sidste kode du lavede til mig, det var meningen at første og sidste linie skulle "klippes" af, første linie er OK, men den klipper de sidste 2 linier af, og ikke kun den sidste, kan du hjælpe med at løse dette ??.

Mvh.

Christian_h

PS. Jeg har fundet udaf hvordan man kan ændre direkte i en celle i et flexgrid, så jeg bruger din kode i mit prog :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester