[fpc-pascal] How to split file of whitespace separated numbers?

greim greim at schleibinger.com
Fri Dec 23 15:12:08 CET 2016


Hey Kids,

why so complicated?

Good old Niklaus Wirth has already everything done for you:
I have to cite one sentence on the last slide at his birthday colloquium:

"Reducing size and complexity is the triumph"

So READ is already quite clever, it doesn't care about whitespaces, 
carriage returns and linefeeds :


PROGRAM readline;

VAR a  : ARRAY[0..1000000] OF double;
     infile : TEXT;
     lauf, lauf2 : longint;

BEGIN
lauf := 0;
assign(infile, 'infile.txt');
reset(infile);
WHILE NOT(eof(infile)) DO

         BEGIN
         read(infile, a[lauf]);
         inc(lauf);
         END;

close(infile);

FOR lauf2 := 0 TO pred(lauf) DO

         BEGIN
         writeln('Index : ', lauf2, ' Value : ', a[lauf2]);
         END;


END.


And here infile.txt:

  123.4   55.2 33.1 4
  12.1 1.1
1 2 3 4
     333.888 444.555

Regards

Markus


















Am 23.12.2016 um 14:06 schrieb Sven Barth:
> Am 23.12.2016 12:54 schrieb "Graeme Geldenhuys"
> <mailinglists at geldenhuys.co.uk <mailto:mailinglists at geldenhuys.co.uk>>:
>>
>> On 2016-12-23 08:14, Bo Berglund wrote:
>> > Is there a quick way to split a string of whitespace separated values
>> > into the separate members?
>>
>>
>> That problem is perfectly suited for regular expressions. And a rather
>> simple one at than. The FPC's FCL packages include a regex unit too
>> which should suite your needs.
>>
>>
>> http://www.regex101.com/
>>
>> http://www.regexplained.co.uk/
>>
>> http://regex.info/
>>   Even the trial book (first chapter only) of "Mastering Regular
>>   Expressions" is invaluable for users new to regex. And will
>>   explain all you need to know to solve your problem.
>>
>
> Regular expressions usually have a higher overhead however (as you might
> have noticed, Bo timed his code later on).
> For example at work I changed a regular expression based parser for the
> lines of a log file to a simpler one and the speedup was noticeable (I
> don't have exact numbers anymore however).
>
> Regards,
> Sven
>
>
>
> _______________________________________________
> fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
>



More information about the fpc-pascal mailing list