MISS 发表于 2012-2-22 23:18:41

delhpi7中V3计算器中有些代码不是很清楚什么意思 求解

视频中也没有解释!有点不太明白!

V3计算器

声明变量
这个是+号中的代码
求解Oper:= '+';的含义    我知道是字符型函数赋值为+   但是不知道有什么用!
这个是=号中的代码
求解不明白Case Oper of什么意思
不明白每行代码前面的'   ':+-*/是什么意思





希望大家给与解答3Q在此15分奉上

comeheres 发表于 2012-2-22 23:18:42

本帖最后由 comeheres 于 2012-2-22 23:52 编辑

1.Oper:= '+';   //是指把“+”赋值给Oper这个字符型变量
比如我按下按钮“+”,Oper的值就是+;按下按钮“-”,Oper的值就是-

2.Case…of…是一种条件语句
——————————————————————————————————————————————————————————
      case语句与 if 语句功能相似,但 case 语句执行的是对一个结果的多种分支进行判断, 由 case语句中的表达式的值来决定具体执行哪个操作。当 if 语句非常复杂的时候,可以考 虑用 case语句来代替它。
case语句的语法格式为:

case SwitchExpression of
case1:Expression1;
case2:Expression2;

caseN:Expressionn;
else
Statement;
end;
      执行 case 语句时,首先计算出 SwitchExpression 表达式的值,然后判断 SwitchExpression 表达式的值与下面的 case1~caseN 的哪一个相同,如果有相同的,则执行该 case 值后对应 的语句;如果都不相同,则执行 else 之后的语句。其中,else 和它之后的语句可以省略, 省略后的格式为:

case SwitchExpression of
case1:Expression1;
case2:Expression2;
...
caseN:Expressionn;
end;
注意:
(1) SwitchExpression 应该是一个有序类型的表达式(如整型、字符型、布尔型、子界类

型等),不能是实型或字符串类型。
(2) caseN 的值也应该是一个有序类型的值。而且每个值必须是常量,且必须是唯一的。
——————————————————————————————————————————————————————————
也可以看看 结构化程序设计02_-_零基础入门学习Delphi_009 这节视频,如果看完还不懂再请教吧。

{:7_182:}留给LZ一点思考的余地





Flyfish 发表于 2012-2-23 09:15:07

你好Flyfish,第一次来这里!不知什么时候在网上看到小甲鱼的汇编教程!看后觉得讲课方式新颖,独特,详细!呵呵,以后也来这里和大家学习了!还请各位师兄师姐多多指教!以前也学过一些Delphi和其他编程语言!这个问题,我想如果你学过C或C++的话,就不是那么难理解了!在C中是这样写的#include <stdio.h>
int main()
{
    float x,y,result;
    char op;
        printf("本程序仅演示加减乘除四则运算:(输入格式:18*99=)\n");
while (3 == scanf("%f%c%f=", &x, &op, &y) )//判断如果输入格式为44+78=,就进入循环,开始计算
    {
        switch(op) //op为分支条件或表达式
        {
      case '+':result = x + y;//如果分支为‘+’,即用户输入的第二个字符为加号,进行加法运算
            break;
      case '-':result = x - y;//如果分支为‘-’,即用户输入的第二个字符为减号,进行减法运算
            break;
      case '*':result = x * y;//如果分支为‘*’,即用户输入的第二个字符为乘号,进行乘法运算
            break;
      case '/':result = x / y;//如果分支为‘/’,即用户输入的第二个字符为除号,进行除法运算
            break;
      default:;
      }

      printf("%f\n", result);//输入结果!
                return 0 ;
    }

} 下面是Delphi的非完整代码
var
oper:char;          //上面这里行类似于C中的 char oper;定义字符变量,应该能看懂

begin               //注意这个Begin了,相当于C中的第一个大括号
case Oper of      //相当于C中的Switch(op) ,这里以字符变量Oper作为条件,C中不放在大括号内 ,与C略有差异
'+':result:=temp+StrToFloat(Edit1.Text);//前面的'+'只是一个变量Oper的选项值而已,所以用单引号括起,StrToFloat();是Delphi字符型转浮点型函数
                      //第一个冒号,可以理解为标号,后面的冒号等于号则是Delphi中的赋值语法,给变量
                      //赋值,后面这个不加单引号的加号起加法运算作用
'-':result:=temp-StrToFloat(Edit1.Text);
//前面的'-'只是一个变量Oper的选项值而已,所以用单引号括起
                      //第一个冒号,可以理解为标号,后面的冒号等于号则是Delphi中的赋值语法,给变量
                      //赋值,后面这个不加单引号的减号起减法运算作用
'*':result:=temp*StrToFloat(Edit1.Text);
//前面的'*'只是一个变量Oper的选项值而已,所以用单引号括起
                      //第一个冒号,可以理解为标号,后面的冒号等于号则是Delphi中的赋值语法,给变量
                      //赋值,后面这个不加单引号的乘号起乘法运算作用
'/':result:=temp/StrToFloat(Edit1.Text);
//前面的'/'只是一个变量Oper的选项值而已,所以用单引号括起
                      //第一个冒号,可以理解为标号,后面的冒号等于号则是Delphi中的赋值语法,给变量
                      //赋值,后面这个不加单引号的除号起除法运算作用

end;               //看这里代码块的结束,相当于C的后半个大括号!
对比C代码看下吧,希望能够帮到你!

流星一瞬间 发表于 2012-2-24 01:14:37

这个 oper:='+'就是很明确了说明了,+ 在这代表一个字符来出现,为了方便后面case语句的调用,否则case语句直接调用+时,就会出现混乱,就会出现+是代表正负了还是代表加减了,电脑就疯了,呵呵。正好有前面的oper:='+'赋值,才能更好的进行正常调用。。。。呵呵 是不是表达的不够清楚了??我语文水平就这高了,哈哈 估计你能看懂了。
后面的case语句你要看不懂,就去看视频009吧,很简单的。留给你自学下吧、

flysky1222 发表于 2012-3-19 23:06:24

大家都描述得好清楚啊

比翼飞※贤※ 发表于 2012-3-21 13:39:38

大家都写得很细致了。等给分

长大的幸福 发表于 2012-6-17 13:23:29

其实按我自己的理解是是指我赋给Oper一个Char型标识符号,只是为了后面程序执行当你点“=”时,程序去找到这个标识符号,已便于寻找我要执行的是哪一个语句。并不是说把“+”这个算法赋给Oper,真正地算法是在后面['+':result:=temp+StrToFloat(Edit1.Text);] 这一句中的第二个“+”才是真正地运算符号,说白了就是,我可以改写成这样Oper:='@';第二句改写成'@':result:=temp+StrToFloat(Edit1.Text);结果是一样的。:lol 我现在在这个V3基础上加上Not/Or/And/Xor,希望能成功。如果成功了楼主需要可以M我,我给你源代码。:loveliness:说的不好希望大家纠正。

赖赖 发表于 2013-5-14 16:32:21

不错不错,学习到了      

白色风铃101 发表于 2015-1-29 22:18:51

给个源码学习一下吧大神吗

tl11096 发表于 2015-8-9 14:43:08

不错,学习了!

江上客-无类 发表于 2016-9-28 14:35:22

    procedure FormCreate(Sender: TObject);

procedure TForm1.FormCreate(Sender: TObject);
begin
SetWindowLong(Edit1.Handle, GWL_STYLE, GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_RIGHT);
Edit1.Invalidate;
end;

什么意思呢

页: [1]
查看完整版本: delhpi7中V3计算器中有些代码不是很清楚什么意思 求解