05 2014 档案
摘要:貌似很有用,但没有真正用过:SQL的主键和外键的作用:外键取值规则:空值或参照的主键值。(1)插入非空值时,如果主键表中没有这个值,则不能插入。(2)更新时,不能改为主键表中没有的值。(3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除。(4)更新主键记录时,同样有级联更新和...
阅读全文
摘要:typeTFunc=procedure;procedure MyFunc;beginShowMessage('Run my func');end;procedure TForm1.Button1Click(Sender: TObject);varptr:Pointer;func:TFunc;begi...
阅读全文
摘要:"=="和equals方法究竟有什么区别?(单独把一个东西说清楚,然后再说清楚另一个,这样,它们的区别自然就出来了,混在一起说,则很难说清楚)==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操...
阅读全文
摘要:C++标准明确规定,不能获取构造函数和析构函数的地址,因此也无法形成指向他们的成员函数指针。指向成员函数的指针可以,指向构造函数析构函数的不行。因为构造函数和析构函数都是没有返回值的,无法声明一个没有返回值的成员函数指针。但是通过汇编代码,有可能获得它,这是代码,但我在VC6上没有能够编译通过:#i...
阅读全文
摘要:说实话,从来没有感觉到这个关键字有用,直到今天。 explicit的意思是明显的,和它相对应的一个词是implicit意思是隐藏的。 我参考了MSDN和《c++标准程序库》对这个关键字的描述,并参考了网络上对这个关键字的解释。现将它的使用方法和总结记录如下: 首先这个关键字只能用在类构造函数。它的作
阅读全文
摘要:关键字mutable是C++中一个不常用的关键字,他只能用于类的非静态和非常量数据成员我们知道一个对象的状态由该对象的非静态数据成员决定,所以随着数据成员的改变,对像的状态也会随之发生变化! 如果一个类的成员函数被声明为const类型,表示该函数不会改变对象的状态,也就是该函数不会修改类的非静态数据
阅读全文
摘要:volatile关键字 volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。使用该关键字的例子如下: int volati
阅读全文
摘要:记下以后所有碰到使用数组名称时候的是是非非:int main(int argc, char* argv[]){ char x[3]="abc"; // 编译错误 char a[3]={'a','b','c'}; char b[3]; b=a; // 常指针不能赋值 re...
阅读全文
摘要:会记下所有C++类型转换的例子在这里:#include "stdafx.h"#include using namespace std;int main(int argc, char* argv[]){ cout<< 22/5*3 <<endl; // 输出12,注意连进位都没有包括 re...
阅读全文
摘要:以下三种情况皆错,都编译不过:int main(int argc, char* argv[]){ int a; int b[a];}int main(int argc, char* argv[]){ int a=4; int b[a];}int main(int argc, ...
阅读全文
摘要:C++的IO比较复杂,记录一下碰到的问题:#include "stdafx.h"#include using namespace std;int main(int argc, char* argv[]){ cout << 22/5*3 << endl; printf("Hello Wor...
阅读全文
摘要:为了尝试编译FreePascal,我搜了官方文档,并给几位作者都发了邮件询问,目前结果如下:http://wiki.lazarus.freepascal.org/Getting_Lazarus#Compiling_and_installing_FPChttp://wiki.maemo.org/Com...
阅读全文
摘要:一、汇编语言中PTR的含义及作用mov ax,bx ;是把BX寄存器“里”的值赋予AX,由于二者都是word型,所以没有必要加“WORD”mov ax,word ptr [bx];是把内存地址等于“BX寄存器的值”的地方所存放的数据,赋予ax。由于只是给出一个内存地址,不知道希望赋予ax的,是byt...
阅读全文
摘要:用户要求——>功能分析——>架构制定——>组件开发——>原型集成总体测试<——(系统)功能测试<——架构测试<——组件测试心得体会:1. 组件测试通过(子系统),不等于在全架构中没有问题,所以需要架构测试。2. 架构测试通过(架构自洽),不等于满足了所有的系统功能测试。3. 系统功能测试通过(满足了...
阅读全文
摘要:1. 抽象类法(VCL不推荐);第一,允许创建抽象类对象,因为语法没问题,但允许其错误。第二,接口更好。第三,如果是混合抽象类,则推荐Place Holder方法2. Place Holder(占位):父类虚拟函数为空白函数,但不是抽象方法。例如TCanvas。避免了抽象类的缺点3. 逐渐增加法:子...
阅读全文
摘要:DDD8088 汇编跳转日期:2003年6月12日出处:嬴政天下整理收藏作者:看雪人气: 8735 8088 汇编跳转一、状态寄存器PSW(Program Flag)程序状态字寄存器,是一个16位寄存器,由条件码标志(flag)和控制标志构成,如下所示:1514131211109876543210 ...
阅读全文
摘要:不求全面,先留个爪: TNotifyEvent = procedure(Sender: TObject) of object; TMethod = record Code, Data: Pointer; end;判断两个按钮的事件是否相等:procedure TForm1.Button5...
阅读全文
摘要:起因:非Windows句柄控件也可以处理鼠标消息,我想知道是怎么处理的;并且想知道处理消息的顺序(比如TPaintBox和TForm都响应WM_Mouse消息该怎么办)界面:把TPaintBox放到TForm的最左上角,不留一点缝隙,这样可以准确发送消息给TPaintBox,然后看看它处理完以后,是
阅读全文
摘要:function Fun(x: Integer): Integer;asm mov ecx, &x dec ecx {汇编中的 dec 是减 1 指令, 和 Delphi 是一样的} mov @Result, ecx {在本例中去掉 @ 也可以, 暂时不知怎么回事}end;去掉两个符号,对...
阅读全文
摘要:举例:x指向的内存地址,其字节内容从低到高依次分别为c1,c2,c3,c4(Delphi读取一个integer的时候,结果是c4c3c2c1,其排列规则是"高高低低"),那么结果是c4,c3,c2,c1(Delphi读取一个integer的时候,结果是c1c2c3c4)用delphi写的程序,把x指...
阅读全文
摘要:DELPHI中的消息处理机制Delphi是Borland公司提供的一种全新的WINDOWS编程开发工具。由于它采用了具有弹性的和可重用的面向对象Pascal(object-orientedpascal)语言,并有强大的数据库引擎(BDE),快速的代码编译器,同时又提供了众多出色的构件。受到广大编程人...
阅读全文
摘要:探索C++的底层机制在看这篇文章之前,请你先要明白一点:那就是c++为我们所提供的各种存取控制仅仅是在编译阶段给我们的限制,也就是说是编译器确保了你在完成任务之前的正确行为,如果你的行为不正确,那么你休想构造出任何可执行程序来。但如果真正到了产生可执行代码阶段,无论是c,c++,还是pascal,大...
阅读全文
摘要:段寄存器是因为对内存的分段管理而设置的。16位CPU有四个段寄存器,其程序可同时访问四个不同含义的段,引用方面有如下规定:1. 取命令:段寄存器CS指向存放程序的内存段,IP是用来存放下条待执行的指令在该段的偏移量,把它们合在一起可在该内存段内取到下次要执行的指令。2. 取堆栈:段寄存器SS指向用于...
阅读全文
摘要:好奇一下。看来Object Pascal确实与Windows深入结合了。 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, St
阅读全文
摘要:测试,在按钮事件里写上 Button1.Repaint;(包括TWinControl.Invalidate;和procedure TWinControl.Update;两个函数,会被TButton所继承),跟踪一下就什么都明白了。 1. 执行TWinControl.Invalidate;后,执行Pe
阅读全文