Процедура 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 — записує закінчений рядок даних у текстовий файл.
