Delphi “什么是”呢;I/O错误1785“;?

Delphi “什么是”呢;I/O错误1785“;?,delphi,delphi-xe7,Delphi,Delphi Xe7,我的程序中出现“I/O错误”1785 Vcl.FileCtrl.TDirectoryListBox.SetDirectory-> Vcl.FileCtrl.ProcessPath 我在Delphi的帮助中找不到对此的描述。来自帮助文件: 除了I/O错误和致命错误以外的所有错误都会使用操作系统返回的错误代码进行报告 由于列出的所有I/O错误都在100..106范围内,致命错误都在200..232范围内,因此这是一个操作系统错误,而SysErrorMessage(1785)将为您提供错误描述: 无法

我的程序中出现“I/O错误”1785

Vcl.FileCtrl.TDirectoryListBox.SetDirectory-> Vcl.FileCtrl.ProcessPath

我在Delphi的帮助中找不到对此的描述。

来自帮助文件:

除了I/O错误和致命错误以外的所有错误都会使用操作系统返回的错误代码进行报告

由于列出的所有I/O错误都在
100..106
范围内,致命错误都在
200..232
范围内,因此这是一个操作系统错误,而
SysErrorMessage(1785)
将为您提供错误描述:

无法识别磁盘媒体。它可能未格式化


实际错误是
error\u UNRECOGNIZED\u MEDIA
(感谢@JoachimIsaksson查找它,所以我不必这样做)。

我猜
error\u UNRECOGNIZED\u MEDIA 1785(0x6F9)磁盘介质无法识别。它可能未格式化。
可能是它。从帮助文件中:除了I/O错误和致命错误以外的所有错误都会用操作系统返回的错误代码报告。由于列出的所有I/O错误都在100..106范围内,致命错误在200..232范围内,因此这是理所当然的一个操作系统错误,
syserromessage(1785)
会给你一个错误描述(正如@Joachim所说)@KenWhite这应该是一个答案,我的只是从代码和IO错误中猜出来的:)但是当你有访问冲突时,他们会这样叫,而不是错误31973616。当你有范围检查错误时,他们也会这样叫,而不是59283782。@Beno:你混淆了异常和错误代码;它们不是一回事。函数returns是一个有用途的数值。例如,许多API调用成功时返回0,并返回一个错误代码。其他调用返回FALSE,您调用GetLastError()(它返回一个数字错误代码)找出失败的原因。访问冲突总是指同一件事。根据函数文档和返回值,返回代码可以指任意数量的事情,并且不能有一个集合名称。两个函数可以返回1785,它们可以有完全不同的事情。(续)错误代码1785实际上有多种含义。在处理SQL时,错误代码1785意味着在表“y”上引入外键约束“x”可能会导致循环或多个级联路径。在处理备份时,这意味着无法创建“%s”的临时备份文件。因为您既不使用这两种约束,也基于上下文,来自winerror.h(错误\u无法识别\u媒体)是适用于此处的。您没问题:可以查找代码以获得文本表示。但此查找应由代码本身完成。此异常由
System.SysUtils.CreateInOutError
生成,它仅将7个代码映射到硬编码的ResourceString。所有其他代码都被命名为此通用
EInOutError
消息文本。Emba应该更好地做到这一点。为了公平对待Emba,这种控制已经被弃用了大约15年,期望它永远改变是错误的。