Tag: freepascal

Webview不能在使用Delphi XE2的MacOS中显示

我已经开始将Webview接口转换为在Delphi中使用。 我设法加载webkit库,并调用接口方法似乎正常工作,但是,我似乎无法显示在主窗体上的Webview。 以下是我声明的接口 WebFrameClass = interface(NSObjectClass) ['{7BE750C8-DFEC-4870-851A-12DBCB0B78F6}'] end; WebFrame = interface(NSObject) ['{BCFA04BE-41AB-4B78-89C0-3330F12C7695}'] procedure loadRequest(request: NSURLRequest); cdecl; end; TWebFrame = class(TOCGenericImport<WebFrameClass, WebFrame>) end; WebViewClass = interface(NSViewClass) ['{0D9F44B7-09FD-4E35-B96E-8DB71B9A2537}'] {class} function canShowMIMEType(MIMEType: NSString): Boolean; cdecl; end; WebView = interface(NSView) ['{C36D8016-2FCB-49F0-BA1C-C9913A37F9AC}'] procedure clos; cdecl; procedure setHostWindow(hostWindow: NSWindow); cdecl; function initWithFrame(frame: NSRect; frameName: NSString; groupName: NSString): Pointer; cdecl; function mainFrame: […]

为什么要引入无用的MOV指令可以加速x86_64程序集中的紧密循环?

背景: 当用embedded汇编语言优化一些Pascal代码时,我注意到一个不必要的MOV指令,并将其删除。 令我惊讶的是,删除不必要的指令导致我的程序放慢速度 。 我发现添加任意的,无用的MOV指令可以进一步提高性能 。 效果是不稳定的,并根据执行顺序进行更改: 相同的垃圾指令由单行上下移动会产生减速 。 我了解CPU可以进行各种优化和精简,但是,这看起来更像黑魔法。 数据: 我的代码版本有条件地编译运行2**20==1048576次循环中间的三个垃圾操作 。 (周围的程序只是计算SHA-256散列)。 我的老机器(Intel(R)Core(TM)2 CPU 6400 @ 2.13 GHz)上的结果如下: avg time (ms) with -dJUNKOPS: 1822.84 ms avg time (ms) without: 1836.44 ms 程序循环运行25次,每次运行顺序随机更改。 摘抄: {$asmmode intel} procedure example_junkop_in_sha256; var s1, t2 : uint32; begin // Here are parts of the SHA-256 algorithm, in Pascal: […]

屏幕录像机

我对使用Delphi / Pascal或C ++编写的库(对于Windows)感兴趣,它允许我logging(以video格式)桌面屏幕,要求: 必须能够指定帧速率,或者至less能够logging@ 5fps; 必须是开源或免费的; 输出格式可以是几乎任何一种,但质量必须足够好,才能够从logging中读取文本; 如果可能的话, 选项无颜色logging(灰度); 多显示器感知 ; 跨平台(Windows和Linux,其他平台也不错,但不是必需的); 如果有机会的话,我没有解释正确的东西,请随时提问,以便我可以重新修改或提供更多的细节等。