Delphi记录

news2025/1/22 19:05:11

文章目录

  • 软件安装
  • 基础
    • 参考书
    • 名词释义
    • 基本语法
    • 常用函数
      • 数学运算函数
      • 字符处理函数
      • 日期时间函数
      • 顺序类型函数
  • 操作
    • 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
  • 范例
    • 财务系统
    • 医院病案管理系统
  • 博文链接

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

软件安装

安装10.4.2版本,安装完成后,使用防火墙关闭IDE的网络连接
在这里插入图片描述

基础

参考书

在这里插入图片描述
在这里插入图片描述

名词释义

名词释义
dprdelphi project的后缀,dpr文件包含启动程序的Pascal代码,dproj文件包含XML格式配置信息。
pas代码文件的后缀
dfmvisual form文件的后缀
VCLVisual Component Library

基本语法

在这里插入图片描述
在这里插入图片描述

常用函数

数学运算函数

在这里插入图片描述

字符处理函数

在这里插入图片描述

日期时间函数

在这里插入图片描述

顺序类型函数

在这里插入图片描述

操作

IDE设置

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

下述的方法一和方法二对于Delphi10.4无效,在这里插入图片描述

通过删除startpageguide相关文件可以在delphi启动时关闭欢迎页,不过在启动之前会提示startpageguide.bpl丢失
在这里插入图片描述

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

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

在这里插入图片描述
在这里插入图片描述

安装控件

如何在Delphi中安装库?

在这里插入图片描述

安装Add-in-Exprexx

在这里插入图片描述

安装TMS FlexCel 7.1 D10.4 Sydney FS

在这里插入图片描述

安装Office Component Suite

将Source文件夹中的文件添加到Delphi104文件夹中,并在library path中添加Delphi104,之后打开Delphi104_64中的dpr工程,进行编译安装
尝试了几次,提示能安装成功,但是在palette中无法看到如下的图,
在这里插入图片描述
在网上荡了一圈,有人也出现过装组件后无法图标显示的问题,是通过清注册表中的cache后变好的;照做了一番,没有变化;于是又折腾了好一会,未果;推敲安装的版本,发现桌面delphi 10.4图标指向的是32位的版本,那么是不应该安装64位版本的,于是又接着对32位的进行编译安装,始终不成功;后来,在Delphi102文件夹中编译安装,成功显示图标了。

处理生成的exe文件

更换exe的皮肤

在这里插入图片描述

更改生成exe的图标

在这里插入图片描述

让生成的exe支持WIN XP

在这里插入图片描述

文件操作

文本文件/二进制文件读写

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

在这里插入图片描述

控件操作

使用状态栏

注意,可以在设置状态栏panel[i]文本的同时,设置宽度;该属性可以动态设置。
在这里插入图片描述

You cannot delete a TclxCustomDockSite in floating mode

在这里插入图片描述

辅助软件使用

使用C2Delphi,将C转换为delphi

对于语法不同熟悉,但对C比较了解,就使用该软件进行语法转换,可以比较快的上手,
在这里插入图片描述

范例

财务系统

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

医院病案管理系统

该例子使用了TDateTimePicker

博文链接

Vcl.Dialogs.ShowMessage
Delphi组件安装错误
Delphi 10.3MitovLabs VCL 控件包关于“E2225: Never-build package ‘Mitov_Runtime.dpk’ must be recompiled”的问题
Delphi 10.4 Sydney Release Notes
Delphi10.2 DPR文件
Delphi10.2 VCL Forms Application 的构成
设定Delphi环境选项

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/40495.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java#数据结构----1

目录 一.栈和队列 栈 队列 二.数组和链表 数组 链表 一.栈和队列 栈 栈的特点:后进先出,先进后出 数据进入栈模型的过程称为:压/进栈 数据离开栈模型的过程称为:弹/出栈 队列 队列的特点:先进先出,后进后出 数据从后端进入队列的过程称为: 入队列 数据从前端离开队列的过…

iptables学习

iptables不算是一个真正的防火墙,它是一个配置Linux内核防火墙的命令行工具。将用户的安全设置同步到对应的安全框架–Netfilter。netfilter位于内核空间,iptables位于用户空间。 iptables用于ipv4,ip6tables用于IPv6。 netfilter/ptables 一…

python tkinter 的使用 — 桌面应用程序开发

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 又到了学Python时刻~ Tkinter模块(“Tk 接口”)是Python的标准Tk GUI工具包的接口. Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macintosh系统里. Tk8.0的后续版本可以通过ttk实现本地窗口风格…

新电脑Mac安装前端环境,未完待续~

电脑:MacBook Pro (15-inch, 2017) 版本接近可以用迁移助理 太久远就只能新电脑环境重装了, 微信小程序,支付宝小程序,安卓,IOS 无非这几种 以下就是一名前端小程序开发人员环境配置步骤 仅供参考 新电脑安装 1.下载常…

【iOS】UICollectionView的基本使用

UICollectionView是与UITableView相似的控件,不过它的布局更加自由。 与UITableView的不同 tableViewcollectionView初始化需要指定布局style。需要指定一个布局类。子视图布局一行代表一个cell,布局只需要考虑行高。无视行列限制,一个item…

如何在 WSL 下实现 NGINX 反向代理

WSL 是 Windows 自带的 Linux 子系统。它比传统的虚机启动更快,占用系统资源更少,非常利于我们开发基于 Linux 系统的各种应用。本文基于 Ubuntu 20 介绍如何使用 NGINX 实现反向代理功能。 什么是反向代理? 反向代理是一个可以把系统请求分…

[网络] TCP协议是什么?套接字Socket是什么?它们是什么关系?

文章目录前言TCP协议是什么?IP协议网络设备才有“门牌号”(IP地址)网卡、网卡驱动与操作系统的关系操作系统进程与TCP协议操作系统进程和Socket套接字用户进程和Socket套接字用户进程如何消费Socket套接字文件里的数据?TCP协议与S…

呼吸系统药物--平喘药

急性哮喘和慢性哮喘 支气管哮喘属于慢性病。 急性哮喘指支气管哮喘的急性发作,一般在凌晨4点~7点间发作,伴有咳嗽、咳痰、胸闷、气喘和哮鸣音。(用短效、能快速起效的药物治疗,沙丁胺醇喷雾剂(β2受体激动药&#xf…

学习JavaScript进阶

JavaScript进阶 循环语句 for循环 // 类似python中的for i in range(20)for(let i0; i<20; i){console.log(i) }while循环 const MAX_TIMES 20; let cur 0 while (cur < MAX_TIMES){cur;console.log(cur) }do while do {cur ;console.log(cur); }while (cur < MAX_…

【前端开发】CSS BEM命名规范

目录1、BEM2、实战BlockElementModifier3、总结1、BEM BEM其实是块&#xff08;block&#xff09;、元素&#xff08;element&#xff09;、修饰符&#xff08;modifier&#xff09;的缩写&#xff0c;利用不同的区块&#xff0c;功能以及样式来给元素命名。 通过bem规范来命名…

2. Composition API

Composition API 1.Composition API 接下来我们来介绍一下Vue3中新增的Composition API如何使用。注意Composition API仅仅是Vue3中新增的API&#xff0c;我们依然可以使用Options API。先来实现一下之前演示的获取鼠标位置的案例。做这个案例之前&#xff0c;需要先介绍一下…

Java项目:洗浴中心管理系统(java+SSM+JSP+jQuery+javascript+Mysql)

源码获取&#xff1a;俺的博客首页 "资源" 里下载&#xff01; 项目介绍 本项目分为前后台&#xff0c;包含普通用户与管理员两种角色&#xff1b; 管理员角色包含以下功能&#xff1a; 管理员登录,管理员信息管理,查看用户信息,新闻公告管理,产品类型管理,级别信息…

物联网开发笔记(53)- 使用Micropython开发ESP32开发板之蓝牙BLE通信

一、目的 这一节我们学习如何使用我们的ESP32开发板通过蓝牙和手机进行通信。 二、环境 ESP32 手机&#xff08;笔者用的小米10&#xff09; Thonny IDE 三、蓝牙介绍 这个知识大家自行百度吧&#xff0c;这里不再赘述什么是蓝牙和蓝牙的历史&#xff0c;以及相关的专业知识…

JS(第二十六)ES6语法中function

JS(第九课)深刻的去理解函数._星辰镜的博客-CSDN博客 1 Function函数的定义 方式1 函数声明方式 function 关键字 (命名函数) function fn(){} 方式2 函数表达式(匿名函数) var fn function(){} 方式3 new Function() var f new Function(a, b, console.log(a b)); f(1, …

Tomcat服务器和Web开发介绍

Tomcat服务器和Web开发介绍 一、开启Web开发 什么是web开发 WEB&#xff0c;即网页的意思&#xff0c;它用于表示Internet主机上供外界访问的资源。 Internet上供外界访问的Web资源分为&#xff1a; 静态web资源&#xff08;如html 页面&#xff09;&#xff1a;指web页面中供…

数据挖掘期末复习

考点目录 文章目录考点目录复习准备1. 数据挖掘的标准流程2. 数据挖掘的主要功能3. 数据探索的主要内容及其意义数据质量分析1.异常值分析2.缺失值分析数据特征分析1.分布分析6.相关性分析4. 数据预处理的作用及其主要任务5. 常见的噪声处理方法6.常用的缺失值处理方法7. 常用的…

Map和Set的详解

Map和Set是一种专门用来搜素的容器或者数据结构&#xff0c;其搜索的效率与其具体的实例化子类有关&#xff0c;是一种适合动态查找的集合容器 一、模型 一般把搜索的数据称为关键字&#xff08;Key&#xff09;&#xff0c;和关键字对应的称为值&#xff08;Value&#xff09;…

Teams Tab App 的 manifest 分析

上一篇文章我们深入来分析了 tab app 的代码&#xff0c;这篇文章我们研究一下 manifest。 Teams 的 manifest 实际上是一个很复杂的 json&#xff0c;里面的配置非常多&#xff0c;之前的文章陆陆续续的讲过一些配置&#xff0c;我们在这篇文章里来看看关于 tabs 的一些配置&…

链表之删除单链表中的重复节点

文章目录删除单链表中的重复节点题目描述解题思路代码实现删除单链表中的重复节点 力扣链接 题目描述 编写代码&#xff0c;移除未排序链表中的重复节点。保留最开始出现的节点。 示例1:输入&#xff1a;[1, 2, 3, 3, 2, 1]输出&#xff1a;[1, 2, 3]示例2:输入&#xff1a;…

WEB网站安全检测系统设计与实现

目 录 1 引言 1 2 Web服务器所受的威胁及防御 1 2.1 缓冲区溢出 1 2.2 SQL注入攻击 1 2.3 基于脚本的DDos攻击 2 2.4 其他的不安全因素 3 3 Web的木马检测系统的设计 4 3.1 体系结构 4 3.2 处理流程 5 3.3 对客户端访问的响应 7 3.4 策略引擎的设计 8 3.4.1 策略的属性 8 3.4.2…