Hello, Is there something special that needs to be done to pass strings by value?
The code below seems to mangle any strings I pass pretty well, when I would assume it would only mangle the local copy in the function:
program testfunc(output);
var aline : string (20) VALUE 'foo|bar|baz';
function countfields(line : string; axis : char) : integer; var count : integer VALUE 0; begin if length(line) > 0 then count := 1; while index(line, axis) > 0 do begin count := count + 1; line := substr(line, index(line, axis) + 1); end; countfields := count; end;
begin writeln(aline); writeln(countfields(aline, '|'), ' field(s)'); writeln(aline); end.
Under either 971001, or the 980106 alpha I get the following output:
foo|bar|baz 3 field(s) baz
which is what I would expect if countfields() accepted 'line' as a VARiable parameter.
-Kevin
-- Kevin A. Foss --- kfoss@mint.net --