Bonjour à tou(te)s! :-)
Je me trompe, je suis trop vieux, ou XE3 est finalement une vraie daube?
J'ai l'impression que jusqu'à Delphi 7 - que je ne puis plus réinstaller depuis W7, merci Microsoft!- plus rien ne va vraiment sans soucis.
Un exemple et une demande d'aide en même temps: je désire simplement implémenter une méthode de recherche de fichier, et j'utilise pour ce faire le code récursif suivant:
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 procedure TForm19.SearchTree(DName, Fname: String); var SearchRec: TSearchRec; DosError: integer; dir: string; begin DLB.Directory:=DName; if dName[length(dName)] <> '\' then DName := DName + '\'; ChDir(DName); GetDir(0, Dir); EdDirectorySeeked.Text:=Dir; Refresh; Memo.Lines.add('*** '+DName+'//'+FName); (* ligne temporaire à retirer! *) DosError := FindFirst(FName, 0, SearchRec); while DosError = 0 do begin try If (SearchRec.Attr and faHidden)=0 Then Begin Memo.Lines.add(dir +'\'+ SearchRec.name); Inc(Count); End; except on EOutOfResources do begin ShowMessage('Ressources épuisées!'); abort; end; end; DosError := FindNext(SearchRec); end; {Now that we have all the files we need, lets go to a subdirectory.} DosError := FindFirst('*.*', faDirectory, SearchRec); while DosError = 0 do begin {If there is one, go there and search.} if ((SearchRec.attr and faDirectory = faDirectory) and (SearchRec.name <> '.') and (SearchRec.name <> '..')) then begin if dName[length(dName)] <> '\' then DName := DName + '\'; ChDir(DName+SearchRec.name); GetDir(0, DName); //:=SearchRec.name; SearchTree(DName, Fname); {Time for the recursion!} ChDir('..'); {Down one level.} end; DosError := FindNext(SearchRec); {Look for another subdirectory} end; Label1.Caption:=IntToStr(Count)+' fichiers.'; EdDirectorySeeked.Text:=''; end; {SearchTree}
Cela marche.. parfois. Sinon en déboguant je reçois des messages abscons genre "Introduisez le chemin de VCL.CONTROLS" alors que ce module est déclaré en en-tête, sans que le compilateur y trouve à réchigner..
Si, bon prince, je lui donne le répertoire de VCL.CONTROLS, le débogueur ouvre ce fichier.. mais je perds le curseur, donc je ne peux pas voir où l'on en est et encore moins corriger!
Enfin si je me passe du débogueur et me sers du code compilé, alors il cale au deuxième sous-répertoire scanné et me dit "impossible de trouver le fichier spécifié".
Ouais. Sauf que si je relance la procédure cela ne me donne plus ce message..
Quelqu'un a une idée différente de passer sur Windev?![]()
Partager