[#61] HposClient--CS版(Delphi)开发FAQ
说明 HposClient--CS版(Delphi)开发FAQ 于此.
目录
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
004、在 新数据通讯->在线库存管理->本地门店库存下载 点"在线下载"按钮时会导致系统崩溃,可能是什么原因?
009、POS终端控制外设用到了哪些设备相关的DLL或者Ocx ?
010、POS终端用到那些额外的非设备相关的DLL或者OCX?
012、我使用readln 和 writeln 拼接多个文本文件后发现有一段的中文是乱码,且英文每个字母之间多了个点,如何解决?
013、为什么门店注册成功后,虽然可以选择到商场,但专柜名称的下拉列表框中依然是空的?
041、客户端自动更新是如何设计的?
042、门店内多台电脑连接同一个客户端数据库实现是如何设置的?
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
答:
1、安装Delphi (打补丁到Sp2) , 安装Sqlserver MSDE版数据库(导入POS1数据库)
1.2 安装 TortoiseSVN-1.4.0.7501-win32-svn-1.4.0.msi
从本站的svn库把代码Checkout
2、安装第三方组件包括(比如,假设这些组件存放于 D:\Delphi_Controls 目录下):
这些控件都可以通过网上搜索到,也可在本站的文件->Delphi控件处下载.
VclZip.pro.v3.10.1
indy10
CoolTrayIcon?
EmbededWB_D2005?
interface?
SQL_Backup?
ThirdCompent?
AAFont
Ehlib_4.1.4
FastReport 2.5?
ZipTV4?
3、在Delphi 6 IDE的 Tools->Enviroment Options->Library ->Library Path 下添加如下路径:
D:\Delphi_ControlsCoolTrayIcon\Source;
D:\Delphi_Controls\EmbeddedWB_D2005\Source;
D:\Delphi_Controls\indy10.0.52_source\System;
D:\Delphi_Controls\indy10.0.52_source\Core;
D:\Delphi_Controls\indy10.0.52_source\Protocols;
D:\Delphi_Controls\interface\Source;
D:\Delphi_Controls\SQL_BackUp\Source;
D:\Delphi_Controls\ZipTV4\Source;
D:\Delphi_ControlsVclZip.pro.v3.10.1;
D:\Delphi_ControlsThirdComponent\AAFont\Source;
D:\Delphi_ControlsThirdComponentEhLib_4.1.4\Common;
D:\Delphi_ControlsThirdComponentFastReport 2.5\source;
D:\Delphi_Controls\Cipher78 Demo Delphi;
添加时,放在单独的一行上,拷贝进去:
D:\Delphi_ControlsCoolTrayIcon\Source;D:\Delphi_Controls\EmbeddedWB_D2005\Source;D:\Delphi_Controls\indy10.0.52_source\System;D:\Delphi_Controls\indy10.0.52_source\Core;D:\Delphi_Controls\indy10.0.52_source\Protocols;D:\Delphi_Controls\interface\Source;D:\Delphi_Controls\SQL_BackUp\Source;D:\Delphi_Controls\ZipTV4\Source;D:\Delphi_ControlsVclZip.pro.v3.10.1;D:\Delphi_ControlsThirdComponent\AAFont\Source;D:\Delphi_ControlsThirdComponentEhLib_4.1.4\Common;D:\Delphi_ControlsThirdComponentFastReport 2.5\source;
另外, svn上下下来的txcommon 和 PublicCode? 是共用模块,也需要放到lib路径中:
比如: D:\hposclient\trunk\delphi\txcommon;D:\hposclient\trunk\delphi\PosDouble?
答:对于DLL工程,在Delphi IDE 的Run->Parameters->Host Application 中输入主程序的路径,比如:C:HposClient\output\Ppossys.exe
答:在线库存查询调用的都是jsp文件,查询的SQL语句是写在通讯服务器端的,详情可参考:http://gforge.retailsolution.cn:81/gf/project/hposcomm/wiki/?&pageid=62
004、在 新数据通讯->在线库存管理->本地门店库存下载 点"在线下载"按钮时会导致系统崩溃,可能是什么原因?http://gforge.retailsolution.cn:81/gf/project/hposcomm/wiki/?&pageid=62
答:此按钮会调用通讯服务端的 wwwroot/hpos/onlinedownload.do->commOnlineDownloadServlet.java ( 通过在Delphi中F7跟踪可以知道此按钮调用了onlinedownload.do, 另外请参考wwwroot\hpos\WEB-INF\web.xml配置 得到处理onlinedownload.do的Serverlet class) ,如果java程序出错(比如 emitpdtoptstgdeskaccountga 表不存在)则会导致此问题,Delphi 端的例外捕获解决不了崩溃问题。
答: 是从RegisterCompanyInfo?TBQuery 和Possysparams 表拼出来的。
答:1、主界面启动时,创建了应用级的临时数据集:Globalvar,并从connection.ini中读取主要连接参数,但这些参数中没有具体的Pos1或针Pos2数据库。
2、当用户点选择商场? 按钮后,系统从RegisterCompanyInfo?.xml读取数据到Datagrid 控件,DataPath?.xml中Rowdata. DataPath?是记录具体的数据库的(比如Pos1或者Pos2)
3、当用户选择了某个具体门店后,系统获取AdoConStr?的值,并赋值给Globalvar.Datasource ,组成一个完整的数据库联接字符串:Globalvar. $$%%$$
4、系统的每个Form都是用了Globalvar. 从中可以获取数据库联接字符串。这样每个Form就可以访问数据库了。
答:1、主界面启动时,在选择具体的门店前,菜单是从Menus.xml(此文件可以使用PXMLEDit.exe 打开编辑)中加载的,当选择门店,并登陆营业员后,菜单是从数据库的posmenu表中加载的。值得注意的是如果想添加菜单,则菜单ID 还必须在accountspopedomst表中存在。菜单加载相关的逻辑在menudataclass.pas中。
2、菜单的响应逻辑在uiclass.MenuOnClick?()中
答:是的,每个Form 的统一入口函数是:LoadChildForm? ; 大部分Form初始化工作均在此过程完成,比如登陆人员,门店,数据库连接等等。比如销售界面的数据库连接就是在初始化后存放于DataModule?1.database1 中。初始化过程中会调用函数遍历当前Form 上的所有AdoQuery? 组件,给每个AdoQuery?组件赋于连接字符串。
销售界面的销售明细使用了一个Datagrid , 我们能找到的关系是这样的:
1、 Datagrid 同时设置了Datasource 和Dataset属性。从属性上看,从Dataset方向看,看不出与数据库联接有何联系,从Datasource 方向看,也看不出与数据库联接有何联系。那么到底在哪里给出联系了呢?从代码中找所有涉及cdsitem和dscItem也未找到与数据库联接有关的地方。
009、POS终端控制外设用到了哪些设备相关的DLL或者Ocx ?
答:API_COM.DLL、MULTIDLL.DLL、Cipher78.ocx、IrLib.dll
010、POS终端用到那些额外的非设备相关的DLL或者OCX?
答:qtintf.dll 、wp.dll?
答:在pseldatabase.dll里面
012、我使用readln 和 writeln 拼接多个文本文件后发现有一段的中文是乱码,且英文每个字母之间多了个点,如何解决?
答:这是因为字符集和格式问题导致的,可以这么解决:先用ultraEdit打开有问题的文件,在16进制下可看到确实在每个英文字符之间有"."; 另存一下,注意选择:Line Terminator:Dos Terminators-CR/LF; Format:UTF-8-NO BOM; 然后使用GB2UTF8.exe 出问题的文本文件从utf8 转成GB. 转完后用ultraedit打开中文可能还是乱码,没关系,用ultraEdit打开没有转之前的备份,把内容拷贝到新的GB编码的文件中,然后再保存即可。
013、为什么门店注册成功后,虽然可以选择到商场,但专柜名称的下拉列表框中依然是空的?
答:门店注册成功后,门店的信息被写入到usercenter表中,但并没有被写到shoppedossier表中,而专柜名称的下拉列表框中的内容是从shoppedossier表中获取的,你需要通过通讯把后台的shoppedossier信息同步过来。
删除页面 锁定页面 编辑此页
