文本文件和数据集相互转换

{*******************************************************} {                                                       } {       陈新光                                          } {                                                       } {       版权所有 (C) 2008                               } {                                                       } {*******************************************************} //将以TAB作分隔符的文本文件写入数据表中 //当然如果是以逗号作分隔符的也可以

unit uImpTxt;

interface

uses   SysUtils,db,Classes;

{-------------------------------------------------------------------------------   过程名:    分割字符串   作者:      陈新光   日期:      2008.06.24   参数:      Source(源字符串), Deli(分割标志): string   返回值:    TStringList -------------------------------------------------------------------------------} function SplitString(Source, Deli: string ): TStringList; {-------------------------------------------------------------------------------   过程名:    将固定格式的文本文件写入数据集中   作者:      陈新光   日期:      2008.06.24   参数:      ADataSet:TDataSet;ATxtFile,ASplit(分隔符):string   返回值:    Boolean -------------------------------------------------------------------------------} function TxtToDataset(ADataSet:TDataSet;ATxtFile,ASplit:string):Boolean; {-------------------------------------------------------------------------------   过程名:    将数据集导出成文本文件   作者:      陈新光   日期:      2008.06.24   参数:      ADataSet:TDataSet;ATxtFile,ASplit(分隔符):string   返回值:    Boolean -------------------------------------------------------------------------------} function DatasetToTxt(ADataSet:TDataSet;ATxtFile,ASplit:string):Boolean;

implementation

function SplitString(Source, Deli: string ): TStringList; var    EndOfCurrentString: byte;    StringList:TStringList; begin    StringList:=TStringList.Create;    while Pos(Deli, Source)>0 do    begin      EndOfCurrentString := Pos(Deli, Source);      StringList.add(Copy(Source, 1, EndOfCurrentString - 1));      Source := Copy(Source, EndOfCurrentString + length(Deli),        length(Source) - EndOfCurrentString);    end;    Result := StringList;    StringList.Add(source); end;

function TxtToDataset(ADataSet:TDataSet;ATxtFile,ASplit:string):Boolean; var   i,j:Integer;   ss,mx: TStringList;   line:string; begin   Result:=False;   if (not ADataSet.Active) or (not FileExists(ATxtFile)) then Exit;   ss:=TStringList.Create;   try     ss.LoadFromFile(ATxtFile);  //将文本文件装入TSTRINGLIST     for i:=0 to ss.Count-1 do   //遍历TSTRINGLIST     begin       line:=ss.Strings[i];      //取当前行字符串       mx:=SplitString(line,ASplit);       ADataSet.DisableControls;       ADataSet.Append;       for j:=0 to ADataSet.FieldCount-1 do  //给对应的字段赋值         ADataSet.Fields[j].AsString:=mx.Strings[j];       ADataSet.Post;     end;     if Assigned(mx) then  mx.Free;   finally     ss.free;   end;   ADataSet.EnableControls;   Result:=True; end;

function DatasetToTxt(ADataSet:TDataSet;ATxtFile,ASplit:string):Boolean; var   ss:TStringList;   i:Integer;   line:string; begin   Result:=False;   if (not ADataSet.Active) or     (ASplit='') then Exit;   line:='';                      //初始化变量   ss:=TStringList.Create;   try     ADataSet.DisableControls;     ADataSet.First;     while not ADataSet.Eof do     begin       for i:=0 to ADataSet.FieldCount-1 do       begin         if i=0 then           line:=line+ADataSet.Fields[i].AsString           //不要分隔符         else           line:=line+ASplit+ADataSet.Fields[i].AsString;   //要分隔符       end;       ss.Add(line);       line:='';       ADataSet.Next;     end;     ss.SaveToFile(ATxtFile);   finally     ss.Free;   end;   ADataSet.EnableControls;   Result:=True; end; 

end.

转载于:https://www.cnblogs.com/hnxxcxg/archive/2008/06/24/2940861.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值