是否有人知道可以嵌入C++(或Pascal以外的任何其他东西)应用程序的Pascal解释器/编译器?我正在克隆(缺少一个更好的词)一个使用Object-Pascal兼容的脚本语言并且需要与脚本兼容的应用程序.我最终会写一个翻译吗?(!)
我有一个编译器作业问题,希望我为Pascal评论绘制DFA,但我从来没有(也可能永远不会)使用Pascal.问题没有说明我们是否应该使用ANSI Pascal或Turbo Pascal,所以我打算为两者做一个.
一些谷歌搜索向我展示了Turbo Pascal允许嵌套注释,只要没有使用相同的分隔符{(*comment*)},所以可以(*{comment}*),但是,{{comment}}或者(*(*comment*)*)不好.我的问题是,如果评论喜欢{(*{comment}*)}或者(*{(*comment*)}*)没有问题,因为相同的分隔符不会连续使用.
我也用谷歌搜索ANSI Pascal是否允许嵌套注释,但我还没有找到明确的答案.如果ANSI Pascal允许嵌套注释,那么规则是什么?
另外,我并不担心不同的起始和结束分隔符的奇怪的注释约定,这是ANSI Pascal中允许的约定.
更新:
我想明确的是我并不关心特定编译器如何处理Pascal注释,我关心编译器应该如何处理Pascal注释,如果该编译器100%遵守ANSI或TURBO Pascal标准.
是吗:
.p.pl.pas.pascal或者是其他东西?
如果您不使用首选扩展名,各种Pascal编译器(尤其是fpc)会不会出现问题?
我试图弄清楚一致的数组是什么,但我无法在任何地方找到一个好的定义.任何人都可以解释这是什么,并给我一个基本的例子,他们的目的是什么?
谢谢
在Delphi中,查看项目属性时有一个选项VersionInfo-> Language-> Locale ID.
我正在徘徊如何为Free Pascal下编译的程序设置这样的属性.
欢迎任何解决方案:命令行参数或预处理器指令,如{$key value}; 相当于德尔福.
如果我对单元进行重大更改,我想更改其名称以明确这是一个不同的版本,并避免与其他存档版本混淆,例如:CSVUtils.PAS成为CsvUtilsNew.PAS
但是必须手动更改其他单位对它的所有引用,例如:
Unit ManiForm
Uses
CSVUtils
Run Code Online (Sandbox Code Playgroud)
变
Unit ManiForm
Uses
CsvUtilsNew
Run Code Online (Sandbox Code Playgroud)
这在复杂的项目中非常费力.
伊卡洛斯非常善于找到所有参考文献,但我找不到任何可以自动更新所有其他单位的工具.
有谁知道任何自动更新单位参考的工具?
非常感谢
有没有人有一个Delphi/Pascal示例来调用下面的OpenSSL函数...
我特别感兴趣的是:
procedure EVP_CIPHER_CTX_init(a: PEVP_CIPHER_CTX);
function EVP_CIPHER_CTX_cleanup(a: PEVP_CIPHER_CTX): cint;
function EVP_CIPHER_CTX_set_key_length(x: PEVP_CIPHER_CTX; keylen: cint): cint;
function EVP_CIPHER_CTX_ctrl(ctx: PEVP_CIPHER_CTX; type_, arg: cint; ptr: Pointer): cint;
//
function EVP_EncryptInit(ctx: PEVP_CIPHER_CTX; const chipher_: PEVP_CIPHER;const key, iv: PByte): cint;
function EVP_EncryptUpdate(ctx: PEVP_CIPHER_CTX; out_: pcuchar;outlen: pcint; const in_: pcuchar; inlen: cint): cint;
function EVP_EncryptFinal(ctx: PEVP_CIPHER_CTX; out_data: PByte; outlen: pcint): cint;
function EVP_DecryptInit(ctx: PEVP_CIPHER_CTX; chiphir_type: PEVP_CIPHER;const key, iv: PByte): cint;
function EVP_DecryptUpdate(ctx: PEVP_CIPHER_CTX; out_data: PByte;outl: pcint; const in_: PByte; inl: cint): cint;
function EVP_DecryptFinal(ctx: PEVP_CIPHER_CTX; …Run Code Online (Sandbox Code Playgroud) 我尝试了下面的代码,它应该检查一个字符串是否包含空格但是我得到一个错误.我怎么能检查一下
if Index('some string',' ')>1 then begin
Result:= False;
end
else begin
Result := True;
end;
Run Code Online (Sandbox Code Playgroud) 如果我在发布程序之前意外忘记切换到发布配置,那么对我的代码进行反编译或反向工程更容易吗?
例如,如果我不小心使用以下调试编译器选项:
1. Compiling:
- StackFrames = True
2. Debugging
- Debug information = Debug information
- Local Symbols = True
- Symbol Reference info = Reference Info
3. Linking
- Map File = Detailed
Run Code Online (Sandbox Code Playgroud)
我已经阅读了帮助,除了地图文件也以某种方式与二进制文件一起发布之外,我可以告诉它没有多大区别,所以我想知道如果有人有地图文件会有多大差异?
我怎样才能shellexecute()在Lazarus中为Mac 执行相同的操作?