From: Guenter Feldmann <fld@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@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
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@easthope.ca> <peter@easthope.ca>:
From: Guenter Feldmann <fld@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@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@lists.inf.ethz.ch mailing list for ETH Oberon and related systems https://lists.inf.ethz.ch/mailman/listinfo/oberon
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?
If you look at the comment just above the procedure, you‘ll find a hint what the IF meant to do. (* The visibility of the Oberon pointer is ignored. *) Formerly, the procedure checked the visibility. You may delete the IF TRUE and corresponding ELSE. A clever compiler will do that for you, I mean he treats the source as if the IF TRUE was not there... Jörg
participants (2)
-
Jörg Straube -
peter@easthope.ca