千家信息网

C# Delphi开发中的DLL怎么用

发表于:2025-01-16 作者:千家信息网编辑
千家信息网最后更新 2025年01月16日,这篇文章主要介绍C# Delphi开发中的DLL怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在以前用C# Delphi开发的项目中,会经常用到TChart这个画图控件,
千家信息网最后更新 2025年01月16日C# Delphi开发中的DLL怎么用

这篇文章主要介绍C# Delphi开发中的DLL怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

在以前用C# Delphi开发的项目中,会经常用到TChart这个画图控件,它本身很强大,支持各类图,如点线图,柏拉图,柱状图等等,加上可以输出成 BMP,JPEG,JPG,SVG,GIF等各种格式图片,很好用,当时也封装成比较独立的C# DLL文件。这次开发.NET程序正好派上用场。

C# Delphi开发几个关键技术点:

1.C#要以非托管方式调用DLL

2.C#把整理好的画图数据生成事先定义好格式的XML文件,传给DLL

3.C# DLL解析XML文件,根据相应格式,要求,画图

4.C# DLL输出GIF文件(经过比较GIF图像失真率小,且文件大小最小)

5.C#装载GIF文件,传到前台展示

C# Delphi开发关键代码:

  1. 以下是引用片段:

  2. #region 定义调用Delphi写的画图DLL

  3. ///

  4. /// 定义调用Delphi写的画图DLL

  5. ///

  6. private class DrawChartFromDll

  7. {

  8. //定义DLL文件名,此文件路径要加到系统Path中

  9. private const string _fileDll = @"Chart.dll";

  10. //调用非托管Dll,GetChartFromXMLByNet是ChartAccess.dll公开的函数名称

  11. [DllImport(_fileDll, EntryPoint = "GetChartFromXMLByNet",
    CharSetCharSet = CharSet.Ansi, CallingConventionCallingConvention =
    CallingConvention.StdCall)]

  12. //C#中的申明

  13. public static extern int GetChartFromXMLByNet
    (int piChartType, string psXMLFileName, string psPriChartFileName,
    string psSecChartFileName, string psPriHotFileName, string psSecHotFileName);

  14. }

  15. #endregion

  16. public ChartResultData GetCharts
    (ChartData _ChartData, Hashtable _HotPriAdditionSeqNo, Hashtable _HotSecAdditionSeqNo)

  17. {

  18. //根据数据生成XML文件

  19. string _xmlFileName = "";

  20. ChartResultData _ChartResultData = new ChartResultData();

  21. try

  22. {

  23. _xmlFileName = this.ConvertDataToXml(_ChartData);

  24. }

  25. catch (Exception err)

  26. {

  27. _ChartResultData.ErrMessage = err.Message;

  28. }

  29. ...

  30. //调用DELPHI,取得返回参数

  31. int _return = -1;

  32. try

  33. {

  34. _return = DrawChartFromDll.GetChartFromXMLByNet
    (m_chartType, _xmlFileName, _priChartFileName,
    _secChartFileName, _priHotFileName, _secHotFileName);

  35. }

  36. catch (Exception err)

  37. {

  38. if (_return > 0)

  39. {

  40. //删除临时生成的XML文件

  41. this.DeleteTempFile(_xmlFileName);

  42. this.DeleteTempFile(_priChartFileName);

  43. this.DeleteTempFile(_secChartFileName);

  44. this.DeleteTempFile(_priHotFileName);

  45. this.DeleteTempFile(_secHotFileName);

  46. _ChartResultData.ErrMessage = err.Message;

  47. return _ChartResultData;

  48. }

  49. else

  50. {

  51. //可能因为安全性问题,在频繁连续调用DLL方法时有可能出现內存保护错误信息,
    虽然出错,但方法已经正确调用并能返回正确的值,此时可以忽略此错误

  52. _return = 0;

  53. }

  54. }

  55. //删除临时生成的XML文件

  56. this.DeleteTempFile(_xmlFileName);

  57. ...

  58. }

以上是"C# Delphi开发中的DLL怎么用"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

0