|
That is one of major thing I want to avoid, print/getting extra characters.
I appreciate your help all the time...
Eranga
|
|
|
|
|
may be use like this and see.
void CSRFToolDlg::OnBnClickedWrite()
{
GetDlgItemText(IDC_S_WRITE, readString) ;
//terminate the string with \0 here.
AfxMessageBox("Data write to the file successfully", MB_OK) ;
openFile.Write(readString, readString.GetLength()) ;
}
|
|
|
|
|
chandu004 wrote: readstring[readstring.GetLength()]='\0';
On this gives an error, says
left operand must be l-value
I appreciate your help all the time...
Eranga
|
|
|
|
|
try using readstring.SetAt();
take care of the syntax.
|
|
|
|
|
Eranga Thennakoon wrote: openFile.Write(readString, readString.GetLength())
Try casting the CString to (LPCTSTR) first.
openFile.Write((LPCTSTR)readString, readString.GetLength())
- NS -
|
|
|
|
|
Actually this part is ok, it is write the text to the file correctly. I can't read the file, which is open and write something on it before.
By the way, since I've define the readString as a CString, it is required to cast?
I appreciate your help all the time...
Eranga
|
|
|
|
|
Eranga Thennakoon wrote: I can't read the file, which is open and write something on it before.
Can you show the exact code that is used for open and read?
Eranga Thennakoon wrote: By the way, since I've define the readString as a CString, it is required to cast?
Since I am unaware of the parameter type, I said to make it sure that casting is proper. If you can see the data written, obviously it is not needed.
- NS -
|
|
|
|
|
For open
<br />
void CSRFToolDlg::OnBnClickedOpen()<br />
{<br />
char* ReadFileName = "G:\\Work On\\CPP\\SRFTool\\text_file.txt" ;
<br />
if(openFile.Open(ReadFileName, CFile::modeCreate | CFile::modeReadWrite))<br />
{<br />
AfxMessageBox("File creates successfully", MB_OK) ;<br />
}<br />
else<br />
{<br />
AfxMessageBox("Error in file opening", MB_OK) ;<br />
}<br />
}<br />
For write,
<br />
void CSRFToolDlg::OnBnClickedWrite()<br />
{<br />
GetDlgItemText(IDC_S_WRITE, readString) ;<br />
openFile.Write((LPCTSTR)readString, readString.GetLength()) ;<br />
AfxMessageBox("Data write to the file successfully", MB_OK) ;<br />
}<br />
For read, actually this way is not correct, because it not read the file at all. Just use the string and print.
<br />
void CSRFToolDlg::OnBnClickedRead()<br />
{<br />
SetDlgItemText(IDC_S_READ, readString) ;<br />
}<br />
I've tried this, but not work.
<br />
void CSRFToolDlg::OnBnClickedRead()<br />
{<br />
char tempBuffer[256] ;<br />
UINT readText = 0;<br />
readText = openFile.Read(tempBuffer, strlen(tempBuffer)) ;<br />
<br />
SetDlgItemText(IDC_S_READ, readText) ;<br />
}<br />
I appreciate your help all the time...
Eranga
|
|
|
|
|
Eranga Thennakoon wrote: readText = openFile.Read(tempBuffer, strlen(tempBuffer)) ;
Taking the length of tempBuffer is wrong.
And my doubt is that, before you read, are you sure that the file is opened for read?
- NS -
|
|
|
|
|
No, I'm try to find the length of the string in buffer. strlen() gives it, right? I found it on MSDN. It gives the length of CString.
Actually file is open on previous click event.
I appreciate your help all the time...
Eranga
|
|
|
|
|
but here, unless you are reading your text from file, how are you able to get its length?
any way, you can see your inbox and see my mail, to which, you can forward it.
|
|
|
|
|
Eranga Thennakoon wrote: Actually file is open on previous click event.
After that you write the value? If so the file pointer is at the end of content, right? Then you have to reset it to initial position. In the case of CFile, you can use SeekToBegin API
- NS -
|
|
|
|
|
Yes it is true. But those comes later, isn't it? I mean need worried about those things when I use multiple lines of text. At the time I can read at least a single line pal.
That why I need your help.
I appreciate your help all the time...
Eranga
|
|
|
|
|
I am not much clear about what you said. I think you have a file having multiple lines. So when you write a string then you think that the file pointer is not at the end of the file. Am I right?
- NS -
|
|
|
|
|
Actually you no need think in that much.
Right now just write a line of text and want to read it to a edit control and display. That's it.
I appreciate your help all the time...
Eranga
|
|
|
|
|
sorry! for the delay Eranga
right now i'm called for a meeting.
i will get back by 5:30 pm
and guide u.
till then good luck!
i have some clue for u
in write button,
1.open the file in write mode,
2.write the data
3.close the file.
in read button,
1.open the file in read mode,
2.read the data
3.close the file.
|
|
|
|
|
Thanks for the tip. I'll work it on.
I appreciate your help all the time...
Eranga
|
|
|
|
|
Eranga Thennakoon wrote: write a line of text and want to read it
For this, I have said to use SeekToBegin. Hope it will work.
- NS -
|
|
|
|
|
Something like this.
<br />
void CSRFToolDlg::OnBnClickedRead()<br />
{<br />
TCHAR tempBuffer[256] ;<br />
UINT readText = 0;<br />
openFile.SeekToBegin();<br />
readText = openFile.Read(tempBuffer, 256 ) ;<br />
SetDlgItemText(IDC_S_READ, tempBuffer ) ;<br />
}<br />
This code given by Naveen.R and seems it is work. But one issue is there, can't read line of text more than 256 characters.
I appreciate your help all the time...
Eranga
|
|
|
|
|
You are reading only 256 at the maximum.
Eranga Thennakoon wrote: openFile.Read(tempBuffer, 256 ) ;
- NS -
|
|
|
|
|
Actually that what I'm try to change. Want to set it to the length of a line of test(a string).
I appreciate your help all the time...
Eranga
|
|
|
|
|
One solution can be as follows...
while( Not EOF file)
{
read the file.
add to a cstring.
}
set the cstring to edit control
- NS -
|
|
|
|
|
come on,
now initiate a loop, and read character by character and save them to an array.
or
i think, CFile returns you the nuymber of bytes in the file, so, read that many number of bytes. iam not sure but just try it.
|
|
|
|
|
I think it is possible using CFile::GetLength(). Wait, I'll test it now.
I appreciate your help all the time...
Eranga
|
|
|
|
|