请问高手。为什么我通过strtocurr函数转化,有的时候结果为空,里面有值的呀
比如
 var 
  str:string;
  str1:curreny;
   str:='23.12';
  str1:=strtocurr(str);
而结果str1变成了6.888882323e+12或0。我想知道为什么出现这样的错误呢。这个函数有些什么限制呢。我看别人都这么用好象没问题。
高手请教 我用的是DELPH 6。
急急呀。这一个函数搞了1整天

解决方案 »

  1.   

    有没有搞错呀。都没高手来回答下拉
    我再说说:函数:求N个数X的平凡的和函数
      function getXXALL(X:array of string):currency;
    var 
      temp,tt:currency;
      i:integer;
    begin
      temp:=0;
       for i:=0 to lenggth(X)-1 do
       begin
         tt:=strtocurr(X[i])
         tt:=tt*tt;
         temp:=temp+tt;
       end;
      result:=temp;
    end;调用:
    X1: array of string;
    X1X1,Y1Y1:currency;
    begin
      X1已经给值了,
       X1X1:=getXXALL(X1);
       Y1Y1:=GETXXALL(X1);
    END;
    结果。为什么X1X1是正确的,而Y1Y1却为0呢。
    相同的调用。结果却这样。为什么呀。高手呀。帮帮我拉。
      

  2.   

    我这里显示正常 我用的是d7,求平方的函数是sqr
      

  3.   

    呵呵,应该没问题,show一下试试
      

  4.   

    你在下面加上一句   ShowMessage(Format('X1Y1=%f, X2Y2=%f',[X1X1,Y1Y1]));
    肯定显示的结果就是对的你在后面没有用到X1X1,Y1Y1所以结果就是不对的了,编译器优化了没去管它
      

  5.   

    楼主啊,我今天也遇到了同样的问题,
    D6, 
    x := strtocurr(edt1.text);
    调试时,Edt1的值是"450",
    可是X的值始终为"0", 
    后来好像换成: strtofloat();反正现在可以用了,记不清楚是用的strtocurr 还是 strtofloat.