[南京地区工作信息]
程序开发外包 深资程序员请进 作者: 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(“字段名”)”),只需要一级嵌套使用即可以。
程序开发外包 深资程序员请进 作者: 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 公有 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> <RS>Table("ID")</RS></td>
<td> <RS>Table("Model")</RS></td>
<td> <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"> </p>
<p align="left"> </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> <RS>Query("ID")</RS></td>
<td> <RS>Query("Model")</RS></td>
<td> <RS>Query("Amount")</RS></td>
</tr></ RecordSet >
</table>
<p align="left"> </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> <RS>Table("ID")</RS></td>
<td> <RS>Table("Model")</RS></td>
<td> <RS>Table("Amount")</RS></td>
</tr>
</RecordSet>
经过翻译后应该形成为:
<tr>
<td> 001 </td>
<td> St454>
<td> 1200>
</tr>
<tr>
<td> 002</td>
<td> St43>
<td> 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次没有内存使用增加趋势现象,不应随着使用次数的多少而增加。提供完整源代码,版权归委托方所有,开发方不的使用(包括自己)、传播和二次升级开发本控件。
交付确认后,开发方不的保留任何代码备份以及编译后的控件。