- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有责任为 OSX 10.5 构建一个旧版本的开源库。 (库是 Xerces 2.8。)
库无法在 OSX 10.5 上开箱即用地构建(除其他外)由于使用了已停用的 OSX 函数 CopyCStringToPascal()
。相关代码片段是:
Str255 pasEncodingName;
...
CopyCStringToPascal(cEncodingName, pasEncodingName);
TECGetTextEncodingFromInternetName (&textEncoding, pasEncodingName);
调查表明,CopyCStringToPascal()
确实将 C 字符串转换为 Pascal 风格的字符串(第一个字节提供字符串中字符数的字符串)。因此,从上下文来看,很明显 TECGetTextEncodingFromInternetName()
的第二个参数必须是 Pascal 风格的字符串(尽管我无法在任何来自互联网的文档中找到这一点)。
因为最新版本的开源库 (Xerces 3.1) 成功构建在 OSX 10.5 上,并且其实现都明确定义了函数 CopyCStringToPascal()
(因为它已在 OSX 10.5 中停用) 来创建 Pascal 风格的字符串,并继续使用 TECGetTextEncodingFromInternetName()
(在 OSX 10.5 中尚未停用),我相信这可以确认确实 TECGetTextEncodingFromInternetName()
即使对于 OSX 10.5 也继续需要 Pascal 风格的字符串。
因为当前 OSX 10.5 系统例程仍然需要 Pascal 风格的字符串,所以我很困惑为什么转换为这种必要的 Pascal 字符串的函数 CopyCStringToPascal()
在操作系统 10.5。我写这个问题是为了进一步确认我没有犯错误,只是简单地为 Xerces 2.8 显式定义此函数(并且在与此讨论相关的代码区域中不做任何更改)以使 Xerces 2.8 到使用 OSX 10.5 构建。谢谢。
最佳答案
一共有三个升级路径,都是通过CFString。
Grady Player 已经建议,第一个是使用 CFString 将编码名称转换为 Pascal 字符串。您可以从 CFString 中的编码名称开始(使用 CFSTR
宏);如果没有,您可以从 C 字符串创建一个 CFString,并从 CFString 创建一个 Pascal 字符串。
第二种是使用 CFString 而不是 Text Encoding Conversion Manager 将编码名称转换为编码标识符。 CFString 和 TEC 都使用相同的标识符(比较 CFStringEncodingExt.h 和 TextCommon.h 之间的常量),因此您可以使用 CFStringConvertIANACharSetNameToEncoding
(将编码名称作为 CFString)来获取编码标识符。如果您将编码标识符从 CF 传递给 TEC,这有点作弊,但只要 Apple 认为不适合无缘无故地更改所有常量,它就会起作用。
第三种是使用 CFString 本身进行转换。使用 CFStringCreateWithBytes
从输入创建一个 CFString,并使用 CFStringGetBytes
确定输出长度,然后再次执行转换。该解决方案完全去除了 TEC。
虽然 TEC 本身尚未弃用(但),如果它需要使用或重新发明其他已弃用/删除的 API 才能使其正常工作,这对于基于 TEC 的代码的生命周期来说也是一个不好的迹象。我建议 filing a bug要求在 TEC 中为 TECGetTextEncodingFromInternetName
提供现代替代品;您可以根据对请求的响应来决定要做什么。
关于c++ - 如果 TECGetTextEncodingFromInternetName() 需要 Pascal 风格的字符串,为什么 CopyCStringToPascal() 在 OSX 10.5 中停用了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6713844/
我找不到在来电时激活和停用振动的方法。 菜单中的选项 --> 设置 --> 声音和显示提到 - PHONE VIBRATE - 来电时手机振动... 我想通过代码激活和停用它(如果可能的话)。 最佳答
我有两个元素在彼此之上。当我点击第一个 div 上的按钮时,第二个 div 在第一个 div 之上打开,我想要做的是让底层 div 成为非交互式的(我不能点击底层 div 上的任何东西只要 overl
有没有办法取消 UIScrollView 的减速? 我想允许用户滚动 Canvas ,但我不希望用户抬起手指后 Canvas 继续滚动。 最佳答案 这可以通过利用 UIScrollView 委托(de
这里是关于 Stack Oveflow 的第一个问题,所以不要作恶! :) 言归正传:如果有堆叠的元素和堆叠的操作区域,如何继续操作以确保您对所看到的内容而不是底层元素进行操作? 我正在学习有关 Qt
这个问题已经有答案了: Deleting Objects in JavaScript (14 个回答) 已关闭 9 年前。 我有一个类,我通过以下方式调用: this.infiniteScroll =
我有一个优化问题,正在尝试使用 optaplanner 来解决。求解算法使用一组规则。引擎使用一个对象来捕获每个规则的权重。规则的最终得分是规则的中间得分乘以权重。分数设置在每条规则的右侧。每个规则的
有没有办法取消 UIScrollView 的减速? 我想允许用户滚动 Canvas ,但我不希望用户抬起手指后 Canvas 继续滚动。 最佳答案 这可以通过利用 UIScrollView 委托(de
我正在尝试更新 native android 应用程序,该应用程序以前是由其他一些人在某些跨平台技术(Titanium)中构建和上传的。应用程序以高级模式发布,其中针对平板电脑和手机有不同的构建。但现
我有一个 JList 列表和以下代码行: list.getInputMap().put(KeyStroke.getKeyStroke('d'), "action"); 因此,当我的列表处于焦点状态并且
有没有办法通过 SQL 语句停用 postgres 用户帐户? 我想阻止用户使用他们的数据库,但不删除用户或他们的数据库。 最佳答案 您还可以考虑 ALTER USER someone WITH NO
我有一个问题。我有一个 ViewController1,它通过 Push-segue 打开 ViewController2。//两者都是NavigationControllers - (void)pr
当我去 Playground 写 let test = "\u{062F}\u{0625} Hello" 时,我得到 Hello دإ(通过当我从输出控制台复制到这里时,我得到 دإ Hello) 似
我想通过扬声器播放歌曲,同时能够使用 Quickblox 接听视频通话。 我的音频速率越来越乱了。还有一个更大的问题是,当通话结束时,quickblox 框架将 Audio Session 设置为停用
我有一个工作项目,我以 tomcat 用户身份登录,但我不知道如何注销,我尝试停用 tomcat session ,我们使用 java spring,这是我尝试从 Controller : @Requ
我正在使用 javascript 来缩放我的 asp.net 网页上的图像。我想在上面放 2 个按钮,例如“缩放”、“取消缩放”,并相应地激活/停用 javascript 功能。现在我有一个 java
我有一个 TextField 和一个按钮。此 TextField 最多可包含 3 个字母或数字。 这是我的问题。当程序运行时,如果这个文本字段为空或者如果这个文本字段不只包含数字,我希望我的按钮被禁用
我有几个组,可以选择三个按钮。我试图做到这一点,以便当有人选择 N/A 按钮时,它会禁用其他两个按钮。当取消选择 N/A 按钮时,将启用其他两个按钮。我让它在我的机器上工作,其他两个按钮被着色为禁用,
HTML: Button Main Menu A Main Menu B
我是 php 新手,如何才能完成这项工作 删除.php prepare("UPDATE tbluser set status=1 WHERE id=:id"); $stmt->execute(
周五,我开始在运行 Ubuntu 14.04 的 VPS 上编写我的第一个 python API hello world 示例。我使用 python3,创建文件夹,virtualenv,激活它,然后断
我是一名优秀的程序员,十分优秀!