DelphiBasics
Write
Procedure
Write data to a binary or text file System unit
1 procedure Write(Expression1 {options} {, Expression2 {options} ...});
2 procedure Write (var FileHandle TextFile; Expression1 {options} {, Expression2 {options} ...};
3 procedure Write (var FileHandle File; var Value1 {,var Value2 ...};
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
AssignFileAssigns a file handle to a binary or text file
BlockReadReads a block of data records from an untyped binary file
BlockWriteWrites a block of data records to an untyped binary file
FileDefines a typed or untyped file
ReadRead data from a binary or text file
ReadLnRead a complete line of data from a text file
ResetOpen a text file for reading, or binary file for read/write
ReWriteOpen a text or binary file for write access
TextFileDeclares a file type for storing lines of text
WriteLnWrite a complete line of data to a text file
 Download this web site as a Windows program.




 
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
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;
Show full unit code
  234
  567
 
Delphi Programming © Neil Moffatt . All rights reserved.  |  Home Page