File Requestor in FUllScreen 3d
Blitz3D Forums/Blitz3D Beginners Area/File Requestor in FUllScreen 3d
| ||
| I've searched and searched but can't find a simple file requester that will work in fullscreen 3D. Anyone got one? I want to load levels. Thanks Dog |
| ||
| http://www.east-power-soft.de/index.php?menu=blitzbasic_bescape Try escape3D. There is a filerequester. (Download at the bottom of the page) |
| ||
| OK. I'll try that. Not sure just what I d/l'ed since I no sprechen sie deutsch but appreciate the feedback. Dog |
| ||
| http://translate.google.com/translate?u=http%3A%2F%2Fwww.east-power-soft.de%2Findex.php%3Fmenu%3Dblitzbasic_bescape&langpair=de%7Cen&hl=de&ie=UTF8 ;) |
| ||
| Thanks for your help but I'm unable to get your program to function. Like so many GUI programs they seem to run just fine by themself but are difficult to implement in your own app since there's always conflicts of types and vars etc etc etc. I keep getting a "parent entity doesn't exist" or something even though I've copied all the code right where it should be and setup the right dirs. Hard to believe such a simple thing as a file requester isn't a Blitz3D command. Oh well. thanks |
| ||
| Like so many GUI programs they seem to run just fine by themself but are difficult to implement in your own app since there's always conflicts of types and vars etc etc etc. If that's the case, whoever wrote the lib should be shot. :P It's easy to avoid, e.g. in my lib, everything with global scope has a vl_ prefix to virtually guarantee no conflicts occur. |
| ||
;..... Global eg_keyb_repeattime = 100 ;--> Keyboard Repetierzeit (in ms) Global eg_keyb_timetorepeat = 350 ;--> Zeit bis zum Einsetzen des Repeatiervorgangs (in ms) Global eg_keyb_timer ;--> Zeitmesser für Keyboard Global eg_curs_pos ;--> Position Cursor Global eg_curs_blinkspeed = 250 ;--> Blinkgeschwindigkeit des Cursors (in ms) Global eg_curs_blinkstate ;--> Status für Cursorblinken Global eg_curs_timer ;--> Timer für Cursorblinken ;.....and so on so, no comment. |
| ||
| I did say 'if that's the case'. Must be some other issue Doggie is having, then. ;) |
| ||
Doggie i used someone's file requester and it seemed to work ok. Sometimes you'd need to call it twice, but apart from that, it was excellent. Uses the file requester built into windows.
; This Procedure is for free MPZ (@) from Berlin
; Version 0.2 1/2004
;
; in the USERLIBS must be the file kernel32.decls
;.lib "kernel32.dll"
;api_RtlMoveMemory(Destination*,Source,Length) : "RtlMoveMemory"
; in the USERLIBS must be the file comdlg32.decls
;.lib "comdlg32.dll"
;api_GetOpenFileName% (pOpenfilename*) : "GetOpenFileNameA"
;api_GetSaveFileName% (pOpenfilename*) : "GetSaveFileNameA"
;Graphics 800,600;,0,2
Global hWnd=SystemProperty("AppHWND")
; GetOpen/saveFileName consts Flags (useful ones only!)...
Const OFN_CREATEPROMPT = $2000 ; Prompts the user as to whether they want to create a file that doesnt exist.
Const OFN_FILEMUSTEXIST = $1000 ; File must exist for it to be returned.
Const OFN_HIDEREADONLY = 4 ; Hides the read only button in the dialog...
Const OFN_NOCHANGEDIR = 8 ; Stops the user from changing the initial directory.
Const OFN_NONETWORKBUTTON = $20000 ; Hides and disables the network button.
Const OFN_NOREADONLYRETURN = $8000 ; Stops the requester returning readonly files..
Const OFN_NOVALIDATE = 256 ; If selected, no check will be done for invalid characters.
Const OFN_OVERWRITEPROMPT = 2 ; Prompt for overwrite file...
Const OFN_PATHMUSTEXIST = $800 ; Specifies that the path MUST exist for it to be able to be selected.
Const OFN_READONLY = 1 ; Makes the read only checkbox in the dialog box to be checked immediately.
; getopenfile $(Title_of_Requester$, SearchPath$,Files_with_ending$, Flags);
; getsavefile $(Title_of_Requester$, Save_File_name$,Files_with_ending$, Flags);
;
; Title_of_Requester$= "Name of the Requester / Name des Dateifragefensters
; SearchPath$ = "C:\" ; Path for File searching / Pfad wo nach der Datei gesuchet werden soll
; Files_with_ending$ = "All Files (*.*)" + Chr$(0) + "*.*" + Chr$(0)
; = "Blitzbasic" + Chr$(0) + "*.bb" + Chr$(0) + "Text" + Chr$(0) + "*.txt" + Chr$(0)
; Flags = See Flag lists
; Save_File_name$ = "C:\test.bb" ; Name of the Savefile with Path / Name der Datei mit Pfad zum speichern
;file$ = getopenfile$("File open / Datei öffnen","c:\documents and settings\","*.bmp" + Chr$(0) + "*.bmp" + Chr$(0)); flags optional
;image = LoadImage(file)
;DebugLog file$
;DrawImage image,0,0
;file$ = getopenfile$("File open / Datei öffnen","c:\documents and settings\","*.bmp" + Chr$(0) + "*.bmp" + Chr$(0)); flags optional
;image = LoadImage(file)
;DebugLog file$
;DrawImage image,0,500
;temp$ = getsavefile$("File Save / Datei sichern","c:\hello.bb","Blitzbasic" + Chr$(0) + "*.bb" + Chr$(0) + "Text" + Chr$(0) + "*.txt" + Chr$(0));; flags optional
;DebugLog(temp$)
;While MouseHit(1) <> 1
;Wend
;End
;--------------------------You can use it as BlitzLIB
Function getOpenFile$(lpstrTitle$,lpstrInitialDir$,lpstrFilter$,flags=$1000)
nextOffset%=0
theBank=CreateBank(76)
lStructSize=76
PokeInt theBank,nextOffset%,lStructSize
nextOffset%=nextOffset%+4
hwndOwner=hWnd
PokeInt theBank,nextOffset%,hwndOwner
nextOffset%=nextOffset%+4
hInstance=0
PokeInt theBank,nextOffset%,hInstance
nextOffset%=nextOffset%+4
If lpstrFilter$ = "" Then
lpstrFilter$ = "All Files (*.*)" + Chr$(0) + "*.*" + Chr$(0)+ Chr$(0)
Else
lpstrFilter$ = lpstrFilter$ + Chr$(0)
End If
lpstrFilter_ = CreateBank(Len(lpstrFilter$))
string_in_bank(lpstrFilter$,lpstrFilter_)
PokeInt theBank,nextOffset%,AddressOf(lpstrFilter_)
nextOffset%=nextOffset%+4
lpstrCustomFilter=0
PokeInt theBank,nextOffset%,lpstrCustomFilter
nextOffset%=nextOffset%+4
nMaxCustFilter=0
PokeInt theBank,nextOffset%,nMaxCustFilter
nextOffset%=nextOffset%+4
nFilterIndex=0
PokeInt theBank,nextOffset%,nFilterIndex
nextOffset%=nextOffset%+4
lpstrFile$= String$ (" ", 254)
lpstrFile_ = CreateBank(Len(lpstrFile$))
string_in_bank(lpstrFile$,lpstrFile_)
PokeInt theBank,nextOffset%,AddressOf(lpstrFile_)
nextOffset%=nextOffset%+4
nMaxFile=255
PokeInt theBank,nextOffset%,nMaxFile
nextOffset%=nextOffset%+4
lpstrFileTitle$=String$ (" ", 254)
lpstrFileTitle_ = CreateBank(Len(lpstrFileTitle$))
string_in_bank(lpstrFileTitle$,lpstrFileTitle_)
PokeInt theBank,nextOffset%,AddressOf(lpstrFileTitle_)
nextOffset%=nextOffset%+4
nMaxFileTitle=255
PokeInt theBank,nextOffset%,nMaxFileTitle
nextOffset%=nextOffset%+4
If lpstrInitialDir$="" Then
lpstrInitialDir$="c:\"+Chr$(0)
Else
lpstrInitialDir$=lpstrInitialDir$+Chr$(0)
End If
lpstrInitialDir_ = CreateBank(Len(lpstrInitialDir$))
string_in_bank(lpstrInitialDir$,lpstrInitialDir_)
PokeInt theBank,nextOffset%,AddressOf(lpstrInitialDir_)
nextOffset%=nextOffset%+4
If lpstrTitle$="" Then
lpstrTitle$="Open"+Chr$(0)
Else
lpstrTitle$ = lpstrTitle$ + Chr$(0)
End If
lpstrTitle_ = CreateBank(Len(lpstrTitle$))
string_in_bank(lpstrTitle$,lpstrTitle_)
PokeInt theBank,nextOffset%,AddressOf(lpstrTitle_)
nextOffset%=nextOffset%+4
PokeInt theBank,nextOffset%,flags
nextOffset%=nextOffset%+4
nFileOffset=0
PokeShort theBank,nextOffset%,nFileOffset
nextOffset%=nextOffset%+2
nFileExtension=0
PokeShort theBank,nextOffset%,nFileExtension
nextOffset%=nextOffset%+2
lpstrDefExt=0
PokeInt theBank,nextOffset%,lpstrDefExt
nextOffset%=nextOffset%+4
lCustData=0
PokeInt theBank,nextOffset%,lCustData
nextOffset%=nextOffset%+4
lpfnHook=0
PokeInt theBank,nextOffset%,lpfnHook
nextOffset%=nextOffset%+4
lpTemplateName$=""+Chr$(0)
lpTemplateName_ = CreateBank(Len(lpTemplateName$))
string_in_bank(lpTemplateName$,lpTemplateName_)
PokeInt theBank,nextOffset%,AddressOf(lpTemplateName_)
nextOffset%=nextOffset%+4
If api_GetOpenFileName (theBank) Then
lpstrFile$ = bank_in_string$(lpstrFile_)
Else
lpstrFile$ =""
End If
FreeBank theBank
FreeBank lpstrFilter_
FreeBank lpstrFile_
FreeBank lpstrFileTitle_
FreeBank lpstrInitialDir_
FreeBank lpstrTitle_
FreeBank lpTemplateName_
Return lpstrFile$
End Function
Function getsaveFile$(lpstrTitle$,lpstrFile$,lpstrFilter$,flags=2) ; Get a SAVEFILENAME
nextOffset%=0
theBank=CreateBank(76)
lStructSize=76
PokeInt theBank,nextOffset%,lStructSize
nextOffset%=nextOffset%+4
hwndOwner=hWnd
PokeInt theBank,nextOffset%,hwndOwner
nextOffset%=nextOffset%+4
hInstance=0
PokeInt theBank,nextOffset%,hInstance
nextOffset%=nextOffset%+4
If lpstrFilter$ = "" Then
lpstrFilter$ = "All Files (*.*)" + Chr$(0) + "*.*" + Chr$(0)+ Chr$(0)
Else
lpstrFilter$ = lpstrFilter$ + Chr$(0)
End If
lpstrFilter_ = CreateBank(Len(lpstrFilter$))
string_in_bank(lpstrFilter$,lpstrFilter_)
PokeInt theBank,nextOffset%,AddressOf(lpstrFilter_)
nextOffset%=nextOffset%+4
lpstrCustomFilter=0
PokeInt theBank,nextOffset%,lpstrCustomFilter
nextOffset%=nextOffset%+4
nMaxCustFilter=0
PokeInt theBank,nextOffset%,nMaxCustFilter
nextOffset%=nextOffset%+4
nFilterIndex=0
PokeInt theBank,nextOffset%,nFilterIndex
nextOffset%=nextOffset%+4
lpstrFile_ = CreateBank(255)
string_in_bank(lpstrFile$+Chr$(0),lpstrFile_)
PokeInt theBank,nextOffset%,AddressOf(lpstrFile_)
nextOffset%=nextOffset%+4
nMaxFile=255
PokeInt theBank,nextOffset%,nMaxFile
nextOffset%=nextOffset%+4
lpstrFileTitle$=String$ (" ", 254)
lpstrFileTitle_ = CreateBank(Len(lpstrFileTitle$))
string_in_bank(lpstrFileTitle$,lpstrFileTitle_)
PokeInt theBank,nextOffset%,AddressOf(lpstrFileTitle_)
nextOffset%=nextOffset%+4
nMaxFileTitle=255
PokeInt theBank,nextOffset%,nMaxFileTitle
nextOffset%=nextOffset%+4
lpstrInitialDir$=""+Chr$(0)
lpstrInitialDir_ = CreateBank(Len(lpstrInitialDir$))
string_in_bank(lpstrInitialDir$,lpstrInitialDir_)
PokeInt theBank,nextOffset%,AddressOf(lpstrInitialDir_)
nextOffset%=nextOffset%+4
If lpstrTitle$="" Then
lpstrTitle$="Save"+Chr$(0)
Else
lpstrTitle$ = lpstrTitle$ + Chr$(0)
End If
lpstrTitle_ = CreateBank(Len(lpstrTitle$))
string_in_bank(lpstrTitle$,lpstrTitle_)
PokeInt theBank,nextOffset%,AddressOf(lpstrTitle_)
nextOffset%=nextOffset%+4
PokeInt theBank,nextOffset%,flags
nextOffset%=nextOffset%+4
nFileOffset=0
PokeShort theBank,nextOffset%,nFileOffset
nextOffset%=nextOffset%+2
nFileExtension=0
PokeShort theBank,nextOffset%,nFileExtension
nextOffset%=nextOffset%+2
lpstrDefExt=0
PokeInt theBank,nextOffset%,lpstrDefExt
nextOffset%=nextOffset%+4
lCustData=0
PokeInt theBank,nextOffset%,lCustData
nextOffset%=nextOffset%+4
lpfnHook=0
PokeInt theBank,nextOffset%,lpfnHook
nextOffset%=nextOffset%+4
lpTemplateName$=""+Chr$(0)
lpTemplateName_ = CreateBank(Len(lpTemplateName$))
string_in_bank(lpTemplateName$,lpTemplateName_)
PokeInt theBank,nextOffset%,AddressOf(lpTemplateName_)
If api_GetSaveFileName (theBank) Then
lpstrFile$ = bank_in_string$(lpstrFile_)
Else
lpstrFile$ =""
End If
FreeBank theBank
FreeBank lpstrFilter_
FreeBank lpstrFile_
FreeBank lpstrFileTitle_
FreeBank lpstrInitialDir_
FreeBank lpstrTitle_
FreeBank lpTemplateName_
Return lpstrFile$
End Function
Function AddressOf(Bank) ; Find the correct Adress of a Bank (for C *Pointer)
Local Address = CreateBank(4)
api_RtlMoveMemory(Address,Bank+4,4)
Return PeekInt(Address,0)
End Function
Function string_in_bank(s$,bankhandle) ; Put a String in a Bank
Local pos=1
Local pos2=0
Repeat
PokeByte(bankhandle,pos2,Asc(Mid(s$,pos,Len(s$))))
pos=pos+1
pos2=pos2+1
Until pos=Len(s$)+1
End Function
Function bank_in_string$(bankhandle) ; Get a String from a Bank
Local s$=""
Local pos=0
Repeat
s$=s$+Chr(PeekByte(bankhandle,pos))
pos=pos+1
Until pos=BankSize(bankhandle)
s$=Replace$(s$,Chr(0)," ")
Return s$
End Function
Sorry i can't give credit to anyone, cause i forgot what it was called :o) I simply call:
file$ = getopenfile$("File open",file_path$,"*.b3d" + Chr$(0) + "*.b3d" + Chr$(0) + "*.3ds" + Chr$(0) + "*.3ds" + Chr$(0)); flags optional
The "File open", is the text that appears at the top of the dialog box. Only problem is... I can't find the two .decls files anywhere... |
| ||
| He needs a fullscreen file requestor, Ross. ;) |
| ||
| I didn't mean any offense to Abrexxes. I'm sure it's me that's overlooking something. But when I add the code from the example and make sure all the libs are present and that I have all the directories in order I still get errors such as texture does not exist or entity parent does not exist. Then it pops up the include file with the offending line but since there are at least eight or nine includes that cross reference each other trying to hunt down the error is next to impossible and frankly not worth the effort. Why can't there be a simple fullscreen mode way to load custom levels. The other thing I can do is build in the load command then force the user to name his custom level the names that are coded in but that limits the use of the game. Thanks for all your help! Dog |
| ||
| Bummer, i'm sure that worked in full screen :D I must be setting the window to the desktop size or summit. |
| ||
| Oh, maybe it does work in fullscreen, then. I just assumed it wouldn't because it's a windows dialog. I haven't actually tried it. :P |
| ||
| I'd go with it probably doesn't. From the man who can't read :D |
| ||
| I still get errors such as texture does not exist or entity parent does not exist. Normally that means that Draw3D is not initialized (Origin) ore Escape3D is not startet. But with the new drivers of nVidia and Blitz 1.99 there are some problems at the moment as i use the Createtextur command(see bug section), that is why i can not give support now. But it is (like other problems) reported as bug, so i think that i can give you support for all this if it is fixed in the next 2 years. (.....) But you can still use ONLY the simple Escape Version, it is 2D and you can draw this simple after your 3D stuff (Renderworld). All what you must do is call the Filerequester (so..very simple). As Escape3D is compatible to the 3D Version, this maybe help you out the first time and you can replace later. But here another code that i have found here in the forum, but it is also simple 2D.
;File requester
;
;activePath$ = the active path
;
;selectedFile$ = the selected file
;
;drv$(drive) = the selected drive
;
;-------------------------------------------------------------------------
Graphics 640, 480, 0, 3
SetBuffer BackBuffer()
;cam=CreateCamera ()
;light=CreateLight()
;CameraClsColor cam,40, 40, 55
;------------------------GLOBALS------------------------------------------
Global filter$=".que" ;file filter
Dim drctrs$(0) ;temp directories
Dim realfiles$(0) ;temp files
Dim txtfiles$(0) ;temp filtered files
Dim drv$(0) ;drives
Global selectedFile$ ;current selected file $
Global directories ;temp no. of directories
Global drvcnt ;no. of drives
Global check$ ;$ to compare with filter$
Global txtcount ;temp no. of files in a directory
Global drd1 ;start position of directories to display
Global drd2 ;end -"- -"-
Global trd1 ;start position of files to display
Global trd2 ;end -"- -"-
Global dscr ;how many more directories then 20
Global tscr ;how many more files then 20
Global drive ;current drive no.
Global mouseInUse ;if mouse in use
Global activePath$ ="levels\" ;the active path
;----------------OPEN FILE------------------------------------------------
count_drives
;--------------------loop
While Not KeyHit(1)
Cls
;RenderWorld
;highlight ^up--------------------------------------------------
If MouseY()>47 And MouseY()<60 And MouseX()>144 And MouseX()<170
Color 64,80,110
Rect 144,47,27,12
If MouseDown(1)
ypos=0
ypos2=0
actualpos=0
pos=1
While (pos>actualpos)And (pos<Len(activePath$))
actualpos=pos
pos=Instr(activePath$,"\",pos+1)
Wend
If (actualpos=1) Then actualpos=0
activePath$ =Left$(activePath$,actualpos)
read_dir(drive,activePath$)
selectedFile$=""
Repeat
Until (Not MouseDown(1))
EndIf
EndIf
;----------------------
Color 56,78,112:Rect 0,30,40,270:Rect 0,0,400,29
Line 41,45,400,45:Line 41,60,400,60
Line 384,46,384,300:Line 180,46,180,300:Line 196,46,196,300
Color 50,50,75:Rect 41,30,359,15
Color 50,255,100:Line 40,0,40,300:Line 0,29,400,29
Text 1,2,"Select"
Text 1,13,"Drive"
Text 50,7,"Open file Back"
Text 50,48,"Directories File:"
Text 50,32,"Path: "
Color 255,255,80:Text 80,32,drv$(drive)+":\"+Left$(activePath$, 60)
Text 145,48,"|^Up|":Text 233,48,Left$(selectedFile$,29)
Text 200,7,"Filter: "+filter$
;-----------------------------------------------------
If MouseY()<29
;----open file --------------------
If MouseX()>50 And MouseX()<100
Color 50,170,170:Rect 47,3,51,23,0
;Put here your action when open file is pressed
If MouseDown(1) Then End
EndIf
; back--------------------------
If MouseX()>113 And MouseX()<145
Color 50,170,170:Rect 113,3,36,23,0
If MouseDown(1) Then End
EndIf
EndIf
;------------------------------------------------
For t=0 To drvcnt-1
Color 50,255,100
Text 16,35+t*20,drv$(t)+":"
If MouseX()<29 And MouseY()>30+t*20
If MouseY()<30+(drvcnt)*20 And MouseDown(1)
drive=(MouseY()-30)/20
read_dir(drive,"")
activePath$=""
selectedFile$=""
ypos=0
ypos2=0
EndIf
;---------------------------------------------
If MouseY()>30+(drvcnt)*20 Then Goto skip
Color 50,170,170
Rect 1,31+t*20,38,20,0
If t=0 Then Goto skip
Color 56,78,112
Rect 1,31+(t-1)*20,38,20,0
.skip
EndIf
Next
;--------------------scroller position----------------------------
If directories>19
FlushMouse()
If MouseDown(1)
If (MouseX()>179 And MouseX()<197 Or (mouseInUse And MouseX()<210 And MouseX()>160)) And MouseY()>61 And MouseY()<299
ypos = MouseY()-6
If dscr >0
met#=227.0/dscr
drd1=Floor ((ypos-56)/met#)
drd2=drd1+19
EndIf
mouseInUse =True
EndIf
Else
mouseInUse =False
EndIf
Color 255,234,99
If (ypos<62) Then ypos=62
If (ypos>284) Then ypos=284
Rect 182,ypos,13,15
EndIf
;-----------------------------------------------
If txtcount>19
FlushMouse()
If MouseDown(1)
If (MouseX()>383 And MouseX()<400 Or (mouseInUse And MouseX()<400 And MouseX()>360)) And MouseY()>61 And MouseY()<292
ypos2 = MouseY()-6
If tscr >0
met2#=227.0/tscr
trd1=Floor ((ypos2-56)/met2#)
trd2=trd1+19
EndIf
mouseInUse =True
EndIf
Else
mouseInUse =False
EndIf
Color 255,234,99
If (ypos2<62) Then ypos2=62
If (ypos2>284) Then ypos2=284
Rect 386,ypos2,13,15
EndIf
;---------------------file selector highlight-----------------------------
If MouseY()>60 And MouseX()>50 And MouseX()<180 And (Not mouseInUse)
Color 64,80,110
Rect 49,49+((MouseY()-46)/12)*12,130,11
FlushMouse()
If MouseDown(1)
dirmet=(drd1+Floor ((MouseY()-46)/12))-1
If dirmet<directories
activePath$ = activePath$+drctrs$(dirmet)+"\"
read_dir(drive,activePath$)
ypos=0
ypos2=0
selectedFile$=""
EndIf
Repeat
Until Not MouseDown(1)
EndIf
EndIf
;--------------------------------------------------------------------
If MouseY()>60 And MouseX()>202 And MouseX()<384 And (Not mouseInUse)
Color 64,80,110
Rect 201,49+((MouseY()-46)/12)*12,182,11
If MouseDown(1)
filmet=(trd1+Floor ((MouseY()-46)/12))-1
If filmet<txtcount
selectedFile$ = txtfiles$(filmet)
EndIf
Repeat
Until Not MouseDown(1)
EndIf
EndIf
;----------display Directories and Files-------------
display
Flip
Wend
;---------------F U N C T I O N S ----------------------------------------
;---------------READ_DIR--------------------------------------------------
Function read_dir(drive,path$)
directories=0
drf=0
drd1=0
trd1=0
dir=ReadDir (drv$(drive)+":\"+path$)
Repeat
file$=NextFile$(dir)
If file$="" Then Goto readfiles
drf=drf+1
If file$<>".." And file$<>"."
If FileType (drv$(drive)+":\"+path$+file$)=2 Then directories=directories+1
EndIf
Forever
;--------readfiles---------------------------
.readfiles
Dim drctrs$(directories)
Dim realfiles$(drf-directories)
tempdir=(ReadDir(drv$(drive)+":\"+path$))
tmpcnt=0
For i=0 To drf-1
temp$=NextFile$(tempdir)
If FileType (drv$(drive)+":\"+path$+temp$)=2
If temp$<>".." And temp$<>"."
drctrs$(tmpcnt)=temp$
tmpcnt=tmpcnt+1
EndIf
Else realfiles$(i-tmpcnt)=temp$
EndIf
Next
; sort directories
For i=1 To directories-1
If Upper(drctrs$(i))< Upper(drctrs$(i-1))
temp$ = Upper(drctrs$(i-1))
drctrs$(i-1) = Upper(drctrs$(i))
drctrs$(i) =Upper$(temp$)
For j= i-1 To 1 Step -1
If drctrs$(j)<drctrs$(j-1)
temp$ = Upper(drctrs$(j-1))
drctrs$(j-1) = Upper(drctrs$(j))
drctrs$(j) =Upper(temp$)
Else
j=1
EndIf
Next
EndIf
Next
; get only filtered files
tmpcnt=0
For i=0 To drf-directories-1
check$ = Right(realfiles$(i),4)
check$=Lower(check$)
If (check$=filter$)
tmpcnt=tmpcnt+1
EndIf
Next
txtcount =tmpcnt
Dim txtfiles$(txtcount+21)
tmpcnt=0
For i=0 To drf-directories-1
check$ = Right(realfiles$(i),4)
check$=Lower(check$)
If (check$=filter$)
txtfiles$(tmpcnt)=realfiles$(i)
tmpcnt=tmpcnt+1
EndIf
Next
; sort filtered files
For i=1 To txtcount-1
If Upper(txtfiles$(i)) < Upper(txtfiles$(i-1))
temp$ = Upper(txtfiles$(i-1))
txtfiles$(i-1) = Upper(txtfiles$(i))
txtfiles$(i) =temp$
For j= i-1 To 1 Step -1
If txtfiles$(j)<txtfiles$(j-1)
temp$ = Upper(txtfiles$(j-1))
txtfiles$(j-1) = Upper(txtfiles$(j))
txtfiles$(j) = Upper(temp$)
Else
j=1
EndIf
Next
EndIf
Next
;---if more then 20 directories or files calculate how many more
If directories<20
drd2=directories-1
Else drd2=19:dscr=directories-20
EndIf
If txtcount<20
trd2=txtcount-1
Else trd2=19:tscr=txtcount-20
EndIf
End Function
;-------------------DISPLAY-----------------------------------------------
Function display()
Color 70,255,220
For i=drd1 To drd2
Text 50,60+12*(i-drd1), Left$(drctrs$(i),25)
Next
Color 180,180,230
For i=trd1 To trd2
Text 205,60+12*(i-trd1), Left$(txtfiles$(i),35)
Next
End Function
;---------COUNT_DRIVES----------------------------------------------------
Function count_drives()
drvcnt=0
Dim drv$(14)
For i=Asc("C") To Asc("K")
;For i=Asc("c") To Asc("k");put this if the above doesn't work
fr=ReadDir(Chr$(i)+":\")
If fr<>0 Then
drv$(drvcnt)=Chr$(i)
drvcnt=drvcnt+1
CloseDir(fr)
EndIf
Next
End Function
You can be shure that you will not find a 100% perfekt requester, but with this code you can start to make your own with nice gfx and whatever you need. ;) cu |