Is there a quick way to split a string of whitespace separated values into the separate members? I have to create a function to process a number of big data files where numbers are stored in lines of 4-6 values using whitespace inbetween. First I got a sample looking like this: {code} 0.4167 0.3636 -14.1483 227.2260 {code} Here the separators were 4 spaces so on each line I used (slDecode is a TStringList): {code} sLine := StringReplace(sLine, ' ', #13, [rfReplaceAll]); slDecode.Text := sLine; {code} Worked fine if a bit slow... The stringlist items are then passed to a string to float function and stored into a dynamic array.
But then it failed on a file containing lines like this: {code} 0.000 0.000 7.000 0.000 29.6628 {code} Here there are 3 leading spaces plus one separator is only 2 spaces wide. So I had to modify the code: {code} sLine := Trim(sLine); sLine := StringReplace(sLine, ' ', #13, [rfReplaceAll]); sLine := StringReplace(sLine, ' ', #13, [rfReplaceAll]); slDecode.Text := sLine; {code} This works in this case but now I realize I need something better, which can deal with varying number of whitespace chars inbetween numbers. The test files are very big, like half a million lines and up, so I cannot introduce a lot of code in the loop since processing time will increase. Is there any good and quick way to extract real data from a space separated list without knowing beforehand the size of the whitespace separators? I guess that my next sample problem will be a file with TAB rather than space or even mixed TAB and space... -- Bo Berglund Developer in Sweden _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal