2014-04-17 12 views

risposta

4

Attualmente, non esiste una funzione che avrebbe sostenuto i caratteri jolly per verificare l'esistenza di un certo file o meno. Questo perché entrambe le funzioni FileExists e FileSearch utilizzano internamente la funzione NewFileExists che, come afferma il commento nel codice sorgente, non supporta i caratteri jolly.

Fortunatamente, c'è il FindFirst che supporta i caratteri jolly, in modo da poter scrivere una funzione come segue per il vostro compito:

[Code] 
function FileExistsWildcard(const FileName: string): Boolean; 
var 
    FindRec: TFindRec; 
begin 
    Result := False; 
    if FindFirst(FileName, FindRec) then 
    try 
    Result := FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0; 
    finally 
    FindClose(FindRec); 
    end; 
end; 

suo utilizzo è uguale a quello di FileExists funzione, si può solo utilizzare i caratteri jolly per la ricerca come descrive il riferimento MSDN per il parametro lpFileName della funzione FindFirstFile. Quindi, per verificare se c'è un file con txt estensione nella directory C:\Folder è possibile chiamare la funzione di cui sopra in questo modo:

if FileExistsWildcard('C:\Folder\*.txt') then 
    MsgBox('There is a *.txt file in the C:\Folder\', mbInformation, MB_OK); 

Naturalmente il nome del file da ricercare può contenere un nome parziale del file, come ad esempio :

if FileExistsWildcard('C:\Folder\File*.txt') then 
    MsgBox('There is a File*.txt file in the C:\Folder\', mbInformation, MB_OK); 

Tale modello corrisponderà a file come ad es. C:\Folder\File12345.txt.

Problemi correlati