CnPack 组件包所有源代码

CnPack 2009-09-14 SVN 包,包括以下内容:

  1. CnPack 组件包所有源代码。
  2. CnPack 开发组所有文档和模板,其中帮助文档目前包括多语帮助文档、CnDebugger 接口帮助文档、CnCalendar 历法说明文档、平滑字体组件帮助文档、停靠组件帮助文档等。
  3. 开发组其它工作成果。

以下是 cnpack\Source 目录内容说明:

\Common -公共库目录

CnBase64.pas
Base64 编码解码算法单元

CnCalClass.pas
历法计算类库

查看更多内容...

Posted in 软件开发 at August 23, 2017. by 傻猫 .    Views: 1136    No Comments

自定义Delphi公用函数单元

{*******************************************************}
{ }
{ Delphi公用函数单元 }
{ }
{ 版权所有 (C) 2008 }
{ }
{*******************************************************}
unit YzDelphiFunc;

interface

uses
ComCtrls, Forms, Windows, Classes, SysUtils, ComObj, ActiveX, ShlObj, Messages,
Graphics, Registry, Dialogs, Controls, uProcess, uCpuUsage, StrUtils, CommCtrl,
jpeg, WinInet, ShellAPI, SHFolder, ADODB, WinSock;

{ 保存日志文件 }
procedure YzWriteLogFile(Msg: String);

{ 延时函数,单位为毫秒 }
procedure YzDelayTime(MSecs: Longint);

{ 判断字符串是否为数字 }
function YzStrIsNum(Str: string):boolean;

{ 判断文件是否正在使用 }
function YzIsFileInUse(fName: string): boolean;

{ 删除字符串列表中的空字符串 }
procedure YzDelEmptyChar(AList: TStringList);

{ 删除文件列表中的"Thumbs.db"文件 }
procedure YzDelThumbsFile(AList: TStrings);

{ 返回一个整数指定位数的带"0"字符串 }
function YzIntToZeroStr(Value, ALength: Integer): string;

{ 取日期年份分量 }
function YzGetYear(Date: TDate): Integer;

查看更多内容...

Posted in 软件开发 at September 7, 2015. by 傻猫 .    Views: 2308    No Comments

typecho主题常用代码

typecho是一款不错的php博客系统,轻便而功能完备,也有许多的支持者;但博客除了后台功能外,最重要的应该算得上是博客外观了,可是别人所作的模版一般都不大可能完全符合自己的使用习惯、或是品味。我们有必要自己制作、或者至少:能够对已有的模版进行一些个性化的定制,那么,下面的这些小小的技巧也就是必不可少的了。你可以用它们对typecho模版进行一些人性化、个性化的改进。

1,文章title设置

使得对搜索引擎足够友好
示例一:
首页-- 名称 - 描述 - 归档 - 日期 - 名称
文章-- 标题 - 博客 - 页面 - 标题 - 名称
分类-- 分类 - 博客 - 标签 - 标签 - 名称

<title>
<?php if($this->is('index')): ?><?php $this->options->title(); ?>-<?php $this->options->description(); ?>
<?php elseif($this->is('archive')): ?><?php $this->archiveTitle('/','',' - '); ?><?php $this->options->title(); ?>
<?php else: ?><?php $this->archiveTitle('','',' - '); ?><?php $this->options->title(); ?><?php endif; ?>
</title>

示例二:
首页: 博客名称
页面:页面标题 - 博客名称
分类:分类名称 - 博客名称
标签:标签 - 博客名称
存档:存档: XXXX/XX - 博客名称
其它:(日志页)页面标题

<title>
<?php if ($this->is('index')){$this->options->title();}
elseif($this->is('page')){$this->archiveTitle('','',' - ');$this->options->title();}
elseif($this->is('category')){$this->archiveTitle('','',' - ');$this->options->title();}
elseif($this->is('tag')){$this->archiveTitle('','Tag: ',' - ');$this->options->title();}
elseif($this->is('archive')){$this->archiveTitle('年','存档: ','月 - ');$this->options->title();}
else{$this->archiveTitle('','','');}?>
</title>

或使用(默认):

<?php $this->archiveTitle('', '', ' - '); ?><?php $this->options->title(); ?>-<?php $this->options->description(); ?>

最后给出一个较全面的判断:

<?php if($this->is('index')){ ?>
    <?php $this->options->title(); ?>&#160;&#45;&#160;<?php $this->options->description(); ?>
    <?php if($this->_currentPage>1) echo '第 '.$this->_currentPage.' 页 '; ?>
<?php }  else if($this->is('category')) { ?>
    Category: <?php $this->archiveTitle(' &lt; ','',''); ?>&#160;&#45;&#160;<?php $this->options->title(); ?>
<?php } else if($this->is('tag')) { ?>   
    Tag: <?php $this->archiveTitle(' &lt; ','',''); ?>&#160;&#45;&#160;<?php $this->options->title(); ?>
<?php } else if($this->is('archive'))  { ?>   
    Keyword: <?php $this->archiveTitle(' &lt; ','',''); ?>&#160;&#45;&#160;<?php $this->options->title(); ?>
<?php } else if($this->is('attachment')) {?>
    Attachment: <?php $this->archiveTitle(' &lt; ','',''); ?>&#160;&#45;&#160;<?php $this->options->title(); ?>
<?php } else  { ?> 
    <?php $this->archiveTitle('', '', ''); ?>&#160;&#45;&#160;<?php $this->options->title(); ?>
<?php } ?>

查看更多内容...

Posted in Web开发 at April 8, 2015. by 傻猫 .    Views: 2029    No Comments

Delphi之通过崩溃地址找出源代码的出错行

一 什么是MAP文件

      什么是 MAP 文件?简单地讲, MAP 文件是程序的全局符号、源文件和代码行号信息的唯一的文本表示方法,它可以在任何地方、任何时候使用,不需要有额外的程序进行支持。而且,这是唯一能找出程序崩溃的地方的救星。

      如果要查找代码行号,需要使用下面的公式做一些十六进制的减法运算:

      崩溃行偏移 = 崩溃地址(Crash Address) - 基地址(ImageBase Address) - 0x1000

      为什么要这样做呢?我们得到的崩溃地址都是由 偏移地址+ 基地址得来的,所以在计算行号的时候要把基地址减去,一般情况下,基地址的值是 0x00400000 。另外,由于一般的 PE 文件的代码段都是从 0x1000 偏移开始的,所以也必须减去 0x1000 。

二 Delphi 下生成MAP文件的方法 

        1.   project   ->   options   ->   Linker   ->   Map   file   选择detailed.  

三 例子

      代码

procedure TForm1.Button1Click(Sender: TObject);
var     
    I,   J:   Integer;
    p:   PChar;
begin
    I   :
=   10
;
    J   :
=   0
;
    p   :
=
   nil;
    p
^   :=   'A';   //   36行.  这里会报错

end;

     运行时会抱错

这里可以发现出错地址是:$00401A51

根据:      崩溃行偏移 = 崩溃地址(Crash Address) - 基地址(ImageBase Address) - 0x1000

                                     =$00401A51 - $00400000 -$1000

                                    =$00000A51

用记事本打开生成的MAP文件
Line numbers 
for
 Unit1(Unit1.pas) segment .text

    
32 0001:00000A48    35 0001:00000A49     36 0001:00000A4E    37 0001
:00000A54
    
40 0001:00000A58    42 0001:00000A7D    43 0001:00000A8E    44 0001
:00000ABD
    
45 0001:00000AEE    49 0001:00000AF8    50 0001:00000B10    52 0001
:00000B44
    
52 0001
:00000B4B

那么,通过在MAP文件里查找小于或等于$00000A51的最大值就是,我们要得到的崩溃行偏移.

这样得到出错行在, Unit1单元的36行.  正好是这行:   p^   :=   'A';   //   36行.  

Posted in 软件开发 at June 26, 2013. by 傻猫 .    Views: 3126    No Comments

汇编指令大全

一个汇编指令API,供大家查询使用。

MOV(MOVe) 传送指令
PUSH 入栈指令
POP 出栈指令
XCHG(eXCHanG) 交换指令
XLAT(TRANSLATE) 换码指令
LEA (Load Effective Address) 有效地址送寄存器指令
LDS(Load DS with pointer) 指针送寄存器和DS指令
LES(Load ES with pointer) 指针送寄存器和ES指令
LAHF(Load AH with Flags) 标志位送AH指令
SAHF(Store AH into Flgs) AH送标志寄存器指令
PUSHF(PUSH the Flags) 标志进栈指令
POPF(POP the Flags) 标志出栈指令
ADD 加法指令
ADC 带进位加法指令
INC 加1指令
SUB(SUBtract) 不带借位的减法指令
SBB(SuVtrach with borrow) 带借位的减法指令
DEC(DECrement) 减1指领
NEG(NEGate) 求补指令
CMP(CoMPare) 比较指令
MUL(unsinged MULtiple) 无符号数乘法指令
IMUL(sIgned MUL tiple) 有符号数乘法指令
DIV(unsigned DIVide) 无符号数除法指令
IDIV(sIgned DIVide) 有符号数除法指令
CBW(Count Byte to Word) 字节转换为字指令
CWD(Count Word to Doble word) 字转换为双字指令
DAA 压缩的BCD码加法十进制调整指令
DAS 压缩的BCD码减法十进制调整指令
AAA 非压缩的BCD码加法十进制调整指令
AAS 非压缩的BCD码加法十进制调整指令
AND 逻辑与指令
OR 逻辑或指令
XOR 逻辑异或指令
NOT 逻辑非指令
TEST 测试指令
SHL(SHift logical Letf) 逻辑左移指令
SHR(SHift logical Right) 逻辑右移指令
ROL(Rotate Left ) 循环左移指令P58
ROR(Rotate Right) 循环右移指令P58
RCL(Rotate Left through Carry) 带进位循环左移
RCR(Rotate Right through Carry) 带进位循环左移
MOVS(MOVe String) 串传送指令
STOS(STOre into String) 存入串指令
LODS(LOad from string) 从串取指令
REP(REPeat) 重复操作前
CLD(CLear Direction flag) 清除方向标志指令
STD(SeT Direction flag) 设置方向标志指令
CMPS(CoMPare String) 串比较指令
SCAS(SCAn String) 串扫描指令
REPE/REPZ(REPeat while Equal/Zero)相等/为零时重复操作前缀
REPNE/REPNZ(REPeat while Not Equal/Zero)不相等/不为零进重复前缀
IN(INput) 输入指令
OUT(OUTput) 输出指令
JMP(JuMP) 无条件转移指令
JZ,JNZ,JS,JNS,JO,JNO,JP,JNP,JB,JNB,JBE,JNBE,JL,JNL,JLE,JNLE,JCXZ 条件转移指令
LOOP 循环指令P70
LOOPZ/LOOPE 为零/相等时循环指令
LOOPNZ/LOOPNE 不为零/不相等时循环指令
CALL 子程序调用指令
RET(RETun) 子程序返回指令
CLC(CLear Carry) 进位位置0指令
CMC(CoMplement Carry) 进位位求反指令
SRC(SeT Carry) 进位位置1指令
NOP(No OPeretion) 无操作指令
HLT(HaLT) 停机指令
OFFSET 返回偏移地址
SEG 返回段地址
EQU(=) 等值语句
PURGE 解除语句
DUP 操作数字段用复制操作符
SEGMENT,ENDS 段定义指令
ASSUME 段地址分配指令
ORG 起始偏移地址设置指令
$ 地址计数器的当前值
PROC,ENDP 过程定义语句
NAME,TITLE,END 程序开始结束语句
MACRO,ENDM 宏定义指令

JZ OPR //结果为零转移
JNZ OPR //结果不为零转移
JS OPR //结果为负转移
JNS OPR //结果为正转移
JO OPR //溢出转移
JNO OPR //不溢出转移
JP OPR //结果为偶转移
JNP OPR //结果为奇转移
JC OPR //有进位转移
JNC OPR //无进位转移

Posted in 手机相关 at December 6, 2012. by 傻猫 .    Views: 3815    No Comments

android分享到代码

android分享到短信,分享到新浪微博,分享到腾讯博客

其实是调用系统的一个分享功能,可以将文本信息传送到其它程序里。

Intent intent=new Intent(Intent.ACTION_SEND);   
intent.setType("text/plain");  //分享的数据类型 
intent.putExtra(Intent.EXTRA_SUBJECT, "subject");  //主题 
intent.putExtra(Intent.EXTRA_TEXT,  "content");  //内容 
startActivity(Intent.createChooser(intent, "title"));  //目标应用选择对话框的标题

Posted in 手机相关 at November 20, 2011. by 傻猫 .    Views: 5507    No Comments

IdHTTP组件提交表单及登录源码(强制使用http 1.1)

Idhttp组件用的比较多,使用中的问题也很多。目前很多网站如百度都禁止indy组件访问。因此必须注意UserAgent和http1.1的设置。.

以下是Delphi的代码:

IdHTTP1.Request.Connection:='Keep-Alive';   
IdHTTP1.Request.UserAgent:='Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon)';   
IdHTTP1.Request.ContentType:='application/x-www-form-urlencoded';   
IdHTTP1.Request.Referer:='http://www.xxx.com';   
IdHTTP1.Request.Accept:='image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, */*';   
IdHTTP1.Request.AcceptLanguage:='zh-cn';   
IdHTTP1.Request.AcceptEncoding:='gzip, deflate';   
IdHTTP1.Request.CacheControl:='no-cache';   
IdHTTP1.ReadTimeout:=60000;   
IdHTTP1.HTTPOptions:=IdHTTP1.HTTPOptions+[hoKeepOrigProtocol];  //关键这行   
IdHTTP1.ProtocolVersion:=pv1_1;   
sHtml:=IdHTTP1.Post('http://www.xxx.com/login.asp',sPost); 

查看更多内容...

Posted in 软件开发 at August 4, 2010. by 傻猫 .    Views: 9649    No Comments

Google相片软件Picasa推荐代码大全

虽然Picasa的推介已经从Google Adsense后台删除,但是由于简体中文版的Google Pack尚未发布,所以Picasa之前的推介代码依然有效。不过对于那些未曾获取广告代码的发布者来说,现在到哪里取得广告代码就成了一个问题。

所以我们收集了比较常用的Picasa推介投放的代码。投放的方式是将代码中的8073927669897848更换成你的Google Adsense广告编号,然后就可以正常投放。

当然也会有很多人问到,这样的投放是否符合规范,也有很多人咨询过Google Adsense服务小组是否可以修改别人的代码而得到了否定的答案。

实际上是这样的,服务小组明确表示之前获得的广告代码依然有效并且后台不再显示该产品也不影响收入的结算。至于不允许修改别人的代码那是Google Adsense规范里的常用语。发布者可以不用说是修改了别人的代码,而是自己很早以前从自己的后台取得的代码,那样就可以了,因为实际上这些代码是没有任何区别。

1.jpg

<SCRIPT type=text/javascript><!--

google_ad_client = "pub-8073927669897848";

google_ad_width = 180;

google_ad_height = 60;

google_ad_format = "180x60_as_rimg";

google_cpa_choice = "CAAQ_LHUlAIaCCqm3pEX3fa8KMD29IMB";

google_ad_channel = "";

//--></SCRIPT>

 

<SCRIPT src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type=text/javascript>

</SCRIPT>

 

Google 下载相片软件

<script type="text/javascript"><!--

google_ad_client = "pub-8073927669897848";

google_ad_output = "textlink";

google_ad_format = "ref_text";

google_cpa_choice = "CAAQwOiNggIaCO8BxV9crctmKJDctIQB";

google_ad_channel = "";

//--></script>

<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">   

</script>

 

2.png

<SCRIPT type=text/javascript><!--

google_ad_client = "pub-8073927669897848";

google_ad_width = 468;

google_ad_height = 60;

google_ad_format = "468x60_as_rimg";

google_cpa_choice = "CAAQqLTUlAIaCI-6uHeArnMPKLj39IMB";

google_ad_channel = "";

//--></SCRIPT>

 

<SCRIPT src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type=text/javascript>

</SCRIPT>

 

 4.jpg

<script type="text/javascript"><!--

google_ad_client = "pub-8073927669897848";

google_ad_width = 468;

google_ad_height = 60;

google_ad_format = "468x60_as_rimg";

google_cpa_choice = "CAAQjMeU_AEaCCfCybguyZX1KLj39IMB";

//--></script>

<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

</script>

 

 5.jpg

<script type="text/javascript"><!--

google_ad_client = "pub-8073927669897848";

google_ad_width = 110;

google_ad_height = 32;

google_ad_format = "110x32_as_rimg";

google_cpa_choice = "CAAQvKOU_AEaCMjb-vm8Brj8KKzx9IMB";

//--></script>

       <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

</script>

 

6.jpg

<script type="text/javascript"><!--

google_ad_client = "pub-8073927669897848";

google_ad_width = 468;

google_ad_height = 60;

google_ad_format = "468x60_as_rimg";

google_cpa_choice = "CAAQkLfUlAIaCG3EZwHtXqhFKLj39IMB";

google_ad_channel = "";

//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

</script>

 

 

7.jpg

<script type="text/javascript"><!-- 

google_ad_client = "pub-8073927669897848";

google_ad_output = "textlink";

google_ad_format = "ref_text";

google_cpa_choice = "CAAQ2OWNggIaCFHmh7n7nRRPKJDctIQB";

//--></script>

       <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> 

</script>

 

 

 

整理您的相片。下载 Goo...

<script type="text/javascript"><!--

google_ad_client = "pub-8073927669897848";

google_ad_output = "textlink";

google_ad_format = "ref_text";

google_cpa_choice = "CAAQ2OWNggIaCFHmh7n7nRRPKJDctIQB";

google_ad_channel = "";

//--></script>

<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

</script>

 

Picasa英文推介代码

Organize your pictures. Get Google's photo software.

<script type="text/javascript"><!--

google_ad_client = "pub-8073927669897848";

google_ad_output = "textlink";

google_ad_format = "ref_text";

google_cpa_choice = "CAAQ9O2I_AEaCCGiE-0kQcWDKMSm7oMB";

//--></script>

<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

</script>

 

8.jpg

<script type="text/javascript"><!--

google_ad_client = "pub-8073927669897848";

google_ad_width = 180;

google_ad_height = 60;

google_ad_format = "180x60_as_rimg";

google_cpa_choice = "CAAQwLHUlAIaCPaJZbcNb9ZtKMD29IMB";

google_ad_channel = "";

//--></script>

<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

</script>

 

9.jpg 

 

 

<script type="text/javascript"><!--

google_ad_client = "pub-8073927669897848";

google_ad_width = 120;

google_ad_height = 60;

google_ad_format = "120x60_as_rimg";

google_cpa_choice = "CAAQ4J7UlAIaCNk3phBJCyecKODy9IMB";

google_ad_channel = "";

//--></script>

<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

</script>

 

3.png

 

<script type="text/javascript"><!--

google_ad_client = "pub-8073927669897848";

google_ad_width = 180;

google_ad_height = 60;

google_ad_format = "180x60_as_rimg";

google_cpa_choice = "CAAQwLHUlAIaCPaJZbcNb9ZtKMD29IMB";

google_ad_channel = "";

//--></script>

<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

</script>

 1.gif

 

<script type="text/javascript"><!--

google_ad_client = "pub-8073927669897848";

google_ad_width = 180;

google_ad_height = 60;

google_ad_format = "180x60_as_rimg";

google_cpa_choice = "CAAQyLDUlAIaCPMwSam7wGerKMD29IMB";

google_ad_channel = "";

//--></script>

<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

</script>

2.gif

 

<script type="text/javascript"><!--

google_ad_client = "pub-8073927669897848";

google_ad_width = 468;

google_ad_height = 60;

google_ad_format = "468x60_as_rimg";

google_cpa_choice = "CAAQuMmU_AEaCLvV1DSsd3ajKLj39IMB";

google_ad_channel = "";

//--></script>

         <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

     </script>

Posted in 杂七杂八 at December 24, 2007. by 傻猫 .    Views: 4091    No Comments