D4 : un scan du lecteur avec jauge d'avancement

D4 : un scan du lecteur avec jauge d'avancement - Programmation

Marsh Posté le 06-07-2002 à 16:18:03    

J'en ai vu passer une... et je l'ai perdue.  
La VCL de M. Bardou comporte (ds la version que j'ai en tt cas) une léger bug, laissant passer les répertoires ayant un attribut supplémentaire à celui du bit Directory. Vieux bug bien connu sous DOS, d'ailleurs.  
 
Vs auriez pas une idée ? En plus, c'est un freeware :love:
 
Merci :hello:

Reply

Marsh Posté le 06-07-2002 à 16:18:03   

Reply

Marsh Posté le 06-07-2002 à 16:54:21    

G une unit pour ça...
(sans la jauge)
j'avais des améliorations à y porter mais je l'ai jamais fait
Si tu la veux je te la donne
sinon pour corriger le bug fodrait que tu nous dise ou trouver le code (l'url direct je suis fégnant)
 :hello:


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 06-07-2002 à 17:54:50    

[SDF]Poire a écrit a écrit :

G une unit pour ça...
(sans la jauge)
j'avais des améliorations à y porter mais je l'ai jamais fait
Si tu la veux je te la donne
sinon pour corriger le bug fodrait que tu nous dise ou trouver le code (l'url direct je suis fégnant)
 :hello:  




Oh ! Pour corriger le code, c'est facile : il suffit de rajouter une boucle. Ds le FindFirst, il teste seulement faDirectory, autrement dit l'attribut Répertoire. Il vaut mieux chercher '*.*', faAnyfile : on élimine le '.', l'éventuel '..' si l'on n'est pas en racine, et on teste chaque fichier suivant : répertoire, ou non.  
 
Pb : je pourrais corriger le code, mais je ne sais pas compiler une VCL...

Reply

Marsh Posté le 06-07-2002 à 18:06:46    

HERIBERT a écrit a écrit :

 
Oh ! Pour corriger le code, c'est facile : il suffit de rajouter une boucle. Ds le FindFirst, il teste seulement faDirectory, autrement dit l'attribut Répertoire. Il vaut mieux chercher '*.*', faAnyfile : on élimine le '.', l'éventuel '..' si l'on n'est pas en racine, et on teste chaque fichier suivant : répertoire, ou non.  




C exactement ce que je fais  :)  
par contre nivo optimisation C pas top....
Je chercherais si ya pas un autre moyen....
 

HERIBERT a écrit a écrit :

 
Pb : je pourrais corriger le code, mais je ne sais pas compiler une VCL...




Il suffit de modifier l'unité et de compiler le package(dpk) correspondant
(il fo bien sur avoir les sources....)
 :hello:


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 06-07-2002 à 18:10:42    

[SDF]Poire a écrit a écrit :

 
C exactement ce que je fais  :)  
par contre nivo optimisation C pas top....
Je chercherais si ya pas un autre moyen....
 
 
Il suffit de modifier l'unité et de compiler le package(dpk) correspondant
(il fo bien sur avoir les sources....)
 :hello:  




Moi, même en C, et avec algo à l'appui, je n'ai jamais pu définir un algo net pour le scan du lecteur :??: Je bidouillais. Par contre, avec de simples boucles, Bardou est arrivé à un truc efficace :sol: Sauf qu'il laisse échapper les rep cachés, par exemple.  
 
Merci pour le truc :hello: Je vais m'y attaquer !

Reply

Marsh Posté le 06-07-2002 à 18:12:21    

HERIBERT a écrit a écrit :

 
Moi, même en C, et avec algo à l'appui, je n'ai jamais pu définir un algo net pour le scan du lecteur :??: Je bidouillais. Par contre, avec de simples boucles, Bardou est arrivé à un truc efficace :sol: Sauf qu'il laisse échapper les rep cachés, par exemple.  
 
Merci pour le truc :hello: Je vais m'y attaquer !




Moi je le fais par récurence je crois.... je vais chercher :)


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 06-07-2002 à 18:16:13    

unit GFiles;
 
interface
 
uses
  Windows, Sysutils, LZExpand, Classes;
 
type
  TFichier = class
    Nom: TFileName;
    Chemin: String;
    Taille: Integer;
    Date: Integer;
    Attr: Integer;
    procedure Assign(Fichier: TFichier);
  end;
 
function FSearch(Fichier : string; Path : string; Rec: Boolean) : TList;
 
implementation
 
 
function FSearch(Fichier : string; Path : string; Rec: Boolean) : TList;
var
  F: TSearchRec;
  r: Integer;
  ReturnS: TList;
  MyFichier: TFichier;
begin
  ReturnS := TList.Create;
  r := FindFirst(Path + '\' + Fichier, $03F, F);
  while r = 0 do
    begin
    if (F.Name <> '.') and (F.Name <> '..') then
    begin
      MyFichier := TFichier.Create;
      with MyFichier do
      begin
        Chemin := Path + '\';
        Nom := F.Name;
        Taille := F.Size;
        Date := F.Time;
        Attr := F.Attr;
      end;
      ReturnS.Add(MyFichier);
    end;
    r := FindNext(F);
    end;
  FindClose(F);
 
  if Rec then
  begin
    r := FindFirst(Path + '\*.*', $03F, F);
    while r = 0 do
      begin
      if (F.Attr and $10 <> 0) and (F.Name <> '.') and (F.Name <> '..') then
        ReturnS.Assign(FSearch(Fichier, Path + '\' + F.Name, True), laOr);
        //ReturnS.AddStrings(FSearch(Fichier, Path + '\' + F.Name, True));
      r := FindNext(F);
      end;
    FindClose(F);
  end;
 
  Result := ReturnS;
end;


 
Elle a subit des bidouillages rescent ;)
Fodrait que je me repenche dessus....
 :hello:


Message édité par [SDF]Poire le 06-07-2002 à 18:22:02

---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 06-07-2002 à 18:18:46    

[SDF]Poire a écrit a écrit :

Code :
  1. unit GFiles;
  2. interface
  3. uses
  4.   Windows, Sysutils, LZExpand, Classes;
  5. type
  6.   TFichier = class
  7.     Nom: TFileName;
  8.     Chemin: String;
  9.     Taille: Integer;
  10.     Date: Integer;
  11.     Attr: Integer;
  12.     procedure Assign(Fichier: TFichier);
  13.   end;
  14. function FSearch(Fichier : string; Path : string; Rec: Boolean) : TList;
  15. implementation
  16. function FSearch(Fichier : string; Path : string; Rec: Boolean) : TList;
  17. var
  18.   F: TSearchRec;
  19.   r: Integer;
  20.   ReturnS: TList;
  21.   MyFichier: TFichier;
  22. begin
  23.   ReturnS := TList.Create;
  24.   r := FindFirst(Path + '\' + Fichier, $03F, F);
  25.   while r = 0 do
  26.     begin
  27.     if (F.Name <> '.') and (F.Name <> '..') then
  28.     begin
  29.       MyFichier := TFichier.Create;
  30.       with MyFichier do
  31.       begin
  32.         Chemin := Path + '\';
  33.         Nom := F.Name;
  34.         Taille := F.Size;
  35.         Date := F.Time;
  36.         Attr := F.Attr;
  37.       end;
  38.       ReturnS.Add(MyFichier);
  39.     end;
  40.     r := FindNext(F);
  41.     end;
  42.   FindClose(F);
  43.   if Rec then
  44.   begin
  45.     r := FindFirst(Path + '\*.*', $03F, F);
  46.     while r = 0 do
  47.       begin
  48.       if (F.Attr and $10 <> 0) and (F.Name <> '.') and (F.Name <> '..') then
  49.         ReturnS.Assign(FSearch(Fichier, Path + '\' + F.Name, True), laOr);
  50.         //ReturnS.AddStrings(FSearch(Fichier, Path + '\' + F.Name, True));
  51.       r := FindNext(F);
  52.       end;
  53.     FindClose(F);
  54.   end;
  55.   Result := ReturnS;
  56. end;


 
Elle a subit des bidouillages rescent ;)
Fodrait que je me repenche dessus....
 :hello:  




Je vais noter ça ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed