我在DELPHI7中,用的dbExpress连接我想导入三个字段的文本文件。
比如一行为aaaa,bbbb,cccc各位指点一下,暂时没有头绪。

解决方案 »

  1.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      Db, DBTables, StdCtrls, ComCtrls;type
      TForm1 = class(TForm)
        Table1: TTable;
        Button1: TButton;
        Button2: TButton;
        OpenDialog1: TOpenDialog;
        RichEdit1: TRichEdit;
        procedure Button2Click(Sender: TObject);
        procedure Button1Click(Sender: TObject);
      private
      Function Regulatestr(aString:string;Sepchar:string):string;
        Function GetSubStr(var aString:string;SepChar:String):String;
        Function GetSubStrNum(aString:string;SepChar:String):Integer;
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
    Const Space=' ';
    implementation{$R *.DFM}
    Function Tform1.RegulateStr(aString:String;Sepchar:String):String;
    var
      i,Num:Integer;
      Flag:Boolean;
      MyStr,TempStr:String;
    begin
      Flag:=False;//进行标志,去除多余的分割符
      Num:=Length(aString);//计算aString串的长度
      for i:=1 to Num do
       begin
         TempStr:=Copy (aString,i,1);//取aString串中的一字符
          if TempStr<>SepChar then
            begin
             MyStr:=MyStr+Tempstr;
             Flag:=True;
            end
          else
          if(Flag=True)then
            begin
              Mystr:=Mystr+TempStr;
              Flag:=False;
            end;
        end;
       if MyStr[Length(MyStr)]<>SepChar then
        MyStr:=MyStr+SepChar;
        RegulateStr:=MyStr;
    end;
    Function Tform1.GetSubStr(var aString:String;SepChar:String):string;
    var
       Mystr:String;
       SepCharPos:Integer;
    begin
     sepCharpos:=pos(sepchar,astring);//计算分割符在子串中的位置
     MyStr:=Copy(aString,1,SepCharPos-1);//将分割符前所有字符放到mystr串中
     Delete(aString,1,SepCharPos);//除去分割符和分割符前的子串
     GetSubStr:=MyStr;//返回一个字段
    end;
    Function Tform1.GetSubStrnum(aString:String;SepChar:String):integer;var
      i:Integer;
      StrLen:Integer;
      Num:Integer;
    begin
      StrLen:=Length(aString);
      Num:=0;
      for i:=1 to StrLen do
      if Copy(aString,i,1)=SepChar then
      Num:=Num+1;
      GetSubStrNum:=Num;
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
      i,j:integer;
      myline:string;
    begin
      with table1 do
       begin
           open;
           for i:=0 to richedit1.lines.count-1 do
             begin
              myline:=regulatestr(richedit1.lines[i],space);
               for j:=1 to getsubstrnum(myline,space) do
                begin
                {
                  append;
                  Fields[j-2].AsString:=getsubstr(myline,space);
                  post;}
                end;
             end;
           close;
        end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
    if opendialog1.execute  then
       richedit1.lines.loadfromfile(opendialog1.filename);
    end;end.前几天弄的 你试试
      

  2.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      Db, DBTables, StdCtrls, ComCtrls;type
      TForm1 = class(TForm)
        Table1: TTable;
        Button1: TButton;
        Button2: TButton;
        OpenDialog1: TOpenDialog;
        RichEdit1: TRichEdit;
        procedure Button2Click(Sender: TObject);
        procedure Button1Click(Sender: TObject);
      private
      Function Regulatestr(aString:string;Sepchar:string):string;
        Function GetSubStr(var aString:string;SepChar:String):String;
        Function GetSubStrNum(aString:string;SepChar:String):Integer;
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
    Const Space=' ';
    implementation{$R *.DFM}
    Function Tform1.RegulateStr(aString:String;Sepchar:String):String;
    var
      i,Num:Integer;
      Flag:Boolean;
      MyStr,TempStr:String;
    begin
      Flag:=False;//进行标志,去除多余的分割符
      Num:=Length(aString);//计算aString串的长度
      for i:=1 to Num do
       begin
         TempStr:=Copy (aString,i,1);//取aString串中的一字符
          if TempStr<>SepChar then
            begin
             MyStr:=MyStr+Tempstr;
             Flag:=True;
            end
          else
          if(Flag=True)then
            begin
              Mystr:=Mystr+TempStr;
              Flag:=False;
            end;
        end;
       if MyStr[Length(MyStr)]<>SepChar then
        MyStr:=MyStr+SepChar;
        RegulateStr:=MyStr;
    end;
    Function Tform1.GetSubStr(var aString:String;SepChar:String):string;
    var
       Mystr:String;
       SepCharPos:Integer;
    begin
     sepCharpos:=pos(sepchar,astring);//计算分割符在子串中的位置
     MyStr:=Copy(aString,1,SepCharPos-1);//将分割符前所有字符放到mystr串中
     Delete(aString,1,SepCharPos);//除去分割符和分割符前的子串
     GetSubStr:=MyStr;//返回一个字段
    end;
    Function Tform1.GetSubStrnum(aString:String;SepChar:String):integer;var
      i:Integer;
      StrLen:Integer;
      Num:Integer;
    begin
      StrLen:=Length(aString);
      Num:=0;
      for i:=1 to StrLen do
      if Copy(aString,i,1)=SepChar then
      Num:=Num+1;
      GetSubStrNum:=Num;
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
      i,j:integer;
      myline:string;
    begin
      with table1 do
       begin
           open;
           for i:=0 to richedit1.lines.count-1 do
             begin
              myline:=regulatestr(richedit1.lines[i],space);
               for j:=1 to getsubstrnum(myline,space) do
                begin
                {
                  append;
                  Fields[j-2].AsString:=getsubstr(myline,space);
                  post;}
                end;
             end;
           close;
        end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
    if opendialog1.execute  then
       richedit1.lines.loadfromfile(opendialog1.filename);
    end;end.