Reading a file in FreePascal

filefpcfreepascalpascal

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?

Best Solution

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.