在提出这个问题后,我意识到要构建我需要的东西,我最好依靠一些框架"REST和JSON ready".
由于我拥有Delphi Professional,我应该升级到Enterprise以获得DataSnap.
现在,升级成本与DataAbstract成本处于相同的范围内.更新:此外,在未来升级到较新版本的Delphi Professional +更新版本的DA将比购买庞大的企业升级(如从XE到XE2)的成本更低.
从这里 RemObjects的人说"与专业一起工作"我也会考虑这个框架.此外,DataSnap似乎非常好(我读过这个,我没有尝试)只来自XE版本,而RemObjects有一个更坚实的过去.
那么谁知道所有产品都可以比较它们,特别是这些功能:
你会建议哪种产品?
为BOUNTY注意: 因为我不喜欢这个没有回答我开始赏金.我希望有人使用Datasnap或RemObjects回答原来的问题吗?
我正在为Delphi寻找一个好的免费脚本引擎.我想为应用程序添加脚本,以便我可以编写小的测试脚本.具体来说我需要:
我不需要全面的语言支持,只需要基础知识.我看到了这个:https://stackoverflow.com/questions/226135/scripting-library-for-delphi但是我假设事情已经发生了一些变化.
我想要做的就是在我的程序中添加一个备忘录组件,并在运行时向备忘录添加一个源代码片段,然后单击一个go按钮.我希望脚本能够访问我的应用程序的变量和函数.
实现这一目标的最简单方法是什么?示例程序如下.
program Project31;
uses
Forms,
Unit36 in 'Unit36.pas' {Form36};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm36, Form36);
Application.Run;
end.
Run Code Online (Sandbox Code Playgroud)
.
unit Unit36;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm36 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form36: TForm36;
implementation
{$R *.dfm}
procedure RoutineInMyApplication ;
begin
ShowMessage ('Hello from my Application') …Run Code Online (Sandbox Code Playgroud) 我需要在需要集中数据和文件存储系统(用于文档成像)的环境中部署Delphi应用程序,但是有多个分支机构具有相对较差的互连性.我相信3层数据库应用程序是最好的方法,因此我可以提供丰富的桌面体验,并且需要相对轻量级的数据传输.到目前为止,我简要介绍了Delphi Datasnap,kbmMW和Remobjects SDK.似乎kbmMW和Remobjects SDK使用最少的带宽.有没有人在具有大量用户的挑战性环境中部署任何这些技术的任何经验(我需要支持700+)?谢谢!
德尔福部分:
我有一个关于事件的类,从那个事件我需要调用一个将接口对象传递给它的过程.它在Delphi中工作正常,但我在Pascal脚本中声明它有问题.
在后台 - IGPGraphics接口是一部分Delphi GDI+ library而没有方法定义如下:
type
IGdiplusBase = interface
['{24A5D3F5-4A9B-42A2-9F60-20825E2740F5}']
IGPGraphics = interface(IGdiPlusBase)
['{57F85BA4-CB01-4466-8441-948D03588F54}']
Run Code Online (Sandbox Code Playgroud)
以下是我在Pascal脚本中需要做的简化Delphi伪代码:
type
TRenderEvent = procedure(Sender: TObject; const GPGraphics: IGPGraphics) of object;
TRenderClass = class(TGraphicControl)
private
FOnRender: TRenderEvent;
public
property OnRender: TRenderEvent read FOnRender write FOnRender;
end;
// when the TRenderClass object instance fires its OnRender event I want to call
// the RenderObject procedure passing the IGPGraphics interfaced object to it; I
// hope I'm doing it right, I'm just a …Run Code Online (Sandbox Code Playgroud) 我有一个使用RemObjects SDK在Delphi/C++ Builder中构建的服务器进程声称支持SOAP请求.
测试SOAP支持的最快捷,最简单的方法是什么?我不想学习新语言/安装新的IDE /花费超过一天...
为了澄清这一点,我已经使用RO本机协议愉快地连接到服务器,并启用了SOAP,但我想测试不基于RO SDK的系统如何使用它.对客户端和服务器使用RO SOAP无法实现此目的......
我有一个使用RemObjects通过Delphi XE实现的web服务,我想知道客户请求的IP地址.我的服务继承自TRORemoteDataModule,我没有找到任何方法或对象来做到这一点.
有什么建议吗?谢谢
注意:我认为我需要的信息是在方法中返回,self.transport.GetTransportObject()但它返回一个TObject,我不知道如何提取这些信息
我们有一个RemObjects SDK HTTP服务器,它公开了许多服务和方法.是否可以通过URI调用方法,而不是将参数作为SOAP/JSON传递,例如
http://www.mywebservice.com/servicename/methodname?param1=xxx¶m2=yyy
Run Code Online (Sandbox Code Playgroud) 请求在应用程序中更改注释字段最大大小.之前它已设置为varchar(500),因此在阅读文档后,我决定将字段的数据类型从varchar(500)更改为varchar(max).数据库接受的更改没有任何问题(使用Microsoft SQL Server Management Studio 2005和Microsoft SQL Server Management Studio 2008进行数据库管理).然后我继续改变软件.软件是用Delphi编写的,用RemObjects与数据库进行通信.所以我更改了服务器的TDASchema,它将我的新varchar(max)字段映射为String(65536)数据类型(让我有点担心这样一个明确的静态大小,但我继续).然后我检索了我的TDAMemDataTable对象的DataTable Schema,它更新了所有字段.
我启动了应用程序并决定查看我的数据库是否接受对此特定更改字段的更改.我已经编辑了其中一条记录并单击了按钮以将DataSet与服务器同步并获得了这样的失败消息:
数据类型varchar(max)和text在等于运算符中不兼容
我将其解释为我的服务器对象(使用RemObjects对象映射数据库字段的对象)已将字段数据类型映射到RemObjects中的错误数据类型.
怎么解决这个问题?有哪些替代方案?
PS在此版本中,从RemObjects构建.1267日志,它清楚地表明:
修复:DataSnap:无法将更新发布到MSSQL 2005 VARCHAR(MAX)
我正在使用构建版本.1067.不知道更新是否能解决问题
PPS更新到最新版本的RemObjects后,问题仍然存在.
我有一些简单的XML处理代码,它应该根据属性值定位传入节点的子节点:
function GetNodeByAttributeValue(
const AParentNode: IXMLNode;
const AttributeName: string; AttributeValue: Variant): IXMLNode;
var
i: integer;
value: Variant;
begin
result := nil;
if (not Assigned(AParentNode)) or (AttributeName = '') then
exit;
for i := 0 to AParentNode.ChildrenCount-1 do
begin
result := AParentNode.Children[i];
value := result.GetAttributeValue(AttributeName, UnAssigned);
if not VarIsEmpty(value) then
exit;
end;
result := nil;
end;
Run Code Online (Sandbox Code Playgroud)
很简单,对吧?但是当我尝试运行它时,在某些情况下它会因访问冲突而崩溃.这是发生了什么:
IXMP*实现由RemObjects SDK库提供. result.GetAttributeValue电话uROMSXMLImpl.TROMSXMLNode.GetAttributeValue,电话TROMSXMLNode.GetAttributeByName,说
node := fNode.attributes.getNamedItem(anAttributeName);
Run Code Online (Sandbox Code Playgroud)
这会崩溃因为fNode.attributes返回nil.据我了解,这不应该发生.
奇怪的是,回到原始函数中的for循环,AParentNode.ChildrenCount返回3.但原始XML文档中的节点只有一个子节点.它符合我正在寻找的标准.
<ParentNode>
<namespace:ChildNode name="right-name">
Run Code Online (Sandbox Code Playgroud)
但AParentNode.ChildrenCount …
我在Delphi Prism中编写了一个ASP.NET Web应用程序(不是站点).在我的devlopment机器上一切正常,但是当我在测试服务器上安装它时,我收到以下错误:
Server Error in '/MyApp' Application.
Parser Error
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.
Parser Error Message: 'Oxygene' is not a supported language.
Source Error:
Line 1: <%@ Application CodeBehind="Global.asax.pas" Inherits="MyApp.Global_asax" Language="Oxygene" %>
Source File: /MyApp/global.asax Line: 1
Run Code Online (Sandbox Code Playgroud)
我已经阅读了我在网上找到的所有内容.有几篇文章提到了一个RemObjects页面(http://devcenter.remobjects.com/articles/?id={B549AFB8-04C8-4574-B185-30DE14369E66}),遗憾的是,它不再存在.
一些链接表明您可以将Language ="Oxygene"更改为Language ="C#".尝试这会产生不同的错误:
Compiler Error Message: CS1061: 'ASP.login_aspx' does not contain a definition for 'ForgottenUsernameLinkButton_Click' and …Run Code Online (Sandbox Code Playgroud) 有人在RemObjects SDK中连接到服务器时知道如何检索客户端GUID吗?(使用SuperTCP/IP协议)
大家早上好.
我目前正在尝试编写一个围绕通过Windows DWM API提供的功能(例如DWM缩略图)构建的小应用程序.一个这样的功能是能够从应用程序中动态选择缩略图区域,并将其放大/放大.可以通过某种"设置区域"功能从DWM执行此操作,但是我我想先尝试自己的路线,然后才能进入API.
最近我发现了Delphi的一个例子,我曾希望从演示中扩展并构建更具体的东西.我着手将代码移动到Firemonkey FM2应用程序(因为我更喜欢框架的视觉功能与VCL相比).通过一些调整,我设法将其构建,但不幸的是DWMRegisterThumbnail,尽管VCL版本运行完美,但在FMX应用程序中运行时似乎不会返回有效结果.
然后我再看了一下,决定给Hydra一个机会.我将工作的VCL示例复制到Hydra插件,并创建了Firemonkey主机应用程序.我正确设置了两个部分并进行了编译.DLL加载正确,我可以按预期看到FMX主机内的VCL插件接口.但是,在尝试查看窗口的DWM缩略图时,我再次遇到了运行非hydra FMX应用程序时遇到的相同问题.
然后我开始创建一个VCL主机应用程序,以确保它不是特定于VCL-FMX交互的问题.我编译了VCL主机,加载到VCL插件中,我再次看到VCL主机内的VCL插件.然而,我仍然发现我无法从DWM查看缩略图.显然,这不是Firemonkey-VCL交互问题.
因此,我已经得出结论,从DLL运行DWM代码是一个问题.理想情况下,我想要一个FMX主机应用程序只是因为我更容易删除TSelection缩略图,并以这种方式处理缩放(例如,非常少的代码,而不需要寻找自定义组件)提及额外的奖金,如MakeScreenshot.
所以,切入追逐; 是否可以从Hydra插件调用DWM API,和/或将DWM缩略图输出到Firemonkey表面?
我的Hydra插件中使用的代码与链接示例中使用的代码相同,我的宿主应用程序中使用的代码基于Remobject Youtube Channel上的简单示例.
我想使用RemObject Pascal Scripter的另一个应用程序运行Delphi应用程序(使用表单vcl,表单等).
将RemObject Pascal Scripter支持delphi的所有领域,
如果是这样,我可以包括第三方VCL
如果没有,你可以建议我用表格和控件构建可解释的应用程序
delphi ×13
remobjects ×13
datasnap ×2
pascalscript ×2
.net ×1
asp.net ×1
database ×1
delphi-2009 ×1
delphi-prism ×1
delphi-xe ×1
delphi-xe2 ×1
dwm ×1
firemonkey ×1
inno-setup ×1
pascal ×1
scripting ×1
soap ×1
sql-server ×1
uri ×1
web-services ×1
xml ×1