procedure TForm1.Button6Click(Sender: TObject);
var
  sql, Str, Price: string;
  i, p1, P2: Integer;
  Money : Double;
begin
  Str := '';
  Money := 0;
  Str := ComboBox1.Text;
  sql := 'Select * from Information where dCtry = ' + quotedstr(Str);
  ADOQuery6.Close;
  ADOQuery6.sql.Clear;
  ADOQuery6.sql.Add(sql);
  ADOQuery6.open;
  for i := 0 to ADOQuery6.RecordCount do
  begin
     Price := ADOQuery6.FieldByName('dsPrice').AsString;
    p1 := Pos('-', Price);
      if p1 > 1 then
      Price := Copy(Price, p1 + 1, Length(Price));
        P2 := Pos('US$', Price);
    Price := Copy(Price, P2 + Length('US$'), Length(Price));
    Price := Trim(Price);
    Money := StrToFloat(Price);
    ADOQuery6.Next;
  end;
end;
大家帮忙看下。我得到的Money 结果居然是0.无结果。怎么回事啊?没看到什么问题啊!

解决方案 »

  1.   

    设置断点跟踪一下Price的值 
      

  2.   

    for i := 0 to ADOQuery6.RecordCount do 是不是ADOQuery6.RecordCount-1啊,最后多算了一條不存在的數據吧
      

  3.   

    呵呵 没看到这那还没到最后那就出不来了啊。我没又看到结果啊。没有错误就是没又结果啊。返回值是:Money := 0;
      

  4.   

    我的意思是 money 是怎样看到为0
      

  5.   

    跟踪下去啊 加上showmessage(FloattoStr(money));就没问题了。不加就没结果。真奇怪啊晕!!!
      

  6.   

    你这Money会被优化掉的,因为后面都没有使用它。
      

  7.   

    我还没到后面那 就当前看下结果还没用那到最后要把值写成SQL文件送到数据库里。加上FloattoStr(money)就一切OK 真不知道什么问题。我先不关这个帖子,希望有人能帮我回答下为什么。等我有分了再给大家加啊 呵呵 。
      

  8.   

    加上FloattoStr(money)后不就用到了嘛,Delphi就不会把它优化掉了