Creo que el problema está en que el create de la clase base:
Código Delphi
[-]
constructor Create(const FileName: string);
Está definido de esta forma. Ni virtual, ni abstract,...
Si añades un método como este a tu clase:
Código Delphi
[-]
TMyIniFile = class(TIniFile)
private
public
constructor Create(const FileName: string); overload;
procedure WriteString(const Section, Ident, Value: String); override;
end;
Comprobará que realmente el objeto es de la clase correcta, porque al ejecutar este código:
Código Delphi
[-]
with config do
WriteString('prueba', 'prueba', '123');
Realmente ejecuta el método:
Código Delphi
[-]
procedure TMyIniFile.WriteString(const Section, Ident, Value: String);