Reading a file in FreePascal

Clueless picture Clueless · Mar 22, 2012 · Viewed 10.6k times · Source

I have a text file with specified structure, namely (for each line): char, space, char, space, double value, endline. For instance

q w 1.23
e r 4.56
t y 7.89

What is the proper way to "extract" those values in Free Pascal?

Answer

Wouter van Nifterick picture Wouter van Nifterick · Mar 23, 2012

FreePascal has the function SScanF in SysUtils (you might know if from other languages..)

I've modified RRUZ's example to show how to use it.

uses SysUtils;

type
  TData=object
    Val1 ,
    Val2 : String;
    Val3 : Double;
  end;

procedure ProcessFile(aFileName:String);
var
  F     : Text;
  LData : TData;
  Line  : String;
begin
  DecimalSeparator:='.';
  AssignFile(F,aFileName);
  Reset(F);
  while not eof(F) do
  begin
    ReadLn(F,Line);
    SScanf(Line,'%s %s %f',[@LData.Val1,@LData.Val2,@LData.Val3]);

    //do something with the data
    WriteLn(LData.Val1);
    WriteLn(LData.Val2);
    WriteLn(LData.Val3);
  end;
end;

begin
  ProcessFile('C:\Bar\Foo\Data.txt');
  Writeln('Press Enter to exit');
  Readln;
end.