Hello,
ml schrieb:
I made one wrong statement.
It's not "as" that doesn't work. getinterfaceentry works only for interfaces that have guid specified. By default guid is zeroed, and getinterfaceentry just returns first interface in table, which means wrong. Same problem shows in Support too.
Hmmm, Delphi gives a compile time error if "as" is used on an interface without GUID, same for support()... since both use the interfaces IID to query for existence of an interface (either directly or via QueryInterface of IUnknown).
Any better suggested approach? (Second possible solution would be implementing some other checking that's invoked if guid is 0) I am not familiar with what guid would be (I suspect that it has some higher meaning in windows, because all windows interfaces are specified with guid, now even m$ stopped using specified guid in .net), so I would
The GUID (=UUID) uniquely identifies a COM interface. A .net interface is not a COM interface, it's more a language construct like in Java.
By some wrapping any(?) .net interface can be used as COM interface afaik (and the other way round) though.
.net provides more advanced means of querying run-time type information than the ones available in Object Pascal, e.g. it likely does not need to rely on a GUID for these types of operation, so there's no need to specify this by default.
Btw, to implement unnamed properties of (non-COM) interfaces (as the one available in objfpc mode) there's imo need for more sophisticated rtti; e.g. so that this would work, you'd need a way to query the read and write methods of the particular class of the instance and call them.
Neither querying of properties nor getting info on the read/write methods of properties is possible atm since Object Pascal does not store this info anywhere by default afaik (for all visibility types of properties, for all Pascal objects).
[Maybe I'm wrong, I'm not so into rtti]
appreciate some help by suggesting. And yes, this is a bug not a feature.
Either automatically create a good GUID for the interface (there should be a CreateGUID() method in fpc), or error out like Delphi (to be
compatible).
Regards, Thomas
_______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal