Quote Originally Posted by joaquim View Post
Code:
fNum = FreeFile
        Open "temp.gif" For Binary As fNum
            picbuf = String(Len(fileHeader) + Len(buf) - i, Chr(0))
            picbuf = fileHeader & Mid(buf, i - 1, Len(buf) - i)
            Put #fNum, 1, picbuf
            imgHeader = Left(Mid(buf, i - 1, Len(buf) - i), 16)
        Close fNum
i don't have sure, but help me on these... what they put on picbuf variable?
(i'm trying understand these, but isn't easy. but you can just use a digram)
Simple enough. When you use Binary as your input type you need to initialize a buffer the length of the file you are going to read. One way to do this is to Open the file As Binary then do the following:

Code:
  '
  '
 InputBuffer = String(LOF(#fNum), 0)
  '
  '
The above initializes the buffer with binary zeros for the length of the file you just opened. LOF(#fNum) means Length Of File specified by #fNum.

Now you just Get the data into that buffer

Code:
  '
  Get #fNum ,1, 1, InputBuffer
  '
When you use Binary as your output type you do not need to do this; you just Put the data thats in a string however the string data must have been defined as a String variable or the output will be off by 4 bytes. So, for output you just do this:

Code:
  '
 Dim OutputBuffer As String
  '
  '
  '
 OutputBuffer = fileHeader & Mid(buf, i - 1, Len(buf) - i)
 
 Open App.Path & "\MyFile.txt" For Binary As #fNum
 Put #fNum, 1, OutputBuffer
 Close #fNum 
  '
In the code snippet you posted the line

picbuf = String(Len(fileHeader) + Len(buf) - i, Chr(0))

is not needed. I don't know why the coder put it there.

But, nevertheless it means to take the length of fileheader plus the length of buf minus 1 and fill picbuf with that many binary zeros.