我正在寻找 Pascal 的 IDE。在Linux下运行的东西,简单且易于运行。我的目标是为孩子设置一些可以学习的东西,不需要从 10 个类派生即可使文本在屏幕上可见。
我记得基于 DOS 的 TurboPascal 非常容易使用。现在我尝试了Lazarus,但它的界面非常复杂。
我不需要支持多种语言的 IDE,而且我不会将 Pascal 更改为另一种语言——在我的母语中,有很多关于 Pascal 的好教科书,而关于其他语言的教科书却很少。
谢谢!
通过使用任何编译器参数或修改头文件/单元文件,有没有办法在 C/C++ 和 Pascal 中禁用system()和exec()运行?(这是一个窗口)
我试过使用-Dsystem=NONEXISTgcc 和 g++ 但#include <cstdio>导致编译错误。
编辑:当然我知道他们可以#undef system用来绕过防御,所以我试图注释掉systemstdlib.h 中的函数行,但这也不起作用。
EDIT2(评论):这是一个系统,用户提交他们的程序,服务器用不同的输入数据编译和运行它,然后将程序输出与预先计算的标准输出进行比较,看看程序是否正确。现在一些用户发送代码,比如system("shutdown -s -t 0");关闭服务器。
服务器运行的是Windows系统,所以我没有任何chroot环境。此外,服务器应用程序是封闭源代码的,因此我无法控制用户提交的程序的执行方式。我能做的是修改编译器命令行参数并修改头文件。
我正在编写将 Pascal 转换为 C 的程序,需要一些帮助。我从扫描仪生成器 Flex 开始。我定义了一些规则并创建了或多或少工作正常的扫描仪。它将 Pascal 语法分解为标记,目前它只打印它发现的内容。但我不知道接下来该怎么做。有没有涉及这个主题的文章或书籍?你下一步怎么做?
我最近不得不面对这个问题,即,如何将 1、2、3、9、38919、0 或任何随机数量的参数传递给 Pascal 中的函数或过程?我想制作一个子程序,它可以接受我想传递的尽可能多的参数,比如 writeln。
writeln('Hello, ', name, '.');
writeln('You were born on ', birthDate, ', and you are ', age, ' years old.');
Run Code Online (Sandbox Code Playgroud)
我搜索了一些指导或任何网站,但唯一相关的线程我发现了这些 的人,这让我了解我的问题有点多,但我还是不知道如何在帕斯卡尔做到这一点。
我也发现了这个,但我不确定我是否真的理解它所说的。(我也不知道适用于 Free Pascal 的内容是否也适用于其他编译器)有
什么想法吗?:/
我正在尝试在退出 Inno Setup 之前检查我刚刚安装的服务是否正在运行。我需要紧接着执行一个程序,所以我试图调用一个过程,该过程在运行参数中使用来自 BeforeInstall 的函数。
我从另一篇文章中找到了这个示例,我正在尝试更改它以检查我的服务是否在安装后但在运行行执行之前运行。我是 pascal 的新手,我似乎无法弄清楚如何从过程中调用该函数。任何帮助,将不胜感激。谢谢!
[Run]
; Launch the Setup App here
Filename: "{app}\MyApp.exe"; BeforeInstall: AfterInstallProc
[Code]
procedure AfterInstallProc;
begin
result := not IsAppRunning('MyService.exe');
if not result then
MsgBox('Error message here', mbError, MB_OK);
end;
function IsAppRunning(const FileName : string): Boolean;
var
FSWbemLocator: Variant;
FWMIService : Variant;
FWbemObjectSet: Variant;
begin
Result := false;
FSWbemLocator := CreateOleObject('WBEMScripting.SWBEMLocator');
FWMIService := FSWbemLocator.ConnectServer('', 'root\CIMV2', '', '');
FWbemObjectSet := FWMIService.ExecQuery(Format('SELECT Name FROM Win32_Process Where Name="%s"',[FileName]));
Result := (FWbemObjectSet.Count > 0);
FWbemObjectSet := …Run Code Online (Sandbox Code Playgroud) 我们在delphi中有应用程序,现在我们正在实现语言翻译功能.我们在core中添加了代码来翻译在ResourceString中声明的字符串.它工作正常,但在Array中声明的字符串未翻译.例
resourcestring
Error_Text = 'Invalid Value';
Run Code Online (Sandbox Code Playgroud)
这工作正常.
Const
ERROR_TYPE : Array[0..2] of String = ('Invalid Name', 'Invalid Age', 'Invalid Address');
Run Code Online (Sandbox Code Playgroud)
如何将这些数组值添加到resourcestring中?
我试图引用一个过程作为另一个过程的参数,但在理解文档时遇到问题。(http://docwiki.embarcadero.com/RADStudio/Sydney/en/Procedural_Types_(Delphi))
据我了解,我需要为该过程创建一个新类型..
type
TCallback = procedure of object;
Run Code Online (Sandbox Code Playgroud)
并将高阶过程声明为
procedure HigherOrder(pProc: TCallback);
我在尝试调用函数时收到编译错误“E2010 Incompatible types: 'TCallBack' and 'procedure, untyped pointer or untyped parameter'”(当单击按钮时)
type
TCallBack = procedure of object;
TfrmMain = class(TForm)
btnAct: TButton;
procedure btnActClick(Sender: TObject);
private
procedure HigherOrder(pProc: TCallback);
procedure Callback();
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
{$R *.dfm}
{ TfrmMain }
procedure TfrmMain.btnActClick(Sender: TObject);
begin
HigherOrder(Callback()); <--Error occurs here
end;
procedure TfrmMain.Callback;
begin
//Do some stuff
end; …Run Code Online (Sandbox Code Playgroud) 有谁知道 C#/Excel财务函数的Delphi 中的等价物是什么:PMT、IPMT和PPMT?
在将旧的 Turbo Pascal 单位转换为现代 Object Pascal 时,我遇到了以下问题:
function Less (var a, b; Relation : POINTER) : boolean;
inline($5B/$59/$0E/$E8/$00/$00/$58/$05/$08/$00/$50/$51/$53/$CB);
Run Code Online (Sandbox Code Playgroud)
代码应该调用 an external function {$F+} function VariableLess(var a, b : Index) : boolean; {$F-},收集结果并将其传递给调用函数。该函数用于为无类型数据提供二叉树的单元中
procedure InsVarBBTree(var B: BBTree; var E; S: word; A: pointer; var ok: boolean);
{ puts variable E of size S into tree B. The order relation address is A. }
Run Code Online (Sandbox Code Playgroud)
因此,单元本身不能提供比较功能,即定义有效载荷的单元的工作。
使用在线反汇编器,我发现这对应于:
{$ASMMODE intel}
function Less (var a, b; Relation : POINTER) : boolean; assembler; …Run Code Online (Sandbox Code Playgroud) if exp1 and exp2 and exp3 then
//something
Run Code Online (Sandbox Code Playgroud)
Delphi中exp1、exp2和exp3(当然都是Boolean)的求值顺序是定义的还是随机的?
pascal ×10
delphi ×4
c ×2
arguments ×1
assembly ×1
boolean ×1
c++ ×1
delphi-xe2 ×1
delphi-xe7 ×1
flex-lexer ×1
ide ×1
inline ×1
inno-setup ×1
linux ×1
system-calls ×1
turbo-pascal ×1
x86-16 ×1