Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void OpenFile()
- {
- unsigned int FileNameSize = GetWindowTextLength(Controls[ID_EDIT_FILE_INPUT]);
- if (FileNameSize == 0)
- return;
- FileNameSize ++;
- char *FileName = new char[FileNameSize ];//это же имя файла, так?
- GetWindowText(Controls[ID_EDIT_FILE_INPUT], FileName, FileNameSize);
- FILE *File;
- if (fopen_s(&File, FileName, "rt") != 0)
- {
- MessageBox(Form, "Не удалось открыть файл", "Ошибка", MB_OK | MB_ICONERROR);
- return;
- }
- delete Text;
- int FileSize = 0;
- while (!feof(File))
- {
- char chr; //переменные надо объявлять в самой узкой области видимости из возможных
- fread_s(&chr, sizeof(char),sizeof(char), 1, File);
- if (('0' <= chr && chr <= '9' ) || chr=='\0' || chr=='\r' || chr=='\n')//правда, так условие красивее выглядит?
- //if( strchr("0123456789\r\n", chr) == NULL || chr == '\0' ) //а так можно еще красивее
- {
- FileSize++;
- }
- else
- {
- MessageBox(Form, "В файле найдены неподходящие символы", "Ошибка", MB_OK | MB_ICONERROR);
- fclose(File);
- return;
- }
- }
- rewind(File);
- char *Text = new char[FileSize + 1]; //место под '\0' в конце резервируем
- int CharsRead = fread_s( Text, sizeof(char)*Size, sizeof(char), Size, File); //запоминаем количество реально прочитанных символов
- //конечно, система не должна позволить изменить файл, пока он открыт, но почему бы не перестраховаться, если это ничего не стоит?
- fclose(File);
- Text[ CharsRead ] = '\0' ;//и вот только после этого строку можно считать действительно прочитанной
- SetWindowText(Controls[ID_EDIT_INPUT], Text);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement