[南京地区工作信息] 
程序开发外包 深资程序员请进  作者: draker 发表日期: 2003-06-18 11:53:04 机会面对面 返回
以下程序需要请人开发,概要请看下面,具体有详细的设计需求书!要求开发者:  很熟悉Delphi开发,熟悉Html 
  对字符串处理有较深的造诣。
 (如果是学生,需要研究生以上学历)
  南京地区者优先考虑。
请发个人资料:[email protected]
一、 概述
本控件(定名为:SunHtmlProcess)完成在DELPHI6.0下对网页进行处理功能,给SunHtmlProcess指定资料源和HTML模板文件,生成新的Html文件。
模板文件中扩充了Html的语法,扩充的部分由SunHtmlProcess来完成解释处理。扩充的部分分为三种类型:
1、变量型
语法为<VAR>变量名</VAR>
功能为获取SunHtmlProcess中对应的变量的值。2、记录型
语法为<RecordSet><RS>Table(“字段名”)</RS></RecordSet >和
< RecordSet ><RS>Query(“字段名”)</RS></RecordSet >
功能为获取对应记录中的内容,形成表格。3、函数型
语法为<TableFun>Sum(“字段”)</TableFun>和<QueryFun>Sum(“字段”)</QueryFun>
中间支持的函数有Avg(“”),Count(“”),UpCase(“”)
此处函数有嵌套使用,例如:UpCase(“Sum(“字段名”)”),只需要一级嵌套使用即可以。

解决方案 »

  1.   

    三、 对象属性
    次序 类型 属性名 备注
    1 公有 DataSource 根据此形成一个记录集,将其称为此控件的Table对象
    2 公有 DatabaseName 根据此两个属性形成第二个记录集,将其称为此控件的Query对象
    3 公有 SQL
    4 私有 VarStore:VarNameDataTypeValue 是链表名称,存放各种变量名和变量的值、类型。必须考虑到备注型的值。
    5 公有 PathNew 新生成的Html文件路径
    6 公有 FileNameNew 新生成的Html文件名
    7 公有 PathModel 模板Html文件路径
    8 公有 FileNameModel 模板Html文件名
    四、 对象方法
    次序 类型 方法名 备注
    1 公有 Bool Open() 形成Table对象和Query对象,成功返回True,否则返回False允许没有Table对象或者Query对象或者两个都没有
    2 公有 Bool AddVar(变量名,值,数据类型) 向链表VarStore中增加变量。成功返回True,否则返回False
    3 公有 Bool Process() 打开模板Html文件进行处理,形成新的Html文件。成功返回True,否则返回False
    4 公有 Bool Reset() 清除链表和关闭Table对象和Query对象。
    5
    五、 应用流程1、 设计模板文件文件名:c:/model/PriceList.htm
    内容为:
    <html><head><title></title></head>
    <body bgcolor="#FFFFFF">
    <div align="center">
      <p><b>本次购买物品清单</b></p>
      <p align="center">购买人:<var>Name</var> 日期:<var>Date</var></p>
      <table width="75%" border="1">
        <tr> 
          <td> 
            <div align="center">物品编号</div>
          </td>
          <td> 
            <div align="center">型号规格</div>
          </td>
          <td> 
            <div align="center">金额</div>
          </td>
    </tr>
    < RecordSet >
        <tr> 
          <td>&nbsp;<RS>Table("ID")</RS></td>
          <td>&nbsp;<RS>Table("Model")</RS></td>
          <td>&nbsp;<RS>Table("Amount")</RS></td>
    </tr>
    </ RecordSet >
      </table>
      <p align="center">合计小写:<TableFun>Sum("Amount")</TableFun></p>
      <p align="center">合计大写:<TableFun>UpCase("Sum("Amount")")</TableFun></p>
      <p align="left">&nbsp;</p>
      <p align="left">&nbsp;</p>
      <p align="center">去年购买物品清单</p>
      <table width="75%" border="1">
        <tr> 
          <td> 
            <div align="center">物品编号</div>
          </td>
          <td> 
            <div align="center">型号规格</div>
          </td>
          <td> 
            <div align="center">金额</div>
          </td>
        </tr>< RecordSet >
        <tr> 
          <td>&nbsp;<RS>Query("ID")</RS></td>
          <td>&nbsp;<RS>Query("Model")</RS></td>
          <td>&nbsp;<RS>Query("Amount")</RS></td>
        </tr></ RecordSet >
      </table>
      <p align="left">&nbsp;</p>
      <p align="center">合计小写:<QueryFun>Sum("Amount")</QueryFun></p>
      <p align="center">合计大写:<QueryFun>UpCase("Sum("Amount")")</QueryFun></p>
      </div>
    </body>
    </html>将模板的显示格式为: 2、 将SunHtmlProcess放到Form中生成一般使用过程:SunHtmlProcess.DataSource:=”NowSelectDB”SunHtmlProcess.DatabaseName:=”database”
    SunHtmlProcess.SQL:=”select * from 去年购买记录表”SunHtmlProcess.PahtNew:=”d:/New”
    SunHtmlProcess.FileNameNew:=”Buy01.htm”SunHtmlProcess.PathModel:=” c:/model/”
    SunHtmlProcess .FileNameModel:=”PriceList.htm”SunHtmlProcess.AddVar(“Name”,”张小王”,string)
    SunHtmlProcess.AddVar(“Date”,”03-2-15”,datetime)If  SunHtmlProcess.Open()  then
    SunHtmlProcess.Process();
    SunHtmlProcess.Reset();指定分组汇总字段的使用过程
    SunHtmlProcess.GroupFieldQuery:=’Name’;
    如果有此指定,必须在形成表格的时候按照指定字段进行分组汇总,只对表格中数字类型的字段进行小计。3、 SunHtmlProcess.Process()的详细过程
    对扩充了Html的语法进行解析后生成新的Html文件,依据三种语法类型进行替换。对于<RS>语法,自动形成表的格式,如其中如下段:
    <RecordSet>
        <tr> 
          <td>&nbsp;<RS>Table("ID")</RS></td>
          <td>&nbsp;<RS>Table("Model")</RS></td>
          <td>&nbsp;<RS>Table("Amount")</RS></td>
    </tr>
    </RecordSet>
    经过翻译后应该形成为:
        <tr> 
          <td>&nbsp;001 </td>
          <td>&nbsp;St454>
          <td>&nbsp;1200>
    </tr>
        <tr> 
          <td>&nbsp;002</td>
          <td>&nbsp;St43>
          <td>&nbsp;1400>
    </tr>
    < RecordSet >语法要特别注意,这是表示将本段中的内容进行重复,重复的行数依据其中<RS>所定义的行数。雷同于ASP语法中的<% while not rs.eof%>           <%  wend %>功能。
    而<RS>语法就等同于ASP语法中的<%=RS(“变量名”)%>
    注意<RecordSet>语法,是针对其中的段进行重复,这个中间的段的内容,可能很长,有很多行,并非如本例所举简单。4、 其它辅助参数说明<RecordSet>可带如下参数,所有参数加上为:
    <RecordSet  Filter=”过滤条件”  Sort=”Asc/Desc”  Field=”排序字段名”  Group=”分组字段名”  Row=”开始行—结束行”>
    不带参数就不处理,带几个参数就处理几个参数。其中Sort和Field是必须同时存在使用的。
    Filter 填写对记录集的过滤条件,如“name=’123’ and age=20”
    Sort 填写排序次序,Asc 升次序,Desc 减次序 Field 存放要排次序的字段名
    Group 填写分组字段名,如果填写了分组字段名,必须有分组的小计,需要小计字段取决于<RS>参数定义。
    Row 写开始行到结束行,如1-20,没有此参数就是所有记录。<RS>可带如下参数,所有参数加上为:
    <RS Discont Sum>
    Discont 参数表示唯一显示,也就是当前行本字段内容如果和上一行等同内容,那么不显示。
    Sum 参数表示如果对RecordSet指定了Group参数,那么本字段将进行分组合计。
    <RS>Table(“ObjectRecordID”)</RS> 为系统固定函数,显示当前Table对象的记录号。
    <RS>Query(“ObjectRecordID”)</RS> 为系统固定函数,显示当前Query对象的记录号。5、 关于模板文件中的图片处理 程序要将所有图片的路径都转换成相对路径的形式
    <img src="file:///xxx/images/03.jpg" width="94" height="21">
    转换成
    <img src=" images/03.jpg" width="94" height="21">
    格式
    将图片03.jpg拷贝到新文件路径下,如果images子目录存在,就拷贝进去,如果不存在就先建立images子目录,然后拷贝文件进去。
    六、 技术要求采用Delphi6开发,编译成bpl形式,可以注册到面板上使用。
    必须做到内存释放无遗留,要求连续打开对象、输入参数、使用、关闭对象,循环1000次没有内存使用增加趋势现象,不应随着使用次数的多少而增加。提供完整源代码,版权归委托方所有,开发方不的使用(包括自己)、传播和二次升级开发本控件。
    交付确认后,开发方不的保留任何代码备份以及编译后的控件。
      

  2.   

    这不需要太多的字符串操作,你应该找一个Delphi cgi程序员