[fpc-pascal] TypeInfo question

Ryan Joseph ryan at thealchemistguild.com
Fri Mar 24 03:51:20 CET 2017


I think I already learned this and I forget when I had the idea about TypeInfo. :) 

This is basically the pattern I’m attempting. I have a generic class and I thought I could avoid specializing and making a subclass so that I could call a method if the type of the generic was a class. So what happens as you now is that I can’t cast “value” to TObject because if the generic was specialized as an integer for example, the type cast would be illegal and I get stuck at compile time (Illegal type conversion: "LongInt" to "TObject”).

Is there anyway I could push the type checking to runtime? I wanted to using writeln also to perform some printing for debugging but I get stuck at compile time again trying to mix, integers, strings, records, classes etc… in the generic. I would use an interface but there are compiler types and records involved so that’s not an option.

type
	TLongIntMatrix = specialize TMatrix<LongInt>;
	TObjectMatrix = specialize TMatrix<TObject>;


function TMatrix.RetainValue (value: T): T;
begin
	if typeKind = tkClass then
		TObject(value).Retain;
		
	result := value;
end;



Regards,
	Ryan Joseph




More information about the fpc-pascal mailing list