413 lines
9.5 KiB
Markdown
413 lines
9.5 KiB
Markdown
# Delphi 11 Alexandria 升级指南
|
|
|
|
## 一、升级概述
|
|
|
|
### 1.1 当前项目状态
|
|
- **项目名称**: MainWin
|
|
- **当前IDE版本**: ~Delphi 10.4/10.5 (ProjectVersion 19.5)
|
|
- **目标IDE版本**: Delphi 11 Alexandria (Version 28.0.48361.3236)
|
|
- **框架类型**: FireMonkey (FMX)
|
|
- **目标平台**: Win64 (主要), Win32
|
|
|
|
### 1.2 升级目标
|
|
- 迁移到最新IDE版本
|
|
- 获得更好的性能和稳定性
|
|
- 利用新特性和改进
|
|
- 为未来升级到Delphi 12做好准备
|
|
|
|
## 二、升级前的准备工作
|
|
|
|
### 2.1 系统要求检查
|
|
|
|
**Delphi 11 Alexandria 系统要求**:
|
|
- **操作系统**: Windows 10 (64-bit) 或 Windows 11 (64-bit)
|
|
- **处理器**: Intel Core i5 或更高
|
|
- **内存**: 至少 16GB RAM (推荐 32GB)
|
|
- **磁盘空间**: 至少 30GB 可用空间
|
|
- **显示器**: 1920x1080 或更高分辨率
|
|
|
|
### 2.2 备份项目
|
|
|
|
**必须备份的内容**:
|
|
1. 整个项目源代码目录
|
|
2. 第三方组件库
|
|
3. 项目配置文件
|
|
4. 编译输出设置
|
|
|
|
**备份命令**:
|
|
```powershell
|
|
# 备份整个项目
|
|
Copy-Item -Path "d:\word\dyp\client-dyp" -Destination "d:\word\dyp\client-dyp_backup_$(Get-Date -Format 'yyyyMMdd')" -Recurse
|
|
```
|
|
|
|
### 2.3 收集依赖信息
|
|
|
|
**需要确认的组件**:
|
|
1. **第三方组件**:
|
|
- EhLib (数据库控件库)
|
|
- SPComm (串口通信组件 - 1997年版本)
|
|
- TeeChart/TeeUI (图表组件)
|
|
|
|
2. **Delphi内置组件包**:
|
|
- FireDAC
|
|
- RESTComponents
|
|
- Indy (网络通信)
|
|
- EMS/FireMonkey
|
|
|
|
## 三、升级步骤
|
|
|
|
### 3.1 第一阶段:准备阶段
|
|
|
|
#### 步骤1:安装 Delphi 11
|
|
|
|
1. **下载Delphi 11**:
|
|
- 访问 Embarcadero 官网
|
|
- 下载 Delphi 11 Alexandria Community Edition 或更高版本
|
|
- 或使用现有的 Delphi 11 许可证
|
|
|
|
2. **安装选项**:
|
|
```
|
|
☑ Delphi 11 Alexandria
|
|
☑ FireMonkey IDE
|
|
☑ FMX Linux SDK
|
|
☑ Windows Platform SDK
|
|
☑ Android SDK
|
|
☑ iOS SDK
|
|
```
|
|
|
|
3. **安装位置**:
|
|
- 建议安装到: `C:\Program Files\Embarcadero\Studio\22.0`
|
|
- 或现有 Delphi 11 安装目录
|
|
|
|
#### 步骤2:检查第三方组件
|
|
|
|
1. **确认组件版本**:
|
|
- EhLib: 需要 Delphi 11 兼容版本 (EhLib 12.0+)
|
|
- SPComm: 检查是否有更新版本
|
|
- TeeChart: 需要 Delphi 11 兼容版本
|
|
|
|
2. **更新组件**:
|
|
- 下载最新版本的第三方组件
|
|
- 为 Delphi 11 重新安装组件包
|
|
|
|
### 3.2 第二阶段:项目迁移
|
|
|
|
#### 步骤3:打开项目
|
|
|
|
1. **启动 Delphi 11**
|
|
2. **打开项目文件**:
|
|
- File → Open Project
|
|
- 选择 `MainWin.dproj` 文件
|
|
3. **IDE会自动检测到旧版本项目**
|
|
4. **点击 "Upgrade" 按钮**
|
|
|
|
#### 步骤4:处理升级向导
|
|
|
|
Delphi 11 会自动处理以下内容:
|
|
- 项目版本号更新
|
|
- 平台配置迁移
|
|
- 编译器选项更新
|
|
- 必要的文件格式转换
|
|
|
|
#### 步骤5:更新项目文件
|
|
|
|
**ProjectVersion 映射**:
|
|
| 旧版本 (ProjectVersion) | 新版本 |
|
|
|------------------------|--------|
|
|
| 19.5 | 22.0 (Delphi 11) |
|
|
|
|
**需要手动更新的配置**:
|
|
1. **平台SDK版本**:
|
|
- 更新 Windows SDK 到最新版本
|
|
- 更新 Android SDK 版本
|
|
|
|
2. **编译器选项**:
|
|
- 检查并优化编译器设置
|
|
- 更新优化级别
|
|
|
|
### 3.3 第三阶段:代码适配
|
|
|
|
#### 步骤6:处理编译器警告和错误
|
|
|
|
**常见升级问题及解决方案**:
|
|
|
|
1. **单元引用问题**:
|
|
```delphi
|
|
// 如果遇到单元找不到的错误,检查并更新uses子句
|
|
uses
|
|
System.SysUtils,
|
|
System.JSON, // Delphi 10.4+ 中移动到 System.JSON
|
|
// ...
|
|
```
|
|
|
|
2. **FMX类型变更**:
|
|
```delphi
|
|
// 某些FMX控件属性可能有变化
|
|
// 检查 FormStyle vs FormFactor
|
|
```
|
|
|
|
3. **FireDAC变更**:
|
|
```delphi
|
|
// 检查 FireDAC 连接配置
|
|
// 更新 TFDConnection 参数
|
|
```
|
|
|
|
4. **RESTClient变更**:
|
|
```delphi
|
|
// Delphi 11 中 RESTClient 有改进
|
|
// 检查并更新网络请求代码
|
|
```
|
|
|
|
#### 步骤7:处理第三方组件
|
|
|
|
1. **重新安装组件**:
|
|
- 打开 Delphi 11 的组件安装包
|
|
- 重新编译并安装所有第三方组件
|
|
|
|
2. **更新组件引用**:
|
|
- 重新配置 Search Path
|
|
- 更新 Library Path
|
|
- 更新 Browsing Path
|
|
|
|
3. **处理兼容性问题**:
|
|
- 如果组件不兼容,查找替代方案
|
|
- 或等待组件更新
|
|
|
|
### 3.4 第四阶段:测试验证
|
|
|
|
#### 步骤8:编译项目
|
|
|
|
1. **清理项目**:
|
|
```
|
|
Project → Clean
|
|
```
|
|
|
|
2. **重新编译**:
|
|
```
|
|
Project → Compile (Ctrl + F9)
|
|
```
|
|
|
|
3. **处理编译错误**:
|
|
- 逐一处理所有编译错误
|
|
- 记录需要修改的代码
|
|
|
|
#### 步骤9:运行测试
|
|
|
|
1. **基础功能测试**:
|
|
- 启动应用程序
|
|
- 检查主界面加载
|
|
- 测试基本操作
|
|
|
|
2. **核心功能测试**:
|
|
- 测试数据库连接
|
|
- 测试网络通信
|
|
- 测试PLC通信
|
|
- 测试串口通信
|
|
|
|
3. **特定功能测试**:
|
|
- 物料追踪功能
|
|
- 工单管理功能
|
|
- 报工功能
|
|
|
|
## 四、已知问题和解决方案
|
|
|
|
### 4.1 SPComm 组件问题
|
|
|
|
**问题**: SPComm 是 1997 年的组件,可能与 Delphi 11 不兼容
|
|
|
|
**解决方案**:
|
|
1. **方案一 - 使用替代组件**:
|
|
- TComPort (第三方串口组件)
|
|
- AsyncFree (现代串口库)
|
|
|
|
2. **方案二 - 自行更新SPComm**:
|
|
- 重新编译 SPComm 源代码
|
|
- 更新 API 调用以兼容新版本 Windows
|
|
|
|
### 4.2 RESTClient 问题
|
|
|
|
**问题**: 旧版 RESTClient 代码可能需要调整
|
|
|
|
**解决方案**:
|
|
```delphi
|
|
// 旧代码可能需要更新
|
|
// Delphi 11 中更好的错误处理
|
|
try
|
|
RESTRequest.Execute;
|
|
except
|
|
on E: ERESTException do
|
|
// 处理网络错误
|
|
end;
|
|
```
|
|
|
|
### 4.3 FireDAC 问题
|
|
|
|
**问题**: 数据库连接配置可能有变化
|
|
|
|
**解决方案**:
|
|
```delphi
|
|
// 更新 FireDAC 连接参数
|
|
FDConnection1.Params.Text :=
|
|
'Server=192.168.5.9;' +
|
|
'Database=mydb;' +
|
|
'User_Name=sa;' +
|
|
'Password=mypassword;' +
|
|
'DriverID=SQL Server';
|
|
```
|
|
|
|
### 4.4 FMX 渲染问题
|
|
|
|
**问题**: FMX 在 Delphi 11 中可能有细微渲染差异
|
|
|
|
**解决方案**:
|
|
- 检查所有 Form 和 Frame 的布局
|
|
- 验证高DPI设置
|
|
- 测试不同分辨率下的显示效果
|
|
|
|
## 五、升级后优化
|
|
|
|
### 5.1 IDE 设置优化
|
|
|
|
1. **启用 LSP**:
|
|
```
|
|
Tools → Options → Language Server Protocol
|
|
☑ Enable Language Server Protocol
|
|
```
|
|
|
|
2. **优化代码洞察**:
|
|
```
|
|
Tools → Options → Editor Options → Code Insight
|
|
☑ Code Completion
|
|
☑ Code Parameters
|
|
☐ Background compilation (如果性能不足)
|
|
```
|
|
|
|
3. **配置多线程编译**:
|
|
```
|
|
Tools → Options → Building → Compiling
|
|
☑ Enable parallel compilation
|
|
Number of parallel jobs: (CPU核心数)
|
|
```
|
|
|
|
### 5.2 项目设置优化
|
|
|
|
1. **启用预编译头**:
|
|
```xml
|
|
<DCC_UsePackage>$(DCC_UsePackage)</DCC_UsePackage>
|
|
<DCC_Writeable常量>true</DCC_Writeable常量>
|
|
```
|
|
|
|
2. **优化DCU输出**:
|
|
```
|
|
Project → Options → Directories/Conditionals
|
|
Intermediate Output (.dcu): dcu\$(Platform)\$(Config)
|
|
```
|
|
|
|
3. **启用增量编译**:
|
|
```
|
|
Project → Options → Directories/Conditionals
|
|
☑ Link with runtime packages (如果适用)
|
|
```
|
|
|
|
### 5.3 性能优化
|
|
|
|
1. **使用SSD**: 将项目放在SSD上
|
|
2. **增加内存**: 至少16GB RAM
|
|
3. **清理缓存**: 定期清理IDE缓存
|
|
4. **禁用不需要的平台**: 只保留Win64
|
|
|
|
## 六、版本对应关系
|
|
|
|
| ProjectVersion | IDE版本 | 产品名称 |
|
|
|---------------|---------|---------|
|
|
| 19.5 | ~10.4/10.5 | Delphi 10.4/10.5 Sydney |
|
|
| 20.0 | 10.6 | Delphi 10.6 Sydney |
|
|
| 21.0 | 11.0 | Delphi 11 Alexandria |
|
|
| 22.0 | 11.3 | Delphi 11.3 Alexandria |
|
|
| 23.0 | 12.0 | Delphi 12 Athens |
|
|
|
|
**您的项目从 19.5 升级到 22.0 (Delphi 11)**:
|
|
- ProjectVersion: 19.5 → 22.0
|
|
- 需要更新项目文件中的版本号
|
|
- IDE会自动处理大部分兼容性
|
|
|
|
## 七、回滚计划
|
|
|
|
如果升级失败,按以下步骤回滚:
|
|
|
|
1. **关闭 Delphi 11**
|
|
2. **删除项目目录**
|
|
3. **从备份恢复**:
|
|
```powershell
|
|
Remove-Item -Path "d:\word\dyp\client-dyp" -Recurse -Force
|
|
Copy-Item -Path "d:\word\dyp\client-dyp_backup_YYYYMMDD" -Destination "d:\word\dyp\client-dyp" -Recurse
|
|
```
|
|
4. **继续使用原IDE**
|
|
|
|
## 八、技术支持资源
|
|
|
|
### 8.1 官方资源
|
|
- Embarcadero DocWiki: https://docwiki.embarcadero.com
|
|
- Embarcadero Quality Portal: https://quality.embarcadero.com
|
|
- Embarcadero Forums: https://en.delphi.org/forum
|
|
|
|
### 8.2 社区资源
|
|
- Delphi-PRAXIS: https://en.delphipraxis.net
|
|
- Stack Overflow: https://stackoverflow.com/questions/tagged/delphi
|
|
- Chinese Delphi Community: 中国Delphi社区
|
|
|
|
### 8.3 升级工具
|
|
- Delphi Upgrade Wizard (内置)
|
|
- Castalia (代码重构工具)
|
|
- ModelMaker (代码建模工具)
|
|
|
|
## 九、升级检查清单
|
|
|
|
### 9.1 升级前
|
|
- [ ] 确认系统要求满足
|
|
- [ ] 完整备份项目
|
|
- [ ] 记录当前IDE版本
|
|
- [ ] 确认所有第三方组件版本
|
|
- [ ] 准备回滚计划
|
|
|
|
### 9.2 升级中
|
|
- [ ] 安装 Delphi 11
|
|
- [ ] 打开项目并升级
|
|
- [ ] 重新安装第三方组件
|
|
- [ ] 解决所有编译错误
|
|
- [ ] 更新项目配置
|
|
|
|
### 9.3 升级后
|
|
- [ ] 编译成功
|
|
- [ ] 启动应用程序
|
|
- [ ] 测试核心功能
|
|
- [ ] 测试所有业务模块
|
|
- [ ] 性能测试
|
|
- [ ] 生成最终备份
|
|
|
|
## 十、总结
|
|
|
|
升级到 Delphi 11 将为您带来:
|
|
|
|
✅ **性能提升**:
|
|
- 更快的编译速度
|
|
- 更好的IDE响应
|
|
- 改进的内存管理
|
|
|
|
✅ **新特性**:
|
|
- 更好的 FMX 支持
|
|
- 改进的 REST 客户端
|
|
- 更好的 Linux 支持
|
|
- 改进的 FireDAC
|
|
|
|
✅ **未来准备**:
|
|
- 为升级到 Delphi 12 做好准备
|
|
- 支持最新 Windows 功能
|
|
- 更好的移动端支持
|
|
|
|
⚠️ **注意事项**:
|
|
- 第三方组件可能需要更新
|
|
- 可能需要调整一些代码
|
|
- 建议进行全面测试
|
|
|
|
如有任何问题,请参考本指南或寻求社区帮助! |