Процедура Write в Delphi записывает данные в бинарный или текстовый файл.
System unit
- procedure Write (Expression1 {options} {, Expression2 {options} ...});
- procedure Write (var FileHandle : TextFile; Expression1 {options} {, Expression2 {options} ...});
- procedure Write (var FileHandle : File; var Value1 {,var Value2 ...});
Процедура Write записывает отдельную строку данных в файл или консоль.
Вариант 1.
Используется, чтобы записать строку текста на консоль.
Вариант 2.
Используется, чтобы записать строку текста в текстовый файл с данным указателем FileHandle.
Вариант 3.
Используется, чтобы записать строку данных в двоичный файл с данным указателем FileHandle.
Вы должны использовать AssignFile, чтобы связать файл с FileHandle и открыть файл с помощью процедуры Reset или ReWrite перед использованием WriteLn.
Запись текста может быть с любыми правильными Выражениями(Expression). Часто они являются строками, но могут быть также выражениями, которые приводят к строкам или числам.
После каждого выражения, вы можете добавить опции форматирования:
:width ширина поля для строк + чисел
:precision десятичные цифры для чисел
Для типизированных двоичных файлов, значения данных Value1, Value2 и т.д., записываются как строки данных в файл. Эти значения должны иметь тот же самый тип, что и файл.
Примечание.
Вы не можете использовать Write для записи в нетипизированный двоичный файл (объявленный как File без указания типа).
Для записи в двоичный файл используйте BlockWrite.
Процедура Write не буферизует записи, поэтому более эффективно использовать BlockWrite.
Процедура Write также является директивой Delphi. Она используется с ключевым словом Property.
Процедура Write: Иллюстрация записи простой, множественной и форматированной строки текста
var
myFile : TextFile;
text : string;
i : Integer;
begin
// Попытка открыть файл Test.txt для записи
AssignFile(myFile, 'Test.txt');
ReWrite(myFile);
// Запись нескольких известных слов в этот файл
Write(myFile, 'Hello ');
Write(myFile, 'World');
// Заканчиваем эту строку
WriteLn(myFile);
// Запись некоторых чисел в файл как одиночная линия
for i := 2 to 4 do
Write(myFile, i/2, ' ');
// Заканчиваем эту строку
WriteLn(myFile);
// Повторение вышеупомянутого, но с форматированием чисел
for i := 2 to 4 do
Write(myFile, i/2:5:1);
// Заканчиваем эту строку
WriteLn(myFile);
// Закрываем файл
CloseFile(myFile);
// Повторное открытие файла только для чтения
Reset(myFile);
// Показ содержимого файла
while not Eof(myFile) do
begin
ReadLn(myFile, text);
ShowMessage(text);
end;
// Закрытие файла в последний раз
CloseFile(myFile);
end;
Результат
Hello World
1.00000000000000E+0000 1.50000000000000E+0000 2.00000000000000E+0000
1.0 1.5 2.0
Процедура Write: Запись типизированных записей в двоичный файл типа записи
type
TCustomer = record
name : string[20];
age : Integer;
male : Boolean;
end;
var
myFile : File of TCustomer; // Файл записи клиента
customer : TCustomer;
begin
// Попытка открыть бинарный файл Test.cus для записи
AssignFile(myFile, 'Test.cus');
ReWrite(myFile);
// Запись нескольких записей клиента в файл
customer.name := 'Fred Bloggs';
customer.age := 21;
customer.male := true;
Write(myFile, customer);
customer.name := 'Jane Turner';
customer.age := 45;
customer.male := false;
Write(myFile, customer);
// Закрытие файла
CloseFile(myFile);
// Повторное открытие файла в режиме только для чтения
FileMode := fmOpenRead;
Reset(myFile);
// Показ содержимого файла
while not Eof(myFile) do
begin
Read(myFile, customer);
if customer.male
then ShowMessage('Мужчина по имени '+customer.name+
' - '+IntToStr(customer.age))
else ShowMessage('Женщина по имени '+customer.name+
' - '+IntToStr(customer.age));
end;
// Закрытие файла в последний раз
CloseFile(myFile);
end;
Результат
Мужчина по имени Fred Bloggs - 21
Женщина по имени Jane Turner - 45
Процедура Write: Запись в двоичный файл типа Word
var
myWord, myWord1, myWord2 : Word;
myFile : File of Word;
begin
// Попытка открыть бинарный файл Test.bin для записи
AssignFile(myFile, 'Test.bin');
ReWrite(myFile);
// Запись нескольких строк Word данных в файл
myWord1 := 234;
myWord2 := 567;
Write(myFile, myWord1, myWord2);
// Закрытие файла
CloseFile(myFile);
// Повторное открытие файла в режиме только для чтения
FileMode := fmOpenRead;
Reset(myFile);
// Показ содержимого файла
while not Eof(myFile) do
begin
Read(myFile, myWord);
ShowMessage(IntToStr(myWord));
end;
// Закрытие файла в последний раз
CloseFile(myFile);
end;
Результат
234
567
Похожие функции, процедуры и команды
AssignFile — связывает дескриптор файла с бинарным или текстовым файлом.
BlockRead — читает блок записей данных из нетипизированного двоичного файла.
BlockWrite — записывает блок записей данных в нетипизированный двоичный файл.
File — определяет типизированный или нетипизированный файл.
Read — позволяет прочитать данные из двоичного или текстового файла.
ReadLn — позволяет прочитать полную строку данных из текстового файла.
Reset — открывает текстовый файл для чтения, или двоичный файл для чтения/записи.
ReWrite — открывает текстовый или двоичный файл для записи.
TextFile — объявляет типа файл для того, чтобы сохранить строки текста.
WriteLn — записывает законченную строку данных в текстовый файл.
