function TDataModule1.DatatoR(filename:string):integer;
var f:file ;
    lb_array:array of byte;
    Odata:byte;
    Ddata,ddata1:integer;
    i,index,jh:integer;
    ad: array[0..15] of integer;
    wd: array[0..15] of real;
    wdoff:real;
    size:longint;
begin
  //size:=0;
  assignfile(f,filename);
  reset(f);
  size:=filesize(f);
  if size<10 then
    begin
      closefile(f);
      result:=-1;
      exit;
    end;
  setlength(lb_array,size);
  blockread(f,lb_array,size);//  read(f,odata);
  index:=0;
  jh:=lb_array[index];
  inc(index);  pdatat.open;
  while not index<size do
  begin
     pdatat.append;
     pdatat.FieldByName('date').asdatetime:=now;
     pdatat.fieldbyname('jh').asinteger:=jh;     ddata:=lb_array[index];
     inc(index);
     odata:=lb_array[index];
     inc(index);
     ddata:=ddata*32+odata+1;
     pdatat.FieldByName('fxq').asinteger:=ddata;
     for i:=0 to 15 do
     begin
       ddata1:=lb_array[index];
       inc(index);
       ddata:=lb_array[index];
       inc(index);       ddata:=(ddata shl 8)+ddata1;
       ad[i]:=ddata;
       linet.locate('ad',ad[i],[locaseinsensitive]);       ad[i]:=ad[i]+linet.Fieldbyname('offset').asinteger-100;
       wd[i]:=ad[i]-412;
       wd[i]:=wd[i]/10;
     end;
        pdatat.FieldByName('p0').asfloat:=wd[0];
        rtott.Locate('t',wd[0],[locaseinsensitive]);
        wdoff:=1.206-rtott.fieldbyname('r').asfloat;
      for i:=1 to 15 do
      begin
         rtott.Locate('t',wd[i],[locaseinsensitive]);
         wd[i]:=rtott.fieldbyname('r').asfloat;
         wd[i]:=wd[i]+wdoff;
         rtott.SetKey;
         rtott.FieldByName('r').asfloat:=wd[i];
         rtott.GotoNearest;
         wd[i]:=rtott.fieldbyname('t').asfloat;
         pdatat.FieldByName('p'+inttostr(i)).asfloat:=wd[i];
      end;
  end;
  closefile(f);
  pdatat.Post;
  pdatat.close;
  result:=0;
end;
打开文件后的操作看不明白

解决方案 »

  1.   

    pdatat是一个什么东西?这些代码写的真是连一行注释都不写,以后肯定连自己都不知道干什么的。大概意思就是打开一个文件,然后把这个文件中的内容存放到一个数据库里面去
      

  2.   

    function TDataModule1.DatatoR(filename:string):integer;
    var f:file ;//定义各种数据类型
        lb_array:array of byte;
        Odata:byte;
        Ddata,ddata1:integer;
        i,index,jh:integer;
        ad: array[0..15] of integer;
        wd: array[0..15] of real;
        wdoff:real;
        size:longint;
    begin
      //size:=0;
      assignfile(f,filename);//打开文件
      reset(f);
      size:=filesize(f);//文件大小 
      if size<10 then//如果小于10,退出,返回-1
        begin
          closefile(f);
          result:=-1;
          exit;
        end;
      setlength(lb_array,size);//设置动态数组
      blockread(f,lb_array,size);//  read(f,odata);
      index:=0;
      jh:=lb_array[index];
      inc(index);  pdatat.open;//添加内容到数据库中
      while not index<size do
      begin
         pdatat.append;
         pdatat.FieldByName('date').asdatetime:=now;
         pdatat.fieldbyname('jh').asinteger:=jh;     ddata:=lb_array[index];
         inc(index);
         odata:=lb_array[index];
         inc(index);
         ddata:=ddata*32+odata+1;
         pdatat.FieldByName('fxq').asinteger:=ddata;
         for i:=0 to 15 do
         begin
           ddata1:=lb_array[index];
           inc(index);
           ddata:=lb_array[index];
           inc(index);       ddata:=(ddata shl 8)+ddata1;
           ad[i]:=ddata;
           linet.locate('ad',ad[i],[locaseinsensitive]);       ad[i]:=ad[i]+linet.Fieldbyname('offset').asinteger-100;
           wd[i]:=ad[i]-412;
           wd[i]:=wd[i]/10;
         end;
            pdatat.FieldByName('p0').asfloat:=wd[0];
            rtott.Locate('t',wd[0],[locaseinsensitive]);
            wdoff:=1.206-rtott.fieldbyname('r').asfloat;
          for i:=1 to 15 do
          begin
             rtott.Locate('t',wd[i],[locaseinsensitive]);
             wd[i]:=rtott.fieldbyname('r').asfloat;
             wd[i]:=wd[i]+wdoff;
             rtott.SetKey;
             rtott.FieldByName('r').asfloat:=wd[i];
             rtott.GotoNearest;
             wd[i]:=rtott.fieldbyname('t').asfloat;
             pdatat.FieldByName('p'+inttostr(i)).asfloat:=wd[i];
          end;
      end;
      closefile(f);
      pdatat.Post;
      pdatat.close;
      result:=0;
    end;
      

  3.   

    我看pdatat是个query :)
    我觉得是用二进制的文件读一个文件把数据写到数据库中!具体什么的看起来的确是比较累!