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=-0.9 required=5.0 tests=BAYES_00,FORGED_GMAIL_RCVD, FREEMAIL_FROM autolearn=no autolearn_force=no version=3.4.4 X-Received: by 2002:a5e:d918:: with SMTP id n24mr16215299iop.3.1549663333209; Fri, 08 Feb 2019 14:02:13 -0800 (PST) X-Received: by 2002:a9d:19a4:: with SMTP id k33mr137284otk.5.1549663332872; Fri, 08 Feb 2019 14:02:12 -0800 (PST) Path: eternal-september.org!reader01.eternal-september.org!feeder.eternal-september.org!goblin1!goblin.stu.neva.ru!q69no331750itb.0!news-out.google.com!9ni197itl.0!nntp.google.com!q69no331747itb.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: comp.lang.ada Date: Fri, 8 Feb 2019 14:02:12 -0800 (PST) In-Reply-To: Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=191.17.174.180; posting-account=TRgI1QoAAABSsYi-ox3Pi6N-JEKKU0cu NNTP-Posting-Host: 191.17.174.180 References: <47f17695-f9a5-4024-b2da-3f13209dc4fd@googlegroups.com> <818f5ff4-f18d-42b8-950d-9b597c012aa4@googlegroups.com> <62406dfb-54c9-4db3-b461-0ad72d4a782c@googlegroups.com> <519fd5e0-eb4e-432e-85cc-d7a37510c957@googlegroups.com> <9c63d0be-fffa-4dab-a879-921fd723b8d8@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: Subject: Re: Ada x Datagram Sockets From: "Rego, P." Injection-Date: Fri, 08 Feb 2019 22:02:13 +0000 Content-Type: text/plain; charset="UTF-8" Xref: reader01.eternal-september.org comp.lang.ada:55475 Date: 2019-02-08T14:02:12-08:00 List-Id: On Friday, February 8, 2019 at 7:26:20 PM UTC-2, Jeffrey R. Carter wrote: > Now that I look at it in more detail, it's probably better to do something like > > function To_String (Buffer : Ada.Streams.Stream_Element_Array) return String is > Result : String (1 .. Buffer'Length); > Last : Natural := 0; > begin -- To_String > Convert : for I in Buffer'range loop > exit Convert when Buffer (I) = 0; -- If NUL terminated > > Last := Last + 1; > Result (Last) := Character'Val (Buffer (I) ); > end loop Convert; > > return Result (1 .. Last); > end To_String; > > Buffer : Ada.Streams.Stream_Element_Array (1 .. Big_Enough); > Last : Ada.Streams.Stream_Element_Offset; > ... > Receive_Socket (Socket => Socket, Item => Buffer, Last => Last); > > Do_Something (To => To_String (Buffer (1 .. Last) ) ); It worked perfectly. Thank you Jeff and everybody. Now I am going to make a proper design of the system :-)