我使用需要C代码的Delphi XE6在Android上构建了一个应用程序.但是在iOS上我无法使其工作.我怀疑这个问题与手臂/拇指状态有关,但我不确定.两个系统都没有问题从Pascal调用C代码.但是如果C代码回调一个Pascal过程,iOS会生成一个"bad system call (12)"
这是pascal代码:
function testarm(a,b:integer):integer; cdecl; external "testC.o";
Procedure testC;
Begin
testarm(1,2);
end;
function BackToPascal(a,b:integer): integer; cdecl;
Begin
result := a+b;
end;
......
exports
BackToPascal;
Run Code Online (Sandbox Code Playgroud)
这是C代码:
extern int BackToPascal(int a,int b);
extern int testarm(int a,int b)
{
int i;
i = BackToPascal(a,b);
return i+1;
}
Run Code Online (Sandbox Code Playgroud)
在android上这是我编译的方式(它正在工作):
..."arm-linux-androideabi-gcc.exe" -c test.c -o test.o -O3 -mfloat-abi=softfp -mfpu=neon -marm -march=armv7-a -mtune=cortex-a8
Run Code Online (Sandbox Code Playgroud)
在ios上:
xcrun -sdk iphoneos clang -c -arch armv7 test.c -O3 -mfpu=neon -mtune=cortex-a8 -marm -march=armv7-a -mfloat-abi=softfp
Run Code Online (Sandbox Code Playgroud)
我怀疑我的xcode设置是错误的,但我无法弄清楚原因.
当我调试,错误时调用来testC在 …
是否有适用于Delphi/Pascal的静态代码分析工具?
我已经看到了很多C++和.NET的选项,但Delphi/Pascal没有.
理想情况下可以集成到持续集成系统中.
我在1997年学习了Turbo Pascal,我非常喜欢它作为一种语言.一切都非常有条理,编译器确保你以正确的方式做事.我后来尝试过Delphi但从未对它感兴趣.
从那时起,我使用了许多不同的编程和脚本语言(C,C++,PHP,Python,Perl,TCL),最近我开始考虑我的旧Turbo Pascal时代.
所以,我想知道Pascal在今天可能有用的实用目的以及可用的API和框架.有没有人在现代开发环境中使用Pascal或者它只是一种死语言?
澄清我的问题:Pascal可以用于现代应用程序开发.它是否被使用以及如何使用?
维基百科链接或快速谷歌搜索无济于事,我一直在那里.这就是我问"专家"的原因.
Object Pascal和Delphi之间的区别是什么?它们是一样的吗?它们之间有什么区别和相似之处,哪一个更有用?
在Delphi/Free Pascal中:是一个运算符还是它只是表示一个指针类型?
program Project1;
{$APPTYPE CONSOLE}
var
P: ^Integer;
begin
New(P);
P^ := 20;
writeln(P^); // How do I read this statement aloud? P is a pointer?
Dispose(P);
readln;
end
Run Code Online (Sandbox Code Playgroud) 在C中,有一个很好的方法来定义长度优先,Pascal样式的字符串作为常量,所以它们可以放在ROM中吗?(我正在使用一个带有非GCC ANSI C编译器的小型嵌入式系统).
0例如,终止C字符串.{ 'f','o','o',0}.
Pascal字符串在第一个字节中具有长度,例如.{ 3,'f','o','o'}.
我可以声明一个C字符串放在ROM中:
const char *s = "foo";
Run Code Online (Sandbox Code Playgroud)
对于Pascal字符串,我可以手动指定长度:
const char s[] = {3, 'f', 'o', 'o'};
Run Code Online (Sandbox Code Playgroud)
但是,这很尴尬.有没有更好的办法?也许在预处理器中?
我刚下载了Xcode(5.0)的最新版本,需要在Lazarus上开发一些Pascal代码.但是,安装需要我使用命令行工具,这些工具在下载时会出现问题.当我单击安装时,程序向我发送此错误消息:"无法安装'命令行收费'发生未知错误.请稍后再试."
我也尝试过使用其他IDE,比如轻量级,但它们都需要Free Pascal,这是需要命令行工具的工具.
有谁知道问题是什么?
提前致谢 :)
withPascal中的关键字可用于快速访问记录的字段.有谁知道C++是否有类似的东西?
例如:我有一个包含许多字段的指针,我不想这样输入:
if (pointer->field1) && (pointer->field2) && ... (pointer->fieldn)
Run Code Online (Sandbox Code Playgroud)
我真正想要的是C++中的这样的东西:
with (pointer)
{
if (field1) && (field2) && .......(fieldn)
}
Run Code Online (Sandbox Code Playgroud) 我打算在我的应用程序中包含一个pascal脚本.它不需要任何Web访问,只需访问我的应用程序中的类.应该快速(编译).我看到有许多脚本可用,有些是解释器,但在编译器中RemObjects pascal脚本和Delphi Web脚本(DWS)似乎是强大的并且积极地追求.
请问有人可以提出一个优点吗?谢谢
我需要用Pascal/Delphi/Lazarus编写的逆透视变换.见下图:

我想我需要遍历目标像素,然后计算源图像中的相应位置(以避免舍入错误等问题).
function redraw_3d_to_2d(sourcebitmap:tbitmap, sourceaspect:extended, point_a, point_b, point_c, point_d:tpoint, megapixelcount:integer):tbitmap;
var
destinationbitmap:tbitmap;
x,y,sx,sy:integer;
begin
destinationbitmap:=tbitmap.create;
destinationbitmap.width=megapixelcount*sourceaspect*???; // I dont how to calculate this
destinationbitmap.height=megapixelcount*sourceaspect*???; // I dont how to calculate this
for x:=0 to destinationbitmap.width-1 do
for y:=0 to destinationbitmap.height-1 do
begin
sx:=??;
sy:=??;
destinationbitmap.canvas.pixels[x,y]=sourcebitmap.canvas.pixels[sx,sy];
end;
result:=destinationbitmap;
end;
Run Code Online (Sandbox Code Playgroud)
我需要真正的公式......所以OpenGL解决方案并不理想......