Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ReadFile, непонятки с параметрами 
V
    Опции темы
Helicopterr
Дата 24.4.2006, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 20.8.2005
Где: Stavropol

Репутация: 2
Всего: 3



Нужно прочитать файл в массив, использую ReadFile:
Код

char myArray[100];
ReadFile ( hFile,    //это я сделал
myArray,          //это мой массив
100,                 //здесь точно не знаю
?,                   //? LPDWORD lpNumberOfBytesRead
?                   //? LPOVERLAPPED lpOverlapped
); 

По идее ф-ция популярная, объясните кто пользовался. Заранее спасибо.

 


--------------------
people can fly
PM MAIL   Вверх
LPBOY
Дата 24.4.2006, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 12.7.2005

Репутация: 20
Всего: 20



BOOL ReadFile(
  HANDLE hFile,
  LPVOID lpBuffer,
  DWORD nNumberOfBytesToRead,
  LPDWORD lpNumberOfBytesRead,
  LPOVERLAPPED lpOverlapped
);

nNumberOfBytesToRead - число байт, которое хочешь прочитать.
lpNumberOfBytesRead - указатель на DWORD. После завершения функции этот DWORD содержит реальное количество прочитанных байт, если дошли до конца файла, то будет равен нулю.
lpOverlapped - забей, поставь 0. smile А вообще можно передавать указатель на структуру OVERLAPPED, чтобы 
начинать чтение с определенной позиции. Вместо этого можно использовать SetFilePointer. Если при открытии файла был установлен FILE_FLAG_OVERLAPPED, то параметр используется для асинхронного ввода/вывода. 
--------------------
Каждый человек по-своему прав, а по-моему нет...
PM MAIL   Вверх
Helicopterr
Дата 24.4.2006, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 20.8.2005
Где: Stavropol

Репутация: 2
Всего: 3



Цитата(LPBOY)
lpNumberOfBytesRead - указатель на DWORD. После завершения функции этот DWORD содержит реальное количество прочитанных байт

чуть по чуть понял, но как его инициализировать?

Код

HANDLE hFile = CreateFile( "help.txt", GENERIC_READ, FILE_SHARE_READ, (LPSECURITY_ATTRIBUTES) NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, (HANDLE) NULL); 

LPBYTE myArray[100];
LPDWORD lpNumberOfBytesRead; //?

ReadFile( hFile, myArray, 100, lpNumberOfBytesRead, NULL ) ; 

CloseHandle(hFile);

Появляется виндовое окно отправлять отчет или не отправлять... 


--------------------
people can fly
PM MAIL   Вверх
LPBOY
Дата 24.4.2006, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 12.7.2005

Репутация: 20
Всего: 20



Цитата(Helicopterr @  24.4.2006,  14:21 Найти цитируемый пост)
но как его инициализировать

Вот так
Код

DWORD dw;
LPDWORD lpNumberOfBytesRead = &dw;

или сразу передавай в функцию &dw.
Код

#include <windows.h>
#include <iostream>

int main()
{
    const int N = 100;
    DWORD dw;
    char array[N];
    HANDLE h = CreateFile ("d:\\file.txt", GENERIC_READ, 0, 0, 
                             OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
    if(h == INVALID_HANDLE_VALUE)
    {
        std::cout << "error\n";
        return -1;
    }
    ReadFile(h, array, N, &dw, 0);
    for(int i = 0; i < dw; ++i)
        std::cout << array[i] << ' ';
    CloseHandle(h);
    return 0;
}


Цитата(Helicopterr @  24.4.2006,  14:21 Найти цитируемый пост)
Появляется виндовое окно отправлять отчет или не отправлять...  

Не отправляй. smile
  

Это сообщение отредактировал(а) LPBOY - 24.4.2006, 14:56
--------------------
Каждый человек по-своему прав, а по-моему нет...
PM MAIL   Вверх
nikitao
Дата 24.4.2006, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: 1
Всего: 26



 smile 
Цитата(Helicopterr @  24.4.2006,  15:21 Найти цитируемый пост)
Появляется виндовое окно отправлять отчет или не отправлять... 

По типу,как мое собственное приложение достоет меня и говорит,мол ,чтобы я скачал новое обнавление
 smile  


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
Helicopterr
Дата 24.4.2006, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 355
Регистрация: 20.8.2005
Где: Stavropol

Репутация: 2
Всего: 3



Все работает. Большое спасибо! 


--------------------
people can fly
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.7429 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.