临界区对象TCriticalSection(Delphi) 与 TRtlCriticalSection 的区别 TRtlCriticalSection 是一个结构体,在windows单元中定义: 是InitializeCriticalSection,EnterCriticalSection,LeaveCriticalSection, DeleteCriticalSection 等这几个kernel32.dll中的临界区操作API的参数: TCriticalSection是在SyncObjs单元中…
TRTLCriticalSection是一个结构体,在windows单元中定义: 是InitializeCriticalSection, EnterCriticalSection, LeaveCriticalSection, DeleteCriticalSection 等这几个kernel32.dll中的临界区操作API的参数: TCriticalSection是在SyncObjs单元中实现的类,它对上面的那些临界区操作API函数 进行了了封装,简化并方便了在Delphi的使用: 如TCriti…
临界区对象TCriticalSection(Delphi) 与 TRtlCriticalSection 的区别 临界区对象TCriticalSection(Delphi) 与 TRtlCriticalSection 的区别 TRtlCriticalSection 是一个结构体,在windows单元中定义: 是InitializeCriticalSection,EnterCriticalSection,LeaveCriticalSection, DeleteCriticalSection 等这几个…
多线程的基本概念和Delphi线程对象Tthread介绍 作者:xiaoru    WIN 98/NT/2000/XP是个多任务操作系统,也就是:一个进程可以划分为多个线程,每个线程轮流占用CPU运行时间和资源,或者说,把CPU 时间划成片,每个片分给不同的线程,这样,每个线程轮流的“挂起”和“唤醒”,由于时间片很小,给人的感觉是同时运行的. 多线程带来如下好处: 1)避免瓶颈: 2)并行操作: 3)提高效率:多线程的两个概念: 1) 进程:也称任务,程序载入内存,并分配资源,称为“一个进程”.…
http://www.efg2.com/Lab/Library/UseNet/1999/0714b.txt From: "Nick Ryan" <nick@avatardesign.co.uk> Subject: Re: D1 printing problem: incorrect font sizes Date: 14 Jul 1999 00:00:00 GMT Message-ID: <7mi4cp$2ot9@forums.borland.com> Refe…
来自:http://blog.csdn.net/lailai186/article/details/8755430 ================================================ Delphi  TCanvas,TPen,TBrush,TColor  绘图对象 在Delphi中,专门定义了一组用于绘制图形的对象和组件,完成一些简单的图像功能.利用这些对象.组件的方法,可以方便地绘制各种常用图形:通过设置它们的属性,能得到不同风格的图形.另外,通过对鼠标事件的定义…
Delphi自定义消息应用及delphi托盘实现interfaceuses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,shellapi;const  WindowsMessage =WM_USER+101   ;procedure UserPro(Var Message:TMessage):message WindowsMessage 其中UserP…
我晕,Delphi 7 以后增加了这么多有用的语法,我都不知道.真是越学越觉得自己浅薄,自己所作的Delphi项目所用的知识还不够Delphi知识储备体系的十分之一,更别说Delphi还在继续发展. ----------------------------------------------------------------------- 自Delphi 7以来的Delphi 2009测试版新语法特性                 by eGust======================…
Delphi中destroy, free, freeAndNil, release用法和区别 1)destroy:虚方法 释放内存,在Tobject中声明为virtual,通常是在其子类中override 它,且要加上inherited关键字,才能保证派生类对象正确地被销毁;但destroy一般不能直接用,为什么?当一个对象为nil,我们仍然调用destroy,会产生错误.因为destroy是虚方法,它要根据对象中的头四个字节找到虚拟方法表Vmt的入口地址,从而找到destroy的入口地址,所以…
标题:我的 Delphi 学习之路 -- Delphi 助手的安装 作者:断桥烟雨旧人伤 Delphi 助手的安装 CnWizards 类似于 VS 中的番茄助手,在编写 Delphi 代码时帮助极大,以下为它的安装过程. CnWizards 安装语言支持简体中文,所以这里我们选择简体中文安装,如下: 点击下一步: 点击我接受: 这里需将下面三个勾勾上,然后再点击下一步: 选择安装路径: 把自述文件的勾去掉,点击完成: 在 Delphi IDE 启动画面上会出现 Wizards,说明已经安装成功…
标题:我的 Delphi 学习之路 -- Delphi 的安装 作者:断桥烟雨旧人伤 1. Delphi 版本的选择 Delphi 版本众多,我该选择哪一个,这确实是个问题,自从 Borland 公司被己购后,Delphi 就一直没更新过,一直停留在 Delphi7 的经典版本上,现在网络上大多都是 Delphi7 的教学,书也是 Delphi7 的,其它版本很少,几乎看不到,然而它其实在更新,只是另外一家公司,为 Embarcadero(易博龙)技术公司,易博龙现已将 Delphi 更新到了…
标题:我的 Delphi 学习之路 -- Delphi 的认识 作者:断桥烟雨旧人伤 1. 什么是 Delphi Delphi 是 Windows 平台下著名的快速应用程序开发工具(Rapid Application Development,简称 RAD).它的前身,即是 DOS 时代盛行一时的 BorlandTurbo Pascal,最早的版本由美国 Borland(宝兰)公司于 1995 年开发.主创者为 Anders Hejlsberg.经过数年的发展,此产品也转移至 Embarcader…
Delphi for Android (aka Delphi XE5 aka RAD Studio XE5) has appeared   Blimey, that took me by surprise (again)! I figured it was coming fairly soon, but I didn’t realise quite that soon. Anyway, Delphi XE5 is here (as is RAD Studio XE5 and siblings),…
组件(Component)和对象(Object)之间的区别 先明确组件(Component)和对象(Object)之间的区别.组件是一个可重用的模块,它是由一 组处理过程.数据封装和用户接口组成的业务对象(Rules Object).组件看起来像对象,但不符合对象的学术定义.它们的主要区别是: 组件可以在另一个称为容器(有时也称为承载者或宿主)的应用程序中使用,也可以作为独立过程使用: 组件可以由一个类构成,也可以由多个类组成,或者是一个完整的应用程序: 组件为模块重用,而对象为代码重用.现在,…
python类内init外声明的属性与init内声明的对象属性的访问和操作区别(面试题) 1.在ipython中输入以下代码,其输出会是什么? In [1]: class ClassOut: ...: out_mem = 'out_mem' ...: print out_mem ...: def __init__(self): ...: inner_mem = 'inner_mem' ...: self.inner_mem = 'self.inner_mem' ...: self._inner_…
python中生成器对象和return 还有循环的区别 在python中存在这么一个关键字yield,这个关键字在项目中经常被用到,比如我写一个函数不想它只返回一次就结束那我们就不能用return,因为return后面就不能跟任何东西,意味着函数的结束.那么我们完全可以这么做: def main(): for i in range(1,100): yield i 这样就等于生成了一个循环返回对象,特别在爬虫scrapy中较为常见!yeild和return还有for 上本质有什么区别呢?其实很简单…
java 对象锁和类锁的区别   转自; ) ); ; ) ); 上述的代码,第一个方法时用了同步代码块的方式进行同步,传入的对象实例是this,表明是当前对象,当然,如果需要同步其他对象实例,也不可传入其他对象的实例:第二个方法是修饰方法的方式进行同步.因为第一个同步代码块传入的this,所以两个同步代码所需要获得的对象锁都是同一个对象锁,下面main方法时分别开启两个线程,分别调用test1和test2方法,那么两个线程都需要获得该对象锁,另一个线程必须等待.上面也给出了运行的结果可以看到:…
来自:http://blog.csdn.net/iseekcode/article/details/5158985 ---------------------------------------------------------------------------- //如需转载请注明出处//作者: 逍遥萧//来源: http://www.xy13.cn 估计很多用了Delphi很多年的都不知道Delphi有支持栈对象.C++里对象即可以创建为堆对象,也可以创建为栈对象常用的对象都是从TObj…
http://www.cnblogs.com/pchmonster/archive/2012/07/06/2579334.html 绘制位图(Drawing Bitmaps) 绘制位图听起来似乎很难,然而如几次所见到的那样,绘制位图非常容易.TCanvas类具有几种方法绘制位图,最常用的方法是Draw方法,这种方法只是在画布上指定位置绘制位图.用户已经见过几个这样的例子.下面是简短的例子. 1 2 3 4 5 6 7 8 9 procedure TForm1.btn1Click(Sender:…
Delphi的流对象(TStream的派生对象)有如下读写函数: function Read(var Buffer; Count: Longint): Longint;function Write(const Buffer; Count: Longint): Longint;procedure ReadBuffer(var Buffer; Count: Longint);procedure WriteBuffer(const Buffer; Count: Longint); Buffer是Var…
当您使用完对象后,您应该及时撤销它,以便把这个对象占用的内存释放出来.您可以通过调用一个注销方法来撤销您的对象,它会释放分配给这个对象的内存. Delphi的注销方法有两个:Destroy和Free.Delphi建议使用Free,因为它比Destroy更为安全,同时调用Free会生成效率更高的代码. 您可以用下列的语句释放用完的Employee对象: Employee.Free; 和Create方法一样,Free方法也是TEmployee从TObject中继承过来的.把您的注销放在try…fin…
使用CreateMutex函数创建互斥对象 利用Windows系统函数CreateMutex(),找出当前系统是否已经存在指定进程的实例,如果没有则创建一个互斥体. CreateMutex函数原型如下: function CreateMutex(lpMutexAttributes: PSecurityAttributes; bInitialOwner: BOOL; lpName: PChar): THandle; function CreateMutex(lpMutexAttributes: P…
作者:巴哈姆特  http://www.cnpack.org(转载请注明出处并保持完整) 如果没有接触过COM对象的话,你会觉得接口真的很麻烦,也许会有:“还不如直接定义一个类更方便”的想法. 的确,没有经过COM封装的接口确实比较麻烦.在我看来,没有经过COM封装的接口似乎没有存在的意义.那么,什么是COM对象呢?它有什么优点呢?接下来开始对COM对象进行一个简单的介绍: COM是个二进制规范,它与实现的语言无关.这样,即使COM对象由不同的编程语言创建,运行在不同的进程空间和不同的操作系统平…
在开发一个平板点餐软件后台订单打印程序时,使用线程订单打印,为防打印阻塞使用临界区. 类: type MYPARA=record title:pchar; //标题 str:pchar; flag:integer; //标志 end; PMYPARA=^MYPARA; 变量: ThreadId1:DWORD; p:PMYPARA; CSprintjz:TRTLCriticalSection; {临界区信息} h2:THandle; .打印线程: {初始化打印单据参数} getmem(p,size…
转载:http://www.cnblogs.com/pchmonster/archive/2012/07/06/2579185.html 基本绘图操作(Basic Drawing Operations) 现在大家已经知道Rectangle方法用来画正方形和矩形,Ellipse方法用来画圆和椭圆,MoveTo和LineTo方法则用来画线. 还有Arc方法用于画弧,Pie方法用于画饼形,一切一切都是非常基础的,没有太大的必要详细了解TCanvas的这些方法,下面开始更有趣的图形操作,这些图形操作在编…
在设计期放上一个Panel1和Button1,然后设置Panel1.Visible:=False 这时候执行: procedure TForm1.Button4Click(Sender: TObject); begin ShowMessage(IntToStr(panel1.InstanceSize)); end; 得到552,说明这个Panel1这个内存对象已经存在了.再把它的visible改成true,还是得到552.说明这个内存对象已经存在,且大小没区别(其内容可能会有所不同). 再重新把…
心血来潮,为了实现更好的通用性和封装性,需要把类方法作为回调函数,搜得一篇好文,节选转发.命名似乎应该是MethodToCallback才合适,可惜调试时总是报错,debugging. 原文地址:http://blog.csdn.net/linzhengqun/article/details/1451088       Win32的API有一些需要回调函数,说白了就是函数指针,比如钩子,列举窗口等等.如果我们要对这些技术进行面向对象的封装,就要遇到一些难题.拿钩子来说,假设我们要封装一个键盘钩子…
心血来潮,为了实现更好的通用性和封装性,需要把类方法作为回调函数,搜得一篇好文,节选转发.命名似乎应该是MethodToCallback才合适,可惜调试时总是报错,debugging. 原文地址:http://blog.csdn.net/linzhengqun/article/details/1451088       Win32的API有一些需要回调函数,说白了就是函数指针,比如钩子,列举窗口等等.如果我们要对这些技术进行面向对象的封装,就要遇到一些难题.拿钩子来说,假设我们要封装一个键盘钩子…
http://www.cnblogs.com/pchmonster/archive/2012/07/09/2583613.html 脱屏位图(Offscreen Bitmaps) 脱屏位图,也叫内存位图,普遍用于Windows程序设计中.它在内存中制作图像,然后利用Draw方法在屏幕上显示出来.当用户想更快的在屏幕上绘制图像时,脱屏位图有助于避免闪烁.脱屏位图也适合于复杂制图程序.用户可以将图像预存起来,需要时显示出来.脱屏位图用于动画,最流行的动画制作方法是Microsoft的DirectX…
脱屏位图(Offscreen Bitmaps) 脱屏位图,也叫内存位图,普遍用于Windows程序设计中.它在内存中制作图像,然后利用Draw方法在屏幕上显示出来.当用户想更快的在屏幕上绘制图像时,脱屏位图有助于避免闪烁.脱屏位图也适合于复杂制图程序.用户可以将图像预存起来,需要时显示出来.脱屏位图用于动画,最流行的动画制作方法是Microsoft的DirectX SDK. 脱屏位图的原则是三个简单的步骤: 建立内存位图(Create a memory bitmap) 绘制内存位图(Draw o…