Avatar billede vbsource-dot-dk Nybegynder
12. april 2002 - 23:18 Der er 3 kommentarer

Indlæs binær fil som ascii tegn

Hvordan indlæser jeg en binær fil (fx en exe fil) og indlæser den tegn for tegn, og sender det som ren ascii txt, fx kan den sende

01 98 54 26 24

hvis I forstår. altså at dele exe filen op i en masse små stykker, som kan læses med ASC(xxx)

Jeg håber jeg har forklaret mig nogenlunde klart, ellers er i velkomne til at maile eller skrive her.

anything@vbsource.dk
Avatar billede iqbe Nybegynder
13. april 2002 - 10:32 #1
sub form_load ()
  Fil1$ = LCase$(#Bib\FILNAVN#)
    Fil2$ = LCase$(#FILNAVN#)
    Me.Caption = "View: " & Fil2$ & " in hexadecimals (Is loading...)"
    Adr.Clear 'Combobox hvor alle adresse intervaler loades.
    Me.Show
    FS = FileLen(Fil1$) 'Fillængde
    'If FS = 0 Then
    '    MsgBox "The filesize of:" & Ny_Linie & Fil1$ & Ny_Linie & "is: 0 bytes" & Ny_Linie & Ny_Linie & "Can't load: " & Fil1$, vbCritical + vbOKOnly, "Can't load: " & Fil2$
    '    Unload Me
    'End If
    Antal_adr = FS / 4000 'Fillægnde over 4000
    If Antal_adr >= 1 Then 'Tilføjer adresse intervaller til "adr".
        For i = 1 To Antal_adr
            Start$ = Str$(1 + (i - 1) * 4000)
            Slut$ = Str$(i * 4000)
            Start$ = Mid$(Start$, 2)
            Slut$ = Mid$(Slut$, 2)
            l1 = 8 - Len(Start$)
            l2 = 8 - Len(Slut$)
            If l1 > 0 Then For j = 1 To l1: Start$ = "0" & Start$: Next
            If l2 > 0 Then For j = 1 To l2: Slut$ = "0" & Slut$: Next
            Adr.AddItem Start$ & " - " & Slut$, i - 1
            Sted = i + 1
        Next i
    Else
        Sted = 1
    End If
    If FS Mod 4000 > 0 Then 'Hvis FS delt med 4000 giver rest på mere end nul (0) så skal der tilføjes et adresse interval for resten.
        Start$ = Str$(1 + (Sted - 1) * 4000)
        Slut$ = Str$((Sted - 1) * 4000 + (FS Mod 4000))
        Start$ = Mid$(Start$, 2)
        Slut$ = Mid$(Slut$, 2)
        l1 = 8 - Len(Start$)
        l2 = 8 - Len(Slut$)
        If l1 > 0 Then For j = 1 To l1: Start$ = "0" & Start$: Next
        If l2 > 0 Then For j = 1 To l2: Slut$ = "0" & Slut$: Next
        Adr.AddItem Start$ & " - " & Slut$, Sted - 1
    End If
    Adr.ListIndex = 0
    Adr.Text = Adr.List(Adr.ListIndex)
    Me.Caption = "View: " & Fil2$ & " in hexadecimals"
end sub

Der kommer mere!!!!
Avatar billede iqbe Nybegynder
13. april 2002 - 10:38 #2
Private Sub Adr_Click()
    Hex_Liste.Clear 'listbox hvori der indlæses tegn
    Fil$ = #Bib/FILNAVN#
    FS = FileLen(Fil$)
    plads = Adr.ListIndex
    Fri = FreeFile
    Screen.MousePointer = 11
    Open Fil$ For Binary Access Read As Fri
        Start = 1 + plads * 4000
        Slut = (1 + plads) * 4000
        If Slut > FS Then Slut = plads * 4000 + FS Mod 4000 'Hvis slut overstiger FS beregnes Slut til slut adresse
        Streng$ = Space$(Slut - Start + 1)
        Get #Fri, Start, Streng$
        Konv_Asc_Hex Streng$, (Start), Hex_Liste 'kan erstattes med Hex_liste.additem Streng$
        If Len(Streng$) Mod 16 = 0 Then Hex_Liste.RemoveItem Hex_Liste.ListCount - 1
    Close Fri
    Screen.MousePointer = 0
End Sub
Avatar billede iqbe Nybegynder
13. april 2002 - 10:38 #3
Håber dette source kan hjælpe dig i den rigtige retning.

MVH

IQbe
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