Thanks for the quick response!!! But You caught me wen I as trying to remove this thread.
Sorry I've made a mistake I've tried to change FLista to FList to make it more readable and I forgot to change those names

. And other mistake I did in my code does not appears here I called the Add method without creating MyObject

but the weird thing is that execution went through many lines of code before reaching the line FList.Add!!!
TMyClass = class(TObject)
...
FList: TFPList;
...
end;
constructor TMyClass.Create;
begin
FList := nil;
FList := TFPList.Create;
end;
function TMyClass.Add(.....): Integer;
begin
if not Assigned(FList) then begin // Added because the last line caused an AV but now the AV occurs Here!!!
FList := TFPList.Create; // Added because the last line caused an AV
end; // Added because the last line caused an AV
New(UnDato);
UnDato^.Ubicacion := UnaUbicacion;
UnDato^.Orden := UnOrden;
UnDato^.TipoDato := UnTipoDeDatoFijo;
UnDato^.Texto := UnTexto;//}
Result := FList.Add(UnDato); // originally this caused the error
I would have expected the AV a lot earlier: when I call MyObject.Add()
procedure TForm1.Button1Click(...);
begin
...
MyObject.Add(.....);
...
end;
This is not the first time it happened to me.