[Oberon] Re (2): New complaint from Fox.

Jörg Straube joerg.straube at iaeth.ch
Sat Mar 3 09:57:40 CET 2018


You could declare
VAR D: Documents.Document; (iso Objects.Object)

Then all references to D(Documents.Document) simply could be replaced by D.

But you have to convert the result of Gadgets.CreateObject() to a Document

br
Jörg

> Am 02.03.2018 um 23:27 schrieb <peter at easthope.ca> <peter at easthope.ca>:
> 
> From:    Guenter Feldmann <fld at uni-bremen.de>
>> I could compile your Oberon.Sort.Mod without any problems in
>> LinuxA2 (7600), DarwinA2 (7600) and SolarisA2 (7600).
> 
> From:    Felix Friedrich <felix.friedrich at inf.ethz.ch>
>> I cannot reproduce your problem. Neither in Windows A2, nor in a 
>> freshly built Linux A2, nor from within LinuxA2 Generic rev. 7600
>> 
>> Maybe there is some hidden character in your file?
> 
> Apologies for the trouble.  It was an even worse blunder by me.  Some 
> time after posting Sort to the book I changed in my copy,
> AddSuffix(Documents.MarkedDoc().name, suffixArray, name)
> to
> AddSuffix(D.name, suffixArray, name)
> which, in foggy thinking, must have seemed OK after 
> D := Documents.MarkedDoc() .
> 
> My explanation of why that can't work: a Document has a name and is an 
> extension of a Gadgets.Frame, which is an extension of a 
> Display.Frame, which is an extension of an Objects.Object.  D is an 
> Object; therefore D := Documents.MarkedDoc() is OK.  But an Object 
> doesn't have a name.  Documents.MarkedDoc().name can exist 
> but D.name never exists.  Corrections welcome.
> 
> Incidentally, Oberon.Sort.Mod was one of the earliest sources posted 
> to the wikibook and indentation was handled badly by MediaWiki.Markup.  
> The current MediaWiki should yield a module file as original, including 
> original indentation.  Described in 
> https://en.m.wikibooks.org/wiki/Oberon#Dataflow_of_a_Text
> and
> https://en.wikibooks.org/wiki/Oberon#Dataflow_of_a_Text .
> Will install new markup for Oberon.Sort.Mod soon.
> 
> Also incidentally, Oberon.Documents.MarkedDoc() has 
>    IF TRUE (* Oberon.Pointer.on *) THEN
>        M.X := Oberon.Pointer.X; M.Y := Oberon.Pointer.Y;
>        ...
>    ELSE RETURN NIL
>    END
> What was the IF meant to achieve?  Is there any reason to keep it?
> 
> Thanks,      ... Lyall E.
> 
> 
> 
> -- 
> 
> 123456789 123456789 123456789 123456789 123456789 123456789 123456789
> Tel: +1 360 639 0202                      Pender Is.: +1 250 629 3757
> http://easthope.ca/Peter.html              Bcc: peter at easthope. ca
> 
> --
> Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related systems
> https://lists.inf.ethz.ch/mailman/listinfo/oberon



More information about the Oberon mailing list