> -----Original Message----- > From: Robert Klemme [mailto:shortcutter / googlemail.com] > Sent: Monday, May 01, 2006 10:53 AM > To: ruby-talk ML > Subject: Re: Shortcut for [string].pack("p*").unpack("l").first ? > > > 2006/5/1, Berger, Daniel <Daniel.Berger / qwest.com>: > > Hi all, > > > > If I want to get the underlying pointer address of a > > Ruby string, I can do this: > > What do you want with a memory address in Ruby-land? If > you're in an extension then there's probably an easier way to > get at the address. Short answer: Win32API strcmp1 = Win32API.new('msvcrt', 'strcmp', 'PP', 'I') strcmp2 = Win32API.new('msvcrt', 'strcmp', 'LL', 'I') str1 = "hello" str2 = "hello" str3 = "world" addr1 = [str1].pack("p*").unpack("l").first addr2 = [str2].pack("p*").unpack("l").first addr3 = [str3].pack("p*").unpack("l").first # Using strings strcmp1.call(str1, str2) # 0 strcmp1.call(str1, str3) # -1 # Using string addresses strcmp2.call(addr1, addr2) # 0 strcmp2.call(addr1, addr3) # -1 I suppose I could stop whining and just extend the String class. :) class String def ptr [self].pack("p*").unpack("l").first end end This might be useful for Ruby/DL as well. Regards, Dan PS - Many thanks to Heesob for teaching me some of these things lately. :) This communication is the property of Qwest and may contain confidential or privileged information. Unauthorized use of this communication is strictly prohibited and may be unlawful. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy all copies of the communication and any attachments.