On Wed, 11 Aug 2004, Olle Raab wrote:

> 04-08-11 21.08, skrev [EMAIL PROTECTED] följande:
> > 
> > But the IEnumerated interface part is really over the top. It requires the
> > compiler to have 'knowledge' of certain complex types, which is a bad
> > thing and totally arbitrary.
> 
> > The last time they did that was with Variants, which has been a dirty
> > mess every since. It destroys the beauty and strict typing of Object
> > Pascal...
> 
> Isn't this the same with exception handling, which requires knowledge of
> Exception class.

No, because you can raise an exception with any TObject. 
By default, the 'Exception' class is used as a base class, 
because it allows to set some standard message. There is no way for
the RTL to know how to 'show' a TObject. In SysUtils, Exception is defined,
and can be shown because it's 'message' property is known. SysUtils also
sets a handler so the RTL can 'show' an Exception.

home: >ppc386 testp.pp 
home: >./testp
Runtime error 217 at $08052074
  $08052074
  $080520CC
  $0805B32B

home: >cat testp.pp
{$mode objfpc}
program testp;

begin
  Raise TObject.Create;
end.

So the compiler is 'agnostic' when it comes to exceptions. TObject is the
base of all classes, so it is not arbitrary, it's part of the Object Pascal
language specification.

I would prefer the compiler to stay agnostic when it comes to complex types
such as variants, interfaces or whatever. At Borland, they obviously don't.

I remember making a remark once to a Borland Employee saying that "it is
heresy to introduce Variants in a strongly typed language such as Pascal"
to which I got the reply 'Yes, but the OS (=Win32) uses it, so...' :)

Reading the answer you got to the question of ordering, you hit the nail on
the head. There is no way the compiler can guarantee the order of a 
certain IEnumerable interface. It depends entirely on the implementation...

It's of course something to show off with on developer conferences with a
an audience of VB or Java programmers :-)

Michael.

_______________________________________________
fpc-pascal maillist  -  [EMAIL PROTECTED]
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to