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 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!mx02.eternal-september.org!.POSTED!not-for-mail From: =?UTF-8?Q?Bj=c3=b6rn_Lundin?= Newsgroups: comp.lang.ada Subject: Re: problems parse (large) json file with gnatcoll.json Date: Mon, 18 Apr 2016 21:05:01 +0200 Organization: A noiseless patient Spider Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Date: Mon, 18 Apr 2016 19:09:25 -0000 (UTC) Injection-Info: mx02.eternal-september.org; posting-host="bebfbc7eb9f414be282f19b2f0299a06"; logging-data="29910"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19PpNLM3gGlYZP/v1FBZVzp" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Icedove/38.7.0 In-Reply-To: Cancel-Lock: sha1:iwClbZPsuO1TAiaaVcJKtPUu4UE= Xref: news.eternal-september.org comp.lang.ada:30179 Date: 2016-04-18T21:05:01+02:00 List-Id: On 2016-04-18 20:51, Jeffrey R. Carter wrote: > I doubt the subtype declaration gives you Storage_Error. It should be if > you declare an object of the subtype: Of course you are correct. I wonder how I misread the stacktrace that much. Anyway your tip paid off. > You can probably get around this by declaring an access type: The loading function now looks like function Load_File(Filename : in String) return String is use Ada.Directories; File_Size : constant Natural := Natural (Size (Filename)); subtype JSON_String is String (1 .. File_Size); type String_Ptr is access JSON_String; Content : constant String_Ptr := new JSON_String; package File_IO is new Ada.Direct_IO(JSON_String); File : File_IO.File_Type; begin File_IO.Open (File => File, Mode => File_IO.In_File, Name => Filename); File_IO.Read (File => File, Item => Content.all); File_IO.Close(File => File); return Content.all; end Load_File; -------------------------- and it works. Thanks. (I'll fix the leak later on) The Load_File function is from http://wiki.ada-dk.org/index.php/Handling_JSON_Using_GNATColl -- Björn