提取txt中的数据,并且截取一段一段字符串,然后把他们存入到sql中。
txt中数据如下:
2.00000000000000E+0002  4.07915590655671E+0004  0.00000000000000E+0000  0.00000000000000E+0000  0.00000000000000E+0000
 2.37000000000000E+0002  2.50000000000000E-0004  0.00000000000000E+0000  6.71000000000000E-0003 -4.00000000000000E+0000  4.70000000000000E+0001
 2.42000000000000E+0002  1.25000000000000E-0004  0.00000000000000E+0000  6.71000000000000E-0003 -4.00000000000000E+0000  9.40000000000000E+0001
 2.44500000000000E+0002  1.25000000000000E-0004  0.00000000000000E+0000  1.06750000000000E-0002 -4.00000000000000E+0000  1.56000000000000E+0002
 2.51500000000000E+0002  1.25000000000000E-0004  0.00000000000000E+0000  1.46400000000000E-0002 -3.00000000000000E+0001  2.19000000000000E+0002就是每行6个数据,我在sql中创建一个数据表,设置7个字段,第一个字段是id,其他6个跟这6个数据对应。
我想最后变成如下数据存入到sql中:
237 0.00025 0 0.00671 -4 47
242 0.000125 0 0.00671 -4 94
244.5 0.000125 0 0.010675 -4 156
251.5 0.000125 0 0.01464 -30 219
第一条记录不用存。我一点都不会啊,现在能弄的把txt数据显示到dbgrid里,但是还只显示最左边的那些除了0的数据。好奇怪啊,实在弄不明白了。

解决方案 »

  1.   

    学习学习先
    继续顶一下
    顶顶帖子高手们
    也请多多赐教
    http://topic.csdn.net/u/20110709/12/3ec63017-cef8-41e0-a524-c9b9dfe56d5c.html
    http://topic.csdn.net/u/20110611/12/3258c959-4f28-46b7-b5d6-46135d73036b.html
    http://topic.csdn.net/u/20110722/14/89f7440b-c4d7-4c9a-a4bb-a503f5135db2.html
    http://topic.csdn.net/u/20110729/10/a7bfaf06-0cf9-4580-8e91-d4e0b92066c6.htmlhttp://topic.csdn.net/u/20110811/16/e56e7cc1-d8c9-40af-92e3-c24ca103d17d.html
    http://topic.csdn.net/u/20110830/13/dfae4ca5-d2b9-4889-8a3c-6f7fb61936c9.html
    http://topic.csdn.net/u/20110831/17/427b6ab0-66c6-4f33-af26-ebd27b0dc541.html
    http://topic.csdn.net/u/20110901/09/83c2c668-cbe6-4db9-966d-bf2f47456811.html
    http://topic.csdn.net/u/20110905/12/a1161adb-8e5d-491a-b302-c9722edf2dab.html
    http://topic.csdn.net/u/20110906/10/86d49517-b7a6-4fae-982b-478d2d6e2a23.html
      

  2.   


    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        OpenDialog1: TOpenDialog;
        procedure TransformStr(Str: String);
        procedure ReadText();
        procedure InsertIntoDB(DoubleArr: Array of Double);
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}{ ***** 将读取的行存入Double类型的数组中 ***** }
    procedure TForm1.TransformStr(Str: String);
    var
      I: Integer;
      Index: Integer;
      Arr: Array[1..6] of String;
      DoubleArr: Array[1..6] of  Double;
    begin
      Str := Trim(Str) + ' ';
      for I := 1 to 6 do
      begin
        Arr[I] := '';
        DoubleArr[I] := 0;
        // 定位空格
        Index := Pos(' ', Str);
        // 获得一行的第I个数
        Arr[I] := Copy(Str, 1, Index - 1);
        DoubleArr[I] := StrToFloat(Arr[I]);
        // 删除已经存入数组中的字符串中的部分
        Delete(Str, 1, Index);
      end;
      // 将数据插入数据库
      InsertIntoDB(DoubleArr);
    end;{ ***** 读取Text文档中的行 ***** }
    procedure TForm1.ReadText();
    var
      MyText: TextFile;
      S: String;
      IsFirst: Boolean;
    begin
      // IsFirst判断读取的是否是文档的第一行
      IsFirst := False;
      try
        if OpenDialog1.Execute then
        begin
          AssignFile(MyText, OpenDialog1.FileName);
          Reset(MyText);
          // Text文本中有行
          while not Eof(MyText) do
          begin
            Readln(MyText, S);
            // 第一次读取Text文档时,将IsFirst设置为True,此行不操作。
            if not IsFirst then
            begin
              IsFirst := True;
              Continue;
            end;
            // 如果读取的不是第一行,将此行转化后存入数据库。
            if IsFirst then
            begin
              // 转化
              TransformStr(S);
            end;
          end;
        end;
      except;
        ShowMessage('读取文件失败。');
      end;
    end;{ ***** 将一行数据存入数据库 ***** }
    procedure TForm1.InsertIntoDB(DoubleArr: Array of Double);
    var
      I: Integer;
      SQLStr: String;
    begin
      SQLStr := '';
      SQLStr := 'insert into num(n1,n2,n3,n4,n5,n6) values(';
      SQLStr := SQLStr + QuotedStr(FloatToStr(DoubleArr[0])) + ',';
      SQLStr := SQLStr + QuotedStr(FloatToStr(DoubleArr[1])) + ',';
      SQLStr := SQLStr + QuotedStr(FloatToStr(DoubleArr[2])) + ',';
      SQLStr := SQLStr + QuotedStr(FloatToStr(DoubleArr[3])) + ',';
      SQLStr := SQLStr + QuotedStr(FloatToStr(DoubleArr[4])) + ',';
      SQLStr := SQLStr + QuotedStr(FloatToStr(DoubleArr[5])) + ')';
      ShowMessage(SQLStr);  // 验证SQLStr正确
      { …… // 存入DB }
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      // 读取Text文档
      ReadText;
    end;end.