お世話になります。よろしくお願いします。
環境は6のパーソナル、OSはXPです。
フォーム内にLabeledEditを3つ用意し1と2にはあらかじめテキスト
ファイルから読み込んだ数字が入っております。
この2つの数字を読み取り計算した結果を3に書き込もうと思っています。
1と2は手入力する場合があるので、その度に3が変化しないといけない
のでフォームのOnActivateイベントで挑戦しております。
procedure TForm2.FormActivate(Sender: TObject);
var
ITI:integer;
NI:integer;
SAN:integer;
begin
ITI:=strtoint(LabeledEdit1.text);
NI:=strtoint(LabeledEdit2.text);
SAN:=ITI * NI
LabeledEdit3.Text:=inttostr(SAN);
end;
コンパイルはするのですが、実行するとsysutils.pasが見つかりません
のメッセージが出てしまいます。どこが悪いでしょうか?
ご存知でしたらご指導ください。よろしくお願いいたします。
最初にFormが表示される時、
LabeledEditに文字が入ってない状態なので、
エラーになってるようです。
OnActivate時以外で計算を行うか、
または
if (LabeledEdit1.text<>'') and (LabeledEdit2.text<>'') then
などで、文字がある状態の時のみ計算を行うようにする必要があると思います。
StrToInt関数はSysUtilsユニットを参照するので、Usesに追加しましょう。
また、ぅぅぅさんがおっしゃっているように、空白だとエラーになりますので、対策をしましょう。StrToIntDef関数もその一つです。
ぅぅぅさん、HOotaさんありがとうございました。
UsesにSysUtilsがあることを確認して、
>if (LabeledEdit1.text<>'') and (LabeledEdit2.text<>'') then
を追加して実行したのですがフォームの表示を実行する前後のコード
が悪いらしく表示できませんでした。(メッセージは出なくなりました)
ご指導通りOnActivate時をやめOnClickにしてみた正常に動作できました。
この形態で続けてOnActivateに絡む問題は後で腰を据えて調査しようと
思います。
表示の問題自体は解決できましたので「解決」とさせていただきます。
お忙しい所ご指導くださり感謝申し上げます。
どうもありがとうございました。
ツイート | ![]() |