Содержание
  ДОМОЙ
  НОВОСТИ  
  IT АКАДЕМИЯ
  WAP-ВЕРСИЯ
  ФОРУМ
  БЕЗОПАСНОСТЬ
  ПРОГРАММИРОВАНИЕ
  ИНСТРУМЕНТ ВЕБМАСТЕРА
  ВСЁ ДЛЯ КПК
  СТАТЬИ NEW
  СОФТ
  ВИДЕО
  X-INFO
  ПРОКСИ ЛИСТ
  IT МУЗЫКА
  АНЕКДОТЫ
  ССЫЛКИ
  ТЕХ. ПОДДЕРЖКА
  ПРАВООБЛАДАТЕЛЯМ
  О НАС

 

Ваш IP

18.227.107.146

Человек на сайте На сайте: 122 человек(а)

Здесь могла бы
быть Ваша
РЕКЛАМА




Файлы - чтение и запись в файлы (win api)

Итак, чтение и запись в файлы на win api, производится функциями ReadFile и WriteFile, я опишу их поочереди, и вконце приведу пример полной программы, которая читает/записывает в файл.
Функция

ReadFile(
  hFile : cardinal,
  var buffer,
  nNumberOfBytesToRead : cardinal,
  var lpNumberOfBytesRead : cardinal,
  lpOverlapped : POVERLAPPED
) : boolean;

считывает из файла hFile в буфер buffer, lpNumberOfBytesRead байтов, при этом возвращает в переменную lpNumberOfBytesRead сколько было ДЕЙСТВИТЕЛЬНО прочитано. Последним параметром указываем на структуру OVERLAPPED, обычно ставим nil, он нужен если файл с которым мы работаем был создан с флагом FILE_FLAG_OVERLAPPED. Теперь про функцию

WriteFile(
  hFile : cardinal,
  var buffer,
  nNumberOfBytesToWrite : cardinal,
  var lpNumberOfBytesWritten : cardinal,
  lpOverlapped : POVERLAPPED
) : boolean;

она считывает в файл, hFile из буфера nNumberOfBytesToWrite байт, возвращает в переменную lpNumberOfBytesWritten сколько действительно удалось записать. М последним параметром идёт указатель на структуру OVERLAPPED.
   Должен заметить что данные функции работают на порядок быстрее чем встроенные в delphi blockread и blockwrite, чтобы это понять достаточно запомнить что, blockread и blockwrite - это макро, использующие опять-таки те же самые апи функции ReadFile и WriteFile, достаточно взглянуть в исходник, и всё сразу становится понятно, я не знаю о чём думают спецы в компании borland, но явно не об небольшом размере и скорости. А жаль.
   Ну да ладно, что-то я отвлёкся, и так, приведу пример:

Листинг 1.0 - чтение-запись файла. исходник
program ReadWrite;

uses
  Windows;

var
  flr,flw : hFile;
  buf : array[0..10] of byte;
  rdd, wtd : cardinal;


begin
  flr := CreateFile('toread.txt',
   GENERIC_READ or GENERIC_WRITE,
   0, nil, OPEN_EXISTING,
   FILE_ATTRIBUTE_NORMAL, 0);

  flw := CreateFile('towrite.txt',
   GENERIC_READ or GENERIC_WRITE,
   0, nil, OPEN_ALWAYS,
   FILE_ATTRIBUTE_NORMAL, 0);

  ReadFile(flr, buf, 11, rdd, nil);
  WriteFile(flw, buf, 11, wtd, nil);

  CloseHandle(flr);
  CloseHandle(flw);
end.

   Итак, в примере мы затратили всего две строчки, для чтения и записи - всё остальное ушло на "подготовку" - открытие и содание файлов. Если не можешь понять что за бред написан ниже или выше ReadFile и WriteFile, тогда посылаю тебя прямиком сюда, изучать открытие-закрытие файлов. Ну а мы двигаемся дальше. В примере, я создал/открыл файл для записи и открыл файл для чтения (понятно, что создавать его нельзя - надо же откуда-то читать то, что будем записывать) так что откопай у себя какойнть файл, переименуй в toread.txt, и засунь в папку с программой (ну или полный путь к файлу укажи). Далее я прочитал из файла flr в буфер buf 11 байт, сколько реально прочитано вернул в rdd, ну и последний параметр не нужен, поэтому устанавливаем его в nil. Запись производится аналогично, поэтому оставим её на домашнее задание =).

SLAyer

Другие статьи

По всем вопросам и предложениям по сайту пишите на info@comp-info.ru
 


Содержание
  ДОМОЙ
  НОВОСТИ  
  IT АКАДЕМИЯ
  WAP-ВЕРСИЯ
  ФОРУМ
  БЕЗОПАСНОСТЬ
  ПРОГРАММИРОВАНИЕ
  ИНСТРУМЕНТ ВЕБМАСТЕРА
  ВСЁ ДЛЯ КПК
  СТАТЬИ NEW
  СОФТ
  ВИДЕО
  X-INFO
  ПРОКСИ ЛИСТ
  IT МУЗЫКА
  АНЕКДОТЫ
  ССЫЛКИ
  ТЕХ. ПОДДЕРЖКА
  ПРАВООБЛАДАТЕЛЯМ
  О НАС

 
Поиск по сайту
Утилиты

  Сниффер
  Лог сниффера
  MD5 и Base64
  Декодирование MD5 NEW
 Перекодировщик
  Проверить прокси
  Проверка анонимности
  Генерация пароля
  Скрипт определения IP
  Поиск информации
   Проверить IP (Whois)
   Узнать скорость закачки
   Добавить свой сайт в поисковые системы>
   Подсветка php-кода

ПОЛЕЗНАЯ ИНФОРМАЦИЯ:
  Список национальных доменных имен
  Компьютерные термины
  Смайлики
   Аналоги Win-программ в Linux
   Коды ответа HTTP сервера
   Записки невесты программиста

Здесь могла бы
быть Ваша
РЕКЛАМА





Права на содержащиеся на сайте материалы принадлежат авторам материалов и владельцам проекта.
Copyright Комп-Инфо.ру © 2005