04 2015 档案
摘要:delphi函数指针 只有@@p才代表了函数指针本身的地址 assigned(p) 判断是否为空 或者用 @p=nil 来判断函数指针是不是为空 Delphi中的函数指针实际上就是指针,只是在使用的时候有些不同 函数指针要先定义一个函数类型,比如 这是一个最简单的函数类型,没有参数,也没有返回值,并
阅读全文
摘要:转载:http://www.cnblogs.com/doit8791/archive/2012/05/08/2489471.html 以前写Delphi程序一直不注意异常处理,对其异常处理的机制总是一知半解,昨天程序中的一个bug ,让我对异常有了更深入的认识,必须要对可能产生异常的地方进行异常处理
阅读全文
摘要:之前安装 ubuntu时候选择安装英文版,但是在查资料的时候难免的要输入中文所以自己弄了一下中文输入法的安装 我安装的是fcitx小企鹅输入法 下面介绍一下安装的过程。。。。。 ubuntu默认的输入法是ibus,综合网上评论,fcitx的支持者更多,而且个人感觉fcitx也的确不错,可以满足日常输
阅读全文
摘要:删除 ibus输入法: sudo apt-get install ibus 我们会遇到下面的问题 Ubuntu 14.04 系统设置很多选项消失。 其实遇到这个问题的一个最主要的原因是之前执行过卸载ibus输入法的操作,所以为了避免这个问题请不要卸载ibus输入法,大家依然可以安装fcitx输入法使
阅读全文
摘要:需要首先配置好JDK环境 参看:http://www.cnblogs.com/xumenger/p/4460055.html 安装Eclipse 在Android developer的官网上直接下载adt-bundle 直接装adt-bundle,即eclipse+android sdk捆绑好,解压
阅读全文
摘要:首先,当然是要下载了。 地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 按照需要选择不同的版本。笔者选择的是 jdk-7u45,如图: 下面的命令都是以我的实际的 jdk-7
阅读全文
摘要:2015.09.08 更为详细的配置vim的方法,请参见我的新整理的文章:http://segmentfault.com/a/1190000003722928 Vim安装 命令: sudo apt-get install vim 配置vim: 配置vim,/etc/vim/vimrc文件就好,(我上
阅读全文
摘要:ubuntu14 没有解决显卡的问题的时候,会有这样的问题 1.耗电特别快、风扇狂转 2.鼠标键头显示有问题,乱闪,根本没法使用,容易卡住找不到鼠标箭头在哪里了;感觉图形界面显示也有问题,不稳定 解决好显卡问题之后,这些问题也就解决了 2015.04.22 Ubuntu 12.04(也适用于 Ubu
阅读全文
摘要:最近重新安装了Ubuntu,但是之前的LAMP环境自然也就没有了,实在是不想再去编译搭建LAMP环境(这种方法实在是太费时间,而且太容易遇到各种不知道为什么的错误),所以,就去查查有没有什么简单的搭建方法。上网上查了好多博客、文章,并且自己去在自己的机器上尝试了一下,整理出下面的搭建步骤、相关的命令
阅读全文
摘要:2015/08/18 将知识、常用的操作整理出来一定要完整,注意细节。 就像下面是再2015.04.27时候整理的,当时确实实验成功了,但是可能忘记记下具体的细节,尤其是3、4、5、6步骤中的关于盘符的细节。所以后来我在将windows7重装为windows8之后,又需要去恢复ubuntu引导启动,
阅读全文
摘要:这种删除ubuntu的方式就是针对本博客中搭建双系统的方式:http://www.cnblogs.com/xumenger/p/4459963.html 如果ubuntu不是以wubi方式安装的,那么卸载ubuntu时要慎重,不是直接删除ubuntu所在分区这么简单的,否则你会发现你的windows
阅读全文
摘要:转载:http://jingyan.baidu.com/article/60ccbceb18624464cab197ea.html 当需要频繁使用ubuntu时,vmware虚拟机下运行ubuntu,就不是个好的选择了。为了让以后更好的学习linux,笔者今天下午琢磨了整整一下午,终于成功的在win
阅读全文
摘要:转载:http://cantellow.iteye.com/blog/838473 第一种(懒汉,线程不安全) 这种写法 lazy loading 很明显,但是致命的是在多线程时候不能正常工作 第二种(懒汉,线程安全) 这种写法能够在多线程中很好的工作,而且看起来它也具备很好的 lazy loadi
阅读全文
摘要:参考:http://cqujsjcyj.iteye.com/blog/380926 我想你可能还有点模糊。举个例子容易明白:假如你的窗体上有两个按钮,一个“计算”,一个“停止”, 如果你的计算是密集运算或复杂处理,当你点了“计算”钮后,你将发现“停止”按钮不会响应你的点击了,也就是说,你无法随时使计
阅读全文
摘要:上篇博客中提出了一个问题:怎么结束一个定时循环执行的线程,并给出了一个解决方案,但是又出现了一个问题,详细去参考上一篇博客。 然后出去撒了个尿,突然脑子里出现了一个想法(看来工作和思考久了,出去走走,哪怕是去撒个尿,都可能尿出火花,所以工作和学习的时常根本就不等同于效率灵感不是在那里拼命工作、想就能
阅读全文
摘要:在线程对象被释放之前,首先要检查线程是否还在执行中,如果线程还在执行中(线程ID不为0,并且线程结束标志未设置),则调用Terminate 过程结束线程。Terminate 过程只是简单地设置线程类的 Terminated标志,如下面的代码: 所以线程仍然必须继续执行到正常结束之后才行,而不是立即终
阅读全文
摘要:类 Create 了就要 Free; 但 TThread(的子类) 有特殊性, 很多时候我们不能确定新建的线程什么时候执行完(也就是什么时候该释放); 如果线程执行完毕自己知道释放就好了, 所以 TThread 给了一个布尔属性 FreeOnTerminate, 如果为 True, 线程执行完毕后就
阅读全文
摘要:首先说明一下:同一个动态库(DLL)被多个的程序加载的话,那么将会在每次加载的时候都会重新分配新的独立的内存空间,绝对不是共用一个,所以当一个DLL被多次加载的时候,其会在内存中“复制”多份,不会互相之间 产生影响。 加载DLL有两种方式:隐式和显式。下面就以刚创建的DLL为例,来介绍两种方式 一、
阅读全文
摘要:下面是在Delphi中创建一个DLL的全过程,你将看到怎样创建一个接口单元,使之可以被其他的应用程序访问。并且将学会怎么把Delphi的窗体加入DLL中。 一、数美分:一个简单的DLL 下面是包含一个例程的DLL例子。该例程是将以美分计算的货币换算成五分镍币、一角硬币的数目。 1.一个简单的DLL
阅读全文
摘要:使用DLL有若干理由,其中有一些前面提到过的。大体说来,使用动态链接库可以共享代码、系统资源,可以隐藏实现的代码或底层的系统例程、设计自定义控件 一、共享代码、资源和数据 前面已经提到,共享代码是创建动态链接库的主要目的所在。但与单元的代码共享不同,DLL的代码可以被任何Windows 应用程序共享
阅读全文
摘要:静态连接 静态链接是指Delphi 编译器把要调用的函数和过程编译成可执行代码。函数的代码可存留在应用程序的 .dpr文件或一单元中。当链接用户的应用程序时,这些函数与过程便成为最终的可执行文件的一部分。也就是说,函数和过程都在程序的.exe文件中 程序运行时,函数和过程随程序一起调入内存,它们的位
阅读全文
摘要:DLL(动态链接库)是程序模块,它包括代码、数据或资源,能够被其他的Windows 应用程序共享。DLL的主要特点之一是应用程序可以在运行时调入代码执行,而不是在编译时链接代码,因此,多个应用程序可以共享同一个DLL的代码。 事实上,文件 Kernel32.dll、User32.dll、GDI32.
阅读全文
摘要:参考:http://www.cnblogs.com/zhangzhifeng/archive/2011/12/01/2270267.html 一、ini文件的结构 ini文件允许有多个节点,每个节点有允许有多个关键字,“=”后面是该关键字的值(类型有三种:字符串、整型数值和布尔值。其中字符串存储在
阅读全文
摘要:当函数(或过程)A定义在函数(或过程)B之前,那么函数B就可以调用函数A,并且编译成功,例如下面的 procedure TForm1.btn1Click(Sender: TObject); 和 function showstr: string; 当函数(或过程)A定义在函数(或过程)B之后,那么如果
阅读全文
摘要:在C/C++等语言中,函数执行到 return 部分之后,将立即停止函数的执行,并返回值 但是在Delphi中不同 函数中,执行到result时,并不同于比如 C/C++ 中的 return,跳出函数,而是会继续执行下去,直到函数结束 下列代码: 而且在上面的函数中,最终的返回值是最后一个Resul
阅读全文
摘要:当有多个线程的时候,经常需要去同步这些线程以访问同一个数据或资源。 例如,假设有一个程序,其中一个线程用于把文件读到内存,而另一个线程用于统计文件的字符数。当然,在整个文件调入内存之前,统计它的计数是没有意义的。但是,由于每个操作都有自己的线程,操作系统会把两个线程当做是互不相干的任务分别执行,这样
阅读全文
摘要:尽管多线程能够解决许多问题,但是同时它又给我们带来了很多的问题。其中主要的问题就是:对全局变量或句柄这样的全局资源如何访问?另外,当必须确保一个线程中的某些事件要在另一个线程中的其他时间之前(或之后)发生时,该怎么办?这里将讲解通过使用由 Delphi提供的线程局部存储和 A P I为线程提供同步的
阅读全文
摘要:接着上文介绍TThread。 现在开始说明 Synchronize和WaitFor 但是在介绍这两个函数之前,需要先介绍另外两个线程同步技术:事件和临界区 事件(Event) 事件(Event)与Delphi中的事件有所不同。从本质上讲,Event其实就相当于一个全局的布尔变量。它有两个赋值操作:S
阅读全文
摘要:参考:http://www.cnblogs.com/rogee/archive/2010/09/20/1832053.html Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数的Delphi书籍都有讲到,但是基本上都是对TThread类的几个成员作一简单介绍,再说明一个
阅读全文
摘要:紧接着上篇博客讲解的内容: 将Char型数组转换为string类型还有下面的这种方法 但是我在测试的时候遇到了一些问题,并在下面进行了解释和总结 先说出我的总结 其实我们在学习编程的时候(比如我之前学习C的时候),一直有书或者博客上有建议说声明一个变量之后,一定要初始化,否则可能出现一些意想不到的错
阅读全文
摘要:参考:http://my.oschina.net/kavensu/blog/193719 以下的各种方法都是我在Delphi 6的环境下测试成功的,可能根据你的开发环境、不同的上下文语境……有一些可能会出现问题,以自己在使用的时候进行具体的测试为准 Char数组和String的相互转换的另一种方法和
阅读全文
摘要:参考:http://www.cnblogs.com/pchmonster/archive/2011/12/16/2290034.html 结合这个博客一起学习:http://www.cnblogs.com/xumenger/p/4427957.html 在实际编程中,这些操作会经常用到的。开始你不用
阅读全文
摘要:在16位时代,当我们在Windows3.x下编程时,经常会用到GetTickCount()或者timeGetTime()来判断一段代码的执行时间。示例如下 在多线程环境下,这是很困难的,因为在执行程序中间,操作系统可能会把CPU时间片分给别的进程。所以,用上述方法测出的时间并不真实。 为了解决这个问
阅读全文
摘要:当线程对象的Execute()执行完毕,我们就认为此线程终止了。这时候,它会调用Delphi的一个标准例程EndThread(),这个例程再调用API函数ExitThread()。由ExitThread()来清除线程所占用的栈。 当结束使用TThread对象时,应该确保已经把这个Delphi对象从内
阅读全文
摘要:TThread在Classes单元里的声明如下 先说一下TThread的Create的参数 当TThread的Create()被调用的时候,需要传递一个布尔型的参数CreateSuspended。如果把这个参数设为False,那么当调用Create()之后,Execute()会被自动调用,也就是自动
阅读全文
摘要:五、类是一种对数据和操作高度的封装机制 1)数据封装 如上面的代码,我们就用了一个过程SetName和一个函数GetName对私有变量FName进行完全的封装。我们要对FName进行操作就只要这样: 2)操作封装 如上的代码通过类的多态性机制把除法分别处理成整数型和非整数型,又通过异常处理去处理除数
阅读全文
摘要:四、抽象类和它的实例 Delphi中有一个类称为是抽象类,你不能天真的直接为它创建一个实例,如 这是不对的,因为TString是一个抽象类。 那么怎么为这样的抽象类构造实例呢?答案就是借助它的非抽象子类。我们知道TString有一个TStringList的非抽象子类。所以可以这样操作
阅读全文
摘要:三、类可以理解成一种特殊的数据结构 我们知道数据类型可以进行强制类型转换,类既然可以理解成一种数据类型,那么它也应该可以进行类型转换。比如下面代码为一个按钮(Button1)的单击事件 在这段代码中,Sender是一个TObject型对象,我们把它强制转化为TButton类型,注意进项强制类型转换的
阅读全文
摘要:参考:http://blog.163.com/liang_liu99/blog/static/88415216200952123412180/ 以下的介绍主要针对的是Delphi的面向对象的知识,可能和C++、Java、PHP……其他面向对象的编程语言有一些出入 一、介绍几个概念 说到类和对象,我们
阅读全文
摘要:参考:http://blog.csdn.net/xinzheng_wang/article/details/6058643 接口:Interface Delphi中接口中的关键字Interface,但是它和Pascal单元中的Interface没有任何联系 一、抽象类 Delphi中的抽象类只定义行
阅读全文
摘要:从Delphi3开始支持接口。接口定义了能够与一个对象进行交互操作的一组过程和函数。对一个接口进行定义包含两个方面的内容: 1)一方面是实现这个接口 2)另一方面是定义接口的客户 一个类能够实现多个接口,即提供多个让客户用来控制对象的“表现方式” 正如名字所表现的,一个接口就是对象和客户通信的接口。
阅读全文
摘要:Delphi能通过在声明域和方法的时候用protected、private、public、published和automated指示符来对对象提供进一步的控制。使用这些关键字的语法如下 在每一个指示符下呢个声明人一多个方法和域。书写是要注意缩进格式。下面是这些指示符的含义: 1)private 对象
阅读全文
摘要:可以把属性看成是能对类中的数据进行修改和执行代码的特殊的辅助域。对于组件来说,属性就是列在Object Inspector窗口的内容。下面的例子定义了一个有属性的简单对象 TMyObject是一个包含下列内容的对象:一个域(被称为是SomeValue的整型数)、一个方法(被称为是SetSomeVal
阅读全文
摘要:方法是属于一个给定对象的过程和函数,方法反映的是对象的行为而不是数据,前一篇提到的对象的两个重要的方法:构造方法和析构方法。 为了使对象能执行各种功能,你能在对象中定制方法 创建一个方法用两个步骤,首先在对象类型的声明中声明这个方法。然后再用代码定义方法。下面的代码就演示了声明和定义一个方法的步骤
阅读全文
摘要:一、声明和实例化 在使用一个对象之前,用class关键字声明一个对象。可以在一个程序或单元的type部分声明一个对象类型: 除了声明一个对象类型,通常还需要一个对象的变量,即实例。实例定义在var部分 在Delphi中通过调用它的一个构造器来建立一个对象的实例,构造器主要是用来为对象创建实例并为对象
阅读全文
摘要:一、面向对象介绍 OOP是使用独立的对象(包含数据和代码)作为应用程序模块的范例。虽然OOP不能使得代码容易编写,但是它能够使得代码易于维护。将数据和代码结合在一起,能够使定位和修复错误的工作简单化,并最大限度地减少对其他对象的影响,提高代码的性能。一般OOP都支持一下三个概念: 1)封装:把相关的
阅读全文
摘要:强制类型转换时一种技术,通过它能够使编译器把一种类型的变量当做另一种类型。 由于Pascal有定义新类型的功能,因此编译器在调用一个函数时候对形参和实参类型匹配的检查是非常严格的。因此为了能够通过编译器检查,经常需要把一个变量的类型转换为另一个变量的类型。例如:假定要把一个字符类型的值赋给一个byt
阅读全文
摘要:1.02.03.04.05.06.07.08.0200520062007现在应该又出新的版本了
阅读全文
摘要:参考博客:http://www.cnblogs.com/pchmonster/archive/2011/12/14/2287686.html 其中的所有代码均在Delphi7下测试通过。 Delphi 4,5,6,7中有字符串类型包括了: 短字符串(Short String) 长字符串(Long S
阅读全文
摘要:Delphi中表示跳出的有break,continue,abort,exit,halt,runerror等 1.break 强制退出最近的一层循环(注意:只能放在循环里;而且是只能跳出最近的一层循环),用于从for、while、repeat语句中强制退出 类似于C/C++等语言中的break的功能
阅读全文
摘要:问题: 在编写DLL程序的时候,按下F9或者按下那个绿色的箭头,会报错,如下 原因: 是因为你按下的F9或者那个绿色箭头是表示“Run”这个程序,但是DLL不是可执行文件,所以当然不能够运行,所以就会报错 上面那句错误信息的意思是,让你找到一个动态加载这个DLL的应用程序来进行调试,通过菜单:Run
阅读全文
摘要:参考:http://www.cnblogs.com/huangjacky/archive/2009/12/21/1628833.html 数组就是一堆相同特性数据的一个组合,也就是每个元素的类型必须是一样的,当然在其他一些弱语法的语言里面,数组的元素可以是千奇百怪,例子 Delphi中数组的分类 1
阅读全文
摘要:转载:http://blog.csdn.net/rznice/article/details/6566978 第一种不带packed关键字的结构体表明编译器编译时要求进行字对齐。 而第二种带packed关键字的结构体表明编译器编译结构体的时候不需要进行字对齐,这种方式对结构中的字段访问回避第一种方式
阅读全文
摘要:参考:http://blog.csdn.net/qustdong/article/details/9230743 参考:http://www.cnblogs.com/xumenger/p/4402227.html 1.根据枚举定义集合 2.根据枚举定义数组 注意其中根据枚举定义相关的数组的语法 注意
阅读全文
摘要:参考:http://blog.csdn.net/kissdeath/article/details/2060573 Delphi程序不仅可以用于数值处理,还更广泛的用于处理非数值的数据。例如:性别、月份、星期几、颜色、单位名、学历、职业等。 1.枚举类型的定义 格式:type 枚举类型标识符 = (
阅读全文
摘要:不光是Delphi,Windows里面所有的之所以无法打开.hlp帮助文档的问题都可以使用以下的方法来解决 问题:情况是这样的,不是打不开hlp帮助文档,按F1出现的是Windows的帮助。而Delphi的帮助也是F1,当我打开Delphi环境时,按F1不打开Delphi的帮助,而是打开window
阅读全文
摘要:Delphi的参数可以分为:默认参数(传值)、var(传址)、out(输出)、const(常数)四类 可以对比C/C++的相关知识,类比学习。 1.默认参数是传值,不会被改变,例子 2.var参数是传址,会被改变,例子 3.out参数是为支持Com的,和var的结果是一样的,一般我们用不着 4.co
阅读全文
摘要:use单元引入分为在interface中引入,如 和在implementation,如 区别简单的理解就是 两个所在的声明位置不同,所以使用范围不同 在interface下是全局的,在其他但原因如本单元的时候,这些单元也会被引入。 在implementation下的就不是这样,它可以避免单元的循环引
阅读全文
摘要:参考:http://www.cnblogs.com/doit8791/archive/2012/08/17/2644859.html 集合是Pascal特有的数据类型,在Visual Basic、C/C++都没有(虽然C++ Builder提供了一种模板类成为集合,它模仿了Pascal集合的行为)。
阅读全文

浙公网安备 33010602011771号