如果table1.recordcount>5,你的数组就溢出了。这只是一个可能的原因,你把出错的信息写出来呀

解决方案 »

  1.   

    while里面加多一句数组满就跳出
      

  2.   

    大概是array元素不够
    a:array[1..5] of string;
    b:array[1..5] of real;
    改大点看看
    a:array[1..8] of string;
    b:array[1..8] of real;试
      

  3.   

    什么错
    strtofload,写错了吧
      

  4.   

    你这样写应该是每错了:
    table1.Open;
      table1.first;
      i:=1;
      while not table1.Eof do
          begin
            a[i]:=table1.fieldbyname('kmdm').asstring;
            a[i]:=strtofload(table1.fieldbyname('kmdm').asstring);
            table1.Next;
            i:=i+1;
          end;
          if table1.eof then
            break;
    end; 
     
      

  5.   

    大概是array元素不够
    a:array[1..5] of string;
    b:array[1..5] of real;
    改大点看看
    a:array[1..8] of string;
    b:array[1..8] of real;
    我试过了,不行。还是提示出错。
      

  6.   

    也可能是strtofloat(table1.fieldbyname('kmdm').asstring)转换错
    如果是空则转换会出错
      

  7.   

    我不用while语句就不会出错,对当前表的所有记录都试过,可以转换,可是加上while后就不行了? 什么一回事??
      

  8.   

    报什么错,将real 改成 extended 呢?
    strtofload应为strtofloat
      

  9.   

    xjz_orange(桔子): 我还没有把real 改成 extended,为什么要改? 
                       另我的是strtofloat,写急了一点对不起。
      

  10.   

    肯定是转换错了
    procedure TForm1.Button1Click(Sender: TObject);
    var flt:real;
        str:string;
    begin
      str:=Edit1.text;
      flt:=strtofloat(str);
      Edit2.text:=floattostr(flt);
    end;
    按这个把table1.fieldbyname('kmdm').asstring的5个值一一填入
    第一个edit,第二个就出来转换结果
    跳错的话就是转换错了,
    修改的时候在转换前加一句 
    tmp_str:=table1.fieldbyname('kmdm').asstring;
    if tmp_str='' then
      tmp_str:='0';
      

  11.   

    应该是strtofload转换语句出错了,因为当我把此条注释掉,就可以编译通过了!
      

  12.   

    你这个小笨蛋,看清楚点a[i]-->b[i],就根本没用到b.
      ****a[i]****:=strtofload(table1.fieldbyname('kmdm').asstring);
    改为
      ****b[i]****:=strtofload(table1.fieldbyname('kmdm').asstring);
    另外,数据溢出也没考虑
      
      

  13.   

    這一句改成
    a[i]:=strtofloat(table1.fieldbyname('kmdm').asstring.trim());
      

  14.   

    strtofload()
    在内容为空时会有错!!!
    麻烦改为
      if table1.fieldbyname('kmdm').asstring == ''
          a[i]:=0
      else
          a[i]:=strtofload(table1.fieldbyname('kmdm').asstring);
      

  15.   

    strtofload是什么?是不是strtofloat?   
      

  16.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      a:array[1..5] of string;
      b:array[1..5] of real;
      i:integer;
    begin
      table1.Open;
      table1.first;
      i:=1;
      while not table1.Eof do
          begin
            a[i]:=table1.fieldbyname('kmdm').asstring;
            a[i]:=strtofload(table1.fieldbyname('kmdm').asstring);
            table1.Next;
            i:=i+1;
          end;
         table1.next;
    end; 
     
      

  17.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      a:array[1..5] of string;
      b:array[1..5] of real;
      i:integer;
    begin
      table1.Open;
      table1.first;
      i:=1;
      while not table1.Eof do
          begin
            if not table1.fieldbyname('kmdm').IsNull then
              a[i]:=table1.fieldbyname('kmdm').asstring;
            if not table1.fieldbyname('kmdm').IsNull then
              b[i]:=strtofloat(table1.fieldbyname('kmdm').asstring);
            table1.Next;
            i:=i+1;
          end;
    end;
      

  18.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      a:array of string; //定义变长
      b:array of real;
      i:integer;
    begin
      table1.Open;
      table1.first;
      if table1.recordcount>0 then
        for i:=0 to table1.recordcount-1 do
          begin
            a[i]:=table1.fieldbyname('kmdm').asstring;
            b[i]:=strtofloat(table1.fieldbyname('kmdm').asstring);
            table1.Next;
            i:=i+1;
          end;
    end;