Solved

Creating a text file containing no control characters?

Posted on 2004-08-02
7
144 Views
Last Modified: 2013-11-20
I need to create a text file in VC++ .NET containing plain numbers with no control characters which can be read with, say, the Notepad (the way text (not binary) files are created in, say, VB.NET). It appears that all examples given in a book such as Deitel’s “Visual C++ .NET. How to Program” create files which contain control characters and encrypt the data. Is that it? Isn’t there a way to create plain and simple text files in VC++ .NET containing no additional characters that can be viewed by common text editors?
0
Comment
Question by:judico
  • 3
  • 2
7 Comments
 
LVL 16

Expert Comment

by:nonubik
ID: 11691863
HANDLE      hFile = CreateFile(m_strFileName, GENERIC_READ, 0, 0, CREATE_NEW, FILE_ATTRIBUTE_HIDDEN, 0);
if (hFile == INVALID_HANDLE_VALUE)
{
      OutputDebugString(_T("\nError creating file"));
            
}      
else
{      
                TCHAR      szLine[] = _T("Some text here");
      DWORD      dwBytes;
                WriteFile(hFile, szLine, sizeof(szLine), &dwBytes, 0);
      CloseHandle(hFile);
{
0
 

Author Comment

by:judico
ID: 11694131
I am having problems implementing above code in managed environment (when trying to use forms). Also, what is the corresponding code for reading the created text file? I would appreciate it very much if you could post a working example using forms in VC++ .NET. Thank you in advance.
0
 

Author Comment

by:judico
ID: 11695228
I found a link that seems to solve the problem:

http://support.microsoft.com/default.aspx?scid=kb;%5BLN%5D;307398&product=vcNET#1

There were several typos to be corrected, otherwise it works fine. Now the problems with OpenFileDialog and SaveFileDialog remain to be solved. To start, how can one change the directory in which the file is written in the code:

StreamWriter* pwriter = new StreamWriter( S"\\KBTest.txt" );   ?
0
Optimizing Cloud Backup for Low Bandwidth

With cloud storage prices going down a growing number of SMBs start to use it for backup storage. Unfortunately, business data volume rarely fits the average Internet speed. This article provides an overview of main Internet speed challenges and reveals backup best practices.

 
LVL 16

Expert Comment

by:nonubik
ID: 11701137
StreamWriter* pwriter = new StreamWriter( S"c:\\My_Directory\\KBTest.txt" );  
0
 

Author Comment

by:judico
ID: 11706105
This is what I needed:

//This demonstrates how to READ a text file:
      private: System::Void button1_Click(System::Object *  sender, System::EventArgs *  e)
                   {
// Use try...catch to deal with a 0 byte file or a non-existent file.
listBox1->Items->Clear();

try  
{    
      
OpenFileDialog *fileChooser = new OpenFileDialog();
Windows::Forms::DialogResult result = fileChooser->ShowDialog();

// name of file containing data
String *fileName;

// exit event handler if user clicked Cancel
if ( result == DialogResult::Cancel )
     return;

// get specified file name
fileName = fileChooser->FileName;

// show error if user specifies invalid data
if ( ( fileName->Equals( S"" ) ) )
MessageBox::Show( S"Invalid File Name", S"Error",
                         MessageBoxButtons::OK, MessageBoxIcon::Error );

else {

       String* textFile = String::Concat( fileName );
             
     }

      StreamReader *reader = new  StreamReader(fileName);
      do
      {
      listBox1->Items->Add(reader->ReadLine());
      }  
      while(reader->Peek() != -1);
}    
catch(FileNotFoundException *ex)
{
      listBox1->Items->Add(ex);
}  
       
catch (System::Exception *e)
{
      listBox1->Items->Add(e);
}

                   }




 // This demonstrates how to create and to WRITE to a text file.
private: System::Void button2_Click(System::Object *  sender, System::EventArgs *  e)
             {

SaveFileDialog *fileChooser = new SaveFileDialog();
Windows::Forms::DialogResult result = fileChooser->ShowDialog();

String *fileName;

fileChooser->CheckFileExists = false;

if ( result == DialogResult::Cancel )
     return;

fileName = fileChooser->FileName;

if ( ( fileName->Equals( S"" ) ) )
MessageBox::Show( S"Invalid File Name", S"Error",
                         MessageBoxButtons::OK, MessageBoxIcon::Error );

else {
StreamWriter* pwriter = new StreamWriter( fileName );
pwriter->WriteLine( S"The file was created by using the StreamWriter class." );
pwriter->Close();

listBox1->Items->Clear();
String *filew = new String(S"File written to C:\efi\KBTest.txt");
listBox1->Items->Add(filew);

}

Now, the next step is to find out how to place the two columns of numbers in my text file in two separate arrays which I want to use later in the program.

0
 

Accepted Solution

by:
CetusMOD earned 0 total points
ID: 11895558
Closed, 50 points refunded.
CetusMOD
Community Support Moderator
0

Featured Post

Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Introduction: Load and Save to file, Document-View interaction inside the SDI. Continuing from the second article about sudoku.   Open the project in visual studio. From the class view select CSudokuDoc and double click to open the header …
Have you tried to learn about Unicode, UTF-8, and multibyte text encoding and all the articles are just too "academic" or too technical? This article aims to make the whole topic easy for just about anyone to understand.
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.
Established in 1997, Technology Architects has become one of the most reputable technology solutions companies in the country. TA have been providing businesses with cost effective state-of-the-art solutions and unparalleled service that is designed…

777 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question