File I/O w/ Unicode Dialog [modified]
-
I've been racking my brain all day with this... Just can't get things going.. I need to be able to read and write variables to a file.. I've got one example to work.. But the reading I get back are box characters... This prolly has to do with the fact that my progam is in UNICODE mode. I'm just trying to read and write in a CSV file. (comma seperated values). But anything that is capable of reading and writing variables to a file would be great.. Example: // Open the text file we want CFile cfFile (L"C:\\TextFile.txt", CFile::modeNoTruncate | CFile::modeRead); CArchive ar (&cfFile, CArchive::load); // Load its contents into a CArchive // Initialise the variable which holds each line's contents CString strLine = L""; if(!ar.ReadString(strLine)) // Read the first line of the CArchive into the variable return; // Failed, so quit out do // Repeat while there are lines in the file left to process { if(strLine.GetLength() == 0) // If the line is empty, skip it continue; CString strText = strLine; // A line of the file // Initialise the variables that will hold the values CString strItemName = L""; CString strPicPath = L""; CString strSoundPath = L""; // Extract the first value, and place it in the strItemName variable AfxExtractSubString(strItemName, strText, 0, ','); // Extract the second value, and place it in the strPicPath variable AfxExtractSubString(strPicPath, strText, 1, ','); // Extract the third value, and place it in the strSoundPath variable AfxExtractSubString(strSoundPath, strText, 2, ','); // Do something with these values in the variables }while(ar.ReadString(strLine)); If I display strItemName, strPicPath or strSoundPath after reading the file... I get blocks.. any ideas? -- modified at 22:34 Tuesday 31st October, 2006
-
I've been racking my brain all day with this... Just can't get things going.. I need to be able to read and write variables to a file.. I've got one example to work.. But the reading I get back are box characters... This prolly has to do with the fact that my progam is in UNICODE mode. I'm just trying to read and write in a CSV file. (comma seperated values). But anything that is capable of reading and writing variables to a file would be great.. Example: // Open the text file we want CFile cfFile (L"C:\\TextFile.txt", CFile::modeNoTruncate | CFile::modeRead); CArchive ar (&cfFile, CArchive::load); // Load its contents into a CArchive // Initialise the variable which holds each line's contents CString strLine = L""; if(!ar.ReadString(strLine)) // Read the first line of the CArchive into the variable return; // Failed, so quit out do // Repeat while there are lines in the file left to process { if(strLine.GetLength() == 0) // If the line is empty, skip it continue; CString strText = strLine; // A line of the file // Initialise the variables that will hold the values CString strItemName = L""; CString strPicPath = L""; CString strSoundPath = L""; // Extract the first value, and place it in the strItemName variable AfxExtractSubString(strItemName, strText, 0, ','); // Extract the second value, and place it in the strPicPath variable AfxExtractSubString(strPicPath, strText, 1, ','); // Extract the third value, and place it in the strSoundPath variable AfxExtractSubString(strSoundPath, strText, 2, ','); // Do something with these values in the variables }while(ar.ReadString(strLine)); If I display strItemName, strPicPath or strSoundPath after reading the file... I get blocks.. any ideas? -- modified at 22:34 Tuesday 31st October, 2006
After this line CString strText = strLine; // A line of the file does strText have a line of comma separated strings? Don't know if it's necessary but try making your comma constants L',' AfxExtractSubString(strItemName, strText, 0, L',');
-
After this line CString strText = strLine; // A line of the file does strText have a line of comma separated strings? Don't know if it's necessary but try making your comma constants L',' AfxExtractSubString(strItemName, strText, 0, L',');
hmmmm.. still dosn't display the character correctly.. Their must be a simple way to read and write int variables to a file.. I don't even really need strings.
-
hmmmm.. still dosn't display the character correctly.. Their must be a simple way to read and write int variables to a file.. I don't even really need strings.
Did you write the ints as ints or as string representations of the ints?? If you don't need to read the file in notepad or the file is not imported to other applications then you can write binary ints instead of comma-separated strings.
-
Did you write the ints as ints or as string representations of the ints?? If you don't need to read the file in notepad or the file is not imported to other applications then you can write binary ints instead of comma-separated strings.
ok... sounds good.. Just as long as the program can write to the file and read it back to itself. What should I look up for binary reading and writing?
-
ok... sounds good.. Just as long as the program can write to the file and read it back to itself. What should I look up for binary reading and writing?
For int values use CArchive::Read() and CArchive::Write() or the overloaded extraction/insertion operators, something like // to write an int int IntValue = ...; ar.Write(&IntValue, sizeof(int)); // or "ar << IntValue;" // to read an int int IntValue; ar.Read(&IntValue, sizeof(int)); // or "ar >> IntValue;"
-
For int values use CArchive::Read() and CArchive::Write() or the overloaded extraction/insertion operators, something like // to write an int int IntValue = ...; ar.Write(&IntValue, sizeof(int)); // or "ar << IntValue;" // to read an int int IntValue; ar.Read(&IntValue, sizeof(int)); // or "ar >> IntValue;"
Ok... I know i'm real close.. lol CFile cfFile (L"C:\\TextFile.txt", CFile::modeNoTruncate | CFile::modeReadWrite ); char buf[512]; int variable = 12; int i; CArchive ar( &cfFile, CArchive::store, 512, buf ); ar.Write(&variable, sizeof(int)); ar.Close(); CArchive ar2( &cfFile, CArchive::load, 512, buf ); i = ar2.Read(&variable, sizeof(int)); ar2.Close(); temp.Format((L"%d"), i); AfxMessageBox(temp); //dispalys 0... need 12
-
Ok... I know i'm real close.. lol CFile cfFile (L"C:\\TextFile.txt", CFile::modeNoTruncate | CFile::modeReadWrite ); char buf[512]; int variable = 12; int i; CArchive ar( &cfFile, CArchive::store, 512, buf ); ar.Write(&variable, sizeof(int)); ar.Close(); CArchive ar2( &cfFile, CArchive::load, 512, buf ); i = ar2.Read(&variable, sizeof(int)); ar2.Close(); temp.Format((L"%d"), i); AfxMessageBox(temp); //dispalys 0... need 12
Nevermind... I got it :) Thank you very very much Mark... very much appreciated :) CFile cfFile (L"C:\\TextFile.txt", CFile::modeNoTruncate | CFile::modeReadWrite ); char buf[512]; Learning = 12; cfFile.SeekToBegin(); CArchive ar( &cfFile, CArchive::store, 512, buf ); ar.Write(&Learning, sizeof(int)); ar.Close(); cfFile.SeekToBegin(); CArchive ar2( &cfFile, CArchive::load, 512, buf ); ar2.Read(&i, sizeof(int)); ar2.Close(); temp.Format((L"%d"), i); AfxMessageBox(temp);
-
Nevermind... I got it :) Thank you very very much Mark... very much appreciated :) CFile cfFile (L"C:\\TextFile.txt", CFile::modeNoTruncate | CFile::modeReadWrite ); char buf[512]; Learning = 12; cfFile.SeekToBegin(); CArchive ar( &cfFile, CArchive::store, 512, buf ); ar.Write(&Learning, sizeof(int)); ar.Close(); cfFile.SeekToBegin(); CArchive ar2( &cfFile, CArchive::load, 512, buf ); ar2.Read(&i, sizeof(int)); ar2.Close(); temp.Format((L"%d"), i); AfxMessageBox(temp);
The file pointer, yes :) Take care, Mark