unit StringCalculation2; interface function StrCaluculation(Formula: String): Extended; implementation uses XPtest; const OperatorStr: array[0..5] of String = ('+', '-', '*', '/', '^', '**'); function StrCaluculation(Formula: String): Extended; begin Result := 0.0; end; procedure testStrCaluculation; begin Check(100, StrCaluculation('200-100')); Check(100, StrCaluculation('-200+100')); Check(100, StrCaluculation('200+(-100)')); Check(100, StrCaluculation('10*20-100')); Check(100, StrCaluculation('10*20-5*20')); end; function StrCaluculationSimple(Formula: String): Extended; begin { ----------------------------------- ・文字列の1文字目から数値要素を取り出す 取り出せなかったら例外 ・数値文字列要素の文字数が求まる ・次の文字から演算子要素を取り出す 取り出せなかったら例外 ・次の文字から数値要素を取り出す 取り出せなかったら例外 ・残りは空要素しかない事を確認 変な要素があったら例外 ・FirstValue、Operator、SecondValueに従って計算する //----------------------------------- } end; procedure testStrCaluculationSimple; begin Check(100, StrCaluculation('200-100')); Check(100, StrCaluculation('-200+100')); Check(100, StrCaluculation('200+(-100)')); Check(100, StrCaluculation('200+ -100')); Check(100, StrCaluculation('10 * 10')); end; end.