当前位置: 首页 > news >正文

天津做一个简单的网站首页成都广告投放公司

天津做一个简单的网站首页,成都广告投放公司,大理网站设计,seo见到效果再付费一个优秀的Delphi程序员#xff0c;不仅要会写控件#xff0c;还要会使用控件。 我还是一个半瓢水的程序员#xff0c;因此目前为止我所能努力达到的境界是: 一个半瓢水的程序员#xff0c;管他会不会写控件#xff0c;只要能拿来改就可以了。 使用过Delphi的…  一个优秀的Delphi程序员不仅要会写控件还要会使用控件。   我还是一个半瓢水的程序员因此目前为止我所能努力达到的境界是:   一个半瓢水的程序员管他会不会写控件只要能拿来改就可以了。   使用过Delphi的朋友都知道我们在设计Delphi应用程序的某一功能时总是希望能够有现成的第三方免费控件可以拿来使用。但实际情况往往是网上的控件确实种类繁多优秀作品也数不胜数但真正完全能够符合设计者具体要求的控件却很少。究其原因不外乎以下几条   1、国人开发的应用程序大多具有中国特色而优秀的第三方控件往往是国外程序开发人员开发的(大名鼎鼎的Rxlib知道吧俄罗斯人的作品)。功能定义上的差别导致了控件的不可用性看看QuickReport就知道了(当然QuickReport编的也很烂。   2、真正优秀的第三方控件总是从大局上把握控件所能达到的功能细节问题考虑的不多。而我们设计的程序通常要考虑到很多操作细节上的问题(一般是客户的要求有时会有些变态)   3、对于许多很有特色的控件我们所需要的只是其中一部分功能但是它被整合到了某一个大的方法中无法为我们所用。   4、优秀和免费总是两个矛盾天下没有免费的午餐。   种种原因限制了开发者对控件资源的充分利用。其实很多控件的代码都提供了开放的接口。只要大家对控件的原理有一定的了解然后对别人的控件代码作一捏捏的修改就可以无缝的添加自己需要的功能或剔除冗余的功能。既达到了开发的目的又避免了重写代码的麻烦一举两得(好像很不负责任啊没办法了半瓢水嘛)。关于控件的原理应该有很多文章介绍过了在这里我想通过一个具体的实例来介绍一下怎样将别人的控件拿来为我所用。   这个例子是关于如何将一个文本数据导入导出控件作一些简单的修改之后拿来使用的。   ◆程序功能   将图书馆的ISO文件中的部分数据转到Oracle8数据库中。   ◆设计要求   1.显示导入进度条。   2.在导入过程中如果某条纪录导入失败不显示异常而将导入失败的纪录记入日志。   ◆设计思路   程序的关键在文本数据字段的分离。通常的做法,都是先将字符串进行处理(RegulateString),然后把串中每个字符同分割符(可以是空格,逗号等)比较将不是分割符的字符追加到一个串中(GetRecordItem),得到一个字段的内容。通过一个循环(循环次数由GetItemNum来定),就可以将一个字符串分成几个字段。最后的工作就是将分离出来的数据对号入座加入数据库。   按照上面的思路,利用Delphi提供的已有函数和过程,实现起来应该不难,但问题是,我可不想每次编文本导入程序的时候,都把什么这啊那的函数过程重新定义一遍,哎,最烦的就是重复性的工作了.那么有没有现成的控件将上述过程都封装起来呢?PS:又不用我编呢   答案是肯定的!前几天刚刚下了一个免费控件TPgCSV,据说可以实现文本的导入和导出.翻出来一看,正是我想要的。   在深入到下面的内容之前,有必要对该控件的类声明部分作一定了解   //中文部分为笔者所作的注释 //注意: //在该控件中,Export代表将文本数据导入到数据库Import代表从数据库导出到文本。??? 怎么和我理解的 //导入导出概念刚好是反的 :) type //在处理数据产生异常时可选择继续还是中止 TPgCSVErrorResponse (pgcsvAbort, pgcsvIgnore); //进程监控事件声明,可以将导入/导出的进度作为参数传出 TPgCSVProgressEvent procedure (Sender : TObject; AProgress: LongInt; var StopIt: Boolean) of object; //发生异常时的事件处理声明异常信息通过该接口传给程序员。 TPgCSVExportErrorEvent procedure (Sender : TObject; Mess: string; RecNo: LongInt; var Response:TPgCSVErrorResponse) of object; TPgCSV class(TComponent) private FDataset : TDataset; FCSVMap, FCSVFile, FDateFormat, FIgnoreStr : string; FSeprator, FDelimiter, FFieldIndicator : Char; FAutoOpen, FUseDelimiter, FSilentExport, FTrimData, FStop, FEmptyTable : Boolean; FBeforeOpenTable, FAfterOpenTable, FBeforeCloseTable, FAfterCloseTable, FBeforeEmptyTable, FAfterEmptyTable, FBeforeExport, FAfterExport, FBeforeImport, FAfterImport, FOnAddRecord : TNotifyEvent; FExportProgress, FImportProgress : TPgCSVProgressEvent; FExportError : TPgCSVExportErrorEvent; FMapItems, FDefaultInt : Integer; FBufferSize : LongInt; FFieldCache : TList; protected FFile : TextFile; //以下就是我所说的希望封装的部分 function CountMapItems:Integer;//计算映射字符串的字段个数 function GetMapItem(ItemIndex:Integer;var AField:Boolean):string;//提取映射字符串的字段 function GetCSVRecordItem(ItemIndex:Integer;CSVRecord:string):string;//提取CSV文件字符串中的某一字段 function BuildMap:string;//自动创建映射,如果CSVMap一栏为空的话,会由它来产生映射字符串 function ExtractWord(Item: Integer;S, WordDelim: string): string;//提取文本数据字符串/映射字符串中的某一字段 function WordCount(const S ,WordDelim: string): Integer;//计算文本数据字符串/映射字符串中的字段数目 function WordPosition(Item: Integer; const S, SubStr: string): Integer;//计算子字符串在字符串中的位置 public constructor Create(AOwner: TComponent); override; published //properties property Dataset : TDataset read FDataset write FDataset; //设置要导入或导出的目标数据集. property CSVMap : string read FCSVMap write FCSVMap; //CSV 文本数据文件到数据库字段值的映射字符串.控件通过该映射决定文本中的哪些数据要导入及要导入哪个字段. property CSVFile : string read FCSVFile write FCSVFile; //CSV 文件格式其实就是文本数据文件。CSV代表什么意思呵呵我也不知道 property Seprator : Char read FSeprator write FSeprator; //分隔符可以是空格也可以是、、等符号 property FieldIndicator : Char read FFieldIndicator write FFieldIndicator; //字段标识符. property AutoOpen : Boolean read FAutoOpen write FAutoOpen; //将AutoOpen设为True可以在处理数据前自动打开要导入的数据表并在操作完毕后自动关掉它。 property IgnoreString : string read FIgnoreStr write FIgnoreStr; //忽略纪录的标识串. //举例来说 //IgnoreString:(ignore); //CSVMap:$Name,(ignore),$Age; //在这种情况下CSVToDataSet方法即导入数据方法将忽略文本文件中的第二列的字段。 property Delimiter : Char read FDelimiter write FDelimiter; //在某些CSV文档中标识字符串纪录的标识符比如john,boy,12中的在这种情况下,TPgCSV //会忽略这些标识符。 property EmptyTable : Boolean read FEmptyTable write FEmptyTable; //只在从数据库导出(DataSetToCSV)方法中有效作用是创建一个新的CSV文件。 property UseDelimiter : Boolean read FUseDelimiter write FUseDelimiter; //是否有Delimiter。 property SilentExport : Boolean read FSilentExport write FSilentExport; //若该属性为True,应用程序将不显示数据操作时的异常,而将异常信息通过一个接口传给程序员处理. property DateFormat : string read FDateFormat write FDateFormat; //设定CSV文件中日期数据的格式。 property TrimData : Boolean read FTrimData write FTrimData; //是否去掉数据头尾的空格. property DefaultInt : Integer read FDefaultInt write FDefaultInt; //整/实形数据转换出错后的默认值 property BufferSize : LongInt read FBufferSize write FBufferSize; //CSV 文件的缓冲值以字节为单位可以加快导入和导出数据的速度。 //events property BeforeOpenTable : TNotifyEvent read FBeforeOpenTable write FBeforeOpenTable; property AfterOpenTable : TNotifyEvent read FAfterOpenTable write FAfterOpenTable; property BeforeCloseTable : TNotifyEvent read FBeforeCloseTable write FBeforeCloseTable; property AfterCloseTable : TNotifyEvent read FAfterCloseTable write FAfterCloseTable; property BeforeEmptyTable : TNotifyEvent read FBeforeEmptyTable write FBeforeEmptyTable; property AfterEmptyTable : TNotifyEvent read FAfterEmptyTable write FAfterEmptyTable; property BeforeImport : TNotifyEvent read FBeforeImport write FBeforeImport; property AfterImport : TNotifyEvent read FAfterImport write FAfterImport; property BeforeExport : TNotifyEvent read FBeforeExport write FBeforeExport; property AfterExport : TNotifyEvent read FAfterExport write FAfterExport; property ExportProgress : TPgCSVProgressEvent read FExportProgress write FExportProgress; //进程监控事件。每完成一条文本数据的导入就触发该事件。 property ImportProgress : TPgCSVProgressEvent read FImportProgress write FImportProgress; property OnAddRecord : TNotifyEvent read FOnAddRecord write FOnAddRecord; property ExportError : TPgCSVExportErrorEvent read FExportError write FExportError; //发生异常时交由该事件处理异常信息通过该接口传给程序员。 //methodes //整个控件的核心内容 procedure CSVToDataset;//将文本导入到数据集的方法 procedure DatasetToCSV;//将数据集的数据导入到文本的方法 end; procedure Register; {略} implementation {略} end.   从声明部分中我们可以看到,TPgCSV将文本数据的导入导出全部封装到了CSVToDataSet(文本数据导入)和DataSetToCSV文本数据导出)两个方法中.开发者可以在设计阶段直接将文本文件同要导入/出的数据库相连,然后在程序运行当中调用这两个方法就可以了,根本不用理会那些函数什么的,相当的方便.   转载于:https://www.cnblogs.com/tecsoon/archive/2009/03/04/1403069.html
http://www.huolong8.cn/news/458608/

相关文章:

  • 网站怎么做权重白云优化网站建设
  • 做网站必须在工信部备案吗视频链接下载到本地
  • 什么手机可做网站免费企业网站如何建设
  • 红灰搭配网站模板个人网站域名备案
  • 南昌网站设计网站开发加强网站建设 实施政务公开
  • 石排镇网站建设公司wordpress站群功能
  • 净化工程 技术支持 东莞网站建设电子书网站建设
  • 试用网站建设中企动力网站策划
  • 攀枝花建设规划网站wordpress js被挂木马
  • 做正规小说网站翻译做网站
  • 单网页网站 企业工作内容如何创造价值
  • 制作网站公司谁家好一元云购 网站开发
  • 用lls建设一个网站网页设计职位
  • 找人做网站会不会被偷网站建设一般报价多少
  • 农业畜牧网站开发爱尔眼科医院集团
  • 北京建站公司做网站价格叙永县城乡建设部网站首页
  • 北京建设官方网站大连建设网官方网站
  • 杭州网站建设杭州沃迩夫dedecms和wordpress
  • 网站到底备案好不好平面设计培训费一般多少钱
  • 外贸企业网站评价案例有名的产品设计公司
  • 无锡建设公司网站福州建设公司名单
  • 在什么地方可以接到做网站的活休闲文化网站
  • 深圳建网站技术邯郸企业建网站
  • 做废旧金属的网站宁波网站推广建站
  • 代做广联达 的网站网站出现弹窗
  • php与python做网站兰州seo整站优化服务商
  • 2017主流网站开发语言wordpress 用户组权限设置
  • 怎么找人做淘宝网站吗网上商城网站建设体会
  • 做网站用多大的服务器广州注册公司必看
  • 西瓜网站建设wordpress不自动安装插件