| Displaying filenames in folders 
 
	 
	
		| Author | Message |   
		| Srlancelot39 
 
  
 
 
 | 
			
				|  Posted: Fri Dec 02, 2011 5:18 pm    Post subject: Displaying filenames in folders |  |   
				| 
 |  
				| What is it you are trying to achieve? Is there a way to get the names of all files in a folder and display them?  I have an RPG (Grail Quest) that allows the user to save their game and load it later and I would like to build on this by letting them create multiple save files and then select it from a list later so they can load it.
 
 (Also, is there a way to write/read files from different folders without knowing the full pathname?  Not every user is going to have the game's files under the same pathname so unless the setting 'Display full pathnames' is off, this will cause problems.)
 
 
 What is the problem you are having?
 Not sure what command to use for this.
 
 
 Describe what you have tried to solve this problem
 The closest I've gotten is using the 'system' function to search/open specific files.
 
 
 Post any relevant code (You may choose to attach the file instead of posting the code if it is too long)
 I don't think there's any code I could put here that would help
 
 
 Please specify what version of Turing you are using
 4.1 <----because it can compile
   
 EDIT: I have, in the meantime, found a command that may solve my problem.  The command I have found is Dir.Get/Dir.Open.  I have successfully reading the folder "Turing 4.1" on my desktop, however the first two lines are "." and ".." then after that the files/folders are listed.  How do I stop it from displaying the dots (and why are they there)?
 |  
				|  |  |   
		|  |  |  
	  
		|  |   
		| Sponsor Sponsor
 
  
   |  |   
		|  |   
		| Insectoid 
 
  
 
 
 | 
			
				|  Posted: Fri Dec 02, 2011 5:57 pm    Post subject: RE:Displaying filenames in folders |  |   
				| 
 |  
				| Say your game is in mydirectory/game.exe If you keep all your savegames in mydirectory/savegames, then in your game you need only to load savegames/mysavefile.ext.
 
 You've basically got 2 path types: An absolute path, and a relative path. An absolute path is the path from the root directory (C:\, for example) to the file. A relative path is the path from any location to any other. This is where the dots come in.
 
 The single dot represents a file's self. mydirectory/game.exe = ././mydirectory/././game.exe
 
 The double dot represents a file's parent.
 
 mydirectory/game.exe = mydirectory/../mydirectory/game.exe.
 
 This comes in useful when you have all your game files in Game/bin/game.exe, and all your data in Game/Resources/Pictures. To access your picture files, inside game.exe you call Pic.FileLoad (../Resources/Pictures/sprite.jpg)
 
 So, as long as you know where your save files are (relative to your executable), you don't ever need to look through the file system.
 |  
				|  |  |   
		|  |  |  
	  
		|  |   
		| Srlancelot39 
 
  
 
 
 | 
			
				|  Posted: Fri Dec 02, 2011 7:32 pm    Post subject: Re: Displaying filenames in folders |  |   
				| 
 |  
				| Perfect, thanks! 
 Also, I managed to get the code working.  This is what I have:
 
 
 	  | Turing: |  	  | 
% The "DirectoryListing" program.
setscreen ("graphics:500;500, offscreenonly")
var streamNumber : int
var  fileName : array 1 . . 5 of string 
streamNumber := Dir.Open ("D:\\Desktop\\Test")
var  filenumber : int 
filenumber := 1
assert  streamNumber > 0
var  font1 : int 
font1 := Font.New ("Courier:12")
var  xmouse, ymouse, button : int
var  filenumberhighlight : int
var  success : int
loop 
    fileName ( filenumber) := Dir.Get ( streamNumber)
    if  fileName ( filenumber) not = "." and  fileName ( filenumber) not = ".." then
        Font.Draw ( fileName ( filenumber), 0 , 525  - filenumber * 50 , font1, black) 
        filenumber :=  filenumber + 1
    end if
    exit when  filenumber = 6
end loop
Dir.Close ( streamNumber)
loop
    mousewhere ( xmouse, ymouse, button)
    if  ymouse < 501 and  ymouse > 450 then 
        filenumberhighlight := 1
        if  button = 1 then
            system ("D:\\Desktop\\Test\\"  + fileName ( filenumberhighlight),  success)
            exit
        end if
    elsif  ymouse < 451 and  ymouse > 400 then 
        filenumberhighlight := 2
        if  button = 1 then
            system ("D:\\Desktop\\Test\\"  + fileName ( filenumberhighlight),  success)
            exit
        end if
    elsif  ymouse < 401 and  ymouse > 350 then 
        filenumberhighlight := 3
        if  button = 1 then
            system ("D:\\Desktop\\Test\\"  + fileName ( filenumberhighlight),  success)
            exit
        end if
    elsif  ymouse < 351 and  ymouse > 300 then 
        filenumberhighlight := 4
        if  button = 1 then
            system ("D:\\Desktop\\Test\\"  + fileName ( filenumberhighlight),  success)
            exit
        end if
    elsif  ymouse < 301 and  ymouse > 250 then 
        filenumberhighlight := 5
        if  button = 1 then
            system ("D:\\Desktop\\Test\\"  + fileName ( filenumberhighlight),  success)
            exit
        end if
    else 
        filenumberhighlight := 0
    end if
    for  f : 1 . . 5
        Font.Draw ( fileName ( f), 0 , 525  - f * 50 , font1, black)
    end for
    if  filenumberhighlight > 0 and  filenumberhighlight < 6 then
        drawfillbox (0 , 500  - filenumberhighlight * 50 , 500 , 550  - filenumberhighlight * 50 , black)
        Font.Draw ( fileName ( filenumberhighlight), 0 , 525  - filenumberhighlight * 50 , font1, brightred)
    end if
    View.Update
    cls
end loop | 
 
 Coincidentally, the part of my problem that you replied to is the only part I hadn't solved yet!
 Thanks again!
 |  
				|  |  |   
		|  |  |  
	  
		|  |   
		|  |  
 |