Lazarus下面的javascript绑定另外一个版本bug修正
Lazarus下面的javascript绑定另外一个版本bug修正
从svn 检出的代码有几个问题
1.fpcjs.pas 单元开始有
{$IFDEF FPC}
{$MODE delphi}
{$ENDIF}
设置的delphi模式,可是后面有这样的代码
{$ifndef fpc}
// inc(argv,i); pom := pjsval(argv^); dec(argv,i);} // this original code does not work in delphi 7
// pom := TArrayOfPjsval(argv)[i]; // for some reason this is not working either, assuming type TArrayOfPjsval = array of pjsval;
pom := pjsval(integer(argv)+i*sizeof(pjsval)); // working hack
{$else}
pom := pjsval(argv + i);
{$endif}
注意红色的部分,其实作者是想在delphimode 使用
pom := pjsval(integer(argv)+i*sizeof(pjsval)); // working hack
可是用
{$ifndef fpc}
判断是不科学的,这句判定在lazarus编译的时候会认为
Fpc已经定义,所以执行
pom := pjsval(argv + i);
这句,导致错误。
修改的方法是,最前面变成
{$IFDEF FPC}
{$MODE delphi}
{$DEFINE myfpc}
{$ENDIF}
增加一个定义,然后后面这里
{$ifdef myfpc}
// inc(argv,i); pom := pjsval(argv^); dec(argv,i);} // this original code does not work in delphi 7
// pom := TArrayOfPjsval(argv)[i]; // for some reason this is not working either, assuming type TArrayOfPjsval = array of pjsval;
pom := pjsval(integer(argv)+i*sizeof(pjsval)); // working hack
{$else}
pom := pjsval(argv + i);
{$endif}
让他在delphi模式的时候执行 delphi 模式的指针操作。
Fpcjs源码库的来源是
http://code.google.com/p/fpcjs/
Lazarus下面的javascript绑定另外一个版本bug修正的更多相关文章
- KBMMW 4.93.10 win64 一个BUG 修正
经常有人提到kbmmw 4.93.10 的64 位版本没有32位版本稳定. 经过官方确认,是delphi 编译器生成64 位代码内存偏移地址的错误. 在kbmMWGlobal.pas 中 有一个函数k ...
- 商品类型的下拉框绑定一个事件,通过ajax获取属性
html代码这么写 <!-- 商品属性 --> <table cellspacing="1" cellpadding="3" width=&q ...
- CentOS 6.9下双网卡绑定单个IP地址及装网卡绑定到一个网桥(转)
说明:经过查阅,原来双网卡绑定一个IP的专业名词叫做bond,可以实现负载均衡:如果想要实现两张网卡绑定到一个网桥,基本思路是两张网卡设置同一个网桥是行不通的,但如果先实现bond,然后将bond绑定 ...
- Linux下双网卡绑定(bonding技术)
Linux网卡绑定探析 2013-08-20 15:39:31 现在很多服务器都自带双千兆网口,利用网卡绑定既能增加网络带宽,同时又能做相应的冗余,目前应用于很多的场景.linux操作系统下自带的 ...
- python 全栈开发,Day50(Javascript简介,第一个JavaScript代码,数据类型,运算符,数据类型转换,流程控制,百度换肤,显示隐藏)
一.Javascript简介 Web前端有三层: HTML:从语义的角度,描述页面结构 CSS:从审美的角度,描述样式(美化页面) JavaScript:从交互的角度,描述行为(提升用户体验) Jav ...
- 前端JavaScript(1) --Javascript简介,第一个JavaScript代码,数据类型,运算符,数据类型转换,流程控制,百度换肤,显示隐藏
一.Javascript简介 Web前端有三层: HTML:从语义的角度,描述页面结构 CSS:从审美的角度,描述样式(美化页面) JavaScript:从交互的角度,描述行为(提升用户体验) Jav ...
- 用25行JavaScript语句实现一个简单的编译器
原文:https://www.iteye.com/news/32680 译者注:即使对于专业程序员来说,构造一个编译器也是颇具挑战性的任务,本文将会引导你抽丝剥茧,一探究竟! 我已经写了几篇与编程语言 ...
- jQ给下拉框绑定事件,为什么要绑定在框(select标签)上,而不是绑定在选项(option标签)上
这是我在学习锋利的 jquery 书中 5.1.4 的代码时遇到的一个小问题,源代码如下: <head> <style type="text/css"> * ...
- 深度分析Linux下双网卡绑定七种模式 多网卡的7种bond模式原理
http://blog.csdn.net/abc_ii/article/details/9991845多网卡的7种bond模式原理 Linux网卡绑定mode共有七种(~) bond0.bond1.b ...
随机推荐
- matlab 画二维图与三维图
二维图 ezplot('sin(x)');%默认范围 ezplot('sin(x)',[-4 4]);%自己设定范围 三维图 ezmesh('x*x+y*y');%默认范围
- python全栈 函数名 闭包及迭代器
1,函数名的运用 2.闭包 3.迭代器 一.函数名的运用 1.函数名的命名规范和变量是一样的 函数名其实就是变量名 (1)函数名的内存地址 例: def func(): print("ale ...
- Linux系统清除缓存
1)缓存机制介绍在Linux系统中,为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果没 ...
- NAT和Proxy的区别
在internet共享上网技术上,一般有两种方式,一种是proxy代理型,一种是NAT网关型,关于两者的区别与原理,身边很多人都不是很明白,下面我来讲讲我的理解,如有不对的,欢迎指正. 1.先说应用例 ...
- Linux系统一本通(实用篇)
本人最近一直在ubuntu,接下来和大家分享我曾经踩过的坑,和一些非常实用的命令知识- 安装中的磁盘分配 一般来说,在linux系统中都有最少两个挂载点,分别是/ (根目录)及 swap(交换分区), ...
- .py文件右键添加Edit with IDLE
1.打开注册表(regedit) 2.找到这个目录:HKEY_CLASSES_ROOT\SystemFileAssociations 3.找到.py的项,逐层新建 4.shell和edit,默认值改为 ...
- f5创建VS
1.1) 2) 3) 4) 5) 2.Availability 1)Pool 中的monitor保障服务高可用 2)Pool 失败机制一 Fallback Host 最后的host( 使用于HTTP ...
- GridView中CheckBox单击事件(oncheckedchanged)
在GridView中加入 CheckBox控件,想通过单击选中出现如下图所示效果: 具体做法是: 前台GV部份省掉.只加关键的CheckBox部份. view plaincopy to clipboa ...
- ARM交叉编译工具链
交叉编译工具链是一个由编译器.连接器和解释器组成的综合开发环境,交叉编译工具链主要由binutils.gcc和glibc三个部分组成. 免费版目前有三大主流工具商提供,第一是GNU(提供源码,自行编译 ...
- Redis 中 redis.conf配置详细解析
########################################### 基本配置 ##################################### # 端口 port 666 ...