アプリ版:「スタンプのみでお礼する」機能のリリースについて

Delphi初心者です。
ユーザーに任意の計算式【例:(100+50)*12】をEditなどに文字列入力させ、その答え【1800】を計算するプログラムを簡単に作成できないでしょうか?括弧を多用する長い式でもエクセルの様に式全体を一度に評価できる方法があればベストなのですが?

A 回答 (4件)

はじめまして。


※Delphi-MLからの情報です。

MicrosoftScriptControlを使えば間単にできます。私も最近このことを知りました。

ActiveXコントロールの取り込みで 'Microsoft Script Control 1.0' を取り込み
uses節に MSScriptControl_TLB を追加します。

ボタン,ラベルを追加し、

procedure TForm1.Button1Click(Sender: TObject);
var
msc: TScriptControl;
begin
sc := TScriptControl.Create( Self );
msc.Language := 'VBScript';

label1.caption := VarToStr( msc.Eval( 'sin(0.2) + log(20)' ) ) ;
msc.Free;
end;

これでどうでしょう。文法チェックしていませんのでケアレスミスは修正願います。

この回答への補足

ご回答ありがとうございます。まさに私が希望していた内容です。Delphiで無事確認できました。(sc:= ・・・は、 msc:=・・・ の入力ミスだと思われます)【お礼が送信できないので補足で失礼します】

補足日時:2005/06/12 01:37
    • good
    • 0
この回答へのお礼

貴重なご回答ありがとうございました。

お礼日時:2005/06/14 19:44

#3です。


解決されたようですが、、、

DelphianWorld の Miscellaneous にあります。

http://www.delphianworld.com/
http://www6.airnet.ne.jp/~sone_san/delphi/cgi-bi …

この回答への補足

度重なるご回答ありがとうございます。
ご紹介いただきましたコンポーネントのダウンロードできました。Delphiで機能の確認を行いました。私の要望する範囲の機能を試した結果、No.#2様紹介のコンポーネントと同じ結果を得ることができました。ありがとうございました。

補足日時:2005/06/12 14:29
    • good
    • 0
この回答へのお礼

親切なご回答ありがとうございました。

お礼日時:2005/06/14 19:45

TMathsParser というコンポーネントがあります。


http://www.geocities.jp/fujimaki691202/

希望にそうものか不明ですのでご自分で試して下さい。

この回答への補足

ご回答ありがとうございます。ご指定のURLからコンポーネントをダウンロードしようと試みましたが、残念ながらできませんでした。

補足日時:2005/06/12 01:40
    • good
    • 0

Delphiのことは知らないのですが、そういう時は逆ポーランド記法と言うものを使います。

(他の方法もあるかもしれませんが)
チャレンジしがいのある問題で、プログラム初心者への課題としてだされるほど有名な問題です。過去にC言語で作ったことがありますが、とても勉強になった記憶があります。

お手軽に済ませたいならDelphiにはそういうことをやってくれるコンポーネント(?)があるかも知れないので、探してみてください。
「逆ポーランド」か「Reverse Polish Notation」でどうぞ。

この回答への補足

「逆ポーランド記法」を教えていただきありがとうございました。インターネット等で調べ、問題解決にがんばります。

補足日時:2005/06/11 18:48
    • good
    • 0
この回答へのお礼

親切なご回答ありがとうございました。

お礼日時:2005/06/14 19:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!