half-horse half-gateway
117 / 83 / 43
Регистрация: 10.05.2016
Сообщений: 563
|
|
1 | |
Чтение файла полностью, используя функцию ReadFile03.01.2020, 16:32. Показов 7014. Ответов 13
Добрый день! Появилась следующая проблема. Дан текстовый файл с несколькими строками текста. Необходимо считать его полностью с помощью функции ReadFile. Прошу помочь в решении проблемы. Заранее спасибо.
0
|
03.01.2020, 16:32 | |
Ответы с готовыми решениями:
13
Чтение из файла ReadFile Чтение файла ReadFile и вывод Копирование файла кусками по 64КБ, используя ReadFile и WriteFile Создание файла с массивом и чтение этого файла обратно используя ShareActionProvider |
5118 / 4558 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
|
|
03.01.2020, 16:47 | 2 |
BlackStoneBlack, покажите, как Вы пытались решить эту задачу. Подправим...
В целом идея проста: открываем файл, узнаем длину файла, выделяем буфер нужного размера, читаем, закрываем файл.
0
|
half-horse half-gateway
117 / 83 / 43
Регистрация: 10.05.2016
Сообщений: 563
|
||||||
03.01.2020, 16:54 [ТС] | 3 | |||||
liv, идею-то я понял. Но вот с реализацией что-то не получается. Пробовал вот так:
0
|
5118 / 4558 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
|
||||||
03.01.2020, 17:05 | 4 | |||||
Сообщение было отмечено BlackStoneBlack как решение
Решение
BlackStoneBlack, ну, наверное, открывать следует так:
1
|
5118 / 4558 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
|
|
03.01.2020, 17:46 | 6 |
qll, функция ReadFile() не зависит от UNICODE. Она одна на все случаи жизни
Другими словами, ReadFileA() не существует! Вы хоть пробовали подсунуть студии это имя?
0
|
half-horse half-gateway
117 / 83 / 43
Регистрация: 10.05.2016
Сообщений: 563
|
|
03.01.2020, 18:04 [ТС] | 7 |
liv, да, уже понял. Глупые ошибки, как всегда
Добавлено через 4 минуты liv, однако, проблема остается. Файле содержится несколько строк. А он не читает все строки. Не знаю, почему. И прямо чую, что что-то неладное с char* text...
0
|
5118 / 4558 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
|
|
03.01.2020, 18:10 | 9 |
BlackStoneBlack, файл читается как есть, со всеми 0x0d, 0x0a. Получается, как один массив, одна строка, в конце которой записан терминальный нуль. Посмотрите в отладчике.
0
|
half-horse half-gateway
117 / 83 / 43
Регистрация: 10.05.2016
Сообщений: 563
|
|
03.01.2020, 18:17 [ТС] | 10 |
liv, тем не менее, Visual Studio 2019 ругается:
Предупреждение C6031 Возвращаемое значение пропущено: "ReadFile". Добавлено через 2 минуты liv, тогда ещё вопрос: корректно ли я, за неимением лучшего термина, привожу char* к string? Добавлено через 38 секунд Просто дальше идёт работа именно с переменной line, как со строкой.
0
|
5118 / 4558 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
|
|
03.01.2020, 18:20 | 11 |
BlackStoneBlack, да корректно все.
Что находится в переменной bytes? Там находится количество прочитанных байт. Т.е. должно быть bytes == size а ReadFile() возвращает BOOL, как результат выполнения. В принципе, можно проверить
0
|
half-horse half-gateway
117 / 83 / 43
Регистрация: 10.05.2016
Сообщений: 563
|
|
03.01.2020, 18:24 [ТС] | 12 |
liv, всё, разобрался. Снова глупая ошибка в дальнейшей обработке строки. К теме уже не относится. Спасибо за помощь
0
|
5118 / 4558 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
|
|
03.01.2020, 18:25 | 13 |
BlackStoneBlack, ну и славно
0
|
04.01.2020, 19:04 | 14 |
прежде чем чушь нести, удосужился бы посмотреть экспорт kernelbase.dll
ReadFile и ReadFileEx - это то, что получает система в нативе от юзера возможно ты спутал её с функцией CreateFile - вот она экспортируется и как юникодная (CreateFileW), и как многобайтовая (CreateFileA).
1
|
04.01.2020, 19:04 | |
04.01.2020, 19:04 | |
Помогаю со студенческими работами здесь
14
Чтение из файла, не используя getline Чтение файла используя методы TextIO Чтение файла используя динамический массив Построчное чтение из файла используя TStringList Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Что такое хорошо и что такое плохо, вид сбоку. Индивид и общество - грань не нарушения.
Hrethgir 18.01.2025
В моей личной жизни и времени, я рассуждаю категорией "хуже-лучше", в том плане, когда меня спросили например - "а зачем ты делаешь свой процессор?", то я ответил - "чтобы сделать свою жизнь лучше". . .
|
Передача по ссылке или по значению в Java?
InfoMaster 18.01.2025
В мире программирования на Java одним из ключевых аспектов, требующих глубокого понимания, является механизм передачи параметров в методы. Этот фундаментальный концепт часто становится источником. . .
|
Тернарный условный оператор в Python
InfoMaster 18.01.2025
В мире программирования существует множество инструментов и конструкций, позволяющих создавать эффективный и лаконичный код. Одним из таких инструментов является тернарный условный оператор, который. . .
|
Как удалить неотслеживаемые файлы из рабочего дерева Git
InfoMaster 18.01.2025
В процессе разработки программного обеспечения с использованием системы контроля версий Git часто возникает необходимость в управлении неотслеживаемыми файлами. Неотслеживаемые файлы (untracked. . .
|
Что делает код if __name__ == "__main__": в Python
InfoMaster 18.01.2025
В мире программирования на Python существует множество важных концепций, и одной из наиболее интересных является конструкция if __name__ == "__main__". Эта специальная конструкция играет ключевую. . .
|
Как заставить Git забыть об отслеживаемом файле, добавленном в .gitignore
InfoMaster 18.01.2025
В мире разработки программного обеспечения система контроля версий Git стала неотъемлемой частью рабочего процесса, позволяя эффективно отслеживать изменения в коде и управлять ими. Однако. . .
|
Что означает use strict в JavaScript и для чего используется
InfoMaster 18.01.2025
В мире современной веб-разработки JavaScript играет ключевую роль как один из основных языков программирования. По мере его эволюции возникла необходимость в механизмах, которые помогли бы. . .
|
Как работать со скрытыми (hidden) элементами в jQuery
InfoMaster 18.01.2025
В современной веб-разработке управление видимостью элементов на странице является одним из ключевых аспектов создания интерактивных пользовательских интерфейсов. jQuery предоставляет мощный набор. . .
|
Как переключаться между ветками (Branch) с помощью checkout в Git
InfoMaster 18.01.2025
Ветки в Git являются одной из ключевых концепций для управления версионностью кода, позволяя разработчикам эффективно работать в команде и параллельно развивать программные проекты. Каждый новый. . .
|
Что такое стек и куча, чем они отличаются и где находятся
InfoMaster 18.01.2025
Понимание основных концепций памяти в программировании
В мире современного программирования эффективное управление памятью играет ключевую роль в создании производительных и надежных приложений. . . .
|
Как использовать комментарии в JSON
InfoMaster 18.01.2025
JSON (JavaScript Object Notation) представляет собой легкий и широко используемый формат обмена данными, который стал стандартом де-факто для веб-приложений и программных интерфейсов. При работе с. . .
|
Как заставить git pull перезаписать локальные файлы в Git
InfoMaster 18.01.2025
Проблема перезаписи локальных файлов в Git
При работе с системой контроля версий Git разработчики часто сталкиваются с ситуацией, когда необходимо синхронизировать локальный репозиторий с. . .
|