gpt4 book ai didi

delphi - DataSnap 服务器方法 - 编码嵌套对象

转载 作者:行者123 更新时间:2023-12-03 15:56:09 30 4
gpt4 key购买 nike

我在 Delphi XE6 中有一个 datasnap 客户端/服务器

我在客户端的以下服务器方法调用中收到无效的指针操作。

S := ClientModule1.ServerMethods1Client.getReport(RunReportObj,
ReturnFileSize);

当我调试(步入)时,它发现错误位于我传递给服务器方法的 TRunReportObj 的嵌套对象内

 TRunReportObject
private
...
fCriteria: TCriteriaList;
...
public
function AddCrit(Const aField, aOperation: String; Const aValues: TStrings): TCriteriaObject;
property CritObjects[index: Integer]: TCriteriaObject read GetCritObject;
property Criteria: TCriteriaList read fCriteria write fCriteria;
...
end;

TCriteriaList 是 TObjectList

TCriteriaObject = class(TJSONParamObject)
private
fField: String;
fOperation: String;
fValues: TStringList;
function GetJSONObject: TJSONObject; override;
public
property Field: String read fField write fField;
property Operation: String read fOperation write fOperation;
property Values: TStringList read fValues write fValues;
constructor create;
destructor destroy;override;
end;

如果我将 fValues: TStringList 更改为字符串,则效果很好

所以,问题出在字符串列表属性“Values”上,我已确保它被创建和销毁

constructor TCriteriaObject.create;
begin
inherited Create;
fValues := TStringList.create;
end;

destructor TCriteriaObject.destroy;
begin
fValues.Free;
inherited destroy;
end;

我认为可能存在编码问题???谁能证实这一点?

最佳答案

我在Delphi XE6中也遇到过类似的问题。我必须将任何 TStringList 转换为 String。

就你的情况而言:-

fValues:字符串;

属性值:字符串读取GetValues写入SetValues;

在例程 GetValues 和 SetValues 中,您需要在字符串之间进行转换。

关于delphi - DataSnap 服务器方法 - 编码嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37661047/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com