先坦白,这是我第一次打开delphi
前不久用java实现了一个,无界面的
老师让用delphi编一个,上网看了些教程又查了查delphi的帮助,现还有几个地方没弄明白1,空值怎么表示?我用''和null都不行呢?在运行1/x的时候需要用到2,delphi中好像没有switch,是用case else end;吗?else可以不写吗?3,我的想法是写一个函数,输入两个int型数值和一个操作符:char就计算出结果,我想用switch (op) 然后case,delphi帮助中没查到这个写法,然后下面纯属我自己瞎编:
function calValue(I, op, J):Integer;begin
  case op :=  '+';
  begin
    Result := I + J;
  end;  case op :=  '-';
  begin
    Result := I - J;
  end;  case op :=  '*';
  begin
    Result := I * J;
  end;  case op :=  '/';
  begin
    Result := I / J;
  end;end; 
写法上有哪些问题啊?还有/的话,值可能为小数,怎么转换呢?4,计算器中按1后 再按+ 再按2,意思是1 + 2,在按键的事件中加入上面的函数好像还不可行,这里实在想不明白....5,如何给.exe文件换上自己想要的图标啊?run以后的.exe就是想要的文件了么?胡言乱语了,也不知道高手们看不看得懂我的意思,谢过~

解决方案 »

  1.   

    5,PROJECT里面有的,可以选自己的图标
      

  2.   

    1, 什么数据类型?   字串--'', 指针--nil2, case OrdVar of
         1 : ...
         2 : ...
             .
             .
       else      //可有可无
             .
       end;
    3, 见2, case 用法不对
    4, 通过虚拟键值和ASCII码响应处理,
    5, Project-->Option-->Application-->Load Icon 可改变
      

  3.   

    3.
    function calValue(I:Integer, op:char, J:Integer):Integer;
    begin 
     case Op of
       '+':  Result := I + J;
       '-':  Result := I - J;
       '*':  Result := I * J;
     end
    end;
      

  4.   

    http://www.reallysoft.com.cn/software/JSQ.RAR嗬嗬,这个是我的第一个delphi程序啊。回想起来往事不堪回首阿,四年过去了。不怕你笑话,拿出四年前的代码给你看吧。因为也是我初学的作品,我认为比较适合你。
      

  5.   

    to:YYQQ(阿鱼)是字符串,就是'+''-'while () and () do 可以加else吗?if可以用and 吗?4, 通过虚拟键值和ASCII码响应处理,
    不理解,能够给个例子,谢谢
      

  6.   

    另外,请购买一本《delphi6 开发人员指南》或者《delphi6 从入门到精通》任选一本。不用弄懂,只要看一遍之后再回过头来写代码。因为里面许多东西都是基本的,书本上的东西。
      

  7.   

    1: 什么意思?是不是/0,可以通过判断给text赋值“无意义”
    2:同上
    3: 同上
    4:
    在=号剑事件内,通过判定是+,-,×,/,调用不同的函数即可
    5:
    是的。同上
      

  8.   

    //初学DELPHI做的
    unit U_jsq;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Buttons, StdCtrls;type
      Tfrm_jsq = class(TForm)
        Edit1: TEdit;
        SpeedButton1: TSpeedButton;
        SpeedButton2: TSpeedButton;
        SpeedButton3: TSpeedButton;
        SpeedButton4: TSpeedButton;
        SpeedButton5: TSpeedButton;
        SpeedButton6: TSpeedButton;
        SpeedButton7: TSpeedButton;
        SpeedButton8: TSpeedButton;
        SpeedButton9: TSpeedButton;
        SpeedButton10: TSpeedButton;
        SpeedButton11: TSpeedButton;
        SpeedButton12: TSpeedButton;
        SpeedButton13: TSpeedButton;
        SpeedButton14: TSpeedButton;
        SpeedButton15: TSpeedButton;
        SpeedButton16: TSpeedButton;
        SpeedButton17: TSpeedButton;
        SpeedButton18: TSpeedButton;
        SpeedButton19: TSpeedButton;
        SpeedButton20: TSpeedButton;
        procedure SpeedButton5Click(Sender: TObject);
        procedure SpeedButton4Click(Sender: TObject);
        procedure SpeedButton1Click(Sender: TObject);
        procedure SpeedButton2Click(Sender: TObject);
        procedure SpeedButton3Click(Sender: TObject);
        procedure SpeedButton6Click(Sender: TObject);
        procedure SpeedButton7Click(Sender: TObject);
        procedure SpeedButton8Click(Sender: TObject);
        procedure SpeedButton11Click(Sender: TObject);
        procedure SpeedButton12Click(Sender: TObject);
        procedure SpeedButton13Click(Sender: TObject);
        procedure SpeedButton16Click(Sender: TObject);
        procedure SpeedButton17Click(Sender: TObject);
        procedure SpeedButton14Click(Sender: TObject);
        procedure SpeedButton15Click(Sender: TObject);
        procedure SpeedButton18Click(Sender: TObject);
        procedure SpeedButton19Click(Sender: TObject);
        procedure SpeedButton10Click(Sender: TObject);
        procedure SpeedButton9Click(Sender: TObject);
        procedure SpeedButton20Click(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      frm_jsq: Tfrm_jsq;
      temp1:string; //表示操作数
      temp2:real;   //表示结果
      flag:integer; //表运算符
    implementation{$R *.dfm}procedure Tfrm_jsq.SpeedButton5Click(Sender: TObject);
    begin
      frm_jsq.Close;
    end;procedure Tfrm_jsq.SpeedButton4Click(Sender: TObject);
    begin
       Edit1.SetFocus;
       Edit1.Text:='';
    end;procedure Tfrm_jsq.SpeedButton1Click(Sender: TObject);
    begin
      Edit1.Text:=Edit1.Text+'1';
    end;procedure Tfrm_jsq.SpeedButton2Click(Sender: TObject);
    begin
       Edit1.Text:=Edit1.Text+'2';
    end;procedure Tfrm_jsq.SpeedButton3Click(Sender: TObject);
    begin
      Edit1.Text:=Edit1.Text+'3';
    end;procedure Tfrm_jsq.SpeedButton6Click(Sender: TObject);
    begin
      Edit1.Text:=Edit1.Text+'4';
    end;procedure Tfrm_jsq.SpeedButton7Click(Sender: TObject);
    begin
      Edit1.Text:=Edit1.Text+'5';
    end;procedure Tfrm_jsq.SpeedButton8Click(Sender: TObject);
    begin
       Edit1.Text:=Edit1.Text+'6';
    end;procedure Tfrm_jsq.SpeedButton11Click(Sender: TObject);
    begin
      Edit1.Text:=Edit1.Text+'7';
    end;procedure Tfrm_jsq.SpeedButton12Click(Sender: TObject);
    begin
      Edit1.Text:=Edit1.Text+'8';
    end;procedure Tfrm_jsq.SpeedButton13Click(Sender: TObject);
    begin
      Edit1.Text:=Edit1.Text+'9';
    end;procedure Tfrm_jsq.SpeedButton16Click(Sender: TObject);
    begin
      Edit1.Text:=Edit1.Text+'0';
    end;procedure Tfrm_jsq.SpeedButton17Click(Sender: TObject);
    begin
      Edit1.Text:=Edit1.Text+'.';
    end;procedure Tfrm_jsq.SpeedButton14Click(Sender: TObject);
    begin
       flag:=1;
       temp1:=Edit1.Text;
       Edit1.Clear;
    end;procedure Tfrm_jsq.SpeedButton15Click(Sender: TObject);
    begin
      flag:=2;
      temp1:=Edit1.Text;
      Edit1.Clear;   
    end;procedure Tfrm_jsq.SpeedButton18Click(Sender: TObject);
    begin
       flag:=3;
       temp1:=Edit1.Text;
       Edit1.Clear;
    end;procedure Tfrm_jsq.SpeedButton19Click(Sender: TObject);
    begin
      flag:=4;
      temp1:=Edit1.Text;
      Edit1.Clear;
    end;procedure Tfrm_jsq.SpeedButton10Click(Sender: TObject);
    begin
       flag:=5;
       temp1:=Edit1.Text;
      // Edit1.Clear;
    end;procedure Tfrm_jsq.SpeedButton9Click(Sender: TObject);
    begin
       flag:=6;
       temp1:=Edit1.Text;
       //Edit1.Clear;
    end;procedure Tfrm_jsq.SpeedButton20Click(Sender: TObject);
    begin
       case flag of
          1: temp2:=strtofloat(temp1)+strtofloat(Edit1.Text);
          2: temp2:=strtofloat(temp1)-strtofloat(Edit1.Text);
          3: temp2:=strtofloat(temp1)*strtofloat(Edit1.Text);
          4: temp2:=strtofloat(temp1)/strtofloat(Edit1.Text);
          5: temp2:=sqrt(strtofloat(temp1));
          6: temp2:=strtofloat(temp1)*strtofloat(Edit1.Text);
         end;
       Edit1.Text:=floattostr(temp2);   
    end;procedure Tfrm_jsq.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      action:=cafree;
    end;end.
      

  9.   

    用到strtoint時﹐考慮范圍越界
      

  10.   

    上面两份代码中都没有考虑除数为0的情况啊我在1/x按钮中添加的代码如下:
    procedure TForm1.Button1xClick(Sender: TObject);
    begin
    if (StrToFloat(Screen.Text) = 0) then
    begin
     Screen.Text := '不能运算';
    end
     else if (Screen.Text <> '') then
        Screen.Text := FloatToStr(1 / StrToFloat(Screen.Text))
      else
        Screen.Text := '不能运算';
    end;
    但是这样不是很好,为空的仍然报错,我不明白错在哪,盼望高手指教还有一个问题,每次运行程序的位置怎么设定
    还有按钮上文字的颜色怎么更改?我在Font属性里改成蓝色的,但是很奇怪还是黑色的
    form1的Font属性也改成蓝色的了
    如果改字体和粗细都是可以的
      

  11.   

    哦,对了,我想让Screen(就是Edit1)里的文字是右靠齐的怎么做呢?