On 10/17/2010 05:54 AM, Andrew Brunner wrote:
I've got a class factory problem I'm trying to resolve and it appears
I'm at a point where it's probably better to ask for help.

   TCoreObjects=class;
   TCoreObject=Class (TPersistent)
   protected
     class procedure VerifyIDs(var Module:TDBMSModule); Virtual; abstract;
   end;
   TAdminCore=Class(TCoreObject)
   protected
     class procedure VerifiyIDs(var Module:TDBMSModule); override;
   end;

<SNIP>

procedure VerifyIDs(Var Module:TDBMSModule);
var
   iLcv:integer;
   ItemP:PCoreObjectItem; // Just record storing classname to load and
(each core object implment is loaded just not detailed here for
simplicity)
   coGeneric:TPersistentClass;
   coItem:TCoreObject;
begin
   for iLcv:=0 to High(CoreObjectItems) do begin
     ItemP:=CoreObjectItems[iLcv];
     coGeneric:=GetClass(ItemP^.ClassName);
     if (coGeneric<>nil) and coGeneric.InheritsFrom(TCoreObject) then begin
       coItem:=coGeneric as TCoreObject<<  COMPILER ERROR :-(
coItem is an object while coGeneric is a class

       TPersistentClass(coItem):=coGeneric;<<  Compiles but get Runtime Error
same as above
       coItem.VerifyIDs(Module);<  CRASH @ RUNTIME
     end;
   end;
end;

How can I get each class's implement of VerifyIDs to get called as
each one is different but yet single.
Maybe using:
procedure TCoreObject.VerifyIDs(Var Module:TDBMSModule);
procedure TAdminCore.VerifyIDs(Var Module:TDBMSModule);


_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to