please Test my File Requester

BlitzMax Forums/BlitzMax Programming/please Test my File Requester

Sence the File Requester doesn't work on full screen, I decided to make one myself. So far, I have it working to my satisfaction. There are still a few things to add to it but I am pretty much satified with it.
all I have is windows so I don't know if it works on any other OS.
I just would like some feedback to decide whethr to go in to the process of converting it in to a module. let me know if anybody finds a bug. Thanks in advance.
get the file from here:
http://hosted.filefront.com/ChuyP/

I could just test it in windows xp.
No bugs found.
Changing directorys with mouseclick instead
of "open" is a must.

I am working on mouse double click and filters. I will post an update as soon as I have it implemented.
Right now my main concer is with low end graphics cards sence I am copying the front buffer to the back buffer as a single image. I have a feeling some cards are not going to respond as I hope. I posted a new update, same link, none of the mentined changes yet but it is a bit more solid.

Thanks for testing Volker.
I didn't think anybody cared.

.

I get an black screen sometimes when changing
directory; only the requester is viewable.
Changing back to root (c:\) make the background
reappear.
Nvidia 8600 GTS here.

I get a crash at start up, (unhandled exception written in green text over the black background) when the graphics object is created. I'm running the application from the desktop under vista.

ziggy, I am afraid there is nothing I can do under vista. My computer runs windows xp and is the only operating system I have. I guess I am going to have to limit it to XP and below for now.

@Volker: Fixed the blank image part. I have worked out the change directory and selection of files with a double click.

Thaks for testing.
Now to work on filters.

Well, I'm sure it is not a Vista issue as it is a software crash. Have you properly checked folders and file permissions before trying to read them?

ziggy, I guess I will have to do a bit of research on that subject. it never even crossed my mind. thanks.

It's missing the top level. I can only navigate to C:\, but not to "/" which has C:\, D:\, E:\, etc...

yes, I just figured out how to do that. I will fix it as soon as I have some time to do it.

today I just added drives But I have one problem. the brl function "FileType" is giving me problems. filetype is checking for availability of drives for use before it returns a responce. Everything works fine for all drives except "a:\" sence there is no media in the drive the program locks up and returns a "Drive Not Ready" error.

Is there a way to bypass the error screen? or is there any other way to handle this? I mean instead of using "FileType".

I have uploaded an update. link in first post.

note:
regarding what ziggy mentioned:
I have tryed it with private files, different account types and different types of files and I have not got it to crash it just sends me back to the previos directory. so I guess it still not working in vista and it wont be be until I get vista and work on it.

Is there a way to bypass the error screen?  

Use try/catch.
It catches rumtime errors.
There is an example in the help.

Thanks Volker But there is no way to use it that way. the error is produced by windows api. and has nothing to do with the program itself.

I even tryed to get to the heart of the command.
the core of "FileType" is a c instruction called "stat_" that is linked to windows api.

I tried to get it to use try catch but no luck:
Local mode,size,mtime,ctime
Try	
	If stat_( "a:",mode,size,mtime,ctime ) Print "Invalid Dir" Else Print "Dir ok"
Catch a$
	Print a$
End Try


Use the GetDiskFreeSpace or GetDiskFreeSpaceEx API (A or W on the end for ASCII or Widechar) and check the error with GetLastError.

Strict

Const ERROR_PATH_NOT_FOUND = 3
Const ERROR_NOT_READY= 21

Extern "Win32"
	Function GetDiskFreeSpaceExW:Int(lpDirectoryName:Short Ptr , lpFreeBytesAvailable:Long Ptr , lpTotalNumberOfBytes:Long Ptr , lpTotalNumberOfFreeBytes:Long Ptr)
	Function GetLastError:Int()
EndExtern

Local dir:String = "A:", wstr_dir:Short Ptr=dir.ToWString()
Local freeBytes:Long, tnBytes:Long, tnFreeBytes:Long, err:Int
If GetDiskFreeSpaceExW(wstr_dir , Varptr freeBytes , Varptr tnBytes , Varptr tnFreeBytes) = 0
	err = GetLastError() 
	Select err
		Case ERROR_PATH_NOT_FOUND
			Print "~q"+dir+"~q Not found."
		Case	ERROR_NOT_READY
			Print "~q"+dir + "~q Not ready."
	EndSelect
EndIf
MemFree(wstr_dir)


Azathoth, thanks.
But it more or less does the same thing as the one I posted. I get the error:
The drive is not ready for use; its door may be open. Please check drive A: and make sure that a disk is insertd and that the drive door is closed.
which is what I am trying to avoid.
The purpose of this whole thing is just to find out if there is a drive "A:" and not whether it has media or not."

what I want to happen is: When "c:\" is typed or clicked the program will determin if it's a directory or a file(this is where the bug is) that is all. I don't want to see a non related error.
Thanks.

I never got that, GetLastError returned ERROR_NOT_READY.
What happens if you use SetErrorMode(1) prior to calling GetDiskFreeSpaceExW?

same thing. maybe you are trying it with media in the drive or maybe your a: drive is not a diskette drive.

it bugs me that I am having so much trouble with something that is almost completeley obsolete.

[edit]
I am guessing I will have the same problem with flash drives.

No, my A: drive is a floppy disk drive. Also works with my DVD drive.
Edit: And there is certainly no media in either of them.

I also don't get an error on anything else either. maybe my floppy drive doesn't work. I have not used it in ages. I have replaced every component in my computer except my floppy drive.

I just found out the light in my floppy drive is not going on. my laptop doesn't have a floppy drive so I guess I am stuck with assuming the drive is not working.

thanks for all your help.

p.s.
I don't know how helpfull this are but I found two links relating to floppy drives at microsoft.
http://support.microsoft.com/kb/163920
http://support.microsoft.com/kb/115828/EN-US/

Does the same happen with your CDROM?

no, just the floppy drive.