我现在有一个以.txt提交的数据,格式是这样的,每条个字段是以"|"分割的。如下:
XXXXXXX|XXXX|XXXXXX
XXXX|XXXXXXXXX|XXX
XXXXXXXXX|XXXXXX|XXXXXXXXXX
请问我怎么才能读出每个字段的值?然后把它们写道mssql数据库中。

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var s:string; t:array [0..2] of string;
    i,j:integer;
    begin
        s:='12345|abcde|!@#$%';
        j:=0;
        for i:=1 to length(s) do
        begin
            if s[i]='|' then j:=j+1
            else
            t[j]:=t[j]+s[i];
        end;
        Edit1.Text:=t[0];
        edit2.Text:=t[1];
        edit3.Text:=t[2];
    end;
      

  2.   

    可能是我没说清楚,我的意思是我现在有一个.txt格式的数据文件(这是从其他数据库中导出来的),我现在想把他从新读出来,写到一个新的数据库表里。该怎么做?有没有其他什么好的方法?效率高点的。
      

  3.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        function StrSplit(var str:string):string;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    var txtfile:TextFile;
        filename:string;
        tmpstr:string;
    begin
      filename:='C:\Documents and Settings\Administrator\桌面\aa.txt';
      AssignFile(txtfile,filename);
      Reset(txtfile);
      while not Eof(txtfile) do
      begin
        Readln(txtfile,tmpstr);
        while tmpstr<>'' do
          showmessage(StrSplit(tmpstr));
      end;
    end;function TForm1.StrSplit(var str: string): string;
    var
        StrFlag:string;
    begin
      StrFlag:='';
      if Str<>'' then
        if Pos('|',Str)>0 then
        begin
          StrFlag:=Copy(Str,1,Pos('|',Str)-1);
          Str:=Copy(Str,Pos('|',Str)+1,MaxInt);
        end else begin
          StrFlag:=Str;
          Str:='';
        end;
      Result:=StrFlag;
    end;end.
      

  4.   

    用Memo1.LoadFromFile;
    然后一行一行操作就行了;
    Memo1.Lines.Strings[i];判断只要碰到 |  ,就截取;