文章目录

  • delphi
  • 软件安装
  • 基础
  • 参考书
  • 名词释义
  • 基本语法
  • 常用函数
  • 数学运算函数
  • 字符处理函数
  • 日期时间函数
  • 顺序类型函数
  • 操作
  • 软件安装
  • delphi7的序列号
  • delphi7中使用desrch componet
  • IDE设置
  • 去掉Delphi程序启动时的welcome page(欢迎页)
  • 设置环境变量的PATH及library的path
  • 安装控件
  • 如何在Delphi中安装库?
  • 安装Add-in-Exprexx
  • 安装TMS FlexCel 7.1 D10.4 Sydney FS
  • 安装Office Component Suite
  • 处理生成的exe文件
  • 更换exe的皮肤
  • 更改生成exe的图标
  • 让生成的exe支持WIN XP
  • 文件操作
  • 文本文件/二进制文件读写
  • 写excel
  • 使用ApiMate读取excel文件后,生成相关的code
  • 控件操作
  • 使用状态栏
  • You cannot delete a TclxCustomDockSite in floating mode
  • 辅助软件使用
  • 使用C2Delphi,将C转换为delphi
  • 出现的问题
  • 安装delphi7的精简版在编译文件时报错"VCL/DCU文件校验失败"
  • delphi7安装完成后打开报错
  • delphi7打开后出现Your just-in-time debugger is currently set to
  • 范例
  • 财务系统
  • 医院病案管理系统
  • 博文链接
  • Lazarus
  • 操作
  • 将分离的窗口整合起来
  • 减小Lazarusv IDE 编译出的文件的大小


delphi

偶然看到delphi的代码,长得和VHDL有点像,耐不住好奇心,浅尝辄止,记录于此。

软件安装

安装10.4.2版本,安装完成后,使用防火墙关闭IDE的网络连接

Delphi TFDMemTable 清空 delphi 记录_Delphi

基础

参考书

Delphi TFDMemTable 清空 delphi 记录_pascal_02


Delphi TFDMemTable 清空 delphi 记录_Delphi_03

名词释义

名词

释义

dpr

delphi project的后缀,dpr文件包含启动程序的Pascal代码,dproj文件包含XML格式配置信息。

pas

代码文件的后缀

dfm

visual form文件的后缀

VCL

Visual Component Library

基本语法

Delphi TFDMemTable 清空 delphi 记录_VCL_04


Delphi TFDMemTable 清空 delphi 记录_控件_05

常用函数

数学运算函数

Delphi TFDMemTable 清空 delphi 记录_控件_06

字符处理函数

Delphi TFDMemTable 清空 delphi 记录_VCL_07

日期时间函数

Delphi TFDMemTable 清空 delphi 记录_pascal_08

顺序类型函数

Delphi TFDMemTable 清空 delphi 记录_pascal_09

操作

软件安装

delphi7的序列号

Delphi TFDMemTable 清空 delphi 记录_Delphi_10

delphi7中使用desrch componet

在工具栏上的空白处点击右键,把Componnet Seletor打上勾就好,

Delphi TFDMemTable 清空 delphi 记录_Delphi_11

IDE设置

去掉Delphi程序启动时的welcome page(欢迎页)

下述的方法一和方法二对于Delphi10.4无效,

Delphi TFDMemTable 清空 delphi 记录_控件_12

通过删除startpageguide相关文件可以在delphi启动时关闭欢迎页,不过在启动之前会提示startpageguide.bpl丢失

Delphi TFDMemTable 清空 delphi 记录_pascal_13

经试验,在下述路径中找到了对应的注册表项,删除之,在启动之前就没有再提示startpageguide.bpl丢失了

Delphi TFDMemTable 清空 delphi 记录_控件_14

设置环境变量的PATH及library的path

Delphi TFDMemTable 清空 delphi 记录_VCL_15


Delphi TFDMemTable 清空 delphi 记录_pascal_16

安装控件

如何在Delphi中安装库?

Delphi TFDMemTable 清空 delphi 记录_pascal_17

安装Add-in-Exprexx

Delphi TFDMemTable 清空 delphi 记录_VCL_18

安装TMS FlexCel 7.1 D10.4 Sydney FS

Delphi TFDMemTable 清空 delphi 记录_控件_19

安装Office Component Suite

将Source文件夹中的文件添加到Delphi104文件夹中,并在library path中添加Delphi104,之后打开Delphi104_64中的dpr工程,进行编译安装

尝试了几次,提示能安装成功,但是在palette中无法看到如下的图,

Delphi TFDMemTable 清空 delphi 记录_pascal_20


在网上荡了一圈,有人也出现过装组件后无法图标显示的问题,是通过清注册表中的cache后变好的;照做了一番,没有变化;于是又折腾了好一会,未果;推敲安装的版本,发现桌面delphi 10.4图标指向的是32位的版本,那么是不应该安装64位版本的,于是又接着对32位的进行编译安装,始终不成功;后来,在Delphi102文件夹中编译安装,成功显示图标了。

处理生成的exe文件

更换exe的皮肤

Delphi TFDMemTable 清空 delphi 记录_控件_21

更改生成exe的图标

Delphi TFDMemTable 清空 delphi 记录_控件_22

让生成的exe支持WIN XP

Delphi TFDMemTable 清空 delphi 记录_VCL_23

文件操作

文本文件/二进制文件读写
procedure TForm1.btn1Click(Sender: TObject);
var
  fid: File;
  byteArray: array [0 .. 1023] of u8_t;
  ucData: u8_t;
  i: u32_t;
  byteArray2: array [0 .. 7] of u8_t;
begin

  for i := 0 to 1023 do
  begin
    byteArray[i] := u8_t(i);
  end;

  {
    第一类测试:向一个文件中每次写入1个字节
  }
  AssignFile(fid, 'test_1.bin');
  ReWrite(fid, 1); // 每次写入的数量为1个字节的整数倍
  for i := 0 to 1023 do
  begin
    BlockWrite(fid, byteArray[i], 1);
  end;
  CloseFile(fid);

  {
    第二类测试:向一个文件中每次写入4个字节
  }
  AssignFile(fid, 'test_2.bin');
  ReWrite(fid, 4); // 每次写入的数量为4个字节的整数倍
  for i := 0 to 16 do
  begin
    BlockWrite(fid, byteArray[i * 2], 1);
    BlockWrite(fid, byteArray[i * 4], 1);
  end;
  CloseFile(fid);

  {
    第三类测试:从文件中每次读出1个字节
  }
  AssignFile(fid, 'test_1.bin');
  ReSet(fid, 1); // 每次读出的数量为1个字节的整数倍
  for i := 0 to 7 do
  begin
    BlockRead(fid, ucData, 1);
    ShowMessage(IntToStr(ucData));
  end;
  CloseFile(fid);

  {
    第四类测试:从文件中每次读出2个字节
  }
  AssignFile(fid, 'test_1.bin');
  ReSet(fid, 2); // 每次读出的数量为2个字节的整数倍
  for i := 0 to 7 do
  begin
    BlockRead(fid, byteArray2, 1);
    ShowMessage(u16_2_hexStr(u8_2_u16(byteArray2[0], byteArray2[1])));
  end;
  CloseFile(fid);
end;

procedure TForm1.btn2Click(Sender: TObject);
var
  fid: TextFile;
  text: string;
  i: u32_t;
begin
  AssignFile(fid, 'test.txt');
  ReWrite(fid);

  Write(fid, 'Hello ');
  Write(fid, 'World');
  WriteLn(fid); // WriteLn会写入换行符

  // Write some numbers to the file as a single line
  for i := 2 to 4 do
  begin
    Write(fid, i / 2, ' ');
  end;
  WriteLn(fid);

  for i := 2 to 4 do
  begin
    Write(fid, i);
  end;
  WriteLn(fid);

  for i := 2 to 4 do
  begin
    Write(fid, i / 2:5:1);
  end;
  WriteLn(fid);

  CloseFile(fid);

  // 重新打开文件,用于读取
  ReSet(fid);
  while not Eof(fid) do
  begin
    ReadLn(fid, text);
    ShowMessage(text);
  end;
  CloseFile(fid);
end;
写excel
procedure CreateExcelFile;
var
  xls: TXlsFile;
begin
  // Create a new empty Excel file, with default formatting as if it was created by Excel 2019.
  // Different Excel versions can have different formatting when they create
  // an empty file, so for example
  // Excel 2003 will have a default font of Arial, and 2019 will use Calibri.
  // This format is anyway the starting format, you can change it all later.

  xls := TXlsFile.Create(1, TExcelFileFormat.v2007, true);
  try
    xls.SetCellValue(1, 1, 'Just A Try');    //向A1中写入字符串
    xls.SetCellValue(2, 1, 7);     //注意,如果使用xls.SetCellValue(2, 1, '7'),则会输入字符串'7'
    xls.SetCellValue(3, 1, 11.3);  //Excel中的所有数字都是浮点数,所以即使你输入一个整数,它也会被存储为双精度数。
    xls.SetCellValue(4, 1, TFormula.Create('=Sum(A2:A3)')); //使用公式
    xls.Save('test.xlsx');        //保存文件
  finally
    xls.Free;
  end;
end;
使用ApiMate读取excel文件后,生成相关的code

Delphi TFDMemTable 清空 delphi 记录_Delphi_24

控件操作

使用状态栏

注意,可以在设置状态栏panel[i]文本的同时,设置宽度;该属性可以动态设置。

Delphi TFDMemTable 清空 delphi 记录_pascal_25

You cannot delete a TclxCustomDockSite in floating mode

Delphi TFDMemTable 清空 delphi 记录_pascal_26

辅助软件使用

使用C2Delphi,将C转换为delphi

对于语法不同熟悉,但对C比较了解,就使用该软件进行语法转换,可以比较快的上手,

Delphi TFDMemTable 清空 delphi 记录_VCL_27

出现的问题

安装delphi7的精简版在编译文件时报错"VCL/DCU文件校验失败"

错误提示如下,问题未解决

Delphi TFDMemTable 清空 delphi 记录_控件_28

delphi7安装完成后打开报错

Delphi TFDMemTable 清空 delphi 记录_Delphi_29

delphi7打开后出现Your just-in-time debugger is currently set to

Delphi TFDMemTable 清空 delphi 记录_pascal_30


Delphi TFDMemTable 清空 delphi 记录_VCL_31

范例

财务系统

该例子使用了TDBGrid、TComboBox、TBitBtn、TPageControl、TToolBar、TStatusBar

医院病案管理系统

该例子使用了TDateTimePicker


Lazarus

操作

将分离的窗口整合起来

找到anchordockingdsgn.lpk插件,

Delphi TFDMemTable 清空 delphi 记录_pascal_32


打开该插件,

Delphi TFDMemTable 清空 delphi 记录_控件_33


Delphi TFDMemTable 清空 delphi 记录_VCL_34

减小Lazarusv IDE 编译出的文件的大小

如何减小Lazarusv IDE v1.2.4 编译出的文件的大小

Delphi TFDMemTable 清空 delphi 记录_Delphi_35