英寸转化为码的函数!
材料的规格是这样:24.7*35.8*2
现在想把前面的两个数(英寸)转化为码,最后面的那个数是个数就不要了。
1英寸=0.28码
规格是用户输入,所以写函数的时候要以*判断截取字符串转化。
Function ChangeGuiGe(GG:string):string;
var //英寸转化为码
   Real1,Real2:Double;
   Sub1,Sub2:string;
begin
    if pos('*',GG)>0 then
    begin
      Sub1:=Copy(GG,1,pos('*',GG)-1);
      GG:=Copy(GG,Pos('*',GG)+1,Length(GG));
      Sub2:=Copy(GG,1,Pos('*',GG)-1);
      Real1:=strtoFloat(sub1)*0.28;
      Real2:=StrtoFloat(Sub2)*0.28;
      Result:=Floattostr(Real1)+Floattostr(Real2);
    end;
end;
我写的这个可以编译,但运行时出错,错在哪?

解决方案 »

  1.   

    Result:=Floattostr(Real1)+Floattostr(Real2);
    这句错误,先两个数字加,再变为字符串
    var Real3:Double;
    Real3 := Real1 + Real2;
    Result := Floattostr(Real3);
      

  2.   

    Function ChangeGuiGe( var GG:string):string;
    或者在程序里另外用一个来保存Copy(GG,Pos('*',GG)+1,Length(GG));
      

  3.   

    Function TForm1.ChangeGuiGe(GG:string):string;
    var //英寸转化为码
       Real1,Real2:Double;
       Sub1,Sub2,Sub3:string;
    begin
        if pos('*',GG)>0 then
        begin
          Sub1:=Copy(GG,1,pos('*',GG)-1);
          GG:=Copy(GG,Pos('*',GG)+1,Length(GG));
          Sub2:=Copy(GG,1,Pos('*',GG)-1);
          GG:=Copy(GG,Pos('*',GG)+1,Length(GG));
          Sub3:=Copy(GG,1,Pos('*',GG)-1);
          Real1:=strtoFloat(sub1)*0.28;
          Real2:=StrtoFloat(Sub2)*0.28;
          Result:=Floattostr(Real1)+'*'+Floattostr(Real2)+'*'+Sub3;
        end;
    end;
    前面两个数转换正常,可是最后那个数字没显示出来,Sub3有错吗?
      

  4.   

    sub1 := Copy(GG,1,pos('*',GG)-1); // 24.7
    sub2 := Copy(gg,pos('*',GG),pos('*',copy(gg,pos('*',GG)-1,Length(GG)))) // 35.8
    sub3 := Copy(copy(gg,pos('*',GG)-1,Length(GG)),1,Length(GG));