У меня есть следующая структура:
Функция в классе для загрузки некоторых данных:
function TClasseDatasnap.BuscarEmpresas(var Dataset: TFDJSONDataSets): Boolean;
begin
Try
Try
F_ClientModule := TF_ClientModule.Create(nil);
Dataset := F_ClientModule.ServerMethods1Client.GetDadosEmpresa(0);
Result := True;
Except
On E:Exception do
Begin
Result := False;
TModelTratamentoErro.GetInstance.TratarErro(nil,E);
End;
End;
Finally
FreeAndNil(F_ClientModule);
End;
end;
И в своей форме я вызываю функцию, передавая переменную DadosEmpresa в качестве параметра:
procedure TF_Login.BuscarEmpresas;
var
DadosEmpresa: TFDJSONDataSets;
begin
{ F2.4.1 }
if TClasseDatasnap.GetInstance.BuscarEmpresas(DadosEmpresa) then
Begin
Mem_Empresas.Close;
Mem_Empresas.AppendData(TFDJSONDataSetsReader.GetListValue(DadosEmpresa, 0));
Mem_Empresas.Open;
End;
end;
Получение данных из datasnap работает отлично, однако, когда программа поступает в строку:
Mem_Empresas.AppendData(TFDJSONDataSetsReader.GetListValue(DadosEmpresa, 0));
Возникла следующая ошибка:
Project XXX.exe raised exception class EArgumentOutOfRangeException with message 'Argument out of range'.
Если я прокомментирую строку FreeAndNil(F_ClientModule);
, программа работает отлично.
Я знаю, что F_ClientModule отвечает за выполнение запросов к серверу datasnap, но я уже передал полученные данные в переменную, я что-то не так делаю?