Hi

i need to read the last 14 Entries made into a typed file and then list the entries in a StringGrid so i can copy them to label captions later.

I am a little unsure how to write the Code to loop for the last 14 Entries.

the current code i have is this

if SysUtils.FileExists(ShiftFile) then
  begin
    // Reopen the file in read only mode
    AssignFile(F, ShiftFile);
    Reset(F);
    try
      // Display the file contents
    while Not Eof(F) do
      Read(F, shift);
      // Here i need to find the last 14 Entries
    finally
      CloseFile(F);
    end;

i know that the While Not EoF will just read the entire file until it reaches the end.

How could i make it Read only the last 14 Entries and then list each one in a StringGrid so i can use them later.

thank you for your time.

I'll just give you a few more commands to play with :-)

On a typed file, you just use the command FileSize(Type).
It gives you the exact number of records in the file.
:icon_exclaim: just remember that 0 is also a record.

Now for the coding:

VAR
  TheStart, TheEnd:INTEGER;
BEGIN
.... ... ..
  TheEnd:=FileSize(YourAssignedFileType);
  TheStart:=FileSize-14;
  DEC(TheStart); // We need to decrease this value by one because we count Zero too.
  Seek(YourAssignedFileType,TheStart);// Jumps to the correct location of data.
  REPEAT
    .... read the data
    INC(TheStart);
  UNTIL TheStart=TheEnd;
.. ... ....
END;

I am sure you figure the rest out.
If you have less than 14 records, you need to make some code to avoid error there too.

Best regards.
Morten, Norway.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.