- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我尝试调用 MkDir 时收到以下错误消息
[Error] DBaseReindexer.dpr(22): Ambiguous overloaded call to
MkDir
我尝试了以下操作,但它们都返回相同的错误。
MkDir('test');
var
Dir: String;
begin
Dir := 'test';
MkDir(Dir);
end;
const
Dir = 'test';
begin
MkDir(Dir);
end;
从源代码来看,有一个版本采用字符串,另一个版本采用 PChar。我不确定我的字符串在这两种类型之间是否会产生歧义。
<小时/>重现错误的代码(来自注释):
program Project1;
{$APPTYPE CONSOLE}
uses SysUtils, System;
begin
MkDir('Test');
end.
最佳答案
您的代码在空项目中可以正常编译:
program Project1;
procedure Test;
const
ConstStr = 'test';
var
VarStr: string;
begin
MkDir('Test');
MkDir(ConstStr);
MkDir(VarStr);
end;
begin
end.
所以你的问题是你在代码的其他地方为 MkDir
定义了不兼容的重载。例如这个程序:
program Project1;
procedure MkDir(const S: string); overload;
begin
end;
procedure Test;
const
ConstStr = 'test';
var
VarStr: string;
begin
MkDir('Test');
MkDir(ConstStr);
MkDir(VarStr);
end;
begin
end.
产生以下编译器错误:
[dcc32 Error] Project1.dpr(13): E2251 Ambiguous overloaded call to 'MkDir' System.pas(5512): Related method: procedure MkDir(const string); Project1.dpr(3): Related method: procedure MkDir(const string);[dcc32 Error] Project1.dpr(14): E2251 Ambiguous overloaded call to 'MkDir' System.pas(5512): Related method: procedure MkDir(const string); Project1.dpr(3): Related method: procedure MkDir(const string);[dcc32 Error] Project1.dpr(15): E2251 Ambiguous overloaded call to 'MkDir' System.pas(5512): Related method: procedure MkDir(const string); Project1.dpr(3): Related method: procedure MkDir(const string);
Notice how the compiler helpfully tells you which two methods cannot be disambiguated. If you read the full compiler error message then it will take you to the cause of your problem.
Older Delphi versions don't give you the extra information. So if you are in that position, you will have to search your source code for the extra MkDir
.
Update
Following the edit to the question that adds code, we can see that the incompatible overload arises from a rather surprising source. Your code is:
program Project1;
{$APPTYPE CONSOLE}
uses SysUtils, System;
begin
MkDir('Test');
end.
好吧,System
会自动包含在每个单元中,编译器跳过 uses
子句是一个编译器缺陷。但错误地第二次包含 System
才是导致歧义的原因。
现代版本的 Delphi 解决了这个问题,您的代码结果为
[dcc32 Error] E2004 Identifier redeclared: 'System'
显然,解决方案是删除 System
的虚假使用。
关于Delphi 对 MkDir 的不明确重载调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29828617/
我在 linux 上工作。我对windows没有太多想法。 windows中文件的权限是如何组织的?我们在unix中是否有像chmod这样的api来更改权限? 最佳答案 对于 Windows,有一个名
应用程序编程接口(interface) (API) 是一组用于访问基于 Web 的软件应用程序的编程指令和标准。 如果出现 ,有人可以向我解释一下吗?谷歌地图 或 优酷 这是API哪个是softwar
我有两个应用程序,A 和 B,它们使用 android 库 C。B 有一个服务 A 想通过 C 使用,例如 在我的库中有一个类试图将它绑定(bind)到服务,
我正在正常或安全模式下启动相机应用程序,具体取决于使用我的应用程序执行的手势,但一旦用户选择应用程序并点击始终,则没有选项可以更改默认值,即使是从 Android 的设置菜单中也是如此. camera
我有一个数据集,本质上是一个稀疏二进制矩阵,表示两个集合的元素之间的关系。例如,让第一组是人(用他们的名字表示),例如像这样的东西: people = set(['john','jane','mike
何为pythonic? pythonic如果翻译成中文的话就是很python。很+名词结构的用法在中国不少,比如:很娘,很国足,很CCTV等等。 我的理解为,很+名词表达了一种特殊和强调的意味。
某些 Prolog 目标的确定性成功问题已经一次又一次地出现在 - 至少 - 以下问题: Reification of term equality/inequality Intersection an
我指的是 DateTime.TryParse(string s, out DateTime result) 重载,它尝试从字符串中解析 DateTime - 没有特定的格式正在指定。 我可以从http
2020 年 04 月 10 日,《中共中央国务院关于构建更加完善的要素市场化配置体制机制的意见》正式公布,将数据确立为五大生产要素(土地、资本、劳动力以及技术)之
有人可以解释一下 NSNotification 的 addObserver 函数中 notificationSender 的用途吗? 这是 Apple 文档的解释: notificationSende
我是一名优秀的程序员,十分优秀!