EXAMPLE SOURCE CODE



 GetAbsolutePathToFile

By: Kevin Picone Added: January 8th, 2023

Category: All,Files


  GetAbsolutePathToFile


    This function takes a base path and then computes the absolute path from this base from an assumed relative path in the file name





PlayBasic Code:
	BasePath$="D:\MyProjectFolder\Gfx\_examples"
	ink $ff0000
	print BasePath$	
	ink -1

	print ""	
	print  GetAbsolutePathToFile(BasePath$, "Stuff.txt")
	print  GetAbsolutePathToFile(BasePath$, "subfolder/Stuff.txt")
	print  GetAbsolutePathToFile(BasePath$, "../Stuff.txt")
	print  GetAbsolutePathToFile(BasePath$, "../../Stuff.txt")
	print  GetAbsolutePathToFile(BasePath$, "subfolder/../../Stuff.txt")
	
	

	Sync
	waitkey
	

Function GetAbsolutePathToFile(BasePath$, Filename$)

		BasePath$=replace$(BasePath$,"/","\")	
		Filename$=replace$(Filename$,"/","\")	

		Filename$=trim$(Filename$)
		BasePath$=trimright$(BasePath$,"\")+"\"
	
		local Device$=GetDevicename$(Filename$)	 
		if len(Device$)=0
			
			//  if the Filename is relative, we'll try and
			//  build an absolute path from BASE to this Filename
				local Path$=GetFolderName$(Filename$)	 

				 FileName$=BasePath$+Filename$

			// Check for "..\" in path
				if instring(Path$,"..\")
	
					Dim FolderChunks$(50)
					local Count=splittoarray(filename$,"\",FolderChunks$())
					
					local lp,s$
					local Output=0
					
					
					for lp =0 to count-1
						s$=FolderChunks$(lp)
						if s$<>".." 
							if output>=0  then FolderChunks$(Output)=s$
							Output++		
						else
							output--	
						endif	
					next	

					// Put it back together
					Filename$=""
					for lp =0 to output-1
						Filename$+=FolderChunks$(lp)
						if lp<output-1 then Filename$+="\"
					next	
												
				endif 				
	
		endif
	

EndFunction Filename$











   Example output:

CODE:

D:\MyProjectFolder\Gfx\_examples D:\MyProjectFolder\Gfx\_examples\Stuff.txt D:\MyProjectFolder\Gfx\_examples\subfolder\Stuff.txt D:\MyProjectFolder\Gfx\Stuff.txt D:\MyProjectFolder\Stuff.txt D:\MyProjectFolder\Gfx\Stuff.txt










Release Type: The source code & tutorials found on this site are released as license ware for PlayBasic Users. No Person or Company may redistribute any file (tutorial / source code or media files) from this site, without explicit written permission.


 

 
     
 
       

(c) Copyright 2002 / 2024 Kevin Picone , UnderwareDesign.com  - Privacy Policy   Site: V0.99a [Alpha]