Bonjour,
J'ai créé une fonction qui me renvoie le nom d'un dossier ou du premier sous-dossier qui contient un fichier de nom donné.
Cette fonction fonctionne comme je peux le constater grâce à un point de suivi ou l'affichage du résultat par une instruction placée dans la fonction même.
Cependant, appelée dans une procédure, le résultat de la fonction est une chaîne vide.
Voici la fonction :et la procédure appelante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Function FindFirstDirWithFile(InitRoot, FileName : String) : String; var FoundResult : TSearchRec; Dir: String; begin Result := ''; Dir := IncludeTrailingPathDelimiter(InitRoot); if FindFirst(Dir + FileName, FaAnyFile, FoundResult)= 0 then if (FoundResult.Attr and faDirectory = 0) then begin Result := Dir; SysUtils.FindClose(FoundResult); MessageBox(0,PChar(Result),'CadaCom',MB_IconInformation); exit; end; SysUtils.FindClose(FoundResult); if FindFirst(Dir + '*', faDirectory, FoundResult)=0 then repeat if (FoundResult.Attr and faDirectory <>0) and (FoundResult.Name<>'.') and (FoundResult.Name<>'..') then FindFirstDirWithFile(Dir + FoundResult.FindData.cFileName, FileName); until FindNext(FoundResult) <> 0; SysUtils.FindClose(FoundResult); end;D'où peut provenir cette anomalie ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 procedure TMainForm.TestClick(Sender: TObject); Var Msg, OutParcelPath, OutParcel : String; begin OutParcelPath := 'D:\Cadastre\Matrice2017\'; OutParcel := 'OUTPUT Parcels_*.xls*'; msg := FindFirstDirWithFile(OutParcelPath, OutParcel); ShowMessage(Msg); end;
Cordialement,
Partager