今天整理老磁盘,突然翻出大学用过的Pascal安装包。想起当年被Turbo Pascal支配的日子,突然手痒想试试现在还用不用得转这老古董。结果刚折腾就踩了一堆坑,顺手把踩坑经验记下来。
从装环境就开始头大
翻箱倒柜找到的安装包居然在Win10上报错。跑去官网下新版Free Pascal,下载页满屏的Linux命令看得眼晕。硬着头皮选了个Windows安装包,解压完发现压根没图形界面!纯黑乎乎的终端窗口,瞬间梦回DOS年代。

- 先拿记事本写了个hello world
- 存成.pas文件放D盘根目录
- 开cmd输fpc d:\* 敲回车
- 屏幕哗刷了几十行字
- 跳出来个"目标文件生成成功"
结果双击生成的exe文件闪退得比兔子还快。查半天发现要在代码末尾加readln卡住命令行,就为等我看清输出,这点破事折腾半小时。
被快捷键逼疯
当年Turbo Pascal按F2秒存盘,现在用VSCode改Pascal压根没预设快捷键。装了个Pascal插件还是得手动保存。气得我直接改键位配置:

- Ctrl+S绑定成保存+编译
- Ctrl+F5绑定成编译+运行
- Alt+4直接打开调试控制台
改完发现调试器根本断不住点。原来Free Pascal默认生成的是release版程序,得在编译参数里塞个-g才有调试信息。改配置时手抖多打了个空格,又报错折腾二十分钟。
古董语法新用法
写循环时顺手打了for i:=0 to 10 do,光标悬停居然提示"可优化为downto"。原来编译器会检测循环变量实际使用情况。这老古董居然带智能提示?试着在循环里写if i mod 2 = 0,它还真把步长识别成2了。
更意外的是字符串操作。本来准备手动拼路径,写strCat(strCat(projectPath,'/build/'),filename)时编译器直接报黄线。建议改成projectPath+'/build/'+filename,这语法糖吃得我猝不及防。
命令行救老命
每次改个小标点都要重新编译实在受不了。查到可以加-B参数增量编译,试了下果然快很多。后来直接在VSCode任务里配置好参数:
- 日常调试用-fPIC -g -B
- 最终发布加-O3 -Xs
- 64位程序指定-Px86_64
有次手贱点错编译成32位版本,跑起来各种内存溢出。后来学会在代码首行加{$mode objfpc}{$H+}{$J-}三件套,直接锁死安全和兼容模式。
最意外的收获
同事看我折腾Pascal笑抽了,说这玩意早该进博物馆。结果昨天他们项目要处理百万级文本文件,Java读进去就OOM,C++写得又太慢。我把三十年前的Pascal代码翻出来魔改:
- 文件变量用assign绑定
- 塞进blockread整块读取
- 手动调getmem分配内存
三百行代码两天写完,跑起来比他们优化半月的程序还快20%。那帮人围着我的命令行窗口喊666的时候,突然觉得这老伙计还能再战十年。
