我的学习生涯(Delphi篇) - 10

来源:互联网 发布:服务器坏了数据怎么办 编辑:程序博客网 时间:2024/04/30 06:55

    很多时候需要把CSV文件(逗号分隔文件)存进数据库中。

    Delphi在这方面得心应手。

   -------------------------------------------------------------------------------------------------美丽分割线---------------------------

   年代:2006年

   文件:MY0505.7z


   效果如下图:



    单元文件:

    Unit1.pas

unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, ComCtrls, DB, ADODB, DBTables, Grids, DBGrids,  ExtCtrls, DBCtrls;type  TForm1 = class(TForm)    Button1: TButton;    RichEdit1: TRichEdit;    ADODataSet1: TADODataSet;    Button2: TButton;    ADOConnection1: TADOConnection;    procedure Button1Click(Sender: TObject);    procedure FormCreate(Sender: TObject);    procedure FormShow(Sender: TObject);    procedure Button2Click(Sender: TObject);  private    { Private declarations }  public    { Public declarations }  end;var  Form1: TForm1;  Function RegulateStr(aString:String;Sepchar:String):String;  Function GetSubStr(var aString:String;SepChar:String):String;  implementation  function readXBF(DimRecord: Integer;filename1:WideString):WideString;  stdcall;external 'XBFGenerate.dll';{$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;      //sepcharcount:=0;    end    else      if(Flag)then      begin        Mystr:=Mystr+TempStr;        Flag:=False;      end      else      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:WideString;  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;procedure TForm1.Button1Click(Sender: TObject);var  i,j,Num:Integer;  MyLine,Space:String;begin  with ADODataSet1 do  begin  Open;    for i:=0 to RichEdit1.Lines.Count-1 do    begin      MyLine:=RegulateStr(RichEdit1.Lines[i],',');      for j:=1 to 11 do      begin        Edit;        Fields[j-1].Value:=GetSubStr(MyLine,',');        post;      end;//nei for      Append;    end;//wai for  end;//with endend;procedure TForm1.FormCreate(Sender: TObject);var  filepath1:string;begin  filepath1:=ExtractFilePath(ParamStr(0));  //ADOConnection1.ConnectionString:=readXBF(-1,filepath1+'sy2.xbf');  //ADODataSet1.Close;  //ADODataSet1.CommandText:='select * from dy04';  //ADODataSet1.Open;end;procedure TForm1.FormShow(Sender: TObject);begin  RichEdit1.Lines.LoadFromFile('D:\send\station04.txt');end;procedure TForm1.Button2Click(Sender: TObject);var  richstring:TStringList;  i,j,Num:Integer;  MyLine,Space:String;begin  richstring:=TStringList.Create;  richstring.LoadFromFile('D:\receive\station01.txt');  richstring.SaveToFile('D:\receive\station.txt');    with adodataset1 do  begin  Open;    for i:=0 to richstring.Count-1 do    begin      MyLine:=RegulateStr(richstring.Strings[i],',');      for j:=1 to 11 do      begin        Edit;        Fields[j-1].Value:=GetSubStr(MyLine,',');        post;      end;//nei for      Append;    end;//wai for  end;//with end  { Place thread code here }end;end.


原创粉丝点击