From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.5-pre1 (2020-06-20) on ip-172-31-74-118.ec2.internal X-Spam-Level: X-Spam-Status: No, score=-0.9 required=3.0 tests=BAYES_00,FORGED_GMAIL_RCVD, FREEMAIL_FROM autolearn=no autolearn_force=no version=3.4.5-pre1 Path: eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail From: =?UTF-8?Q?Bj=c3=b6rn_Lundin?= Newsgroups: comp.lang.ada Subject: Re: converting pointer to value Date: Fri, 5 Mar 2021 09:54:09 +0100 Organization: A noiseless patient Spider Message-ID: References: <02709d96-50fe-4e87-bdb5-4f430fa2717an@googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Fri, 5 Mar 2021 08:54:09 -0000 (UTC) Injection-Info: reader02.eternal-september.org; posting-host="c9e3b2236f724ff4b8eeba0adbb7f865"; logging-data="8766"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19Wxl708Uy5HQ1vj6cKqDq6" User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:78.0) Gecko/20100101 Thunderbird/78.6.1 Cancel-Lock: sha1:+60dVe7ldlnsV454HPWuiPJFFVQ= In-Reply-To: Content-Language: sv Xref: reader02.eternal-september.org comp.lang.ada:61478 List-Id: Den 2021-03-04 kl. 18:35, skrev Dmitry A. Kazakov: > You need not to know that: > >    declare >       P : SQLPOINTER := ...; >       A : System.Address; >       pragma Import (Ada, A); >       for A'Address use P'Address; >       T : My_Fancy_Object; >       pragma Import (Ada, My_Fancy_Object); >       for T'Address use A; >    begin >       ... -- Use T at P > I did try this procedure Exec (Statement_Handle : in Sqlhstmt) is RC : SQLRETURN := SQLExecute (Statement_Handle); Pvalue : aliased Sqlpointer; Sent: Integer := 0; Datalen : Integer := 14; Buffer : String (1..10) := (others => ' '); S_Ptr : Ptr_String; Sa : aliased system.Address; type Ia is access all SQLINTEGER; Psa : Ia; begin Text_Io.Put_Line ("Exec: " & Rc'Img); --test for unset clob Rc := Sqlparamdata (Statement_Handle,Pvalue'Access); Text_Io.Put_Line ("SQLParamData1: " & Rc'Img ); Sa := to_Address(Pvalue); declare I : SQLINTEGER ; for I'Address use Sa; begin Text_Io.Put_Line ("SQLParamData1.2: " & I'Img ); end; if Rc /= Sql_Need_Data then return; end if; and as a result I got SQLParamData1.2: 4790608 (intel 64bit Linux) I expected 5 Later today I'll try the truick with pragma Import. However I don't really see/understand the difference. -- Björn