Error para archivo no encontrado

Aquí puedes preguntar o compartir tus dudas y conocimientos acerca del programa
Me pueden ayudar con la sentencia if , estoy en practica :*

folder = Label.GetText("LabelFOLDER")
    local document = File.Find(folder, "*.doc", true, true, nil, nil)[1]
    Input.SetText("Input1", document);

else
Label.SetText("Label1", "NO EXISTE")
end
local Folder = (_SourceFolder);
if(File.Find(Folder, "*.dllg", false, false, nil, nil))then
	Dialog.Message("", "it was found");
else
	Dialog.Message("", "it was not found");
end
debes comprobar el numero de elementos retornados


documents = File.Find(folder, "*.doc", true, true, nil, nil)
if (documents~=nil) then
--found files
print("Archivos encontrados: "..#documentos)

for file,key in ipairs(documenmtos) do
print("Archivo: "..file)
end

else
--no files found
end
El problema principal radica en una solución muy sencilla LEER LA AYUDA DE AMS, de una manera muy frustrante puedo asegurar que es mínima la cantidad de personas que leen la ayuda de AMS, un ejemplo, esta duda. Leyendo el apartado de Action Reference en la categoría FILE en File.Find en el punto Returns (Resultados, Devoluciones) dice:
Return
(table) A table containing the paths to all of the files that were found. If no files were found or an error occurs, nil is returned. You can use Application.GetLastError to determine whether this action failed, and why.

Note: If IncludeFolders is true, the result will always include the folders that were encountered during the search.
El valor que retorna la función es una tabla que contiene todas las rutas de archivos que coincidieron con los argumentos establecidos, si no se encontró ninguna coincidencia devuelve nil.
Ahora bien, sabiendo esto puedes trabajar con los datos, ya sabes que una tabla, cierto? :disapproval-1414024448:
El código que da Pabloko es el tratamiento correcto de la información que está en la ayuda.
documents = File.Find(folder, "*.doc", true, true, nil, nil) -- Se ejecuta la función
-- Con una sentencia if
if (documents~=nil) then -- El valor retornado es una tabla o nil en caso de no haber encontrado coincidencias, aquí nos aseguramos de que el valor devuelto no sea nil
	print("Archivos encontrados: "..#documents)

	for _, path in ipairs(documents ) do -- Con un bucle for obtenemos los valores de los índices de la tabla
		print("Archivo: "..path) -- path es el valor de un indice de la tabla, recordando que cada indice contiene la ruta de los archivos coincidentes.
	end

else
	--no files found
end
 
De lo poco que entendí y gracias por ayudar en esto no soy experta este ejemplo solo lo tome de un ejemplo de aquí, note que para que diga que no hay dato alguno me gustaría saber como puedo constituir la sentencia, para solo encontrar un solo documento, no una gran cantidad de ellos.

:*


folder = Input.GetText("Input1")
documents = File.Find(folder, "*.doc", true, true, nil, nil)
if (documents~=nil) then 
        print("Archivos encontrados: "..#documents)
Label.SetText("Label1", documents .. "este es el documento que se encontró en esta dirección")
        for _, path in ipairs(documents ) do 
                print("Archivo: "..path) 
        end

else
        Label.SetText("Label1", "Lo siento no hay archivo")
end 



no deseo que me de toda un cantidad de documentos solo uno


folder = Label.GetText("LabelFOLDER")
    local document = File.Find(folder, "*.doc", true, true, nil, nil)[1]
Label.SetText("Label1", documents .. "este es el documento que se encontró en esta dirección")

else
Label.SetText("Label1", "Lo siento no hay archivo")
end
Muy bien, pues entonces volvemos a lo mismo, hay que leer un poco la ayuda... En la misma página File.Find en Parameters-Filename dice: (string) Nombre del archivo que desea buscar. Puede usar los comodines * y ? en este campo para buscar archivos que coincidan con un patrón específico. (a*le -> coincide con ale, apple, angle; s?n -> coincide con sun, son, sin, s4n)

Qué quiere decir esto? Que si quieres un documento específico debes declararlo por ejemplo
local _Folder = Input.GetText("Folder")
local _FileName = Input.GetText("FileName")
local _FileFind = File.Find(_Folder, _FileName, false, false, nil, nil)
    if _FileFind ~= nil then
        -- Se encontró el archivo
    else
        -- No se encontró el archivo
    end
Bueno ya hice que reconociera el que si lo encuentra pero sigo no entendiendo cuando no lo encuentra, para probar que salga el mensaje de que no lo encuentra borro el archivo que por cierto es el único en la carpeta, ahí me doy cuenta que el valor else no lo logro. Solo busco un archivo de muestra al asar con algún formato por eso la selección es de [1] y si no lo encuentra por eso busco darle indicaciones de que haga otras cosas en dado caso que no encuentre una muestra de ese formato, el nombre del archivo prácticamente es * Desconocido, solo me importar reconocer una muestra de ese formato, el formato no pasa de ser solo 1 archivo en las carpetas, por eso busco que me simbolice el único archivo con nombre desconocido, con formato que le doy que busque y que me diga cuando no existe ese formato, espero me entiendan amores :*


local _direccion = Input.GetText("Input1")
local file = File.Find(_direccion, "\\" .. "*.txt", true, true, nil, nil)[1]
  if file ~= nil then
       Label.SetText("Label1", file);
    else
       Label.SetText("Label1", "no");
    end
Si pones ya toda la ruta de la carpeta y determinas el formato de archivo te devuelve toda una tabla con todas las coincidencias...
Imagen
local _Folder = Input.GetText("Input1")
local _File = File.Find(_Folder, "*.txt")

Debug.ShowWindow()
local _Return = type(_File)
Debug.Print("La función File.Find ha devuelto un valor del tipo \"".._Return.."\"\r\n")
if _File ~= nil then
	-- Se han encontrado coinsidencias con .txt
	Debug.Print("Se han logrado conseguir "..#_File.." coincidencias con .txt\r\nLas coincidencias son:\r\n")
		local Arg3 = _File -- _File es la variable contenedora de la tabla devuelta por File.Find
		for Arg1, Arg2 in pairs (_File) do -- Bucle for con tres argumentos para tablas; Argumento 1: Índice de la tabla; Arguento 2: Contenido del índice; Arguento 3: Tabla
			Debug.Print("\t"..Arg2.."\r\n")
		end
else
	Debug.Print("Se ha producido un error en la búsqueda, no se han encontrado coincidencias.")
end
WAU tu ejemplo ahora si ya le entendí mas, de verdad ahora si puedo decir que si le entendí, no entendía lo de los conteos y todo lo demás, solo buscaba algo simple pero veo llevaba mas metodología muchas gracias, gracias dowsher *.* :*