var strList:TStringList;
    FStr,iCount,PosStart,PosEnd:Integer;
    ResultStr:Array[1..4] of String;
begin
 strList:=TSTringList.Create;
 strList.LoadfromFile('text.txt');
 for iCount:=0 to strList.Count-1 do
 begin
   PosStart:=StrPos(',',strList.strings[iCount],1);
   ResultStr[1]:=Copy(strList.strings[iCount],1,PosStart-1);
   PosStart:=StrPos(',',StrList.Strings[icount],PosStart+1);
   ResultStr[2]:=Copy(strList.strings[iCount],PosStart+1);
   //依此类推
   with query1 do
    begin
     append;
     fieldbyname('id').AsString:=ResultStr[1];
     .....
     post;
    end;
end;
Query1.ApplyUpdates;//批量更新 注意把Query1打开前设CacheUpdate:=true;function StrPos(const FindString, SourceString: string; StartPos: Integer): Integer;
asm  //find http://www......
        PUSH    ESI
        PUSH    EDI
        PUSH    EBX
        PUSH    EDX
        TEST    EAX,EAX
        JE      @@qt
        TEST    EDX,EDX
        JE      @@qt0
        MOV    ESI,EAX
        MOV    EDI,EDX
        MOV    EAX,[EAX-4]
        MOV    EDX,[EDX-4]
        DEC    EAX
        SUB    EDX,EAX
        DEC    ECX
        SUB    EDX,ECX
        JNG    @@qt0
        XCHG    EAX,EDX
        ADD    EDI,ECX
        MOV    ECX,EAX
        JMP    @@nx
@@fr:  INC    EDI
        DEC    ECX
        JE      @@qt0
@@nx:  MOV    EBX,EDX
        MOV    AL,BYTE PTR [ESI]
@@lp1:  CMP    AL,BYTE PTR [EDI]
        JE      @@uu
        INC    EDI
        DEC    ECX
        JE      @@qt0
        CMP    AL,BYTE PTR [EDI]
        JE      @@uu
        INC    EDI
        DEC    ECX
        JE      @@qt0
        CMP    AL,BYTE PTR [EDI]
        JE      @@uu
        INC    EDI
        DEC    ECX
        JE      @@qt0
        CMP    AL,BYTE PTR [EDI]
        JE      @@uu
        INC    EDI
        DEC    ECX
        JNE    @@lp1
@@qt0:  XOR    EAX,EAX
@@qt:  POP    ECX
        POP    EBX
        POP    EDI
        POP    ESI
        RET
@@uu:  TEST    EDX,EDX
        JE      @@fd
@@lp2:  MOV    AL,BYTE PTR [ESI+EBX]
        CMP    AL,BYTE PTR [EDI+EBX]
        JNE    @@fr
        DEC    EBX
        JE      @@fd
        MOV    AL,BYTE PTR [ESI+EBX]
        CMP    AL,BYTE PTR [EDI+EBX]
        JNE    @@fr
        DEC    EBX
        JE      @@fd
        MOV    AL,BYTE PTR [ESI+EBX]
        CMP    AL,BYTE PTR [EDI+EBX]
        JNE    @@fr
        DEC    EBX
        JE      @@fd
        MOV    AL,BYTE PTR [ESI+EBX]
        CMP    AL,BYTE PTR [EDI+EBX]
        JNE    @@fr
        DEC    EBX
        JNE    @@lp2
@@fd:  LEA    EAX,[EDI+1]
        SUB    EAX,[ESP]
        POP    ECX
        POP    EBX
        POP    EDI
        POP    ESI
end;

解决方案 »

  1.   

    用TstringList的commaText可以不用这么复杂。
    s: string;
    s1: TStringList;
    s:= '要转换的字符串';
    s1.commatext:= s;
    s1的strings即包含以','为分隔符的字符串。
      

  2.   

    精辟.又学了一招.建议给zsr(老牛)加分
      

  3.   

    unit Unit8;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      Db, DBTables, StdCtrls, ComCtrls;type
      TForm8 = class(TForm)
        RichEdit1: TRichEdit;
        Button1: TButton;
        Table1: TTable;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form8: TForm8;
       const space='|';
    implementation{$R *.DFM}
    Function 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 GetSubStr(var aString:String;SepChar:String):String;
        var
        Mystr:String;
        StrLen:Integer;
        SepCharPos:Integer;
        begin
        StrLen:=Length(aString);
        SepCharPos:=Pos(SepChar,aString);//计算分割符在子串中的位置
        MyStr:=Copy(aString,1,SepCharPos-1);//将分割符前所有字符放到mystr串中
        Delete(aString,1,SepCharPos);//除去分割符和分割符前的子串
        GetSubStr:=MyStr;//返回一个字段
        end;
        Function GetSubStrNum(var 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 TForm8.FormCreate(Sender: TObject);
    begin
      richedit1.Lines.LoadFromFile('dk.txt');
    end;procedure TForm8.Button1Click(Sender: TObject);
    var
        i,j:Integer;
        MyLine:String;
    begin
      with table1 do
      begin
         Open;
         for i:=0 to richedit1.Lines.Count-1 do
         begin
             append;
             MyLine:=RegulateStr(richedit1.Lines[i],Space);
             for  j:=1 to getsubstrnum(myline,space) do
             begin
                 fields[j-1].asstring:=GetSubStr(MyLine,Space);
             end;
             post;
        end;
        close;
    end;
        showmessage('数据装入成功');
        close;
    end;end.
      

  4.   

    非常感谢。
    请问高手们怎么联系。
    小弟e-mail:
    [email protected]