There appear to be, between Data Abstract 7 up to Data Abstract 10, many breaking non backwards compatible changes.
Is there a documented list of those?
Is there still a binary DLL dependency on mozilla spidermonkey?
https://docs.dataabstract.com/BreakingChanges/
- uDaClasses
- TDASqlCondition defined in uDAPlainWhere
- IDADataset.Where now called…?
- Service Create proxy changes.
// this autogenerated service implementation creation calls a proxy which no longer contains the Create(URI) overload..
class function CoLoginService.Create(const aUri: TROUri): ILoginService;
begin
Result := TLoginService_Proxy.Create(aUri); // [dcc32 Error] RentalPointService_Intf.pas(88): E2250 There is no overloaded version of 'Create' that can be called with these arguments
end;
The actual proxy constructor code is now
constructor TROProxy.Create(const aRemoteService: IRORemoteService);
begin
{$IFNDEF TROPROXY_IGNORES_REMOTESERVICE_SERVICENAME}
Create(aRemoteService.ServiceName, aRemoteService.Message, aRemoteService.Channel);
{$ELSE}
Create(aRemoteService.Message, aRemoteService.Channel);
{$ENDIF}
CloneMessage := aRemoteService.CloneMessage;
end;
//The initialization code in the impl initialization no longer compiles...
initialization
RegisterProxyClass(ILoginService_IID, TLoginService_Proxy);
RegisterProxyClass(IDataService_IID, TDataService_Proxy);
I had a helper function called WhereCodes in my app that looks like this. I can not figure out how to move it forward into DA 10. It takes an IDADataset interface, and adds a where filter condition.
The IDADataset.Where is gone, there’s a DynamicWhere but there’s no similar way to add a where fieldname equal or less than some value like this helper does:
function WhereCodes(ds:IDADataset; fieldName,fieldValues:String;likeFlag:Boolean):Boolean;
var
// fieldValuesSet:String;
s:TStringList;
ct:Integer;
n : Integer;
condition:TDASqlCondition; // TDASQLCondition enum
begin
result := False;
if (fieldvalues='')or(Pos('''',fieldvalues)>0)or (Pos('--',fieldValues)>0)or (Pos('/*',fieldValues)>0) then
begin
exit;
end;
if (fieldname='')or(Pos(' ',fieldName)>0)or (Pos('''',fieldName)>0) or (Pos('--',fieldName)>0) or (Pos('/*',fieldName)>0)then
begin
exit;
end;
if likeFlag then
condition := cLike
else
condition := cEqual;
if Pos(',',fieldvalues) = 0 then
begin
if likeFlag then
begin
fieldValues := fieldValues + '%';
end;
ds.Where.AddCondition( fieldName, condition, fieldValues );
end
else
begin
s := TStringList.Create;
s.Delimiter := ',';
try
s.DelimitedText := fieldValues;
ct := s.Count-1;
if s[ct]='' then
dec(ct);
for n := 0 to ct do
begin
fieldValues := s[n];
if likeFlag then
begin
fieldValues := fieldValues + '%';
end;
ds.Where.AddCondition(fieldName,condition,fieldValues);
if (n<ct) then
ds.Where.AddOperator(opOR);
end;
finally
s.Free;
end;
end;
end;
Also having problems with DA interface IMPLEMENTATIONS of a IROService service’s newly required methods… SupportInfo etc
example of an _IMPL compilation error, probably caused by uROEncoding types being new.
{ TRentalPointService }
TRentalPointService = class(TRORemoteDataModule, IRentalPointService)
procedure RORemoteDataModuleCreate(Sender: TObject);
[dcc32 Error] RentalPointService_Impl.pas(118): E2291 Missing implementation of interface method IRentalPointService.DoAssetOperation
[dcc32 Error] RentalPointService_Impl.pas(118): E2291 Missing implementation of interface method IRentalPointService.UndoOperation
[dcc32 Error] RentalPointService_Impl.pas(118): E2291 Missing implementation of interface method IRentalPointService.GetSystemInformation
[dcc32 Error] RentalPointService_Impl.pas(118): E2291 Missing implementation of interface method IRentalPointService.SetRentalPointOperatorInfo
[dcc32 Error] RentalPointService_Impl.pas(118): E2291 Missing implementation of interface method IRentalPointService.DoCompleteOperation
[dcc32 Error] RentalPointService_Impl.pas(118): E2291 Missing implementation of interface method IRentalPointService.SupportInfo
[dcc32 Error] RentalPointService_Impl.pas(118): E2291 Missing implementation of interface method IRentalPointService.UrlFor
[dcc32 Error] RentalPointService_Impl.pas(118): E2291 Missing implementation of interface method IRentalPointService.UrlForWeb
[dcc32 Fatal Error] RentalPointService_Impl.pas(1385): F2063 Could not compile used unit 'UriHelperU.pas'