{
This sample code is presented as is.
Although every reasonable effort has been
made to insure the soundness of the example
below, Idioma Software inc. makes no warranty
of any kind with regard to this program sample
either implicitly or explicitly.
This program example may be freely distributed for the
use of writing computer programs only. Any other use of
this material requires written permission from Idioma Software inc.
(c) 1997 Idioma Software inc. All rights reserved.
}
{
This example shows how to do IO using records.
}
Procedure RecIO;
{Author Jon Vote 10/97}
type {Define a sample record}
EmpRec = Record
LastName : string[25];
FirstName : string[25];
MI : string[1];
EmployeeNumber : integer;
End; {IORec}
const FILE_NAME = 'iotest.tmp';
var IORec : EmpRec; {Record Varibale}
f : file of EmpRec; {File variable}
SearchRec: TSearchRec; {Used with FindFirst}
begin
{Assign the file varaible}
assignfile(f, FILE_NAME);
{create the file if it doesn't exist}
if FindFirst(FILE_NAME, 0, SearchRec) <> 0 then
rewrite(f);
FindClose(SearchRec); {Always do this after FindFirst, FindNext}
{Point to beginning of file}
reset(f);
{Write a few sample values to the file}
IORec.LastName := 'Public';
IORec.FirstName := 'John';
IORec.MI := 'Q';
IORec.EmployeeNumber := 100;
write(f, IORec);
IORec.LastName := 'Doe';
IORec.FirstName := 'Jane';
IORec.MI := 'E';
IORec.EmployeeNumber := 200;
write(f, IORec);
IORec.LastName := 'Homeowner';
IORec.FirstName := 'Harry';
IORec.MI := 'P';
IORec.EmployeeNumber := 300;
write(f, IORec);
{Read the values back}
reset(f);
While not eof(f) do begin
read(f, IORec);
ShowMessage (IORec.LastName + ',' + IORec.FirstName + ' '
+ IORec.MI + ' ' + IntToStr(IORec.EmployeeNumber));
end; {While}
{Add another record to the end}
Seek(f, FileSize(f));
IORec.LastName := 'Homemaker';
IORec.FirstName := 'Suzy';
IORec.MI := 'B';
IORec.EmployeeNumber := 400;
write(f, IORec);
{Change the 2nd entry's LastName field}
{Note: The first entry is 0}
reset(f);
Seek(f, 1);
read(f, IORec);
Seek(f, 1);
IORec.LastName := 'Smith';
write(f, IORec);
{Show the change}
reset(f);
While not eof(f) do begin
read(f, IORec);
ShowMessage (IORec.LastName + ',' + IORec.FirstName + ' '
+ IORec.MI + ' ' + IntToStr(IORec.EmployeeNumber));
end; {While}
{Delete the file}
Erase(f);
CloseFile(F);
end; { RecIO }