[fpc-pascal] How to split file of whitespace separated numbers?
Howard Page-Clark
hdpc at talktalk.net
Fri Dec 23 12:49:57 CET 2016
On 23/12/16 08:14, Bo Berglund wrote:
> Is there a quick way to split a string of whitespace separated values
> into the separate members?
It is possible that a custom string parser (something along these lines)
might improve your processing speed:
type
TDoubleArray = array of Double;
function StrToDblArray(const aString: string): TDoubleArray;
var
c: Char;
prevNumeric: boolean = False;
sNum: string = '';
number: double;
function IsNumeric: boolean; inline;
begin
Exit(c in ['.', '0'..'9']);
end;
begin
SetLength(Result, 0);
for c in aString do begin
case IsNumeric of
False: if prevNumeric then begin
if TryStrToFloat(sNum, number) then begin
SetLength(Result, Length(Result) + 1);
Result[High(Result)]:=number;
end;
sNum:='';
prevNumeric:=False;
end;
True: begin
sNum:=sNum + c;
if not prevNumeric then
prevNumeric:=True;
end;
end;
end;
if prevNumeric and TryStrToFloat(sNum, number) then begin
SetLength(Result, Length(Result) + 1);
Result[High(Result)]:=number;
end;
end;
More information about the fpc-pascal
mailing list