- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经下载并开始使用 Pascalscript 及其示例程序。
我在使用表单访问示例脚本与表单交互时遇到了问题。
它在 32 位模式下工作,在 64 位模式下不会触发任何事件。
也就是说,按钮 onpress 事件永远不会调用 pascalscript onpress 代码。
我在 Windows 7 Pro 上使用 Delphi 10 Seattle。
关于如何让脚本在 64 位平台上正常工作有什么想法吗?
最佳答案
既然没有人能回答这个问题,我必须自己做这项艰苦的工作。
所以问题是在从 delphi 到 pascalscript 方法调用的转换中,x64 的序言代码是空的,这是用汇编程序编写的。空方法处理程序在uPSruntime单元中称为“MyAllMethodhandler”,我的代码解决方案如下
function MyAllMethodsHandler2(Self:PScriptMethodInfo; const Stack:PPointer; _EDX,_ECX:Pointer):Integer; forward;
{$ifdef CPUX64}
procedure MyAllMethodsHandler;
// On entry:
// RCX = Self pointer
// RDX, R8, R9 = param1 .. param3
// STACK = param4... paramcount
asm
PUSH R9
MOV R9,R8 // R9:=_ECX
MOV R8,RDX // R8:=_EDX
MOV RDX, RSP // RDX:=Stack
SUB RSP, 20h
CALL MyAllMethodsHandler2
ADD RSP, 20h //Restore stack
POP R9
end;
{$else}
procedure MyAllMethodsHandler; //original x86 code
// On entry:
// EAX = Self pointer
// EDX, ECX = param1 and param2
// STACK = param3... paramcount
asm
push 0
push ecx
push edx
mov edx, esp
add edx, 16 // was 12
pop ecx
call MyAllMethodsHandler2
pop ecx
mov edx, [esp]
add esp, eax
mov [esp], edx
mov eax, ecx
end;
{$endif}
不确定这是否适用于所有参数,但似乎至少适用于 2 个参数。
我会将其作为评论发布在 GitHub 上,我无法真正直接修复它,因为我对整个 Pascal 脚本进行了大量更改,因此它支持复杂的数学。
关于delphi - 在 64 位模式下编译 Pascalscript,事件不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33648962/
我已将 PascalScript 引擎纳入我的软件中。我的用户现在想要为此引擎编写一整套脚本,并且想知道是否可以通过 include 或 uses 命令包含其他脚本。 他想要做的是编写一个包含各种常量
是否有用标准的过程 Pascal 编写的 JSON 解析器? There are a couple of object-oriented implementations in Delphi ,但我需要
以下是我的代码: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Cont
我试图在 PascalScript 函数中使用 TStrings.ValueFromIndex(在 FreePascal 和 Delphi 中工作),但它不起作用,编译器返回:
我计划在我的应用程序中包含一个 pascal 脚本。它不需要任何网络访问,只需访问我的应用程序中的类即可。它应该很快(已编译)。我看到有许多可用的脚本,其中一些是解释器,但在编译器中 RemObjec
我已经下载并开始使用 Pascalscript 及其示例程序。 我在使用表单访问示例脚本与表单交互时遇到了问题。 它在 32 位模式下工作,在 64 位模式下不会触发任何事件。 也就是说,按钮 onp
在安装过程中,可以使用以下代码 (How to update the InnoSetup Wizard GUI status text from PascalScript code) 从 Pascal
我在 CurStepChanged(ssPostInstall) PascalScripting 事件处理程序的 InnoSetup 脚本中执行了许多自定义操作。由于这些操作需要一些时间才能完成,我想
我想创建一个基于 JSON 数据绘制简单表单的应用程序。我需要一个脚本来把情报放在上面。 RemObjects 的 Pascal Script 是解决方案吗? 是否兼容为 Android、iOS 和
我是一名优秀的程序员,十分优秀!