Re: SHBrowseForFolder

new topic     » goto parent     » topic index » view thread      » older message » newer message

Thomas,

Actually, it may not be the depth of a folder that gives me a problem, but
rather the number of folders;  I can get 4 deep in a directory that has 121
folders total, but crash at 2 deep in a folder that has 130 folders total.

Dan Moyer

----- Original Message -----
From: "Dan Moyer" <DANIELMOYER at prodigy.net>
To: <EUforum at topica.com>
Subject: Re: SHBrowseForFolder


> Thomas, etc:
>
> Is this the latest anyone has done for the browsing for a folder dialog?
It
> crashes for me under both Win32Lib 55.1 & 57.5, with an illegal operation
> error, when I look deeper than about 2 or 3 levels:
>
> EXW caused an invalid page fault in
> module KERNEL32.DLL at 015f:bff7a128.
> Registers:
> EAX=036e6954 CS=015f EIP=bff7a128 EFLGS=00010202
> EBX=007520bc SS=0167 ESP=0056fb44 EBP=0056fb78
> ECX=62694c32 DS=0167 ESI=007520ac FS=1347
> EDX=4950415c ES=0167 EDI=036e6964 GS=0000
> Bytes at CS:EIP:
> 89 51 08 8b 53 08 8b 43 04 8d 8b 0b 10 00 00 c1
> Stack dump:
> 0056fb78 007520ac 00650000 00594dcc bff7b30e 00650000 007520ac 00000010
> 00000200 00650000 03280000 00594dcc 007520ac 0056fba6 00401a1f 00650000
>
> Dan Moyer
>
> ----- Original Message -----
> From: "Thomas Parslow (PatRat)" <patrat at rat-software.com>
> To: "EUforum" <EUforum at topica.com>
> Sent: Thursday, September 06, 2001 3:02 AM
> Subject: Re[2]: SHBrowseForFolder
>
>
> >
> > > Hi Thomas,
> >
> > > Too bad.
> > > On an NT4 platform i sporadically get a:
> > > "The instruction at 00417608 referenced memory at 455c3a4c. The memory
> could not be written"
> >
> > > This seems to occur when the selected folder is deeply nested (say
over
> 4-5 levels) but not always.
> >
> > > Henri
> >
> > Hi,
> >
> > I seem to get that on deeply nested folders as well. I tracked down
> > the crash to the "free(foldermem)" line. It seems to work if you use
> > win32lib's memory management routines...
> >
> > This version works for me even with very deeply nested folders:
> >
> > include win32lib.ew
> > with trace
> >
> > atom binfo, result,memfolder
> > sequence folder
> >
> > constant xSHBrowseForFolder = registerw32Function(shell32,
> "SHBrowseForFolder",
> > {C_POINTER}, C_POINTER)
> >
> > constant xSHGetPathFromIDList =
>
registerw32Function(shell32,"SHGetPathFromIDList",{C_ULONG,C_POINTER},C_ULON
> G)
> >
> > global constant
> > bfOwner = allot( Long ),
> > bfpidlRoot = allot( Long ),
> > bfDisplayName = allot( Lpsz ),
> > bfTitle = allot( Lpsz ),
> > bfFlags = allot( Long ),
> > bfFunction = allot( Long ),
> > bfParam = allot( Long ),
> > bfImage = allot( Long ),
> > SIZEOF_BROWSEINFO = allotted_size()
> >
> > binfo = acquire_mem(0, SIZEOF_BROWSEINFO)
> >
> > store( binfo, bfOwner, 0)
> > store( binfo, bfpidlRoot, NULL)
> > store( binfo, bfDisplayName, "")
> > store( binfo, bfTitle, "Select a Folder")
> > store( binfo, bfFlags, NULL)
> > store( binfo, bfFunction, NULL)
> > store( binfo, bfParam, NULL)
> > store( binfo, bfImage, NULL)
> >
> > result = w32Func(xSHBrowseForFolder, {binfo})
> >
> > memfolder= acquire_mem(0,repeat(512,0))
> > if w32Func(xSHGetPathFromIDList,{result,memfolder}) then
> >    --the string pointed to by folder now contains the path
> >    folder = peek_string(memfolder)
> > else
> >    folder = ""
> > end if
> > release_mem(memfolder)
> > release_mem(binfo)
> >
> > if message_box("Folder: " & folder, "Test", MB_OK) then end if
> >
> > Thomas Parslow (PatRat) ICQ #:26359483
> > Rat Software
> > http://www.rat-software.com/
> > Please leave quoted text in place when replying
> >
>

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu