我们有一些古老的Delphi代码(可能甚至起源于Turbo Pascal代码),它们使用{$I-},也就是说,它使代码使用IOResult而不是磁盘I/O错误的异常.{$IOCHECKS
OFF}
我想摆脱这个{$I-}并将这个代码推进到20世纪90年代,但为了做到这一点,我想知道所有受到影响的是什么{$IOCHECKS OFF}.这只会影响Crufty旧的内置I/O函数,如AssignFile/Reset/Rewrite/Append/CloseFile吗?或者它是否会影响TFileStream等更现代的东西?更重要的是,还有什么可能会影响到我没想到的?(Delphi Basics建议它也会影响MkDir和RmDir.如果它影响那些,那么必须有更多.)
Delphi 2007帮助主题"输入输出检查(Delphi)"(ms-help://borland.bds5/devcommon/compdirsinput_outputchecking_xml.html)表示这会影响"I/O过程[s]",并且"在Delphi语言指南中描述了I/O过程".这没有多大帮助,因为CodeGear从未发布语言指南,而Borland最后一次发布的是Delphi 5.
哪些功能和类的行为不同{$I-}?
编辑:接受的答案提供了一些很好的背景,但这里是按字母顺序排列的列表形式的快速摘要:{$IOCHECKS OFF} 仅影响系统单元中的以下例程.
在Delphi中,编译器指令{$ d-}和{$ l-}允许您有效地避免为定义的代码段生成调试和局部变量信息.
在实际的问题中,它具有从调试视图中"隐藏"代码的效果,它不会出现在调用堆栈中,并且在调试时不会进入它.
有没有办法在使用VS 2008的c#中实现相同的结果?
注意:原因是我们有一个稳定的框架,不需要调试,但往往会搞乱调用堆栈和标准调试流程.
我有一个基于作为属性发送的数组构建html的指令。我无法从指令的编译器功能访问它。它在链接函数内部工作,但是我需要在编译内部,否则新模板不会被编译。
代码是这样的:
<multirangeslider values="ranges" variances="['Master', 'master A', 'master B']"></multirangeslider>
Run Code Online (Sandbox Code Playgroud)
指示:
angular.module("vtApp.directives").
directive('multirangeslider', function ($parse, $timeout, $compile) {
return {
restrict: 'E',
replace: true,
scope: {
values: "=",
options: "=",
variances: "&"
},
compile: function (element, attrs) {
var htmlText, variances, values;
variances = eval(attrs.variances);
values = scope.ranges //scope is undefined
values = eval (attrs.variances) //returns string "ranges"
values = ??? ///what should I put here?
htmlText = '<div></div>';
element.replaceWith(htmlText);
return function (scope, element, attrs){
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
谢谢
我目前正在处理'继承'代码,该代码具有(随机分散)一大堆基于Delphi版本的条件编译器指令,返回到Delphi 2.从现在开始,所有开发都将采用Delphi 2009或未来.Delphi 2009中是否有一个工具或插件,它会根据指定的"最小"版本自动删除编译器条件代码段?
我想强制 Erlang 编译器在编译特定模块时生成它们的调试信息,而无需将参数添加debug_info到编译命令中。我尝试添加
-compile([debug_info]).
Run Code Online (Sandbox Code Playgroud)
到模块文件,但运行时c(my_module)并未在梁文件中包含调试信息。
有没有办法做到这一点,或者无法从模块源文件本身添加调试信息?
可能重复:
@class我可以知道正确使用它
我想知道为什么使用@class.我有一个大致的了解,它允许你访问你所调用的类中的东西,但我不知道它的好处..
编译器指令WIN32和CPUX86,WIN64和CPUX64在Delphi中是否可以互换?
如果是,哪一个更受欢迎?如果不是,为什么?
使用编译器指令
#if A
some instructions
#elseif B
some instructions
#end
Run Code Online (Sandbox Code Playgroud)
在C\C++语言中,可以告诉编译器在某些条件下忽略代码的某些部分.我很想知道Julia语言中是否有相同的功能.
在Swift中(使用Xcode)使用#if,#endif(如果使用Xcode)会切入操作流程,则会产生错误。该屏幕截图说明了一切:
有谁知道一种解决方案,可以使此示例正常工作,而无需重复整个代码块两次?很容易出现整个块可能很大的情况。
编辑:我的示例有点太简单了。这是一个新示例,其中“ else if”取决于相同的定义(DEBUG)。“ else if”也必须在#if和#endif之内。其他样本可能比这复杂得多。
我正在使用 Visual Studio 2019 和基于 SDK 的项目,具有多个目标:
<TargetFrameworks>netstandard2.0;net45;net46</TargetFrameworks>
Run Code Online (Sandbox Code Playgroud)
但是当我编写条件代码时,我(显然)看到一些灰色代码和一些常规颜色代码:
问题:
哪些设置决定哪些部分将呈灰色,哪些部分不会?因为现在,如果我想编辑“ NETFULL”部分(因为我是多目标),它都是灰色的,而且我没有智能感知。
我如何告诉 VS:现在让我们切换到NETFULL模式?
注意:当然我可以删除该条件,但我想知道为什么它是灰色的以及如何在它们之间切换(因为我是多目标)
delphi ×3
c# ×2
debugging ×1
delphi-2009 ×1
erlang ×1
file-io ×1
ios ×1
iphone ×1
javascript ×1
julia ×1
preprocessor ×1
swift ×1
xcode ×1