有没有人知道如何(如果)我可以获取Delphi的已知修复错误修复程序(特别是与Clientdatasets中的索引相关的QC report #125506)
我知道它已经在XE7中得到修复,但我反对(!!!)支付1000英镑+从XE6更新到XE7,当时我只有XE6几个月,我花时间识别我从XE6迁移到XE7的唯一原因是修复错误(咆哮)!
答案 0 :(得分:1)
将此作为"答案"发布的道歉但是有一些值得一提的东西在评论中不太适合(或者两个)。
正如您可能已经收集的那样,"决议评论"在QC#125506上没有说任何有用的东西,特别是关于改变了什么或在哪里例如在DBClient.Pas或Midas.Dll中。我刚刚在XE6& amp;中找到了DBClient.Pas的来源Beyond Compare。 XE7,变化很小:TCustomClientDataSet的声明有一个本地类声明" TPersistDataPacket"添加到它并有一些相应的变化,但他们是否承担QC#125506是不可能的。我想知道引用这些变化,但决定不考虑可能的版权或T& C问题。
XE6和XE7中的MidasLib.Pas版本相同,但MidasLib.Dcu的32位版本构建的大小略有增加,从241447增加到241646字节。奇怪的是,Midas.Dll实际上已经缩小了,从451960减少到437632字节。
一些明显的建议:
我不确定XE7的试用版是否包含Datasnap的东西,但考虑到费用,它肯定是值得的"在购买之前尝试"如果你能管理它。如果它不包括Datasnap,你可能会看到你是否可以获得XE7 Midas.Dll的副本 - 曾几何时Borland-as-was在允许最新的Midas.Dll方面相当自由与早期版本一起使用。可能值得在EMBA新组中询问这两点。
在QC#125506中,记者似乎在使用CDS IndexFieldNames属性时遇到了问题。如果你得到它的方式,你是否尝试过定义持久的IndexDef?以下代码适用于我(在Sql Server Pubs演示数据库的Authors表上测试)。
动态添加/使用IndexDef。
procedure TDefaultForm.AddIndex(AFieldName: String; CaseInsensitive: Boolean);
var
AIndexDef : TIndexDef;
AIndexName : String;
Options : TIndexOptions;
BM : TBookmark;
begin
if CDS1.IndexDefs.GetIndexForFields(AFieldName, CaseInsensitive) = Nil then begin
BM := CDS1.GetBookmark;
try
CDS1.DisableControls;
AIndexName := 'By' + AFieldName;
Options := [];
if CaseInsensitive then
Options := Options + [ixCaseInsensitive];
AIndexDef := TIndexDef.Create(CDS1.IndexDefs, AIndexName, AFieldName, Options);
CDS1.IndexName := AIndexName;
finally
CDS1.GotoBookmark(BM);
CDS1.FreeBookmark(BM);
CDS1.EnableControls;
end;
end;
end;
procedure TDefaultForm.btnAddClick(Sender: TObject);
begin
AddIndex('au_lname', True);
end;