1,    -50000,  -8538,      5556,     2842,    15,   0 ,   0
  2,    -49000,  -8630,      3283,     5104,    15,   0,    0
  3,    -48000,  -7853,       708,     6925,     12,   4,    0
  4,    -47000,  -6287,      -1937,    8108,     12,   8,    -4
  5,    -46000,   -4025,      -4443,    8538,     8,  12,    -4
  6,    -45000,   -1415,      -6508,    8039,     4,  15,    -4    
   .....
   .....
  400,   -32000,  -6009,       8259,   -2227,    15,  -4,    8
  401,   -31000,   -7644,      7285,    313,     12,  -4,    4
  
第3-5列是三组电压数据,6-8是三组电流数据,要求从文本文件读数据并保存,根据数据描点画图,画图时读入数据乘以0.01作y坐标,1-401作x坐标。画出来后就应该是六个正弦图形。
   

解决方案 »

  1.   

    具体点就是用TIMAGE控件
    画就这样
    image1.Canvas.pen.color:=clGreen;//$339999青色;
    image1.canvas.pen.width:=1;
    image1.Canvas.moveto(x,y); //起始点
    image1.Canvas.lineto(l+1,n+1);//画从开始点到结束点的线其余的就自己画吧
      

  2.   

    我才学delphi几个星期,老师要求完成的毕业设计,老师要给钱,我给你好了,9441张口就是钱
    但我不知道读数据是怎么读,搞不清是应该作为字符串还是实数,老师说用动态数组,又是什么意思呢?
      

  3.   

    简单就帮帮忙啊,对了,数据可不可以在变量里边这样定义:
    var
    dirname:string[50]
    在要使用那一个数据的时候,这样用:    X1:=char(dirname[3])*0.01
      

  4.   

    //定义结构;
    type TDs=record
    d:array[0..7]of int64;
    end;//动态数组的定义var dd:array of TDs; //考虑到数值较大所以使用int64,如果是小一点的就用integer//记得初始化ddprocedure readData(sd:string);  //sd为你要读取的文本文件的一行,
    var 
    tmpstr1,tmpstr2:string;
    i,n:integer;
    begin
    //动态创建数组
    if (high(dd)<>0) then
       setlength(dd,high(dd)+2); //动态创建数组,给dd数组添加一个单元,原数据不变
    //数组创建后,就是进行符串分解
    i:=0;
    n:=pos(',',sd);
    while n<>0 do
       begin
       tmpstr1:=trim(copy(sd,1,n-1));
       dd[high(dd)].d[i]:=StrToInt64Def(tmpstr1,0);
       tmpstr2:=trim(copy(sd,n+1,lengh(sd)-n));
       n:=pos(',',tmpstr2);
       i:=i+1;
       end;
    end;以上基本完成,代码我临时写的,可能存在错误的地方,自己补充吧。基本方法没错的。
      

  5.   

    后面的搞错了,应该是:i:=0;
    tmpstr2:=sd;       //漏了这里
    n:=pos(',',tmpstr2);
    while n<>0 do
       begin
       tmpstr1:=trim(copy(sd,1,n-1));
       dd[high(dd)].d[i]:=StrToInt64Def(tmpstr1,0);
       tmpstr2:=trim(copy(sd,n+1,lengh(sd)-n));
       n:=pos(',',tmpstr2);
       i:=i+1;
       end;
    end;
      

  6.   

    还是漏了。还要将 sd换成tmpstr2
      

  7.   

    初学者,有几个问题想请教一下,谢谢type TDs=record       tds这是定义用法吗?      
    d:array[0..7]of int64;
    end;var dd:array of TDs;    dd和d 之间是什么区别呢?procedure readData(sd:string);  //sd为你要读取的文本文件的一行,
    var 
    tmpstr1,tmpstr2:string;
    i,n:integer;
    //动态创建数组
    if (high(dd)<>0) then
       setlength(dd,high(dd)+2); 
    i:=0;
    tmpstr2:=sd;       //漏了这里
    n:=pos(',',tmpstr2);
    while n<>0 do
       begin
       tmpstr1:=trim(copy(sd,1,n-1));
       dd[high(dd)].d[i]:=StrToInt64Def(tmpstr1,0);  这句话是说取拿一行哪一列的数吗
       tmpstr2:=trim(copy(sd,n+1,lengh(sd)-n));
       n:=pos(',',tmpstr2);
       i:=i+1;
       end;
    end;
      

  8.   

    这是一个滤波的差分方程:
    y(n)=x(n)-x(n-2)+Ay(n-1)-By(n-2)
    x(1) ,x(2)...x(400)已知,但怎么代入原方程呢?y(1)=x(1)-x(-1)+Ay(0)-By(-1)
    y(2)=x(2)-x(0)+Ay(1)-By(0)
    ...
    ...
    y(n)=x(n)-x(n-2)+Ay(n-1)-By(n-2)我的数字怎么代进去呢?用循环吗?
      

  9.   

    这是一个滤波的差分方程:
    y(n)=x(n)-x(n-2)+Ay(n-1)-By(n-2)
    x(1) ,x(2)...x(400)已知,但怎么代入原方程呢?
    可以自己来定义这个函数,delphi里是没有的。
    具体怎么定义它,可以用DLL之内的办法wen_zang(文臧)定义的是个对象