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 autolearn=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: text_io and grid printing Date: Thu, 17 May 2018 17:55:01 +0200 Organization: Aioe.org NNTP Server Message-ID: References: <99bb4ea5-89be-4984-8785-574cb8e4a410@googlegroups.com> NNTP-Posting-Host: CvkHMVp693S8Z+lk11jyqg.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 X-Notice: Filtered by postfilter v. 0.8.3 Content-Language: en-US Xref: reader02.eternal-september.org comp.lang.ada:52388 Date: 2018-05-17T17:55:01+02:00 List-Id: On 2018-05-17 16:51, Mehdi Saada wrote: > I wanted to use set_col and set_line to print things as in a grid, (to print a matrix) but it seems I was wrong ? > Set_Col (1); Put ("1"); Set_Col (2); Put ("2"); Set_Col (3); Put ("3"); > Gives "123" > but Set_Col (2); Put ("2"); Set_Col (1); Put ("1"); Set_Col (3); Put ("3"); > gives > 2 > 1 3 > > Is there something with linux' implementation ? How do you use to print things like a grid in a portable ? Are you forced to use some complicated curse-like library for that ? No. You need string formatting. Try this: ------------------------------------------------ with Ada.Text_IO; use Ada.Text_IO; with Strings_Edit; use Strings_Edit; with Strings_Edit.Integers; use Strings_Edit.Integers; procedure Test is Line : String (1..80); Pointer : Integer; begin Pointer := Line'First; Put (Destination => Line, Pointer => Pointer, Value => 1, Field => 8, Justify => Right); Put (Destination => Line, Pointer => Pointer, Value => 2, Field => 8, Justify => Right); Put (Destination => Line, Pointer => Pointer, Value => 3, Field => 8, Justify => Right); Put_Line (Line (Line'First..Pointer - 1)); Pointer := Line'First; Put (Destination => Line, Pointer => Pointer, Value => 4, Field => 8, Justify => Right); Put (Destination => Line, Pointer => Pointer, Value => 5, Field => 8, Justify => Right); Put (Destination => Line, Pointer => Pointer, Value => 6, Field => 8, Justify => Right); Put_Line (Line (Line'First..Pointer - 1)); end Test; --------------------------------------------------- This prints: 1 2 3 4 5 6 Of course you can place fields in any order by setting Pointer to the beginning of the field. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de