Hola Neftali, gracias por responder!!
Si después de unas cuantas pruebas llegue a esa misma conclusión, el problema se encuentra en esta definición
class of TInifile que es la que determina el orden de búsqueda, y es que al no poder hacer override sobre el constructor por que la clase padre no lo permite, si el compilador se encuentra con varias clases constructoras declaradas de forma idéntica, entonces la búsqueda de procesos la realiza internamente a algo parecido a una lista con esta forma:
Código:
1:TINIFile{ constructor Create(const FileName: string); }
2: Resto de clases ascendentes a TINIFile
...
N:TMyIniFile { constructor Create(const FileName: string); }
así que el compilador simplemente coge el primer método que encuentra en la lista que sea del tipo que busca, en este caso el definido para TINIFile.
Y lo solucione creando una clase intermedia (TAvIniFile) donde se define el constructor de forma virtual para así poder sobre-escribirlo en las clases descendientes,
Código Delphi
[-]
interface
type
TAvIniFile = class(TIniFile)
public
constructor Create(const FileName: string); overload; virtual;
end;
TMyIniFile = class(TAvIniFile )
private
public
constructor Create(const FileName: string); override; end;
TClassIniFile = class of TAvIniFile;
implementation
constructor TAvIniFile.Create(const FileName: string);
begin
inherited;
end;
...
y finalmente sustituyo la declaración de classInifile por
TclassInifile = class of TAvInifile, de esta forma la lista de búsqueda quedaría así:
Código:
1: clases descendientes a TAvIniFile con el constructor sobre-escrito, aquí se incluye TMyIniFile
2: TAvIniFile{ constructor Create(const FileName: string); }
3: TINIFile{ constructor Create(const FileName: string); }
4: Resto de clases ascendentes a TINIFile
Gracias de nuevo por responder
Un saludo