使用Sublime Text 3构建Pascal

4
我想在Sublime Text 3中构建Free Pascal。然而,我总是遇到编码错误(如下所示)。我已经尝试使用编码保存文件,但问题依旧。
我创建了一个名为sublime-build的文件:
{
    "cmd":["fpc $file & ${file_path}/${file_base_name}.exe"],
    "shell" : true,
}

我的测试程序是一个简单的hello world:

Program HelloWorld;
begin
  writeln("Hello, world!");
  readln;
end.

我的错误代码:

[Decode error - output not utf-8]
[Finished in 0.0s with exit code 1]
[cmd: ['fpc C:\\Users\\korndi\\Documents\\FREI\\hellop.p & C:\\Users\\korndi\\Documents\\FREI/hellop.exe']]
[dir: C:\Users\korndi\Documents\FREI]
[path: C:\Python33\;;C:\FPC\2.6.2\bin\i386-Win32]

Pascal对双引号的处理很奇怪。也许Sublime检测到FPC使用-A函数进行输出,因此假定输出是ASCII码。但在Windows控制台中输出UTF-8并不正常。可能需要对Sublime进行一些调整。总的来说:还是使用Lazarus吧 :-) - Marco van de Voort
3个回答

4

这对我有用。
CtrlB将构建您的文件。
CtrlShiftB将运行它(在外部cmd中!!,太棒了!

{
    "cmd": ["fpc", "${file_path}/${file_base_name}"],
    "selector": "source.pascal",
    "variants": [
        {
            "cmd": ["start", "cmd", "/c", "$file_base_name.exe & pause"],
            "name": "Run",
            "shell": true
        }
    ]
}

请问你能帮我解决一个错误吗?当我按下ctrl shift b时,会出现“'program'不是内部或外部命令,也不是可运行的程序或批处理文件。”但是当我手动运行它(通过打开.exe文件),它可以正常运行。 - cgnx
@D.N 你是否指向了exe文件?首先需要构建它(创建可执行文件),然后才能从sublime运行它。它执行的是一个命令start cmd /c your_file.exe&pause在命令行/ shell中。它需要看到这个文件。这是来自cmd的错误信息,对吗?它适用于哪个目录? - Qwerty
我不确定为什么,但今天它似乎正常工作了,昨天我不得不将带有exe文件的目录添加到路径中。然而,今天无论文件在哪里都没有关系。还是谢谢 :) - cgnx

1
我已经基于Qwerty的构建系统创建了一个构建系统。当您按下Ctrl-B时,它会自动编译和运行您的程序。此外,您还有两个旧变量。Basic Pascal已重命名为Pascal-Compile
{
        "shell": true,
        "cmd": ["fpc", "${file_path}/${file_base_name}", "&&", "start", "cmd", "/c", "$file_base_name.exe", "&", "pause"],
        "selector": "source.pascal",
        "variants": [
            {
                "cmd": ["start", "cmd", "/c", "$file_base_name.exe & pause"],
                "name": "Run",
                "shell": true
            },
            {
                "cmd": ["fpc", "${file_path}/${file_base_name}"],
                "name": "Compile",
                "shell": true
            }
        ]
    }

0
如果您在程序执行时不需要输入数据,可以尝试这个:
{
    "cmd": ["fpc", "${file_name}", "&&", "${file_base_name}", "&&", "echo."],
    "shell": true
}

echo. 打印一个新行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接