我们已经在Delphi 10中开发了一个DLL,可在某些旧版Delphi 6应用程序中使用它。DLL中的新功能仅适用于少数几个客户端,因此不需要推广到我们的所有客户端。如果我们尝试在没有DLL的情况下部署Delphi 6应用程序,则会出现错误“由于找不到xxx.dll,所以无法继续执行代码”。应用开始运行时,我们会收到错误消息。如果DLL不存在,是否有办法防止此错误?在我们的Delphi 6代码中,我们已经使用FileExists(xxx.dll)来查看是否应该使DLL中的功能可用,因此,如果没有dll,我们就不会冒应用程序崩溃的风险。
我们也很想知道Delphi 6应用检查DLL的位置/时间,因为它发生在Application.Initialize之前,它是DPR文件中的第一行代码。
我正在使用 Indy 调用第 3 方 API
\nvar loRespJson: TMemoryStream;\nIdHTTP1.GET(lsURL, loRespJson)\nRun Code Online (Sandbox Code Playgroud)\n它返回一个 JSON 数组:
\nvar loRespJson: TMemoryStream;\nIdHTTP1.GET(lsURL, loRespJson)\nRun Code Online (Sandbox Code Playgroud)\n反过来,我的函数创建一个新的 JSON 对象,添加附加信息和响应,并将其返回给调用程序。期望的结果:
\n[\n {\n "Active": "1",\n "SourceId": "215",\n "SourceName": "MyVal1"\n },\n {\n "Active": "1",\n "SourceId": "383",\n "SourceName": "MyVal2"\n }\n]\nRun Code Online (Sandbox Code Playgroud)\n我怎样才能实现上述目标?如果我使用以下内容添加,它会在数组周围创建“”(引号),这在解析 JSON 时是一个大问题:
\nloJSon.AddPair(TJSONPair.Create(\'responseCode\', IntToStr(idHttp1.ResponseCode)));\nloJSon.AddPair(TJSONPair.Create(\'companyNo\', CompanyNo));\n\nif idHttp1.ResponseCode = 200 then\nbegin\n lsRespMsg := StreamToString(loRespJSon);\n liSuper := SO(lsRespMsg);\n loJSon.AddPair(TJSONPair.Create(\'responseMessage\', liSuper.AsJSon()));\n \xe2\x80\xa6\nRun Code Online (Sandbox Code Playgroud)\n我也尝试过循环遍历 JSON 数组,但该选项在每个数组项周围添加了“”
\n{ create an json-array }\nloJSA := TJsonArray.Create();\n{ add array to object }\nloJSP …Run Code Online (Sandbox Code Playgroud)