LastObject ist als TObject deklariert. Der Compiler kann also nicht wissen, dass deine eigene Klasse dahintersteckt. Du musst also entweder einen Typecast machen:
Delphi-Quellcode:
TSpectraII(LastObject).IsLog(Data); //hart
(LastObject as TSpectraII).IsLog(Data); //weich
ein weicher cast ist übrigens meist vorzuziehen, dabei wird eine überprüfung vorgenommen, ob auch wirklich das richtige objekt vorliegt.
ansonsten solltest du eine basisklasse definieren, die diese methode bereits enthält, wie rwachtel geschrieben hat. das geht so:
Delphi-Quellcode:
type
TDevice = class {abstract} (TObject); //class abstract funktioniert ab Delphi 2005
public
function IsLogData: Boolean; virtual; abstract;
end;
das schlüsselwort "virtual" besagt, dass die methode in einer nachfolgerklasse überschrieben werden kann, "abstract", dass sie in dieser Klasse nicht implementiert (=ausprogrammiert) wird.
überschrieben wird sie dann so:
Delphi-Quellcode:
type
TSpectraII = class(TDevice)
public
function IsLogData; override;
end;
override sorgt dafpr, dass der aufruf von IsLogData nicht auf die abstrakte Methode des vorgängers prallt, sondern auf die tatsächliche klasse umgeleitet wird.