From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM autolearn=unavailable autolearn_force=no version=3.4.4 X-Received: by 10.236.36.39 with SMTP id v27mr405457yha.24.1424280590433; Wed, 18 Feb 2015 09:29:50 -0800 (PST) X-Received: by 10.140.95.67 with SMTP id h61mr27820qge.9.1424280590394; Wed, 18 Feb 2015 09:29:50 -0800 (PST) Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!mx02.eternal-september.org!feeder.eternal-september.org!news.glorb.com!peer03.iad.highwinds-media.com!news.highwinds-media.com!feed-me.highwinds-media.com!j7no1380797qaq.1!news-out.google.com!n6ni9qar.0!nntp.google.com!j7no1380793qaq.1!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: comp.lang.ada Date: Wed, 18 Feb 2015 09:29:50 -0800 (PST) Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=84.106.97.11; posting-account=-iT6ZQoAAAAlqBCInAc-vB6x1soT8Jhq NNTP-Posting-Host: 84.106.97.11 User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <234cdad3-5c41-4b0d-b611-01c53273cb7f@googlegroups.com> Subject: Get_Immediate has raised CONSTRAINT_ERROR : s-wchcnv.adb:207 explicit raise From: darek Injection-Date: Wed, 18 Feb 2015 17:29:50 +0000 Content-Type: text/plain; charset=ISO-8859-1 X-Received-Bytes: 3241 X-Received-Body-CRC: 1062036928 Xref: news.eternal-september.org comp.lang.ada:24978 Date: 2015-02-18T09:29:50-08:00 List-Id: Dear All, reading from a keyboard keys such as arrow keys, PgUp, PgDn, etc. seems to be a small challenge in Ada. For this purpose one of the Get_Immediate procedures from the Ada.Text_IO shall be used. For the keyboard we can use either - procedure Get_Immediate (Item : out Character) or - procedure Get_Immediate (Item : out Character; Available : out Boolean) When I have used the Get_Immediate procedure with the extra boolean parameter, it generates the constraint error for: - all arrow keys, PgUp, PgDn - [ character from the keyboard !!!! Is this a feature or a bug. How pressing a legal key can cause such a weird result? The Get_Immediate procedure without the boolean parameter works fine but it waits for a key to be pressed. System: Linux Testpc 3.11-2-amd64 #1 SMP Debian 3.11.8-1 (2013-11-13) x86_64 GNU/Linux (running as a guest inside the VirtualBox VM) Compiler:gcc version 4.7.4 20140401 for GNAT GPL gpl-2014 (20140405) (GCC) Any ideas how to avoid the problem with this exception? Am I missing something? Cheers, Darek The code: with Ada.Text_IO; procedure TestKbd is package tIO renames Ada.Text_IO; procedure Test_Get_Immediate_No_Avail is Char : Character; begin loop -- an infinite loop tIO.Put_Line("Read key:"); --| Here Get_Immediate is waiting for the input tIO.Get_Immediate(Char); tIO.Put_Line("Char ==>" & Character'Image(Char) & " code:" & Integer'Image(Character'Pos(Char))); delay (0.1); end loop; end Test_Get_Immediate_No_Avail; procedure Test_Get_Immediate_With_Avail is Char : Character; Avail : Boolean; begin loop -- an infinite loop tIO.Put_Line("Read key: "); tIO.Get_Immediate(Char, Avail); if Avail then tIO.Put_Line("Char ==>" & Character'Image(Char) & " code:" & Integer'Image(Character'Pos(Char))); end if; delay (1.0); end loop; end Test_Get_Immediate_With_Avail; begin Test_Get_Immediate_With_Avail; --Test_Get_Immediate_No_Avail; end TestKbd;