`
feirou520
  • 浏览: 119159 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

Delphi 关键字详解 (2)

阅读更多
index
//Index用于在属性中标识序号, 以便用相同的属性方法(Get,Set)对不同的属性进行操作.
type
 TForm1 = class(TForm)
 private
  function GetInfo(const Index: Integer): Longint;
  procedure SetInfo(const Index: Integer; const Value: Longint);
 public
  property iLeft:Longint index 0 read GetInfo write SetInfo;
  property iTop:Longint index 1 read GetInfo write SetInfo;
  property iWidth:Longint index 2 read GetInfo write SetInfo;
  property iHeight:Longint index 3 read GetInfo write SetInfo;
 end;

function TForm1.GetInfo(const Index: Integer): Longint;
begin
 case Index of
  0: result := self.Left;
  1: Result := self.Top;
  2: result := self.Width;
  3: result := self.Height;
 end;
end;

//Index关键字也用于在属性中指出多个元素, 例如:
property Selected[Index: Integer]: Boolean read GetSelected write SetSelected;

 

inherited
//Inherited用于调用父类的方法.
type
 TDemo = class(TComponent)
 public
  constructor Create(AOwner: TComponent); override;
 end;

constructor TDemo.Create(AOwner: TComponent);
begin
 inherited Create(AOwner);
end;

//如果调用的是与自身同名的方法, 则也可以省去方法名和参数.如上例中的
inherited Create(AOwner);
//可以改成:
Inherited;

 

initialization
//initialization关键字标识了单元被载入时所要调用的方法, 
//通常是初始化一些不能自动初始化的对象, 也可以不用.
//initialization最常用的情况是对OLE对象做初始化.
initialization
  ActiveX.OleInitialize(nil);
finalization
  ActiveX.OleUninitialize;

 

inline
//InLine关键字用于Asm或assembler结构中, 
//用于指出该汇编语句是向下兼容的.它对于程序的编译没有任何影响.
function IntToStr(Value: Integer): string;
asm
 InLine;
  PUSH  ESI
  MOV   ESI, ESP
  SUB   ESP, 16
  xor   ECX, ECX
  PUSH  EDX
  xor   EDX, EDX
  CALL  CvtInt
  MOV   EDX, ESI
  POP   EAX
  CALL  System.@LStrFromPCharLen
  ADD   ESP, 16
  POP   ESI
end;

 

interface
//Interface标识了单元中的接口部分, 单元的基本结构为:
//Unit...Interface...implementation...end.
//函数, 过程等的声明必须写在Interface关键字后.
//如果在Interface后引用对象, 则对象是没有实例的, 使用时必须被实例化.
Interface
 uses frmAbout;
var
 FAbout: TFormAbout;
begin
 FAbout := TFormAbout.Create(Self);
 FAbout.Show;
end;

//一个完整的单元必须拥有Interface部分.

//Interface也可以用作接口的声明.
type
 IMalloc = interface(IInterface)
 ['{00000002-0000-0000-C000-000000000046}']
  function Alloc(Size: Integer): Pointer; stdcall;
  function Realloc(P: Pointer; Size: Integer): Pointer; stdcall;
  procedure Free(P: Pointer); stdcall;
  function GetSize(P: Pointer): Integer; stdcall;
  function DidAlloc(P: Pointer): Integer; stdcall;
  procedure HeapMinimize; stdcall;
 end;

 

is
//Is关键字用于对象的判断, 有某些情况下, 也可以作"As"使用.
var
 Comp: TComponent;
begin
  ...
 if Comp Is TEdit then
  (Comp as TEdit).Text := 'Edit';
end;

 

label
//label关键字用于声明行号标签, 以便用Goto进行转向, 不推荐使用.
var
 a,b: Integer;
label
 X,Y;
begin
 if a > b then
  goto X
 else
  goto Y;
X:
 WriteLn('a>b');
Y:
 WriteLn('b>a');
end;

 

library
//Library关键字用于指出一个工程为类库.类库编译后生成DLL文件, 可被其他程序调用.
library Editors;
uses EdInit, EdInOut, EdFormat, EdPrint;
exports
  InitEditors,
  doneEditors name done,
  InsertText name Insert,
  DeleteSelection name Delete,
  FormatSelection,
  PrintSelection name Print,
  SetErrorHandler;
begin
  InitLibrary;
end.

 

message
//Message关键字用于声明消息方法, 
//带有Message的方法必须指出接收的消息类型, 并通过引用将消息传入方法中, 以便进行处理.
procedure Refresh(var Msg: TMessageRecordtype); message ID_REFRESH;

procedure Refresh(var Msg: TMessageRecordtype);
begin
  if Chr(Msg.Code) = #13 then
    ...
  else
    inherited;
end;

//用户可以自定义消息, 自定义消息也能够被Message接收, 并引发事件.

 

mod
//Mod用于求两数之整数模, 即余数.用于Mod运算的两个数值必须均为整型, 其运算结果也为整型.
var
 a,b,c: Integer;
begin
 a := 20; b := 3;
 c := a mod b; {2}
end;

 

name
//Name关键字用于指出方法的别名, 
//对于一个要被外部引用的方法, 建议用Name申请方法别名, 以避免外部程序改动方法的实体内容.
//从外部引用一个方法时, 如果该方法有别名, 则必须用Name进行标识.
function MessageBox(HWnd: Integer; Text, Caption: PChar; Flags: Integer): Integer; 
  stdcall; external 'user32.dll' name 'MessageBoxA';

 

near
//Near标明了函数调用协定, 指出函数可以被本地调用.
//其他程序可以用dll的形式调用程序内的函数.它是向下兼容的.
function Add(a,b: Integer): Integer; near;

//如果这个程序被编译为Demo.exe, 并且另一个处于本地的程序需要调用这个函数, 可以使用以下语句:
function Add(a,b: Integer): Integer; stdcall; external 'Demo.exe';

 

nil
//Nil用于表示一个空指针, 或是没有实例的对象.
while Node <> nil do
begin
 ListBox1.Items.Add(Node.Text);
 Node := Node.GetNext;
end;

 

nodefault
//NoDefault关键字指出了一个属性不允许有默认值, 这通常用在继承中.
type
 TClassA = class
 private
  fValue: Integer;
 published
  property Value: Integer read fValue write fValue default 0;
 end;

 TClassB = class(TClassA)
 published
  property Value:Integer read fValue write fValue nodefault;
 end;

//由上例可知, TClassA中的Value有默认值0, 
//TClassB继承了TClassA, 所以也继承了其默认值, 在此用NoDefault去掉默认值

 

not
//Not用于取反, 它否定了原先的结果.例如:
if a > b then
//可以写成:
if not(a < b) then

//Not关键字通常用于切换Boolean型的属性
procedure Button1Click(Sender: TObject);
begin
 StatusBar1.Visible := not StatusBar1.Visible;
end;

 

object
//Object用于声明一个对象, 这个对象可以是任意的, 并且向下兼容.Object只能被Object所继承.
//声明对象的方法与声明类的方法是相同的.
type
 ODemoA = object
 end;

 ODemoB = object(ODemoA)
 end;

//Object关键字还用于声明动态函数或过程, 例如:
type
 TMyFun = function(i: Integer): Integer of Object;
 TMyProc = procedure(s: string) of object;

//经过object声明的函数或过程可以被动态的绑定到指定的函数体, 或是绑定到控件是事件中.

 

of
//Of关键用于和其他关键字构成指定的结构.Of可以与Case, Class, Array, File, Set, Object连用.

//Case语句:
case Tag Of
 0: Result := 'a';
 1: Result := 'b';
end;

//Class语句:
type
 TDemo = class of TComponent;

//Array结构:
var
 MyInt: array of Integer;

//File结构:
var
 MyFile: file of Byte;

//Set语句:
type
 TCol = (cA,cB,cC);
 TCols = set of TCol;

//Object结构:
type
 MyFun = function(I: Integer): Integer of Object;

 

on
//On关键字用于异常处理, 指出发生的异常, 并获取异常信息.
try
 i := StrToInt(s);
except
 on E: exception do
  ShowMessage(E.Message);
end;

 

or
//一、表示逻辑或
if (a>0) or (b>0) then

//二、表示位运算
var
  a,b,c: Integer;
begin
  c := (a or b);
end;

//使用Or表示逻辑时, Or左右的表达式必须用小括号括起, 以避免以生条件的冲突
//如果在条件语句中使用 Or, 则编辑器不知道用户使用Or做什么
例如:
if a>0 or b>0 then
//编译器可能会理解为:
if a>(0 or b)>0 then
//或者
if (a>0) or (b>0) then
//但是实际编译时, 编译器会产生一个冲突, 报告错误
//并且第一种可能包含了a>b>c的形式, 这在Delphi中不被支持
//所以使用Or运算符时必须使用括号, 以区分左右的条件.
//表示位运算时也必须加上括号, 将Or以及左右参数括起.

 

out
//Out关键字说明了方法参数的输出方式, 一般的函数只能有一个返回值, 
//使用Out可以在一个函数中返回多个结果.
//Out和var不同, Out是以返回值的形式进行参数返回, 而var是直接输入一个参数的地址.
procedure X(out i: Integer; out s: string);
begin
 i := i * 2;
 s := s + 'abc';
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 i: Integer;
 s: string;
begin
 i := 20;
 s := 'xxx';
 X(i,s);
end;

 

overload
//Overload关键字指出了用于重载的方法, 重载即方法名相同, 
//但是参数数量, 类型或顺序不同, 满足此条件的构成重载.
function X(i: Integer): string; overload;
function X(s: string): string; overload;

//从父类继承时, 如果子类拥有和父类相同的方法, 则也必须用overload构成重载, 
//但是此类重载也必须满足重载的要求.
type
 TDemo = class(TComponent)
 public
  procedure CreateWnd(AOwner: TWinControl); overload;
 end;

//如上例, 子类拥有的方法为:
procedure CreateWnd; {继承自父类}
procedure CreateWnd(AOwner: TWinControl); {子类声明}
//共两个CreateWnd方法.

//如果不使用重载, 则在子类中可以覆盖父类的方法.

 

override
//Override用于覆盖一个Virtual或是Dynamic形式的方法.
//覆盖时必须沿用被覆盖方法的声明, 并且不允许修改原方法的参数和返回类型.
procedure Create(AOwner: TComponent); override;

//Override多用于继承, 用子类覆盖掉父类的方法.
type
 TClassA = class
  procedure X; virtual;
 end;

 TClassB = class(TClassA)
  procedure X; override;
 end;

//如上例, 子类拥有的方法为:
procedure X; {从父类覆盖}
//父类拥有的方法为:
procedure X; {父类自身方法, 未被覆盖}

//如果父类的方法未用Virtual或Dynamic声明, 
//或是有修改参数的需要, 则必须用Reintroduce关键字进行覆盖.

 

package
//Package关键字用于指出一个工程为控件库.
//控件库编译后生成BPL文件, 可被安装到Delphi的控件库中, 从而在以后的开发中使用控件.
package DATAX;
  requires
    rtl,
    clx;
  contains
    MyUnit in 'C:\MyProject\MyUnit.pas';
end.

 

packed
//Packed关键字用于对结构体记录或数组进行打包, 打包后被打包对象的体积能显著减小.
type
 TPerson = packed Record
  PName: string[32];
  PAge: Integer;
 end;
 MyArray: packed array of PChar;

 

pascal
//Pascal标明了函数调用协定, 
//指出函数在调用时遵循Pascal原因, 即先对所有的变量进行初始化, 
//避免因异步线程调用而产生的错误.它是向下兼容的.
function X(i: Integer): Integer; Pascal;
begin
 Result := i * 2;
end;

 

private
//Private标明了类内元素的访问区分权限, 被Private区分的元素只能被本类内部访问.

 

procedure
//Procedure用于声明过程
procedure X(i: Integer);

//它也可以用于动态函数的声明
type
 TProc = procedure(i: Integer) of object;

//动态声明时, 不需要指出过程名, 只需要指出参数就可以, 具体的过程名可以在后期绑定.

 

program
//Program关键字用于指出一个工程为应用程序.控件库编译后生成exe文件, 可以直接执行
program Project1;
uses
  Forms,
  Unit1 in 'Unit1.pas' ;
{$R *.res}
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

 

property
//Property关键字用于声明属性, 属性分为显式属性和隐式属性两种, 
//只有声明在published访问区分符下的属性才是显式属性, 可以直接在对象查看器中查看.
type
 TDemo = class
 Private
  fValue: Integr;
 Published
  property Value: Integer read fValue write fValue;
 end;

//事件也是属性的一种, 可以在published区分符下用Property进行声明
type
 TOnTextChange=procedure (Sender: TObject) of object;
 TDemo = class
 private
  fEvent: TOnTexChange;
 published
  property OntextChange: TOnTextChange read fEvent write fEvent;
 end;

 

protected
//Protected标明了类内元素的访问区分权限, 被Protected区分的元素只能被本类内部和其子类访问.

 

public
//Public标明了类内元素的访问区分权限, 被Public区分的元素能够被类内和类外任何对象访问.

 

published
//Published标明了类内元素的访问区分权限.
//被Published区分的元素能够被类内和类外任何RTTI对象访问
//只在声明在Published区分符下的属性才能够成为显式属性并在对象查看器中显示.

 

raise
//Raise语句用于抛出异常, 
//如果希望通过外部程序处理异常, 或是在异常发生时重新将异常抛出, 可以使用Raise语句.
function GetString(i: Integer): string;
begin
 if i < 0 then
  raise exception.Create('Integer Cannot smaller than 0');
 Result := IntToStr(i);
end;

//在异常处理中, 可以重新抛出异常
try
 i := StrToInt(s);
except
 on E: exception do
  raise exception.Create(E.Message);
end;

 

read
//Read用于标识属性中读取所使用的成员或方法.
private
 fValue: Integer;
published
 property Value: Integer read fValue;

//上例中即表明Value属性的值从fValue成员上读取.

 

readonly
//ReadOnly关键字用于标识一个对象是否只读.
property ReadOnly;

//当ReadOnly设为True时, 不允许用户手动修改属性, 只能通过其他对象来操作.

 

record
//Record关键字用于声明一个结构体记录, 
//一个结构体可以视为一个不需要实例化的对象, 拥有自己的成员.
type
 TPerson = record
  PName: string[32];
  PAge: Integer;
 end;

 

register
//Register标明了函数调用协定, 指出函数在被调用时可以在注册表内留下记录.它是向下兼容的.
function Add(a,b: Integer): Integer; Register; Register

//关键字还用于向控件库或是IDE注册控件或是专家工具.
procedure Register;
begin
 RegisterComponents('Sample', [TDemo]);
end;

 

reintroduce
//Reintroduce用于重新发布方法, 通常用于继承时, 
//如果要覆盖的方法是静态方法, 或是需要修改方法的参数等, 必须用Reintroduce进行重发布.
//对于Virtual或Dynamic方法, 可以直接用Override进行覆盖.
type
 TClassA = class
  procedure X;
 end;
 TClassB = class(TClassA)
  procedure X; reintroduce;
 end;
 TClassC = class(TClassB)
  procedure X(i: Integer); reintroduce;
 end;

 

repeat
//repeat关键字用于引出repeat循环结构, 
//该循环必须先执行一次循环体, 然后再对循环条件进行判断.repeat必须与Until关键字联合使用.
i := 0;
repeat
 sum := sum + i;
 Inc(i);
until(i >= 100);

 

requires
//Requires关键字指出了编译Package时的必备条件.若Requires的条件未满足, 则不允许编译包.
package DATAX;
  requires
    rtl,
    clx;
end.

 

resourcestring
//ResourceString用于声明资源字符串, 资源字符串可以在被声明的结构内使用.
ResourceString
 CreateError = 'Cannot create file %s';
 OpenError = 'Cannot open file %s';
 LineTooLong = 'Line too long';
 ProductName = 'Borland Rocks';
 SomeResourceString = SomeTrueConstant;

 

safecall
//Safecall是函数调用协定的一种, 它规定了被COM调用的函数所必须遵守和规则.
//在编译时, Safecall声明的函数被编译成COM接口兼容的.
procedure X(s: WideString); safecall;

//在编译后成为:
procedure X(s: PAnsiString);

 

set
//Set关键字用于声明集合类, 集合类允许用集合运算符, 如in等进行操作.
type
 TCol = (cA,cB,cC);
 TCols = set of TCol;

//操作时允许使用加减符号来添加或删除某个集合元素
var
 Cols: Tcols;
begin
 Cols := Cols + [cA,cB];
end;

 

shl
//SHL表示向左移位, 左移的位数即乘以2的幂数
var
 x: Integer;
begin
 X := 2 shl 3; {16}
end;

 

shr
//SHR表示向右移位, 右移的位数即除以2的幂数
var
 x: Integer;
begin
 X := 16 shr 2; {4}
end;

 

stdcall
//Stdcall是函数调用协定的一种, 它规定了能让程序调用的函数所应遵守的规则.
//Stdcall关键字必须在主调方和被调方之间形成配对.

//例如, 被调方函数:
Library Demo;
function X(i: Integer): Integer; stdcall;
begin
 Result := i * 2;
end;
exports
 X;
begin
end.

//主调方函数:
function X(i: Integer): Integer; stdcall; external 'Demo.dll';

//同时需要注意, 使用Stdcall关键字时, 被调函数是大小写敏感的, 此处极容易出错.

 

stored
//Stored用于指出一个属性的值是否能被保留, 若指定了True, 则允许对属性值进行赋值撤销的操作.
property Value: string read fValue write fValue stored True;

 

string
//String是一个数据类型, 它代表了字符串.
var
 Str: string;

 

then
//Then关键字用于If语句中, 当If条件成立时, 执行Then后的语句.
var
 a,b: Integer;
begin
 if a > b then
  WriteLn('a')
 else
  WriteLn('b');
end;

 

threadvar
//Threadvar标识了一个随线程启动而创建的变量, 
//如果用Threadvar声明变量, 则在程序结束前必须手动释放其占用的空间.
threadvar S: AnsiString;
S := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
S := '';

//S := ''; 即释放变量S所占用的内存.

 

to
//To关键字用于For语句, 指明循环变量是递增的.
for i := 10 to 100 do
 ListBox1.Items.Add(IntToStr(i));

//在For语句中, 循环变量递增用To关键字, 递减用DownTo关键字.

 

try
//try语句用于异常处理, 对于有可能发生异常的语句, 可以放在try结构下, 以便对其进行异常保护.
try
 i := StrToInt(s);
except
 ShowMessage('Error');
end;

 

type
//Type关键字用于声明各种对象, 用Type关键字声明的对象, 在传递时按引用传递.
type
 TDemo = class
 end;

//type也用来声明枚举类型或是按引用传递的变量.
type
 TCol = (cA,cB,cC);
 TInt = Integer;

 

unit
//Unit标识了单元的开头, 单元的基本结构为 Unit...Interface...implementation...end.
Unit Unit1;
Interface
 uses Classes;
implementation
end.

//一个完整的单元必须拥有Unit作为开头.

 

until
//Until关键字用于判断repeat循环结构的循环条件, 
//如果循环条件为真, 则退出循环.Until必须与repeat关键字联合使用.
i := 0;
repeat
 sum := sum + i;
 Inc(i);
until(i >= 100);

 

uses
//Uses用于引用一个外部的单元, 并且能够使用该单元中的公共部分.
//Uses语句通常放在一个单元的接口或是实现部分.
Interface
 uses Classes;
Implemention
 uses frmAbout;

 

var
//var关键字用于声明一个变量或是对象, 用var声明的变量接值传递.
var
 i: Integer;
 s: string;

//var也可以用于标识按引用传递的方法参数
function X(var i: Integer): Integer;

//上述函数中的参数i即按引用传递, 它的值可以在函数执行时被改变, 并返回主调函数.

 

varargs
//varArgs标识了引用参数, 它必须和Cdecl关键字联用, 表明允许调用的函数使用引用传递.
function printf(Format: PChar): Integer; cdecl; varargs;

//上述代码从C++的类库中引用了Printf函数, 并允许按引用的方式传入参数.
分享到:
评论

相关推荐

    DELPHI关键字详解.doc

    DELPHI关键字详解 在Delphi编程语言中,关键字是具有特殊含义的保留标识符,它们在程序中扮演着至关重要的角色。以下是一些Delphi的关键字及其详细解释: 1. **absolute** `absolute` 关键字允许你声明一个变量,...

    Delphi 关键字详解

    以下是对Delphi关键字的详细解释。 1. **单位(Unit)**:单位是Delphi中的模块化结构,它包含类型定义、常量、变量、函数和过程的声明。通过引入单位,你可以将代码组织成可重用的部分。 2. **程序(Program)**...

    Delphi常用关键字用法详解

    在Delphi编程语言中,关键字是具有特殊含义的保留词汇,它们在代码中扮演着至关重要的角色。本文将深入解析Delphi中的常用关键字及其用法。 首先,`absolute`关键字用于指定两个变量在内存中的位置是相同的,这意味...

    C++ 中try finally关键字详解

    try-finally语句是Microsoft对C和C++语言的扩展,它能使32位的目标程序在异常出现时,有效保证一些资源能够被及时清除,这些资源的清除任务可以包括例如内存的释放,文件的关闭,文件句柄的释放等等。...

    Delphi代码规范详解

    《Delphi代码规范详解》是一份详尽的指导文档,旨在规范Delphi编程中的编码标准,以提升代码的可读性和一致性。以下是这份文档的主要内容概览: 2. 一般源代码格式规范: - **缩进**:推荐每个缩进使用2个空格,...

    delphi 函数详解及应用

    ### Delphi 函数详解及应用 #### 一、概述 Delphi 是一款强大的集成开发环境 (IDE),主要用于 Windows 操作系统的应用程序开发。它基于 Object Pascal 语言,支持快速的应用程序开发 (RAD) 和可视化设计。Delphi ...

    Delphi单元文件详解

    ### Delphi单元文件详解 在Delphi编程语言中,单元文件是构成应用程序的基本构建块,它们不仅封装了代码,还管理着数据类型、接口、实现细节以及初始化与终结化过程。下面将深入解析Delphi单元文件的各个组成部分,...

    Delphi ocx,dll实现详解

    这可以通过在工程文件中添加`exports`关键字并列出函数名称来完成。函数定义通常放在单独的单元文件中。调试DLL时,由于DLL本身无法独立运行,需要将其加载到一个宿主应用程序中进行测试,这可以通过设置Delphi的...

    vb2delphi Migration Kit v0.50

    4. **maps**目录:这个目录下的文件包含了VB关键字和Delphi关键字的映射表,是工具进行语义转换的基础。开发者可以根据自身需求调整这些映射,以实现更精确的转换效果。 5. **samples**目录:包含了一些示例VB项目...

    Delphi IDE 主题风格

    **Delphi IDE 主题风格详解** Delphi IDE(集成开发环境)是Embarcadero公司推出的面向对象的 Pascal 编程工具,它以其高效的代码编写和编译能力深受开发者喜爱。Delphi IDE 提供了一个丰富的开发环境,允许程序员...

    Delphi控件ListView的属性及使用方法详解

    2. Items属性:Items属性是ListView的核心,用于管理显示的数据项。你可以通过Items属性编辑器添加、编辑或删除数据项。每个数据项都有自己的属性,如文本、图像索引等。数据项的子项可以通过NewSubItem按钮添加,这...

    Delphi语法基础

    ### Delphi语法基础详解 #### 一、注释 在Delphi编程中,注释是非常重要的组成部分,它有助于代码的可读性和维护性。Delphi支持三种不同类型的注释: 1. **大括号注释**:使用 `{}` 或 `(* *)` 的形式。这种注释...

    delphi截图单元源码

    《Delphi截图单元源码详解》 在编程领域,Delphi是一种基于Object Pascal语言的集成开发环境,以其高效、简洁的语法和丰富的组件库而深受开发者喜爱。在Delphi中进行截图操作是常见的需求,特别是在开发图形用户...

    图书管理系统源代码delphi

    2. 图书查询:用户可以通过关键字搜索,按照作者、出版社等条件进行筛选。Delphi中的TDBGrid控件可以展示查询结果,用户可直观查看和选择。 3. 借阅与归还:系统需跟踪图书的借阅状态,记录借阅人信息,设定借阅...

    delphi 计算器

    **Delphi 计算器详解** Delphi 是一款强大的面向对象的编程环境,以其高效的编译器和直观的集成开发环境(IDE)而受到程序员的欢迎。本项目名为“Delphi 计算器”,旨在为初学者提供一个基础的计算器程序实例,涵盖...

    [delphi函数]_一个遍历所有文件夹的函数

    Delphi 遍历所有文件夹的函数详解 在 Delphi 编程中,遍历文件夹是一个非常实用的功能,特别是在与 Excel 操作结合时,可以完成对报表的数据合成和整理。下面,我们将详细剖析一个遍历所有文件夹的函数的实现。 ...

    Delphi_yufa.rar_delphi 语法

    **Delphi 语法详解** Delphi 是一种基于 Pascal 语言的集成开发环境(IDE),它以其高效的编译器和直观的可视化设计界面而受到程序员的欢迎。本篇将深入探讨 Delphi 的基本语法,这对于初学者掌握 Delphi 开发至关...

    图书管理系统源码 delphi 版

    《图书管理系统源码 Delphi 实现详解》 在IT领域,开发一款图书管理系统是一个常见的实践项目,它能够帮助我们理解数据库操作、用户界面设计以及软件工程的基本原理。本篇文章将详细解析一个基于Delphi编写的图书...

Global site tag (gtag.js) - Google Analytics