- •Структура модуля
- •Interface
- •Implementation
- •Interface
- •Implementation
- •4. Инкапсуляция
- •7. Области видимости
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Interface
- •Implementation
- •10. Функции работы с файлами
- •11. Построение пользовательского интерфейса
- •Interface
- •Implementation
- •С помощью объекта Range выделим диапазон
- •Компонент tDataSource
10. Функции работы с файлами
Паскалевский метод доступа к файлам:
http://www.delphisources.ru/pages/faq/base/all_about_files.html
1) Определяем файловую переменную:
var
f: TextFile;
2) Ассоциируем ее:
AssignFile(F, 'c:\MyFile.txt');
3) Теперь надо этот файл открыть, есть 3 варианта:
файла нет или он должен быть перезаписан, открытие для записи: Rewrite(f)
файл есть и его надо открыть для чтения (с первой строки): Reset(f)
файл есть и его надо открыть для дописывания строк в конец: Append(f)
4) В конце работы открытый файл нужно закрыть:
CloseFile(f);
Чтение предварительно открытого файла:
ReadLn(f, s) - будет прочитана текущая строка и позиция чтения переведена на следующую позицию.
А как прочитать весь файл?
while not eof(f) do
begin
ReadLn(f, s);
{здесь делаем что-то с прочитанной строкой}
end;
Теперь как писать в текстовый файл:
Запись целой строки:
Writeln(f,s);
Некоторые функции для работы с файлами модуля SysUtils:
function FileOpen(const FileName: string; Mode: LongWord): Integer;
Открывает существующий файл в режиме Mode. Возвращает дескриптор открытого файла.
Допустимы следующие режимы открытия файлов:
fmOpenRead = $0000;
fmOpenWrite = $0001;
fmOpenReadWrite = $0002;
function FileSeek(Handle, Offset, Origin: Integer): Integer;
Позиционирует файл с дескриптором Handle в новое положение. При
Origin=0 (позиционируем от начала файла)
Origin=1 (позиционируем от текущей позиции)
Origin=2 (позиционируем от конца файла).
Возвращает новое положение либо -1 при ошибке.
function FileWrite(Handle: Integer; const Buffer; Count: Integer): Integer;
Записывает в файл с дескриптором Handle Count байт из Buffer.
Пример записи в конец файла:
var
FileHandle : Integer;
st:string;
…
FileHandle := FileOpen('d:\1.txt', fmOpenWrite);
st:='hello korolev HELLO!!!!!! '+#13+'12345';
FileSeek(FileHandle,0,2);
FileWrite(FileHandle,st[1],length(st));
function FileCreate(const FileName: string): Integer;
Создает файл с именем FileName. Возвращает дескриптор созданного файла (как и function FileOpen).
function FileRead(Handle: Integer; var Buffer; Count: Integer): Integer;
Считывает из файла с дескриптором Handle Count байт в Buffer. Возвращает число прочитанных байт или -1 при ошибке.
Пример:
var
FileHandle: Integer;
iFileLength: Integer;
iBytesRead: Integer;
Buffer: PChar;
i: Integer
…
FileHandle := FileOpen('d:\1.txt', fmOpenRead);
iFileLength := FileSeek(FileHandle,0,2);
FileSeek(FileHandle,0,0);
Buffer := PChar(AllocMem(iFileLength + 1));
iBytesRead := FileRead(FileHandle, Buffer^, iFileLength);
writeln('read from file:');
for i := 0 to iBytesRead-1 do
begin
write(Buffer[i]);
end;
{ // можно и так
st2:=StrPas(Buffer);
writeln('read from file=',st2);
}
FileClose(FileHandle);
function AllocMem(Size: Cardinal): Pointer;
Выделяет блок памяти размером Size и возвращает указатель на него.
Cardinal 0..4294967295 unsigned 32-bit
function FindFirst(const Path: string; Attr: Integer; var F: TSearchRec): Integer;
Ищет первый файл, удовлетворяющий маске поиска, заданной в Path и с атрибутами Attr. В случае успеха заполняет запись TSearchRec и возвращает 0, иначе возвращает код ошибки.
type
TSearchRec = record
Time: Integer;
Size: Integer;
Attr: Integer;
Name: TFileName;
ExcludeAttr: Integer;
FindHandle: THandle;
FindData: TWin32FindData;
end;
Constant Value Description
faReadOnly 1 Read-only files
faHidden 2 Hidden files
faSysFile 4 System files
faVolumeID 8 Volume ID files
faDirectory 16 Directory files
faArchive 32 Archive files
faAnyFile 71 Any file
function FindNext(var F: TSearchRec): Integer;
Продолжает процесс поиска файлов, по заданной маске. Параметр F должен быть заполнен при помощи FindFirst. Возвращает 0, если очередной файл найден, или код ошибки.
procedure FindClose(var F: TSearchRec);
Завершает процесс поиска файлов, по заданной маске.
if FindFirst('d:\*.*', faAnyFile, sr) = 0 then
begin
repeat
writeln(sr.Name);
until FindNext(sr) <> 0;
FindClose(sr);
end;
ФУНКЦИИ РАБОТЫ С ДАТОЙ И ВРЕМЕНЕМ
(стр 92)