易截截图软件、单文件、免安装、纯绿色、仅160KB

Delphi + Asm TBits类的学习

技术交流,DH讲解. 在D2010的classes中有个TBits类,这个类主要是位操作的. TBits = class
private
FSize: Integer;
FBits: Pointer;
procedure Error;
procedure SetSize(Value: Integer);
procedure SetBit(Index: Integer; Value: Boolean);
function GetBit(Index: Integer): Boolean;
public
destructor Destroy; override;
function OpenBit: Integer;
property Bits[Index: Integer]: Boolean read GetBit write SetBit; default;
property Size: Integer read FSize write SetSize;
end;
这个类没有什么方法,我们看到了property Bits[Index: Integer]: Boolean read GetBit write SetBit; default;这个属性,就是读取和设置某一位的.

那我们看看它是怎么实现的?
//在类中Eax就是Self指针
procedure TBits.SetBit(Index: Integer; Value: Boolean); assembler;
asm
CMP Index,[EAX].FSize //如果Indx>=Size then 扩容
JAE @@Size
@@1: MOV EAX,[EAX].FBits
OR Value,Value
JZ @@2
BTS [EAX],Index //将Eax中第Index位赋值给CF,然后Eax第index位=1;
RET
@@2: BTR [EAX],Index //将Eax中第Index位赋值给CF,然后Eax第index位=0;
RET
@@Size: CMP Index,0 //if index


相关文档:

XP环境下在Delphi中调试COM+组件

现在应用系统流行用B/S开发,早几年前可是C/S的天下呢,我现在做的某航空公司货运结算维护工作,其系统就是利用Delphi开发的C/S应用程序!在日常的维护工作中,难免要对已经做好的COM+组件进行调试,以查看具体的处理逻辑!本文就是介绍在WindowsXP环境下如何在Delphi中调试COM+组件!
第一步:记录下你希望调试的COM+组件 ......

delphi中国际化的几种方案及比较(转)

delphi中国际化的几种方案及比较(转)
随着全球化程度加深,软件越来越像蒲公英,到处飘散、扎根。这其中要解决的是不同语言的显示问题。我们当然希望一套程序,可以不修改代码就可以支持不同的语言,不要去维护很多的版本。
        首先要谈到的一个问题是乱码问题,因为delphi
wi ......

unix C 、delphi的多语言文本字符换行的问题

今天项目组发生一个事情就是,后台aix上对多语言文本(英语+汉字)换行问题搞不太清楚。
最早前台的多字符的代码我检查了一下(按照0-128以外算中文的代码)发现不是安全的代码。
(delphi 7.0)
delphi安全的混合字符的操作方法是:
在strsUtils单元中
leftstr
MidStr
Rightstr
aix下是: ......

delphi 编译后出现iphist.dat 文件

 很奇怪,昨天在编译程序的时候,出现过,iphist.dat 文件。每次执行都出现,仔细查看代码,什么也没有啊!后来在网站找到原因:
 使用了IPWatch 控件的
一般产生这个文件是因为使用了indy的 TIdIPWatch 控件
该控件有个
ip历史的功能。
historyfilename指定的是保存ip历史记录的文件名,默认是iphist.Dat ......

Delphi中用ADO系列控件获得存储过程的Return值

在Delphi中Ado系列控件使用xxxxx.Parameters.Refresh,可以获得存储过程的Return值
以TADOStoredProc为例
  ADOStoredProc1.Connection := 'xxxx';
  ADOStoredProc1.ProcedureName := 'XXXX';
  ADOStoredProc1.Parameters.Refresh;   //刷新存储过程的参数列表
 //参数赋值
 ADO ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号