Shahzad Naseer Ответов: 1

C++ считывает все строки в текстовом файле


Я получаю все 10 строк (строка за строкой ) в проекте mfc как CStringArray, но получаю ошибку при получении строки 4-й строки.

мой текстовый файл:

C:\Program файлы (x86)\GRETECH\GOMPlayer\GOM.EXE
C:\Program Files\VideoLAN\VLC\vlc.exe
C:\Program файлы (x86)\Google\Chrome\Application\chrome.exe
C:\Windows\notepad.exe
C:\Windows\System32\cmd.exe
C:\Windows\System32\mspaint.exe
C:\Windows\System32\calc.exe
C:\Windows\System32\calc.exe
C:\Windows\System32\osk.exe
C:\Windows\System32\msconfig.exe

Пожалуйста, проверьте мою функцию или замените ее на эту функцию. И, пожалуйста, Закодируйте мне функцию для обновления любой строки.

Что я уже пробовал:

    CString AMyClass::getStringfromText(CString filename, int linenumber)
    {
    CStdioFile file;	
    CStringArray aLineArray;
    CString All_Lines;
    CString out;
    CString strExePath;
    
    linenumber=linenumber-1;
    CString applicationPath;
    char fname[_MAX_PATH+1];
    
    ::GetModuleFileNameA(NULL,fname,_MAX_PATH);
    applicationPath = fname;
    applicationPath.MakeLower();
    strExePath = applicationPath.Left(applicationPath.ReverseFind('\\') + 1);

    file.Open(strExePath+filename, CFile::modeRead);

    while (file.ReadString(All_Lines))
    {
    aLineArray.Add(All_Lines);

    }
    file.Close ();
    out=aLineArray[linenumber];
    return out;
    }

**and code is:**

    CString str_s4;
    str_s4=AMyClass::getStringfromText (_T("MyApps.ini"),4);
    AfxMessageBox(str_s4);

Richard MacCutchan

Какая ошибка?

1 Ответов

Рейтинг:
4

KarstenK

Вы должны использовать отладчик и войти в код. Я догадываюсь из чтения, что файл не был найден в каталоге, и поэтому aLineArray пуст.

Хорошее кодирование означает также проверку таких функций, как файл.Открытие и некоторая обработка ошибок:

if( !file.Open(strExePath+filename, CFile::modeRead) ) {
  TRACE("File couldnt get opened");
  return "";
}