Ver Mensaje Individual
  #1  
Antiguo 12-05-2023
bucanero bucanero is offline
Miembro
 
Registrado: nov 2013
Ubicación: Almería, España
Posts: 208
Reputación: 11
bucanero Va camino a la fama
Error al aplicar HELPER sobre varios TARRAY

Hola a todos!!

Me estoy encontrando con un problema al usar helper sobre ciertas estructuras de datos, y no se si es un error mío en la forma de aplicar los helpers, o un error de la versión de delphi, detallo el problema:

Con la siguiente estructura de datos y helper todo funciona correctamente y al pulsar el botón ejecuta su proceso sobre cada estructura de datos, y hasta aquí todo correcto:

Código Delphi [-]
type
  TDatoA = record
    A: integer;
  end;

  TDatoB = record
    B: integer;
  end;

  /// 1.)
  TArrayA = Array of TDatoA;
  TArrayB = Array of TDatoB;

  TArrayAHelper = record helper for TArrayA
    procedure Proces_A;
  end;

  TArrayBHelper = record helper for TArrayB
    procedure Proces_B;
  end;

procedure TForm2.Button1Click(Sender: TObject);
var
  A: TArrayA;
  B: TArrayB;
begin
  /// ...
  A.Proces_A;
  B.Proces_B;
end;

Pero si los array de datos en vez de estar definido como en la forma 1 los defino a través de la estructura TArray que internamente se supone que es identico:

Código:
   /// 2.)
   TArrayA = TArray<TDatoA>;
   TArrayB = TArray<TDatoB>;
entonces me aparece un error de compilador indicando:
[dcc32 Error] Unit2.pas(61): E2003 Undeclared identifier: 'Proces_A'

El error básicamente es similar a cuando a una estructura de datos se le pretende asignar varios helpers distintos, pero en este ejemplo concreto son dos estructuras de datos distintas.

La solución pasa por no usar TARRAY, pero ¿realmente es un error de uso de HELPERS? o ¿es un bugs de delphi?
Responder Con Cita