-
August 14th, 2006, 02:33 PM
#1
save listbox data to a text file.
Hi all,
I am trying to save all the contents inside a listbox to a txt file. Unfortunately i can't seem to get it right. The txt file that is read into the listbox contains up to 7,000 lines. I want to be able to edit and save it.
This is what i've come up with :
IDC_LIST1 is the listbox control.
Code:
CListBox* p_ListBox = (CListBox*) GetDlgItem(IDC_LIST1);
CStdioFile savefile;
savefile.Open("C://myfile.txt", CFile::modeReadWrite);
CString theText = "";
p_ListBox->GetWindowText(theText);
savefile.WriteString(theText);
savefile.Close();
With a little modification it works fine with an editbox. But i can't get it working with a listbox.
I am using Visual Studio 2003, MFC, Dialog based.
Any help would be greatly appreciated.
Thank you
-- tarja
-
August 14th, 2006, 02:41 PM
#2
Re: save listbox data to a text file.
AFAIK you can't enter 7000 items into a list box.... but not 100%.
Please use code tags [code] [/code]
We would change the world, but God won't give us the sourcecode.. 
Undocumented futures are fun and useful....
_________
Gili
-
August 14th, 2006, 02:55 PM
#3
Re: save listbox data to a text file.
Here try this code:
Code:
// fill the list
for ( int ii=0; ii< 50000; ii++ )
{
char str[MAX_PATH]={0};
sprintf(str,"%d",ii);
m_list.AddString(str);
}
// write it to file
FILE *fp = fopen ( "c:\\time.txt","w");
for ( ii=0; ii< m_list.GetCount(); ii++ )
{
char str[MAX_PATH]={0};
m_list.GetText(ii,str);
fprintf(fp,"%s\n",str);
}
fclose(fp);
Cheers
Last edited by golanshahar; August 14th, 2006 at 03:39 PM.
-
August 14th, 2006, 03:25 PM
#4
Re: save listbox data to a text file.
Thank you. That works but one problem. If the file is, say, only 3 lines long, the write code above puts in too many blank spaces. Is there a way for it to know when the end of the file has been reached?
-
August 14th, 2006, 03:27 PM
#5
Re: save listbox data to a text file.
 Originally Posted by tarja311
Thank you. That works but one problem. If the file is, say, only 3 lines long, the write code above puts in too many blank spaces. Is there a way for it to know when the end of the file has been reached?
Your question is not clear, what kind of blanks are you referring to? The code above writes a line and at the end ( \n ) which is end of line 
Cheers
-
August 14th, 2006, 03:31 PM
#6
Re: save listbox data to a text file.
The code above, when reading a 3 lined file, acts as if i hit the enter key 5000 times after the 3rd line.
-
August 14th, 2006, 03:39 PM
#7
Re: save listbox data to a text file.
 Originally Posted by tarja311
The code above, when reading a 3 lined file, acts as if i hit the enter key 5000 times after the 3rd line.
ok now i got it, in the writing loop replace this line:
Code:
for ( ii=0; ii< 50000; ii++ )
with this line:
Code:
for ( ii=0; ii<m_list.GetCount(); ii++ )
Cheers
-
August 14th, 2006, 03:42 PM
#8
Re: save listbox data to a text file.
Awesome! Thank you very much. You've been most helpful. :]
-
August 14th, 2006, 03:42 PM
#9
Re: save listbox data to a text file.
You are welcome 
Cheers
-
August 15th, 2006, 12:49 AM
#10
Re: save listbox data to a text file.
Well, just a small thing, I sugest using CStdioFile and CString instead of FILE and char*.
Code:
CString str;
// fill the list
for ( int ii=0; ii< 50000; ii++ )
{
str.Format("%d", ii);
m_list.AddString(str);
}
// write it to file
CStdioFile file;
if(file.Open("text.txt", CFile::modeWrite|CFile::modeCreate))
{
int total = (int)m_list.GetCount();
for ( ii=0; ii< total; ii++ )
{
m_list.GetText(ii, str);
file.WriteString(str);
}
}
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|