Description |
The Write procedure writes a single line of data to a file or to the console.
Version 1
Is used to write a line of text to the console.
Version 2
Is used to write a line of text to a text file with the given FileHandle.
Version 3
Is used to write a line of data to a binary file with the given FileHandle.
You must use AssignFile to assign a file to the FileHandle and open the file with Reset or ReWrite before using Write.
For text files, the text written may be any valid Expression(s). Often these will be strings, but may also be expressions that result in strings or numbers.
After each expression, you can add formatting options:
:width | Field width for strings + numbers |
:precision | Decimal digits for numbers |
For typed binary files, data values Value1, Value2 etc, are written as data lines to the file. These values must be of the same type as the file.
|
|
Notes |
You cannot use Write to write to an untyped binary file (one declared as File with no following of type).
To write to a binary file, use BlockWrite.
Write does not buffer records, so it is more efficient to use BlockWrite.
Write is also a Delphi directive. It is used with the Property keyword.
|
|
Related commands |
AssignFile |
|
Assigns a file handle to a binary or text file |
BlockRead |
|
Reads a block of data records from an untyped binary file |
BlockWrite |
|
Writes a block of data records to an untyped binary file |
File |
|
Defines a typed or untyped file |
Read |
|
Read data from a binary or text file |
ReadLn |
|
Read a complete line of data from a text file |
Reset |
|
Open a text file for reading, or binary file for read/write |
ReWrite |
|
Open a text or binary file for write access |
TextFile |
|
Declares a file type for storing lines of text |
WriteLn |
|
Write a complete line of data to a text file |
|
|
|
Example code : Illustrating single, multiple and formatted text line writing |
var
myFile : TextFile;
text : string;
i : Integer;
begin // Try to open the Test.txt file for writing to
AssignFile(myFile, 'Test.txt');
ReWrite(myFile);
// Write a couple of well known words to this file
Write(myFile, 'Hello ');
Write(myFile, 'World');
// Terminate this line
WriteLn(myFile);
// Write some numbers to the file as a single line
for i := 2 to 4 do
Write(myFile, i/2, ' ');
// Terminate this line
WriteLn(myFile);
// Repeat the above, but with number formatting
for i := 2 to 4 do
Write(myFile, i/2:5:1);
// Terminate this line
WriteLn(myFile);
// Close the file
CloseFile(myFile);
// Reopen the file for reading only
Reset(myFile);
// Display the file contents
while not Eof(myFile) do
begin
ReadLn(myFile, text);
ShowMessage(text);
end;
// Close the file for the last time
CloseFile(myFile);
end;
|
Show full unit code |
Hello World
1.00000000000000E+0000 1.50000000000000E+0000 2.00000000000000E+0000
1.0 1.5 2.0
|
|
Example code : Write typed records to a record type binary file |
type
TCustomer = record
name : string[20];
age : Integer;
male : Boolean;
end;
var myFile : File of TCustomer; // A file of customer record
customer : TCustomer;
begin // Try to open the Test.cus binary file for writing to
AssignFile(myFile, 'Test.cus');
ReWrite(myFile);
// Write a couple of customer records to the file
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);
// Close the file
CloseFile(myFile);
// Reopen the file in read only mode
FileMode := fmOpenRead;
Reset(myFile);
// Display the file contents
while not Eof(myFile) do
begin
Read(myFile, customer);
if customer.male
then ShowMessage('Man with name '+customer.name+
' is '+IntToStr(customer.age))
else ShowMessage('Lady with name '+customer.name+
' is '+IntToStr(customer.age));
end;
// Close the file for the last time
CloseFile(myFile);
end;
|
Show full unit code |
Man with name Fred Bloggs is 21
Lady with name Jane Turner is 45
|
|
Example code : Writing to a Word type binary file |
// Full Unit code. // ----------------------------------------------------------- // You must store this code in a unit called Unit1 with a form // called Form1 that has an OnCreate event called FormCreate. unit Unit1; interface uses // The System unit does not need to be defined SysUtils, Forms, Dialogs; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} // Include form definitions procedure TForm1.FormCreate(Sender: TObject); var
myWord, myWord1, myWord2 : Word;
myFile : File of Word;
begin // Try to open the Test.bin binary file for writing to
AssignFile(myFile, 'Test.bin');
ReWrite(myFile);
// Write a couple of lines of Word data to the file
myWord1 := 234;
myWord2 := 567;
Write(myFile, myWord1, myWord2);
// Close the file
CloseFile(myFile);
// Reopen the file in read only mode
FileMode := fmOpenRead;
Reset(myFile);
// Display the file contents
while not Eof(myFile) do
begin
Read(myFile, myWord);
ShowMessage(IntToStr(myWord));
end;
// Close the file for the last time
CloseFile(myFile);
end; end.
|
Hide full unit code |
234
567
|
|