[fpc-pascal] How to split file of whitespace separated numbers?
greim at schleibinger.com
Fri Dec 23 15:12:08 CET 2016
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 :
VAR a : ARRAY[0..1000000] OF double;
infile : TEXT;
lauf, lauf2 : longint;
lauf := 0;
WHILE NOT(eof(infile)) DO
FOR lauf2 := 0 TO pred(lauf) DO
writeln('Index : ', lauf2, ' Value : ', a[lauf2]);
And here infile.txt:
123.4 55.2 33.1 4
1 2 3 4
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.
>> 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).
> fpc-pascal maillist - fpc-pascal at lists.freepascal.org
More information about the fpc-pascal