unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DBGridEhGrouping, StdCtrls, DB, DBClient, GridsEh, DBGridEh;type
  TForm1 = class(TForm)
    dbgrdh2: TDBGridEh;
    ds2: TClientDataSet;
    ds3: TDataSource;
    btn1: TButton;
    tmfldds2CDSDesigner: TTimeField;
    fltfldds2P: TFloatField;
    fltfldds2T1: TFloatField;
    fltfldds2F1: TFloatField;
    fltfldds2T2: TFloatField;
    fltfldds2F2: TFloatField;
    fltfldds2T3: TFloatField;
    fltfldds2F3: TFloatField;
    fltfldds2T4: TFloatField;
    fltfldds2F4: TFloatField;
    fltfldds2T5: TFloatField;
    fltfldds2F5: TFloatField;
    fltfldds2T6: TFloatField;
    fltfldds2F6: TFloatField;
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;
  MyLog:TStringList;
  t:THandle;
  procedure ShowData;
  procedure MyData;
implementation{$R *.dfm}
procedure ShowData;//线程要执行的函数
begin
  //开始载入
  MyLog:=TStringList.Create();
  MyLog.loadfromfile('e:\TEST.TXT');
end;//赋值
procedure MyData;
var
  Temp:TStringList;
  i:Integer;
begin
  Temp:=TStringList.Create();
  Temp.Delimiter := '|';
  for i:=MyLog.Count-1 downto 0 do
  begin
  Temp.Clear;
  Temp.DelimitedText :=trim(MyLog.strings[i]);
  Form1.ds2.Insert;
  Form1.ds2.FieldByName('时间').AsDateTime:=StrToDateTime(Temp.Strings[0]);
  Form1.ds2.FieldByName('P').AsFloat:=StrToFloat(Temp.Strings[1]);
  Form1.ds2.FieldByName('T1').AsFloat:=StrToFloat(Temp.Strings[2]);
  Form1.ds2.FieldByName('F1').AsFloat:=StrToFloat(Temp.Strings[3]);
  Form1.ds2.FieldByName('T2').AsFloat:=StrToFloat(Temp.Strings[4]);
  Form1.ds2.FieldByName('F2').AsFloat:=StrToFloat(Temp.Strings[5]);
  Form1.ds2.FieldByName('T3').AsFloat:=StrToFloat(Temp.Strings[6]);
  Form1.ds2.FieldByName('F3').AsFloat:=StrToFloat(Temp.Strings[7]);
  Form1.ds2.FieldByName('T4').AsFloat:=StrToFloat(Temp.Strings[8]);
  Form1.ds2.FieldByName('F4').AsFloat:=StrToFloat(Temp.Strings[9]);
  Form1.ds2.FieldByName('T5').AsFloat:=StrToFloat(Temp.Strings[10]);
  Form1.ds2.FieldByName('F5').AsFloat:=StrToFloat(Temp.Strings[11]);
  Form1.ds2.FieldByName('T6').AsFloat:=StrToFloat(Temp.Strings[12]);
  Form1.ds2.FieldByName('F6').AsFloat:=StrToFloat(Temp.Strings[13]);
  end;
  Temp.Free;
  MyLog.Free;
end;
procedure TForm1.btn1Click(Sender: TObject);
var
  ID:DWORD;
  MyID:DWORD;
begin
t:=CreateThread(nil, 0, @ShowData, nil, 0, ID);
//等待线程结束
if WaitForSingleObject(t, INFINITE) = WAIT_OBJECT_0 then
Begin
  CreateThread(nil, 0, @MyData, nil, 0, MyID);
end;
end;end.代码包下载:http://u.115.com/file/bharrkxj#多线程.rar好像的因为TXT没有载入结束就开始赋值引起的错误,但是我线程中加了判断,好像不起作用,T线程没结束就开始下一个线程赋值了,各位大大给看看,谢谢