Files
dyp/Delphi11升级指南.md
2026-05-07 20:25:34 +08:00

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 功能
- 更好的移动端支持
⚠️ **注意事项**:
- 第三方组件可能需要更新
- 可能需要调整一些代码
- 建议进行全面测试
如有任何问题,请参考本指南或寻求社区帮助!