none
Искажение данных RRS feed

  • Вопрос

  • Здравствуйте.  Не подскажите как можно исправить следующую проблему.  Работаю с MFC.

    Вообщем данный участок кода ищет в каталоге файлы с форматам format - в основном это ".doc || .xls". Когда файл найден с него считываются данные (т.е имя, вес, дата создания и т.д) после этого полученная информация записывается в файл PathName. 

    Так вот самый первый найденный файл записывается нормально, а последующая информация
    об остальных файлах частично искажена.

     

    int CmyLabTwoDlg::FindFileWriteInBase(CString PathFile,CString format) //Ищет в катологе файлы формата "format"
    {
            UpdateData(true); // Копируем данные из элем. управление в связанные сним переменные
    	ListFiles.RemoveAllGroups();
    
    	CStdioFile fout(PathFile, CFile::modeWrite);
    	
    	WIN32_FIND_DATA FindFileData; // Содержит информацию о файле
    	HANDLE hFind=NULL; // Дескриптр  на фаил
    
    	hFind=FindFirstFile(m_PathFolder+"\\"+format, &FindFileData); // Ищем файлы фармата ".doc || .exl"
    
    	if(hFind!=INVALID_HANDLE_VALUE)
    	{
    		do
    		{
    			fout.WriteString(FindFileData.cFileName); // Добавляет имя файла в базу, т.е в файл "base.txt"
    			fout.WriteString(L"\n" + myConvertSize(FindFileData) + "\n"); // Добавляет размер файла, низкого порядка DWORD
    			
    			CString b=m_PathFolder+"\\"+FindFileData.cFileName; //Полный путь к найденному файлу
    			
    			fout.WriteString(myGetChangeFileTime(b)+"\n"); // Добавляет время изменения файла.
    			fout.WriteString(AttributesFile(FindFileData.dwFileAttributes)+"\n"); // Добавляет инф. об атрибутах
    			fout.WriteString(b+"\n"); //Добавляем полный путь к файлу
    			
    		}while(FindNextFile(hFind, &FindFileData) != 0);
    		
    		FindClose(hFind);
    		fout.Close();
    
    		return 1;
    	}
    return 0;
    }.
    
    В каталоге находятся файла:Doc1.doc, Doc2.doc, Doc3.doc, Doc4.doc
    Результат:
    Doc1.doc
    21
    26.1.2012
    Archive
    C:\Users\Al\Desktop\1\Doc1.doc
    Do 
    35
    26.1.2012
    Archive
    C:\Users\Al\Desktop\1\DoDo
    76
    30.1.2012
    Archive
    C:\Users\Al\Desktop\1\DoDo
    68
    30.1.2012
    Archive
    C:\Users\Al\Desktop\1\Do
    
    Спасибо.



     





    1 февраля 2012 г. 15:03

Ответы

  • По-умолчанию метод WtiteString с русским не дружит...

    Спасибо. Нет все в порядке.  Проблему удалось решить.

    Благодаря использованию: setlocale(LC_ALL, "English");

    Всем спасибо.
    2 февраля 2012 г. 11:23

Все ответы