问题标签 [datasnap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
661 浏览

delphi - 如果将 json-min.js 替换为 json2.js 以修复 jQuery mobile,则 DataSnap XE 返回 TJSONObject 作为字符串

json-min.js 破坏了一些库,例如 jQuery mobile。解决方法是将文件替换为 json2.js,并将 js/* 中的 toJSONString 替换为 JSON.stringify()。

修复: https ://forums.embarcadero.com/thread.jspa?threadID=53872

但是,这样做会使 typeof serverMethods().mymethod() 返回 'string' 而不是 'object'。

有没有人遇到过这个问题并找到了解决方案?

0 投票
1 回答
638 浏览

delphi - 人们如何在 Web 客户端上使用 DataSnap XE 处理分页?

我正在使用 jQuery Mobile 将一些数据拉回列表视图。我需要对此进行分页,但似乎无法让表格过滤器 (url/class/function/?t.r1,20) 工作。

我想我读过 XE 不会做额外的 url 参数(XE2)所以我不能做我自己的 ?page=2 东西。

0 投票
0 回答
1060 浏览

delphi - DataSnap 并创建动态 SQLConnection

我正在创建我的第一个DataSnap项目。我的 DSserver(服务应用程序)具有以下结构:

所以我需要动态创建“数据库连接模块”并在调用“第一个 serverMethods 模块”时从“第一个serverMethods模块”绑定来自“数据库连接模块”的TSQLconnection的 TSQLQuery 。但是开放数据集上的客户端(调用服务器方法)抛出。error message: "TSQLconnection property is required"

请问,如何将 TSQLconnection 绑定到 TSQLQuery 运行时?

0 投票
1 回答
1866 浏览

delphi - Delphi XE2 Datasnap 回调

我正在尝试进行回调,发送不同的对象类型和对象的一些额外信息。所以我做了这门课:

在不同的情况下,我在 Obj 字段中创建不同的对象,但执行 DSServer.BroadcastObject "Internal: Cannot instantiate object ..." 时总是收到错误消息

这是我非常简单的例子:http ://www.4shared.com/file/fONlAGM3/DataSnapExample.html

请查看示例并告诉我出了什么问题...

0 投票
2 回答
6720 浏览

delphi - 如何从已处理/捕获的异常中获取堆栈跟踪并将其转储到跟踪日志

我们使用 Bob Swart 的白皮书作为指南创建了一个 Datasnap 服务(使用 Delphi XE)。它工作正常,我们已将其部署到我们的测试服务器。

现在出现了一个问题,当我们执行了大量请求(通过 JMeter)时,会发生某种内存损坏。一些请求成功,一些因访问冲突而失败。最后,它变得如此腐败,以至于对我们的 OWN(而不是 DSAdmin)方法的每个请求都以访问冲突作为响应。

但是,我无法通过堆栈跟踪来获取更多信息,因为在处理请求时已经捕获了异常。

如果我使用此应用程序的 VCL 版本进行大量测试,它仍然可以正常工作。

有没有人知道这可能是什么,或者遇到了同样的问题,或者你能帮我从捕获的异常中获取堆栈跟踪(在别人的代码中,我无法编辑)?

提前致谢。

0 投票
2 回答
1884 浏览

delphi - 使用 Delphi XE2 将 Datasnap 创建为 Windows 服务返回错误 1057

我已成功按照本教程创建了一个 Datasnap 服务器作为 Windows 服务。我可以使用命令行安装它并添加 /INSTALL。但是,当我按照 Delphi XE2 的相同教程进行操作时,我无法安装该服务(尽管我是管理员)。

它返回以下错误:

如何使用 Delphi XE2 编译 Datasnap 服务?

0 投票
1 回答
608 浏览

delphi - 使用 Delphi Prism 编写 DataSnap 客户端

我正在尝试在 Visual Studio 2010 中使用 Delphi Prism 编写数据快照客户端。当我尝试使用 DataSnap 提供程序创建数据连接(在服务器资源管理器中)时,出现此错误:

找不到请求的 .Net Framework 数据提供程序。它可能没有安装。

0 投票
0 回答
718 浏览

delphi - 通过 DataSnap 远程访问动态创建的 TSQLConnection

Delphi XE2 提供从客户端对服务器端连接的 DataSnap 访问。TSQLConnection 驱动程序“datasnap”有一个属性“ServerConnection”,用于指定一个返回服务器端 TDBXConnection 的函数。例如: ServerConnection='dsadmin.getConnection("FBCONNECTION")' 返回 Firebird 连接(在数据资源管理器中列出)。

我没有使用数据资源管理器,而是在运行时创建了我的服务器 sql 连接。应该可以编写我自己的 MyFuncGetDatabase() 服务器端函数并设置 ServerConnection='MyFuncGetDatabase()'。但是如何实现像 MyFuncGetDatabase() 这样的服务器端函数呢?我还没有找到任何提示必须在哪里实现和/或注册这些方法。

0 投票
1 回答
2004 浏览

delphi - 协调错误:有人遇到过截断错误消息的问题吗?

我又来找你帮忙了。这一次我相信很少有人会回应,因为我将要提到的问题非常特殊。我从 DataSnap 的世界开始,仍然有一些我不明白我将如何关联这个错误的事情。

我的 Delphi 是 XE(版本 1,Update1)。我正在使用 Postgres,它会在葡萄牙语(巴西葡萄牙语)中生成错误消息,因此错误消息带有重音符号。连接组件是 ZeosLib 包。

我正在使用对话框“协调错误”来显示因应用更新而产生的错误并进行测试,我试图插入一条已经存在的记录,从而违反了唯一键,从而显示了协调错误对话框。

在对话框的备忘录中,出现的消息被截断,即截断。看看这个:

但实际上应该返回的是这样的:

我在服务器上做了debug,看看是不是ZeosLib的问题,但是发现服务器上生成的错误信息是完整的,证明ZeosLib没有截断信息。一切都是unicode。在我的程序和 ZeosLib 中,所有字符串都是 WideString(默认)。

众所周知,要在服务端抛出,异常是通过DataSnap转发到客户端,而在客户端,TClientDataSet的Reconcile方法验证是否有问题,然后抛出著名的异常EReconcileError,可以在 TClientDataSet 的 OnReconcileError 事件中处理,因此我相信该消息正在被 DataSnap 截断。

在客户端上,我调试 Reconcile 方法 (DBClient.pas) 并在抛出异常之前立即进入 cpp 源代码中的函数,我认为该函数是 midas.dll 库的一部分,更具体地说是 MidasLib.obj,因为我是使用此策略,不必将 DLL 与我的应用程序一起分发。

此调用在 Delphi XE Update1 上的单元 DBClient.pas 的第 1952 行完成。按 F7,调试器进入源 C++ (cpp),所以我相信它在 midaslib.obj 中。我怎么不太懂 C++,我按 Shift-F8 退出当前方法并返回下一条指令,该指令已经在事件 OnReconcileError 中!!因此,截断必须在我提到的函数内、cpp 源代码内、midaslib 内完成。

我的目的是使 Reconcile Error 对话框不仅成为最终用户的工具,而且还支持个人,分别提供错误、详细信息和上下文信息。这对发现问题有很大帮助。

现在的问题是使消息完整显示。有没有人遇到过这种消息被 midas 截断的问题?

还有一点 DSClient.pas 我可以提取错误消息,因为它被传递给异常:

如果您删除引号并将#$A(1 个字符)替换为一个空格(一个字符),您将看到该字符串正好有 255 个字符!!

我还发现 dspickle.cpp 中的“GetErrorString”使用在 bdetypes.h 中定义为 127(255 的一半)的常量 DBIMAXMSGLEN。就像我们在 Unicode 的世界中一样,将这个值增加到 255 以便每个字符有两个字节不是问题吗?这只是猜测...

我把这个问题悬而未决,因为我缺乏理解 C++ 的知识 :) 谁能帮忙,看看 dspickle.cpp 中的函数实现“GetErrorString”。有这个:

pString 是错误消息并且 DBIMAXMSGLEN = 127。

0 投票
4 回答
482 浏览

web-services - 如何从默认页面 WebService 中隐藏标准接口

前段时间我一直在考虑如何从 Web 服务的默认页面中隐藏 IAppServer 和 IAppServerSOAP 接口以及默认显示的接口。我知道我的 Webservice 接口将这些接口作为祖先,但我认为在默认页面上“看到”这些接口是毫无意义的,因为客户端程序不直接使用它们。

有什么方法可以隐藏这些界面,只保留我们的界面和其他创建的界面吗?