VBcoders Guest



Don't have an account yet? Register
 


Forgot Password?



Embedding files in VB to be able to make them on the fly

by Mike Firoved (5 Submissions)
Category: Files/File Controls/Input/Output
Compatability: Visual Basic 3.0
Difficulty: Intermediate
Date Added: Wed 3rd February 2021
Rating: (5 Votes)

To be able to make files on the fly. To embed those files within the executable of the vb program. To have one exe file that can make dependent files as needed.

Rate Embedding files in VB to be able to make them on the fly


I have always been looking for a way to embed small to medium sized files in the my VB project. It was a frustrating search for the solution. But I think I have found it. J



I have always liked the ability of a single .exe file to create it's own files on demand. Like a app that creates it's own log or INI file. With text based files this was easy to do. Just hardcode the file as text in a module or store it as a constant. I even wrote a utility to take a paragraph of text and convert into a string (with vbcrlf's and quote marks. But Binary files were a different story altogether



And then the other day I was looking at a message source of an email and noticed how a image a person sends through the email get converted and embedded as text. This encoding is called base64. it takes a binary file and encodes it so that it can be stored as text. For example:



Content-Type: application/octet-stream;

name="test.gif"

Content-Transfer-Encoding: base64

Content-Disposition: attachment;

filename="test.gif"



sKDBgwgTKlzIsKHDgQEASJz4sKLFiwMNCIg4USIBjCBDihwJsSNFkigvCjBpMkDKlzBRcmQZs6bB

mQAIGDAo0abPnwkj7jzQ0SVQlAZY5kzY86hTn0IJSjT6FCMBpR8XNq3KlWTUjACodnW4sqPFrWPT

...



When I saw this a huge light bulb went off in my head. Aha! I could use base64 encoding to convert a binary file into text and then store that text as a variable or constant. Then when it is time to create that file in my program I can call a procedure to decode it and save it. So then I read an rfc about the base64 and luckily I found a free dll that does the base64 decoding so I don't have to write it. Now maybe your thinking I am trying to push this person's free dll but that is not the case. You could just read the RFC about base64 and write your own procedure to do it. But for me it was quick and easy to use the dll. See the example below



Public Sub makeAccessDatabase()

 Dim dbs As String

 dbs = dbs & "AAEAAFN0YW5kYXJkIEpldCBEQgABAAAAtW4DYmAJwlXpqWdyQD8AnH6fkP+FmjHFebrtMLzfzJ1j"

 dbs = dbs & "2eTDn0b7irxOgWnsN1rWnPrBzCjmFCSKYFMGezby4N+xcGYTQ8g9sTMz83lblSd8Kmr6fJkIH5j9"

 dbs = dbs & "fHOP05p+gmZflfjQiSSFZ8YfJ0TS7s9l7f8Hx0aheBYM7ektYtRUBgAANC4wAAAAAAAAAAAAAAAA"

 '...



 dim obj As Base64Lib.Base64

 Set obj = New Base64Lib.Base64

 obj.DecodeToFile dbs, App.Path & "\" & App.EXEName & ".mdb"

 Set obj = Nothing

 

 dbs = ""



End Sub



In this case I was making an access database. That’s all there is, it works wonderfully.



BTW to get the encoded text just send yourself an attachment and copy the source. Then paste it into word. Do a replace command. Replace paragraph mark with " ^p dbs=dbs & ". Then just copy that and paste into a module.


Thanks for reading

-Mike Firoved



Download this snippet    Add to My Saved Code

Embedding files in VB to be able to make them on the fly Comments

No comments have been posted about Embedding files in VB to be able to make them on the fly. Why not be the first to post a comment about Embedding files in VB to be able to make them on the fly.

Post your comment

Subject:
Message:
0/1000 characters