Avatar billede ducks Nybegynder
12. februar 2005 - 06:28 Der er 7 kommentarer og
2 løsninger

Åben og gem i binær

Jeg mangler lidt hjælp til, hvordan jeg åbner en tilfældig fil i VB6 og gemmer den igen et andet sted, med binær.

Jeg har prøvet at følge den her: http://www.developerfusion.co.uk/show/85/ - men det giver bare nogle underlige resultater, medmindre jeg åbner en txt fil som string og gemmer den igen som string, men det kan jeg jo ikke bruge til det store. Hvis jeg åbner et billede og gemmer det igen et andet sted, fylder det pludselig kun 1KB.

Så lidt kode og forklaring eller en anden tutorial end den ovenover.
Avatar billede joern Nybegynder
12. februar 2005 - 09:15 #1
Hej.

Jeg er ikke den store binære ørn, men har dog fundet ud af at skrive / ændre ID3-tags i MP3-filer.  Du kan få kildekoden til det projekt, jeg har lånt den fra, men det væsentlige er hvorledes der åbnes, læses og skrives.  Faktisk indlæses hele filen ikke, kun den del jeg vil ændre på.    http://jkfsoft.dk/id3_tag.htm

ID3-tag'en står i filens sidste 127 bytes.


    filepos = FileLen(thisfile) - 127
    Open thisfile For Binary As #2
      Get #2, filepos, Data
    Close #2

Efter manupulering af de 127 bytes til en variabel 'linie'

  Open thisfile For Binary Access Write As #1
      Seek #1, FileLen(thisfile) - 127
      Put #1, , linie
  Close #1

M.v.h.  Jørn
Avatar billede ducks Nybegynder
12. februar 2005 - 15:21 #2
I korte træk vil jeg vide, hvordan man, åbner en fil i base 2 (binær) og, hvordan man gemmer den igen et andet sted som samme filtype, at uden den tager skade.

> Åben c:\test.mp3 som binære kode (00101010010100)
> Gem igen som c:\test2.mp3 uden tab af data.
Avatar billede joern Nybegynder
12. februar 2005 - 15:48 #3
Hej.

Skal du slet ikke ændre på filen, så kan du jo bare kopiere den.

FileCopy sti_nr1 & "\navn1.mp3", sti_nr2 & "\navn2.mp3"
kill sti_nr1 & "\navn1.mp3"

M.v.h. Jørn
Avatar billede ducks Nybegynder
12. februar 2005 - 16:03 #4
Ja, men så lærer jeg jo ikke at bruge binær ;)
Avatar billede joern Nybegynder
12. februar 2005 - 17:21 #5
Hej.

Jeg forstår ikke hvad du vil.

M.v.h.  Jørn
Avatar billede ducks Nybegynder
12. februar 2005 - 17:26 #6
Jeg vil åbne en tilfældig fil i VB i binær kode og gemme den igen, for at lære hvordan man gør. Jeg har fået af vide, at jeg skal loope eksemplet fra tidligere nævnte tutorial for at få det til at virke rigtigt.
Avatar billede ducks Nybegynder
12. februar 2005 - 18:01 #7
Så det ligger vidst i, hvordan jeg får den her til at hente hele filen hvis jeg har forstået det rigtigt:

Dim nFileNum As Integer
Dim nLen As Integer, sString As String
nFileNum = FreeFile
Open "c:\a.ip" For Binary Access Read Lock Read Write As #nFileNum
    'read the length of the string
    Get #nFileNum, , nLen
    'initialize the string with the correct number
    'of spaces
    sString = Space$(nLen)
    Get #nFileNum, , sString
Close #nFileNum
MsgBox sString
Avatar billede joern Nybegynder
12. februar 2005 - 19:02 #8
Hej.

Du får ikke filens indhold præsenteret med nuller og ét-taller.  Tegnsættet på en computer er jo enten ansi eller ascii og både billeder, musik og kopilerede filer vises med disse tegn.  Altså en blanding af bogstaver, tal, særtegn og de ikke printbare under dec(32).  Faktisk ligesom du ser et jpg-billede hvis du åbner det i notepad.

Men jeg har ellers ikke mere at tilføje i tråden.

M.v.h. Jørn
Avatar billede ducks Nybegynder
12. februar 2005 - 19:55 #9
Hvordan hænger det så sammen med at man ikke kan åbne en hvilken som helst fil i notepad og gemme den uden den tager skade?
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