[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Win32API question - PathAppend (in/out variable issue

djberg96

5/20/2005 8:38:00 PM

Hi all,

Ruby 1.8.2.
Windows XP Pro

I'm having a bit of an issue with an in/out variable with the
PathAppend() function. I have no problem when I use a C extension, but
when I used Win32API, I don't get the desired output. Here's the code:

# test.rb
require "Win32API"

PathAppend = Win32API.new("shlwapi","PathAppend","PP","L")

path = 'C:\foo'
PathAppend.call(path, 'bar')

p path # 'C:\foo', but expect 'C:\foo\bar'

I've tried padding 'path' and a few other tricks, but nothing has
worked. What am I doing wrong?

Regards,

Dan

1 Answer

Paul Leonard

5/20/2005 11:20:00 PM

0

Daniel -

This works:

require "Win32API"

MAX_PATH = 256

inbuf = Array.new.fill(0.chr,0..MAX_PATH-1).join

PathAppend = Win32API.new("shlwapi","PathAppend","PP","L")

path = 'C:\foo'

inbuf[0..path.length-1] = path

PathAppend.call(inbuf, 'bar'+ 0.chr)

puts inbuf.strip!

Returns:
C:\foo\bar


On Sat, 21 May 2005 05:40:15 +0900, Daniel Berger wrote:
> Hi all,
>
> Ruby 1.8.2.
> Windows XP Pro
>
> I'm having a bit of an issue with an in/out variable with the
> PathAppend() function.  I have no problem when I use a C extension,
> but when I used Win32API, I don't get the desired output.  Here's
> the code:
>
> # test.rb
> require "Win32API"
>
> PathAppend = Win32API.new("shlwapi","PathAppend","PP","L")
>
> path = 'C:\foo'
> PathAppend.call(path, 'bar')
>
> p path # 'C:\foo', but expect 'C:\foo\bar'
>
> I've tried padding 'path' and a few other tricks, but nothing has
> worked.  What am I doing wrong?
>
> Regards,
>
> Dan