Function FileList(Folder$,Sorted=False,lowcase=True)
	File_Bank=CreateDynamicStringArray()
	Dir_Bank=CreateDynamicStringArray()
	FilAnz=0
	DirAnz=1
	PutDynamicStringArray(Dir_Bank,DirAnz,Folder$)
	DirPtr=0
	Repeat
		DirPtr=DirPtr+1
		If GetDynamicStringArray$(Dir_Bank,DirPtr)="" Then Exit
		MyDir=ReadDir(GetDynamicStringArray(Dir_Bank,DirPtr))
		Repeat
			file$=NextFile$(MyDir)
			If file$="" Then Exit
			If file$="." Goto GetFileNames1
			If file$=".." Goto GetFileNames1
			If FileType(GetDynamicStringArray$(Dir_Bank,DirPtr)+"\"+file$)=1 Then
				FilAnz=FilAnz+1
				If lowcase=True Then
					PutDynamicStringArray(File_Bank,FilAnz,Lower(GetDynamicStringArray$(Dir_Bank,DirPtr)+"\"+File$))
				Else
					PutDynamicStringArray(File_Bank,FilAnz,GetDynamicStringArray$(Dir_Bank,DirPtr)+"\"+File$)
				EndIf
			EndIf
			If FileType(GetDynamicStringArray(Dir_Bank,DirPtr)+"\"+file$)=2 Then
				DirAnz=DirAnz+1
				PutDynamicStringArray(Dir_Bank,DirAnz,GetDynamicStringArray$(Dir_Bank,DirPtr)+"\"+File$)
			EndIf
.GetFileNames1
		Forever
		CloseDir MyDir
	Forever
	FreeDynamicStringArray(Dir_Bank)
	If Sorted<>False Then
		flag=1
		Ab=2
		Bis=FilAnz
		While Flag>0
			Flag=0
			For i=Ab To Bis
				If CompareDynamicStringArray(File_Bank,i,i-1)=-1 Then
					SwapDynamicStringArray(File_Bank,i,i-1)
					Flag=i
				EndIf
			Next
			If Flag>0 Then Bis=Flag
			For i=Bis To Ab Step -1
				If CompareDynamicStringArray(File_Bank,i,i-1)=-1 Then
					SwapDynamicStringArray(File_Bank,i,i-1)
					Flag=i
				EndIf
			Next
			If Flag>0 Then Ab=Flag
		Wend
	EndIf
	Return File_Bank
End Function