如何检查嵌入式资源是否存在?

Jer*_*dge 9 delphi validation embedded-resource

在Delphi中,我正在构建一个HTTP应用程序或Web服务器.它本质上是一个内置在单个EXE文件中的整个网站.我嵌入的文件包括HTML,JS,CSS,SWF,PNG,XML等.资源名称与原始文件名相同,.替换为_.最后,EXE中将嵌入大约40-60个文件.

问题是我不想编写包装每个单独文件的代码.现在,我正在为每个资源声明一个常量,并在使用时获取资源时使用该常量TResourceStream.HTTP请求要求任何特定文件,因为我将有一堆文件,我不想要一个单独的方式来处理每个文件.另外,将来,当我添加一个要嵌入的新文件时,我应该做的就是将它添加到我的资源脚本(.rc)中.所以我决定改变我的机制来自动解析所请求的文件名到资源的名称.例如,/Home.HTML解析HOME_HTML为应该是嵌入资源的名称.我需要在加载之前检查这样的资源是否存在.

我可以尝试加载它并捕获任何异常,但如果资源不存在,这将在调试中产生错误.如何在不使用的情况下进行此类检查try..except

ain*_*ain 20

您可以使用FindResource API

if(FindResource(hInstance, PChar(ResourceName), RT_RCDATA) <> 0)then begin
   // load the resource
end
Run Code Online (Sandbox Code Playgroud)