fpspreadsheet: Remove rpn calculation support for the Excel functions PROPER and SUBSTITUTE - there are no adequate function available in Lazarus.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3259 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2014-07-01 07:51:52 +00:00
parent f1223bfea4
commit 688eab0099
3 changed files with 2 additions and 73 deletions

View File

@ -112,10 +112,8 @@ function fpsCODE (Args: TsArgumentStack; NumArgs: Integer): TsArgument;
function fpsLEFT (Args: TsArgumentStack; NumArgs: Integer): TsArgument;
function fpsLOWER (Args: TsArgumentStack; NumArgs: Integer): TsArgument;
function fpsMID (Args: TsArgumentStack; NumArgs: Integer): TsArgument;
function fpsPROPER (Args: TsArgumentStack; NumArgs: Integer): TsArgument;
function fpsREPLACE (Args: TsArgumentStack; NumArgs: Integer): TsArgument;
function fpsRIGHT (Args: TsArgumentStack; NumArgs: Integer): TsArgument;
function fpsSUBSTITUTE (Args: TsArgumentStack; NumArgs: Integer): TsArgument;
function fpsTRIM (Args: TsArgumentStack; NumArgs: Integer): TsArgument;
function fpsUPPER (Args: TsArgumentStack; NumArgs: Integer): TsArgument;
@ -1158,15 +1156,6 @@ begin
Result := CreateString(UTF8Copy(sdata[0], Round(fData[0]), Round(fdata[1])));
end;
function fpsPROPER(Args: TsArgumentStack; NumArgs: Integer): TsArgument;
// PROPER( text )
var
data: TStrArray;
begin
if PopStringValues(Args, 1, data, Result) then
Result := CreateString(UTF8ProperCase(data[0]));
end;
function fpsREPLACE(Args: TsArgumentStack; NumArgs: Integer): TsArgument;
// REPLACE( old_text, start, number_of_chars, new_text )
var
@ -1232,30 +1221,6 @@ begin
Result := CreateString(UTF8RightStr(s, count));
end;
function fpsSUBSTITUTE(Args: TsArgumentStack; NumArgs: Integer): TsArgument;
// SUBSTITUTE( text, old_text, new_text, [nth_appearance] )
var
data: TStrArray;
arg_n: TsArgument;
n: Integer;
begin
n := -1;
if NumArgs = 4 then begin
arg_n := Args.Pop;
if arg_n.ArgumentType <> atNumber then begin
Result := CreateError(errWrongType);
exit;
end;
n := round(arg_n.Numbervalue);
end;
if PopStringValues(Args, 3, data, Result) then begin
if n = -1 then
Result := CreateString(UTF8StringReplace(data[0], data[1], data[2], [rfReplaceall]))
else
raise Exception.Create('not implemented');
end;
end;
function fpsTRIM(Args: TsArgumentStack; NumArgs: Integer): TsArgument;
// TRIM( text )
var

View File

@ -1207,10 +1207,10 @@ const
(Symbol:'LEFT'; MinParams:1; MaxParams:2; Func:fpsLEFT), // fekLEFT
(Symbol:'LOWER'; MinParams:1; MaxParams:1; Func:fpsLOWER), // fekLOWER
(Symbol:'MID'; MinParams:3; MaxParams:3; Func:fpsMID), // fekMID
(Symbol:'PROPER'; MinParams:1; MaxParams:1; Func:fpsPROPER), // fekPROPER
(Symbol:'PROPER'; MinParams:1; MaxParams:1; Func:nil), // fekPROPER
(Symbol:'REPLACE'; MinParams:4; MaxParams:4; Func:fpsREPLACE), // fekREPLACE
(Symbol:'RIGHT'; MinParams:1; MaxParams:2; Func:fpsRIGHT), // fekRIGHT
(Symbol:'SUBSTITUTE';MinParams:3; MaxParams:4; Func:fpsSUBSTITUTE), // fekSUBSTITUTE
(Symbol:'SUBSTITUTE';MinParams:3; MaxParams:4; Func:nil), // fekSUBSTITUTE
(Symbol:'TRIM'; MinParams:1; MaxParams:1; Func:fpsTRIM), // fekTRIM
(Symbol:'UPPER'; MinParams:1; MaxParams:1; Func:fpsUPPER), // fekUPPER
{ lookup/reference }

View File

@ -1184,42 +1184,6 @@
SetLength(sollValues, Row+1);
sollValues[Row] := CreateString('d');
// SUBSTITUTE
inc(Row);
MyWorksheet.WriteUTF8Text(Row, 0, '=SUBSTITUTE("lazarus", "s", "s.exe")');
MyWorksheet.WriteRPNFormula(Row, 1, CreateRPNFormula(
RPNString('lazarus',
RPNString('s',
RPNString('s.exe',
RPNFunc(fekSUBSTITUTE, 3, nil))))));
SetLength(sollValues, Row+1);
sollValues[Row] := CreateString('lazarus.exe');
// SUBSTITUTE
inc(Row);
MyWorksheet.WriteUTF8Text(Row, 0, '=SUBSTITUTE("lAzArus", "A", "a")');
MyWorksheet.WriteRPNFormula(Row, 1, CreateRPNFormula(
RPNString('lAzArus',
RPNString('A',
RPNString('a',
RPNFunc(fekSUBSTITUTE, 3, nil))))));
SetLength(sollValues, Row+1);
sollValues[Row] := CreateString('lazarus');
// SUBSTITUTE / utf8
inc(Row);
MyWorksheet.WriteUTF8Text(Row, 0, '=SUBSTITUTE("lÄzÄrus", "Ä", "a")');
MyWorksheet.WriteRPNFormula(Row, 1, CreateRPNFormula(
RPNString('lÄzÄrus',
RPNString('Ä',
RPNString('a',
RPNFunc(fekSUBSTITUTE, 3, nil))))));
SetLength(sollValues, Row+1);
sollValues[Row] := CreateString('lazarus');
// SUBSTITUTE / 4 parameters
// to do...
// Trim
inc(Row);
MyWorksheet.WriteUTF8Text(Row, 0, '=TRIM(" Hallo word ")');