A
Alfons
Hello,
I have build a program that can do file transferring between a Windows
XP computer and a DOS computer via a serial port. The Windows program
I have build in C++ with Visual Studio 6.0. The DOS program I made in
Turbo C++ 3.0.
At this moment I am in a test phase of sending files and directories.
The code I am using in DOS to open a file for writing looks like this
(forgive me the typos, since I only have my source code at work and
don't have any compiler on this PC):
if (!IsDirectory()) // Check to see if the object is a directory
{
remove(l_Filename);
}
m_pOfstream = new ofstream;
m_pOfstream->open(l_Filename, ios::binary | ios::in);
if (m_pOfstream->good() == 0)
{
printf("State: %d\n", m_pOfstream->rdstate());
return FALSE;
}
else
{
return TRUE;
}
At the moment I am having a strange problem saving files to disk. If
no files exist yet, then everything works fine. But when the files do
exist, and the program actually has to remove them first, then I am
getting errors.
Let's say I send the following files and directories:
C:\temp\test\
C:\temp\test\a.bat
C:\temp\test\b.com
C:\temp\test\c.bat
The first directory is skipped for removing. The opening of the
directory also returns FALSE, but this is no problem, since I don't
have to write any data to a directory name.
The first file (a.bat) gives an unexplainable error on opening the
file! rdstate() returns 4, which means something like an I/O failure I
believe.
The strange thing is, that the rest of the files don't give any
problem at all.
If I remove the file a.bat on the target side by hand, then everything
works fine.
The opening of the file and assigning a valid value to the m_pOfstream
pointer are done through the constructorof some CFile class I made,
while the closing and deleting of the pointer are done in the
destructor.
Does anyone have any suggestions how to solve this problem?
Alfons van Zwol
I have build a program that can do file transferring between a Windows
XP computer and a DOS computer via a serial port. The Windows program
I have build in C++ with Visual Studio 6.0. The DOS program I made in
Turbo C++ 3.0.
At this moment I am in a test phase of sending files and directories.
The code I am using in DOS to open a file for writing looks like this
(forgive me the typos, since I only have my source code at work and
don't have any compiler on this PC):
if (!IsDirectory()) // Check to see if the object is a directory
{
remove(l_Filename);
}
m_pOfstream = new ofstream;
m_pOfstream->open(l_Filename, ios::binary | ios::in);
if (m_pOfstream->good() == 0)
{
printf("State: %d\n", m_pOfstream->rdstate());
return FALSE;
}
else
{
return TRUE;
}
At the moment I am having a strange problem saving files to disk. If
no files exist yet, then everything works fine. But when the files do
exist, and the program actually has to remove them first, then I am
getting errors.
Let's say I send the following files and directories:
C:\temp\test\
C:\temp\test\a.bat
C:\temp\test\b.com
C:\temp\test\c.bat
The first directory is skipped for removing. The opening of the
directory also returns FALSE, but this is no problem, since I don't
have to write any data to a directory name.
The first file (a.bat) gives an unexplainable error on opening the
file! rdstate() returns 4, which means something like an I/O failure I
believe.
The strange thing is, that the rest of the files don't give any
problem at all.
If I remove the file a.bat on the target side by hand, then everything
works fine.
The opening of the file and assigning a valid value to the m_pOfstream
pointer are done through the constructorof some CFile class I made,
while the closing and deleting of the pointer are done in the
destructor.
Does anyone have any suggestions how to solve this problem?
Alfons van Zwol