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.4 required=5.0 tests=BAYES_00,FROM_SUSPICIOUS_NTLD 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!news.eternal-september.org!feeder.eternal-september.org!news.gegeweb.eu!gegeweb.org!usenet-fr.net!proxad.net!feeder1-2.proxad.net!cleanfeed2-b.proxad.net!nnrp3-2.free.fr!not-for-mail Subject: Re: win32 interfacing check (SetClipboardData) Newsgroups: comp.lang.ada References: <59a5ce50$0$7168$426a74cc@news.free.fr> From: Xavier Petit Date: Fri, 1 Sep 2017 14:53:55 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: fr Content-Transfer-Encoding: 8bit Message-ID: <59a95862$0$31612$426a74cc@news.free.fr> Organization: Guest of ProXad - France NNTP-Posting-Date: 01 Sep 2017 14:53:54 CEST NNTP-Posting-Host: 78.217.21.11 X-Trace: 1504270434 news-3.free.fr 31612 78.217.21.11:56094 X-Complaints-To: abuse@proxad.net Xref: news.eternal-september.org comp.lang.ada:47875 Date: 2017-09-01T14:53:54+02:00 List-Id: Le 31/08/2017 à 03:41, Randy Brukardt a écrit : > For me, using an address clause for anything other than interfacing to > hardware is wrong. We certainly didn't do anything like this in Claw when > implementing the clipboard operations. We used instances of > Unchecked_Conversion to get a pointer of the right type, and then assigned > into that. (Nowdays, I might use an instance of > Address_to_Access_Conversions.) Thank you, this was my first approach (and it worked), but when I tried the 'Address trick, I was surprised that it worked too so I removed the System.Address_To_Access_Conversions; Finally I use the To_PWSTR of Win32 (Unchecked_Conversion) which seems to me simpler : AMem := GlobalLock (HMem); pragma Assert (AMem /= Null_Address); Length := MultiByteToWideChar (CodePage => CP_UTF8, DwFlags => 0, LpMultiByteStr => Addr (Text), CchMultiByte => -1, LpWideCharStr => To_PWSTR (Amem), CchWideChar => Length); Thanks for the CLAW example