Important alert: (current site time 7/25/2014 1:55:22 PM EDT)
 

winzip icon

Breaking the Textbox 64K File Size Limit (UPDATE: Sept. 15th, 2007)

Email
Submitted on: 9/17/2007 8:47:26 AM
By: Tom Moran 
Level: Beginner
User Rating: By 11 Users
Compatibility: VB 5.0, VB 6.0
Views: 11044
author picture
(About the author)
 
     You don't have to be limited to 64K size files for a for a standard Textbox control in VB6. This small sample project shows you how to load, edit and save plain text files, UNLIMITED by file size using the Standard VB6 Textbox control. It's all done in just a few simple lines of code. Please note that this method works on NT, Windows 2000, XP and Vista. If you're coding for systems that use Win95/98 or ME this method will not work. View the readhuge.txt file for full details. (UPDATE: Changed method from Clipboard method to an API method which is even more efficient and does not mess with any data in the clipboard and the end result is the same. Thanks to Kenneth Buckmaster and Rob C. for their input.)

 

Windows API/Global Declarations:

Can't Copy and Paste this?
Click here for a copy-and-paste friendly version of this code!
'**************************************
'Windows API/Global Declarations for :Breaking the Textbox 64K File Size Limit (UPDATE: Sept. 15th, 2007)
'**************************************
'API's and Const to load large files
 
Private Declare Function SendMessage Lib "user32" _
 Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
 ByVal wParam As Long, lParam As Any) As Long
 
Private Declare Function GetWindowTextLength Lib "user32" _
 Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Private Const WM_SETTEXT = &HC
Private Const WM_GETTEXT = &HD
Private Const WM_GETTEXTLENGTH = &HE
winzip iconDownload code

Note: Due to the size or complexity of this submission, the author has submitted it as a .zip file to shorten your download time. Afterdownloading it, you will need a program like Winzip to decompress it.Virus note:All files are scanned once-a-day by Planet Source Code for viruses, but new viruses come out every day, so no prevention program can catch 100% of them. For your own safety, please:
  1. Re-scan downloaded files using your personal virus checker before using it.
  2. NEVER, EVER run compiled files (.exe's, .ocx's, .dll's etc.)--only run source code.
  3. Scan the source code with Minnow's Project Scanner

If you don't have a virus scanner, you can get one at many places on the net including:McAfee.com

 
Terms of Agreement:   
By using this code, you agree to the following terms...   
  1. You may use this code in your own programs (and may compile it into a program and distribute it in compiled format for languages that allow it) freely and with no charge.
  2. You MAY NOT redistribute this code (for example to a web site) without written permission from the original author. Failure to do so is a violation of copyright laws.   
  3. You may link to this code from another website, but ONLY if it is not wrapped in a frame. 
  4. You will abide by any additional copyright restrictions which the author may have placed in the code or code's description.


Other 3 submission(s) by this author

 


Report Bad Submission
Use this form to tell us if this entry should be deleted (i.e contains no code, is a virus, etc.).
This submission should be removed because:

Your Vote

What do you think of this code (in the Beginner category)?
(The code with your highest vote will win this month's coding contest!)
Excellent  Good  Average  Below Average  Poor (See voting log ...)
 

Other User Comments

9/10/2007 10:29:48 AMKenneth Buckmaster

Nice try but see MSDN EM_LIMITTEXT Message

http://msdn2.microsoft.com/en-us/library/ms672084.aspx

"Edit controls on Windows 95/98/Me... For multiline edit controls, this value is either 0xFFFF bytes or the value of the wParam parameter, whichever is smaller."

So probably won't work with these os's
(If this comment was disrespectful, please report it.)

 
9/10/2007 7:07:32 PMTom Moran

I have no idea if this works on Win95/98 or ME since I've only tested on XP and Vista should work for NT and 2000 as well. Would be interested if anyone out there is still using 95/98/ME to let me know.
(If this comment was disrespectful, please report it.)

 
9/10/2007 7:22:47 PMRudyM

I didn't know you could do this either. I have XP and works fine. 5 Globes for discovering this trick. BTW, does anybody still use 95/98?
(If this comment was disrespectful, please report it.)

 
9/11/2007 6:48:47 AMKasia Muniak

Kenneth Buckmaster is right.
It does not work in Win9x/Me.
The line:
frmHugeText.Text1.SelText = Clipboard.GetText()
caused error: '#7 - Out of memory.'
(If this comment was disrespectful, please report it.)

 
9/11/2007 8:55:36 PMTom Moran

Ok then... this technique works only in NT, Windows 2000, XP and Vista. So if your programming for Win95/98/ME it's a no go. Still a pretty cool technique for those programming for this century.
(If this comment was disrespectful, please report it.)

 
9/14/2007 4:04:42 AMRob C

5 Because you are correct.

I would encourage use of Option Explicit.
If you are placing code into BAS instead of FRM file, I would pass a reference to the Form as one of the arguments.
That is a 'cleaner' approach.

You mentioned that you would like to get rid of the RTB in one of your projects (which I applaud).
Did you ever do that ?
(If this comment was disrespectful, please report it.)

 
9/14/2007 5:46:53 AMRob C

Your solution got me thinking, that there probably is an API call involved when pasting into the Textbox, and the API does not have the limit problem.
Did a 'Google' and came up with two solutions, both of which will not annoy the user by clearing what he previously had in the ClipBoard

http://www.thescarms.com/VBasic/tips.aspx

http://vb.mvps.org/art icles/ap200009.asp

(If this comment was disrespectful, please report it.)

 
9/14/2007 9:42:08 PMTom Moran

Hey Rob: Thanks for the feedback. I was thinking the same thing as I was reading the MSDN article. I'm changing the example and am re-uploading. Re: Option Explicit... absolutely correct. Just threw the example together and forgot it. Thanks, again!
(If this comment was disrespectful, please report it.)

 
9/18/2007 4:59:24 AMRobert Rayment

Very useful update. I have used RichTextBox for large files and, of course, you can color in etc. But the RTB has so many versions that it can be dodgy on some PCs.

(If this comment was disrespectful, please report it.)

 
9/19/2007 2:33:40 AMTom Moran

You are correct, Robert. And there are times when you need to have plain ASCII text with no formatting. Even though you can save as text in a Rich Textbox, Windows still interprets the content as RTF. Guess that's why notepad is still alive and kicking. :)
(If this comment was disrespectful, please report it.)

 
8/2/2008 11:34:21 PMKevin Ritch

Good submission.

5 Globes from me.

Cheers!
Kevin Ritch
V8Software.co.uk
PS - Groovy LOGO BTW.
(If this comment was disrespectful, please report it.)

 
12/8/2008 4:00:09 AMRob C

Hi Tom,
It's me again.
I tripped over this today, and had another look at it.
I have enahnced the bas file to have no direct reference to the Form.
(IE there is no hard coding of the Form's name 'frmHugeText.').
Email me, if you would like me to send the project to you, at
robhp AT iprimus DOT com DOT au

Regards,
Rob

(If this comment was disrespectful, please report it.)

 

Add Your Feedback
Your feedback will be posted below and an email sent to the author. Please remember that the author was kind enough to share this with you, so any criticisms must be stated politely, or they will be deleted. (For feedback not related to this particular code, please click here instead.)
 

To post feedback, first please login.