Delphi C#提取嵌入式资源的等效代码
Delphi equivalent code of C# extraction of Embedded Resource
我从 Youtube 中找到了这段代码,它展示了如何提取嵌入式资源,我的修改将从另一个应用程序中提取。
private static void Extract(string FileName, string nameSpace, string outDirectory, string internalFilePath, string resourceName)
{
Assembly assembly = Assembly.LoadFile(FileName);
string ManifestString = nameSpace + '.' + (internalFilePath == "" ? "" : internalFilePath + ".") + resourceName;
using (Stream s = assembly.GetManifestResourceStream(ManifestString))
using (BinaryReader r = new BinaryReader(s))
using (FileStream fs = new FileStream(outDirectory + "\" + resourceName, FileMode.OpenOrCreate))
using (BinaryWriter w = new BinaryWriter(fs))
w.Write(r.ReadBytes((int)s.Length));
}
我们有任何 Delphi 等效代码吗?
我会说你有两个选择。
- 承载 CLR,并使用 CLR API 调用它。
- 创建一个 .net class 库并让它为您完成工作。从您的 Delphi 代码中使用 .net class 库。
第一个选项真的一点都不好玩。 CLR API 非常强大,但学习曲线也很陡峭。
第二个选项非常简单。使用 C# 并通过 COM 或 UnmanagedExports 导出功能。这将允许您使用问题中的代码。或者使用混合模型 C++/CLI class 库并公开公开功能的 classic 非托管 DLL 导出。这将需要您将问题中的代码转换为 C++。
我从 Youtube 中找到了这段代码,它展示了如何提取嵌入式资源,我的修改将从另一个应用程序中提取。
private static void Extract(string FileName, string nameSpace, string outDirectory, string internalFilePath, string resourceName)
{
Assembly assembly = Assembly.LoadFile(FileName);
string ManifestString = nameSpace + '.' + (internalFilePath == "" ? "" : internalFilePath + ".") + resourceName;
using (Stream s = assembly.GetManifestResourceStream(ManifestString))
using (BinaryReader r = new BinaryReader(s))
using (FileStream fs = new FileStream(outDirectory + "\" + resourceName, FileMode.OpenOrCreate))
using (BinaryWriter w = new BinaryWriter(fs))
w.Write(r.ReadBytes((int)s.Length));
}
我们有任何 Delphi 等效代码吗?
我会说你有两个选择。
- 承载 CLR,并使用 CLR API 调用它。
- 创建一个 .net class 库并让它为您完成工作。从您的 Delphi 代码中使用 .net class 库。
第一个选项真的一点都不好玩。 CLR API 非常强大,但学习曲线也很陡峭。
第二个选项非常简单。使用 C# 并通过 COM 或 UnmanagedExports 导出功能。这将允许您使用问题中的代码。或者使用混合模型 C++/CLI class 库并公开公开功能的 classic 非托管 DLL 导出。这将需要您将问题中的代码转换为 C++。