- 博客(0)
- 资源 (10)
- 收藏
- 关注
DxScene 4.42 Fullsource
DXScene是一款三维动画制作软件,是3D硬件加速图形库的速度,为所有图形应用程序开发提供:三维和二维图形编辑器IDE,三维形状和改造,二维图形对象的集成,简化动画,先进窗口和控制,最高性能,外观引擎,位图效果,三维动画文件转换器。 DXScene可作为开发工具的使用标准,多媒体,监控系统,地理信息系统,计算机辅助设计和信息应用。
用于个人学习,商用请买正版
http://www.ksdev.com
2011-02-16
delphi 自定义窗口
delphi 自定义窗口delphi 自定义窗口delphi 自定义窗口delphi 自定义窗口delphi 自定义窗口delphi 自定义窗口delphi 自定义窗口delphi 自定义窗口delphi 自定义窗口delphi 自定义窗口
2011-02-16
Webp转换工具
需要libwebp-0.1.3-windows-x86.zip的支持,
下载地址:
https://webp.googlecode.com/files/libwebp-0.1.3-windows-x86.zip
源码:delphi2007
2014-06-15
CRC Delphi和C表示
CRC(Cyclic Redundancy Check)循环冗余校验码(转) 未记录作者的网址,作者见谅。
是常用的校验码,在早期的通信中运用广泛,因为早期的通信技术不够可靠(不可靠性的来源是通信技术决定的,比如电磁波通信时受雷电等因素的影响),不可靠的通信就会带来‘确认信息’的困惑,书上提到红军和蓝军通信联合进攻山下的敌军的例子,第一天红军发了条信息要蓝军第二天一起进攻,蓝军收到之后,发一条确认信息,但是蓝军担心的是‘确认信息’如果也不可靠而没有成功到达红军那里,那自己不是很危险?于是红军再发一条‘对确认的确认信息’,但同样的问题还是不能解决,红军仍然不敢贸然行动。
对通信的可靠性检查就需要‘校验’,校验是从数据本身进行检查,它依靠某种数学上约定的形式进行检查,校验的结果是可靠或不可靠,如果可靠就对数据进行处理,如果不可靠,就丢弃重发或者进行修复。
CRC码是由两部分组成,前部分是信息码,就是需要校验的信息,后部分是校验码,如果CRC码共长n个bit,信息码长k个bit,就称为(n,k)码。 它的编码规则是:
1、首先将原信息码(kbit)左移r位(k+r=n)
2、运用一个生成多项式g(x)(也可看成二进制数)用模2除上面的式子,得到的余数就是校验码。
非常简单,要说明的:模2除就是在除的过程中用模2加,模2加实际上就是我们熟悉的异或运算,就是加法不考虑进位,公式是:
0+0=1+1=0,1+0=0+1=1
即‘异’则真,‘非异’则假。
由此得到定理:a+b+b=a 也就是‘模2减’和‘模2加’直值表完全相同。
有了加减法就可以用来定义模2除法,于是就可以用生成多项式g(x)生成CRC校验码。
例如: g(x)=x4+x3+x2+1,(7,3)码,信息码110产生的CRC码就是:
11
11101 | 110,0000
111 01
1 0100
1 1101
1001
余数是1001,所以CRC码是110,1001
标准的CRC码是,CRC-CCITT和CRC-16,它们的生成多项式是:
CRC-CCITT=x16+x12+x5+1
CRC-16=x16+x15+x2+1
CRC 的计算原理如下(一个字节的简单例子)
11011000 00000000 00000000 <- 一个字节数据, 左移 16b
^10001000 00010000 1 <- CRC-CCITT 多项式, 17b
--------------------------
1010000 00010000 10 <- 中间余数
^1000100 00001000 01
-------------------------
10100 00011000 1100
^10001 00000010 0001
-----------------------
101 00011010 110100
^100 01000000 100001
---------------------
1 01011010 01010100
^1 00010000 00100001
-------------------
01001010 01110101 <- 16b CRC
仿此,可推出两个字节数据计算如下:d 为数据,p 为项式,a 为余数
dddddddd dddddddd 00000000 00000000 <- 数据 D ( D1, D0, 0, 0 )
^pppppppp pppppppp p <- 多项式 P
-----------------------------------
...
aaaaaaaa aaaaaaaa 0 <- 第一次的余数 A'''''''' ( A''''''''1, A''''''''0 ) (备注:实际余数)
^pppppppp pppppppp p
--------------------------
...
aaaaaaaa aaaaaaaa <- 结果 A ( A1, A0 )
由此与一字节的情况比较,将两个字节分开计算如下:
先算高字节:
dddddddd 00000000 00000000 00000000 <- D1, 0, 0, 0
^pppppppp pppppppp p <- P
-----------------------------------
...
aaaaaaaa aaaaaaaa <- 高字节部分余数 PHA1, PHA0
此处的部分余数与前面两字节算法中的第一次余数有如下关系,即 A''''''''1 = PHA1 ^ D0, A''''''''0 = PHA0
备注:(A XOR B) XOR B= A XOR (B XOR B)=A
aaaaaaaa aaaaaaaa <- PHA1, PHA0
^dddddddd <- D0
-----------------
aaaaaaaa aaaaaaaa <- A''''''''1, A''''''''0
低字节的计算:
aaaaaaaa 00000000 00000000 <- A''''''''1, 0, 0
^pppppppp pppppppp p <- P
--------------------------
...
aaaaaaaa aaaaaaaa <- 低字节部分余数 PLA1, PLA0
^aaaaaaaa <- A''''''''0 , 即 PHA0
-----------------
aaaaaaaa aaaaaaaa <- 最后的 CRC ( A1, A0 )
规律如下:
设部分余数函数
PA = f( d )
其中 d 为一个字节的数据(注意,除非 n = 0 ,否则就不是原始数据,见下文)
第 n 次的部分余数
PA( n ) = ( PA( n - 1 ) << 8 ) ^ f( d )
其中的
d = ( PA( n - 1 ) >> 8 ) ^ D( n )
其中的 D( n ) 才是一个字节的原始数据。
公式如下:
PA( n ) = ( PA( n - 1 ) << 8 ) ^ f( ( PA( n - 1 ) >> 8 ) ^ D( n ) )
可以注意到函数 f( d ) 的参数 d 为一个字节,对一个确定的多项式 P, f( d ) 的返回值
是与 d 一一对应的,总数为 256 项,将这些数据预先算出保存在表里,f( d )就转换为一
个查表的过程,速度也就可以大幅提高,这也就是查表法计算 CRC 的原理.
在网上找了很多文章,不知为啥,算出的结果都有异样,所以找到一个C写的与在线CRC工具网站是一一对应的,所以将C翻译成delphi,
为delphi增砖添瓦 :)
在线工具:
在线工具1
http://www.lammertbies.nl/comm/info/crc-calculation.html
在线工具2
http://zorc.breitbandkatze.de/crc.html
2011-10-11
VirtualTrees增加日期控件或其它控件的方法
项目需要,从mysql里查询数据,批量写入memcached里,
主要介绍VirtualTrees控件的使用,排序,增加日期控件,批量增加数据
等。
给VirtualTrees控件使用者以做demo
2014-11-25
delphi时间同步器
delphi 时间同步器delphi 时间同步器delphi 时间同步器delphi 时间同步器delphi 时间同步器delphi 时间同步器delphi 时间同步器delphi 时间同步器delphi 时间同步器
2011-03-21
根据SAPI开发的中文朗读系统
根据微软的SAPI 5.1 SDK开发的一个能朗读中文的程序,
在使用这个程序之前,必须安装
http://download.microsoft.com/download/speechSDK/SDK/5.1/WXP/EN-US/speechsdk51.exe
http://www.ie5.net/speechsoft/SpeechSDK51LangPack.exe
这两个SDK
源码中用到了三方控件:Raize,TMS Component Pack,TBX
如果需看源代,可以替换成标准控件
2008-10-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅