Jonas Maebe wrote:

Assert(TypeOf(qt) = TypeOf(result));
This is always true. Everything descends from TOBject.
But assuming the result is not TObject, it would be
Assert((qt=Nil) or (qt.Inheritsfrom(TheResultClass))

So again skipping the nil check for simplicity, this compiles but are the semantics right?

Assert(qt.ClassType.InheritsFrom(result.ClassType));

The classtype is not needed.

The first one, at least.

The semantics are not right IMHO, but I'd have to see the original C stuff to be able to say with certainty.

Regardless of what the original C stuff was, the above is wrong because "result" is uninitialised. Inside the function you cannot know the type of whatever the result will be assigned to on the caller side. Maybe instead of "result" it should be "qf".

I see. So I could possibly do it with a third parameter provided that this was initialised to a dummy object, but otherwise the only possible check is that the two source objects are of the same type. In practice it's far better done with an inline if statement.

--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to