# I/O Utility Classes
ReadMe

## Description

These classes are designed to assist in various I/O related tasks. Classes are provided to:

- Simplify the opening of files in various different modes with specified security attributes and to provide access to the file handle.
- Simplify working with unnamed pipes.
- Handle the formatting of data read from pipes, for example reading Unicode strings.

For full details please see the online documentation.

These classes used to be included in the Console Application Runner Classes project to help handle standard I/O redirection but were pulled out into their own project because they have wider uses.

### Compatibility

The classes require Delphi 7 and later.

They are also compatible with Windows 64 bit compilers of Delphi XE2 and later. The classes have Windows dependencies and so cannot be compiled for non-Windows targets.

The units can be included in both FireMonkey or VCL Windows applications.

## Installation

The I/O Utility Classes and associated documentation are supplied in a zip file. Before installing, or using, you need to extract all the files from the zip file, preserving the directory structure. The following files will be extracted:

- `PJFileHandle.pas` – Source code of the class used to open files in various sharing and security modes.
- `PJPipe.pas` – Source code of class used to encapsulate unnamed pipes.
- `PJPipeFilters.pas` – Source code of classes that can be used to filter output from pipes.
- `Docs\ChangeLog.txt` – The project's change log.
- `Docs\Documentation.URL` – Short-cut to the project's online documentation.
- `Docs\MPL-2.0.txt` – Mozilla Public License v2.0.
- `Docs\ReadMe.htm` – The project's read-me file (this file).

There are three possible ways to use the units.

1. The simplest way is to add `PJFileHandle.pas`, `PJPipe.pas` and `PJPipeFilters.pas`to your projects as you need them.
2. To make the units easier to re-use you can either copy them to a folder on your Delphi search path, or add the folder where you extracted the units to the search path. You then simply use the units as required without needing to add them to your project.
3. For maximum portability you can add the units to a Delphi design time package. If you need help doing this see here.

## Demo Programs

There are no demo projects included with the download. However, much of the code is used in some of the demos included with the Console Application Runner Classes.

## Update History

A complete change log is provided in a text file that is included in the download.

## License

The I/O Utility Classes are released under the terms of the Mozilla Public License, v2.0.

## Bugs and Feature Requests

Bugs can be reported or new features requested via the Issue Tracker.

If no similar report or request has been recorded already, use the New Issue link to add a new issue. Please select the most appropriate template from the Templates drop down list and apply the `Project-ioutils` label. If there is already a similar issue please add a comment to it if there's anything you can add.

## About the Author

I'm Peter Johnson – a hobbyist programmer living in Ceredigion in West Wales, UK, writing write mainly in Delphi. My programs are available for download from http://www.delphidabbler.com/.

Please let me know if you have any comments about the classes, but please use the Issue Tracker discussed above to report bugs and request new features.
This document is copyright © 2013, P D Johnson, www.delphidabbler.com