Bonjour à toutes et à tous,
Avec la procédure suivante, j'ouvre deux lecteurs de fichiers simultanément. Le premier vient lire une liste de répertoires et le second, une liste de fichiers dans chacun des répertoires.
Je suis sous Lazarus 2.0.6 sous Windows 10 et sous Ubuntu 20.04.1 LTS
Sous Windows, ça fonctionne très bien. Sous Linux, ça ne fonctionne pas : Le lecteur de répertoires ouvre le premier répertoire puis le lecteur des fichiers lit les fichiers qui sont dans ce répertoire, mais lorsque cette lecture est finie, le lecteur de répertoire se ferme et ne lit pas les répertoires suivant.
Est-ce un problème Linux ou bien ma procédure qui est mal ficelée ?
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 var SRLon, SRLat: TSearchRec; i, OSMLa, OSMLo, Z: Integer; NomFch: String; begin {$I-} NomFch:= RepCartes+SepRep+Carte.Nom+Zoom; ChDir(RepCartes+SepRep+Carte.Nom+Zoom); SetLength(NomDalle, 0); OSMLaMin:= 100000; OSMLaMax:= -100000; OSMLoMin:= 100000; OSMLoMax:= -100000; if IOresult = 0 then begin if FindFirst ('*', faDirectory, SRLon) = 0 then repeat // Recherche des longitudes if (SRLon.Name <> '.') and (SRLon.Name <> '..') then if (SRLon.Attr and faDirectory) = faDirectory then begin OSMLo:= StrToInt(SRLon.Name); if OSMLo < OSMLoMin then OSMLoMin:= OSMLo; if OSMLo > OSMLoMax then OSMLoMax:= OSMLo; ChDir(RepCartes+SepRep+Carte.Nom+Zoom+SepRep+SRLon.Name); if FindFirst ('*.jpg', faArchive, SRLat) = 0 then repeat // Recherche des latitudes dans les fichiers des longitudes if ((SRLat.Attr and faArchive) = faArchive) then begin OSMLa:= StrToInt(ChangeFileExt(SRLat.Name, '')); if OSMLa < OSMLaMin then OSMLaMin:= OSMLa; if OSMLa > OSMLaMax then OSMLaMax:= OSMLa; SetLength(NomDalle, Length(NomDalle) + 1); NomDalle[High(NomDalle)].OSMLon:= OSMLo; NomDalle[High(NomDalle)].OSMLat:= OSMLa; end; until FindNext(SRLat) <> 0; FindClose(SRLat); end; until FindNext(SRLon) <> 0; FindClose(SRLon); end;
Cordialement.
Pierre.
Partager