摘要:
开发中有时需要在流中查找某个字串,这些字串有可能是ascii表后半部分或混杂.但是网上提供的例程效果不佳而且代码冗长.
后来自己抽个时间写了一个,代码极少,效率很高.仅供各位参考:
function scanstream(t:tstream;s:string):integer;
var i,j:integer;
p:pchar;
begin
getmem(......
摘要:
本文利用listbox自绘实现了两种特殊效果,其中第两种风格来自c++ builder 研究 www.ccrun.com,老妖用bcb实现了,现在把它转换成delphi代码。演示图片://--------------------------------------------------------------------------unit drawlistitem;
interfac......
用C++ Builder的MD5控件实现软件防护
一.共享==免费?
md5作为一个公开算法,实现的方法很多,比如开源软件.windows自带的api等,c++ builder与delphi中集成的indy里面也有现成的md5控件.用api实现md5虽然效率高,但是毕竟太繁琐,具体方法可以参阅msdn上crypt开头的那几个函数说明.用c++ builder的md5控件虽然方便,但是速度较慢,而且只能处理以’\0’结尾的字符串,所以要用这个控件还需要我们对待验证数据做一些预处理.预处理的关键在于把较重要的内容挑出来计算,这样一方面可以去除’\0’,另一方面可以极大减少待验证内容的长度,只计算关键代码的摘要值. 【程序编程相关:
获取第一个光驱盘符
】
随着internet大行其道,“共享+注册”模式日渐成为程序员发布自己软件的主要手段,但是随之而来的破解手段也越来越高明.如何保护自己的劳动成果不被暴力破解或修改?用md5摘要值验证是一个很常用的方法. 【推荐阅读:
在文件夹添加菜单删除临时文件
】
先要说明的是网上与borland help里面对indy md5控件介绍很少,这段程序基本上是我自己摸索的结果,在c++ biulder 6.0与indy 6.0下运行正常. 【扩展信息:
Com接口入门细详(一)
】
二.源程序祥解
先在indy misc中拖一个md5控件,假设其name为cipher,程序如下:
/*
md5计算函数 by daydreamer 2004-04
功能:对文件名为fname的文件计算16个字节长的md5值,放在result里面
输入:指向文件名的指针char *fname
输出:md5值放在result指向的缓冲区里面
返回值:如果正确计算出md5值则返回true,否则返回false
*/
bool md5( char* fname, char *result)
{
unsigned int i=0; //用于记录读出文件的大小
bool flag=false; //正确计算md的话则置标记
static ansistring ss; //用于临时存放得到的md5值
char *buffer=new char[myfile_size]; //用于读取目标文件,文件大小不能超过myfile_size
tfilestream *tt=new tfilestream(fname,fmopenread); //用于读取目标文件的全部内容,使用此方法简单一点,也可以用标准的createfile()读取
i=tt->read(buffer,myfile_size); //i中保存实际读取的字节数
...
下一页 摘要: 微软的每一个产品,无论功能还是界面设计都会带给我们一定的惊喜,比如officexp、office2003、messenger的界面设计,早已成为众多软件竞相模仿的对象,就拿messenger来说,我就见过好几套网络视频会议的软件都借鉴了它的界面风格。 前段时间因为要在原来的软件上增加一个快捷键提示窗体,这个提示窗要求在显示的时候比较醒目美观能引起用户注意,显示后不影响用户操作,能够关掉。很自......