1 Star 0 Fork 4

ssnail / yberp-opensource

forked from 飞骏 / yberp-opensource 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
need bpl.txt 14.23 KB
一键复制 编辑 原始数据 按行查看 历史
飞骏 提交于 2023-06-30 18:10 . no commit message
访问OLE注册表的错误 Object not available
Register
计算机\HKEY_CLASSES_ROOT 右键 权限 加入当前用户读写权限
标准的报价
C3进销存成长版 2站点免费 站点 900
C3财务成长版 2站点免费 站点 900
C3进销存 1999(套含一站点) 站点 900*0.3=270(没有财务)
C3专业版 2999(套含一站点) 站点 1200*0.3=360(有财务)
C5基础版 4999(套含一站点) 站点 2000*0.3=600(没有财务、生产)
C5专业版 6999(套含一站点) 站点 2600*0.3=780(没有生产)
C5企业版 9999(套含一站点) 站点 3000*0.3=900
三折就是你的成本
举个例子:
C3 1999(套含一站点) 进销存站点 900*0.3=270(没有财务)
客户要3个站点(3用户同时使用)
客户的产品费用 代理的产品费用
1999+900*2=3799 (一站点免费)0+(站点3折)900*0.3*2=540
你的利润 3799-540=3259
明年开春还有手机版(支付宝、微信移动支付),POS(支付宝、微信二维码当面付)
执行安装包批处理需要管理员权限运行,不能使用相对路径,要用绝对路径
执行更新数据库模板文件批处理使用相对路径,不要使用管理员权限运行
常用目录
E:\Program Files (x86)\Embarcadero\Studio\20.0\bin
E:\Program Files (x86)\Devart\UniDAC for RAD Studio 10.3\Bin\Win32
C:\Users\Public\Documents\Embarcadero\Studio\20.0\Bpl
G:\D10\components and tools\10.3\Steema TeeChart Pro VCL FMX Source Code 2019.27\Compiled\Delphi26.win32\System
10.3.3
控件安装有次序
1.E:\Program Files (x86)\Embarcadero\Studio\20.0\bin\dclsockets260.bpl
2.Raize(6.2.3) Raize.groupproj
3.UniDac(8.2) .exe
4.llPdfLib36
5.TeeChart2019 需要卸载系统自带的并把system32目录(x64 SysWOW64)旧版本移除,否则会有同名窗体而无法加载新版本,
先将Unicode 控制面板-区域和语言-区域-管理-非UniCode-更改系统区域设置-英文(英国)
(Win10 将Unicode 控制面板-时间和语言-语言-管理语言设置-管理-非UniCode-更改系统区域设置-英文(英国))
后执行TeeRecompile.exe安装(会自动备份旧版本,)
如果有使用FastReport控件,安装时需要修改两个tee.inc文件,使用TeeChartPro9版本
6.ReportMachine(7.0增加二维码、修正PDF文件导出比率) --需要llPdfLib36, rm_10.3.groupproj
TeeChart2019 要设置Search Path TeeChart\Compiled\Delphi26.win32\Lib\Obj
7.DevExpress(19.1.2) 需要TeeChart2019 DxAutoInstaller.exe
8.VCLZIP451.1 VCLZipD10_3_2.dproj
9.EurekaLog_7.11.1.0
三方源码
1.DIOCP
开发插件
GExperts CnPack IDEFixPack DLight DDevExtensions288 madExcept5
工具
Git Svn ASPack MySpy
Spy++
Notepad++
everything
平平深度文件搜索
Delphi7
控件安装有次序
1.C:\Program Files\Borland\Delphi7\Bin\dclsockets70.bpl
2.Raize(6.1.2)
3.UniDac(6.4.16)
4.llPdfLib36
5.TeeChart2016 需要卸载系统自带的并把system32目录(x64 SysWOW64)旧版本移除,否则会有同名窗体而无法加载新版本,后执行TeeRecompile.exe安装(会自动备份旧版本)
6.ReportMachine(7.0增加二维码、修正PDF文件导出比率) --需要llPdfLib36,
TeeChart2016 要设置Search Path TeeChart\Compiled\Delphi25.win32\Lib\Obj
7.DevExpress(15.2.2) 需要TeeChart2016
8.VCLZIP451.1
9.FastMM 中的BorlandMM.dll(Delphi7需要 Berlin已经内置)
特别说明:
ReportMachine 中pdf导出使用syspdf.pas文件修改 72 to 100 的页面百分比(modify by pegasus xiaojun 2017-12-19),
原版本1.17与kbmMW使用的1.18不一致,
下载网站新版unstable1.18,使之版本同步
https://synopse.info/fossil/wiki?name=Downloads#unstable
please deactivate the "Stop on Delphi exceptions" option (Tools-->Debugger Options...--> Language Exceptions).
系统需要设置数据执行保护
64位系统需要设置兼容执行
帮助文件工具
Word-2-CHM
YBC3Service.exe
YBC3Server.exe
YBCWService.exe
YBCWServer.exe
不能放在一个工程组里编译,否则Build with runtime packages参数不能正常工作
ReportMachine里的RMRound四舍五入为银行家算法,需要脚本处理
\打印样式\采购订单】四舍五入.rmf 里有解决方案
YBEMobService.exe使用D10编译,如果不带包编译可能会使用不同版本的midas.dll,需要单独目录存放
系统属性-高级-环境变量-系统变量-Path
F:\RADStudio10\Extra\PlatformSDKs\android-sdk-windows;
F:\RADStudio10\Extra\Java\jdk1.8.0_66;
F:\RADStudio10\Extra\Java\jdk1.8.0_66\bin
服务器日期格式要设置成 yyyy-mm-dd
在“控制面板”的“区域和语言”设置(如下图1)还不行,
还需在“管理”的“复制设置”将当前设置复制到系统账户(如下图2),重启服务器发现OK。
修改网站格式: Winodws Server 2008 R2 IIS7或IIS7.5
1.开始-运行-regedti HKEY_USERS-DEFAULT-Control-Panel-International
sDate := - sShortDate :=yyyy-M-d
2.开始-运行-iisreset
Delphi程序必须在资源里面嵌入MANIFEST信息
一 首先编辑一个文件,内容如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator "/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
保存为UAC.manifest,这里文件是随意的。特别注意红色的“requireAdministrator”,这个表示程序需要管理员(Administrator)才能正常运行。
二 然后编辑一个RC文件,名称为uac.rc 如下所示:
1 24 UAC.manifest
其中:
1-代表资源编号
24-资源类型为RTMAINIFEST
UAC.manifest-前面的文件名称
三 用brcc32编译这个rc文件为res文件,如下所示:
brcc32 uac.rc -fouac.res
四 在程序里面加入
{$R uac.res}
让Delphi编译的时候,把uac.res编译进exe文件
五 把文件放到vista或win7下运行,就会看程序图标下面显示UAC盾牌标志了。
为了说明问题,送您一个 stored precedure:
CREATE PROCEDURE usp_GetSomethingList @PageNo int, @PageSize int AS
SET NOCOUNT ON
CREATE TABLE #Temp (
Id int IDENTITY primary key,
rid int
)
declare @MaxGet int
set @MaxGet=@PageSize*@PageNo
SET ROWCOUNT @MaxGet;
INSERT INTO #Temp (rid) SELECT SomethingId FROM tblSomething ORDER BY SomethingId
SELECT Something.* FROM #Temp a right Join tblSomething Something on a.rid=Something.SomethingId
WHERE a.Id>@MaxGet-@PageSize
ORDER BY SomethingId
GO
yysun (2002-06-05 3:56:00)
或者 这个用 cursor 的算法
set nocount on declare
@nextid int, @counter int
set @counter=5
create table #t ( rid int )
declare AA insensitive scroll cursor for select UserId from tblUser order by UserId for read only
open AA
fetch absolute 2 from AA into @nextid
while @counter>0 begin
fetch next from AA into @nextid
if @@fetch_status=0 insert #t (rid) values (@nextid)
set @counter = @counter-1
end
close AA
deallocate AA
select * from tblUser u inner join #t t on UserId=t.rid order by UserId
drop table #t
在 1 百万 user 中,按每页 5 个,跳到 2500 页,几乎没有停顿的感觉。
CREATE PROCEDURE usp_speed1
@nextid int, @counter int
AS
set nocount on
create table #t ( rid int )
declare AA insensitive scroll cursor for
select UserId from tblUser order by UserId for read only
open AA
fetch absolute @nextid from AA into @nextid
while @counter>0 begin fetch next from AA into @nextid
if @@fetch_status=0 insert #t (rid) values (@nextid)
set @counter = @counter-1
end
close AA
deallocate AA
select rid as UserId from #t
GO
==========================================================
CREATE PROCEDURE usp_speed2
@PageNo int, @PageSize int
AS
SET NOCOUNT ON
CREATE TABLE #Temp (
Id int IDENTITY primary key,
rid int
)
declare @MaxGet int
set @MaxGet=@PageSize*@PageNo
SET ROWCOUNT @MaxGet;
INSERT INTO #Temp (rid) SELECT UserId FROM tblUser ORDER BY UserId
SELECT rid as UserId FROM #Temp
WHERE Id>@MaxGet-@PageSize
GO
==========================================================
CREATE PROCEDURE usp_speed3
@nextid int, @pagesize int
AS
set nocount on
declare @sql nvarchar(2000)
set @sql=N'select top '+convert(varchar(12),@pagesize)+
' UserId from tblUser where UserId not in (select top ' + convert(varchar(12),@nextid) +
' UserId from tblUser order by userId) order by userId'
exec sp_executesql @sql
GO
有时报地址错误时,可以尝试删除dcu文件全部重新编译看看
有时报不同版本时,需要仔细检查Libary Search的目录设置,尽量不要使用多版本控件,多版本的Delphi,容易目录混乱
控件包使用了DbGridEh。Requies也加入了ehlib70.dcp就是编译时不通过,提示:
Never-build package 'XXXX' requires always-build package 'EhLib70'
最后解决了,需要在Project->Options里的Description里将BuildControl 选项设置成Rebuild as needed
这是程序包的互相依赖是的问题,假如程序包A依赖程序包B,如果B改变了A如何办?这就看你在编译程序包时候的Build Control如何选择,如果选择Rebuild as needed那么这个包所依赖的任何单元只要一个改变它就会重新编译,如果选择Explicit rebuild那么只有你选择重编译时候才会重建,一般情况下程序包比较稳定所以一般都选择这个选项。你这种情况就是B选择了Rebuild as need,A选择了Explicit rebuild,这样B依赖的单元一改变B就被重建,但A间接依赖B所依赖的单元不被重建不符合逻辑,所以编译器禁止这样做,你只要把所有的程序包都设置为Explicit rebuild就可以了
Delphi 出现Never-build package 'a' requires always-build package 'b'错误的解决方法:
1、原理:
两个BPL包,如果A包requires B包,那么A包与B包的Build Control 必须一致,或者A包为Rebuild as needed(Always-build),B包为Explicit rebuild(Never-build)。原因是:如果A包为Explicit rebuild,B包为Rebuild as needed,就是说A包是很稳定的,不需要编译,但A包requires的B包却是常变的,要经常编译的。那么,当B包改变的时候,理应要更新,而A包是Explicit rebuild,所以A包还是不编译,那么造成A包的内容是旧的,最终造成包的更新失败,如果,当应用程序调用A包的时候,就出错了。所以在A包requires B包的情况下,不允许出现“A包为Explicit rebuild,B包为Rebuild as needed”这种组合。Delphi就提示Never-build package 'a' requires always-build package 'b'这个Error了。
2、解决方法:
要把两个包的 Project-> Option 里的 Description 面板里的 Build Control设在一致,一般情况下是 Rebuild as needed
Product Name Version Conditional Define Compiler Version
Embarcadero RAD Studio 10.3 Rio 26.0 VER330 33
Embarcadero RAD Studio 10.2 Toyota 25.0 VER320 32
Embarcadero RAD Studio 10.1 Berlin 24.0 VER310 31
Embarcadero RAD Studio 10 Seattle 23.0 VER300 30
Embarcadero RAD Studio XE8 22.0 VER290 29
Embarcadero RAD Studio XE7 21.0 VER280 28
Embarcadero RAD Studio XE6 20.0 VER270 27
Embarcadero RAD Studio XE5 19.0 VER260 26
Embarcadero RAD Studio XE4 18.0 VER250 25
Embarcadero RAD Studio XE3 17.0 VER240 24
Embarcadero RAD Studio XE2 16.0 VER230 23
Embarcadero RAD Studio XE 15.0 VER220 22
Embarcadero RAD Studio 2010 14.0 VER210 21
CodeGear C++ Builder 2009 12.0 VER200 20
CodeGear Delphi 2007 for .NET 11.0 VER190 19
CodeGear Delphi 2007 for Win32 11.0 VER180,VER185 18,18.5
Borland Developer Studio 20061 10.0 VER180 18
Borland Delphi 2005 9.0 VER170 17
Borland Delphi 8 for .NET 8.0 VER160 16
Borland Delphi 7 7.0 VER150 15
Borland Delphi 6 6.0 VER140 14
Borland Delphi 5 5.0 VER130 13
Borland Delphi 4 4.0 VER120 12
Borland Delphi 3 3.0 VER100 10
Borland Delphi 2 2.0 VER90 9
Borland Delphi 1.0 VER80 8
Turbo Pascal 7 VER70 7
Turbo Pascal 6 VER60 6
Turbo Pascal 5 VER50 5
Turbo Pascal 4 VER40 4
Turbo Pascal 3 VER30 3
Turbo Pascal 2 VER20 2
Turbo Pascal 1 VER10 1
常数名称 十六进制值 十进制值 对应按键
VK_LBUTTON 01 1 鼠标的左键
VK_RBUTTON 02 2 鼠标的右键
VK-CANCEL 03 3 Contol-break 执行
VK_MBUTTON 04 4 鼠标的中键(三按键鼠标)
VK_BACK 08 8 Backspace键
VK_TAB 09 9 Tab键
VK_CLEAR 0C 12 Clear键
VK_RETURN 0D 13 Enter键
VK_SHIFT 10 16 Shift键
VK_CONTROL 11 17 Ctrl键
VK_MENU 12 18 Alt键
VK_PAUSE 13 19 Pause键
VK_CAPITAL 14 20 Caps Lock键
VK_ESCAPE 1B 27 Ese键
VK_SPACE 20 32 Spacebar键
VK_PRIOR 21 33 Page Up键
VK_NEXT 22 34 Page Domw键
VK_END 23 35 End键
VK_HOME 24 36 Home键
VK_LEFT 25 37 LEFT ARROW 键(←)
VK_UP 26 38 UP ARROW键(↑)
VK_RIGHT 27 39 RIGHT ARROW键(→)
VK_DOWN 28 40 DOWN ARROW键(↓)
VK_SELECT 29 41 SELECT键
VK_EXECUTE 2B 43 EXECUTE键
VK_SNAPSHOT 2C 44 Print Screen键
VK_INSERT 2D 45 Ins键
VK_DELETE 2E 46 Del键
VK_HELP 2F 47 Help键
VK_0 30 48 0键
VK_1 31 49 1键
VK_2 32 50 2键
VK_3 33 51 3键
VK_4 34 52 4键
VK_5 35 53 5键
VK_6 36 54 6键
VK_7 37 55 7键
VK_8 38 56 8键
VK_9 39 57 9键
VK_A 41 65 A键
VK_B 42 66 B键
VK_C 43 67 C键
VK_D 44 68 D键
VK_E 45 69 E键
VK_F 46 70 F键
VK_G 47 71 G键
VK_H 48 72 H键
VK_I 49 73 I键
VK_J 4A 74 J键
VK_K 4B 75 K键
VK_L 4C 76 L键
VK_M 4D 77 M键
VK_N 4E 78 N键
VK_O 4F 79 O键
VK_P 50 80 P键
VK_Q 51 81 Q键
VK_R 52 82 R键
VK_S 53 83 S键
VK_T 54 84 T键
VK_U 55 85 U键
VK_V 56 86 V键
VK_W 57 87 W键
VK_X 58 88 X键
VK_Y 59 89 Y键
VK_BZ 5A 90 Z键
VK_NUMPAD0 60 96 数字键0键
VK_NUMPAD1 61 97 数字键1键
VK_NUMPAD2 62 98 数字键2键
VK_NUMPAD3 63 99 数字键3键
VK_NUMPAD4 64 100 数字键4键
VK_NUMPAD5 65 101 数字键5键
VK_NUMPAD6 66 102 数字键6键
VK_NUMPAD7 67 103 数字键7键
VK_NUMPAD8 68 104 数字键8键
VK_NUMPAD9 69 105 数字键9键
VK_MULTIPLY 6A 106 *键
VK_ADD 6B 107 +键
VK_SEPARATOR 6C 108 Separator键
VK_SUBTRACT 6D 109 -键
VK_DECIMAL 6E 110 .键
VK_DIVIDE 6F 111 键
VK_F1 70 112 F1键
VK_F2 71 113 F2键
VK_F3 72 114 F3键
VK_F4 73 115 F4键
VK_F5 74 116 F5键
VK_F6 75 117 F6键
VK_F7 76 118 F7键
VK_F8 77 119 F8键
VK_F9 78 120 F9键
VK_F10 79 121 F10键
VK_F11 7A 122 F11键
VK_F12 7B 123 F12键
VK_NUMLOCK 90 144 Num Lock 键
VK_SCROLL 91 145 Scroll Lock键
~ C0 192 ~键
https://pornplaybb.com
像上面的AV,可以试下:
1:出现AV后,记下该地址,如上面的:0x00684c5f,转成D格式是: $00684c5f
2:马上重运行该程序,在任意位置设断点,如dpr运行的begin后第一行
3:进入断点后,按ctrl+alt+c,弹出反汇编界面(CPU),一堆的汇编代码是吧,
然后再按ctrl+G,弹出: Enter address to position to这个输入框,好了,请求刚才的copy的栈地址: $00684c5f 放进去,回车
4:一般回车后,就可以看到反汇编有相应的源码行数,再找到相应的代码行,上下查找问题了
wmic process where "name='svchost.exe' and ExecutablePath<>'C:\\WINDOWS\\system32\\svchost.exe'" call Terminate
Delphi
1
https://gitee.com/msnail/yberp-opensource.git
git@gitee.com:msnail/yberp-opensource.git
msnail
yberp-opensource
yberp-opensource
master

搜索帮助