当前位置:首页 » 服务存储 » delphi存储技巧
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

delphi存储技巧

发布时间: 2022-08-02 10:25:43

⑴ 学习DElphi的技巧

通过书籍对Delphi语法熟练运用。
然后将书里自带的实例都重新抄写一遍,达到书里所达到的效果。
然后多思考,一个程序的流程是什么,试着自己写一些简单的小程序。
慢慢了解更多的Delphi函数,API函数,和对Delphi编译环境下的控件有深入的认识

⑵ delphi编程技巧谁你呢个给我详细谈下

Delphi,是Windows平台下着名的快速应用程序开发工具(Rapid Application Development,简称RAD)。
要实现类似QQ的程序当然是可以的,但我感觉这并不是首选,关于它的变成技巧,你可以自己到扁豆波波去看一下,
不过所谓的技巧也并不是什么诀窍,需要自己慢慢琢磨,慢慢积累的。

⑶ 关于DELPHI动态数据库

在Delphi中动态建立数据库结构
--------------------------------------------------------------------------------

一、问题的提出
在程序运行过程中动态建立数据库结构是我们编写功能通用的数据库管理系统常见
的问题。通用数据库管理系统开发的基本思路是:系统允许用户自行设定管理对象的数据
库结构,然后通过算法和编程技巧,在用户设定完成后动态创建管理对象的数据库结构和
完成系统功能的一些其它数据,这样可以满足不同用户对管理系统管理项目的不同要求,
进而达到通用的目的。因此,通用数据库管理系统开发的关键是系统能否动态地创建数据
库结构。我们熟悉的Foxbase+、Foxpro等语言,均提供了动态创建数据库结构的命令或过
程。
但是,在许多资料和书籍中,没有介绍用Delphi如何动态建立数据库结构,给我们开发
一些功能通用的数据库管理系统带来了不便。那么如何在Delphi中动态建立数据库结构
呢?本文是作者在查阅大量资料,经过反复实践的基础上得出的在Delphi中动态创建数据
库结构的方法。
二、设置Delphi数据库配置程序
在Delphi中要进行数据库管理必须先设置好数据库配置程序BDE,所有对数据库的操
作,最后都要通过BDE去完成。下面以最常见的Dbase数据库为例来配置Delphi的数据库引
擎BDE。
1. 进入Delphi的集成开发环境IDE(Integrated Development Environment),在Dat
abase菜单下选择Explore,出现SQL Explorer窗体,在Object菜单下选择BDE Administra
tor。
2. 出现BDE Administrator窗体后在Database页上选择Dbase,在Definition页中将
Type项设为Standard;将Default Driver项设为Dbase;将Path项设为一工作目录名(如:D
:\MYNAME)。以上过程即为数据库的别名(Aliases)设置,这在以后Delphi的程序开发过程
中要经常用到。
3. 选择Configration页,在Drivers的Native项中选择Dbase,在Definition页中将T
ype项设为File;将Langdriver项设为DBASE CHS CP936;将Level项设为5。
4. 完成上述工作后,在Object菜单中选择Save as Configration,按出现的对话框要
求将以上的设置保存好。至此,数据库的基本配置工作就完成了,我们就可以进行下面的
工作了。
三、动态创建数据库结构方法
在Delphi中动态创建数据库结构有两种方法。
方法一:使用Table组件的CreateTable方法。步骤如下:
1. 进入Delphi的IDE建立一个新项目文件和新窗体(Form1)单元文件(unit1.pas)。
2. 在Form1上加入Table1、Edit1、Edit2、Button1组件。将Button1组件的Captio
属性设为‘创建’。
3. 用鼠标双击Button1进入Unit1.pas单元文件,在光标处加入下列代码。
with table1 do
egi
active:=false
databasename:=‘dbase'
tablename:=‘my.dbf'
tabletype:=ttdbase
fielddefs.clear
fielddefs.add(edit1.text,ftstring,10,false)
fielddefs.add(edit2.text,ftinteger,0,false)
createtable
end
4. 按F9键编译运行,在Edit1处输入一字段名称:ZD1,在Edit2处输入一字段名称:ZD
2,然后点击"创建"按钮,程序将在D:\MYNAME目录中产生一个名为MY.DBF的数据库文件,用
Database Desktop查看文件结构如下:
FieldName
Type
Size
Dec
ZD1 C 10
ZD2 N 11
方法二:使用Query组件,用结构化查询语言SQL(Structured Query Language)语句创
建,步骤如下:
1. 同方法一之步骤1。
2. 在Form1窗体中加入Query1、Button1组件,将Query1的Database Name属性设为‘
Dbase’;将Button1组件的Caption属性设为‘创建’。
3. 在Query1的SQL属性单击,出现Sting List Editor窗口,在该窗体中输入以下SQL
语句:
Create Table My(
ZD1 Char(10),
ZD2 Numeric(10,2))
4. 双击Button1进入Unit1.pas单元,在光标处加入下列代码:
Query1.ExecSQL
5. 按F9键 编译运行,在"创建"按钮处单击即可产生一个名为MY.DBF的数据库文件,
存放在D:\MYNAME目录中,用Database Desktop查看其结构如下:
FieldName Type Size Dec
ZD1 C 10
ZD2 N 10 2
以上所介绍的操作和程序均在Windows98操作系统下,Delphi 3.0 C/S版上调试运行
通过。

⑷ delphi TStringList 和 String 这两个类型有什么区别

TStringList 是一个字符串行表类型,是PASCAL系统管理的,数组一样使用,但是大小是动态的,就是本质上是链表实现的,基于链表数据结构来的。这个东西是常用玩意,经常用来组织一堆字符串,就是String类型的数据。网上关于TStrigList的用法讲了很多,可自行网络。

String就是一种数据类型,存储字符串的。
Delphi中String类型原理介绍
Delphi中字符串的操作很简单,但幕后情况却相当复杂。Pascal传统的字符串操作方法与Windows不同,Windows吸取了C语言的字符串操作方法。32位Delphi中增加了长字符串类型,该类型功能强大,是Delphi缺省的字符串类型。
字符串类型在Borland公司的TurboPascal和16位Delphi中,传统的字符串类型是一个字符序列,序列的头部是一个长度字节,指示当前字符串的长度。由于只用一个字节来表示字符串的长度,所以字符串不能超过255个字符。这一长度限制为字符串操作带来不便,因为每个字符串必须定长(确省最大值为255),当然你也可以声明更短的字符串以节约存储空间。
字符串类型与数组类型相似。实际上一个字符串差不多就是一个字符类型的数组,因此用[]符号,你就能访问字符串中的字符,这一事实充分说明了上述观点。
为克服传统Pascal字符串的局限性,32位Delphi增加了对长字符串的支持。这样共有三种字符串类型:
ShortString 短字符串类型也就是前面所述的传统Pascal字符串类型。这类字符串最多只能有255个字符,与16位Delphi中的字符串相同。短字符串中的每个字符都属于
ANSIChar类型(标准字符类型)。
ANSIString 长字符串类型就是新增的可变长字符串类型。这类字符串由内存动态分配,引用计数,并使用了更新前拷贝(--on-write)技术。这类字符串长度没有限制(可 以存储多达20亿个字符!),其字符类型也是ANSIChar类型。
WideString 长字符串类型与ANSIString 类型相似,只是它基于WideChar字符类型,WideChar字符为双字节Unicode字符。
使用长字符串
如果只简单地用String定义字符串,那么该字符串可能是短字符串也可能是ANSI长字符串,这取决于$H编译指令的值,$H+(确省)代表长字符串(ANSIString类型)。长字符串是Delphi库中控件使用的字符串。
Delphi长字符串基于引用计数机制,通过引用计数追踪内存中引用同一字符串的字符串变量,当字符串不再使用时,也就是说引用计数为零时,释放内存。
如果你要增加字符串的长度,而该字符串邻近又没有空闲的内存,即在同一存储单元字符串已没有扩展的余地,这时字符串必须被完整地拷贝到另一个存储单元。当这种情况发生时,Delphi运行时间支持程序会以完全透明的方式为字符串重新分配内存。为了有效地分配所需的存储空间,你可以用SetLength过程设定字符串的最大长度值,如:
SetLength (String1, 200);
SetLength过程只是完成一个内存请求,并没有实际分配内存。它只是把将来所需的内存预留出来,实际上并没有使用这段内存。这一技术源于Windows操作系统,现被
Delphi用来动态分配内存。例如,当你请求一个很大的数组时,系统会将数组内存预留出来,但并没有把内存分配给数组。
一般不需要设置字符串的长度,不过当需要把长字符串作为参数传递给API函数时(经过类型转换后),你必须用SetLength为该字符串预留内存空间,这一点我会在后面进行说明。
看一看内存中的字符串
为了帮你更好地理解字符串的内存管理细节,我写了一个简例StrRef。在程序中我声明了两个全程字符串:Str1和Str2,当按下第一个按钮时,程序把一个字符串常量赋给第一个变量,然后把第一个变量赋给第二个:
Str1 := 'Hello';
Str2 := Str1;
除了字符串操作外,程序还用下面的StringStatus函数在一个列表框中显示字符串的内部状态:
function StringStatus (const Str: string): string;
begin
Result := 'Address: ' + IntToStr (Integer (Str)) +
', Length: ' + IntToStr (Length (Str)) +
', References: ' + IntToStr (PInteger (Integer (Str) - 8)^) +
', Value: ' + Str;
end;
在StringStatus函数中,用常量参数传递字符串至关重要。用拷贝方式(值参)传递会引起副作用,因为函数执行过程中会产生一个对字符串的额外引用;与此相反,通过引用(var)或常量(const)参数传递不会产生这种情况。由于本例不希望字符串被修改,因此选用常量参数。 为获取字符串内存地址(有利于识别串的实际内容也有助于观察两个不同的串变量是否引用了同一内存区),我通过类型映射把字符串类型强行转换为整型。字符串实际上是引用,也就是指针:字符串变量保存的是字符串的实际内存地址。
为了提取引用计数信息,我利用了一个鲜为人知的事实:即字符串长度和引用计数信息实际上保存在字符串中,位于实际内容和字符串变量所指的内存位置之前,其负偏移量对字符串长度来说是-4(用Length函数很容易得到这个值),对引用记数来说是-8。
不过必须记住,以上关于偏移量的内部信息在未来的Delphi版本中可能会变,没有写入正式Delphi文档的特性很难保证将来不变。
通过运行这个例子,你会看到两个串内容相同、内存位置相同、引用记数为2,如图7.1中列表框上部所示。现在,如果你改变其中一个字符串的值,那么更新后字符串的内存地址将会改变。这是-on-write技术的结果。
第二个按钮(Change)的OnClick事件代码如下,结果如图7.1列表框第二部分所示:
procere TFormStrRef.BtnChangeClick(Sender: TObject);
begin
Str1 [2] := 'a';
ListBox1.Items.Add ('Str1 [2] := ''a''');
ListBox1.Items.Add ('Str1 - ' + StringStatus (Str1));
ListBox1.Items.Add ('Str2 - ' + StringStatus (Str2));
end;
注意,BtnChangeClick只能在执行完BtnAssignClick后才能执行。为此,程序启动后第二个按钮不能用(按钮的Enabled属性设成False);第一个方法结束后激活第二个按钮。你可以自由地扩展这个例子,用StringStatus函数探究其它情况下长字符串的特性。
动态分配可以用任意一个分配内存的函数, 其实系统最终调用的都是GetMem, 其它的New、AllocMem、SetLength等等只不过除了调用GetMem外还做了一些初始化处理比如把内存清零。释放可以用Dispose或者FreeMem, 系统最终都是调用FreeMem的, Dispose相当于Finalize(p); FreeMem(p);
Finalize的作用简单说就是自动释放结构或者数组中的string和动态数组, FreeMem则是直接释放指针所指向的内存,例如:
type
TMyRec = record
Name: string;
X, Y: Integer;
end;
PMyRec = ^TMyRec;
var
MyRec : PMyRec;
begin
New(MyRec); // 编译器会根据MyRec的大小自动计算需要分配的内存数量然后生成代码调用GetMem并将其中的Name字段清零
MyRec.Name := str1 + str2;
Dispose(MyRec); // 除了调用FreeMem释放MyRec这个结构的内存外还会自动清除其中的Name所用到的内存(如果Name指向的string引用计数=1时);
// FreeMem(MyRec); <-- 如果直接调用FreeMem释放MyRec, 则会造成内存泄露, 因为MyRec.Name指向的字符串没有释放(引用计数-1)
end;

由于delphi关于string的内存管理的特殊性, 可以有很多技巧充分利用其优点生成非常高效的代码, 比如要用TList来保存string(不是TStringList), 一般的做法是TList.Items[i]中保存一个PString指针, 这样就需要重新分配一块内存并复制原串, 大数据量的情况下效率很低, 但是如果充分利用string的引用计数和强制类型转换技巧, 可以直接将string作为指针保存在TList.Items[i]中: 比如:
var
List: TList;
GlobalString1, GlobalString2: string;
...
procere Test;
var
tmp: string;
begin
tmp := GlobalString1+GlobalString2;
List.Add(Pointer(tmp)); // 将tmp作为指针保存进List
{ 由于Test过程结束时会自动释放掉tmp, 如果直接退出的话List中就保存了一个无效的指针了, 所以这里要欺骗编译器, 让它认为tmp已经被释放掉了, 等于在不改动tmp引用计数(当前是1)的情况下执行相当于tmp := ''的语句, 由于直接tmp := ''会修改引用计数并可能释放掉内存, 所以用强制类型转换将tmp转成一个Integer并将这个Integer设置成0(也就是nil), 此语句完全等价于pointer(tmp) := nil; 只是个人喜好我喜欢用Integer(tmp) := 0而已.
}
Integer(tmp) := 0;
end;

1. string是Delphi编译器内在支持的(predefined or built-in),是Delphi的一个基本数据类型,而PChar只是一个指向零终止字符串的指针;
2. String 所存字符串是在堆分配内存的,String变量实际上是指向零终止字符串的指针,与此同时它还具有引用计数(reference count)功能,并且自身保存字符串长度,当引用计数为零时,自动释放所占用的空间。
3.将string赋值给另一个string,只是一个简单的指针赋值,不产生动作,只是增加string的引用计数;
4.将一个PChar变量类型赋值给一个string 变量类型会产生真正的Copy动作,即将PChar所指向的字符串整个到为string分配的内存中;
5.将string赋值给一个PChar变量类型,只是简单地将string的指针值赋值给PChar变量类型,而string的引用计数并不因此操作而发生变化,因为这种情况PChar会对string产生依赖,当string的引用计数为零自动释放内存空间后,PChar很可能指向一个无效的内存地址,在你的程序你必须小心对付这种情况。
6.对PChar的操作速度要远远高于对string操作的速度,但PChar是一种落后的管理字符串的方式,而string则以高效的管理而胜出,PChar它的存在只是为了兼容早期的类型和操作系统(调用Windows API时会经常用到),建议平常使用string。

⑸ delphi那么多类怎么记忆啊

其实不用去背,它们是有规率的,刚开始了解就行了。以后用多了就自然记得了。比如:
TObject是所有类的祖先;
接下来是TPersistent,TPersistent的子类都有持久化的能力(流化);
接下来是TComponent,所有控件都是TComponent的子类,但是直接从TComponent写控件,控件是没有可视界面的;
接下来是TControl,从这开始控件有可视化的界面;
接下来是TWinControl,TWinControl是包装Windows可视化类的,其实窗体,输入框等都是WIndows已经提供了,Delphi把它重新包装了;
等等,再往下还有各种分枝,但那都是具体细化的,总之你了解VCL的结构,如果要你写个控件知道怎么选择祖先类,那就够了。除此之外,还要了解一下一些常用的类,比如最经常用的列表,TList,TStrings及它的后代,如TStringList,TObjectList等等,那就可以了

⑹ Delphi IDE 技巧

安装个CnPack向导,它会自动画线将配对的begin与end连起来。
你可以到它的官方网站下载,免费的
http://www.cnpack.org/index.php?lang=zh-cn

⑺ 初学delphi,应该掌握哪些东西

初学没什么担心的!
一、看书最重要。
书基本的概念性的东西一定要记住了,这很重要。
二、多做实例。
书的的例子固然在高手看来是垃圾,但对于初学者来说,很重要。
三、想象能力。
没有想象能力,做一万个实例也不会有自己的创意。多想想,这些东西放一块会发生什么事情,不要怕错误。
四、多问。
不懂就问,把自己当菜鸟。不懂的问题多在各个有关论坛问问高手们该怎么解决。
五、毅力。
这个就不要说了吧,你有我有他也有,关键看是不是懒的用。

书嘛,把我压箱底的东东给你吧:
<<Delphi5开发者指南>>机械工业出版社
<<Delphi6.0从入门到精通>>电子工业出版社
《深入DELPHI6网络编程》
《delphi4从入门到精通》
《delphi com 深入编程》
《windows 高级开发指南》
《windows 程序设计》
《windows 图形编程》
《windows 核心编程》
Delphi Win32核心API参考
<Delphi Win32核心API参考>!!!
Delphi深度历险
:《Windows程序设计》
《DELPHI5开发人员指南》 美 业界标准手册
《delphi5从入门到精通》美 delphi精英奖得主写的!
《轻松掌握delphi4》美Tuobo power的工程师写的,不同于一般的入门书,值得一看!
《delphi高级开发人员指南》美 delphi精英奖得主写的!顶级高手必读!
《delphi2程序设计大全》!!!美 delphi 技术支持部门主管写的,我一直在看!不要被书
名所迷惑,如果要彻底精通delphi必读该书!
《delphi4编程技术内幕》美 同上!对数据库,网络计算偏重一些,也有关于游戏开发
的内容!
《精通delphi》中 国防科技大学的中国人写的,该书再版多次,还记得着名的《Turbo
puscal大全》吗?同一群作者!
<奇思异想编程序——Delphi篇>
<Delphi 5 API 函数开发实例>
<Delphi Win32核心API参考>
《delphi2程序设计大全》http://www.zhongguosou.com/ebook/ebook_13_windows.html
<Delphi5.0程序设计-基础教学篇>
<PASCAL语言程序设计>
<Delphi编程技巧280例>
<Delphi 6开发人员指南>
<Delphi 5开发人员指南>
<计算机技术译林精选系列 DELPHI 4 开发大全(上、下)>
<DELPHI 实用技术精粹>
<DELPHI 3 自学通>
delphi高级程序设计指南
Delphi 4开发大全
delphi4.0 从入门到精通
Delphi 2.0高级程序设计
《Windows程序设计》
《Delphi5开发大全》发消息
Delphi6彻底研究

Delphi的经典书籍:

1、《Delphi 技术手册》 Ray Liscbner着 632页 65元 中国电力出版社
2、《Delphi 5 开发人员指南》 Steve Teixeira & Xavier Pacheco着 1263页 138元 机械工业出版社
3、《Delphi COM 深入编程》 Eric Harmon着 473页 48元 机械工业出版社
4、《Delphi DirectX图形与游戏程序设计》 John Ayres着 445页 45元 电子科技大学出版社
5、《Delphi 4 编程技术内幕》 Charlie Calvert着 985页 110元 机械工业出版社
6、《Delphi/Klyix 数据库开发》 Eric Harmon着 277页 29元 机械工业出版社
7、《Delphi 5.x 分布式多层应用》(三个系列) 李维着 机械工业出版社 (三本全买的话至少要260元)

8、《Delphi 6/Klyix 2 Soap/Web Service 程序设计篇》 李维着 404页 65元 机械工业出版社
9、《Delphi 深度探索》 陈省着 481页 49.8元 华中科技大学出版社
10、《Delphi 深度历险》 陈宽达着 422页 47元 科学出版社
11、《Delphi 5.X ADO/MTS/COM+高级程序设计篇》 李维着 600页 机械工业出版社(90RMB)

12、《DELPHI 5 企业级解决方案及应用剖析》
13、《Advanced Delphi Developer’s Guide to ADO》 Federov, Alex, Natalia Elmanova

《Delphi5从入门到精通》,Marco Cantu着,电子工业出版社。在Delphi世界中,Marco Cantu 作为书
籍作者可说是人人皆知,Delphi从入门到精通系列更是绝对的经典。这本书虽然并不面向高端用户,但它全
面地论述了Delphi编程中的各个方面,象组件开发、多线程、图象处理、报表打印、I/O、数据库、Inter-
net应用等等,是亟待提高的初学者的不二之选。
《Delphi4编程技术内幕》,Charlie Calvert着,机械工业出版社。作者是一位经验极其丰富的高级程
序员,用深入浅出的语言,将Delphi中的许多复杂问题一一道来,令人豁然开朗。丰富的内容和独特的风格
让这本书的读者不但有技术上的收获,而且有阅读上的快乐。很多人吐血推荐的东东,高手案头必备之物。
《Delphi3开发使用手册》,机械工业出版社。由Delphi的内部开发人员所着,权威性可见一斑。 虽然
它的可读性并不是很好,但其全面、深入、权威的介绍,使得本书可以当作Delphi的使用手册来读。哪怕在
Delphi5已经发布的今天,这本书仍然有其不可替代的位置。

⑻ Delphi使用过程中的几个技巧

1、设置控件堆叠显示的层次。
右键send to back,右键bring to front。
2、窗体关闭时释放内存对象。
对于动态生成的窗体,一旦不再使用,一定要手动释放资源,不然你会看到程序占有内存疯狂上涨,然后就被任务管理器干掉了~手动释放主要有两种方式,第一种是显示调用Form.Free这个方法。
3、delphi编译提示 circular unit reference
解决方法: 在implementation后面uses ,不要在interface 后面 uses !

⑼ delphi 经验之谈,帮助新学者快速掌握Delphi的技巧活难点在哪里

1.对比你的C,JAVA开发经验,学习pascal语法;
2.熟悉基本控件及Delphi的事件驱动的思想;
3.熟悉数据库,网络等;
4.找相关的Demo,试着改一些东西