| 网站首页 | 新闻快报 | 软件教程 | 硬件教程 | 设计学院 | Q Q 专区 | 编程开发 | 网络安全 | 
您现在的位置: 浩扬网络 >> 编程开发 >> delphi >> 教程正文
用Delphi实现将纯文本资料转入数据库
作者:不详 文章来源:安全中国 点击数: 更新时间:2006-8-5 1:04:59

在我们日常工作中,常会碰到这样一个难题:一大堆 
收集好的纯文本格式,比较规整的资料怎样才能将它们分 
离,转到自己已经建好的数据库中进行管理呢? 
  例如,有一段人事档案资料archive.txt,内容如下 

  小许男21工程师 
  小吴女23助理工程师 
  小蔡男22助理工程师 
  小牟女22工程师 
  要将它转入数据库archive.dbf中,archive.dbf结 
构如下: 
  姓名,性别,年龄,职称 
  怎么办呢?现在通过使用delphi编程,很好地解决了 
这个难题。Delphi提供了许多功能强大,丰富的字符处理 
函数和过程,常用的有: 
  (1)functionLength(S:String):Integer 
  //返回串的长度 
  (2)functionCopy(S:String;Index,Count:In 
teger):String 
  //给出一个字符串中串的拷贝 
  (3)functionPos(Substr:String;S:String) 
;Integer 
  //查找子串在字符串中的位置 
  (4)ProcedureDelete(VarS:String;Index,Cou 
nt:Integer); 
  //从一个字符串中去除子串 
  利用Delphi提供的已有函数和过程基础上编制自己的 
三个函数,实现了纯文本格式资料转入数据库功能。只要 
Delphi支持的数据库都可以支持。 
  archive.txt中每行数据为一个字符串,字符串中每 
个被分割的数据为一个字段,分割每个字段的字符为分割 
符,这里是空格,也可以是,、;、#等符号。具体思想 
是:先将字符串进行调整,然后把串中每个字符同分割符 
比较,将不是分割符的字符追加到MyStr串中,最后得到 
一个字段的内容。通过一个循环,就可以将一个字符串分 
成几个字段。 
  FunctionRegulate(aString,Sepchar:string): 
string 
  //去掉多余的分割符,规范字符串 
  FunctionGetSubStr(varsString:string;SepChar 
:String):String; 
  //得到字符串中一个子串 
  //因要改变参数aString的值,所以将它用var定义 
。 
  FunctionGetSubStrNum(aString,SepChar:String 
):Integer; 
  //计算一个字符串要被分割成几个字段。 
  参数:aString是所需分割的一个字符串, 
  SepChar是分割符。 
  FunctionRegulateStr(aString:String;Sepchar 
:String):String; 
  var 
  i,Num:Integer; 
  Flag:Boolean; 
  MyStr,TempStr:String; 
  begin 
  Flag:ΚFalse;//进行标志,去除多余的分割符 
  Num:ΚLength(aString);//计算aString串的 
长度 
  fori:Κ1toNumdo 
  begin 
  TempStr:ΚCopy(aString,i,1);//取aStrin 
g串中的一字符 
  ifTempStrΙΛSepCharthen 
  begin 
  MyStr:ΚMyStr+TempDtr; 
  Flag:ΚTrue; 
  end 
  else 
  if(FlagΚTrue)then 
  begin 
  Mystr:ΚMystr+TempSrt; 
  Flag:ΚFalse; 
  end; 
  end; 
  ifMyStr[Length(MyStr)]ΙΛSepCharthen 
  MyStr:ΚMyStr+SepChar; 
  RegulateSrt:ΚMyStr; 
  end; 
  FunctionGetSubStr(varaString:String,SepChar 
:Strign):String; 
  var 
  Mysrt:String; 
  StrLen:Integer; 
  SepCharPso:Integer; 
  begin 
  StrLen:ΚLength(aString); 
  SepCharPos:ΚPos(SepChar,aString);//计 
算分割符在子串中的位置 
  MyStr:ΚCopy(aString,1,SepCharPos-1);/ 
/将分割符前所有字符放到mystr串中 
  Delete(aString,1,SepCharPos);//除去分割 
符和分割符前的子串 
  GetSubStr:ΚMyStr;//返回一个字段 
  end; 
  FunctionTforml.GetSubStrNum(aString:String 
;SepChar:String):Integer; 
  var 
  i:Integer; 
  StrLen:Integer; 
  Num:Integer; 
  begin 
  StrLen:ΚLength(aString); 
  Num:Κ0; 
  fori:Κ1,toStrLendo 
  ifCopy(aString,i,1)ΚSepCharthen 
  Num:ΚNum+1; 
  GetSubSrtNum:ΚNum; 
  end: 
  有了上面三个函数,现在介绍一下具体的应用: 
  1.首先建立一个窗体Forml,加入一个RichEditl( 
或Menol),一个按钮Buttonl和一个Tablel,设置Tablel 
的属性: 
  Tablell.DataBaseΚ′c:ιArchivs′ 
  Tablell.TableNameΚ′Archive.dbf′ 
  2.分别加入以下程序: 
  ConstSpaceΚ′′ 
  ProcedureTForml.FormCreate(Sender:Tobject) 

  begin 
  RichRditl.Lines.LoadFromFile(′Archive.txt 
′); 
  end; 
  ProcedureTForml.Button1Click(Sender:Tobje 
ct); 
  var 
  i,j:Integer; 
  MyLine:String; 
  begin 
  withTableldo 
  begin 
  Open; 
  fori:Κ0toRichEditl.Lines.Count-1do 
  begin 
  MyLine:ΚRegulateStr(Richeditl.Lines[i], 
Space); 
  forj:Κ1toNumToken(MyLIne,Space)do 
  begin 
  Append; 
  fileds[j-1].aString:ΚGetSubSrt(MyLine, 
Space)); 
  post; 
  end; 
  end; 
  end; 
  end; 
  然后就可以进行编译,运行了。 
【教程录入:残梦    责任编辑:残梦 】
发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
  • 上一篇教程:

  • 下一篇教程:
  • 网友评论:(评论内容只代表网友观点,与浩扬网络立场无关!)
    热门文章

    赞助商


    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 |